tnp-core 19.0.41 → 19.0.44

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/browser/fesm2022/tnp-core.mjs +1 -6
  2. package/browser/fesm2022/tnp-core.mjs.map +1 -1
  3. package/browser/lib/core-imports.d.ts +1 -3
  4. package/browser/package.json +1 -1
  5. package/cli.backend.js +2 -2
  6. package/cli.backend.js.map +1 -1
  7. package/env.d.ts +2 -0
  8. package/environments/angular-node-app/env.angular-node-app.__.d.ts +3 -0
  9. package/environments/angular-node-app/env.angular-node-app.dev.d.ts +3 -0
  10. package/environments/angular-node-app/env.angular-node-app.localhost.d.ts +3 -0
  11. package/environments/angular-node-app/env.angular-node-app.prod.d.ts +3 -0
  12. package/environments/angular-node-app/env.angular-node-app.stage.d.ts +3 -0
  13. package/environments/docs-webapp/env.docs-webapp.__.d.ts +3 -0
  14. package/environments/electron-app/env.electron-app.__.d.ts +3 -0
  15. package/environments/electron-app/env.electron-app.prod.d.ts +3 -0
  16. package/environments/mobile-app/env.mobile-app.__.d.ts +3 -0
  17. package/environments/mobile-app/env.mobile-app.prod.d.ts +3 -0
  18. package/environments/npm-lib-and-cli-tool/env.npm-lib-and-cli-tool.__.d.ts +3 -0
  19. package/environments/npm-lib-and-cli-tool/env.npm-lib-and-cli-tool.prod.d.ts +3 -0
  20. package/environments/vscode-plugin/env.vscode-plugin.__.d.ts +6 -0
  21. package/environments/vscode-plugin/env.vscode-plugin.prod.d.ts +4 -0
  22. package/index.js.map +1 -1
  23. package/lib/build-info._auto-generated_.d.ts +1 -1
  24. package/lib/build-info._auto-generated_.js +1 -1
  25. package/lib/build-info._auto-generated_.js.map +1 -1
  26. package/lib/command-exists.js.map +1 -1
  27. package/lib/core-cli.js.map +1 -1
  28. package/lib/core-config.js.map +1 -1
  29. package/lib/core-imports.d.ts +1 -3
  30. package/lib/core-imports.js +1 -10
  31. package/lib/core-imports.js.map +1 -1
  32. package/lib/core-models.js.map +1 -1
  33. package/lib/deep/hello-world.d.ts +0 -0
  34. package/lib/deep/hello-world.js +2 -0
  35. package/lib/deep/hello-world.js.map +1 -0
  36. package/lib/env/env.angular-node-app.backend.d.ts +8 -0
  37. package/lib/env/env.angular-node-app.backend.js +14 -0
  38. package/lib/env/env.angular-node-app.backend.js.map +1 -0
  39. package/lib/env/env.angular-node-app.browser.d.ts +8 -0
  40. package/lib/env/env.angular-node-app.js.map +1 -1
  41. package/lib/env/env.docs-webapp.js.map +1 -1
  42. package/lib/env/env.electron-app.backend.d.ts +8 -0
  43. package/lib/env/env.electron-app.backend.js +14 -0
  44. package/lib/env/env.electron-app.backend.js.map +1 -0
  45. package/lib/env/env.electron-app.browser.d.ts +8 -0
  46. package/lib/env/env.electron-app.js.map +1 -1
  47. package/lib/env/env.mobile-app.backend.d.ts +8 -0
  48. package/lib/env/env.mobile-app.backend.js +14 -0
  49. package/lib/env/env.mobile-app.backend.js.map +1 -0
  50. package/lib/env/env.mobile-app.browser.d.ts +8 -0
  51. package/lib/env/env.mobile-app.js.map +1 -1
  52. package/lib/env/env.npm-lib-and-cli-tool.backend.d.ts +8 -0
  53. package/lib/env/env.npm-lib-and-cli-tool.backend.js +14 -0
  54. package/lib/env/env.npm-lib-and-cli-tool.backend.js.map +1 -0
  55. package/lib/env/env.npm-lib-and-cli-tool.browser.d.ts +8 -0
  56. package/lib/env/env.npm-lib-and-cli-tool.js.map +1 -1
  57. package/lib/env/env.vscode-plugin.backend.d.ts +8 -0
  58. package/lib/env/env.vscode-plugin.backend.js +14 -0
  59. package/lib/env/env.vscode-plugin.backend.js.map +1 -0
  60. package/lib/env/env.vscode-plugin.browser.d.ts +8 -0
  61. package/lib/env/env.vscode-plugin.js.map +1 -1
  62. package/lib/env/index.js.map +1 -1
  63. package/lib/framework-name.js.map +1 -1
  64. package/lib/helpers-isomorphic.js.map +1 -1
  65. package/lib/helpers-messages.js.map +1 -1
  66. package/lib/helpers.js.map +1 -1
  67. package/lib/index._auto-generated_.js.map +1 -1
  68. package/lib/index.js.map +1 -1
  69. package/lib/node-chalk-mock.js +2 -2
  70. package/lib/node-chalk-mock.js.map +1 -1
  71. package/lib/node-path-mock.js +2 -2
  72. package/lib/node-path-mock.js.map +1 -1
  73. package/lib/progress-data.js.map +1 -1
  74. package/lib/public-api.js.map +1 -1
  75. package/lib/required-global-npm-packages.js.map +1 -1
  76. package/lib/utils.js.map +1 -1
  77. package/migrations/index.js.map +1 -1
  78. package/migrations/migrations_index._auto-generated_.js.map +1 -1
  79. package/package.json +1 -1
  80. package/tmp-environment.json +11 -6
  81. package/websql/fesm2022/tnp-core.mjs +1 -6
  82. package/websql/fesm2022/tnp-core.mjs.map +1 -1
  83. package/websql/lib/core-imports.d.ts +1 -3
  84. package/websql/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"tnp-core.mjs","sources":["../../../tmp-libs-for-dist/tnp-core/projects/tnp-core/src/lib/framework-name.ts","../../../tmp-libs-for-dist/tnp-core/projects/tnp-core/src/lib/node-chalk-mock.ts","../../../tmp-libs-for-dist/tnp-core/projects/tnp-core/src/lib/node-path-mock.ts","../../../tmp-libs-for-dist/tnp-core/projects/tnp-core/src/lib/core-imports.ts","../../../tmp-libs-for-dist/tnp-core/projects/tnp-core/src/lib/core-models.ts","../../../tmp-libs-for-dist/tnp-core/projects/tnp-core/src/lib/utils.ts","../../../tmp-libs-for-dist/tnp-core/projects/tnp-core/src/lib/helpers-isomorphic.ts","../../../tmp-libs-for-dist/tnp-core/projects/tnp-core/src/lib/helpers-messages.ts","../../../tmp-libs-for-dist/tnp-core/projects/tnp-core/src/lib/helpers.ts","../../../tmp-libs-for-dist/tnp-core/projects/tnp-core/src/lib/core-config.ts","../../../tmp-libs-for-dist/tnp-core/projects/tnp-core/src/lib/progress-data.ts","../../../tmp-libs-for-dist/tnp-core/projects/tnp-core/src/lib/core-cli.ts","../../../tmp-libs-for-dist/tnp-core/projects/tnp-core/src/lib/required-global-npm-packages.ts","../../../tmp-libs-for-dist/tnp-core/projects/tnp-core/src/lib/index.ts","../../../tmp-libs-for-dist/tnp-core/projects/tnp-core/src/tnp-core.ts"],"sourcesContent":["let isBrowser = false;\n//#region @browser\nisBrowser = true;\n//#endregion\n\nconst frameworkNameBeTmp: 'taon' | 'tnp' = '' as any;\n\n/* */\n/* */\n/* */\n \nexport const frameworkNameBe = frameworkNameBeTmp;\n\nexport const frameworkName = isBrowser ? 'taon' : frameworkNameBe;\n","//#region @browser\nimport { Chalk } from 'chalk';\n\n// TODO finish this MOCK @LAST\n// const c:Chalk = void 0;\n\nconst allObj = {\n black(a) {\n console.log(a);\n },\n gray(a) {\n console.log(a);\n },\n red(a) {\n console.log(a);\n },\n green(a) {\n console.log(a);\n },\n italic(a) {\n console.log(a);\n },\n magenta(a) {\n console.log(a);\n },\n bold(a) {\n console.log(a);\n },\n underline(a) {\n console.log(a);\n },\n};\n\nconst map = new Map<Function, string>();\n\nconst all = Object.keys(allObj).map(key => {\n map.set(allObj[key], key);\n return allObj[key];\n});\n\nfor (let i = 0; i < all.length; i++) {\n const e1 = all[i] as Function;\n for (let j = 0; j < all.length; j++) {\n const e2 = all[j] as Function; // @ts-ignore\n e1[map.get(e2)] = e2;\n }\n}\n\nexport const chalk: Chalk = allObj as any;\n//#endregion\n","//#region @browser\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError(\n '[taon-core] Path must be a string. Received ' + JSON.stringify(path),\n );\n }\n}\n\n// Resolves . and .. elements in a path with directory names\nfunction normalizeStringPosix(path, allowAboveRoot) {\n var res = '';\n var lastSegmentLength = 0;\n var lastSlash = -1;\n var dots = 0;\n var code;\n for (var i = 0; i <= path.length; ++i) {\n if (i < path.length) code = path.charCodeAt(i);\n else if (code === 47 /*/*/) break;\n else code = 47 /*/*/;\n if (code === 47 /*/*/) {\n if (lastSlash === i - 1 || dots === 1) {\n // NOOP\n } else if (lastSlash !== i - 1 && dots === 2) {\n if (\n res.length < 2 ||\n lastSegmentLength !== 2 ||\n res.charCodeAt(res.length - 1) !== 46 /*.*/ ||\n res.charCodeAt(res.length - 2) !== 46 /*.*/\n ) {\n if (res.length > 2) {\n var lastSlashIndex = res.lastIndexOf('/');\n if (lastSlashIndex !== res.length - 1) {\n if (lastSlashIndex === -1) {\n res = '';\n lastSegmentLength = 0;\n } else {\n res = res.slice(0, lastSlashIndex);\n lastSegmentLength = res.length - 1 - res.lastIndexOf('/');\n }\n lastSlash = i;\n dots = 0;\n continue;\n }\n } else if (res.length === 2 || res.length === 1) {\n res = '';\n lastSegmentLength = 0;\n lastSlash = i;\n dots = 0;\n continue;\n }\n }\n if (allowAboveRoot) {\n if (res.length > 0) res += '/..';\n else res = '..';\n lastSegmentLength = 2;\n }\n } else {\n if (res.length > 0) res += '/' + path.slice(lastSlash + 1, i);\n else res = path.slice(lastSlash + 1, i);\n lastSegmentLength = i - lastSlash - 1;\n }\n lastSlash = i;\n dots = 0;\n } else if (code === 46 /*.*/ && dots !== -1) {\n ++dots;\n } else {\n dots = -1;\n }\n }\n return res;\n}\n\nfunction _format(sep, pathObject) {\n var dir = pathObject.dir || pathObject.root;\n var base =\n pathObject.base || (pathObject.name || '') + (pathObject.ext || '');\n if (!dir) {\n return base;\n }\n if (dir === pathObject.root) {\n return dir + base;\n }\n return dir + sep + base;\n}\n\nexport const path = {\n // path.resolve([from ...], to)\n resolve: function resolve(pathToResovle) {\n return pathToResovle;\n },\n\n normalize: function normalize(pathArg) {\n assertPath(pathArg);\n\n if (pathArg.length === 0) return '.';\n\n var isAbsolute = pathArg.charCodeAt(0) === 47; /*/*/\n var trailingSeparator = pathArg.charCodeAt(pathArg.length - 1) === 47; /*/*/\n\n // Normalize the path\n pathArg = normalizeStringPosix(pathArg, !isAbsolute);\n\n if (pathArg.length === 0 && !isAbsolute) pathArg = '.';\n if (pathArg.length > 0 && trailingSeparator) pathArg += '/';\n\n if (isAbsolute) return '/' + pathArg;\n return pathArg;\n },\n\n isAbsolute: function isAbsolute(pathArg) {\n assertPath(pathArg);\n return pathArg.length > 0 && pathArg.charCodeAt(0) === 47 /*/*/;\n },\n\n join: function join() {\n if (arguments.length === 0) return '.';\n var joined;\n for (var i = 0; i < arguments.length; ++i) {\n var arg = arguments[i];\n assertPath(arg);\n if (arg.length > 0) {\n if (joined === undefined) joined = arg;\n else joined += '/' + arg;\n }\n }\n if (joined === undefined) return '.';\n return path.normalize(joined);\n },\n\n relative: function relative(from, to) {\n assertPath(from);\n assertPath(to);\n\n if (from === to) return '';\n\n from = path.resolve(from);\n to = path.resolve(to);\n\n if (from === to) return '';\n\n // Trim any leading backslashes\n var fromStart = 1;\n for (; fromStart < from.length; ++fromStart) {\n if (from.charCodeAt(fromStart) !== 47 /*/*/) break;\n }\n var fromEnd = from.length;\n var fromLen = fromEnd - fromStart;\n\n // Trim any leading backslashes\n var toStart = 1;\n for (; toStart < to.length; ++toStart) {\n if (to.charCodeAt(toStart) !== 47 /*/*/) break;\n }\n var toEnd = to.length;\n var toLen = toEnd - toStart;\n\n // Compare paths to find the longest common path from root\n var length = fromLen < toLen ? fromLen : toLen;\n var lastCommonSep = -1;\n var i = 0;\n for (; i <= length; ++i) {\n if (i === length) {\n if (toLen > length) {\n if (to.charCodeAt(toStart + i) === 47 /*/*/) {\n // We get here if `from` is the exact base path for `to`.\n // For example: from='/foo/bar'; to='/foo/bar/baz'\n return to.slice(toStart + i + 1);\n } else if (i === 0) {\n // We get here if `from` is the root\n // For example: from='/'; to='/foo'\n return to.slice(toStart + i);\n }\n } else if (fromLen > length) {\n if (from.charCodeAt(fromStart + i) === 47 /*/*/) {\n // We get here if `to` is the exact base path for `from`.\n // For example: from='/foo/bar/baz'; to='/foo/bar'\n lastCommonSep = i;\n } else if (i === 0) {\n // We get here if `to` is the root.\n // For example: from='/foo'; to='/'\n lastCommonSep = 0;\n }\n }\n break;\n }\n var fromCode = from.charCodeAt(fromStart + i);\n var toCode = to.charCodeAt(toStart + i);\n if (fromCode !== toCode) break;\n else if (fromCode === 47 /*/*/) lastCommonSep = i;\n }\n\n var out = '';\n // Generate the relative path based on the path difference between `to`\n // and `from`\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\n if (i === fromEnd || from.charCodeAt(i) === 47 /*/*/) {\n if (out.length === 0) out += '..';\n else out += '/..';\n }\n }\n\n // Lastly, append the rest of the destination (`to`) path that comes after\n // the common path parts\n if (out.length > 0) return out + to.slice(toStart + lastCommonSep);\n else {\n toStart += lastCommonSep;\n if (to.charCodeAt(toStart) === 47 /*/*/) ++toStart;\n return to.slice(toStart);\n }\n },\n\n _makeLong: function _makeLong(path) {\n return path;\n },\n\n dirname: function dirname(path) {\n assertPath(path);\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47; /*/*/\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) return '//';\n return path.slice(0, end);\n },\n\n basename: function basename(pathArg, ext) {\n if (ext !== undefined && typeof ext !== 'string')\n throw new TypeError('\"ext\" argument must be a string');\n assertPath(pathArg);\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n if (ext !== undefined && ext.length > 0 && ext.length <= pathArg.length) {\n if (ext.length === pathArg.length && ext === pathArg) return '';\n var extIdx = ext.length - 1;\n var firstNonSlashEnd = -1;\n for (i = pathArg.length - 1; i >= 0; --i) {\n var code = pathArg.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else {\n if (firstNonSlashEnd === -1) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching\n matchedSlash = false;\n firstNonSlashEnd = i + 1;\n }\n if (extIdx >= 0) {\n // Try to match the explicit extension\n if (code === ext.charCodeAt(extIdx)) {\n if (--extIdx === -1) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = i;\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extIdx = -1;\n end = firstNonSlashEnd;\n }\n }\n }\n }\n\n if (start === end) end = firstNonSlashEnd;\n else if (end === -1) end = pathArg.length;\n return pathArg.slice(start, end);\n } else {\n for (i = pathArg.length - 1; i >= 0; --i) {\n if (pathArg.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return pathArg.slice(start, end);\n }\n },\n\n extname: function extname(pathArg) {\n assertPath(pathArg);\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = pathArg.length - 1; i >= 0; --i) {\n var code = pathArg.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1) startDot = i;\n else if (preDotState !== 1) preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (\n startDot === -1 ||\n end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1)\n ) {\n return '';\n }\n return pathArg.slice(startDot, end);\n },\n\n format: function format(pathObject) {\n if (pathObject === null || typeof pathObject !== 'object') {\n throw new TypeError(\n 'The \"pathObject\" argument must be of type Object. Received type ' +\n typeof pathObject,\n );\n }\n return _format('/', pathObject);\n },\n\n parse: function parse(pathArg) {\n assertPath(pathArg);\n\n var ret = { root: '', dir: '', base: '', ext: '', name: '' };\n if (pathArg.length === 0) return ret;\n var code = pathArg.charCodeAt(0);\n var isAbsolute = code === 47; /*/*/\n var start;\n if (isAbsolute) {\n ret.root = '/';\n start = 1;\n } else {\n start = 0;\n }\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n var i = pathArg.length - 1;\n\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n\n // Get non-dir info\n for (; i >= start; --i) {\n code = pathArg.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1) startDot = i;\n else if (preDotState !== 1) preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (\n startDot === -1 ||\n end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1)\n ) {\n if (end !== -1) {\n if (startPart === 0 && isAbsolute)\n ret.base = ret.name = pathArg.slice(1, end);\n else ret.base = ret.name = pathArg.slice(startPart, end);\n }\n } else {\n if (startPart === 0 && isAbsolute) {\n ret.name = pathArg.slice(1, startDot);\n ret.base = pathArg.slice(1, end);\n } else {\n ret.name = pathArg.slice(startPart, startDot);\n ret.base = pathArg.slice(startPart, end);\n }\n ret.ext = pathArg.slice(startDot, end);\n }\n\n if (startPart > 0) ret.dir = pathArg.slice(0, startPart - 1);\n else if (isAbsolute) ret.dir = '/';\n\n return ret;\n },\n\n sep: '/',\n delimiter: ':',\n win32: {\n // @ts-ignore\n normalize: p => {\n return p;\n },\n },\n posix: null,\n};\n//#endregion\n","let forceTrace = 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//#region @browser\nimport jQuery from 'jquery';\nimport { chalk as chalkMock } from './node-chalk-mock';\nimport { path as pathMock } from './node-path-mock';\n//#endregion\nimport * as _ from 'lodash';\nimport * as q from 'q';\nimport * as moment from 'moment';\nimport * as dateformat from 'dateformat';\nimport { Chalk } from 'chalk';\nimport * as json5 from 'json5';\nimport type jQueryType from 'jquery';\nimport type chalkBaseType from 'chalk';\nimport type * as pathBaseType from 'path';\nimport type * as globBaseType from 'glob';\nimport type * as fseBaseType from 'fs-extra';\nimport type * as osBaseType from 'os';\nimport type * as child_processType from 'child_process';\nimport type * as httpBaseType from 'http';\nimport type * as httpsBaseType from 'https';\nimport type * as fkillBaseType from 'fkill';\nimport type * as psListBaseType from 'ps-list';\nimport type * as netBaseType from 'net';\nimport type * as spawnBaseType from 'cross-spawn';\nimport type * as fgBaseType from 'fast-glob';\n// @ts-ignore\nimport type { minimatch as minimatchBaseType } from 'minimatch';\nimport type * as rimrafBaseType from 'rimraf';\nimport type * as chokidarBaseType from 'chokidar';\nimport type * as mkdirpBaseType from 'mkdirp';\nimport type * as ncpBaseType from 'copy-paste';\nimport type * as psBaseType from 'ps-node';\nimport { Helpers } from './index';\n\n//#region constants\n/* */\n/* */\n \n//#endregion\n\n//#region set up browser mocks\n\n//#region set up browser mocks / mock jquery\nlet $: jQueryType;\n//#region @browser\n$ = jQuery;\n//#endregion\n/* */\n/* */\n \n//#endregion\n\n//#region set up browser mocks / mock path\n\nlet path = void 0 as typeof pathBaseType;\n/* */\n/* */\n \n\n//#region @browser\n// @ts-ignore\npath = pathMock;\n//#endregion\n//#endregion\n\n//#region set up browser mocks / mock chalk\n\nlet chalk: Chalk = void 0 as typeof chalkBaseType;\n/* */\n/* */\n \n\n//#region @browser\n// @ts-ignore\nchalk = chalkMock;\n//#endregion\n//#endregion\n\n//#region set up browser mocks / mock glob\nlet glob = void 0 as typeof globBaseType;\n/* */\n/* */\n \n//#region @browser\n// TODO: implement browser glob\n//#endregion\n//#endregion\n\n//#region set up browser mocks / mock fse\nlet fse = void 0 as typeof fseBaseType;\n/* */\n/* */\n \n//#region @browser\n// TODO: implement browser fse\n//#endregion\n//#endregion\n\n//#region set up browser mocks / mock os\nlet os = void 0 as typeof osBaseType;\n/* */\n/* */\n \n//#region @browser\n// TODO: implement browser os\n//#endregion\n//#endregion\n\n//#region set up browser mocks / mock child_process\nlet child_process = void 0 as typeof child_processType;\n/* */\n/* */\n \n//#endregion\n\n//#region set up browser mocks / mock http\nlet http = void 0 as typeof httpBaseType;\n/* */\n/* */\n \n//#endregion\n\n//#region set up browser mocks / mock https\nlet https = void 0 as typeof httpsBaseType;\n/* */\n/* */\n \n//#endregion\n\n//#region set up browser mocks / mock isRoot\nlet isRoot = void 0 as () => Promise<boolean>;\n/* */\n/* */\n \n//#endregion\n\n//#region set up browser mocks / mock isAdmin\nlet isAdmin = void 0 as () => Promise<boolean>;\n/* */\n/* */\n \n//#endregion\n\n//#region set up browser mocks / mock isElevated\n/**\n * check if the current process is elevated\n * - sudo in unix/macos\n * - admin in windows\n */\nlet isElevated = void 0 as () => Promise<boolean>;\n/* */\n/* */\n \n//#endregion\n\n//#region set up browser mocks / mock fkill\nlet fkill = void 0 as typeof fkillBaseType;\n/* */\n/* */\n \n//#endregion\n\n//#region set up browser mocks / mock psList\nlet psList = void 0 as typeof psListBaseType;\n/* */\n/* */\n \n//#endregion\n\n//#region set up browser mocks / mock net\nlet net = void 0 as typeof netBaseType;\n/* */\n/* */\n \n//#endregion\n\n//#region set up browser mocks / mock spawn\nlet spawn = void 0 as typeof spawnBaseType;\n/* */\n/* */\n \n//#endregion\n\n//#region set up browser mocks / mock minimatch\nlet minimatch = void 0 as typeof minimatchBaseType;\n/* */\n/* */\n \n//#endregion\n\n//#region set up browser mocks / mock rimraf\nlet rimraf = void 0 as typeof rimrafBaseType;\n/* */\n/* */\n \n//#endregion\n\n//#region set up browser mocks / mock chokidar\nlet chokidar = void 0 as typeof chokidarBaseType;\n/* */\n/* */\n \n//#endregion\n\n//#region set up browser mocks / mock mkdirp\nlet mkdirp = void 0 as typeof mkdirpBaseType;\n/* */\n/* */\n \n//#endregion\n\n//#region set up browser mocks / mock ncp\nlet ncp = void 0 as typeof ncpBaseType;\n/* */\n/* */\n \n//#endregion\n\n//#region set up browser mocks / mock ps\nlet ps = void 0 as typeof psBaseType;\n/* */\n/* */\n \n//#endregion\n\n//#region set up browser mocks / mock fg\nlet fg = void 0 as typeof fgBaseType;\n/* */\n/* */\n \n//#endregion\n\n//#endregion\n\n//#region crossPlatformPath\n\n//#region transform unix path to win32 path\n/**\n * transform unix path to win32 path\n */\nconst win32Path = (p: string): string => {\n/* */\n/* */\n/* */\n/* */\n \n if (/^\\/[a-z]\\//.test(p)) {\n p = p.replace(/^\\/[a-z]\\//, `${p.charAt(1).toUpperCase()}:/`);\n }\n return path.win32.normalize(p);\n};\n//#endregion\n\n/**\n * This funciton will replace // to /\n */\nconst crossPlatformPath = (\n pathStringOrPathParts: string | string[],\n): string => {\n if (Array.isArray(pathStringOrPathParts)) {\n pathStringOrPathParts = pathStringOrPathParts.join('/');\n }\n\n if (typeof pathStringOrPathParts !== 'string') {\n return pathStringOrPathParts;\n }\n\n // debugger;\n\n if (\n typeof pathStringOrPathParts === 'string' &&\n /^[A-Z]\\:/.test(pathStringOrPathParts)\n ) {\n pathStringOrPathParts = _.lowerFirst(pathStringOrPathParts);\n }\n\n const isExtendedLengthPath = /^\\\\\\\\\\?\\\\/.test(pathStringOrPathParts);\n const hasNonAscii = /[^\\u0000-\\u0080]+/.test(pathStringOrPathParts); // eslint-disable-line no-control-regex\n if (isExtendedLengthPath) {\n console.warn(`[taon-core][crossPlatformPath]: Path starts with \\\\\\\\,\n this is not supported in crossPlatformPath`);\n if (forceTrace) {\n console.trace(`path: \"${pathStringOrPathParts}\"`);\n }\n }\n\n if (hasNonAscii) {\n const allNonAscii = pathStringOrPathParts.match(/[^\\u0000-\\u0080]+/g) || '';\n Helpers.logWarn(\n `[taon-core][crossPlatformPath]: Path contains non-ascii characters: ${allNonAscii}`,\n );\n Helpers.logWarn(pathStringOrPathParts);\n }\n\n pathStringOrPathParts = (pathStringOrPathParts || '')\n .replace(/\\\\/g, '/')\n .replace(/\\/\\//g, '/')\n .replace(/\\/\\//g, '/'); // TODO probably not needed\n\n let isWindows = false;\n/* */\n/* */\n/* */\n/* */\n \n\n const regexWinPath1 = /^(\\/)[a-zA-Z]\\:/;\n // handle supported gitbash path\n // (nodejs require need to use /c/ instead of c:/)\n if (isWindows && regexWinPath1.test(pathStringOrPathParts)) {\n pathStringOrPathParts = pathStringOrPathParts.slice(1);\n }\n\n // let isUnixLike = !isWindows;\n\n // const regexWinPath2 = /^(\\\\)[a-zA-Z]\\:/;\n // if (isUnixLike && regexWinPath2.test(pathStringOrPathParts)) {\n // console.warn(\n // `[taon-core][crossPlatformPath]: Path starts with \\\\ and not from /`,\n // );\n // console.trace(`path: \"${pathStringOrPathParts}\"`);\n // }\n\n return pathStringOrPathParts;\n};\n//#endregion\n\n//#region exports\nexport {\n _,\n q,\n moment,\n dateformat,\n crossPlatformPath,\n win32Path,\n path,\n chalk,\n json5,\n $,\n glob,\n fse,\n os,\n child_process,\n http,\n https,\n isElevated,\n fkill,\n psList,\n spawn,\n minimatch,\n fg,\n chokidar,\n mkdirp,\n ncp,\n rimraf,\n net,\n ps,\n};\n\n//#endregion\n","import type { ChildProcess } from 'child_process';\n\nimport { PackageJson } from 'type-fest';\n\nexport namespace CoreModels {\n //#region package\n export type Package = {\n name: string;\n version?: string;\n installType?: InstalationType;\n };\n //#endregion\n\n //#region npm install options\n export type NpmInstallOptions = {\n pkg?: CoreModels.Package;\n /**\n * false by default\n */\n silent?: boolean;\n /**\n * false by default\n */\n useYarn?: boolean;\n /**\n * false by default\n */\n force?: boolean;\n /**\n * Reason for installing package(s)\n */\n reason?: string;\n /**\n * true by default\n */\n removeYarnOrPackageJsonLock?: boolean;\n /**\n * false by default\n */\n generateYarnOrPackageJsonLock?: boolean;\n /**\n * false by default\n */\n skipRemovingNodeModules?: boolean;\n };\n //#endregion\n\n //#region installation type\n export type InstalationType = '-g' | '--save' | '--save-dev' | 'remove';\n\n export const InstalationTypeArr = ['-g', '--save', '--save-dev'];\n //#endregion\n\n export type ReleaseVersionType = 'major' | 'minor' | 'patch';\n export type PreReleaseVersionTag = 'alpha' | 'beta' | 'rc' | 'next';\n export const NpmSpecialVersions = [\n 'latest',\n 'next',\n 'beta',\n 'alpha',\n 'rc',\n 'lts',\n ];\n\n //#region progress data type\n export type PROGRESS_DATA_TYPE = 'info' | 'error' | 'warning' | 'event';\n //#endregion\n\n //#region environment name\n /**\n * Available application environments.\n */\n export const EnvironmentName = Object.freeze({\n /**\n * Default environment, typically for artifact without application\n * or for storing common data\n */\n __: '__',\n\n /**\n * Local development environment, typically the developer's machine.\n */\n LOCALHOST: 'localhost',\n\n /**\n * Development environment used by engineers to deploy and test new features.\n */\n DEV: 'dev',\n\n /**\n * Staging environment used for final validations before production.\n */\n STAGE: 'stage',\n\n /**\n * Production environment serving live users.\n */\n PROD: 'prod',\n\n /**\n * Automated test environment for running unit, integration, or automated tests.\n */\n TEST: 'test',\n\n /**\n * Quality assurance environment designated for manual and exploratory testing.\n */\n QA: 'qa',\n\n /**\n * Sandbox environment for experimenting and integration without affecting other environments.\n */\n SANDBOX: 'sandbox',\n\n /**\n * User Acceptance Testing environment where clients or stakeholders validate the release candidate.\n */\n UAT: 'uat',\n\n /**\n * Pre-production environment, closely mirroring production for final testing and validation.\n */\n PREPROD: 'preprod',\n\n /**\n * Demonstration environment specifically configured for client presentations and demos.\n */\n DEMO: 'demo',\n\n /**\n * Documentation environment for hosting and managing project documentation.\n */\n DOCS: 'docs',\n\n /**\n * Demonstration environment ONLY html files, typically used for static pages or documentation.\n * This environment is not intended for dynamic content or server-side processing.\n * Perfect to github pages or similar.\n * It is not intended for production use and should not be used for any critical applications or services.\n */\n STATIC_PAGES: 'static-pages',\n\n /**\n * Continuous Integration environment used by CI/CD pipelines for automated builds and deployments.\n */\n CI: 'ci',\n\n /**\n * Training environment dedicated to internal team onboarding and training activities.\n */\n TRAINING: 'training',\n });\n\n export type EnvironmentNameTaon =\n (typeof EnvironmentName)[keyof typeof EnvironmentName];\n\n //#endregion\n\n //#region push type\n export type PUSHTYPE =\n | 'feat'\n | 'chore'\n | 'feature'\n | 'refactor'\n | 'perf'\n | 'styles'\n | 'ci'\n | 'build'\n | 'fix'\n | 'bugfix'\n | 'release'\n | 'docs';\n //#endregion\n\n //#region ui framework\n /**\n * @deprecated\n */\n export type UIFramework = 'bootstrap' | 'material' | 'ionic';\n //#endregion\n\n //#region framework version\n export type FrameworkVersion =\n | 'v1'\n | 'v2'\n | 'v3'\n | 'v4'\n | 'v16'\n | 'v18'\n | 'v19'\n | 'v20'\n | 'v21'\n | 'v22';\n //#endregion\n\n //#region cuttable file exitension\n export type CutableFileExt =\n | 'scss'\n | 'css'\n | 'less'\n | 'sass'\n | 'html'\n | 'ts'\n | 'tsx'\n | 'js';\n //#endregion\n\n //#region file extension\n export type ImageFileExtension = 'jpg' | 'jpeg' | 'png' | 'svg';\n export const ImageFileExtensionArr: CoreModels.ImageFileExtension[] = [\n 'jpg',\n 'jpeg',\n 'png',\n 'svg',\n ];\n //#endregion\n\n //#region file extension\n export type FileExtension =\n | 'json'\n | 'html'\n | ImageFileExtension\n | 'txt'\n | 'md'\n | CutableFileExt;\n //#endregion\n\n //#region http method\n export type HttpMethod =\n | 'get'\n | 'post'\n | 'put'\n | 'delete'\n | 'patch'\n | 'head'\n | 'jsonp';\n //#endregion\n\n //#region http status code\n export type ParamType = 'Path' | 'Query' | 'Cookie' | 'Header' | 'Body';\n //#endregion\n\n //#region ts usage\n export type TsUsage = 'import' | 'export';\n //#endregion\n\n //#region base project type\n export type BaseProjectType =\n | 'typescript'\n | 'angular'\n | 'angular-lib'\n | 'unknown'\n | 'unknown-npm-project';\n //#endregion\n\n //#region base project type arr\n export const BaseProjectTypeArr = [\n 'typescript',\n 'angular',\n 'angular-lib',\n 'unknown',\n 'unknown-npm-project',\n ];\n //#endregion\n\n //#region lib type\n export type LibType =\n | BaseProjectType\n | 'isomorphic-lib' // + https://github.com/maximegris/angular-electron\n | 'container'\n | 'unknown-npm-project';\n //#endregion\n\n //#region new factory type\n /**\n * @deprecated\n */\n export type NewFactoryType = LibType | 'model' | 'single-file-project';\n //#endregion\n\n //#region core lib category\n /**\n * @deprecated\n */\n export type CoreLibCategory = LibType | 'common';\n //#endregion\n\n //#region file event\n export type FileEvent = 'created' | 'changed' | 'removed' | 'rename';\n //#endregion\n\n //#region out folder\n /**\n * @deprecated\n */\n export type OutFolder = 'dist' | 'browser';\n //#endregion\n\n //#region database type\n export type DatabaseType = ':inmemory' | 'mysql' | 'sqljs';\n //#endregion\n\n //#region uploaded backend file\n export interface UploadedBackendFile {\n data:\n | any\n/* */\n/* */\n \n encoding: string;\n md5: string;\n tempFilePath: string;\n mimetype: ContentType;\n mv: (path, callback) => any;\n name: string;\n truncated: boolean;\n }\n //#endregion\n\n //#region execute options process\n /**\n * @deprecated\n */\n export interface ExecuteOptions {\n /** Extract string from line */\n extractFromLine?: (string | Function)[];\n /**\n * Modify output line by line\n */\n outputLineReplace?: (outputLine: string) => string;\n resolvePromiseMsg?: {\n stdout?: string | string[];\n stderr?: string | string[];\n };\n resolvePromiseMsgCallback?: {\n stdout?: () => any;\n stderr?: () => any;\n exitCode?: (exitCode: number) => any;\n };\n prefix?: string;\n detach?: boolean;\n /**\n * Try command again after fail after n miliseconds\n */\n tryAgainWhenFailAfter?: number;\n /**\n * TODO @LAST implement this\n *\n * Output from processe with this key\n * will not be displayed twice when\n * 2 processes are running at the same time\n */\n similarProcessKey?: string;\n\n /**\n * Use big buffer for big webpack logs\n */\n biggerBuffer?: boolean;\n askToTryAgainOnError?: boolean;\n onChildProcessChange?: (childProcess: ChildProcess) => void;\n exitOnErrorCallback?: (code: number) => void;\n /**\n * From displaying in console\n */\n hideOutput?: {\n stdout?: boolean;\n stderr?: boolean;\n acceptAllExitCodeAsSuccess?: boolean;\n };\n outputBuffer?: string[];\n outputBufferMaxSize?: number;\n }\n //#endregion\n\n //#region run options process\n /**\n * @deprecated\n */\n export interface RunOptions extends ExecuteOptions {\n showCommand?: boolean;\n\n /**\n * Show process output\n */\n output?: boolean;\n\n silence?: boolean;\n stdio?: any;\n\n // detached?: boolean;\n cwd?: string;\n }\n //#endregion\n\n //#region mime types / content type\n\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\n export const mimeTypes = {\n '.aac': 'audio/aac',\n '.abw': 'application/x-abiword',\n '.arc': 'application/x-freearc',\n '.avi': 'video/x-msvideo',\n '.azw': 'application/vnd.amazon.ebook',\n '.bin': 'application/octet-stream',\n '.bmp': 'image/bmp',\n '.bz': 'application/x-bzip',\n '.bz2': 'application/x-bzip2',\n '.csh': 'application/x-csh',\n '.css': 'text/css',\n '.csv': 'text/csv',\n '.doc': 'application/msword',\n '.docx':\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n '.eot': 'application/vnd.ms-fontobject',\n '.epub': 'application/epub+zip',\n '.gz': 'application/gzip',\n '.gif': 'image/gif',\n '.htm': 'text/html',\n '.html': 'text/html',\n '.ico': 'image/vnd.microsoft.icon',\n '.ics': 'text/calendar',\n '.jar': 'application/java-archive',\n '.jpeg': 'image/jpeg',\n '.jpg': 'image/jpeg',\n '.js': 'text/javascript',\n '.json': 'application/json',\n '.jsonld': 'application/ld+json',\n '.mid': 'application/midi',\n '.midi': 'application/midi',\n '.mjs': 'text/javascript',\n '.mp3': 'audio/mpeg',\n '.mp4': 'video/mp4',\n '.mpeg': 'video/mpeg',\n '.mpkg': 'application/vnd.apple.installer+xml',\n '.odp': 'application/vnd.oasis.opendocument.presentation',\n '.ods': 'application/vnd.oasis.opendocument.spreadsheet',\n '.odt': 'application/vnd.oasis.opendocument.text',\n '.oga': 'audio/ogg',\n '.ogg': 'audio/ogg',\n '.ogv': 'video/ogg',\n '.ogx': 'application/ogg',\n '.opus': 'audio/opus',\n '.otf': 'font/otf',\n '.png': 'image/png',\n '.pdf': 'application/pdf',\n '.php': 'application/php',\n '.ppt': 'application/vnd.ms-powerpoint',\n '.pptx':\n 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n '.rar': 'application/vnd.rar',\n '.rtf': 'application/rtf',\n '.sh': 'application/x-sh',\n '.svg': 'image/svg+xml',\n '.swf': 'application/x-shockwave-flash',\n '.tar': 'application/x-tar',\n '.tif': 'image/tiff',\n '.tiff': 'image/tiff',\n '.ts': 'video/mp2t',\n '.ttf': 'font/ttf',\n '.txt': 'text/plain',\n '.vsd': 'application/vnd.visio',\n '.wav': 'audio/wav',\n '.weba': 'audio/webm',\n '.webm': 'video/webm',\n '.webp': 'image/webp',\n '.woff': 'font/woff',\n '.woff2': 'font/woff2',\n '.xhtml': 'application/xhtml+xml',\n '.xls': 'application/vnd.ms-excel',\n '.xlsx':\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n '.xml': 'application/xml',\n '.xul': 'application/vnd.mozilla.xul+xml',\n '.zip': 'application/zip',\n '.3gp': 'video/3gpp',\n '.3g2': 'video/3gpp2',\n '.7z': 'application/x-7z-compressed',\n } as const;\n\n export type ContentTypeKeys = keyof typeof mimeTypes;\n export type ContentType =\n | (typeof mimeTypes)[ContentTypeKeys]\n | 'multipart/form-data';\n type ContentType_ = ContentType;\n\n /**\n * https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types\n */\n export type MediaType =\n | 'text'\n | 'image'\n | 'audio'\n | 'font'\n | 'video'\n | 'application'\n | 'multipart'\n | 'message'\n | 'model';\n\n export const MediaTypeAllArr = [\n 'text',\n 'image',\n 'audio',\n 'video',\n 'font',\n 'application',\n 'multipart',\n 'message',\n 'model',\n ] as MediaType[];\n\n export type MimeType = keyof typeof mimeTypes;\n export const MimeTypesObj = mimeTypes;\n //#endregion\n\n //#region pwa\n export interface ManifestIcon {\n src: string; // \"assets/icons/icon-96x96.png\",\n sizes: string; // \"96x96\",\n type: string; // \"image/png\",\n purpose: string; // \"maskable any\"\n }\n\n export interface PwaManifest {\n name: string; // \"app\",\n short_name: string; // \"app\",\n theme_color: string; // \"#1976d2\",\n background_color: string; // \"#fafafa\",\n display: 'standalone';\n scope: string; // \"./\",\n start_url: string; // \"start_url\": \"./\", => \"start_url\" \"https://darekf77.github.io/bs4-breakpoint/\"\n icons: ManifestIcon[];\n }\n //#endregion\n\n //#region vscode\n export interface VSCodeSettings {\n 'files.exclude': { [files: string]: boolean };\n 'workbench.colorTheme': 'Default Light+' | 'Kimbie Dark';\n 'workbench.colorCustomizations': {\n 'activityBar.background'?: string;\n 'activityBar.foreground'?: string;\n 'statusBar.background'?: string;\n };\n }\n //#endregion\n\n //#region position\n /**\n * @deprecated\n */\n export interface Position {\n x: number;\n y: number;\n }\n //#endregion\n\n //#region size\n /**\n * @deprecated\n */\n export interface Size {\n w: number;\n h: number;\n }\n //#endregion\n\n //#region global npm dependency\n interface GlobalNpmDependency {\n name: string;\n installName?: string;\n version?: string | number;\n }\n\n interface GlobalCommandLineProgramDependency {\n name: string;\n website: string;\n version?: string;\n }\n export interface GlobalDependencies {\n npm?: GlobalNpmDependency[];\n programs?: GlobalCommandLineProgramDependency[];\n }\n //#endregion\n\n //#region tsconfig\n interface AngularCompilerOptions {\n fullTemplateTypeCheck: boolean;\n strictInjectionParameters: boolean;\n compilationMode: string;\n preserveSymlinks: boolean;\n enableIvy: boolean;\n }\n\n interface CompilerOptions {\n baseUrl: string;\n outDir: string;\n sourceMap: boolean;\n declaration: boolean;\n strictNullChecks: boolean;\n downlevelIteration: boolean;\n experimentalDecorators: boolean;\n emitDecoratorMetadata: boolean;\n esModuleInterop: boolean;\n module: string;\n moduleResolution: string;\n importHelpers: boolean;\n skipLibCheck: boolean;\n target: string;\n typeRoots: string[];\n types: string[];\n lib: string[];\n paths: { [fullPackageName: string]: string[] };\n useDefineForClassFields: boolean;\n }\n export interface TsConfigJson {\n extends: string;\n exclude: string[];\n compileOnSave: boolean;\n compilerOptions: CompilerOptions;\n angularCompilerOptions: AngularCompilerOptions;\n }\n\n export interface TscCompileOptions {\n cwd: string;\n watch?: boolean;\n outDir?: 'dist';\n generateDeclarations?: boolean;\n tsExe?: string;\n diagnostics?: boolean;\n hideErrors?: boolean;\n debug?: boolean;\n }\n //#endregion\n}\n","//#region imports\nimport { Blob } from 'buffer';\nimport { ChildProcess } from 'child_process';\nimport * as net from 'net';\nimport { promisify } from 'util';\n\nimport axios, { AxiosResponse } from 'axios';\n\nimport { path, _, crossPlatformPath, os, chalk } from './core-imports';\nimport { dateformat } from './core-imports';\nimport { spawn, child_process } from './core-imports';\nimport { fse } from './core-imports';\nimport { CoreModels } from './core-models';\n\nimport { Helpers } from './index';\n//#endregion\n\nconst BLOB_SUPPORTED_IN_SQLJS = false;\n\n//#region utils\nexport namespace Utils {\n //#region utils / uniq array\n export const uniqArray = <T = any>(\n array: any[],\n uniqueProperty?: keyof T,\n ) => {\n var seen = {};\n return array\n .filter(f => !!f)\n .filter(function (item) {\n return seen.hasOwnProperty(uniqueProperty ? item[uniqueProperty] : item)\n ? false\n : (seen[uniqueProperty ? item[uniqueProperty] : item] = true);\n }) as T[];\n };\n //#endregion\n\n //#region utils / recursive sort keys in object\n /**\n * @param anyObject\n * @returns object with sorted keys\n */\n export const sortKeys = (anyObject: any): any => {\n if (_.isArray(anyObject)) {\n return anyObject.map(sortKeys);\n }\n if (_.isObject(anyObject)) {\n return _.fromPairs(\n _.keys(anyObject)\n .sort()\n .map(key => [key, sortKeys(anyObject[key])]),\n );\n }\n return anyObject;\n };\n //#endregion\n\n //#region utils / escape string for reg exp\n /**\n * Example:\n * new RegExp(escapeStringForRegEx('a.b.c'),'g') => /a\\.b\\.c/g\n */\n export const escapeStringForRegEx = (stringForRegExp: string) => {\n return stringForRegExp.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n };\n //#endregion\n\n //#region utils / remove chalk special chars\n export function removeChalkSpecialChars(str: string): string {\n // Regex to match ANSI escape sequences used by Chalk\n const ansiRegex = /\\u001b\\[[0-9;]*m/g;\n\n // Replace all ANSI escape sequences with an empty string\n return str.replace(ansiRegex, '');\n }\n //#endregion\n\n //#region utils / full date time\n export const fullDateTime = () => {\n/* */\n/* */\n return (void 0);\n };\n //#endregion\n\n //#region utils / full date\n export const fullDate = () => {\n/* */\n/* */\n return (void 0);\n };\n //#endregion\n\n //#region utils / get free port\n const takenPorts = [];\n export const getFreePort = async (options?: {\n 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/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n //#endregion\n\n //#region utils / required uncached\n /**\n * Traverses the cache to search for all the cached\n * files of the specified module name\n */\n const searchCache = (moduleName, callback) => {\n/* */\n/* */\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 * Removes a module from the cache\n */\n const purgeCache = moduleName => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n\n export const requireUncached = (module: string) => {\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n\n //#endregion\n\n //#region utils / camelize\n /**\n * similar to camelCase but remove\n * all non word / repeated characters\n */\n export const camelize = (str: string = '') => {\n str = str.replace(/\\W/g, '').toLowerCase();\n return str\n .replace(/(?:^\\w|[A-Z]|\\b\\w)/g, function (word, index) {\n return index == 0 ? word.toLowerCase() : word.toUpperCase();\n })\n .replace(/\\s+/g, '');\n };\n //#endregion\n\n //#region json\n interface AttrJsoncProp {\n name: string;\n value?: any;\n }\n export namespace json {\n export const getAtrributies = (\n jsonDeepPath: string, // lodash path to property in json ex. deep.path.to.prop\n fileContent: string, // jsonc or json5 - json with comments\n ): AttrJsoncProp[] => {\n const lines = fileContent.split('\\n');\n // split path to parts but keep part if is for example 'sql.js\n const pathParts = jsonDeepPath.split('.').reduce((a, b) => {\n if (a.length === 0) {\n return [b];\n }\n const last: string = a[a.length - 1];\n if (\n (last.startsWith(`['`) && b.endsWith(`']`)) ||\n (last.startsWith(`[\"`) && b.endsWith(`\"]`))\n ) {\n a[a.length - 1] = [last, b].join('.');\n } else {\n a.push(b);\n }\n return a;\n }, []);\n // console.log({ pathParts });\n // const pathParts = jsonDeepPath.split('.');\n const keyName = pathParts.pop()!.replace(/^\\[\"(.+)\"\\]$/, '$1');\n let currentPath = '';\n let attributes: AttrJsoncProp[] = [];\n let collectedComments: string[] = [];\n\n for (const line of lines) {\n const trimmedLine = line.trim();\n\n if (trimmedLine.startsWith('//')) {\n // Collect comments\n collectedComments.push(trimmedLine);\n // trimmedLine.startsWith('//pizda') &&\n // console.log('pushlin line', { trimmedLine });\n } else if (trimmedLine.startsWith('\"') || trimmedLine.startsWith(\"'\")) {\n // Extract the key from the line\n const match = trimmedLine.match(/[\"']([^\"']+)[\"']\\s*:/);\n // console.log({ match0: match && match[0], match1: match && match[1] });\n if (match) {\n const key = match[1];\n currentPath = currentPath\n ? `${currentPath}.${key.includes('.') ? `['${key}']` : key}`\n : key;\n // console.log({ key });\n // Check if the current path matches the jsonDeepPath\n if (\n (currentPath.endsWith(keyName) &&\n !currentPath.endsWith('/' + keyName)) ||\n currentPath.endsWith(`['${keyName}']`)\n ) {\n // console.log('extract attributes', {\n // keyName,\n // collectedCommentsLength: collectedComments.length,\n // });\n // Process the collected comments to extract attributes\n attributes = extractAttributesFromComments(collectedComments);\n break;\n }\n\n // Reset collected comments as they only relate to the next key\n collectedComments = [];\n }\n }\n }\n\n return attributes;\n };\n\n const extractAttributesFromComments = (\n comments: string[],\n ): AttrJsoncProp[] => {\n const attributes: AttrJsoncProp[] = [];\n const attrRegex = /@(\\w+)(?:\\s*=\\s*([^\\s@]+))?/g;\n // console.log({ comments });\n for (const comment of comments) {\n let match;\n while ((match = attrRegex.exec(comment)) !== null) {\n const [, name, value] = match;\n\n const existingAttribute = attributes.find(\n attr => attr.name === `@${name}`,\n );\n\n if (existingAttribute) {\n if (value) {\n if (Array.isArray(existingAttribute.value)) {\n existingAttribute.value.push(value);\n } else {\n existingAttribute.value = [existingAttribute.value, value];\n }\n }\n } else {\n attributes.push({\n name: `@${name}`,\n value: value ? value : true,\n });\n }\n }\n }\n\n // Normalize single values not to be arrays\n attributes.forEach(attr => {\n if (Array.isArray(attr.value) && attr.value.length === 1) {\n attr.value = attr.value[0];\n }\n });\n\n return attributes;\n };\n }\n //#endregion\n\n //#region binary\n\n //#region db binary format type\n export enum DbBinaryFormatEnum {\n Blob = 'Blob',\n File = 'File',\n string = 'string',\n/* */\n/* */\n \n }\n\n export type DbBinaryFormatForBrowser = Blob | File | string;\n/* */\n/* */\n \n\n /**\n * Binary format that can be stored in database\n *\n * for nodejs => Buffer\n * for sql.js => string (shoulb be blob - but not supported)\n *\n */\n export type DbBinaryFormat =\n | DbBinaryFormatForBrowser\n/* */\n/* */\n \n //#endregion\n export namespace binary {\n //#region binay utils / array buffer to blob\n //#region @browser\n /**\n * This is for BROWSER ONLY\n *\n * @param buffer\n * @param contentType\n * @returns\n */\n export async function arrayBufferToBlob(\n buffer: ArrayBuffer,\n contentType: CoreModels.ContentType,\n ): Promise<Blob> {\n // @ts-ignore\n return new Blob([buffer], { type: contentType });\n }\n //#endregion\n //#endregion\n\n //#region binay utils / blob to array buffer\n /**\n * This is for BROWSER ONLY\n * @param blob\n * @returns\n */\n export async function blobToArrayBuffer(blob: Blob): Promise<ArrayBuffer> {\n return await new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.addEventListener('loadend', () => {\n resolve(reader.result as any);\n });\n reader.addEventListener('error', reject); // @ts-ignore\n reader.readAsArrayBuffer(blob);\n });\n }\n //#endregion\n\n //#region binay utils / blob to base64 string\n /**\n * it is revers to base64toBlob\n * @param blob\n * @returns\n */\n export function blobToBase64(blob: Blob): Promise<string> {\n return new Promise<any>((resolve, _) => {\n const reader = new FileReader();\n reader.onloadend = () => resolve(reader.result); // @ts-ignore\n reader.readAsDataURL(blob);\n });\n }\n //#endregion\n\n //#region binay utils / base64 string to blob\n /**\n * it is revers to blobToBase64()\n * @param base64Data\n * @returns\n */\n export async function base64toBlob(\n base64Data: string,\n contentTypeOverride?: CoreModels.ContentType,\n ): Promise<Blob> {\n let content_type: CoreModels.ContentType = void 0 as any;\n let file_base64: string = void 0 as any;\n if (!contentTypeOverride) {\n const m = /^data:(.+?);base64,(.+)$/.exec(base64Data);\n if (!m) {\n throw new Error(\n `[taon-framework][base64toBlob] Not a base64 blob [${base64Data}]`,\n );\n }\n // tslint:disable-next-line:prefer-const\n var [__, contenttype, filebase64] = m;\n content_type = contenttype as any;\n file_base64 = filebase64;\n }\n content_type = (\n contentTypeOverride ? contentTypeOverride : content_type || ''\n ) as any;\n base64Data = contentTypeOverride ? base64Data : file_base64;\n const sliceSize = 1024;\n const byteCharacters = atob(base64Data);\n const bytesLength = byteCharacters.length;\n const slicesCount = Math.ceil(bytesLength / sliceSize);\n const byteArrays = new Array(slicesCount);\n\n for (let sliceIndex = 0; sliceIndex < slicesCount; ++sliceIndex) {\n const begin = sliceIndex * sliceSize;\n const end = Math.min(begin + sliceSize, bytesLength);\n\n const bytes = new Array(end - begin);\n // tslint:disable-next-line:one-variable-per-declaration\n for (let offset = begin, i = 0; offset < end; ++i, ++offset) {\n bytes[i] = byteCharacters[offset].charCodeAt(0);\n }\n byteArrays[sliceIndex] = new Uint8Array(bytes);\n }\n return new Blob(byteArrays, { type: content_type });\n }\n //#endregion\n\n //#region binay utils / base64 string to db binary format\n\n export async function base64toDbBinaryFormat(\n text: string,\n ): Promise<DbBinaryFormat> {\n let result: DbBinaryFormat;\n //#region @browser\n result = await (async () => {\n if (BLOB_SUPPORTED_IN_SQLJS) {\n const blob = await base64toBlob(text);\n return blob;\n }\n return text as any;\n })();\n //#endregion\n/* */\n/* */\n/* */\n/* */\n/* */\n \n return result;\n }\n //#endregion\n\n //#region binay utils / db binary format to base64 string\n export async function dbBinaryFormatToBase64(\n binaryFormat: DbBinaryFormat,\n ): Promise<string> {\n let result: string;\n //#region @browser\n result = await (async () => {\n if (BLOB_SUPPORTED_IN_SQLJS) {\n const text = await blobToBase64(binaryFormat as any);\n return text;\n }\n return binaryFormat as any;\n })();\n //#endregion\n\n/* */\n/* */\n/* */\n/* */\n/* */\n \n return result;\n }\n //#endregion\n\n //#region binay utils / base64 string to db binary format\n\n export async function textToDbBinaryFormat(\n text: string,\n ): Promise<DbBinaryFormat> {\n let result: DbBinaryFormat;\n //#region @browser\n result = await (async () => {\n if (BLOB_SUPPORTED_IN_SQLJS) {\n const blob = await textToBlob(text);\n return blob;\n }\n return text as any;\n })();\n //#endregion\n/* */\n/* */\n/* */\n/* */\n/* */\n \n return result;\n }\n //#endregion\n\n //#region binay utils / db binary format to base64 string\n export async function dbBinaryFormatToText(\n binaryFormat: DbBinaryFormat,\n ): Promise<string> {\n let result: string;\n //#region @browser\n result = await (async () => {\n if (BLOB_SUPPORTED_IN_SQLJS) {\n const text = await blobToText(binaryFormat as any);\n return text;\n }\n return binaryFormat as any;\n })();\n //#endregion\n\n/* */\n/* */\n/* */\n/* */\n/* */\n \n return result;\n }\n //#endregion\n\n //#region binay utils / base64 string to nodejs buffer\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n //#endregion\n\n //#region binay utils / nodejs buffer to base64 string\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n //#endregion\n\n //#region binay utils / file to blob\n export async function fileToBlob(file: File) {\n return new Blob([new Uint8Array(await file.arrayBuffer())], {\n type: file.type,\n });\n }\n //#endregion\n\n //#region binay utils / blob to file\n export async function blobToFile(\n blob: Blob,\n nameForFile: string = 'my-file-name',\n ): Promise<File> {\n if (!nameForFile) {\n nameForFile = 'nonamefile' + new Date().getTime();\n }\n // @ts-ignore\n return new File([blob], nameForFile);\n }\n //#endregion\n\n //#region binay utils / nodejs blob to nodejs buffer\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n //#endregion\n\n //#region binay utils / nodejs buffer to nodejs blob\n/* */\n/* */\n/* */\n/* */\n/* */\n \n //#endregion\n\n //#region binay utils / text to nodejs buffer\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n //#endregion\n\n //#region binay utils / nodejs buffer to text\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n //#endregion\n\n //#region binay utils / text to blob\n export async function textToBlob(\n text: string,\n type: CoreModels.ContentType = 'text/plain',\n ): Promise<Blob> {\n const blob = new Blob([text], { type });\n return blob;\n }\n //#endregion\n\n //#region binay utils / blob to text\n export async function blobToText(blob: Blob): Promise<string> {\n return await blob.text();\n }\n //#endregion\n\n //#region binay utils / text to file\n export async function textToFile(\n text: string,\n fileRelativePathOrName: string,\n ): Promise<File> {\n // console.log({ path })\n const ext = path.extname(fileRelativePathOrName);\n\n const type = CoreModels.mimeTypes[ext];\n const blob = new Blob([text], { type });\n const file = await blobToFile(blob, fileRelativePathOrName);\n // console.log({\n // ext,\n // blob, file\n // });\n // debugger\n return file;\n }\n //#endregion\n\n //#region binay utils / file to text\n export async function fileToText(file: File): Promise<string> {\n return await file.text();\n }\n //#endregion\n\n //#region binay utils / json to blob\n export async function jsonToBlob(jsonObj: object): Promise<Blob> {\n const blob = new Blob([JSON.stringify(jsonObj, null, 2)], {\n type: 'application/json',\n });\n return blob;\n }\n //#endregion\n\n //#region binay utils / blob to json\n /**\n * TODO NOT TESTED\n */\n export async function blobToJson(blob: Blob): Promise<string> {\n return JSON.parse(await blob.text());\n }\n //#endregion\n\n //#region binay utils / get blob from url\n export async function getBlobFrom(url: string): Promise<Blob> {\n const response: AxiosResponse<Blob> = await axios({\n url,\n method: 'get',\n responseType: 'blob',\n });\n return response.data;\n }\n //#endregion\n }\n //#endregion\n\n //#region css\n export namespace css {\n //#region css utils / numeric value of pixels\n /**\n *\n * @param pixelsCss pixels ex. 100px\n * @returns\n */\n export function numValue(pixelsCss: string | number): number {\n // tslint:disable-next-line:radix\n return parseInt(\n pixelsCss?.toString()?.replace('px', ''),\n // .replace('pt', '') TOOD handle other types\n // .replace('1rem', '') // to\n );\n }\n //#endregion\n }\n //#endregion\n}\n//#endregion\n\n//#region utils process\nexport namespace UtilsProcess {\n //#region utils process / process start options\n interface ResolvePromiseMsg {\n /**\n * until this string is in output of stdout\n */\n stdout?: string | string[];\n /**\n * until this string is in output of stderr\n */\n stderr?: string | string[];\n /**\n * by default only resolve when exit code is 0\n */\n resolveAfterAnyExitCode?: boolean;\n }\n\n export interface ProcessStartOptions {\n /**\n * by default is process.cwd();\n */\n cwd?: string;\n /**\n * by default is false\n */\n showCommand?: boolean;\n /**\n * Modify output line by line\n */\n outputLineReplace?: (outputLineStderOrStdout: string) => string;\n resolvePromiseMsg?: ResolvePromiseMsg;\n /**\n * Prefix messages output from child_process\n */\n prefix?: string;\n /**\n * Try command again after fail after n milliseconds\n */\n tryAgainWhenFailAfter?: number;\n askToTryAgainOnError?: boolean;\n exitOnErrorCallback?: (code: number) => void;\n /**\n * Use big buffer for big webpack logs\n * (it may slow down smaller processes execution)\n */\n biggerBuffer?: boolean;\n hideOutput?: {\n stdout?: boolean;\n stderr?: boolean;\n };\n }\n //#endregion\n\n //#region utils process / TODO start async\n /**\n * TODO IMPLEMENT\n * start async node process\n */\n export const startAsync = async (\n command: string,\n cwd: string,\n // options?: ProcessStartOptions, // TODO change to this\n options?: Omit<CoreModels.ExecuteOptions, 'tryAgainWhenFailAfter'>,\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/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\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 utils process / TODO start sync\n // /**\n // * TODO IMPLEMENT\n // */\n // export function startSync(command: string, options?: ProcessStartOptions) {\n // TODO @LAST\n // }\n //#endregion\n\n //#region utils process / start async child process command until\n /**\n * This let you start child process and resolve promise when some\n * condition is met. It is useful for example when you want to start\n * process and wait until some output is in stdout or stderr.\n */\n export const startAsyncChildProcessCommandUntil = async (\n command: string,\n options: {\n /**\n * tels when to resolve promise\n */\n untilOptions: ResolvePromiseMsg;\n displayOutputInParentProcess?: boolean;\n resolveAfterAnyExitCode?: boolean;\n cwd?: string;\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 return (void 0);\n };\n //#endregion\n\n //#region utils process / get git bash path\n export const getGitBashPath = () => {\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 utils process / start process in new graphical terminal window\n /**\n * TODO IMPLEMENT\n * start async node process\n */\n export const startInNewTerminalWindow = (\n command: string,\n options?: Pick<ProcessStartOptions, 'cwd' | 'hideOutput'>,\n ) => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\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 utils process / get bash or shell name\n export const getBashOrShellName = ():\n | 'browser'\n | 'cmd'\n | 'powershell'\n | 'gitbash'\n | 'cygwin'\n | 'unknown'\n | 'bash'\n | 'zsh'\n | 'fish'\n | 'sh' => {\n //#region @browser\n return 'browser';\n //#endregion\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\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 /**\n * Get CPU and memory usage for a single PID.\n */\n export const getUsageForPid = async (\n pid: number,\n ): Promise<{ cpu: number; memoryInGB: number; memoryInMB: number }> => {\n/* */\n/* */\n/* */\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 * Return a list of direct child PIDs for the given PID on a Unix-like system.\n * Uses `ps -o pid= --ppid <pid>` to find child processes.\n */\n async function getChildPidsUnix(pid: number): Promise<number[]> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n /**\n * Return a list of direct child PIDs for the given PID on Windows.\n * Uses `wmic process where (ParentProcessId=<pid>) get ProcessId` to find child processes.\n */\n async function getChildPidsWindows(pid: number): Promise<number[]> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n /**\n * Cross-platform function to list *direct* child PIDs of a given PID.\n * Uses the appropriate command depending on `process.platform`.\n */\n export async function getChildPidsOnce(pid: number): Promise<number[]> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n /**\n * Get CPU and memory usage for the current process (the Node.js process itself),\n * plus any child processes spawned by it.\n */\n export const getCurrentProcessAndChildUsage = async (): Promise<{\n current: { cpu: number; memoryInMB: number };\n children: Array<{ pid: number; cpu: number; memoryInMB: 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 return (void 0);\n };\n}\n\n//#endregion\n\n//#region utils os\nexport namespace UtilsOs {\n //#region utils os / is running in browser\n /**\n * check if script is running in client browser\n * (websql model -> is also considered as browser\n * because it is running in browser)\n */\n export const isRunningInBrowser = (): boolean => {\n/* */\n/* */\n \n return true;\n };\n //#endregion\n\n //#region utils os / is running in node\n /**\n * check if script is running in nodejs\n * (backend script or electron script)\n */\n export const isRunningInNode = (): boolean => {\n/* */\n/* */\n \n return false;\n };\n //#endregion\n\n //#region utils os / is running in websql\n /**\n * check if script is running special\n * browser mode that has sql.js backend\n * and executes sql queries in browser\n */\n export const isRunningInWebSQL = (): boolean => {\n/* */\n/* */\n \n\n/* */\n/* */\n \n return false;\n };\n //#endregion\n\n //#region utils os / is running in electron\n /**\n * check whether the current process is running inside\n * Electron backend or browser.\n */\n export const isRunningInElectron = (): boolean => {\n // Renderer process\n // @ts-ignore\n if (\n typeof window !== 'undefined' &&\n typeof window.process === 'object' &&\n // @ts-ignore\n window.process.type === 'renderer'\n ) {\n return true;\n }\n\n // Main process\n // @ts-ignore\n if (\n typeof process !== 'undefined' &&\n typeof process.versions === 'object' &&\n !!process.versions.electron\n ) {\n return true;\n }\n\n // Detect the user agent when the `nodeIntegration` option is set to false\n if (\n typeof navigator === 'object' &&\n typeof navigator.userAgent === 'string' &&\n navigator.userAgent.indexOf('Electron') >= 0\n ) {\n return true;\n }\n\n return false;\n };\n //#endregion\n\n //#region utils os / is running in vscode extension\n /**\n * Check whether the current process is running inside\n * a Visual Studio Code extension.\n */\n export const isRunningInVscodeExtension = (): boolean => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n return false;\n };\n //#endregion\n\n //#region utils os / is running in wsl\n /**\n * Check wether the current process is running inside\n * windows subsystem for linux (WSL).\n */\n export const isRunningInWsl = (): boolean => {\n //#region @browser\n return false;\n //#endregion\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 utils os / is running in windows / powershell / cmd\n const getProcessTree = (): Record<\n number,\n { pid: number; ppid: number; 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/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n\n const findAncestorProcessName = (targets: string[]): string | undefined => {\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 isRunningInWindowsPowerShell = (): boolean => {\n return (\n findAncestorProcessName(['powershell.exe', 'pwsh.exe']) !== undefined\n );\n };\n\n export const isRunningInWindowsCmd = (): boolean => {\n return findAncestorProcessName(['cmd.exe']) !== undefined;\n };\n //#endregion\n\n //#region utils os / is running in docker\n export const isRunningInDocker = (): boolean => {\n //#region @browser\n return false;\n //#endregion\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n //#endregion\n\n //#region utils os / is running in linux graphics capable environment\n export const isRunningInLinuxGraphicsCapableEnvironment = (): boolean => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n //#endregion\n\n //#region utils os / is running in cli mode\n /**\n * Check whether the current process is running in CLI mode.\n */\n export const isRunningInCliMode = (): boolean => {\n //#region @browser\n return false;\n //#endregion\n/* */\n/* */\n return (void 0);\n };\n //#endregion\n\n //#region utils os / is running in mocha test\n /**\n * Check whether the current process is running in mocha test.\n */\n export const isRunningInMochaTest = (): boolean => {\n //#region @browser\n return false;\n //#endregion\n/* */\n/* */\n return (void 0);\n };\n //#endregion\n\n //#region utils os / is port in use\n const isPortInUseOnHost = (port: number, host: 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 return (void 0);\n };\n\n /**\n * Checks if a given port is already in use (bound by another process).\n *\n * @param port - The port number to check.\n * @param host - The hostname or IP address to bind to (default: '127.0.0.1').\n * @returns Promise<boolean> - Resolves to `true` if the port is in use, otherwise `false`.\n */\n export const isPortInUse = async (\n port: number,\n options?: {\n /**\n * '127.0.0.1' etc..\n */\n checkForSpecificOnlyHost?: string;\n },\n ): Promise<boolean> => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n //#endregion\n\n export const isElectron = isRunningInElectron();\n export const isBrowser = isRunningInBrowser();\n export const isNode = isRunningInNode();\n export const isWebSQL = isRunningInWebSQL();\n export const isVscodeExtension = isRunningInVscodeExtension();\n}\n//#endregion\n\n//#region utils string\nexport namespace UtilsString {\n //#region utils string / kebab case no split numbers\n export const kebabCaseNoSplitNumbers = (input: string): string => {\n return (\n input\n // Match spaces or any kind of whitespace and replace with a hyphen\n .replace(/\\s+/g, '-')\n // Match uppercase letters and replace them with a hyphen and the lowercase version of the letter\n .replace(/([a-z0-9])([A-Z])/g, '$1-$2')\n // Convert everything to lowercase\n .toLowerCase()\n );\n };\n //#endregion\n}\n//#endregion\n\n//#region utils migrations\n/**\n * Taon migration utilities\n */\nexport namespace UtilsMigrations {\n export const getTimestampFromClassName = (\n className: string,\n ): number | undefined => {\n const [maybeTimestamp1, maybeTimestamp2] = className.split('_') || [];\n // console.log({ maybeTimestamp1, maybeTimestamp2 });\n const timestamp1 = parseInt(maybeTimestamp1);\n const timestamp2 = parseInt(maybeTimestamp2);\n const timestamp = !_.isNaN(timestamp1) ? timestamp1 : timestamp2;\n return isValidTimestamp(timestamp) ? timestamp : void 0;\n };\n\n export const getFormattedTimestampFromClassName = (\n className: string,\n ): string | undefined => {\n const timestamp = getTimestampFromClassName(className);\n if (!timestamp) {\n return void 0;\n }\n return formatTimestamp(timestamp);\n };\n\n export const formatTimestamp = (timestamp: number): string => {\n const dateFromTimestamp: Date = new Date(timestamp);\n return `${dateformat(dateFromTimestamp, 'dd-mm-yyyy HH:MM:ss')}`;\n };\n\n export const isValidTimestamp = (value: any): boolean => {\n if (typeof value !== 'number') {\n return false; // Must be a number\n }\n\n const minTimestamp = 0; // Minimum possible timestamp (Unix epoch)\n const maxTimestamp = 8640000000000000; // Max safe timestamp in JS (represents year ~275760)\n\n return value >= minTimestamp && value <= maxTimestamp;\n };\n}\n//#endregion\n\n//#region utils terminal\nexport namespace UtilsTerminal {\n //#region models\n export interface SelectChoice {\n /**\n * Title of the choice\n */\n name?: string;\n disabled?: boolean;\n }\n\n export interface SelectChoiceValue<T = string> extends SelectChoice {\n value?: T;\n }\n\n type SelectActionChoice = {\n [choice: string]: SelectChoice & {\n /**\n * Action to execute\n */\n action?: () => any;\n };\n };\n //#endregion\n\n //#region wait\n export const wait = (second: number): Promise<void> => {\n return new Promise((resolve, reject) => {\n setTimeout(() => {\n resolve(void 0);\n }, second * 1000);\n });\n };\n //#endregion\n\n //#region clear\n export const clearConsole = (): void => {\n/* */\n/* */\n/* */\n return (void 0);\n // TODO @LAST\n // let shouldClear = true;\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n\n //#region @browser\n // const isDevToolsOpen = (() => {\n // const threshold = 160; // devtools resizing causes this to be larger\n // return (\n // window.outerHeight - window.innerHeight > threshold ||\n // window.outerWidth - window.innerWidth > threshold\n // );\n // })();\n\n // if (isDevToolsOpen) {\n // shouldClear = false;\n // }\n //#endregion\n // if (shouldClear) {\n // Helpers.msgCacheClear?.();\n // console.clear?.();\n // }\n // console.log('\\x1Bc');\n // process.stdout.write('\\033c\\033[3J');\n // try {\n // run('clear').sync()\n // } catch (error) {\n // console.log('clear console not succedd')\n // }\n };\n //#endregion\n\n //#region transform choices\n const transformChoices = (choices: any): SelectChoiceValue[] => {\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 multiselect\n export const multiselect = async <T = string>(options: {\n question: string;\n /**\n * If true, then only one choice can be selected\n * @deprecated use select instead\n */\n onlyOneChoice?: boolean;\n choices: SelectChoiceValue<T>[] | { [choice: string]: SelectChoice };\n autocomplete?: boolean;\n defaultSelected?: 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/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\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 select and execute\n /**\n * Similar to select but executes action if provided\n * @returns selected and executed value\n */\n export const multiselectActionAndExecute = async <\n CHOICE extends SelectActionChoice = SelectActionChoice,\n >(\n choices: CHOICE,\n options?: {\n question?: string;\n autocomplete?: boolean;\n defaultSelected?: string;\n hint?: string;\n executeActionsOnDefault?: 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 return (void 0);\n };\n //#endregion\n\n //#region select and execute\n /**\n * Similar to select but executes action if provided\n * @returns selected and executed value\n */\n export const selectActionAndExecute = async <\n CHOICE extends SelectActionChoice = SelectActionChoice,\n >(\n choices: CHOICE,\n options?: {\n question?: string;\n autocomplete?: boolean;\n defaultSelected?: string;\n hint?: string;\n executeActionOnDefault?: 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 return (void 0);\n };\n //#endregion\n\n //#region select\n export const select = async <T = string>(options: {\n question: string;\n choices: SelectChoiceValue<T>[] | { [choice: string]: SelectChoice };\n autocomplete?: boolean;\n defaultSelected?: string;\n hint?: 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/* */\n/* */\n/* */\n/* */\n/* */\n/* */\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 pipe enter to stdin\n export const pipeEnterToStdin = (): void => {\n/* */\n/* */\n return (void 0);\n };\n //#endregion\n\n //#region input\n export const input = async ({\n defaultValue,\n question,\n required, // TODO something is werid with required\n }: {\n defaultValue?: string;\n question: string;\n required?: boolean;\n validate?: (value: string) => boolean;\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 confirm\n export const confirm = async (options?: {\n /**\n * default: Are you sure?\n */\n message?: string;\n callbackTrue?: () => any;\n callbackFalse?: () => any;\n /**\n * default: true\n */\n defaultValue?: boolean;\n engine?: 'inquirer-toggle' | 'prompts' | 'enquirer' | '@inquirer/prompts';\n }) => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\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 any key to continue\n export const pressAnyKeyToContinueAsync = (options?: {\n message?: string;\n }): 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 press any key\n /**\n * @deprecated use UtilsTerminal.pressAnyKeyToContinueAsync()\n */\n export const pressAnyKey = (options?: { 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 return (void 0);\n };\n //#endregion\n\n //#region preview long list as select\n export const previewLongList = async (\n list: string | string[],\n listName = 'List',\n ): 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 preview long list with 'less' (git log like)\n /**\n * Displays a long list in the console using a pager like `less`.\n * Returns a Promise that resolves when the user exits the pager.\n *\n * @param {string} list - The long string content to display.\n * @returns {Promise<void>} A Promise that resolves when the pager exits.\n */\n export const previewLongListGitLogLike = (\n list: string | 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 return (void 0);\n };\n //#endregion\n}\n//#endregion\n","import { UtilsOs } from './utils';\n\nexport class HelpersIsomorphic {\n /**\n * @deprecated\n * use UtilsOs.isRunningInBrowser() instead\n */\n get isBrowser() {\n return UtilsOs.isRunningInBrowser();\n }\n\n /**\n * @deprecated\n * use UtilsOs.isRunningInWebSQL() instead\n */\n get isWebSQL() {\n return UtilsOs.isRunningInWebSQL();\n }\n\n /**\n * @deprecated\n * use UtilsOs.isRunningInNode() instead\n */\n get isNode() {\n return UtilsOs.isRunningInNode();\n }\n\n /**\n * @deprecated\n * use UtilsOs.isRunningInElectron() instead\n */\n get isElectron() {\n return UtilsOs.isRunningInElectron();\n }\n\n /**\n * TODO what is the purpose of this function?\n * @deprecated\n */\n contain(arr: any[], item: any): boolean {\n return (\n arr.filter(l => {\n if (l instanceof RegExp) {\n return l.test(item);\n }\n if (l === item) {\n return true;\n }\n if (\n item.match && typeof item.match === 'function' ? item.match(l) : false\n ) {\n return true;\n }\n return false;\n }).length > 0\n );\n }\n}\n","\ndeclare const global: any;\nimport { chalk, dateformat } from './core-imports';\nimport { _ } from './core-imports';\nimport { frameworkName } from './framework-name';\nimport { HelpersIsomorphic } from './helpers-isomorphic';\nimport { PROGRESS_DATA } from './progress-data';\n\nimport { Helpers } from './index';\n\n// TODO handle global.testMode ?\n\nconst KEY = {\n LAST_ERROR: Symbol(),\n LAST_INFO: Symbol(),\n LAST_WARN: Symbol(),\n LAST_LOG: Symbol(),\n LAST_SUCCESS: Symbol(),\n LAST_TASK_STARTED: Symbol(),\n LAST_TASK_DONE: Symbol(),\n};\n\nconst KEY_COUNT = {\n LAST_ERROR: Symbol(),\n LAST_INFO: Symbol(),\n LAST_WARN: Symbol(),\n LAST_LOG: Symbol(),\n LAST_SUCCESS: Symbol(),\n LAST_TASK_STARTED: Symbol(),\n LAST_TASK_DONE: Symbol(),\n};\n\nconst KEY_IMPORTANTCE = {\n LAST_ERROR: Symbol(),\n LAST_INFO: Symbol(),\n LAST_WARN: Symbol(),\n LAST_LOG: Symbol(),\n LAST_SUCCESS: Symbol(),\n LAST_TASK_STARTED: Symbol(),\n LAST_TASK_DONE: Symbol(),\n};\n\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n\nconst LIMIT = 10;\n\n//#region transformData\n/**\n * @param details any data to be transformed\n * @returns string ready to be displayed\n */\nconst transformData = (details: any): string => {\n if (typeof details === 'object') {\n // if (Array.isArray(details)) {\n // return details.join('\\n');\n // }\n try {\n const json = JSON.stringify(details, null, 2);\n details = json;\n } catch (error) {\n return details;\n }\n }\n return details;\n};\n//#endregion\n\nexport class HelpersMessages extends HelpersIsomorphic {\n msgCacheClear() {\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n\n renderError(err: Error) {\n if (this.isBrowser) {\n // TODO for FE\n console.error(err);\n } else {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n }\n\n /**\n * throw error\n */\n throw(details: string) {\n throw new Error(details);\n }\n\n /**\n * throw error and stop application\n * @param details\n */\n stopApplication(details: string) {\n if (this.isBrowser) {\n //#region @browser\n document.body.innerHTML =\n '<h1>Application has encountered an error and stopped.</h1>';\n document.body.style.pointerEvents = 'none';\n //#endregion\n/* */\n/* */\n/* */\n/* */\n \n }\n throw new Error(details);\n }\n\n tryCatchError(error: any) {\n Helpers.error(error, true, true);\n }\n\n error(details: any, noExit = false, noTrace = false) {\n //#region browser mode\n if (Helpers.isBrowser) {\n console.error(details);\n return;\n }\n //#endregion\n\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\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 info\n info(details: string, repeatable = false) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n if (Helpers.isBrowser) {\n console.info(details);\n return;\n }\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\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 info\n success(details: any | string) {\n if (Helpers.isBrowser) {\n console.info(details);\n return;\n }\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\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 /**\n *\n * @param details\n * @param isLogTask is less important log task\n * @returns\n */\n taskStarted(details: any | string, isLogTask: boolean = false) {\n if (Helpers.isBrowser) {\n console.info(details);\n return;\n }\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\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 taskDone(details?: any | string, isLessImportant = false) {\n if (Helpers.isBrowser) {\n console.info(details);\n return;\n }\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\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 get isVerboseMode() {\n //#region @browser\n return true; // TODO what it means in browser\n //#endregion\n/* */\n/* */\n \n }\n\n //#region log\n /**\n * log messages only available in verbose mode\n */\n log(details: any, debugLevel = 0) {\n if (Helpers.isBrowser) {\n console.log(details);\n return;\n }\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\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 /**\n * Logs not visible in normal use of taon-cli\n */\n logSuccess(details: any | string) {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n /**\n * Logs not visible in normal use of taon-cli\n */\n logInfo(details: string, repeatable = false) {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n /**\n * Logs not visible in normal use of taon-cli\n */\n logError(details: any, noExit = false, noTrace = false) {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n /**\n * Logs not visible in normal use of taon-cli\n */\n logWarn(details: string, trace = false) {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n //#region warn\n warn(details: string, trace = false) {\n if (Helpers.isBrowser) {\n console.warn(details);\n return;\n }\n\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\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 import\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n//#region @browser\nimport { Subject, Subscription } from 'rxjs';\n//#endregion\nimport { _, path, crossPlatformPath } from './core-imports';\nimport { UtilsProcess, UtilsTerminal } from './utils';\nimport { Helpers, Utils, UtilsOs } from './index';\nimport { HelpersMessages } from './helpers-messages';\nimport { CoreModels } from './core-models';\n\nimport type { ChildProcess } from 'child_process';\n//#endregion\n\n//#region constants\ndeclare const global: any;\nconst encoding = 'utf8';\n/* */\n/* */\n \nconst WEBSQL_PROC_MOCK_PROCESSES_PID = {};\nconst WEBSQL_PROC_MOCK_PROCESSES_PPID = {};\n\n//#endregion\n\n//#region models\nexport interface RunSyncOrAsyncOptions {\n functionFn: Function;\n context?: object;\n arrayOfParams?: any[];\n}\n\nexport interface CommandOutputOptions {\n biggerBuffer?: boolean;\n showOnlyLastLine?: boolean;\n showStder?: boolean;\n gatherColors?: boolean;\n showErrorWarning?: boolean;\n}\n//#endregion\n\n// TODO UNCOMMENT\n// const globalProcessStdout = {};\n// const globalProcessStder = {};\n// const maxProcessHistoryLinesChekc = 20;\n\nexport class HelpersCore extends HelpersMessages {\n //#region singleton\n private static _instanceCore: HelpersCore;\n public static get InstanceCore() {\n if (!HelpersCore._instanceCore) {\n HelpersCore._instanceCore = new HelpersCore();\n }\n return HelpersCore._instanceCore;\n }\n //#endregion\n\n //#region fields / getters\n/* */\n/* */\n \n readonly bigMaxBuffer = 2024 * 500;\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 constructor\n constructor() {\n super();\n/* */\n/* */\n/* */\n \n }\n //#endregion\n\n //#region methods / is wsl\n /**\n * @deprecated use UtilsOs.isRunningInsideWsl()\n */\n get isWsl() {\n return UtilsOs.isRunningInWsl();\n }\n //#endregion\n\n //#region methods / is running in docker\n /**\n * @deprecated use UtilsOs.isRunningInDocker\n */\n isRunningInDocker() {\n return UtilsOs.isRunningInDocker();\n }\n //#endregion\n\n //#region methods / is running in docker\n /**\n * @deprecated use UtilsOs.isRunningInLinuxGraphicEnvironment\n */\n isRunningInLinuxGraphicsCapableEnvironment() {\n return UtilsOs.isRunningInLinuxGraphicsCapableEnvironment();\n }\n //#endregion\n\n //#region clear console\n /**\n * @deprecated use UtilsTerminal.clearConsole\n */\n clearConsole() {\n return UtilsTerminal.clearConsole();\n }\n //#endregion\n\n //#region methods / media from type\n mediaTypeFromSrc(src: string): CoreModels.MediaType {\n const ext = path.extname(src);\n const media = CoreModels.mimeTypes[ext];\n return _.first(media?.split('/'));\n }\n //#endregion\n\n //#region methods / sleep\n sleep(seconds = 1) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods / remove if exists\n removeIfExists(absoluteFileOrFolderPath: 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 //#endregion\n\n //#region methods / relative\n /**\n * path.relative that return cross platform path\n */\n relative(cwd: string, to: string) {\n return crossPlatformPath(path.relative(cwd, to));\n }\n //#endregion\n\n //#region methods / remove file if exists\n removeFileIfExists(absoluteFilePath: string | string[]) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods / remove folder if exists\n removeFolderIfExists(absoluteFolderPath: string | 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 methods / remove empty line from string\n /**\n * leave max 1 empty line\n */\n removeEmptyLineFromString(str: string) {\n const lines = (str || '').split('\\n');\n let previousWasEmpty = false;\n\n return lines\n .filter(line => {\n if (line.trim() === '') {\n if (previousWasEmpty) {\n // Skip this line because the previous line was also empty\n return false;\n } else {\n // Allow this line, but set flag that next empty line should be skipped\n previousWasEmpty = true;\n return true;\n }\n } else {\n // Reset flag if the line is not empty\n previousWasEmpty = false;\n return true;\n }\n })\n .join('\\n');\n }\n //#endregion\n\n //#region methods / try remove empty dir\n /**\n * @deprecated\n */\n tryRemoveDir(\n dirpath: string,\n contentOnly = false,\n omitWarningNotExisted = 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 return (void 0);\n }\n //#endregion\n\n //#region methods / remove file or folder\n\n removeSymlinks(\n dirPath: string | string[],\n options?: {\n dryRun?: 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 return (void 0);\n }\n\n // /**\n // * TODO replacement for remove/rimraf.sync\n // * save remove file or folder\n // */\n // safeRemove(\n // targetPath: string,\n // options?: {\n // // usePattern?: boolean;\n // },\n // ): void {\n // targetPath = crossPlatformPath(targetPath);\n // try {\n // const stats = fse.lstatSync(targetPath);\n\n // if (stats.isSymbolicLink()) {\n // // Remove the symlink without following it\n // fse.unlinkSync(targetPath);\n // } else if (stats.isDirectory()) {\n // // Recursively remove directory contents\n // const entries = fse.readdirSync(targetPath);\n // for (const entry of entries) {\n // this.safeRemove(crossPlatformPath([targetPath, entry]), options);\n // }\n // fse.rmdirSync(targetPath);\n // } else {\n // // Remove file\n // fse.unlinkSync(targetPath);\n // }\n // } catch (err) {\n // console.error(`Error removing ${targetPath}:`, err);\n // }\n // }\n\n /**\n * @deprecated use safeRemove\n */\n remove(fileOrFolderPathOrPatter: string | string[], exactFolder = false) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods / clean exit process\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n //#endregion\n\n //#region methods / is running in git bash\n get isRunningInGitBash(): boolean {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods / check if projects is running in supported terminal\n /**\n * Check if the current shell is supported by Taon framework.\n */\n get isSupportedTaonTerminal(): boolean {\n //#region @browser\n return false;\n //#endregion\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods / check if function is class\n /**\n * check if function is class\n */\n isClass(funcOrClass: any): boolean {\n let isClass = false;\n if (typeof funcOrClass === 'function') {\n // Check if it has a prototype property\n // console.log('Object.getOwnPropertyNames(funcOrClass.prototype)', Object.getOwnPropertyNames(funcOrClass.prototype).filter(f => f !== 'constructor'))\n isClass =\n !!funcOrClass.prototype &&\n Object.getOwnPropertyNames(funcOrClass.prototype).filter(\n f => f !== 'constructor',\n ).length > 0;\n }\n // console.log('is class: ' + isClass, funcOrClass)\n return isClass;\n }\n //#endregion\n\n //#region methods / is blob\n /**\n * check if data is nodejs/browser blob\n *\n * @param maybeBlob\n * @returns\n */\n public isBlob(maybeBlob): maybeBlob is Blob {\n // TODO is this needed hmmmm\n return maybeBlob instanceof Blob; // || toString.call(maybeBlob) === '[object Blob]';\n }\n //#endregion\n\n //#region methods / is buffer\n /**\n * Check if data is nodejs buffer\n *\n * @param maybeNodejsBuffer\n * @returns\n */\n/* */\n/* */\n/* */\n/* */\n \n //#endregion\n\n //#region methods / remove slash at the end of string\n public removeSlashAtEnd(s: string): string {\n s = s?.endsWith(`/`) ? s.slice(0, s.length - 1) : s;\n return s;\n }\n //#endregion\n\n //#region methods / remove slash at the begin of string\n public removeSlashAtBegin(s: string): string {\n s = s?.startsWith(`/`) ? s.slice(1) : s;\n return s;\n }\n //#endregion\n\n //#region methods / stringify object pretty format\n /**\n * stringify to pretty json string\n */\n public stringify(inputObject: any): string {\n // if (_.isString(inputObject)) {\n // return inputObject;\n // }\n // if (_.isObject(inputObject)) {\n // config.log(inputObject)\n // Helpers.error(`[tnp-helpers] trying to stringify not a object`, false, true);\n // }\n return JSON.stringify(inputObject, null, 2);\n }\n //#endregion\n\n //#region methods / run sync or async\n public async runSyncOrAsync<FUNCTION_RETURN_TYPE = any>(\n fnOrOptions: RunSyncOrAsyncOptions,\n ): Promise<FUNCTION_RETURN_TYPE> {\n if (_.isUndefined(fnOrOptions)) {\n return void 0 as any;\n }\n let promisOrValue: any;\n // const optionsMode = _.isObject(fnOrOptions)\n // && !_.isArray(fnOrOptions)\n // && !_.isFunction(fnOrOptions)\n // && !_.isNil(fnOrOptions)\n // ;\n\n // if (optionsMode) {\n const { functionFn, context, arrayOfParams } = fnOrOptions;\n promisOrValue = functionFn.apply(context, arrayOfParams);\n // } else {\n // // @ts-ignore\n // promisOrValue = _.isArray(fnOrOptions) ? fnOrOptions[1][fnOrOptions[0]](...firstArg) : fnOrOptions(...firstArg);\n // }\n // let wasPromise = false;\n\n if (promisOrValue instanceof Promise) {\n // wasPromise = true;\n promisOrValue = Promise.resolve(promisOrValue);\n }\n // console.log('was promis ', wasPromise)\n return promisOrValue;\n }\n //#endregion\n\n //#region methods / create symlink\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\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 / mkdirp\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\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 / is symlink that matches url\n /**\n * symlink may have existed or unexisted destiantion url\n * @param destUrl M\n */\n public isSymlinkThatMatchesUrl(\n possibleSymlink: string,\n destUrl: string,\n absoluteFileMatch = false,\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 return (void 0);\n }\n //#endregion\n\n //#region methods / is symlink file existed or unexisted\n public isSymlinkFileExitedOrUnexisted(filePath: string | string[]): boolean {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods / is unexisted link\n /**\n * If symbolnk link that target file does not exits\n */\n isUnexistedLink(filePath: string | 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 //#endregion\n\n //#region methods / is exited symlink\n /**\n * @param existedLink check if source of link exists\n */\n isExistedSymlink(filePath: string | string[]): 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 methods / path contain link\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 / exists\n public exists(\n folderOrFilePath: string | string[],\n // , allowUnexistedLinks = 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 return (void 0);\n }\n //#endregion\n\n //#region methods / fix command\n /**\n * this is HACK for running procesess inside processes\n */\n public _fixCommand(command: string): string {\n if (\n (command.startsWith('tnp ') || command.startsWith('taon ')) && // TODO every cli projects here that uses run and need to kill process easly!\n command.search('-spinner=false') === -1 &&\n command.search('-spinner=off') === -1\n ) {\n command = `${command} -spinner=false`;\n }\n\n if (\n global.skipCoreCheck &&\n (command.startsWith('tnp ') || command.startsWith('taon '))\n ) {\n command = `${command} --skipCoreCheck`;\n }\n return command;\n }\n //#endregion\n\n //#region methods / command\n public command(command: string) {\n // console.log({ command })\n command = Helpers._fixCommand(command);\n\n return {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\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 / wait\n /**\n * @deprecated use UtilsTerminal.wait\n */\n public async wait(second: number): Promise<void> {\n await UtilsTerminal.wait(second);\n }\n\n public async timeout(seconds: number): Promise<void> {\n return await Helpers.wait(seconds);\n }\n\n //#endregion\n\n //#region methods / command output as string async\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\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 / command output as 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 //#endregion\n\n //#region methods / kill process by port\n async killProcessByPort(\n portOrPortsToKill: number | number[],\n options?: {\n silent?: 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 return (void 0);\n }\n //#endregion\n\n //#region methods / kill on port\n async killOnPort(\n portOrPortsToKill: number | number[],\n options?: {\n silent?: boolean;\n },\n ) {\n return await Helpers.killProcessByPort(portOrPortsToKill, options);\n }\n //#endregion\n\n //#region methods / kill process\n public killProcess(byPid: 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 //#endregion\n\n //#region methods / run\n public run(command: string, options?: CoreModels.RunOptions) {\n command = Helpers._fixCommand(command);\n\n // console.log({ command })\n\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n return {\n /**\n * start command as synchronous nodej proces\n */\n\n sync() {\n // TODO buffer\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\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 * start command as asynchronous nodej proces\n * @param detach (default: false) - if true process will be detached\n */\n async(\n detach = false,\n //#region @browser\n mockFun?: (\n stdoutCallback: (dataForStdout: any) => any,\n stdErrcCallback: (dataForStder: any) => any,\n shouldProcesBeDead?: () => boolean,\n ) => Promise<number> | number,\n //#endregion\n ): ChildProcess {\n //#region websqlFunc\n //#region mock of process\n //#region @browser\n if (mockFun) {\n const subStdoutSub = new Subject();\n const subStderSub = new Subject();\n const exitSub = new Subject();\n const subscribtions: Subscription[] = [];\n\n const procDummy = {\n stdout: {\n on(action: 'data', stdoutCallback: any) {\n if (action == 'data') {\n subscribtions.push(\n subStdoutSub.subscribe(d => {\n stdoutCallback(d);\n }),\n );\n }\n },\n },\n stderr: {\n on(action: 'data', stdoutCallback: any) {\n if (action == 'data') {\n subscribtions.push(\n subStderSub.subscribe(d => {\n stdoutCallback(d);\n }),\n );\n }\n },\n },\n on(action: 'exit', exitFun: any) {\n if (action == 'exit') {\n subscribtions.push(\n exitSub.subscribe(d => {\n exitFun(d);\n }),\n );\n }\n }, // @ts-ignore\n ppid: void 0 as number, // @ts-ignore\n pid: void 0 as number,\n };\n\n procDummy.pid = Math.round(Math.random() * (1000 - 100)) + 100;\n procDummy.ppid = procDummy.pid + 9999;\n\n WEBSQL_PROC_MOCK_PROCESSES_PID[procDummy.pid] = procDummy;\n if (!WEBSQL_PROC_MOCK_PROCESSES_PPID[procDummy.ppid]) {\n WEBSQL_PROC_MOCK_PROCESSES_PPID[procDummy.ppid] = {\n childProcesses: [],\n };\n }\n WEBSQL_PROC_MOCK_PROCESSES_PPID[procDummy.ppid].childProcesses.push(\n procDummy.pid,\n );\n\n const checkIfProcessShouldBeDead = () => {\n return (\n _.isNil(WEBSQL_PROC_MOCK_PROCESSES_PID[procDummy.pid]) ||\n _.isNil(WEBSQL_PROC_MOCK_PROCESSES_PPID[procDummy.ppid])\n );\n };\n\n const f = Helpers.runSyncOrAsync({\n functionFn: mockFun,\n arrayOfParams: [\n d => {\n setTimeout(() => {\n subStdoutSub.next(d);\n });\n },\n d => {\n setTimeout(() => {\n subStderSub.next(d);\n });\n },\n () => {\n const shouldBeDead = checkIfProcessShouldBeDead();\n return shouldBeDead;\n },\n ],\n });\n f.then(exitCode => {\n if (_.isNil(exitCode)) {\n exitCode = 0;\n }\n setTimeout(() => {\n exitSub.next(exitCode);\n subscribtions.forEach(s => s.unsubscribe());\n });\n }).catch(e => {\n console.error(e);\n console.error(`Something wrong with your mock funciton`);\n exitSub.next(1);\n subscribtions.forEach(s => s.unsubscribe());\n });\n return procDummy as any;\n }\n //#endregion\n //#endregion\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n //#endregion\n },\n\n /**\n * start command as asynchronous nodej proces inside promise\n */\n asyncAsPromise(): 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\n unitlOutput(optionsOutput: {\n stdoutMsg: string | string[];\n stderMsg?: string | string[];\n timeout?: number;\n stdoutOutputContainsCallback?: () => any;\n outputLineReplace?: (outputLine: string) => 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 return (void 0);\n },\n\n /**\n * @deprecated use unitlOutput\n * start command as asynchronous nodej proces inside promise\n * and wait until output contains some string\n */\n unitlOutputContains(\n stdoutMsg: string | string[],\n stderMsg?: string | string[],\n timeout = 0,\n stdoutOutputContainsCallback?: () => 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 return (void 0);\n },\n };\n }\n //#endregion\n\n //#region methods / question yest no\n /**\n * @deprecated use UtilsTerminal.confirm\n */\n async questionYesNo(\n message: string,\n callbackTrue?: () => any,\n callbackFalse?: () => any,\n defaultValue = true,\n ) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods / get stdio\n/* */\n/* */\n/* */\n/* */\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 / run sync in\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n //#endregion\n\n //#region methods / run async in\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\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 / log process\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\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 / check process\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n //#endregion\n\n //#region methods / modify line by line\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\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 / is folder\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n //#endregion\n\n //#region methods / values\n /**\n * Quick fix for object values\n * @deprecated\n */\n public values(obj: any) {\n if (_.isObject(obj) && !Array.isArray(obj)) {\n const values = [];\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n // @ts-ignore\n values.push(obj[key]);\n }\n }\n return values;\n }\n return [];\n }\n //#endregion\n\n //#region methods / is file\n /**\n * does not make sense\n * @deprecated\n */\n private isFile(pathToFileOrMaybeFolder: string) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods / read file\n async tryReadFile(\n absoluteFilePath: string | string[], // @ts-ignore\n defaultValueWhenNotExists = void 0 as string,\n notTrim = false,\n ): Promise<string | undefined> {\n/* */\n/* */\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 * wrapper for fs.readFileSync\n */\n readFile(\n absoluteFilePath: string | string[], // @ts-ignore\n defaultValueWhenNotExists = void 0 as string,\n notTrim = false,\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/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods / read json\n /**\n * read json from absolute path\n * @returns json object\n */\n public readJson(\n absoluteFilePath: string | string[],\n defaultValue = {},\n useJson5 = false,\n ): any {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n public readJson5(\n absoluteFilePath: string | string[],\n defaultValue: any = {},\n ): any {\n/* */\n/* */\n return (void 0);\n }\n\n public readJsonC(\n absoluteFilePath: string | string[],\n defaultValue: any = {},\n ): any {\n/* */\n/* */\n return (void 0);\n }\n\n //#endregion\n\n //#region methods / parse\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n //#endregion\n\n //#region methods / compilation wrapper\n/* */\n/* */\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 / replace in line\n replaceLinesInFile(\n absoluteFilePath: string | string[],\n lineReplaceFn: (line: string) => string,\n ) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n //#endregion\n\n //#region methods / write file\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\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 / write json\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\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 / folders from\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\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 / links from\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\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 / links to folders from path\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\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 getFilesFrom(\n folderOrLinkToFolder: string | string[],\n options: {\n recursive?: boolean;\n followSymlinks?: boolean;\n } = {},\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 return (void 0);\n }\n\n //#region methods / files from\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\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 / open folder in file explorer\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 / hide node warnings\n hideNodeWarnings() {\n/* */\n/* */\n/* */\n \n }\n //#endregion\n}\n","export const CoreConfig = {\n message: {\n globalSystemToolMode: 'globalSystemToolMode',\n },\n};\n","import { Helpers } from '.';\nimport { _ } from './core-imports';\nimport { CoreModels } from './core-models';\n\n/* */\n/* */\n \n\nexport interface IPROGRESS_DATA {\n /**\n * How man percent of\n */\n value?: number;\n msg?: string;\n type?: CoreModels.PROGRESS_DATA_TYPE;\n date?: Date;\n}\n\nexport class PROGRESS_DATA implements IPROGRESS_DATA {\n public static log(log: IPROGRESS_DATA) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n\n public static resolveFrom(\n chunk: string,\n callbackOnFounded?: (json: PROGRESS_DATA) => any,\n checkSplit = true,\n ): PROGRESS_DATA[] {\n let progress;\n let res: PROGRESS_DATA[] = [];\n if (!_.isString(chunk)) {\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 (!_.isUndefined(progress)) {\n try {\n const p = JSON.parse(progress);\n const single = _.merge(new PROGRESS_DATA(), p);\n res = res.concat([single]);\n if (_.isFunction(callbackOnFounded)) {\n callbackOnFounded(single);\n }\n } catch (err) {\n Helpers.error(err, true, true);\n Helpers.error(\n `ProgresssBarData: fail to parse \"${progress}\"`,\n true,\n true,\n );\n }\n }\n return res;\n }\n\n public value?: number;\n public msg?: string;\n\n public type: CoreModels.PROGRESS_DATA_TYPE = 'event';\n\n public date?: Date;\n}\n","import { chalk } from './core-imports';\nimport { Helpers } from './index';\nimport { frameworkName } from './framework-name';\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n\n\nexport class CLI {\n\n/* */\n/* */\n/* */\n \n\n public static chalk = chalk;\n\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n\n\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n\n}\n\n","/**\n * TODO slowly refactor this.. only actually globally needed are:\n * pm2, yarn, npm-run, ts-node ???\n */\nexport const requiredForDev = {\n npm: [\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n ],\n niceTools: [\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n ],\n programs: [\n ,\n/* */\n/* */\n/* */\n/* */\n/* */\n \n ],\n};\n","export * from './framework-name';\nexport * from './core-imports';\nexport * from './core-models';\nimport { HelpersCore as Base } from './helpers';\nexport * from './core-config';\nexport * from './progress-data';\nexport * from './utils';\nexport * from './core-cli';\nexport * from './required-global-npm-packages';\nexport { HelpersCore as CoreHelpers, CommandOutputOptions } from './helpers';\nexport let Helpers = Base.InstanceCore;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["chalk","path","pathMock","chalkMock","Blob","Base"],"mappings":"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"}
1
+ {"version":3,"file":"tnp-core.mjs","sources":["../../../tmp-libs-for-dist/tnp-core/projects/tnp-core/src/lib/framework-name.ts","../../../tmp-libs-for-dist/tnp-core/projects/tnp-core/src/lib/node-chalk-mock.ts","../../../tmp-libs-for-dist/tnp-core/projects/tnp-core/src/lib/node-path-mock.ts","../../../tmp-libs-for-dist/tnp-core/projects/tnp-core/src/lib/core-imports.ts","../../../tmp-libs-for-dist/tnp-core/projects/tnp-core/src/lib/core-models.ts","../../../tmp-libs-for-dist/tnp-core/projects/tnp-core/src/lib/utils.ts","../../../tmp-libs-for-dist/tnp-core/projects/tnp-core/src/lib/helpers-isomorphic.ts","../../../tmp-libs-for-dist/tnp-core/projects/tnp-core/src/lib/helpers-messages.ts","../../../tmp-libs-for-dist/tnp-core/projects/tnp-core/src/lib/helpers.ts","../../../tmp-libs-for-dist/tnp-core/projects/tnp-core/src/lib/core-config.ts","../../../tmp-libs-for-dist/tnp-core/projects/tnp-core/src/lib/progress-data.ts","../../../tmp-libs-for-dist/tnp-core/projects/tnp-core/src/lib/core-cli.ts","../../../tmp-libs-for-dist/tnp-core/projects/tnp-core/src/lib/required-global-npm-packages.ts","../../../tmp-libs-for-dist/tnp-core/projects/tnp-core/src/lib/index.ts","../../../tmp-libs-for-dist/tnp-core/projects/tnp-core/src/tnp-core.ts"],"sourcesContent":["let isBrowser = false;\n//#region @browser\nisBrowser = true;\n//#endregion\n\nconst frameworkNameBeTmp: 'taon' | 'tnp' = '' as any;\n\n/* */\n/* */\n/* */\n \nexport const frameworkNameBe = frameworkNameBeTmp;\n\nexport const frameworkName = isBrowser ? 'taon' : frameworkNameBe;\n","//#region @browser\nimport { Chalk } from 'chalk';\n\n// TODO finish this MOCK @LAST\n// const c:Chalk = void 0;\n\nconst allObj = {\n black(a) {\n console.log(a);\n },\n gray(a) {\n console.log(a);\n },\n red(a) {\n console.log(a);\n },\n green(a) {\n console.log(a);\n },\n italic(a) {\n console.log(a);\n },\n magenta(a) {\n console.log(a);\n },\n bold(a) {\n console.log(a);\n },\n underline(a) {\n console.log(a);\n },\n};\n\nconst map = new Map<Function, string>();\n\nconst all = Object.keys(allObj).map(key => {\n map.set(allObj[key], key);\n return allObj[key];\n});\n\nfor (let i = 0; i < all.length; i++) {\n const e1 = all[i] as Function;\n for (let j = 0; j < all.length; j++) {\n const e2 = all[j] as Function; // @ts-ignore\n e1[map.get(e2)] = e2;\n }\n}\n\nexport const chalk: Chalk = allObj as any;\n//#endregion\n","//#region @browser\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError(\n '[taon-core] Path must be a string. Received ' + JSON.stringify(path),\n );\n }\n}\n\n// Resolves . and .. elements in a path with directory names\nfunction normalizeStringPosix(path, allowAboveRoot) {\n var res = '';\n var lastSegmentLength = 0;\n var lastSlash = -1;\n var dots = 0;\n var code;\n for (var i = 0; i <= path.length; ++i) {\n if (i < path.length) code = path.charCodeAt(i);\n else if (code === 47 /*/*/) break;\n else code = 47 /*/*/;\n if (code === 47 /*/*/) {\n if (lastSlash === i - 1 || dots === 1) {\n // NOOP\n } else if (lastSlash !== i - 1 && dots === 2) {\n if (\n res.length < 2 ||\n lastSegmentLength !== 2 ||\n res.charCodeAt(res.length - 1) !== 46 /*.*/ ||\n res.charCodeAt(res.length - 2) !== 46 /*.*/\n ) {\n if (res.length > 2) {\n var lastSlashIndex = res.lastIndexOf('/');\n if (lastSlashIndex !== res.length - 1) {\n if (lastSlashIndex === -1) {\n res = '';\n lastSegmentLength = 0;\n } else {\n res = res.slice(0, lastSlashIndex);\n lastSegmentLength = res.length - 1 - res.lastIndexOf('/');\n }\n lastSlash = i;\n dots = 0;\n continue;\n }\n } else if (res.length === 2 || res.length === 1) {\n res = '';\n lastSegmentLength = 0;\n lastSlash = i;\n dots = 0;\n continue;\n }\n }\n if (allowAboveRoot) {\n if (res.length > 0) res += '/..';\n else res = '..';\n lastSegmentLength = 2;\n }\n } else {\n if (res.length > 0) res += '/' + path.slice(lastSlash + 1, i);\n else res = path.slice(lastSlash + 1, i);\n lastSegmentLength = i - lastSlash - 1;\n }\n lastSlash = i;\n dots = 0;\n } else if (code === 46 /*.*/ && dots !== -1) {\n ++dots;\n } else {\n dots = -1;\n }\n }\n return res;\n}\n\nfunction _format(sep, pathObject) {\n var dir = pathObject.dir || pathObject.root;\n var base =\n pathObject.base || (pathObject.name || '') + (pathObject.ext || '');\n if (!dir) {\n return base;\n }\n if (dir === pathObject.root) {\n return dir + base;\n }\n return dir + sep + base;\n}\n\nexport const path = {\n // path.resolve([from ...], to)\n resolve: function resolve(pathToResovle) {\n return pathToResovle;\n },\n\n normalize: function normalize(pathArg) {\n assertPath(pathArg);\n\n if (pathArg.length === 0) return '.';\n\n var isAbsolute = pathArg.charCodeAt(0) === 47; /*/*/\n var trailingSeparator = pathArg.charCodeAt(pathArg.length - 1) === 47; /*/*/\n\n // Normalize the path\n pathArg = normalizeStringPosix(pathArg, !isAbsolute);\n\n if (pathArg.length === 0 && !isAbsolute) pathArg = '.';\n if (pathArg.length > 0 && trailingSeparator) pathArg += '/';\n\n if (isAbsolute) return '/' + pathArg;\n return pathArg;\n },\n\n isAbsolute: function isAbsolute(pathArg) {\n assertPath(pathArg);\n return pathArg.length > 0 && pathArg.charCodeAt(0) === 47 /*/*/;\n },\n\n join: function join() {\n if (arguments.length === 0) return '.';\n var joined;\n for (var i = 0; i < arguments.length; ++i) {\n var arg = arguments[i];\n assertPath(arg);\n if (arg.length > 0) {\n if (joined === undefined) joined = arg;\n else joined += '/' + arg;\n }\n }\n if (joined === undefined) return '.';\n return path.normalize(joined);\n },\n\n relative: function relative(from, to) {\n assertPath(from);\n assertPath(to);\n\n if (from === to) return '';\n\n from = path.resolve(from);\n to = path.resolve(to);\n\n if (from === to) return '';\n\n // Trim any leading backslashes\n var fromStart = 1;\n for (; fromStart < from.length; ++fromStart) {\n if (from.charCodeAt(fromStart) !== 47 /*/*/) break;\n }\n var fromEnd = from.length;\n var fromLen = fromEnd - fromStart;\n\n // Trim any leading backslashes\n var toStart = 1;\n for (; toStart < to.length; ++toStart) {\n if (to.charCodeAt(toStart) !== 47 /*/*/) break;\n }\n var toEnd = to.length;\n var toLen = toEnd - toStart;\n\n // Compare paths to find the longest common path from root\n var length = fromLen < toLen ? fromLen : toLen;\n var lastCommonSep = -1;\n var i = 0;\n for (; i <= length; ++i) {\n if (i === length) {\n if (toLen > length) {\n if (to.charCodeAt(toStart + i) === 47 /*/*/) {\n // We get here if `from` is the exact base path for `to`.\n // For example: from='/foo/bar'; to='/foo/bar/baz'\n return to.slice(toStart + i + 1);\n } else if (i === 0) {\n // We get here if `from` is the root\n // For example: from='/'; to='/foo'\n return to.slice(toStart + i);\n }\n } else if (fromLen > length) {\n if (from.charCodeAt(fromStart + i) === 47 /*/*/) {\n // We get here if `to` is the exact base path for `from`.\n // For example: from='/foo/bar/baz'; to='/foo/bar'\n lastCommonSep = i;\n } else if (i === 0) {\n // We get here if `to` is the root.\n // For example: from='/foo'; to='/'\n lastCommonSep = 0;\n }\n }\n break;\n }\n var fromCode = from.charCodeAt(fromStart + i);\n var toCode = to.charCodeAt(toStart + i);\n if (fromCode !== toCode) break;\n else if (fromCode === 47 /*/*/) lastCommonSep = i;\n }\n\n var out = '';\n // Generate the relative path based on the path difference between `to`\n // and `from`\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\n if (i === fromEnd || from.charCodeAt(i) === 47 /*/*/) {\n if (out.length === 0) out += '..';\n else out += '/..';\n }\n }\n\n // Lastly, append the rest of the destination (`to`) path that comes after\n // the common path parts\n if (out.length > 0) return out + to.slice(toStart + lastCommonSep);\n else {\n toStart += lastCommonSep;\n if (to.charCodeAt(toStart) === 47 /*/*/) ++toStart;\n return to.slice(toStart);\n }\n },\n\n _makeLong: function _makeLong(path) {\n return path;\n },\n\n dirname: function dirname(path) {\n assertPath(path);\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47; /*/*/\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) return '//';\n return path.slice(0, end);\n },\n\n basename: function basename(pathArg, ext) {\n if (ext !== undefined && typeof ext !== 'string')\n throw new TypeError('\"ext\" argument must be a string');\n assertPath(pathArg);\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n if (ext !== undefined && ext.length > 0 && ext.length <= pathArg.length) {\n if (ext.length === pathArg.length && ext === pathArg) return '';\n var extIdx = ext.length - 1;\n var firstNonSlashEnd = -1;\n for (i = pathArg.length - 1; i >= 0; --i) {\n var code = pathArg.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else {\n if (firstNonSlashEnd === -1) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching\n matchedSlash = false;\n firstNonSlashEnd = i + 1;\n }\n if (extIdx >= 0) {\n // Try to match the explicit extension\n if (code === ext.charCodeAt(extIdx)) {\n if (--extIdx === -1) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = i;\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extIdx = -1;\n end = firstNonSlashEnd;\n }\n }\n }\n }\n\n if (start === end) end = firstNonSlashEnd;\n else if (end === -1) end = pathArg.length;\n return pathArg.slice(start, end);\n } else {\n for (i = pathArg.length - 1; i >= 0; --i) {\n if (pathArg.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return pathArg.slice(start, end);\n }\n },\n\n extname: function extname(pathArg) {\n assertPath(pathArg);\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = pathArg.length - 1; i >= 0; --i) {\n var code = pathArg.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1) startDot = i;\n else if (preDotState !== 1) preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (\n startDot === -1 ||\n end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1)\n ) {\n return '';\n }\n return pathArg.slice(startDot, end);\n },\n\n format: function format(pathObject) {\n if (pathObject === null || typeof pathObject !== 'object') {\n throw new TypeError(\n 'The \"pathObject\" argument must be of type Object. Received type ' +\n typeof pathObject,\n );\n }\n return _format('/', pathObject);\n },\n\n parse: function parse(pathArg) {\n assertPath(pathArg);\n\n var ret = { root: '', dir: '', base: '', ext: '', name: '' };\n if (pathArg.length === 0) return ret;\n var code = pathArg.charCodeAt(0);\n var isAbsolute = code === 47; /*/*/\n var start;\n if (isAbsolute) {\n ret.root = '/';\n start = 1;\n } else {\n start = 0;\n }\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n var i = pathArg.length - 1;\n\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n\n // Get non-dir info\n for (; i >= start; --i) {\n code = pathArg.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1) startDot = i;\n else if (preDotState !== 1) preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (\n startDot === -1 ||\n end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1)\n ) {\n if (end !== -1) {\n if (startPart === 0 && isAbsolute)\n ret.base = ret.name = pathArg.slice(1, end);\n else ret.base = ret.name = pathArg.slice(startPart, end);\n }\n } else {\n if (startPart === 0 && isAbsolute) {\n ret.name = pathArg.slice(1, startDot);\n ret.base = pathArg.slice(1, end);\n } else {\n ret.name = pathArg.slice(startPart, startDot);\n ret.base = pathArg.slice(startPart, end);\n }\n ret.ext = pathArg.slice(startDot, end);\n }\n\n if (startPart > 0) ret.dir = pathArg.slice(0, startPart - 1);\n else if (isAbsolute) ret.dir = '/';\n\n return ret;\n },\n\n sep: '/',\n delimiter: ':',\n win32: {\n // @ts-ignore\n normalize: p => {\n return p;\n },\n },\n posix: null,\n};\n//#endregion\n","let forceTrace = 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//#region @browser\nimport jQuery from 'jquery';\nimport { chalk as chalkMock } from './node-chalk-mock';\nimport { path as pathMock } from './node-path-mock';\n//#endregion\nimport * as _ from 'lodash';\nimport * as q from 'q';\nimport * as moment from 'moment';\nimport * as dateformat from 'dateformat';\nimport { Chalk } from 'chalk';\nimport * as json5 from 'json5';\nimport type jQueryType from 'jquery';\nimport type chalkBaseType from 'chalk';\nimport type * as pathBaseType from 'path';\nimport type * as globBaseType from 'glob';\nimport type * as fseBaseType from 'fs-extra';\nimport type * as osBaseType from 'os';\nimport type * as child_processType from 'child_process';\nimport type * as httpBaseType from 'http';\nimport type * as httpsBaseType from 'https';\nimport type * as fkillBaseType from 'fkill';\nimport type * as psListBaseType from 'ps-list';\nimport type * as netBaseType from 'net';\nimport type * as spawnBaseType from 'cross-spawn';\nimport type * as fgBaseType from 'fast-glob';\nimport type * as rimrafBaseType from 'rimraf';\nimport type * as chokidarBaseType from 'chokidar';\nimport type * as mkdirpBaseType from 'mkdirp';\nimport type * as ncpBaseType from 'copy-paste';\nimport type * as psBaseType from 'ps-node';\nimport { Helpers } from './index';\n\n//#region constants\n/* */\n/* */\n \n//#endregion\n\n//#region set up browser mocks\n\n//#region set up browser mocks / mock jquery\nlet $: jQueryType;\n//#region @browser\n$ = jQuery;\n//#endregion\n/* */\n/* */\n \n//#endregion\n\n//#region set up browser mocks / mock path\n\nlet path = void 0 as typeof pathBaseType;\n/* */\n/* */\n \n\n//#region @browser\n// @ts-ignore\npath = pathMock;\n//#endregion\n//#endregion\n\n//#region set up browser mocks / mock chalk\n\nlet chalk: Chalk = void 0 as typeof chalkBaseType;\n/* */\n/* */\n \n\n//#region @browser\n// @ts-ignore\nchalk = chalkMock;\n//#endregion\n//#endregion\n\n//#region set up browser mocks / mock glob\nlet glob = void 0 as typeof globBaseType;\n/* */\n/* */\n \n//#region @browser\n// TODO: implement browser glob\n//#endregion\n//#endregion\n\n//#region set up browser mocks / mock fse\nlet fse = void 0 as typeof fseBaseType;\n/* */\n/* */\n \n//#region @browser\n// TODO: implement browser fse\n//#endregion\n//#endregion\n\n//#region set up browser mocks / mock os\nlet os = void 0 as typeof osBaseType;\n/* */\n/* */\n \n//#region @browser\n// TODO: implement browser os\n//#endregion\n//#endregion\n\n//#region set up browser mocks / mock child_process\nlet child_process = void 0 as typeof child_processType;\n/* */\n/* */\n \n//#endregion\n\n//#region set up browser mocks / mock http\nlet http = void 0 as typeof httpBaseType;\n/* */\n/* */\n \n//#endregion\n\n//#region set up browser mocks / mock https\nlet https = void 0 as typeof httpsBaseType;\n/* */\n/* */\n \n//#endregion\n\n//#region set up browser mocks / mock isRoot\nlet isRoot = void 0 as () => Promise<boolean>;\n/* */\n/* */\n \n//#endregion\n\n//#region set up browser mocks / mock isAdmin\nlet isAdmin = void 0 as () => Promise<boolean>;\n/* */\n/* */\n \n//#endregion\n\n//#region set up browser mocks / mock isElevated\n/**\n * check if the current process is elevated\n * - sudo in unix/macos\n * - admin in windows\n */\nlet isElevated = void 0 as () => Promise<boolean>;\n/* */\n/* */\n \n//#endregion\n\n//#region set up browser mocks / mock fkill\nlet fkill = void 0 as typeof fkillBaseType;\n/* */\n/* */\n \n//#endregion\n\n//#region set up browser mocks / mock psList\nlet psList = void 0 as typeof psListBaseType;\n/* */\n/* */\n \n//#endregion\n\n//#region set up browser mocks / mock net\nlet net = void 0 as typeof netBaseType;\n/* */\n/* */\n \n//#endregion\n\n//#region set up browser mocks / mock spawn\nlet spawn = void 0 as typeof spawnBaseType;\n/* */\n/* */\n \n//#endregion\n\n//#region set up browser mocks / mock rimraf\nlet rimraf = void 0 as typeof rimrafBaseType;\n/* */\n/* */\n \n//#endregion\n\n//#region set up browser mocks / mock chokidar\nlet chokidar = void 0 as typeof chokidarBaseType;\n/* */\n/* */\n \n//#endregion\n\n//#region set up browser mocks / mock mkdirp\nlet mkdirp = void 0 as typeof mkdirpBaseType;\n/* */\n/* */\n \n//#endregion\n\n//#region set up browser mocks / mock ncp\nlet ncp = void 0 as typeof ncpBaseType;\n/* */\n/* */\n \n//#endregion\n\n//#region set up browser mocks / mock ps\nlet ps = void 0 as typeof psBaseType;\n/* */\n/* */\n \n//#endregion\n\n//#region set up browser mocks / mock fg\nlet fg = void 0 as typeof fgBaseType;\n/* */\n/* */\n \n//#endregion\n\n//#endregion\n\n//#region crossPlatformPath\n\n//#region transform unix path to win32 path\n/**\n * transform unix path to win32 path\n */\nconst win32Path = (p: string): string => {\n/* */\n/* */\n/* */\n/* */\n \n if (/^\\/[a-z]\\//.test(p)) {\n p = p.replace(/^\\/[a-z]\\//, `${p.charAt(1).toUpperCase()}:/`);\n }\n return path.win32.normalize(p);\n};\n//#endregion\n\n/**\n * This funciton will replace // to /\n */\nconst crossPlatformPath = (\n pathStringOrPathParts: string | string[],\n): string => {\n if (Array.isArray(pathStringOrPathParts)) {\n pathStringOrPathParts = pathStringOrPathParts.join('/');\n }\n\n if (typeof pathStringOrPathParts !== 'string') {\n return pathStringOrPathParts;\n }\n\n // debugger;\n\n if (\n typeof pathStringOrPathParts === 'string' &&\n /^[A-Z]\\:/.test(pathStringOrPathParts)\n ) {\n pathStringOrPathParts = _.lowerFirst(pathStringOrPathParts);\n }\n\n const isExtendedLengthPath = /^\\\\\\\\\\?\\\\/.test(pathStringOrPathParts);\n const hasNonAscii = /[^\\u0000-\\u0080]+/.test(pathStringOrPathParts); // eslint-disable-line no-control-regex\n if (isExtendedLengthPath) {\n console.warn(`[taon-core][crossPlatformPath]: Path starts with \\\\\\\\,\n this is not supported in crossPlatformPath`);\n if (forceTrace) {\n console.trace(`path: \"${pathStringOrPathParts}\"`);\n }\n }\n\n if (hasNonAscii) {\n const allNonAscii = pathStringOrPathParts.match(/[^\\u0000-\\u0080]+/g) || '';\n Helpers.logWarn(\n `[taon-core][crossPlatformPath]: Path contains non-ascii characters: ${allNonAscii}`,\n );\n Helpers.logWarn(pathStringOrPathParts);\n }\n\n pathStringOrPathParts = (pathStringOrPathParts || '')\n .replace(/\\\\/g, '/')\n .replace(/\\/\\//g, '/')\n .replace(/\\/\\//g, '/'); // TODO probably not needed\n\n let isWindows = false;\n/* */\n/* */\n/* */\n/* */\n \n\n const regexWinPath1 = /^(\\/)[a-zA-Z]\\:/;\n // handle supported gitbash path\n // (nodejs require need to use /c/ instead of c:/)\n if (isWindows && regexWinPath1.test(pathStringOrPathParts)) {\n pathStringOrPathParts = pathStringOrPathParts.slice(1);\n }\n\n // let isUnixLike = !isWindows;\n\n // const regexWinPath2 = /^(\\\\)[a-zA-Z]\\:/;\n // if (isUnixLike && regexWinPath2.test(pathStringOrPathParts)) {\n // console.warn(\n // `[taon-core][crossPlatformPath]: Path starts with \\\\ and not from /`,\n // );\n // console.trace(`path: \"${pathStringOrPathParts}\"`);\n // }\n\n return pathStringOrPathParts;\n};\n//#endregion\n\n//#region exports\nexport {\n _,\n q,\n moment,\n dateformat,\n crossPlatformPath,\n win32Path,\n path,\n chalk,\n json5,\n $,\n glob,\n fse,\n os,\n child_process,\n http,\n https,\n isElevated,\n fkill,\n psList,\n spawn,\n fg,\n chokidar,\n mkdirp,\n ncp,\n rimraf,\n net,\n ps,\n};\n\n//#endregion\n","import type { ChildProcess } from 'child_process';\n\nimport { PackageJson } from 'type-fest';\n\nexport namespace CoreModels {\n //#region package\n export type Package = {\n name: string;\n version?: string;\n installType?: InstalationType;\n };\n //#endregion\n\n //#region npm install options\n export type NpmInstallOptions = {\n pkg?: CoreModels.Package;\n /**\n * false by default\n */\n silent?: boolean;\n /**\n * false by default\n */\n useYarn?: boolean;\n /**\n * false by default\n */\n force?: boolean;\n /**\n * Reason for installing package(s)\n */\n reason?: string;\n /**\n * true by default\n */\n removeYarnOrPackageJsonLock?: boolean;\n /**\n * false by default\n */\n generateYarnOrPackageJsonLock?: boolean;\n /**\n * false by default\n */\n skipRemovingNodeModules?: boolean;\n };\n //#endregion\n\n //#region installation type\n export type InstalationType = '-g' | '--save' | '--save-dev' | 'remove';\n\n export const InstalationTypeArr = ['-g', '--save', '--save-dev'];\n //#endregion\n\n export type ReleaseVersionType = 'major' | 'minor' | 'patch';\n export type PreReleaseVersionTag = 'alpha' | 'beta' | 'rc' | 'next';\n export const NpmSpecialVersions = [\n 'latest',\n 'next',\n 'beta',\n 'alpha',\n 'rc',\n 'lts',\n ];\n\n //#region progress data type\n export type PROGRESS_DATA_TYPE = 'info' | 'error' | 'warning' | 'event';\n //#endregion\n\n //#region environment name\n /**\n * Available application environments.\n */\n export const EnvironmentName = Object.freeze({\n /**\n * Default environment, typically for artifact without application\n * or for storing common data\n */\n __: '__',\n\n /**\n * Local development environment, typically the developer's machine.\n */\n LOCALHOST: 'localhost',\n\n /**\n * Development environment used by engineers to deploy and test new features.\n */\n DEV: 'dev',\n\n /**\n * Staging environment used for final validations before production.\n */\n STAGE: 'stage',\n\n /**\n * Production environment serving live users.\n */\n PROD: 'prod',\n\n /**\n * Automated test environment for running unit, integration, or automated tests.\n */\n TEST: 'test',\n\n /**\n * Quality assurance environment designated for manual and exploratory testing.\n */\n QA: 'qa',\n\n /**\n * Sandbox environment for experimenting and integration without affecting other environments.\n */\n SANDBOX: 'sandbox',\n\n /**\n * User Acceptance Testing environment where clients or stakeholders validate the release candidate.\n */\n UAT: 'uat',\n\n /**\n * Pre-production environment, closely mirroring production for final testing and validation.\n */\n PREPROD: 'preprod',\n\n /**\n * Demonstration environment specifically configured for client presentations and demos.\n */\n DEMO: 'demo',\n\n /**\n * Documentation environment for hosting and managing project documentation.\n */\n DOCS: 'docs',\n\n /**\n * Demonstration environment ONLY html files, typically used for static pages or documentation.\n * This environment is not intended for dynamic content or server-side processing.\n * Perfect to github pages or similar.\n * It is not intended for production use and should not be used for any critical applications or services.\n */\n STATIC_PAGES: 'static-pages',\n\n /**\n * Continuous Integration environment used by CI/CD pipelines for automated builds and deployments.\n */\n CI: 'ci',\n\n /**\n * Training environment dedicated to internal team onboarding and training activities.\n */\n TRAINING: 'training',\n });\n\n export type EnvironmentNameTaon =\n (typeof EnvironmentName)[keyof typeof EnvironmentName];\n\n //#endregion\n\n //#region push type\n export type PUSHTYPE =\n | 'feat'\n | 'chore'\n | 'feature'\n | 'refactor'\n | 'perf'\n | 'styles'\n | 'ci'\n | 'build'\n | 'fix'\n | 'bugfix'\n | 'release'\n | 'docs';\n //#endregion\n\n //#region ui framework\n /**\n * @deprecated\n */\n export type UIFramework = 'bootstrap' | 'material' | 'ionic';\n //#endregion\n\n //#region framework version\n export type FrameworkVersion =\n | 'v1'\n | 'v2'\n | 'v3'\n | 'v4'\n | 'v16'\n | 'v18'\n | 'v19'\n | 'v20'\n | 'v21'\n | 'v22';\n //#endregion\n\n //#region cuttable file exitension\n export type CutableFileExt =\n | 'scss'\n | 'css'\n | 'less'\n | 'sass'\n | 'html'\n | 'ts'\n | 'tsx'\n | 'js';\n //#endregion\n\n //#region file extension\n export type ImageFileExtension = 'jpg' | 'jpeg' | 'png' | 'svg';\n export const ImageFileExtensionArr: CoreModels.ImageFileExtension[] = [\n 'jpg',\n 'jpeg',\n 'png',\n 'svg',\n ];\n //#endregion\n\n //#region file extension\n export type FileExtension =\n | 'json'\n | 'html'\n | ImageFileExtension\n | 'txt'\n | 'md'\n | CutableFileExt;\n //#endregion\n\n //#region http method\n export type HttpMethod =\n | 'get'\n | 'post'\n | 'put'\n | 'delete'\n | 'patch'\n | 'head'\n | 'jsonp';\n //#endregion\n\n //#region http status code\n export type ParamType = 'Path' | 'Query' | 'Cookie' | 'Header' | 'Body';\n //#endregion\n\n //#region ts usage\n export type TsUsage = 'import' | 'export';\n //#endregion\n\n //#region base project type\n export type BaseProjectType =\n | 'typescript'\n | 'angular'\n | 'angular-lib'\n | 'unknown'\n | 'unknown-npm-project';\n //#endregion\n\n //#region base project type arr\n export const BaseProjectTypeArr = [\n 'typescript',\n 'angular',\n 'angular-lib',\n 'unknown',\n 'unknown-npm-project',\n ];\n //#endregion\n\n //#region lib type\n export type LibType =\n | BaseProjectType\n | 'isomorphic-lib' // + https://github.com/maximegris/angular-electron\n | 'container'\n | 'unknown-npm-project';\n //#endregion\n\n //#region new factory type\n /**\n * @deprecated\n */\n export type NewFactoryType = LibType | 'model' | 'single-file-project';\n //#endregion\n\n //#region core lib category\n /**\n * @deprecated\n */\n export type CoreLibCategory = LibType | 'common';\n //#endregion\n\n //#region file event\n export type FileEvent = 'created' | 'changed' | 'removed' | 'rename';\n //#endregion\n\n //#region out folder\n /**\n * @deprecated\n */\n export type OutFolder = 'dist' | 'browser';\n //#endregion\n\n //#region database type\n export type DatabaseType = ':inmemory' | 'mysql' | 'sqljs';\n //#endregion\n\n //#region uploaded backend file\n export interface UploadedBackendFile {\n data:\n | any\n/* */\n/* */\n \n encoding: string;\n md5: string;\n tempFilePath: string;\n mimetype: ContentType;\n mv: (path, callback) => any;\n name: string;\n truncated: boolean;\n }\n //#endregion\n\n //#region execute options process\n /**\n * @deprecated\n */\n export interface ExecuteOptions {\n /** Extract string from line */\n extractFromLine?: (string | Function)[];\n /**\n * Modify output line by line\n */\n outputLineReplace?: (outputLine: string) => string;\n resolvePromiseMsg?: {\n stdout?: string | string[];\n stderr?: string | string[];\n };\n resolvePromiseMsgCallback?: {\n stdout?: () => any;\n stderr?: () => any;\n exitCode?: (exitCode: number) => any;\n };\n prefix?: string;\n detach?: boolean;\n /**\n * Try command again after fail after n miliseconds\n */\n tryAgainWhenFailAfter?: number;\n /**\n * TODO @LAST implement this\n *\n * Output from processe with this key\n * will not be displayed twice when\n * 2 processes are running at the same time\n */\n similarProcessKey?: string;\n\n /**\n * Use big buffer for big webpack logs\n */\n biggerBuffer?: boolean;\n askToTryAgainOnError?: boolean;\n onChildProcessChange?: (childProcess: ChildProcess) => void;\n exitOnErrorCallback?: (code: number) => void;\n /**\n * From displaying in console\n */\n hideOutput?: {\n stdout?: boolean;\n stderr?: boolean;\n acceptAllExitCodeAsSuccess?: boolean;\n };\n outputBuffer?: string[];\n outputBufferMaxSize?: number;\n }\n //#endregion\n\n //#region run options process\n /**\n * @deprecated\n */\n export interface RunOptions extends ExecuteOptions {\n showCommand?: boolean;\n\n /**\n * Show process output\n */\n output?: boolean;\n\n silence?: boolean;\n stdio?: any;\n\n // detached?: boolean;\n cwd?: string;\n }\n //#endregion\n\n //#region mime types / content type\n\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\n export const mimeTypes = {\n '.aac': 'audio/aac',\n '.abw': 'application/x-abiword',\n '.arc': 'application/x-freearc',\n '.avi': 'video/x-msvideo',\n '.azw': 'application/vnd.amazon.ebook',\n '.bin': 'application/octet-stream',\n '.bmp': 'image/bmp',\n '.bz': 'application/x-bzip',\n '.bz2': 'application/x-bzip2',\n '.csh': 'application/x-csh',\n '.css': 'text/css',\n '.csv': 'text/csv',\n '.doc': 'application/msword',\n '.docx':\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n '.eot': 'application/vnd.ms-fontobject',\n '.epub': 'application/epub+zip',\n '.gz': 'application/gzip',\n '.gif': 'image/gif',\n '.htm': 'text/html',\n '.html': 'text/html',\n '.ico': 'image/vnd.microsoft.icon',\n '.ics': 'text/calendar',\n '.jar': 'application/java-archive',\n '.jpeg': 'image/jpeg',\n '.jpg': 'image/jpeg',\n '.js': 'text/javascript',\n '.json': 'application/json',\n '.jsonld': 'application/ld+json',\n '.mid': 'application/midi',\n '.midi': 'application/midi',\n '.mjs': 'text/javascript',\n '.mp3': 'audio/mpeg',\n '.mp4': 'video/mp4',\n '.mpeg': 'video/mpeg',\n '.mpkg': 'application/vnd.apple.installer+xml',\n '.odp': 'application/vnd.oasis.opendocument.presentation',\n '.ods': 'application/vnd.oasis.opendocument.spreadsheet',\n '.odt': 'application/vnd.oasis.opendocument.text',\n '.oga': 'audio/ogg',\n '.ogg': 'audio/ogg',\n '.ogv': 'video/ogg',\n '.ogx': 'application/ogg',\n '.opus': 'audio/opus',\n '.otf': 'font/otf',\n '.png': 'image/png',\n '.pdf': 'application/pdf',\n '.php': 'application/php',\n '.ppt': 'application/vnd.ms-powerpoint',\n '.pptx':\n 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n '.rar': 'application/vnd.rar',\n '.rtf': 'application/rtf',\n '.sh': 'application/x-sh',\n '.svg': 'image/svg+xml',\n '.swf': 'application/x-shockwave-flash',\n '.tar': 'application/x-tar',\n '.tif': 'image/tiff',\n '.tiff': 'image/tiff',\n '.ts': 'video/mp2t',\n '.ttf': 'font/ttf',\n '.txt': 'text/plain',\n '.vsd': 'application/vnd.visio',\n '.wav': 'audio/wav',\n '.weba': 'audio/webm',\n '.webm': 'video/webm',\n '.webp': 'image/webp',\n '.woff': 'font/woff',\n '.woff2': 'font/woff2',\n '.xhtml': 'application/xhtml+xml',\n '.xls': 'application/vnd.ms-excel',\n '.xlsx':\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n '.xml': 'application/xml',\n '.xul': 'application/vnd.mozilla.xul+xml',\n '.zip': 'application/zip',\n '.3gp': 'video/3gpp',\n '.3g2': 'video/3gpp2',\n '.7z': 'application/x-7z-compressed',\n } as const;\n\n export type ContentTypeKeys = keyof typeof mimeTypes;\n export type ContentType =\n | (typeof mimeTypes)[ContentTypeKeys]\n | 'multipart/form-data';\n type ContentType_ = ContentType;\n\n /**\n * https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types\n */\n export type MediaType =\n | 'text'\n | 'image'\n | 'audio'\n | 'font'\n | 'video'\n | 'application'\n | 'multipart'\n | 'message'\n | 'model';\n\n export const MediaTypeAllArr = [\n 'text',\n 'image',\n 'audio',\n 'video',\n 'font',\n 'application',\n 'multipart',\n 'message',\n 'model',\n ] as MediaType[];\n\n export type MimeType = keyof typeof mimeTypes;\n export const MimeTypesObj = mimeTypes;\n //#endregion\n\n //#region pwa\n export interface ManifestIcon {\n src: string; // \"assets/icons/icon-96x96.png\",\n sizes: string; // \"96x96\",\n type: string; // \"image/png\",\n purpose: string; // \"maskable any\"\n }\n\n export interface PwaManifest {\n name: string; // \"app\",\n short_name: string; // \"app\",\n theme_color: string; // \"#1976d2\",\n background_color: string; // \"#fafafa\",\n display: 'standalone';\n scope: string; // \"./\",\n start_url: string; // \"start_url\": \"./\", => \"start_url\" \"https://darekf77.github.io/bs4-breakpoint/\"\n icons: ManifestIcon[];\n }\n //#endregion\n\n //#region vscode\n export interface VSCodeSettings {\n 'files.exclude': { [files: string]: boolean };\n 'workbench.colorTheme': 'Default Light+' | 'Kimbie Dark';\n 'workbench.colorCustomizations': {\n 'activityBar.background'?: string;\n 'activityBar.foreground'?: string;\n 'statusBar.background'?: string;\n };\n }\n //#endregion\n\n //#region position\n /**\n * @deprecated\n */\n export interface Position {\n x: number;\n y: number;\n }\n //#endregion\n\n //#region size\n /**\n * @deprecated\n */\n export interface Size {\n w: number;\n h: number;\n }\n //#endregion\n\n //#region global npm dependency\n interface GlobalNpmDependency {\n name: string;\n installName?: string;\n version?: string | number;\n }\n\n interface GlobalCommandLineProgramDependency {\n name: string;\n website: string;\n version?: string;\n }\n export interface GlobalDependencies {\n npm?: GlobalNpmDependency[];\n programs?: GlobalCommandLineProgramDependency[];\n }\n //#endregion\n\n //#region tsconfig\n interface AngularCompilerOptions {\n fullTemplateTypeCheck: boolean;\n strictInjectionParameters: boolean;\n compilationMode: string;\n preserveSymlinks: boolean;\n enableIvy: boolean;\n }\n\n interface CompilerOptions {\n baseUrl: string;\n outDir: string;\n sourceMap: boolean;\n declaration: boolean;\n strictNullChecks: boolean;\n downlevelIteration: boolean;\n experimentalDecorators: boolean;\n emitDecoratorMetadata: boolean;\n esModuleInterop: boolean;\n module: string;\n moduleResolution: string;\n importHelpers: boolean;\n skipLibCheck: boolean;\n target: string;\n typeRoots: string[];\n types: string[];\n lib: string[];\n paths: { [fullPackageName: string]: string[] };\n useDefineForClassFields: boolean;\n }\n export interface TsConfigJson {\n extends: string;\n exclude: string[];\n compileOnSave: boolean;\n compilerOptions: CompilerOptions;\n angularCompilerOptions: AngularCompilerOptions;\n }\n\n export interface TscCompileOptions {\n cwd: string;\n watch?: boolean;\n outDir?: 'dist';\n generateDeclarations?: boolean;\n tsExe?: string;\n diagnostics?: boolean;\n hideErrors?: boolean;\n debug?: boolean;\n }\n //#endregion\n}\n","//#region imports\nimport { Blob } from 'buffer';\nimport { ChildProcess } from 'child_process';\nimport * as net from 'net';\nimport { promisify } from 'util';\n\nimport axios, { AxiosResponse } from 'axios';\n\nimport { path, _, crossPlatformPath, os, chalk } from './core-imports';\nimport { dateformat } from './core-imports';\nimport { spawn, child_process } from './core-imports';\nimport { fse } from './core-imports';\nimport { CoreModels } from './core-models';\n\nimport { Helpers } from './index';\n//#endregion\n\nconst BLOB_SUPPORTED_IN_SQLJS = false;\n\n//#region utils\nexport namespace Utils {\n //#region utils / uniq array\n export const uniqArray = <T = any>(\n array: any[],\n uniqueProperty?: keyof T,\n ) => {\n var seen = {};\n return array\n .filter(f => !!f)\n .filter(function (item) {\n return seen.hasOwnProperty(uniqueProperty ? item[uniqueProperty] : item)\n ? false\n : (seen[uniqueProperty ? item[uniqueProperty] : item] = true);\n }) as T[];\n };\n //#endregion\n\n //#region utils / recursive sort keys in object\n /**\n * @param anyObject\n * @returns object with sorted keys\n */\n export const sortKeys = (anyObject: any): any => {\n if (_.isArray(anyObject)) {\n return anyObject.map(sortKeys);\n }\n if (_.isObject(anyObject)) {\n return _.fromPairs(\n _.keys(anyObject)\n .sort()\n .map(key => [key, sortKeys(anyObject[key])]),\n );\n }\n return anyObject;\n };\n //#endregion\n\n //#region utils / escape string for reg exp\n /**\n * Example:\n * new RegExp(escapeStringForRegEx('a.b.c'),'g') => /a\\.b\\.c/g\n */\n export const escapeStringForRegEx = (stringForRegExp: string) => {\n return stringForRegExp.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n };\n //#endregion\n\n //#region utils / remove chalk special chars\n export function removeChalkSpecialChars(str: string): string {\n // Regex to match ANSI escape sequences used by Chalk\n const ansiRegex = /\\u001b\\[[0-9;]*m/g;\n\n // Replace all ANSI escape sequences with an empty string\n return str.replace(ansiRegex, '');\n }\n //#endregion\n\n //#region utils / full date time\n export const fullDateTime = () => {\n/* */\n/* */\n return (void 0);\n };\n //#endregion\n\n //#region utils / full date\n export const fullDate = () => {\n/* */\n/* */\n return (void 0);\n };\n //#endregion\n\n //#region utils / get free port\n const takenPorts = [];\n export const getFreePort = async (options?: {\n 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/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n //#endregion\n\n //#region utils / required uncached\n /**\n * Traverses the cache to search for all the cached\n * files of the specified module name\n */\n const searchCache = (moduleName, callback) => {\n/* */\n/* */\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 * Removes a module from the cache\n */\n const purgeCache = moduleName => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n\n export const requireUncached = (module: string) => {\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n\n //#endregion\n\n //#region utils / camelize\n /**\n * similar to camelCase but remove\n * all non word / repeated characters\n */\n export const camelize = (str: string = '') => {\n str = str.replace(/\\W/g, '').toLowerCase();\n return str\n .replace(/(?:^\\w|[A-Z]|\\b\\w)/g, function (word, index) {\n return index == 0 ? word.toLowerCase() : word.toUpperCase();\n })\n .replace(/\\s+/g, '');\n };\n //#endregion\n\n //#region json\n interface AttrJsoncProp {\n name: string;\n value?: any;\n }\n export namespace json {\n export const getAtrributies = (\n jsonDeepPath: string, // lodash path to property in json ex. deep.path.to.prop\n fileContent: string, // jsonc or json5 - json with comments\n ): AttrJsoncProp[] => {\n const lines = fileContent.split('\\n');\n // split path to parts but keep part if is for example 'sql.js\n const pathParts = jsonDeepPath.split('.').reduce((a, b) => {\n if (a.length === 0) {\n return [b];\n }\n const last: string = a[a.length - 1];\n if (\n (last.startsWith(`['`) && b.endsWith(`']`)) ||\n (last.startsWith(`[\"`) && b.endsWith(`\"]`))\n ) {\n a[a.length - 1] = [last, b].join('.');\n } else {\n a.push(b);\n }\n return a;\n }, []);\n // console.log({ pathParts });\n // const pathParts = jsonDeepPath.split('.');\n const keyName = pathParts.pop()!.replace(/^\\[\"(.+)\"\\]$/, '$1');\n let currentPath = '';\n let attributes: AttrJsoncProp[] = [];\n let collectedComments: string[] = [];\n\n for (const line of lines) {\n const trimmedLine = line.trim();\n\n if (trimmedLine.startsWith('//')) {\n // Collect comments\n collectedComments.push(trimmedLine);\n // trimmedLine.startsWith('//pizda') &&\n // console.log('pushlin line', { trimmedLine });\n } else if (trimmedLine.startsWith('\"') || trimmedLine.startsWith(\"'\")) {\n // Extract the key from the line\n const match = trimmedLine.match(/[\"']([^\"']+)[\"']\\s*:/);\n // console.log({ match0: match && match[0], match1: match && match[1] });\n if (match) {\n const key = match[1];\n currentPath = currentPath\n ? `${currentPath}.${key.includes('.') ? `['${key}']` : key}`\n : key;\n // console.log({ key });\n // Check if the current path matches the jsonDeepPath\n if (\n (currentPath.endsWith(keyName) &&\n !currentPath.endsWith('/' + keyName)) ||\n currentPath.endsWith(`['${keyName}']`)\n ) {\n // console.log('extract attributes', {\n // keyName,\n // collectedCommentsLength: collectedComments.length,\n // });\n // Process the collected comments to extract attributes\n attributes = extractAttributesFromComments(collectedComments);\n break;\n }\n\n // Reset collected comments as they only relate to the next key\n collectedComments = [];\n }\n }\n }\n\n return attributes;\n };\n\n const extractAttributesFromComments = (\n comments: string[],\n ): AttrJsoncProp[] => {\n const attributes: AttrJsoncProp[] = [];\n const attrRegex = /@(\\w+)(?:\\s*=\\s*([^\\s@]+))?/g;\n // console.log({ comments });\n for (const comment of comments) {\n let match;\n while ((match = attrRegex.exec(comment)) !== null) {\n const [, name, value] = match;\n\n const existingAttribute = attributes.find(\n attr => attr.name === `@${name}`,\n );\n\n if (existingAttribute) {\n if (value) {\n if (Array.isArray(existingAttribute.value)) {\n existingAttribute.value.push(value);\n } else {\n existingAttribute.value = [existingAttribute.value, value];\n }\n }\n } else {\n attributes.push({\n name: `@${name}`,\n value: value ? value : true,\n });\n }\n }\n }\n\n // Normalize single values not to be arrays\n attributes.forEach(attr => {\n if (Array.isArray(attr.value) && attr.value.length === 1) {\n attr.value = attr.value[0];\n }\n });\n\n return attributes;\n };\n }\n //#endregion\n\n //#region binary\n\n //#region db binary format type\n export enum DbBinaryFormatEnum {\n Blob = 'Blob',\n File = 'File',\n string = 'string',\n/* */\n/* */\n \n }\n\n export type DbBinaryFormatForBrowser = Blob | File | string;\n/* */\n/* */\n \n\n /**\n * Binary format that can be stored in database\n *\n * for nodejs => Buffer\n * for sql.js => string (shoulb be blob - but not supported)\n *\n */\n export type DbBinaryFormat =\n | DbBinaryFormatForBrowser\n/* */\n/* */\n \n //#endregion\n export namespace binary {\n //#region binay utils / array buffer to blob\n //#region @browser\n /**\n * This is for BROWSER ONLY\n *\n * @param buffer\n * @param contentType\n * @returns\n */\n export async function arrayBufferToBlob(\n buffer: ArrayBuffer,\n contentType: CoreModels.ContentType,\n ): Promise<Blob> {\n // @ts-ignore\n return new Blob([buffer], { type: contentType });\n }\n //#endregion\n //#endregion\n\n //#region binay utils / blob to array buffer\n /**\n * This is for BROWSER ONLY\n * @param blob\n * @returns\n */\n export async function blobToArrayBuffer(blob: Blob): Promise<ArrayBuffer> {\n return await new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.addEventListener('loadend', () => {\n resolve(reader.result as any);\n });\n reader.addEventListener('error', reject); // @ts-ignore\n reader.readAsArrayBuffer(blob);\n });\n }\n //#endregion\n\n //#region binay utils / blob to base64 string\n /**\n * it is revers to base64toBlob\n * @param blob\n * @returns\n */\n export function blobToBase64(blob: Blob): Promise<string> {\n return new Promise<any>((resolve, _) => {\n const reader = new FileReader();\n reader.onloadend = () => resolve(reader.result); // @ts-ignore\n reader.readAsDataURL(blob);\n });\n }\n //#endregion\n\n //#region binay utils / base64 string to blob\n /**\n * it is revers to blobToBase64()\n * @param base64Data\n * @returns\n */\n export async function base64toBlob(\n base64Data: string,\n contentTypeOverride?: CoreModels.ContentType,\n ): Promise<Blob> {\n let content_type: CoreModels.ContentType = void 0 as any;\n let file_base64: string = void 0 as any;\n if (!contentTypeOverride) {\n const m = /^data:(.+?);base64,(.+)$/.exec(base64Data);\n if (!m) {\n throw new Error(\n `[taon-framework][base64toBlob] Not a base64 blob [${base64Data}]`,\n );\n }\n // tslint:disable-next-line:prefer-const\n var [__, contenttype, filebase64] = m;\n content_type = contenttype as any;\n file_base64 = filebase64;\n }\n content_type = (\n contentTypeOverride ? contentTypeOverride : content_type || ''\n ) as any;\n base64Data = contentTypeOverride ? base64Data : file_base64;\n const sliceSize = 1024;\n const byteCharacters = atob(base64Data);\n const bytesLength = byteCharacters.length;\n const slicesCount = Math.ceil(bytesLength / sliceSize);\n const byteArrays = new Array(slicesCount);\n\n for (let sliceIndex = 0; sliceIndex < slicesCount; ++sliceIndex) {\n const begin = sliceIndex * sliceSize;\n const end = Math.min(begin + sliceSize, bytesLength);\n\n const bytes = new Array(end - begin);\n // tslint:disable-next-line:one-variable-per-declaration\n for (let offset = begin, i = 0; offset < end; ++i, ++offset) {\n bytes[i] = byteCharacters[offset].charCodeAt(0);\n }\n byteArrays[sliceIndex] = new Uint8Array(bytes);\n }\n return new Blob(byteArrays, { type: content_type });\n }\n //#endregion\n\n //#region binay utils / base64 string to db binary format\n\n export async function base64toDbBinaryFormat(\n text: string,\n ): Promise<DbBinaryFormat> {\n let result: DbBinaryFormat;\n //#region @browser\n result = await (async () => {\n if (BLOB_SUPPORTED_IN_SQLJS) {\n const blob = await base64toBlob(text);\n return blob;\n }\n return text as any;\n })();\n //#endregion\n/* */\n/* */\n/* */\n/* */\n/* */\n \n return result;\n }\n //#endregion\n\n //#region binay utils / db binary format to base64 string\n export async function dbBinaryFormatToBase64(\n binaryFormat: DbBinaryFormat,\n ): Promise<string> {\n let result: string;\n //#region @browser\n result = await (async () => {\n if (BLOB_SUPPORTED_IN_SQLJS) {\n const text = await blobToBase64(binaryFormat as any);\n return text;\n }\n return binaryFormat as any;\n })();\n //#endregion\n\n/* */\n/* */\n/* */\n/* */\n/* */\n \n return result;\n }\n //#endregion\n\n //#region binay utils / base64 string to db binary format\n\n export async function textToDbBinaryFormat(\n text: string,\n ): Promise<DbBinaryFormat> {\n let result: DbBinaryFormat;\n //#region @browser\n result = await (async () => {\n if (BLOB_SUPPORTED_IN_SQLJS) {\n const blob = await textToBlob(text);\n return blob;\n }\n return text as any;\n })();\n //#endregion\n/* */\n/* */\n/* */\n/* */\n/* */\n \n return result;\n }\n //#endregion\n\n //#region binay utils / db binary format to base64 string\n export async function dbBinaryFormatToText(\n binaryFormat: DbBinaryFormat,\n ): Promise<string> {\n let result: string;\n //#region @browser\n result = await (async () => {\n if (BLOB_SUPPORTED_IN_SQLJS) {\n const text = await blobToText(binaryFormat as any);\n return text;\n }\n return binaryFormat as any;\n })();\n //#endregion\n\n/* */\n/* */\n/* */\n/* */\n/* */\n \n return result;\n }\n //#endregion\n\n //#region binay utils / base64 string to nodejs buffer\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n //#endregion\n\n //#region binay utils / nodejs buffer to base64 string\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n //#endregion\n\n //#region binay utils / file to blob\n export async function fileToBlob(file: File) {\n return new Blob([new Uint8Array(await file.arrayBuffer())], {\n type: file.type,\n });\n }\n //#endregion\n\n //#region binay utils / blob to file\n export async function blobToFile(\n blob: Blob,\n nameForFile: string = 'my-file-name',\n ): Promise<File> {\n if (!nameForFile) {\n nameForFile = 'nonamefile' + new Date().getTime();\n }\n // @ts-ignore\n return new File([blob], nameForFile);\n }\n //#endregion\n\n //#region binay utils / nodejs blob to nodejs buffer\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n //#endregion\n\n //#region binay utils / nodejs buffer to nodejs blob\n/* */\n/* */\n/* */\n/* */\n/* */\n \n //#endregion\n\n //#region binay utils / text to nodejs buffer\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n //#endregion\n\n //#region binay utils / nodejs buffer to text\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n //#endregion\n\n //#region binay utils / text to blob\n export async function textToBlob(\n text: string,\n type: CoreModels.ContentType = 'text/plain',\n ): Promise<Blob> {\n const blob = new Blob([text], { type });\n return blob;\n }\n //#endregion\n\n //#region binay utils / blob to text\n export async function blobToText(blob: Blob): Promise<string> {\n return await blob.text();\n }\n //#endregion\n\n //#region binay utils / text to file\n export async function textToFile(\n text: string,\n fileRelativePathOrName: string,\n ): Promise<File> {\n // console.log({ path })\n const ext = path.extname(fileRelativePathOrName);\n\n const type = CoreModels.mimeTypes[ext];\n const blob = new Blob([text], { type });\n const file = await blobToFile(blob, fileRelativePathOrName);\n // console.log({\n // ext,\n // blob, file\n // });\n // debugger\n return file;\n }\n //#endregion\n\n //#region binay utils / file to text\n export async function fileToText(file: File): Promise<string> {\n return await file.text();\n }\n //#endregion\n\n //#region binay utils / json to blob\n export async function jsonToBlob(jsonObj: object): Promise<Blob> {\n const blob = new Blob([JSON.stringify(jsonObj, null, 2)], {\n type: 'application/json',\n });\n return blob;\n }\n //#endregion\n\n //#region binay utils / blob to json\n /**\n * TODO NOT TESTED\n */\n export async function blobToJson(blob: Blob): Promise<string> {\n return JSON.parse(await blob.text());\n }\n //#endregion\n\n //#region binay utils / get blob from url\n export async function getBlobFrom(url: string): Promise<Blob> {\n const response: AxiosResponse<Blob> = await axios({\n url,\n method: 'get',\n responseType: 'blob',\n });\n return response.data;\n }\n //#endregion\n }\n //#endregion\n\n //#region css\n export namespace css {\n //#region css utils / numeric value of pixels\n /**\n *\n * @param pixelsCss pixels ex. 100px\n * @returns\n */\n export function numValue(pixelsCss: string | number): number {\n // tslint:disable-next-line:radix\n return parseInt(\n pixelsCss?.toString()?.replace('px', ''),\n // .replace('pt', '') TOOD handle other types\n // .replace('1rem', '') // to\n );\n }\n //#endregion\n }\n //#endregion\n}\n//#endregion\n\n//#region utils process\nexport namespace UtilsProcess {\n //#region utils process / process start options\n interface ResolvePromiseMsg {\n /**\n * until this string is in output of stdout\n */\n stdout?: string | string[];\n /**\n * until this string is in output of stderr\n */\n stderr?: string | string[];\n /**\n * by default only resolve when exit code is 0\n */\n resolveAfterAnyExitCode?: boolean;\n }\n\n export interface ProcessStartOptions {\n /**\n * by default is process.cwd();\n */\n cwd?: string;\n /**\n * by default is false\n */\n showCommand?: boolean;\n /**\n * Modify output line by line\n */\n outputLineReplace?: (outputLineStderOrStdout: string) => string;\n resolvePromiseMsg?: ResolvePromiseMsg;\n /**\n * Prefix messages output from child_process\n */\n prefix?: string;\n /**\n * Try command again after fail after n milliseconds\n */\n tryAgainWhenFailAfter?: number;\n askToTryAgainOnError?: boolean;\n exitOnErrorCallback?: (code: number) => void;\n /**\n * Use big buffer for big webpack logs\n * (it may slow down smaller processes execution)\n */\n biggerBuffer?: boolean;\n hideOutput?: {\n stdout?: boolean;\n stderr?: boolean;\n };\n }\n //#endregion\n\n //#region utils process / TODO start async\n /**\n * TODO IMPLEMENT\n * start async node process\n */\n export const startAsync = async (\n command: string,\n cwd: string,\n // options?: ProcessStartOptions, // TODO change to this\n options?: Omit<CoreModels.ExecuteOptions, 'tryAgainWhenFailAfter'>,\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/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\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 utils process / TODO start sync\n // /**\n // * TODO IMPLEMENT\n // */\n // export function startSync(command: string, options?: ProcessStartOptions) {\n // TODO @LAST\n // }\n //#endregion\n\n //#region utils process / start async child process command until\n /**\n * This let you start child process and resolve promise when some\n * condition is met. It is useful for example when you want to start\n * process and wait until some output is in stdout or stderr.\n */\n export const startAsyncChildProcessCommandUntil = async (\n command: string,\n options: {\n /**\n * tels when to resolve promise\n */\n untilOptions: ResolvePromiseMsg;\n displayOutputInParentProcess?: boolean;\n resolveAfterAnyExitCode?: boolean;\n cwd?: string;\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 return (void 0);\n };\n //#endregion\n\n //#region utils process / get git bash path\n export const getGitBashPath = () => {\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 utils process / start process in new graphical terminal window\n /**\n * TODO IMPLEMENT\n * start async node process\n */\n export const startInNewTerminalWindow = (\n command: string,\n options?: Pick<ProcessStartOptions, 'cwd' | 'hideOutput'>,\n ) => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\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 utils process / get bash or shell name\n export const getBashOrShellName = ():\n | 'browser'\n | 'cmd'\n | 'powershell'\n | 'gitbash'\n | 'cygwin'\n | 'unknown'\n | 'bash'\n | 'zsh'\n | 'fish'\n | 'sh' => {\n //#region @browser\n return 'browser';\n //#endregion\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\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 /**\n * Get CPU and memory usage for a single PID.\n */\n export const getUsageForPid = async (\n pid: number,\n ): Promise<{ cpu: number; memoryInGB: number; memoryInMB: number }> => {\n/* */\n/* */\n/* */\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 * Return a list of direct child PIDs for the given PID on a Unix-like system.\n * Uses `ps -o pid= --ppid <pid>` to find child processes.\n */\n async function getChildPidsUnix(pid: number): Promise<number[]> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n /**\n * Return a list of direct child PIDs for the given PID on Windows.\n * Uses `wmic process where (ParentProcessId=<pid>) get ProcessId` to find child processes.\n */\n async function getChildPidsWindows(pid: number): Promise<number[]> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n /**\n * Cross-platform function to list *direct* child PIDs of a given PID.\n * Uses the appropriate command depending on `process.platform`.\n */\n export async function getChildPidsOnce(pid: number): Promise<number[]> {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n /**\n * Get CPU and memory usage for the current process (the Node.js process itself),\n * plus any child processes spawned by it.\n */\n export const getCurrentProcessAndChildUsage = async (): Promise<{\n current: { cpu: number; memoryInMB: number };\n children: Array<{ pid: number; cpu: number; memoryInMB: 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 return (void 0);\n };\n}\n\n//#endregion\n\n//#region utils os\nexport namespace UtilsOs {\n //#region utils os / is running in browser\n /**\n * check if script is running in client browser\n * (websql model -> is also considered as browser\n * because it is running in browser)\n */\n export const isRunningInBrowser = (): boolean => {\n/* */\n/* */\n \n return true;\n };\n //#endregion\n\n //#region utils os / is running in node\n /**\n * check if script is running in nodejs\n * (backend script or electron script)\n */\n export const isRunningInNode = (): boolean => {\n/* */\n/* */\n \n return false;\n };\n //#endregion\n\n //#region utils os / is running in websql\n /**\n * check if script is running special\n * browser mode that has sql.js backend\n * and executes sql queries in browser\n */\n export const isRunningInWebSQL = (): boolean => {\n/* */\n/* */\n \n\n/* */\n/* */\n \n return false;\n };\n //#endregion\n\n //#region utils os / is running in electron\n /**\n * check whether the current process is running inside\n * Electron backend or browser.\n */\n export const isRunningInElectron = (): boolean => {\n // Renderer process\n // @ts-ignore\n if (\n typeof window !== 'undefined' &&\n typeof window.process === 'object' &&\n // @ts-ignore\n window.process.type === 'renderer'\n ) {\n return true;\n }\n\n // Main process\n // @ts-ignore\n if (\n typeof process !== 'undefined' &&\n typeof process.versions === 'object' &&\n !!process.versions.electron\n ) {\n return true;\n }\n\n // Detect the user agent when the `nodeIntegration` option is set to false\n if (\n typeof navigator === 'object' &&\n typeof navigator.userAgent === 'string' &&\n navigator.userAgent.indexOf('Electron') >= 0\n ) {\n return true;\n }\n\n return false;\n };\n //#endregion\n\n //#region utils os / is running in vscode extension\n /**\n * Check whether the current process is running inside\n * a Visual Studio Code extension.\n */\n export const isRunningInVscodeExtension = (): boolean => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n return false;\n };\n //#endregion\n\n //#region utils os / is running in wsl\n /**\n * Check wether the current process is running inside\n * windows subsystem for linux (WSL).\n */\n export const isRunningInWsl = (): boolean => {\n //#region @browser\n return false;\n //#endregion\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 utils os / is running in windows / powershell / cmd\n const getProcessTree = (): Record<\n number,\n { pid: number; ppid: number; 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/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n\n const findAncestorProcessName = (targets: string[]): string | undefined => {\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 isRunningInWindowsPowerShell = (): boolean => {\n return (\n findAncestorProcessName(['powershell.exe', 'pwsh.exe']) !== undefined\n );\n };\n\n export const isRunningInWindowsCmd = (): boolean => {\n return findAncestorProcessName(['cmd.exe']) !== undefined;\n };\n //#endregion\n\n //#region utils os / is running in docker\n export const isRunningInDocker = (): boolean => {\n //#region @browser\n return false;\n //#endregion\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n //#endregion\n\n //#region utils os / is running in linux graphics capable environment\n export const isRunningInLinuxGraphicsCapableEnvironment = (): boolean => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n //#endregion\n\n //#region utils os / is running in cli mode\n /**\n * Check whether the current process is running in CLI mode.\n */\n export const isRunningInCliMode = (): boolean => {\n //#region @browser\n return false;\n //#endregion\n/* */\n/* */\n return (void 0);\n };\n //#endregion\n\n //#region utils os / is running in mocha test\n /**\n * Check whether the current process is running in mocha test.\n */\n export const isRunningInMochaTest = (): boolean => {\n //#region @browser\n return false;\n //#endregion\n/* */\n/* */\n return (void 0);\n };\n //#endregion\n\n //#region utils os / is port in use\n const isPortInUseOnHost = (port: number, host: 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 return (void 0);\n };\n\n /**\n * Checks if a given port is already in use (bound by another process).\n *\n * @param port - The port number to check.\n * @param host - The hostname or IP address to bind to (default: '127.0.0.1').\n * @returns Promise<boolean> - Resolves to `true` if the port is in use, otherwise `false`.\n */\n export const isPortInUse = async (\n port: number,\n options?: {\n /**\n * '127.0.0.1' etc..\n */\n checkForSpecificOnlyHost?: string;\n },\n ): Promise<boolean> => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n };\n //#endregion\n\n export const isElectron = isRunningInElectron();\n export const isBrowser = isRunningInBrowser();\n export const isNode = isRunningInNode();\n export const isWebSQL = isRunningInWebSQL();\n export const isVscodeExtension = isRunningInVscodeExtension();\n}\n//#endregion\n\n//#region utils string\nexport namespace UtilsString {\n //#region utils string / kebab case no split numbers\n export const kebabCaseNoSplitNumbers = (input: string): string => {\n return (\n input\n // Match spaces or any kind of whitespace and replace with a hyphen\n .replace(/\\s+/g, '-')\n // Match uppercase letters and replace them with a hyphen and the lowercase version of the letter\n .replace(/([a-z0-9])([A-Z])/g, '$1-$2')\n // Convert everything to lowercase\n .toLowerCase()\n );\n };\n //#endregion\n}\n//#endregion\n\n//#region utils migrations\n/**\n * Taon migration utilities\n */\nexport namespace UtilsMigrations {\n export const getTimestampFromClassName = (\n className: string,\n ): number | undefined => {\n const [maybeTimestamp1, maybeTimestamp2] = className.split('_') || [];\n // console.log({ maybeTimestamp1, maybeTimestamp2 });\n const timestamp1 = parseInt(maybeTimestamp1);\n const timestamp2 = parseInt(maybeTimestamp2);\n const timestamp = !_.isNaN(timestamp1) ? timestamp1 : timestamp2;\n return isValidTimestamp(timestamp) ? timestamp : void 0;\n };\n\n export const getFormattedTimestampFromClassName = (\n className: string,\n ): string | undefined => {\n const timestamp = getTimestampFromClassName(className);\n if (!timestamp) {\n return void 0;\n }\n return formatTimestamp(timestamp);\n };\n\n export const formatTimestamp = (timestamp: number): string => {\n const dateFromTimestamp: Date = new Date(timestamp);\n return `${dateformat(dateFromTimestamp, 'dd-mm-yyyy HH:MM:ss')}`;\n };\n\n export const isValidTimestamp = (value: any): boolean => {\n if (typeof value !== 'number') {\n return false; // Must be a number\n }\n\n const minTimestamp = 0; // Minimum possible timestamp (Unix epoch)\n const maxTimestamp = 8640000000000000; // Max safe timestamp in JS (represents year ~275760)\n\n return value >= minTimestamp && value <= maxTimestamp;\n };\n}\n//#endregion\n\n//#region utils terminal\nexport namespace UtilsTerminal {\n //#region models\n export interface SelectChoice {\n /**\n * Title of the choice\n */\n name?: string;\n disabled?: boolean;\n }\n\n export interface SelectChoiceValue<T = string> extends SelectChoice {\n value?: T;\n }\n\n type SelectActionChoice = {\n [choice: string]: SelectChoice & {\n /**\n * Action to execute\n */\n action?: () => any;\n };\n };\n //#endregion\n\n //#region wait\n export const wait = (second: number): Promise<void> => {\n return new Promise((resolve, reject) => {\n setTimeout(() => {\n resolve(void 0);\n }, second * 1000);\n });\n };\n //#endregion\n\n //#region clear\n export const clearConsole = (): void => {\n/* */\n/* */\n/* */\n return (void 0);\n // TODO @LAST\n // let shouldClear = true;\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n\n //#region @browser\n // const isDevToolsOpen = (() => {\n // const threshold = 160; // devtools resizing causes this to be larger\n // return (\n // window.outerHeight - window.innerHeight > threshold ||\n // window.outerWidth - window.innerWidth > threshold\n // );\n // })();\n\n // if (isDevToolsOpen) {\n // shouldClear = false;\n // }\n //#endregion\n // if (shouldClear) {\n // Helpers.msgCacheClear?.();\n // console.clear?.();\n // }\n // console.log('\\x1Bc');\n // process.stdout.write('\\033c\\033[3J');\n // try {\n // run('clear').sync()\n // } catch (error) {\n // console.log('clear console not succedd')\n // }\n };\n //#endregion\n\n //#region transform choices\n const transformChoices = (choices: any): SelectChoiceValue[] => {\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 multiselect\n export const multiselect = async <T = string>(options: {\n question: string;\n /**\n * If true, then only one choice can be selected\n * @deprecated use select instead\n */\n onlyOneChoice?: boolean;\n choices: SelectChoiceValue<T>[] | { [choice: string]: SelectChoice };\n autocomplete?: boolean;\n defaultSelected?: 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/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\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 select and execute\n /**\n * Similar to select but executes action if provided\n * @returns selected and executed value\n */\n export const multiselectActionAndExecute = async <\n CHOICE extends SelectActionChoice = SelectActionChoice,\n >(\n choices: CHOICE,\n options?: {\n question?: string;\n autocomplete?: boolean;\n defaultSelected?: string;\n hint?: string;\n executeActionsOnDefault?: 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 return (void 0);\n };\n //#endregion\n\n //#region select and execute\n /**\n * Similar to select but executes action if provided\n * @returns selected and executed value\n */\n export const selectActionAndExecute = async <\n CHOICE extends SelectActionChoice = SelectActionChoice,\n >(\n choices: CHOICE,\n options?: {\n question?: string;\n autocomplete?: boolean;\n defaultSelected?: string;\n hint?: string;\n executeActionOnDefault?: 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 return (void 0);\n };\n //#endregion\n\n //#region select\n export const select = async <T = string>(options: {\n question: string;\n choices: SelectChoiceValue<T>[] | { [choice: string]: SelectChoice };\n autocomplete?: boolean;\n defaultSelected?: string;\n hint?: 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/* */\n/* */\n/* */\n/* */\n/* */\n/* */\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 pipe enter to stdin\n export const pipeEnterToStdin = (): void => {\n/* */\n/* */\n return (void 0);\n };\n //#endregion\n\n //#region input\n export const input = async ({\n defaultValue,\n question,\n required, // TODO something is werid with required\n }: {\n defaultValue?: string;\n question: string;\n required?: boolean;\n validate?: (value: string) => boolean;\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 confirm\n export const confirm = async (options?: {\n /**\n * default: Are you sure?\n */\n message?: string;\n callbackTrue?: () => any;\n callbackFalse?: () => any;\n /**\n * default: true\n */\n defaultValue?: boolean;\n engine?: 'inquirer-toggle' | 'prompts' | 'enquirer' | '@inquirer/prompts';\n }) => {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\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 any key to continue\n export const pressAnyKeyToContinueAsync = (options?: {\n message?: string;\n }): 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 press any key\n /**\n * @deprecated use UtilsTerminal.pressAnyKeyToContinueAsync()\n */\n export const pressAnyKey = (options?: { 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 return (void 0);\n };\n //#endregion\n\n //#region preview long list as select\n export const previewLongList = async (\n list: string | string[],\n listName = 'List',\n ): 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 preview long list with 'less' (git log like)\n /**\n * Displays a long list in the console using a pager like `less`.\n * Returns a Promise that resolves when the user exits the pager.\n *\n * @param {string} list - The long string content to display.\n * @returns {Promise<void>} A Promise that resolves when the pager exits.\n */\n export const previewLongListGitLogLike = (\n list: string | 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 return (void 0);\n };\n //#endregion\n}\n//#endregion\n","import { UtilsOs } from './utils';\n\nexport class HelpersIsomorphic {\n /**\n * @deprecated\n * use UtilsOs.isRunningInBrowser() instead\n */\n get isBrowser() {\n return UtilsOs.isRunningInBrowser();\n }\n\n /**\n * @deprecated\n * use UtilsOs.isRunningInWebSQL() instead\n */\n get isWebSQL() {\n return UtilsOs.isRunningInWebSQL();\n }\n\n /**\n * @deprecated\n * use UtilsOs.isRunningInNode() instead\n */\n get isNode() {\n return UtilsOs.isRunningInNode();\n }\n\n /**\n * @deprecated\n * use UtilsOs.isRunningInElectron() instead\n */\n get isElectron() {\n return UtilsOs.isRunningInElectron();\n }\n\n /**\n * TODO what is the purpose of this function?\n * @deprecated\n */\n contain(arr: any[], item: any): boolean {\n return (\n arr.filter(l => {\n if (l instanceof RegExp) {\n return l.test(item);\n }\n if (l === item) {\n return true;\n }\n if (\n item.match && typeof item.match === 'function' ? item.match(l) : false\n ) {\n return true;\n }\n return false;\n }).length > 0\n );\n }\n}\n","\ndeclare const global: any;\nimport { chalk, dateformat } from './core-imports';\nimport { _ } from './core-imports';\nimport { frameworkName } from './framework-name';\nimport { HelpersIsomorphic } from './helpers-isomorphic';\nimport { PROGRESS_DATA } from './progress-data';\n\nimport { Helpers } from './index';\n\n// TODO handle global.testMode ?\n\nconst KEY = {\n LAST_ERROR: Symbol(),\n LAST_INFO: Symbol(),\n LAST_WARN: Symbol(),\n LAST_LOG: Symbol(),\n LAST_SUCCESS: Symbol(),\n LAST_TASK_STARTED: Symbol(),\n LAST_TASK_DONE: Symbol(),\n};\n\nconst KEY_COUNT = {\n LAST_ERROR: Symbol(),\n LAST_INFO: Symbol(),\n LAST_WARN: Symbol(),\n LAST_LOG: Symbol(),\n LAST_SUCCESS: Symbol(),\n LAST_TASK_STARTED: Symbol(),\n LAST_TASK_DONE: Symbol(),\n};\n\nconst KEY_IMPORTANTCE = {\n LAST_ERROR: Symbol(),\n LAST_INFO: Symbol(),\n LAST_WARN: Symbol(),\n LAST_LOG: Symbol(),\n LAST_SUCCESS: Symbol(),\n LAST_TASK_STARTED: Symbol(),\n LAST_TASK_DONE: Symbol(),\n};\n\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n\nconst LIMIT = 10;\n\n//#region transformData\n/**\n * @param details any data to be transformed\n * @returns string ready to be displayed\n */\nconst transformData = (details: any): string => {\n if (typeof details === 'object') {\n // if (Array.isArray(details)) {\n // return details.join('\\n');\n // }\n try {\n const json = JSON.stringify(details, null, 2);\n details = json;\n } catch (error) {\n return details;\n }\n }\n return details;\n};\n//#endregion\n\nexport class HelpersMessages extends HelpersIsomorphic {\n msgCacheClear() {\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n\n renderError(err: Error) {\n if (this.isBrowser) {\n // TODO for FE\n console.error(err);\n } else {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n }\n\n /**\n * throw error\n */\n throw(details: string) {\n throw new Error(details);\n }\n\n /**\n * throw error and stop application\n * @param details\n */\n stopApplication(details: string) {\n if (this.isBrowser) {\n //#region @browser\n document.body.innerHTML =\n '<h1>Application has encountered an error and stopped.</h1>';\n document.body.style.pointerEvents = 'none';\n //#endregion\n/* */\n/* */\n/* */\n/* */\n \n }\n throw new Error(details);\n }\n\n tryCatchError(error: any) {\n Helpers.error(error, true, true);\n }\n\n error(details: any, noExit = false, noTrace = false) {\n //#region browser mode\n if (Helpers.isBrowser) {\n console.error(details);\n return;\n }\n //#endregion\n\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\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 info\n info(details: string, repeatable = false) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n if (Helpers.isBrowser) {\n console.info(details);\n return;\n }\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\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 info\n success(details: any | string) {\n if (Helpers.isBrowser) {\n console.info(details);\n return;\n }\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\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 /**\n *\n * @param details\n * @param isLogTask is less important log task\n * @returns\n */\n taskStarted(details: any | string, isLogTask: boolean = false) {\n if (Helpers.isBrowser) {\n console.info(details);\n return;\n }\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\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 taskDone(details?: any | string, isLessImportant = false) {\n if (Helpers.isBrowser) {\n console.info(details);\n return;\n }\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\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 get isVerboseMode() {\n //#region @browser\n return true; // TODO what it means in browser\n //#endregion\n/* */\n/* */\n \n }\n\n //#region log\n /**\n * log messages only available in verbose mode\n */\n log(details: any, debugLevel = 0) {\n if (Helpers.isBrowser) {\n console.log(details);\n return;\n }\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\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 /**\n * Logs not visible in normal use of taon-cli\n */\n logSuccess(details: any | string) {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n /**\n * Logs not visible in normal use of taon-cli\n */\n logInfo(details: string, repeatable = false) {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n /**\n * Logs not visible in normal use of taon-cli\n */\n logError(details: any, noExit = false, noTrace = false) {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n /**\n * Logs not visible in normal use of taon-cli\n */\n logWarn(details: string, trace = false) {\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n\n //#region warn\n warn(details: string, trace = false) {\n if (Helpers.isBrowser) {\n console.warn(details);\n return;\n }\n\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\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 import\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n//#region @browser\nimport { Subject, Subscription } from 'rxjs';\n//#endregion\nimport { _, path, crossPlatformPath } from './core-imports';\nimport { UtilsProcess, UtilsTerminal } from './utils';\nimport { Helpers, Utils, UtilsOs } from './index';\nimport { HelpersMessages } from './helpers-messages';\nimport { CoreModels } from './core-models';\n\nimport type { ChildProcess } from 'child_process';\n//#endregion\n\n//#region constants\ndeclare const global: any;\nconst encoding = 'utf8';\n/* */\n/* */\n \nconst WEBSQL_PROC_MOCK_PROCESSES_PID = {};\nconst WEBSQL_PROC_MOCK_PROCESSES_PPID = {};\n\n//#endregion\n\n//#region models\nexport interface RunSyncOrAsyncOptions {\n functionFn: Function;\n context?: object;\n arrayOfParams?: any[];\n}\n\nexport interface CommandOutputOptions {\n biggerBuffer?: boolean;\n showOnlyLastLine?: boolean;\n showStder?: boolean;\n gatherColors?: boolean;\n showErrorWarning?: boolean;\n}\n//#endregion\n\n// TODO UNCOMMENT\n// const globalProcessStdout = {};\n// const globalProcessStder = {};\n// const maxProcessHistoryLinesChekc = 20;\n\nexport class HelpersCore extends HelpersMessages {\n //#region singleton\n private static _instanceCore: HelpersCore;\n public static get InstanceCore() {\n if (!HelpersCore._instanceCore) {\n HelpersCore._instanceCore = new HelpersCore();\n }\n return HelpersCore._instanceCore;\n }\n //#endregion\n\n //#region fields / getters\n/* */\n/* */\n \n readonly bigMaxBuffer = 2024 * 500;\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 constructor\n constructor() {\n super();\n/* */\n/* */\n/* */\n \n }\n //#endregion\n\n //#region methods / is wsl\n /**\n * @deprecated use UtilsOs.isRunningInsideWsl()\n */\n get isWsl() {\n return UtilsOs.isRunningInWsl();\n }\n //#endregion\n\n //#region methods / is running in docker\n /**\n * @deprecated use UtilsOs.isRunningInDocker\n */\n isRunningInDocker() {\n return UtilsOs.isRunningInDocker();\n }\n //#endregion\n\n //#region methods / is running in docker\n /**\n * @deprecated use UtilsOs.isRunningInLinuxGraphicEnvironment\n */\n isRunningInLinuxGraphicsCapableEnvironment() {\n return UtilsOs.isRunningInLinuxGraphicsCapableEnvironment();\n }\n //#endregion\n\n //#region clear console\n /**\n * @deprecated use UtilsTerminal.clearConsole\n */\n clearConsole() {\n return UtilsTerminal.clearConsole();\n }\n //#endregion\n\n //#region methods / media from type\n mediaTypeFromSrc(src: string): CoreModels.MediaType {\n const ext = path.extname(src);\n const media = CoreModels.mimeTypes[ext];\n return _.first(media?.split('/'));\n }\n //#endregion\n\n //#region methods / sleep\n sleep(seconds = 1) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods / remove if exists\n removeIfExists(absoluteFileOrFolderPath: 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 //#endregion\n\n //#region methods / relative\n /**\n * path.relative that return cross platform path\n */\n relative(cwd: string, to: string) {\n return crossPlatformPath(path.relative(cwd, to));\n }\n //#endregion\n\n //#region methods / remove file if exists\n removeFileIfExists(absoluteFilePath: string | string[]) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods / remove folder if exists\n removeFolderIfExists(absoluteFolderPath: string | 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 methods / remove empty line from string\n /**\n * leave max 1 empty line\n */\n removeEmptyLineFromString(str: string) {\n const lines = (str || '').split('\\n');\n let previousWasEmpty = false;\n\n return lines\n .filter(line => {\n if (line.trim() === '') {\n if (previousWasEmpty) {\n // Skip this line because the previous line was also empty\n return false;\n } else {\n // Allow this line, but set flag that next empty line should be skipped\n previousWasEmpty = true;\n return true;\n }\n } else {\n // Reset flag if the line is not empty\n previousWasEmpty = false;\n return true;\n }\n })\n .join('\\n');\n }\n //#endregion\n\n //#region methods / try remove empty dir\n /**\n * @deprecated\n */\n tryRemoveDir(\n dirpath: string,\n contentOnly = false,\n omitWarningNotExisted = 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 return (void 0);\n }\n //#endregion\n\n //#region methods / remove file or folder\n\n removeSymlinks(\n dirPath: string | string[],\n options?: {\n dryRun?: 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 return (void 0);\n }\n\n // /**\n // * TODO replacement for remove/rimraf.sync\n // * save remove file or folder\n // */\n // safeRemove(\n // targetPath: string,\n // options?: {\n // // usePattern?: boolean;\n // },\n // ): void {\n // targetPath = crossPlatformPath(targetPath);\n // try {\n // const stats = fse.lstatSync(targetPath);\n\n // if (stats.isSymbolicLink()) {\n // // Remove the symlink without following it\n // fse.unlinkSync(targetPath);\n // } else if (stats.isDirectory()) {\n // // Recursively remove directory contents\n // const entries = fse.readdirSync(targetPath);\n // for (const entry of entries) {\n // this.safeRemove(crossPlatformPath([targetPath, entry]), options);\n // }\n // fse.rmdirSync(targetPath);\n // } else {\n // // Remove file\n // fse.unlinkSync(targetPath);\n // }\n // } catch (err) {\n // console.error(`Error removing ${targetPath}:`, err);\n // }\n // }\n\n /**\n * @deprecated use safeRemove\n */\n remove(fileOrFolderPathOrPatter: string | string[], exactFolder = false) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods / clean exit process\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n //#endregion\n\n //#region methods / is running in git bash\n get isRunningInGitBash(): boolean {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods / check if projects is running in supported terminal\n /**\n * Check if the current shell is supported by Taon framework.\n */\n get isSupportedTaonTerminal(): boolean {\n //#region @browser\n return false;\n //#endregion\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods / check if function is class\n /**\n * check if function is class\n */\n isClass(funcOrClass: any): boolean {\n let isClass = false;\n if (typeof funcOrClass === 'function') {\n // Check if it has a prototype property\n // console.log('Object.getOwnPropertyNames(funcOrClass.prototype)', Object.getOwnPropertyNames(funcOrClass.prototype).filter(f => f !== 'constructor'))\n isClass =\n !!funcOrClass.prototype &&\n Object.getOwnPropertyNames(funcOrClass.prototype).filter(\n f => f !== 'constructor',\n ).length > 0;\n }\n // console.log('is class: ' + isClass, funcOrClass)\n return isClass;\n }\n //#endregion\n\n //#region methods / is blob\n /**\n * check if data is nodejs/browser blob\n *\n * @param maybeBlob\n * @returns\n */\n public isBlob(maybeBlob): maybeBlob is Blob {\n // TODO is this needed hmmmm\n return maybeBlob instanceof Blob; // || toString.call(maybeBlob) === '[object Blob]';\n }\n //#endregion\n\n //#region methods / is buffer\n /**\n * Check if data is nodejs buffer\n *\n * @param maybeNodejsBuffer\n * @returns\n */\n/* */\n/* */\n/* */\n/* */\n \n //#endregion\n\n //#region methods / remove slash at the end of string\n public removeSlashAtEnd(s: string): string {\n s = s?.endsWith(`/`) ? s.slice(0, s.length - 1) : s;\n return s;\n }\n //#endregion\n\n //#region methods / remove slash at the begin of string\n public removeSlashAtBegin(s: string): string {\n s = s?.startsWith(`/`) ? s.slice(1) : s;\n return s;\n }\n //#endregion\n\n //#region methods / stringify object pretty format\n /**\n * stringify to pretty json string\n */\n public stringify(inputObject: any): string {\n // if (_.isString(inputObject)) {\n // return inputObject;\n // }\n // if (_.isObject(inputObject)) {\n // config.log(inputObject)\n // Helpers.error(`[tnp-helpers] trying to stringify not a object`, false, true);\n // }\n return JSON.stringify(inputObject, null, 2);\n }\n //#endregion\n\n //#region methods / run sync or async\n public async runSyncOrAsync<FUNCTION_RETURN_TYPE = any>(\n fnOrOptions: RunSyncOrAsyncOptions,\n ): Promise<FUNCTION_RETURN_TYPE> {\n if (_.isUndefined(fnOrOptions)) {\n return void 0 as any;\n }\n let promisOrValue: any;\n // const optionsMode = _.isObject(fnOrOptions)\n // && !_.isArray(fnOrOptions)\n // && !_.isFunction(fnOrOptions)\n // && !_.isNil(fnOrOptions)\n // ;\n\n // if (optionsMode) {\n const { functionFn, context, arrayOfParams } = fnOrOptions;\n promisOrValue = functionFn.apply(context, arrayOfParams);\n // } else {\n // // @ts-ignore\n // promisOrValue = _.isArray(fnOrOptions) ? fnOrOptions[1][fnOrOptions[0]](...firstArg) : fnOrOptions(...firstArg);\n // }\n // let wasPromise = false;\n\n if (promisOrValue instanceof Promise) {\n // wasPromise = true;\n promisOrValue = Promise.resolve(promisOrValue);\n }\n // console.log('was promis ', wasPromise)\n return promisOrValue;\n }\n //#endregion\n\n //#region methods / create symlink\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\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 / mkdirp\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\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 / is symlink that matches url\n /**\n * symlink may have existed or unexisted destiantion url\n * @param destUrl M\n */\n public isSymlinkThatMatchesUrl(\n possibleSymlink: string,\n destUrl: string,\n absoluteFileMatch = false,\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 return (void 0);\n }\n //#endregion\n\n //#region methods / is symlink file existed or unexisted\n public isSymlinkFileExitedOrUnexisted(filePath: string | string[]): boolean {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods / is unexisted link\n /**\n * If symbolnk link that target file does not exits\n */\n isUnexistedLink(filePath: string | 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 //#endregion\n\n //#region methods / is exited symlink\n /**\n * @param existedLink check if source of link exists\n */\n isExistedSymlink(filePath: string | string[]): 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 methods / path contain link\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 / exists\n public exists(\n folderOrFilePath: string | string[],\n // , allowUnexistedLinks = 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 return (void 0);\n }\n //#endregion\n\n //#region methods / fix command\n /**\n * this is HACK for running procesess inside processes\n */\n public _fixCommand(command: string): string {\n if (\n (command.startsWith('tnp ') || command.startsWith('taon ')) && // TODO every cli projects here that uses run and need to kill process easly!\n command.search('-spinner=false') === -1 &&\n command.search('-spinner=off') === -1\n ) {\n command = `${command} -spinner=false`;\n }\n\n if (\n global.skipCoreCheck &&\n (command.startsWith('tnp ') || command.startsWith('taon '))\n ) {\n command = `${command} --skipCoreCheck`;\n }\n return command;\n }\n //#endregion\n\n //#region methods / command\n public command(command: string) {\n // console.log({ command })\n command = Helpers._fixCommand(command);\n\n return {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\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 / wait\n /**\n * @deprecated use UtilsTerminal.wait\n */\n public async wait(second: number): Promise<void> {\n await UtilsTerminal.wait(second);\n }\n\n public async timeout(seconds: number): Promise<void> {\n return await Helpers.wait(seconds);\n }\n\n //#endregion\n\n //#region methods / command output as string async\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\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 / command output as 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 //#endregion\n\n //#region methods / kill process by port\n async killProcessByPort(\n portOrPortsToKill: number | number[],\n options?: {\n silent?: 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 return (void 0);\n }\n //#endregion\n\n //#region methods / kill on port\n async killOnPort(\n portOrPortsToKill: number | number[],\n options?: {\n silent?: boolean;\n },\n ) {\n return await Helpers.killProcessByPort(portOrPortsToKill, options);\n }\n //#endregion\n\n //#region methods / kill process\n public killProcess(byPid: 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 //#endregion\n\n //#region methods / run\n public run(command: string, options?: CoreModels.RunOptions) {\n command = Helpers._fixCommand(command);\n\n // console.log({ command })\n\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n return {\n /**\n * start command as synchronous nodej proces\n */\n\n sync() {\n // TODO buffer\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\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 * start command as asynchronous nodej proces\n * @param detach (default: false) - if true process will be detached\n */\n async(\n detach = false,\n //#region @browser\n mockFun?: (\n stdoutCallback: (dataForStdout: any) => any,\n stdErrcCallback: (dataForStder: any) => any,\n shouldProcesBeDead?: () => boolean,\n ) => Promise<number> | number,\n //#endregion\n ): ChildProcess {\n //#region websqlFunc\n //#region mock of process\n //#region @browser\n if (mockFun) {\n const subStdoutSub = new Subject();\n const subStderSub = new Subject();\n const exitSub = new Subject();\n const subscribtions: Subscription[] = [];\n\n const procDummy = {\n stdout: {\n on(action: 'data', stdoutCallback: any) {\n if (action == 'data') {\n subscribtions.push(\n subStdoutSub.subscribe(d => {\n stdoutCallback(d);\n }),\n );\n }\n },\n },\n stderr: {\n on(action: 'data', stdoutCallback: any) {\n if (action == 'data') {\n subscribtions.push(\n subStderSub.subscribe(d => {\n stdoutCallback(d);\n }),\n );\n }\n },\n },\n on(action: 'exit', exitFun: any) {\n if (action == 'exit') {\n subscribtions.push(\n exitSub.subscribe(d => {\n exitFun(d);\n }),\n );\n }\n }, // @ts-ignore\n ppid: void 0 as number, // @ts-ignore\n pid: void 0 as number,\n };\n\n procDummy.pid = Math.round(Math.random() * (1000 - 100)) + 100;\n procDummy.ppid = procDummy.pid + 9999;\n\n WEBSQL_PROC_MOCK_PROCESSES_PID[procDummy.pid] = procDummy;\n if (!WEBSQL_PROC_MOCK_PROCESSES_PPID[procDummy.ppid]) {\n WEBSQL_PROC_MOCK_PROCESSES_PPID[procDummy.ppid] = {\n childProcesses: [],\n };\n }\n WEBSQL_PROC_MOCK_PROCESSES_PPID[procDummy.ppid].childProcesses.push(\n procDummy.pid,\n );\n\n const checkIfProcessShouldBeDead = () => {\n return (\n _.isNil(WEBSQL_PROC_MOCK_PROCESSES_PID[procDummy.pid]) ||\n _.isNil(WEBSQL_PROC_MOCK_PROCESSES_PPID[procDummy.ppid])\n );\n };\n\n const f = Helpers.runSyncOrAsync({\n functionFn: mockFun,\n arrayOfParams: [\n d => {\n setTimeout(() => {\n subStdoutSub.next(d);\n });\n },\n d => {\n setTimeout(() => {\n subStderSub.next(d);\n });\n },\n () => {\n const shouldBeDead = checkIfProcessShouldBeDead();\n return shouldBeDead;\n },\n ],\n });\n f.then(exitCode => {\n if (_.isNil(exitCode)) {\n exitCode = 0;\n }\n setTimeout(() => {\n exitSub.next(exitCode);\n subscribtions.forEach(s => s.unsubscribe());\n });\n }).catch(e => {\n console.error(e);\n console.error(`Something wrong with your mock funciton`);\n exitSub.next(1);\n subscribtions.forEach(s => s.unsubscribe());\n });\n return procDummy as any;\n }\n //#endregion\n //#endregion\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n //#endregion\n },\n\n /**\n * start command as asynchronous nodej proces inside promise\n */\n asyncAsPromise(): 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\n unitlOutput(optionsOutput: {\n stdoutMsg: string | string[];\n stderMsg?: string | string[];\n timeout?: number;\n stdoutOutputContainsCallback?: () => any;\n outputLineReplace?: (outputLine: string) => 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 return (void 0);\n },\n\n /**\n * @deprecated use unitlOutput\n * start command as asynchronous nodej proces inside promise\n * and wait until output contains some string\n */\n unitlOutputContains(\n stdoutMsg: string | string[],\n stderMsg?: string | string[],\n timeout = 0,\n stdoutOutputContainsCallback?: () => 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 return (void 0);\n },\n };\n }\n //#endregion\n\n //#region methods / question yest no\n /**\n * @deprecated use UtilsTerminal.confirm\n */\n async questionYesNo(\n message: string,\n callbackTrue?: () => any,\n callbackFalse?: () => any,\n defaultValue = true,\n ) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods / get stdio\n/* */\n/* */\n/* */\n/* */\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 / run sync in\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n //#endregion\n\n //#region methods / run async in\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\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 / log process\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\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 / check process\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n //#endregion\n\n //#region methods / modify line by line\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\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 / is folder\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n //#endregion\n\n //#region methods / values\n /**\n * Quick fix for object values\n * @deprecated\n */\n public values(obj: any) {\n if (_.isObject(obj) && !Array.isArray(obj)) {\n const values = [];\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n // @ts-ignore\n values.push(obj[key]);\n }\n }\n return values;\n }\n return [];\n }\n //#endregion\n\n //#region methods / is file\n /**\n * does not make sense\n * @deprecated\n */\n private isFile(pathToFileOrMaybeFolder: string) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods / read file\n async tryReadFile(\n absoluteFilePath: string | string[], // @ts-ignore\n defaultValueWhenNotExists = void 0 as string,\n notTrim = false,\n ): Promise<string | undefined> {\n/* */\n/* */\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 * wrapper for fs.readFileSync\n */\n readFile(\n absoluteFilePath: string | string[], // @ts-ignore\n defaultValueWhenNotExists = void 0 as string,\n notTrim = false,\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/* */\n/* */\n return (void 0);\n }\n //#endregion\n\n //#region methods / read json\n /**\n * read json from absolute path\n * @returns json object\n */\n public readJson(\n absoluteFilePath: string | string[],\n defaultValue = {},\n useJson5 = false,\n ): any {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n return (void 0);\n }\n public readJson5(\n absoluteFilePath: string | string[],\n defaultValue: any = {},\n ): any {\n/* */\n/* */\n return (void 0);\n }\n\n public readJsonC(\n absoluteFilePath: string | string[],\n defaultValue: any = {},\n ): any {\n/* */\n/* */\n return (void 0);\n }\n\n //#endregion\n\n //#region methods / parse\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n //#endregion\n\n //#region methods / compilation wrapper\n/* */\n/* */\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 / replace in line\n replaceLinesInFile(\n absoluteFilePath: string | string[],\n lineReplaceFn: (line: string) => string,\n ) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n //#endregion\n\n //#region methods / write file\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\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 / write json\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\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 / folders from\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\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 / links from\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\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 / links to folders from path\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\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 getFilesFrom(\n folderOrLinkToFolder: string | string[],\n options: {\n recursive?: boolean;\n followSymlinks?: boolean;\n } = {},\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 return (void 0);\n }\n\n //#region methods / files from\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\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 / open folder in file explorer\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 / hide node warnings\n hideNodeWarnings() {\n/* */\n/* */\n/* */\n \n }\n //#endregion\n}\n","export const CoreConfig = {\n message: {\n globalSystemToolMode: 'globalSystemToolMode',\n },\n};\n","import { Helpers } from '.';\nimport { _ } from './core-imports';\nimport { CoreModels } from './core-models';\n\n/* */\n/* */\n \n\nexport interface IPROGRESS_DATA {\n /**\n * How man percent of\n */\n value?: number;\n msg?: string;\n type?: CoreModels.PROGRESS_DATA_TYPE;\n date?: Date;\n}\n\nexport class PROGRESS_DATA implements IPROGRESS_DATA {\n public static log(log: IPROGRESS_DATA) {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n }\n\n public static resolveFrom(\n chunk: string,\n callbackOnFounded?: (json: PROGRESS_DATA) => any,\n checkSplit = true,\n ): PROGRESS_DATA[] {\n let progress;\n let res: PROGRESS_DATA[] = [];\n if (!_.isString(chunk)) {\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 (!_.isUndefined(progress)) {\n try {\n const p = JSON.parse(progress);\n const single = _.merge(new PROGRESS_DATA(), p);\n res = res.concat([single]);\n if (_.isFunction(callbackOnFounded)) {\n callbackOnFounded(single);\n }\n } catch (err) {\n Helpers.error(err, true, true);\n Helpers.error(\n `ProgresssBarData: fail to parse \"${progress}\"`,\n true,\n true,\n );\n }\n }\n return res;\n }\n\n public value?: number;\n public msg?: string;\n\n public type: CoreModels.PROGRESS_DATA_TYPE = 'event';\n\n public date?: Date;\n}\n","import { chalk } from './core-imports';\nimport { Helpers } from './index';\nimport { frameworkName } from './framework-name';\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n\n\nexport class CLI {\n\n/* */\n/* */\n/* */\n \n\n public static chalk = chalk;\n\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n\n\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n\n}\n\n","/**\n * TODO slowly refactor this.. only actually globally needed are:\n * pm2, yarn, npm-run, ts-node ???\n */\nexport const requiredForDev = {\n npm: [\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n ],\n niceTools: [\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n ],\n programs: [\n ,\n/* */\n/* */\n/* */\n/* */\n/* */\n \n ],\n};\n","export * from './framework-name';\nexport * from './core-imports';\nexport * from './core-models';\nimport { HelpersCore as Base } from './helpers';\nexport * from './core-config';\nexport * from './progress-data';\nexport * from './utils';\nexport * from './core-cli';\nexport * from './required-global-npm-packages';\nexport { HelpersCore as CoreHelpers, CommandOutputOptions } from './helpers';\nexport let Helpers = Base.InstanceCore;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["chalk","path","pathMock","chalkMock","Blob","Base"],"mappings":"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"}