tnp-helpers 18.0.20 → 18.0.21

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 (521) hide show
  1. package/browser/esm2022/lib/base/classes/base-bower-json.mjs +14 -0
  2. package/browser/esm2022/lib/base/classes/base-cli-worker-config.mjs +1 -4
  3. package/browser/esm2022/lib/base/classes/base-cli-worker-controller.mjs +1 -1
  4. package/browser/esm2022/lib/base/classes/base-cli-worker.mjs +10 -2
  5. package/browser/esm2022/lib/base/classes/base-debounce-compiler-for-project.mjs +5 -5
  6. package/browser/esm2022/lib/base/classes/base-feature-for-project.mjs +4 -1
  7. package/browser/esm2022/lib/base/classes/base-git.mjs +229 -4
  8. package/browser/esm2022/lib/base/classes/base-json-file-reader.mjs +114 -0
  9. package/browser/esm2022/lib/base/classes/base-library-build.mjs +11 -7
  10. package/browser/esm2022/lib/base/classes/base-linked-projects.mjs +8 -5
  11. package/browser/esm2022/lib/base/classes/base-node-modules.mjs +495 -0
  12. package/browser/esm2022/lib/base/classes/base-npm-helpers.mjs +32 -429
  13. package/browser/esm2022/lib/base/classes/base-package-json.mjs +340 -0
  14. package/browser/esm2022/lib/base/classes/base-process-manager.mjs +285 -0
  15. package/browser/esm2022/lib/base/classes/base-project-resolver.mjs +2 -11
  16. package/browser/esm2022/lib/base/classes/base-project.mjs +76 -61
  17. package/browser/esm2022/lib/base/classes/base-quick-fixes.mjs +44 -1
  18. package/browser/esm2022/lib/base/classes/base-release-process.mjs +44 -11
  19. package/browser/esm2022/lib/base/classes/{base-github-pages.mjs → base-static-pages.mjs} +6 -6
  20. package/browser/esm2022/lib/base/classes/base-vscode.mjs +29 -1
  21. package/browser/esm2022/lib/base/classes/index.mjs +5 -1
  22. package/browser/esm2022/lib/base/commit-data.mjs +19 -1
  23. package/browser/esm2022/lib/base/core-project.mjs +3 -3
  24. package/browser/esm2022/lib/base/linked-project.mjs +4 -4
  25. package/browser/esm2022/lib/base/tcp-udp-ports/tcp-udp-ports.context.mjs +2 -4
  26. package/browser/esm2022/lib/base/translate.mjs +566 -0
  27. package/browser/esm2022/lib/helpers/helpers-array-obj.mjs +5 -10
  28. package/browser/esm2022/lib/helpers/helpers.mjs +12 -6
  29. package/browser/esm2022/lib/index.mjs +2 -1
  30. package/browser/esm2022/lib/models.mjs +173 -3
  31. package/browser/esm2022/lib/utils.mjs +402 -41
  32. package/browser/fesm2022/tnp-helpers.mjs +4619 -2888
  33. package/browser/fesm2022/tnp-helpers.mjs.map +1 -1
  34. package/browser/lib/base/classes/base-bower-json.d.ts +35 -0
  35. package/browser/lib/base/classes/base-cli-worker.d.ts +1 -1
  36. package/browser/lib/base/classes/base-debounce-compiler-for-project.d.ts +5 -5
  37. package/browser/lib/base/classes/base-feature-for-project.d.ts +2 -1
  38. package/browser/lib/base/classes/base-git.d.ts +34 -5
  39. package/browser/lib/base/classes/base-json-file-reader.d.ts +72 -0
  40. package/browser/lib/base/classes/base-library-build.d.ts +5 -5
  41. package/browser/lib/base/classes/base-linked-projects.d.ts +1 -2
  42. package/browser/lib/base/classes/base-node-modules.d.ts +56 -0
  43. package/browser/lib/base/classes/base-npm-helpers.d.ts +29 -112
  44. package/browser/lib/base/classes/base-package-json.d.ts +107 -0
  45. package/browser/lib/base/classes/base-process-manager.d.ts +31 -0
  46. package/browser/lib/base/classes/base-project-resolver.d.ts +2 -2
  47. package/browser/lib/base/classes/base-project.d.ts +14 -16
  48. package/browser/lib/base/classes/base-quick-fixes.d.ts +3 -1
  49. package/browser/lib/base/classes/base-release-process.d.ts +8 -9
  50. package/browser/lib/base/classes/{base-github-pages.d.ts → base-static-pages.d.ts} +3 -3
  51. package/browser/lib/base/classes/base-vscode.d.ts +4 -0
  52. package/browser/lib/base/classes/index.d.ts +5 -1
  53. package/browser/lib/base/commit-data.d.ts +14 -1
  54. package/browser/lib/base/linked-project.d.ts +1 -1
  55. package/browser/lib/base/tcp-udp-ports/ports.entity.d.ts +1 -1
  56. package/browser/lib/base/translate.d.ts +228 -0
  57. package/browser/lib/helpers/helpers-array-obj.d.ts +3 -0
  58. package/browser/lib/helpers/helpers.d.ts +12 -8
  59. package/browser/lib/models.d.ts +68 -2
  60. package/browser/lib/utils.d.ts +72 -13
  61. package/client/esm2022/lib/base/classes/base-bower-json.mjs +14 -0
  62. package/client/esm2022/lib/base/classes/base-cli-worker-config.mjs +1 -4
  63. package/client/esm2022/lib/base/classes/base-cli-worker-controller.mjs +1 -1
  64. package/client/esm2022/lib/base/classes/base-cli-worker.mjs +10 -2
  65. package/client/esm2022/lib/base/classes/base-debounce-compiler-for-project.mjs +5 -5
  66. package/client/esm2022/lib/base/classes/base-feature-for-project.mjs +4 -1
  67. package/client/esm2022/lib/base/classes/base-git.mjs +229 -4
  68. package/client/esm2022/lib/base/classes/base-json-file-reader.mjs +114 -0
  69. package/client/esm2022/lib/base/classes/base-library-build.mjs +11 -7
  70. package/client/esm2022/lib/base/classes/base-linked-projects.mjs +8 -5
  71. package/client/esm2022/lib/base/classes/base-node-modules.mjs +495 -0
  72. package/client/esm2022/lib/base/classes/base-npm-helpers.mjs +32 -429
  73. package/client/esm2022/lib/base/classes/base-package-json.mjs +340 -0
  74. package/client/esm2022/lib/base/classes/base-process-manager.mjs +285 -0
  75. package/client/esm2022/lib/base/classes/base-project-resolver.mjs +2 -11
  76. package/client/esm2022/lib/base/classes/base-project.mjs +76 -61
  77. package/client/esm2022/lib/base/classes/base-quick-fixes.mjs +44 -1
  78. package/client/esm2022/lib/base/classes/base-release-process.mjs +44 -11
  79. package/client/esm2022/lib/base/classes/{base-github-pages.mjs → base-static-pages.mjs} +6 -6
  80. package/client/esm2022/lib/base/classes/base-vscode.mjs +29 -1
  81. package/client/esm2022/lib/base/classes/index.mjs +5 -1
  82. package/client/esm2022/lib/base/commit-data.mjs +19 -1
  83. package/client/esm2022/lib/base/core-project.mjs +3 -3
  84. package/client/esm2022/lib/base/linked-project.mjs +4 -4
  85. package/client/esm2022/lib/base/tcp-udp-ports/tcp-udp-ports.context.mjs +2 -4
  86. package/client/esm2022/lib/base/translate.mjs +566 -0
  87. package/client/esm2022/lib/helpers/helpers-array-obj.mjs +5 -10
  88. package/client/esm2022/lib/helpers/helpers.mjs +12 -6
  89. package/client/esm2022/lib/index.mjs +2 -1
  90. package/client/esm2022/lib/models.mjs +173 -3
  91. package/client/esm2022/lib/utils.mjs +402 -41
  92. package/client/fesm2022/tnp-helpers.mjs +4619 -2888
  93. package/client/fesm2022/tnp-helpers.mjs.map +1 -1
  94. package/client/lib/base/classes/base-bower-json.d.ts +35 -0
  95. package/client/lib/base/classes/base-cli-worker.d.ts +1 -1
  96. package/client/lib/base/classes/base-debounce-compiler-for-project.d.ts +5 -5
  97. package/client/lib/base/classes/base-feature-for-project.d.ts +2 -1
  98. package/client/lib/base/classes/base-git.d.ts +34 -5
  99. package/client/lib/base/classes/base-json-file-reader.d.ts +72 -0
  100. package/client/lib/base/classes/base-library-build.d.ts +5 -5
  101. package/client/lib/base/classes/base-linked-projects.d.ts +1 -2
  102. package/client/lib/base/classes/base-node-modules.d.ts +56 -0
  103. package/client/lib/base/classes/base-npm-helpers.d.ts +29 -112
  104. package/client/lib/base/classes/base-package-json.d.ts +107 -0
  105. package/client/lib/base/classes/base-process-manager.d.ts +31 -0
  106. package/client/lib/base/classes/base-project-resolver.d.ts +2 -2
  107. package/client/lib/base/classes/base-project.d.ts +14 -16
  108. package/client/lib/base/classes/base-quick-fixes.d.ts +3 -1
  109. package/client/lib/base/classes/base-release-process.d.ts +8 -9
  110. package/{websql/lib/base/classes/base-github-pages.d.ts → client/lib/base/classes/base-static-pages.d.ts} +3 -3
  111. package/client/lib/base/classes/base-vscode.d.ts +4 -0
  112. package/client/lib/base/classes/index.d.ts +5 -1
  113. package/client/lib/base/commit-data.d.ts +14 -1
  114. package/client/lib/base/linked-project.d.ts +1 -1
  115. package/client/lib/base/tcp-udp-ports/ports.entity.d.ts +1 -1
  116. package/client/lib/base/translate.d.ts +228 -0
  117. package/client/lib/helpers/helpers-array-obj.d.ts +3 -0
  118. package/client/lib/helpers/helpers.d.ts +12 -8
  119. package/client/lib/models.d.ts +68 -2
  120. package/client/lib/utils.d.ts +72 -13
  121. package/index.js +15 -2
  122. package/index.js.map +1 -1
  123. package/lib/base/base-cli-worker-config.d.ts +27 -0
  124. package/lib/base/base-cli-worker-config.js +53 -0
  125. package/lib/base/base-cli-worker-config.js.map +1 -0
  126. package/lib/base/base-cli-worker-controller.d.ts +15 -0
  127. package/lib/base/base-cli-worker-controller.js +154 -0
  128. package/lib/base/base-cli-worker-controller.js.map +1 -0
  129. package/lib/base/base-cli-worker.d.ts +82 -0
  130. package/lib/base/base-cli-worker.js +654 -0
  131. package/lib/base/base-cli-worker.js.map +1 -0
  132. package/lib/base/base-command-line.backend.d.ts +174 -0
  133. package/lib/base/base-command-line.backend.js +2221 -0
  134. package/lib/base/base-command-line.backend.js.map +1 -0
  135. package/lib/base/base-compiler-for-project.d.ts +7 -0
  136. package/lib/base/base-compiler-for-project.js +62 -0
  137. package/lib/base/base-compiler-for-project.js.map +1 -0
  138. package/lib/base/base-db.d.ts +12 -0
  139. package/lib/base/base-db.js +74 -0
  140. package/lib/base/base-db.js.map +1 -0
  141. package/lib/base/base-debounce-compiler-for-project.d.ts +28 -0
  142. package/lib/base/base-debounce-compiler-for-project.js +82 -0
  143. package/lib/base/base-debounce-compiler-for-project.js.map +1 -0
  144. package/lib/base/base-detached-service.d.ts +6 -0
  145. package/lib/base/base-detached-service.js +16 -0
  146. package/lib/base/base-detached-service.js.map +1 -0
  147. package/lib/base/base-feature-for-project.d.ts +5 -0
  148. package/lib/base/base-feature-for-project.js +11 -0
  149. package/lib/base/base-feature-for-project.js.map +1 -0
  150. package/lib/base/base-git.d.ts +148 -0
  151. package/lib/base/base-git.js +1202 -0
  152. package/lib/base/base-git.js.map +1 -0
  153. package/{client/lib/base/classes → lib/base}/base-github-pages.d.ts +4 -5
  154. package/lib/base/base-github-pages.js +173 -0
  155. package/lib/base/base-github-pages.js.map +1 -0
  156. package/lib/base/base-ignore-hide.d.ts +14 -0
  157. package/lib/base/base-ignore-hide.js +55 -0
  158. package/lib/base/base-ignore-hide.js.map +1 -0
  159. package/lib/base/base-library-build.d.ts +65 -0
  160. package/lib/base/base-library-build.js +717 -0
  161. package/lib/base/base-library-build.js.map +1 -0
  162. package/lib/base/base-linked-projects.d.ts +24 -0
  163. package/lib/base/base-linked-projects.js +408 -0
  164. package/lib/base/base-linked-projects.js.map +1 -0
  165. package/lib/base/base-npm-helpers.d.ts +128 -0
  166. package/lib/base/base-npm-helpers.js +774 -0
  167. package/lib/base/base-npm-helpers.js.map +1 -0
  168. package/lib/base/base-project-resolver.d.ts +41 -0
  169. package/lib/base/base-project-resolver.js +308 -0
  170. package/lib/base/base-project-resolver.js.map +1 -0
  171. package/lib/base/base-project.d.ts +244 -0
  172. package/lib/base/base-project.js +1223 -0
  173. package/lib/base/base-project.js.map +1 -0
  174. package/lib/base/base-quick-fixes.d.ts +6 -0
  175. package/lib/base/base-quick-fixes.js +31 -0
  176. package/lib/base/base-quick-fixes.js.map +1 -0
  177. package/lib/base/base-release-process.d.ts +69 -0
  178. package/lib/base/base-release-process.js +913 -0
  179. package/lib/base/base-release-process.js.map +1 -0
  180. package/lib/base/base-start-config.backend.d.ts +36 -0
  181. package/lib/base/base-start-config.backend.js +167 -0
  182. package/lib/base/base-start-config.backend.js.map +1 -0
  183. package/lib/base/base-vscode.d.ts +12 -0
  184. package/lib/base/base-vscode.js +139 -0
  185. package/lib/base/base-vscode.js.map +1 -0
  186. package/lib/base/classes/base-bower-json.d.ts +34 -0
  187. package/lib/base/classes/base-bower-json.js +19 -0
  188. package/lib/base/classes/base-bower-json.js.map +1 -0
  189. package/lib/base/classes/base-cli-worker-config.js +35 -24
  190. package/lib/base/classes/base-cli-worker-config.js.map +1 -1
  191. package/lib/base/classes/base-cli-worker-controller.js +98 -128
  192. package/lib/base/classes/base-cli-worker-controller.js.map +1 -1
  193. package/lib/base/classes/base-cli-worker.d.ts +1 -1
  194. package/lib/base/classes/base-cli-worker.js +402 -610
  195. package/lib/base/classes/base-cli-worker.js.map +1 -1
  196. package/lib/base/classes/base-command-line-feature.backend.d.ts +5 -9
  197. package/lib/base/classes/base-command-line-feature.backend.js +73 -132
  198. package/lib/base/classes/base-command-line-feature.backend.js.map +1 -1
  199. package/lib/base/classes/base-command-line.backend.d.ts +175 -0
  200. package/lib/base/classes/base-command-line.backend.js +2235 -0
  201. package/lib/base/classes/base-command-line.backend.js.map +1 -0
  202. package/lib/base/classes/base-compiler-for-project.js +27 -32
  203. package/lib/base/classes/base-compiler-for-project.js.map +1 -1
  204. package/lib/base/classes/base-db.js +43 -60
  205. package/lib/base/classes/base-db.js.map +1 -1
  206. package/lib/base/classes/base-debounce-compiler-for-project.d.ts +5 -5
  207. package/lib/base/classes/base-debounce-compiler-for-project.js +44 -70
  208. package/lib/base/classes/base-debounce-compiler-for-project.js.map +1 -1
  209. package/lib/base/classes/base-detached-service.js.map +1 -1
  210. package/lib/base/classes/base-feature-for-project.d.ts +2 -1
  211. package/lib/base/classes/base-feature-for-project.js +7 -4
  212. package/lib/base/classes/base-feature-for-project.js.map +1 -1
  213. package/lib/base/classes/base-git.d.ts +32 -3
  214. package/lib/base/classes/base-git.js +885 -975
  215. package/lib/base/classes/base-git.js.map +1 -1
  216. package/lib/base/classes/base-github-pages.js.map +1 -1
  217. package/lib/base/classes/base-global-command-line.backend.d.ts +7 -2
  218. package/lib/base/classes/base-global-command-line.backend.js +1055 -2021
  219. package/lib/base/classes/base-global-command-line.backend.js.map +1 -1
  220. package/lib/base/classes/base-ignore-hide.d.ts +2 -2
  221. package/lib/base/classes/base-ignore-hide.js +24 -28
  222. package/lib/base/classes/base-ignore-hide.js.map +1 -1
  223. package/lib/base/classes/base-json-file-reader.d.ts +71 -0
  224. package/lib/base/classes/base-json-file-reader.js +141 -0
  225. package/lib/base/classes/base-json-file-reader.js.map +1 -0
  226. package/lib/base/classes/base-library-build.d.ts +5 -6
  227. package/lib/base/classes/base-library-build.js +431 -653
  228. package/lib/base/classes/base-library-build.js.map +1 -1
  229. package/lib/base/classes/base-linked-projects.d.ts +1 -3
  230. package/lib/base/classes/base-linked-projects.js +200 -314
  231. package/lib/base/classes/base-linked-projects.js.map +1 -1
  232. package/lib/base/classes/base-node-modules.d.ts +55 -0
  233. package/lib/base/classes/base-node-modules.js +415 -0
  234. package/lib/base/classes/base-node-modules.js.map +1 -0
  235. package/lib/base/classes/base-npm-helpers.d.ts +29 -99
  236. package/lib/base/classes/base-npm-helpers.js +178 -737
  237. package/lib/base/classes/base-npm-helpers.js.map +1 -1
  238. package/lib/base/classes/base-package-json.d.ts +106 -0
  239. package/lib/base/classes/base-package-json.js +381 -0
  240. package/lib/base/classes/base-package-json.js.map +1 -0
  241. package/lib/base/classes/base-process-manager.d.ts +30 -0
  242. package/lib/base/classes/base-process-manager.js +269 -0
  243. package/lib/base/classes/base-process-manager.js.map +1 -0
  244. package/lib/base/classes/base-project-resolver.d.ts +2 -3
  245. package/lib/base/classes/base-project-resolver.js +102 -119
  246. package/lib/base/classes/base-project-resolver.js.map +1 -1
  247. package/lib/base/classes/base-project.d.ts +17 -15
  248. package/lib/base/classes/base-project.js +551 -733
  249. package/lib/base/classes/base-project.js.map +1 -1
  250. package/lib/base/classes/base-quick-fixes.d.ts +3 -1
  251. package/lib/base/classes/base-quick-fixes.js +45 -17
  252. package/lib/base/classes/base-quick-fixes.js.map +1 -1
  253. package/lib/base/classes/base-release-process.d.ts +8 -9
  254. package/lib/base/classes/base-release-process.js +482 -757
  255. package/lib/base/classes/base-release-process.js.map +1 -1
  256. package/lib/base/classes/base-start-config.backend.js +115 -99
  257. package/lib/base/classes/base-start-config.backend.js.map +1 -1
  258. package/lib/base/classes/base-static-pages.d.ts +14 -0
  259. package/lib/base/classes/base-static-pages.js +105 -0
  260. package/lib/base/classes/base-static-pages.js.map +1 -0
  261. package/lib/base/classes/base-vscode.d.ts +4 -0
  262. package/lib/base/classes/base-vscode.js +446 -426
  263. package/lib/base/classes/base-vscode.js.map +1 -1
  264. package/lib/base/classes/index copy.d.ts +22 -0
  265. package/lib/base/classes/index copy.js +28 -0
  266. package/lib/base/classes/index copy.js.map +1 -0
  267. package/lib/base/classes/index.d.ts +4 -0
  268. package/lib/base/classes/index.js +36 -19
  269. package/lib/base/classes/index.js.map +1 -1
  270. package/lib/base/command-line-feature.backend.d.ts +51 -0
  271. package/lib/base/command-line-feature.backend.js +206 -0
  272. package/lib/base/command-line-feature.backend.js.map +1 -0
  273. package/lib/base/commit-data.d.ts +14 -1
  274. package/lib/base/commit-data.js +408 -460
  275. package/lib/base/commit-data.js.map +1 -1
  276. package/lib/base/config-database.js +33 -61
  277. package/lib/base/config-database.js.map +1 -1
  278. package/lib/base/core-project.js +110 -146
  279. package/lib/base/core-project.js.map +1 -1
  280. package/lib/base/gh-temp-code.d.ts +1 -0
  281. package/lib/base/gh-temp-code.js +62 -104
  282. package/lib/base/gh-temp-code.js.map +1 -1
  283. package/lib/base/index-rebuilder.backend.d.ts +1 -0
  284. package/lib/base/index-rebuilder.backend.js.map +1 -1
  285. package/lib/base/index.js +20 -7
  286. package/lib/base/index.js.map +1 -1
  287. package/lib/base/linked-project.d.ts +1 -1
  288. package/lib/base/linked-project.js +59 -38
  289. package/lib/base/linked-project.js.map +1 -1
  290. package/lib/base/ports-worker.d.ts +32 -0
  291. package/lib/base/ports-worker.js +244 -0
  292. package/lib/base/ports-worker.js.map +1 -0
  293. package/lib/base/project-database.js +12 -22
  294. package/lib/base/project-database.js.map +1 -1
  295. package/lib/base/tcp-udp-ports/index.js +17 -4
  296. package/lib/base/tcp-udp-ports/index.js.map +1 -1
  297. package/lib/base/tcp-udp-ports/not-assignable-port.entity.d.ts +1 -0
  298. package/lib/base/tcp-udp-ports/not-assignable-port.entity.js +2 -2
  299. package/lib/base/tcp-udp-ports/not-assignable-port.entity.js.map +1 -1
  300. package/lib/base/tcp-udp-ports/port.entity.d.ts +0 -0
  301. package/lib/base/tcp-udp-ports/port.entity.js +5 -0
  302. package/lib/base/tcp-udp-ports/port.entity.js.map +1 -0
  303. package/lib/base/tcp-udp-ports/ports.controller.js +195 -283
  304. package/lib/base/tcp-udp-ports/ports.controller.js.map +1 -1
  305. package/lib/base/tcp-udp-ports/ports.entity.d.ts +2 -2
  306. package/lib/base/tcp-udp-ports/ports.entity.js +74 -62
  307. package/lib/base/tcp-udp-ports/ports.entity.js.map +1 -1
  308. package/lib/base/tcp-udp-ports/tcp-udp-ports.context.js +11 -14
  309. package/lib/base/tcp-udp-ports/tcp-udp-ports.context.js.map +1 -1
  310. package/lib/base/tcp-udp-ports/tcp-upd-ports.worker.js +244 -427
  311. package/lib/base/tcp-udp-ports/tcp-upd-ports.worker.js.map +1 -1
  312. package/lib/base/tcp-upd-ports.worker.d.ts +13 -0
  313. package/lib/base/tcp-upd-ports.worker.js +99 -0
  314. package/lib/base/tcp-upd-ports.worker.js.map +1 -0
  315. package/lib/base/translate.d.ts +1 -1
  316. package/lib/base/translate.js +90 -119
  317. package/lib/base/translate.js.map +1 -1
  318. package/lib/build-info._auto-generated_.js.map +1 -1
  319. package/lib/helpers/for-backend/helpers-cli-tool.backend.js +109 -115
  320. package/lib/helpers/for-backend/helpers-cli-tool.backend.js.map +1 -1
  321. package/lib/helpers/for-backend/helpers-console-gui.js +55 -102
  322. package/lib/helpers/for-backend/helpers-console-gui.js.map +1 -1
  323. package/lib/helpers/for-backend/helpers-dependencies.backend.js +28 -45
  324. package/lib/helpers/for-backend/helpers-dependencies.backend.js.map +1 -1
  325. package/lib/helpers/for-backend/helpers-file-folders.backend.d.ts +2 -2
  326. package/lib/helpers/for-backend/helpers-file-folders.backend.js +277 -266
  327. package/lib/helpers/for-backend/helpers-file-folders.backend.js.map +1 -1
  328. package/lib/helpers/for-backend/helpers-git.backend.d.ts +28 -3
  329. package/lib/helpers/for-backend/helpers-git.backend.js +804 -864
  330. package/lib/helpers/for-backend/helpers-git.backend.js.map +1 -1
  331. package/lib/helpers/for-backend/helpers-network.backend.js +15 -18
  332. package/lib/helpers/for-backend/helpers-network.backend.js.map +1 -1
  333. package/lib/helpers/for-backend/helpers-npm.backend.js +5 -8
  334. package/lib/helpers/for-backend/helpers-npm.backend.js.map +1 -1
  335. package/lib/helpers/for-backend/helpers-path.backend.js +18 -26
  336. package/lib/helpers/for-backend/helpers-path.backend.js.map +1 -1
  337. package/lib/helpers/for-backend/helpers-process.backend.d.ts +2 -2
  338. package/lib/helpers/for-backend/helpers-process.backend.js +285 -363
  339. package/lib/helpers/for-backend/helpers-process.backend.js.map +1 -1
  340. package/lib/helpers/for-backend/helpers-system-terminal.backend.js +25 -42
  341. package/lib/helpers/for-backend/helpers-system-terminal.backend.js.map +1 -1
  342. package/lib/helpers/for-backend/helpers-vscode.backend.js +9 -12
  343. package/lib/helpers/for-backend/helpers-vscode.backend.js.map +1 -1
  344. package/lib/helpers/for-backend/ts-code/index.js +0 -2
  345. package/lib/helpers/for-backend/ts-code/index.js.map +1 -1
  346. package/lib/helpers/for-backend/ts-code/ts-code-extractor.d.ts +26 -0
  347. package/lib/helpers/for-backend/ts-code/ts-code-extractor.js +62 -0
  348. package/lib/helpers/for-backend/ts-code/ts-code-extractor.js.map +1 -0
  349. package/lib/helpers/for-backend/ts-code/ts-code-modifier.backend.d.ts +19 -0
  350. package/lib/helpers/for-backend/ts-code/ts-code-modifier.backend.js +81 -0
  351. package/lib/helpers/for-backend/ts-code/ts-code-modifier.backend.js.map +1 -0
  352. package/lib/helpers/for-backend/ts-code/ts-import-export-extractor.js +2 -2
  353. package/lib/helpers/for-backend/ts-code/ts-import-export-extractor.js.map +1 -1
  354. package/lib/helpers/for-browser/angular.helper.js +2 -2
  355. package/lib/helpers/for-browser/angular.helper.js.map +1 -1
  356. package/lib/helpers/for-browser/helpers-browser.js +27 -40
  357. package/lib/helpers/for-browser/helpers-browser.js.map +1 -1
  358. package/lib/helpers/helpers-array-obj.d.ts +3 -0
  359. package/lib/helpers/helpers-array-obj.js +49 -61
  360. package/lib/helpers/helpers-array-obj.js.map +1 -1
  361. package/lib/helpers/helpers-json5.backend.js +44 -55
  362. package/lib/helpers/helpers-json5.backend.js.map +1 -1
  363. package/lib/helpers/helpers-numbers.js +7 -10
  364. package/lib/helpers/helpers-numbers.js.map +1 -1
  365. package/lib/helpers/helpers-strings-regexes.js +40 -47
  366. package/lib/helpers/helpers-strings-regexes.js.map +1 -1
  367. package/lib/helpers/helpers-strings.js +38 -41
  368. package/lib/helpers/helpers-strings.js.map +1 -1
  369. package/lib/helpers/helpers.d.ts +12 -8
  370. package/lib/helpers/helpers.js +313 -393
  371. package/lib/helpers/helpers.js.map +1 -1
  372. package/lib/index._auto-generated_.d.ts +1 -0
  373. package/lib/index._auto-generated_.js.map +1 -1
  374. package/lib/index.d.ts +2 -1
  375. package/lib/index.js +21 -7
  376. package/lib/index.js.map +1 -1
  377. package/lib/lowdb/adapters/Memory.js +14 -20
  378. package/lib/lowdb/adapters/Memory.js.map +1 -1
  379. package/lib/lowdb/adapters/browser/LocalStorage.js +5 -8
  380. package/lib/lowdb/adapters/browser/LocalStorage.js.map +1 -1
  381. package/lib/lowdb/adapters/browser/SessionStorage.js +5 -8
  382. package/lib/lowdb/adapters/browser/SessionStorage.js.map +1 -1
  383. package/lib/lowdb/adapters/browser/WebStorage.js +10 -9
  384. package/lib/lowdb/adapters/browser/WebStorage.js.map +1 -1
  385. package/lib/lowdb/adapters/node/DataFile.js +29 -38
  386. package/lib/lowdb/adapters/node/DataFile.js.map +1 -1
  387. package/lib/lowdb/adapters/node/JSONFile.js +13 -18
  388. package/lib/lowdb/adapters/node/JSONFile.js.map +1 -1
  389. package/lib/lowdb/adapters/node/TextFile.js +36 -44
  390. package/lib/lowdb/adapters/node/TextFile.js.map +1 -1
  391. package/lib/lowdb/adapters/node/steno.js +72 -122
  392. package/lib/lowdb/adapters/node/steno.js.map +1 -1
  393. package/lib/lowdb/browser.js +17 -4
  394. package/lib/lowdb/browser.js.map +1 -1
  395. package/lib/lowdb/core/Low.js +30 -60
  396. package/lib/lowdb/core/Low.js.map +1 -1
  397. package/lib/lowdb/examples/browser.js.map +1 -1
  398. package/lib/lowdb/examples/cli.d.ts +1 -0
  399. package/lib/lowdb/examples/cli.js.map +1 -1
  400. package/lib/lowdb/examples/in-memory.d.ts +1 -0
  401. package/lib/lowdb/examples/in-memory.js.map +1 -1
  402. package/lib/lowdb/examples/server.d.ts +1 -0
  403. package/lib/lowdb/examples/server.js.map +1 -1
  404. package/lib/lowdb/index.js +16 -3
  405. package/lib/lowdb/index.js.map +1 -1
  406. package/lib/lowdb/node.js +18 -5
  407. package/lib/lowdb/node.js.map +1 -1
  408. package/lib/lowdb/presets/browser.js +7 -7
  409. package/lib/lowdb/presets/browser.js.map +1 -1
  410. package/lib/lowdb/presets/node.js +12 -23
  411. package/lib/lowdb/presets/node.js.map +1 -1
  412. package/lib/models.d.ts +68 -2
  413. package/lib/models.js +197 -3
  414. package/lib/models.js.map +1 -1
  415. package/lib/old/base-component.d.ts +1 -0
  416. package/lib/old/base-component.js +2 -2
  417. package/lib/old/base-component.js.map +1 -1
  418. package/lib/old/base-formly-component.d.ts +1 -0
  419. package/lib/old/base-formly-component.js +2 -2
  420. package/lib/old/base-formly-component.js.map +1 -1
  421. package/lib/old/condition-wait.d.ts +1 -0
  422. package/lib/old/condition-wait.js.map +1 -1
  423. package/lib/old/dual-component-ctrl.d.ts +1 -0
  424. package/lib/old/dual-component-ctrl.js +2 -2
  425. package/lib/old/dual-component-ctrl.js.map +1 -1
  426. package/lib/old/execute-command.d.ts +11 -0
  427. package/lib/old/execute-command.js +564 -0
  428. package/lib/old/execute-command.js.map +1 -0
  429. package/lib/old/helpers.d.ts +62 -0
  430. package/lib/old/helpers.js +279 -0
  431. package/lib/old/helpers.js.map +1 -0
  432. package/lib/old/models.d.ts +80 -0
  433. package/lib/old/models.js +57 -0
  434. package/lib/old/models.js.map +1 -0
  435. package/lib/utils.d.ts +72 -13
  436. package/lib/utils.js +502 -179
  437. package/lib/utils.js.map +1 -1
  438. package/lib/validators/validators-firedev.js +5 -5
  439. package/lib/validators/validators-firedev.js.map +1 -1
  440. package/lib/validators/validators-git.js +2 -2
  441. package/lib/validators/validators-git.js.map +1 -1
  442. package/lib/validators/validators-network.js +1 -1
  443. package/lib/validators/validators-network.js.map +1 -1
  444. package/lib/validators/validators.js +2 -2
  445. package/lib/validators/validators.js.map +1 -1
  446. package/migrations/1736198527297_init.js +39 -58
  447. package/migrations/1736198527297_init.js.map +1 -1
  448. package/migrations/1736199486472_addingNotAssignablePorts.js +42 -93
  449. package/migrations/1736199486472_addingNotAssignablePorts.js.map +1 -1
  450. package/migrations/1736454437350_addFreePorts.js +48 -100
  451. package/migrations/1736454437350_addFreePorts.js.map +1 -1
  452. package/migrations/index.js +15 -2
  453. package/migrations/index.js.map +1 -1
  454. package/migrations/migrations_index._auto-generated_.js +3 -3
  455. package/migrations/migrations_index._auto-generated_.js.map +1 -1
  456. package/package.json +14 -61
  457. package/src.d.ts +1 -1
  458. package/taon.jsonc +26 -41
  459. package/tmp-environment.json +8 -389
  460. package/websql/esm2022/lib/base/classes/base-bower-json.mjs +14 -0
  461. package/websql/esm2022/lib/base/classes/base-cli-worker-config.mjs +1 -4
  462. package/websql/esm2022/lib/base/classes/base-cli-worker-controller.mjs +1 -1
  463. package/websql/esm2022/lib/base/classes/base-cli-worker.mjs +10 -2
  464. package/websql/esm2022/lib/base/classes/base-debounce-compiler-for-project.mjs +5 -5
  465. package/websql/esm2022/lib/base/classes/base-feature-for-project.mjs +4 -1
  466. package/websql/esm2022/lib/base/classes/base-git.mjs +229 -4
  467. package/websql/esm2022/lib/base/classes/base-json-file-reader.mjs +114 -0
  468. package/websql/esm2022/lib/base/classes/base-library-build.mjs +11 -7
  469. package/websql/esm2022/lib/base/classes/base-linked-projects.mjs +8 -5
  470. package/websql/esm2022/lib/base/classes/base-node-modules.mjs +495 -0
  471. package/websql/esm2022/lib/base/classes/base-npm-helpers.mjs +32 -429
  472. package/websql/esm2022/lib/base/classes/base-package-json.mjs +340 -0
  473. package/websql/esm2022/lib/base/classes/base-process-manager.mjs +285 -0
  474. package/websql/esm2022/lib/base/classes/base-project-resolver.mjs +2 -10
  475. package/websql/esm2022/lib/base/classes/base-project.mjs +75 -61
  476. package/websql/esm2022/lib/base/classes/base-quick-fixes.mjs +44 -1
  477. package/websql/esm2022/lib/base/classes/base-release-process.mjs +44 -11
  478. package/websql/esm2022/lib/base/classes/{base-github-pages.mjs → base-static-pages.mjs} +6 -6
  479. package/websql/esm2022/lib/base/classes/base-vscode.mjs +29 -1
  480. package/websql/esm2022/lib/base/classes/index.mjs +5 -1
  481. package/websql/esm2022/lib/base/commit-data.mjs +19 -1
  482. package/websql/esm2022/lib/base/core-project.mjs +3 -3
  483. package/websql/esm2022/lib/base/linked-project.mjs +4 -4
  484. package/websql/esm2022/lib/base/tcp-udp-ports/tcp-udp-ports.context.mjs +2 -4
  485. package/websql/esm2022/lib/base/translate.mjs +566 -0
  486. package/websql/esm2022/lib/helpers/helpers-array-obj.mjs +5 -10
  487. package/websql/esm2022/lib/helpers/helpers.mjs +12 -6
  488. package/websql/esm2022/lib/index.mjs +2 -1
  489. package/websql/esm2022/lib/models.mjs +173 -3
  490. package/websql/esm2022/lib/utils.mjs +402 -41
  491. package/websql/fesm2022/tnp-helpers.mjs +4738 -3007
  492. package/websql/fesm2022/tnp-helpers.mjs.map +1 -1
  493. package/websql/lib/base/classes/base-bower-json.d.ts +35 -0
  494. package/websql/lib/base/classes/base-cli-worker.d.ts +1 -1
  495. package/websql/lib/base/classes/base-debounce-compiler-for-project.d.ts +5 -5
  496. package/websql/lib/base/classes/base-feature-for-project.d.ts +2 -1
  497. package/websql/lib/base/classes/base-git.d.ts +34 -5
  498. package/websql/lib/base/classes/base-json-file-reader.d.ts +72 -0
  499. package/websql/lib/base/classes/base-library-build.d.ts +5 -5
  500. package/websql/lib/base/classes/base-linked-projects.d.ts +1 -2
  501. package/websql/lib/base/classes/base-node-modules.d.ts +56 -0
  502. package/websql/lib/base/classes/base-npm-helpers.d.ts +29 -110
  503. package/websql/lib/base/classes/base-package-json.d.ts +107 -0
  504. package/websql/lib/base/classes/base-process-manager.d.ts +31 -0
  505. package/websql/lib/base/classes/base-project-resolver.d.ts +2 -2
  506. package/websql/lib/base/classes/base-project.d.ts +14 -16
  507. package/websql/lib/base/classes/base-quick-fixes.d.ts +3 -1
  508. package/websql/lib/base/classes/base-release-process.d.ts +8 -9
  509. package/websql/lib/base/classes/base-static-pages.d.ts +15 -0
  510. package/websql/lib/base/classes/base-vscode.d.ts +4 -0
  511. package/websql/lib/base/classes/index.d.ts +5 -1
  512. package/websql/lib/base/commit-data.d.ts +14 -1
  513. package/websql/lib/base/linked-project.d.ts +1 -1
  514. package/websql/lib/base/tcp-udp-ports/ports.entity.d.ts +1 -1
  515. package/websql/lib/base/translate.d.ts +228 -0
  516. package/websql/lib/helpers/helpers-array-obj.d.ts +3 -0
  517. package/websql/lib/helpers/helpers.d.ts +12 -8
  518. package/websql/lib/models.d.ts +68 -2
  519. package/websql/lib/utils.d.ts +72 -13
  520. package/browser/package.json +0 -25
  521. package/websql/package.json +0 -25
@@ -1,84 +1,27 @@
1
- /* */
2
- /* */
3
- /* */
4
- /* */
5
- /* */
6
- /* */
7
- /* */
8
- /* */
9
- import { _ } from 'tnp-core/browser';
10
- import { Helpers } from '../../index';
1
+ import { BaseBowerJson } from './base-bower-json';
11
2
  import { BaseFeatureForProject } from './base-feature-for-project';
12
- import { config } from 'tnp-config/browser';
3
+ import { BaseNodeModules } from './base-node-modules';
4
+ import { BasePackageJson } from './base-package-json';
13
5
  export class BaseNpmHelpers extends BaseFeatureForProject {
14
6
  constructor(project) {
15
7
  super(project);
8
+ this._packageJsonType = BasePackageJson;
9
+ this._packageJsonTypeOriginal = BasePackageJson;
10
+ this._nodeModulesType = BaseNodeModules;
11
+ this.__nodeModulesTypeOriginal = BaseNodeModules;
16
12
  this.project = project;
17
- this.reloadPackageJsonInMemory();
18
- }
19
- updateDepsFrom(locations) {
20
- /* */
21
- /* */
22
- /* */
23
- /* */
24
- /* */
25
- /* */
26
- /* */
27
- /* */
28
- /* */
29
- /* */
30
- /* */
31
- /* */
32
- /* */
33
- /* */
34
- return (void 0);
35
- }
36
- /**
37
- * if something else change package.json in this project
38
- * and you know that you need to reload it..
39
- */
40
- reloadPackageJsonInMemory() {
41
- this.packageJSON = this.project.readJson(config.file.package_json);
42
- this.bowerJson = this.project.readJson(config.file.bower_json);
43
- }
44
- get name() {
45
- return this.packageJSON?.name || '';
46
- }
47
- /**
48
- * version from package.json -> property version
49
- */
50
- get version() {
51
- return this.packageJSON?.version;
52
- }
53
- /**
54
- * bin with cli config from package.json
55
- */
56
- get bin() {
57
- return (this.packageJSON?.bin || {});
13
+ if (this._packageJsonType === this._packageJsonTypeOriginal) {
14
+ this.packageJson = new this._packageJsonType({ cwd: project.location });
15
+ }
16
+ if (this._nodeModulesType === this.__nodeModulesTypeOriginal) {
17
+ this.nodeModules = new this._nodeModulesType(project.location, this);
18
+ }
19
+ this.bowerJson = new BaseBowerJson(project.location);
58
20
  }
59
- set version(newVersion) {
60
- this.packageJSON.version = newVersion;
61
- this.project.writeJson(config.file.package_json, this.packageJSON);
21
+ preferYarnOverNpm() {
22
+ return false;
62
23
  }
63
- /**
64
- * @deprecated use updateDep
65
- */
66
- updateDependency({ packageName, version, updateTaonJsonFirst, }) {
67
- /* */
68
- /* */
69
- /* */
70
- /* */
71
- /* */
72
- /* */
73
- /* */
74
- /* */
75
- /* */
76
- /* */
77
- /* */
78
- /* */
79
- /* */
80
- /* */
81
- /* */
24
+ async resetPackageLockJson() {
82
25
  /* */
83
26
  /* */
84
27
  /* */
@@ -101,56 +44,7 @@ export class BaseNpmHelpers extends BaseFeatureForProject {
101
44
  /* */
102
45
  return (void 0);
103
46
  }
104
- /**
105
- * Update dependency in package.json
106
- */
107
- async updateDep({ packageName, version, updateTaonJsonFirst, addIfNotExists, }) {
108
- /* */
109
- /* */
110
- /* */
111
- /* */
112
- /* */
113
- /* */
114
- /* */
115
- /* */
116
- /* */
117
- /* */
118
- /* */
119
- /* */
120
- /* */
121
- /* */
122
- /* */
123
- /* */
124
- /* */
125
- /* */
126
- /* */
127
- /* */
128
- /* */
129
- /* */
130
- /* */
131
- /* */
132
- /* */
133
- /* */
134
- /* */
135
- /* */
136
- /* */
137
- /* */
138
- /* */
139
- /* */
140
- /* */
141
- /* */
142
- /* */
143
- /* */
144
- /* */
145
- /* */
146
- /* */
147
- /* */
148
- /* */
149
- /* */
150
- /* */
151
- /* */
152
- /* */
153
- /* */
47
+ startNpmTask(taskName, additionalArguments) {
154
48
  /* */
155
49
  /* */
156
50
  /* */
@@ -161,66 +55,19 @@ export class BaseNpmHelpers extends BaseFeatureForProject {
161
55
  /* */
162
56
  /* */
163
57
  /* */
164
- return (void 0);
165
- }
166
- get versionWithPatchPlusOne() {
167
- const ver = this.version.split('.');
168
- if (ver.length > 0) {
169
- ver[ver.length - 1] = (parseInt(_.last(ver)) + 1).toString();
170
- }
171
- return ver.join('.');
172
- }
173
- get versionWithMinorPlusOneAndPatchZero() {
174
- const ver = this.version.split('.');
175
- if (ver.length > 1) {
176
- ver[1] = (parseInt(ver[1]) + 1).toString();
177
- for (let index = 2; index < ver.length; index++) {
178
- ver[index] = '0';
179
- }
180
- }
181
- else {
182
- Helpers.warn(`[npm-project] something went wrong with bumping minor version`);
183
- }
184
- return ver.join('.');
185
- }
186
- get versionWithMajorPlusOneAndMinorZeroAndPatchZero() {
187
- const ver = this.version.split('.');
188
- if (ver.length > 0) {
189
- ver[0] = (parseInt(_.first(ver)) + 1).toString();
190
- for (let index = 1; index < ver.length; index++) {
191
- ver[index] = '0';
192
- }
193
- }
194
- else {
195
- Helpers.warn(`[npm-project] something went wrong with bumping major version`);
196
- }
197
- return ver.join('.');
198
- }
199
- /**
200
- * Major Version from package.json
201
- */
202
- // @ts-ignore
203
- get majorVersion() {
204
58
  /* */
205
59
  /* */
206
- return (void 0);
207
- }
208
- /**
209
- * Minor Version from package.json
210
- */
211
- // @ts-ignore
212
- get minorVersion() {
213
60
  /* */
214
61
  /* */
215
62
  /* */
216
63
  return (void 0);
217
64
  }
218
65
  /**
219
- * @deprecated
66
+ *
67
+ * @param registry without specified registr is checking npm registry
68
+ * @returns
220
69
  */
221
- async bumpPatchVersion() {
222
- /* */
223
- /* */
70
+ async isLoggedInToRegistry(registry) {
224
71
  /* */
225
72
  /* */
226
73
  /* */
@@ -245,9 +92,6 @@ export class BaseNpmHelpers extends BaseFeatureForProject {
245
92
  /* */
246
93
  /* */
247
94
  /* */
248
- return (void 0);
249
- }
250
- get versionPathAsNumber() {
251
95
  /* */
252
96
  /* */
253
97
  /* */
@@ -255,102 +99,11 @@ export class BaseNpmHelpers extends BaseFeatureForProject {
255
99
  return (void 0);
256
100
  }
257
101
  /**
258
- * npm dependencies from package.json
259
- */
260
- get dependencies() {
261
- return (this.packageJSON ? this.packageJSON.dependencies : {}) || {};
262
- }
263
- get bowerDependencies() {
264
- return (this.bowerJson ? this.bowerJson.dependencies : {}) || {};
265
- }
266
- /**
267
- * peerDependencies dependencies
268
- */
269
- get peerDependencies() {
270
- return (this.packageJSON ? this.packageJSON.peerDependencies : {}) || {};
271
- }
272
- /**
273
- * devDependencies dependencies
274
- */
275
- get devDependencies() {
276
- return (this.packageJSON ? this.packageJSON.devDependencies : {}) || {};
277
- }
278
- /**
279
- * resolutions dependencies
280
- */
281
- get resolutions() {
282
- return (this.packageJSON ? this.packageJSON['resolutions'] : {}) || {};
283
- }
284
- /**
285
- * @returns object witl all deps from current project package json
286
- */
287
- get allDependencies() {
288
- return this.allDepsFromPackageJson(this.packageJSON);
289
- }
290
- /**
291
- * @returns object witl all deps from package json
102
+ * Prompt the user to log in to a specific npm registry.
103
+ * @param {string} [registry] - Optional npm registry URL.
104
+ * @returns {Promise<void>} - A promise that resolves when the login process completes.
292
105
  */
293
- allDepsFromPackageJson(packageJson) {
294
- return _.merge({
295
- ...(packageJson.devDependencies || {}),
296
- ...(packageJson.peerDependencies || {}),
297
- ...(packageJson.dependencies || {}),
298
- ...(packageJson.resolutions || {}),
299
- });
300
- }
301
- linkNodeModulesTo(proj) {
302
- /* */
303
- /* */
304
- /* */
305
- /* */
306
- /* */
307
- return (void 0);
308
- }
309
- preferYarnOverNpm() {
310
- return false;
311
- }
312
- async makeSureNodeModulesInstalled(options) {
313
- if (this.emptyNodeModules) {
314
- await this.reinstallNodeModules(options);
315
- }
316
- }
317
- deleteNodeModules() {
318
- this.project.remove(config.folder.node_modules);
319
- }
320
- async reinstallNodeModules(options) {
321
- /* */
322
- /* */
323
- /* */
324
- /* */
325
- /* */
326
- /* */
327
- /* */
328
- /* */
329
- /* */
330
- /* */
331
- /* */
332
- /* */
333
- /* */
334
- /* */
335
- /* */
336
- /* */
337
- /* */
338
- /* */
339
- /* */
340
- /* */
341
- /* */
342
- /* */
343
- /* */
344
- /* */
345
- /* */
346
- /* */
347
- /* */
348
- /* */
349
- /* */
350
- /* */
351
- /* */
352
- /* */
353
- /* */
106
+ async loginToRegistry(registry) {
354
107
  /* */
355
108
  /* */
356
109
  /* */
@@ -381,49 +134,7 @@ export class BaseNpmHelpers extends BaseFeatureForProject {
381
134
  /* */
382
135
  return (void 0);
383
136
  }
384
- /**
385
- * @returns true if node_modules folder is empty
386
- */
387
- get emptyNodeModules() {
388
- /* */
389
- /* */
390
- /* */
391
- /* */
392
- /* */
393
- /* */
394
- /* */
395
- /* */
396
- /* */
397
- /* */
398
- /* */
399
- /* */
400
- /* */
401
- /* */
402
- /* */
403
- /* */
404
- /* */
405
- /* */
406
- /* */
407
- /* */
408
- /* */
409
- /* */
410
- /* */
411
- /* */
412
- /* */
413
- /* */
414
- /* */
415
- /* */
416
- /* */
417
- /* */
418
- /* */
419
- /* */
420
- /* */
421
- /* */
422
- /* */
423
- /* */
424
- /* */
425
- /* */
426
- /* */
137
+ async makeSureLoggedInToNpmRegistry(registry) {
427
138
  /* */
428
139
  /* */
429
140
  /* */
@@ -449,7 +160,8 @@ export class BaseNpmHelpers extends BaseFeatureForProject {
449
160
  /* */
450
161
  return (void 0);
451
162
  }
452
- async resetPackageLockJson() {
163
+ async shouldReleaseMessage(options) {
164
+ /* */
453
165
  /* */
454
166
  /* */
455
167
  /* */
@@ -470,65 +182,6 @@ export class BaseNpmHelpers extends BaseFeatureForProject {
470
182
  /* */
471
183
  /* */
472
184
  /* */
473
- return (void 0);
474
- }
475
- startNpmTask(taskName, additionalArguments) {
476
- if (_.isObject(additionalArguments)) {
477
- additionalArguments = Object.keys(additionalArguments)
478
- .map(k => `--${k} ${additionalArguments[k]}`)
479
- .join(' ');
480
- }
481
- const command = `npm run ${taskName} ${additionalArguments ? ' -- ' + additionalArguments : ''}`;
482
- Helpers.info(`Starting npm task: "${command}"`);
483
- return this.project.run(command, {
484
- output: true,
485
- biggerBuffer: true,
486
- });
487
- }
488
- async prepareCommand(options) {
489
- let { pkg, silent, useYarn, force, removeYarnOrPackageJsonLock, generateYarnOrPackageJsonLock, } = options || {};
490
- force = true; // TODO QUICK_FIX
491
- let command = '';
492
- const commonOptions = `--ignore-engines`;
493
- if (useYarn) {
494
- const argsForFasterInstall = `${force ? '--force' : ''} ${commonOptions} `;
495
- command =
496
- `${removeYarnOrPackageJsonLock
497
- ? `(rm ${config.file.yarn_lock} || true) ` +
498
- `&& touch ${config.file.yarn_lock} && `
499
- : ''}` +
500
- `yarn ${pkg ? (pkg?.installType === 'remove' ? 'remove' : 'add') : 'install'} ${pkg ? pkg.name : ''} ` +
501
- ` ${generateYarnOrPackageJsonLock ? '' : '--no-lockfile'} ` +
502
- ` ${argsForFasterInstall} ` +
503
- ` ${pkg && pkg.installType && pkg.installType === '--save-dev' ? '-dev' : ''} `;
504
- }
505
- else {
506
- const argsForFasterInstall = `${force ? '--force' : ''} ${commonOptions} --no-audit ` +
507
- `${silent ? '--silent --no-progress' : ''} `;
508
- command =
509
- `${removeYarnOrPackageJsonLock
510
- ? `(rm ${config.file.package_lock_json} || true) ` +
511
- `&& touch ${config.file.package_lock_json} && `
512
- : ''}` +
513
- `npx --node-options=--max-old-space-size=8000 npm ` +
514
- `${pkg?.installType === 'remove' ? 'uninstall' : 'install'} ${pkg ? pkg.name : ''} ` +
515
- ` ${generateYarnOrPackageJsonLock ? '' : '--no-package-lock'} ` +
516
- ` ${pkg && pkg.installType ? pkg.installType : ''} ` +
517
- ` ${argsForFasterInstall} `;
518
- }
519
- Helpers.info(`Command for npm install:
520
-
521
- ${command}
522
-
523
- `);
524
- return command;
525
- }
526
- /**
527
- *
528
- * @param registry without specified registr is checking npm registry
529
- * @returns
530
- */
531
- async isLoggedInToRegistry(registry) {
532
185
  /* */
533
186
  /* */
534
187
  /* */
@@ -554,64 +207,14 @@ export class BaseNpmHelpers extends BaseFeatureForProject {
554
207
  return (void 0);
555
208
  }
556
209
  /**
557
- * Prompt the user to log in to a specific npm registry.
558
- * @param {string} [registry] - Optional npm registry URL.
559
- * @returns {Promise<void>} - A promise that resolves when the login process completes.
210
+ * @param registry when not specified, it will use the default npm registry
560
211
  */
561
- async loginToRegistry(registry) {
562
- /* */
563
- /* */
564
- /* */
565
- /* */
566
- /* */
567
- /* */
568
- /* */
569
- /* */
570
- /* */
212
+ async publishToNpmRegistry(options) {
571
213
  /* */
572
214
  /* */
573
215
  /* */
574
216
  /* */
575
217
  /* */
576
- /* */
577
- /* */
578
- /* */
579
- /* */
580
- return (void 0);
581
- }
582
- async makeSureLoggedInToNpmRegistry(registry) {
583
- /* */
584
- /* */
585
- /* */
586
- /* */
587
- /* */
588
- /* */
589
- /* */
590
- /* */
591
- /* */
592
- /* */
593
- /* */
594
- /* */
595
- /* */
596
- /* */
597
- /* */
598
- /* */
599
- /* */
600
- /* */
601
- /* */
602
- /* */
603
- /* */
604
- /* */
605
- /* */
606
- /* */
607
- /* */
608
- return (void 0);
609
- }
610
- /**
611
- * @deprecated
612
- * use makeSureLoggedInToNpmRegistry()
613
- */
614
- checkIfLogginInToNpm() {
615
218
  /* */
616
219
  /* */
617
220
  /* */
@@ -626,4 +229,4 @@ export class BaseNpmHelpers extends BaseFeatureForProject {
626
229
  }
627
230
  ;
628
231
  ({}); // @--end-of-file-for-module=tnp-helpers lib/base/classes/base-npm-helpers.ts
629
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1ucG0taGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1kaXN0L3RucC1oZWxwZXJzL3Byb2plY3RzL3RucC1oZWxwZXJzL3NyYy9saWIvYmFzZS9jbGFzc2VzL2Jhc2UtbnBtLWhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFFTCxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN0QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVuRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFLNUMsTUFBTSxPQUFPLGNBRVgsU0FBUSxxQkFBcUI7SUFHN0IsWUFBWSxPQUFnQjtRQUMxQixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQsY0FBYyxDQUFDLFNBQW1CO1FBQ3BDLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUdEOzs7T0FHRztJQUNILHlCQUF5QjtRQUN2QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxD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S0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUlEOztPQUVHO0lBQ0gsSUFBSSxnQkFBZ0I7UUFDdEIsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7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QUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUVEOzs7T0FHRztJQUNILG9CQUFvQjtRQUN0QixLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDO0NBRUY7QUFFQSxDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLDZFQUE2RSIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcbmltcG9ydCB7IF8gfSBmcm9tICd0bnAtY29yZS9icm93c2VyJztcbmltcG9ydCB7IEhlbHBlcnMgfSBmcm9tICcuLi8uLi9pbmRleCc7XG5pbXBvcnQgeyBCYXNlRmVhdHVyZUZvclByb2plY3QgfSBmcm9tICcuL2Jhc2UtZmVhdHVyZS1mb3ItcHJvamVjdCc7XG5pbXBvcnQgdHlwZSB7IEJhc2VQcm9qZWN0IH0gZnJvbSAnLi9iYXNlLXByb2plY3QnO1xuaW1wb3J0IHsgY29uZmlnIH0gZnJvbSAndG5wLWNvbmZpZy9icm93c2VyJztcbmltcG9ydCB7IFBhY2thZ2VKc29uIH0gZnJvbSAndHlwZS1mZXN0JztcbmltcG9ydCB7IENvcmVNb2RlbHMgfSBmcm9tICd0bnAtY29yZS9icm93c2VyJztcblxuXG5leHBvcnQgY2xhc3MgQmFzZU5wbUhlbHBlcnM8XG4gIFBST0pFQ1QgZXh0ZW5kcyBCYXNlUHJvamVjdCA9IGFueSxcbj4gZXh0ZW5kcyBCYXNlRmVhdHVyZUZvclByb2plY3Qge1xuICBwcml2YXRlIHBhY2thZ2VKU09OOiBQYWNrYWdlSnNvbjtcbiAgcHJpdmF0ZSBib3dlckpzb246IFBhY2thZ2VKc29uO1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQUk9KRUNUKSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG4gICAgdGhpcy5wcm9qZWN0ID0gcHJvamVjdDtcbiAgICB0aGlzLnJlbG9hZFBhY2thZ2VKc29uSW5NZW1vcnkoKTtcbiAgfVxuXG4gIHVwZGF0ZURlcHNGcm9tKGxvY2F0aW9uczogc3RyaW5nW10pIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIGlmIHNvbWV0aGluZyBlbHNlIGNoYW5nZSBwYWNrYWdlLmpzb24gaW4gdGhpcyBwcm9qZWN0XG4gICAqIGFuZCB5b3Uga25vdyB0aGF0IHlvdSBuZWVkIHRvIHJlbG9hZCBpdC4uXG4gICAqL1xuICByZWxvYWRQYWNrYWdlSnNvbkluTWVtb3J5KCk6IHZvaWQge1xuICAgIHRoaXMucGFja2FnZUpTT04gPSB0aGlzLnByb2plY3QucmVhZEpzb24oY29uZmlnLmZpbGUucGFja2FnZV9qc29uKTtcbiAgICB0aGlzLmJvd2VySnNvbiA9IHRoaXMucHJvamVjdC5yZWFkSnNvbihjb25maWcuZmlsZS5ib3dlcl9qc29uKTtcbiAgfVxuXG5cblxuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnBhY2thZ2VKU09OPy5uYW1lIHx8ICcnO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiB2ZXJzaW9uIGZyb20gcGFja2FnZS5qc29uIC0+IHByb3BlcnR5IHZlcnNpb25cbiAgICovXG4gIGdldCB2ZXJzaW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucGFja2FnZUpTT04/LnZlcnNpb247XG4gIH1cblxuXG4gIC8qKlxuICAgKiBiaW4gd2l0aCBjbGkgY29uZmlnIGZyb20gcGFja2FnZS5qc29uXG4gICAqL1xuICBnZXQgYmluKCk6IHsgW2NsaU5hbWU6IHN0cmluZ106IHN0cmluZyB9IHtcbiAgICByZXR1cm4gKHRoaXMucGFja2FnZUpTT04/LmJpbiB8fCB7fSkgYXMgYW55O1xuICB9XG5cblxuICBzZXQgdmVyc2lvbihuZXdWZXJzaW9uOiBzdHJpbmcpIHtcbiAgICB0aGlzLnBhY2thZ2VKU09OLnZlcnNpb24gPSBuZXdWZXJzaW9uO1xuICAgIHRoaXMucHJvamVjdC53cml0ZUpzb24oY29uZmlnLmZpbGUucGFja2FnZV9qc29uLCB0aGlzLnBhY2thZ2VKU09OKTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIHVwZGF0ZURlcFxuICAgKi9cbiAgdXBkYXRlRGVwZW5kZW5jeSh7XG4gICAgcGFja2FnZU5hbWUsXG4gICAgdmVyc2lvbixcbiAgICB1cGRhdGVUYW9uSnNvbkZpcnN0LFxuICB9OiB7XG4gICAgcGFja2FnZU5hbWU6IHN0cmluZztcbiAgICB2ZXJzaW9uOiBzdHJpbmcgfCBudWxsO1xuICAgIHVwZGF0ZVRhb25Kc29uRmlyc3Q/OiBib29sZWFuO1xuICB9KTogdm9pZCB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBkZXBlbmRlbmN5IGluIHBhY2thZ2UuanNvblxuICAgKi9cbiAgYXN5bmMgdXBkYXRlRGVwKHtcbiAgICBwYWNrYWdlTmFtZSxcbiAgICB2ZXJzaW9uLFxuICAgIHVwZGF0ZVRhb25Kc29uRmlyc3QsXG4gICAgYWRkSWZOb3RFeGlzdHMsXG4gIH06IHtcbiAgICBwYWNrYWdlTmFtZTogc3RyaW5nO1xuICAgIHZlcnNpb246IHN0cmluZyB8IG51bGw7XG4gICAgdXBkYXRlVGFvbkpzb25GaXJzdD86IGJvb2xlYW47XG4gICAgYWRkSWZOb3RFeGlzdHM/OiBib29sZWFuO1xuICB9KTogUHJvbWlzZTx2b2lkPiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgZ2V0IHZlcnNpb25XaXRoUGF0Y2hQbHVzT25lKCk6IHN0cmluZyB7XG4gICAgY29uc3QgdmVyID0gdGhpcy52ZXJzaW9uLnNwbGl0KCcuJyk7XG4gICAgaWYgKHZlci5sZW5ndGggPiAwKSB7XG4gICAgICB2ZXJbdmVyLmxlbmd0aCAtIDFdID0gKHBhcnNlSW50KF8ubGFzdCh2ZXIpKSArIDEpLnRvU3RyaW5nKCk7XG4gICAgfVxuICAgIHJldHVybiB2ZXIuam9pbignLicpO1xuICB9XG5cblxuXG4gIGdldCB2ZXJzaW9uV2l0aE1pbm9yUGx1c09uZUFuZFBhdGNoWmVybygpOiBzdHJpbmcge1xuICAgIGNvbnN0IHZlciA9IHRoaXMudmVyc2lvbi5zcGxpdCgnLicpO1xuICAgIGlmICh2ZXIubGVuZ3RoID4gMSkge1xuICAgICAgdmVyWzFdID0gKHBhcnNlSW50KHZlclsxXSkgKyAxKS50b1N0cmluZygpO1xuICAgICAgZm9yIChsZXQgaW5kZXggPSAyOyBpbmRleCA8IHZlci5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgdmVyW2luZGV4XSA9ICcwJztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgSGVscGVycy53YXJuKFxuICAgICAgICBgW25wbS1wcm9qZWN0XSBzb21ldGhpbmcgd2VudCB3cm9uZyB3aXRoIGJ1bXBpbmcgbWlub3IgdmVyc2lvbmAsXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdmVyLmpvaW4oJy4nKTtcbiAgfVxuXG5cblxuICBnZXQgdmVyc2lvbldpdGhNYWpvclBsdXNPbmVBbmRNaW5vclplcm9BbmRQYXRjaFplcm8oKTogc3RyaW5nIHtcbiAgICBjb25zdCB2ZXIgPSB0aGlzLnZlcnNpb24uc3BsaXQoJy4nKTtcbiAgICBpZiAodmVyLmxlbmd0aCA+IDApIHtcbiAgICAgIHZlclswXSA9IChwYXJzZUludChfLmZpcnN0KHZlcikpICsgMSkudG9TdHJpbmcoKTtcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMTsgaW5kZXggPCB2ZXIubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIHZlcltpbmRleF0gPSAnMCc7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIEhlbHBlcnMud2FybihcbiAgICAgICAgYFtucG0tcHJvamVjdF0gc29tZXRoaW5nIHdlbnQgd3Jvbmcgd2l0aCBidW1waW5nIG1ham9yIHZlcnNpb25gLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHZlci5qb2luKCcuJyk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIE1ham9yIFZlcnNpb24gZnJvbSBwYWNrYWdlLmpzb25cbiAgICovXG4gIC8vIEB0cy1pZ25vcmVcbiAgZ2V0IG1ham9yVmVyc2lvbigpOiBudW1iZXIge1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBNaW5vciBWZXJzaW9uIGZyb20gcGFja2FnZS5qc29uXG4gICAqL1xuICAvLyBAdHMtaWdub3JlXG4gIGdldCBtaW5vclZlcnNpb24oKTogbnVtYmVyIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkXG4gICAqL1xuICBhc3luYyBidW1wUGF0Y2hWZXJzaW9uKCkge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIGdldCB2ZXJzaW9uUGF0aEFzTnVtYmVyKCk6IG51bWJlciB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogbnBtIGRlcGVuZGVuY2llcyBmcm9tIHBhY2thZ2UuanNvblxuICAgKi9cbiAgZ2V0IGRlcGVuZGVuY2llcygpIHtcbiAgICByZXR1cm4gKHRoaXMucGFja2FnZUpTT04gPyB0aGlzLnBhY2thZ2VKU09OLmRlcGVuZGVuY2llcyA6IHt9KSB8fCB7fTtcbiAgfVxuXG4gIGdldCBib3dlckRlcGVuZGVuY2llcygpIHtcbiAgICByZXR1cm4gKHRoaXMuYm93ZXJKc29uID8gdGhpcy5ib3dlckpzb24uZGVwZW5kZW5jaWVzIDoge30pIHx8IHt9O1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBwZWVyRGVwZW5kZW5jaWVzIGRlcGVuZGVuY2llc1xuICAgKi9cbiAgZ2V0IHBlZXJEZXBlbmRlbmNpZXMoKSB7XG4gICAgcmV0dXJuICh0aGlzLnBhY2thZ2VKU09OID8gdGhpcy5wYWNrYWdlSlNPTi5wZWVyRGVwZW5kZW5jaWVzIDoge30pIHx8IHt9O1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBkZXZEZXBlbmRlbmNpZXMgZGVwZW5kZW5jaWVzXG4gICAqL1xuICBnZXQgZGV2RGVwZW5kZW5jaWVzKCkge1xuICAgIHJldHVybiAodGhpcy5wYWNrYWdlSlNPTiA/IHRoaXMucGFja2FnZUpTT04uZGV2RGVwZW5kZW5jaWVzIDoge30pIHx8IHt9O1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiByZXNvbHV0aW9ucyBkZXBlbmRlbmNpZXNcbiAgICovXG4gIGdldCByZXNvbHV0aW9ucygpIHtcbiAgICByZXR1cm4gKHRoaXMucGFja2FnZUpTT04gPyB0aGlzLnBhY2thZ2VKU09OWydyZXNvbHV0aW9ucyddIDoge30pIHx8IHt9O1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBvYmplY3Qgd2l0bCBhbGwgZGVwcyBmcm9tIGN1cnJlbnQgcHJvamVjdCBwYWNrYWdlIGpzb25cbiAgICovXG4gIGdldCBhbGxEZXBlbmRlbmNpZXMoKTogeyBbcGFja2FnZU5hbWU6IHN0cmluZ106IHN0cmluZyB9IHtcbiAgICByZXR1cm4gdGhpcy5hbGxEZXBzRnJvbVBhY2thZ2VKc29uKHRoaXMucGFja2FnZUpTT04pO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIG9iamVjdCB3aXRsIGFsbCBkZXBzIGZyb20gcGFja2FnZSBqc29uXG4gICAqL1xuICBhbGxEZXBzRnJvbVBhY2thZ2VKc29uKHBhY2thZ2VKc29uOiBQYWNrYWdlSnNvbikge1xuICAgIHJldHVybiBfLm1lcmdlKHtcbiAgICAgIC4uLihwYWNrYWdlSnNvbi5kZXZEZXBlbmRlbmNpZXMgfHwge30pLFxuICAgICAgLi4uKHBhY2thZ2VKc29uLnBlZXJEZXBlbmRlbmNpZXMgfHwge30pLFxuICAgICAgLi4uKHBhY2thZ2VKc29uLmRlcGVuZGVuY2llcyB8fCB7fSksXG4gICAgICAuLi4ocGFja2FnZUpzb24ucmVzb2x1dGlvbnMgfHwge30pLFxuICAgIH0pIGFzIGFueTtcbiAgfVxuXG5cblxuICBsaW5rTm9kZU1vZHVsZXNUbyhwcm9qOiBQYXJ0aWFsPEJhc2VQcm9qZWN0Pikge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIHByZWZlcllhcm5PdmVyTnBtKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG5cblxuICBhc3luYyBtYWtlU3VyZU5vZGVNb2R1bGVzSW5zdGFsbGVkKFxuICAgIG9wdGlvbnM/OiBPbWl0PENvcmVNb2RlbHMuTnBtSW5zdGFsbE9wdGlvbnMsICdwa2cnPixcbiAgKSB7XG4gICAgaWYgKHRoaXMuZW1wdHlOb2RlTW9kdWxlcykge1xuICAgICAgYXdhaXQgdGhpcy5yZWluc3RhbGxOb2RlTW9kdWxlcyhvcHRpb25zKTtcbiAgICB9XG4gIH1cblxuXG5cbiAgZGVsZXRlTm9kZU1vZHVsZXMoKSB7XG4gICAgdGhpcy5wcm9qZWN0LnJlbW92ZShjb25maWcuZm9sZGVyLm5vZGVfbW9kdWxlcyk7XG4gIH1cblxuXG5cbiAgYXN5bmMgcmVpbnN0YWxsTm9kZU1vZHVsZXMoXG4gICAgb3B0aW9ucz86IE9taXQ8Q29yZU1vZGVscy5OcG1JbnN0YWxsT3B0aW9ucywgJ3BrZyc+LFxuICApIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB0cnVlIGlmIG5vZGVfbW9kdWxlcyBmb2xkZXIgaXMgZW1wdHlcbiAgICovXG4gIGdldCBlbXB0eU5vZGVNb2R1bGVzKCkge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIGFzeW5jIHJlc2V0UGFja2FnZUxvY2tKc29uKCkge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIHN0YXJ0TnBtVGFzayh0YXNrTmFtZTogc3RyaW5nLCBhZGRpdGlvbmFsQXJndW1lbnRzPzogc3RyaW5nIHwgb2JqZWN0KSB7XG4gICAgaWYgKF8uaXNPYmplY3QoYWRkaXRpb25hbEFyZ3VtZW50cykpIHtcbiAgICAgIGFkZGl0aW9uYWxBcmd1bWVudHMgPSBPYmplY3Qua2V5cyhhZGRpdGlvbmFsQXJndW1lbnRzKVxuICAgICAgICAubWFwKGsgPT4gYC0tJHtrfSAke2FkZGl0aW9uYWxBcmd1bWVudHNba119YClcbiAgICAgICAgLmpvaW4oJyAnKTtcbiAgICB9XG4gICAgY29uc3QgY29tbWFuZCA9IGBucG0gcnVuICR7dGFza05hbWV9ICR7XG4gICAgICBhZGRpdGlvbmFsQXJndW1lbnRzID8gJyAtLSAnICsgYWRkaXRpb25hbEFyZ3VtZW50cyA6ICcnXG4gICAgfWA7XG4gICAgSGVscGVycy5pbmZvKGBTdGFydGluZyBucG0gdGFzazogXCIke2NvbW1hbmR9XCJgKTtcblxuICAgIHJldHVybiB0aGlzLnByb2plY3QucnVuKGNvbW1hbmQsIHtcbiAgICAgIG91dHB1dDogdHJ1ZSxcbiAgICAgIGJpZ2dlckJ1ZmZlcjogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG5cblxuICBhc3luYyBwcmVwYXJlQ29tbWFuZChcbiAgICBvcHRpb25zPzogQ29yZU1vZGVscy5OcG1JbnN0YWxsT3B0aW9ucyxcbiAgKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBsZXQge1xuICAgICAgcGtnLFxuICAgICAgc2lsZW50LFxuICAgICAgdXNlWWFybixcbiAgICAgIGZvcmNlLFxuICAgICAgcmVtb3ZlWWFybk9yUGFja2FnZUpzb25Mb2NrLFxuICAgICAgZ2VuZXJhdGVZYXJuT3JQYWNrYWdlSnNvbkxvY2ssXG4gICAgfSA9IG9wdGlvbnMgfHwge307XG5cbiAgICBmb3JjZSA9IHRydWU7IC8vIFRPRE8gUVVJQ0tfRklYXG5cbiAgICBsZXQgY29tbWFuZCA9ICcnO1xuICAgIGNvbnN0IGNvbW1vbk9wdGlvbnMgPSBgLS1pZ25vcmUtZW5naW5lc2A7XG5cbiAgICBpZiAodXNlWWFybikge1xuXG4gICAgICBjb25zdCBhcmdzRm9yRmFzdGVySW5zdGFsbCA9IGAke2ZvcmNlID8gJy0tZm9yY2UnIDogJyd9ICR7Y29tbW9uT3B0aW9uc30gYDtcbiAgICAgIGNvbW1hbmQgPVxuICAgICAgICBgJHtcbiAgICAgICAgICByZW1vdmVZYXJuT3JQYWNrYWdlSnNvbkxvY2tcbiAgICAgICAgICAgID8gYChybSAke2NvbmZpZy5maWxlLnlhcm5fbG9ja30gIHx8IHRydWUpIGAgK1xuICAgICAgICAgICAgICBgJiYgdG91Y2ggJHtjb25maWcuZmlsZS55YXJuX2xvY2t9ICYmIGBcbiAgICAgICAgICAgIDogJydcbiAgICAgICAgfWAgK1xuICAgICAgICBgeWFybiAke3BrZyA/IChwa2c/Lmluc3RhbGxUeXBlID09PSAncmVtb3ZlJyA/ICdyZW1vdmUnIDogJ2FkZCcpIDogJ2luc3RhbGwnfSAke3BrZyA/IHBrZy5uYW1lIDogJyd9IGAgK1xuICAgICAgICBgICR7Z2VuZXJhdGVZYXJuT3JQYWNrYWdlSnNvbkxvY2sgPyAnJyA6ICctLW5vLWxvY2tmaWxlJ30gYCArXG4gICAgICAgIGAgJHthcmdzRm9yRmFzdGVySW5zdGFsbH0gYCArXG4gICAgICAgIGAgJHtwa2cgJiYgcGtnLmluc3RhbGxUeXBlICYmIHBrZy5pbnN0YWxsVHlwZSA9PT0gJy0tc2F2ZS1kZXYnID8gJy1kZXYnIDogJyd9IGA7XG5cbiAgICB9IGVsc2Uge1xuXG4gICAgICBjb25zdCBhcmdzRm9yRmFzdGVySW5zdGFsbCA9XG4gICAgICAgIGAke2ZvcmNlID8gJy0tZm9yY2UnIDogJyd9ICR7Y29tbW9uT3B0aW9uc30gLS1uby1hdWRpdCBgICtcbiAgICAgICAgYCR7c2lsZW50ID8gJy0tc2lsZW50IC0tbm8tcHJvZ3Jlc3MnIDogJyd9ICAgYDtcblxuICAgICAgY29tbWFuZCA9XG4gICAgICAgIGAke1xuICAgICAgICAgIHJlbW92ZVlhcm5PclBhY2thZ2VKc29uTG9ja1xuICAgICAgICAgICAgPyBgKHJtICR7Y29uZmlnLmZpbGUucGFja2FnZV9sb2NrX2pzb259IHx8IHRydWUpIGAgK1xuICAgICAgICAgICAgICBgJiYgdG91Y2ggJHtjb25maWcuZmlsZS5wYWNrYWdlX2xvY2tfanNvbn0gICYmIGBcbiAgICAgICAgICAgIDogJydcbiAgICAgICAgfWAgK1xuICAgICAgICBgbnB4IC0tbm9kZS1vcHRpb25zPS0tbWF4LW9sZC1zcGFjZS1zaXplPTgwMDAgbnBtIGAgK1xuICAgICAgICBgJHtwa2c/Lmluc3RhbGxUeXBlID09PSAncmVtb3ZlJyA/ICd1bmluc3RhbGwnIDogJ2luc3RhbGwnfSAke3BrZyA/IHBrZy5uYW1lIDogJyd9IGAgK1xuICAgICAgICBgICR7Z2VuZXJhdGVZYXJuT3JQYWNrYWdlSnNvbkxvY2sgPyAnJyA6ICctLW5vLXBhY2thZ2UtbG9jayd9IGAgK1xuICAgICAgICBgICR7cGtnICYmIHBrZy5pbnN0YWxsVHlwZSA/IHBrZy5pbnN0YWxsVHlwZSA6ICcnfSBgICtcbiAgICAgICAgYCAke2FyZ3NGb3JGYXN0ZXJJbnN0YWxsfSBgO1xuXG4gICAgfVxuICAgIEhlbHBlcnMuaW5mbyhgQ29tbWFuZCBmb3IgbnBtIGluc3RhbGw6XG5cbiAgICAgICR7Y29tbWFuZH1cblxuICAgICAgYCk7XG4gICAgcmV0dXJuIGNvbW1hbmQ7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSByZWdpc3RyeSB3aXRob3V0IHNwZWNpZmllZCByZWdpc3RyIGlzIGNoZWNraW5nIG5wbSByZWdpc3RyeVxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgYXN5bmMgaXNMb2dnZWRJblRvUmVnaXN0cnkocmVnaXN0cnk/OiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBQcm9tcHQgdGhlIHVzZXIgdG8gbG9nIGluIHRvIGEgc3BlY2lmaWMgbnBtIHJlZ2lzdHJ5LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3JlZ2lzdHJ5XSAtIE9wdGlvbmFsIG5wbSByZWdpc3RyeSBVUkwuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGxvZ2luIHByb2Nlc3MgY29tcGxldGVzLlxuICAgKi9cbiAgYXN5bmMgbG9naW5Ub1JlZ2lzdHJ5KHJlZ2lzdHJ5Pzogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIGFzeW5jIG1ha2VTdXJlTG9nZ2VkSW5Ub05wbVJlZ2lzdHJ5KHJlZ2lzdHJ5Pzogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKiB1c2UgbWFrZVN1cmVMb2dnZWRJblRvTnBtUmVnaXN0cnkoKVxuICAgKi9cbiAgY2hlY2tJZkxvZ2dpbkluVG9OcG0oKSB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cbn1cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPXRucC1oZWxwZXJzIGxpYi9iYXNlL2NsYXNzZXMvYmFzZS1ucG0taGVscGVycy50cyJdfQ==
232
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1ucG0taGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1kaXN0L3RucC1oZWxwZXJzL3Byb2plY3RzL3RucC1oZWxwZXJzL3NyYy9saWIvYmFzZS9jbGFzc2VzL2Jhc2UtbnBtLWhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBa0JBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBS3RELE1BQU0sT0FBTyxjQUVYLFNBQVEscUJBQThCO0lBaUJ0QyxZQUFZLE9BQWdCO1FBQzFCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQWZELHFCQUFnQixHQUEyQixlQUFlLENBQUM7UUFDMUQsNkJBQXdCLEdBQ3ZDLGVBQWUsQ0FBQztRQUdGLHFCQUFnQixHQUEyQixlQUFlLENBQUM7UUFDMUQsOEJBQXlCLEdBQ3hDLGVBQWUsQ0FBQztRQVNoQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztZQUM1RCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzFFLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztZQUM3RCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUMxQyxPQUFPLENB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QUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUlEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLG9CQUFvQixDQUFDLE9BQStCO1FBQzVELEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQztDQUVGO0FBRUEsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyw2RUFBNkUiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuXG5pbXBvcnQgeyBjb25maWcgfSBmcm9tICd0bnAtY29uZmlnL2Jyb3dzZXInO1xuaW1wb3J0IHsgVXRpbHNUZXJtaW5hbCB9IGZyb20gJ3RucC1jb3JlL2Jyb3dzZXInO1xuaW1wb3J0IHsgICBjaGFsaywgICBjaGlsZF9wcm9jZXNzLCAgIGNyb3NzUGxhdGZvcm1QYXRoLCAgIGZzZSwgICBwYXRoLCB9IGZyb20gJ3RucC1jb3JlL2Jyb3dzZXInOy8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cblxuaW1wb3J0IHsgXyB9IGZyb20gJ3RucC1jb3JlL2Jyb3dzZXInO1xuaW1wb3J0IHsgQ29yZU1vZGVscyB9IGZyb20gJ3RucC1jb3JlL2Jyb3dzZXInO1xuaW1wb3J0IHsgUGFja2FnZUpzb24gfSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQgeyBIZWxwZXJzIH0gZnJvbSAnLi4vLi4vaW5kZXgnO1xuXG5pbXBvcnQgeyBCYXNlQm93ZXJKc29uIH0gZnJvbSAnLi9iYXNlLWJvd2VyLWpzb24nO1xuaW1wb3J0IHsgQmFzZUZlYXR1cmVGb3JQcm9qZWN0IH0gZnJvbSAnLi9iYXNlLWZlYXR1cmUtZm9yLXByb2plY3QnO1xuaW1wb3J0IHsgQmFzZU5vZGVNb2R1bGVzIH0gZnJvbSAnLi9iYXNlLW5vZGUtbW9kdWxlcyc7XG5pbXBvcnQgeyBCYXNlUGFja2FnZUpzb24gfSBmcm9tICcuL2Jhc2UtcGFja2FnZS1qc29uJztcbmltcG9ydCB0eXBlIHsgQmFzZVByb2plY3QgfSBmcm9tICcuL2Jhc2UtcHJvamVjdCc7XG5cblxuXG5leHBvcnQgY2xhc3MgQmFzZU5wbUhlbHBlcnM8XG4gIFBST0pFQ1QgZXh0ZW5kcyBCYXNlUHJvamVjdCA9IEJhc2VQcm9qZWN0LFxuPiBleHRlbmRzIEJhc2VGZWF0dXJlRm9yUHJvamVjdDxQUk9KRUNUPiB7XG5cbiAgcHVibGljIHJlYWRvbmx5IHBhY2thZ2VKc29uOiBCYXNlUGFja2FnZUpzb247XG4gIHB1YmxpYyByZWFkb25seSBfcGFja2FnZUpzb25UeXBlOiB0eXBlb2YgQmFzZVBhY2thZ2VKc29uID0gQmFzZVBhY2thZ2VKc29uO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wYWNrYWdlSnNvblR5cGVPcmlnaW5hbDogdHlwZW9mIEJhc2VQYWNrYWdlSnNvbiA9XG4gICAgQmFzZVBhY2thZ2VKc29uO1xuXG4gIHB1YmxpYyByZWFkb25seSBub2RlTW9kdWxlczogQmFzZU5vZGVNb2R1bGVzO1xuICBwdWJsaWMgcmVhZG9ubHkgX25vZGVNb2R1bGVzVHlwZTogdHlwZW9mIEJhc2VOb2RlTW9kdWxlcyA9IEJhc2VOb2RlTW9kdWxlcztcbiAgcHJpdmF0ZSByZWFkb25seSBfX25vZGVNb2R1bGVzVHlwZU9yaWdpbmFsOiB0eXBlb2YgQmFzZU5vZGVNb2R1bGVzID1cbiAgICBCYXNlTm9kZU1vZHVsZXM7XG5cbiAgcHVibGljIHJlYWRvbmx5IGJvd2VySnNvbjogQmFzZUJvd2VySnNvbjtcblxuXG5cblxuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQUk9KRUNUKSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG4gICAgdGhpcy5wcm9qZWN0ID0gcHJvamVjdDtcbiAgICBpZiAodGhpcy5fcGFja2FnZUpzb25UeXBlID09PSB0aGlzLl9wYWNrYWdlSnNvblR5cGVPcmlnaW5hbCkge1xuICAgICAgdGhpcy5wYWNrYWdlSnNvbiA9IG5ldyB0aGlzLl9wYWNrYWdlSnNvblR5cGUoeyBjd2Q6IHByb2plY3QubG9jYXRpb24gfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9ub2RlTW9kdWxlc1R5cGUgPT09IHRoaXMuX19ub2RlTW9kdWxlc1R5cGVPcmlnaW5hbCkge1xuICAgICAgdGhpcy5ub2RlTW9kdWxlcyA9IG5ldyB0aGlzLl9ub2RlTW9kdWxlc1R5cGUoXG4gICAgICAgIHByb2plY3QubG9jYXRpb24sXG4gICAgICAgIHRoaXMgYXMgYW55LFxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5ib3dlckpzb24gPSBuZXcgQmFzZUJvd2VySnNvbihwcm9qZWN0LmxvY2F0aW9uKTtcbiAgfVxuXG5cblxuICBwcmVmZXJZYXJuT3Zlck5wbSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuXG5cbiAgYXN5bmMgcmVzZXRQYWNrYWdlTG9ja0pzb24oKSB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgc3RhcnROcG1UYXNrKHRhc2tOYW1lOiBzdHJpbmcsIGFkZGl0aW9uYWxBcmd1bWVudHM/OiBzdHJpbmcgfCBvYmplY3QpIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSByZWdpc3RyeSB3aXRob3V0IHNwZWNpZmllZCByZWdpc3RyIGlzIGNoZWNraW5nIG5wbSByZWdpc3RyeVxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgYXN5bmMgaXNMb2dnZWRJblRvUmVnaXN0cnkocmVnaXN0cnk/OiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBQcm9tcHQgdGhlIHVzZXIgdG8gbG9nIGluIHRvIGEgc3BlY2lmaWMgbnBtIHJlZ2lzdHJ5LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3JlZ2lzdHJ5XSAtIE9wdGlvbmFsIG5wbSByZWdpc3RyeSBVUkwuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGxvZ2luIHByb2Nlc3MgY29tcGxldGVzLlxuICAgKi9cbiAgYXN5bmMgbG9naW5Ub1JlZ2lzdHJ5KHJlZ2lzdHJ5Pzogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICBhc3luYyBtYWtlU3VyZUxvZ2dlZEluVG9OcG1SZWdpc3RyeShyZWdpc3RyeT86IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIGFzeW5jIHNob3VsZFJlbGVhc2VNZXNzYWdlKG9wdGlvbnM6IHtcbiAgICByZWxlYXNlVmVyc2lvbkJ1bXBUeXBlOiBDb3JlTW9kZWxzLlJlbGVhc2VWZXJzaW9uVHlwZTtcbiAgICB2ZXJzaW9uVG9Vc2U/OiBzdHJpbmc7XG4gICAgY2hpbGRyZW4/OiBCYXNlUHJvamVjdFtdO1xuICAgIHdoYXRUb1JlbGVhc2U6IHtcbiAgICAgIGl0c2VsZjogYm9vbGVhbjtcbiAgICAgIGNoaWxkcmVuOiBib29sZWFuO1xuICAgIH07XG4gICAgc2tpcFF1ZXN0aW9uVG9Vc2VyPzogYm9vbGVhbjtcbiAgfSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIEBwYXJhbSByZWdpc3RyeSB3aGVuIG5vdCBzcGVjaWZpZWQsIGl0IHdpbGwgdXNlIHRoZSBkZWZhdWx0IG5wbSByZWdpc3RyeVxuICAgKi9cbiAgYXN5bmMgcHVibGlzaFRvTnBtUmVnaXN0cnkob3B0aW9ucz86IHsgcmVnaXN0cnk/OiBzdHJpbmcgfSk6IFByb21pc2U8dm9pZD4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cbn1cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPXRucC1oZWxwZXJzIGxpYi9iYXNlL2NsYXNzZXMvYmFzZS1ucG0taGVscGVycy50cyJdfQ==