tnp-helpers 18.0.16 → 18.0.18

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 (412) hide show
  1. package/assets/shared/shared_folder_info.txt +1 -1
  2. package/browser/README.md +24 -24
  3. package/browser/esm2022/lib/base/classes/base-cli-worker-config.mjs +40 -0
  4. package/browser/esm2022/lib/base/classes/base-cli-worker-controller.mjs +125 -0
  5. package/browser/esm2022/lib/base/classes/base-cli-worker.mjs +466 -0
  6. package/browser/esm2022/lib/base/classes/base-compiler-for-project.mjs +61 -0
  7. package/browser/esm2022/lib/base/classes/base-db.mjs +31 -0
  8. package/browser/esm2022/lib/base/classes/base-debounce-compiler-for-project.mjs +56 -0
  9. package/browser/esm2022/lib/base/classes/base-feature-for-project.mjs +8 -0
  10. package/{websql/esm2022/lib/base → browser/esm2022/lib/base/classes}/base-git.mjs +2 -2
  11. package/{websql/esm2022/lib/base → browser/esm2022/lib/base/classes}/base-github-pages.mjs +2 -2
  12. package/{websql/esm2022/lib/base → browser/esm2022/lib/base/classes}/base-library-build.mjs +3 -3
  13. package/browser/esm2022/lib/base/classes/base-linked-projects.mjs +320 -0
  14. package/browser/esm2022/lib/base/classes/base-npm-helpers.mjs +630 -0
  15. package/browser/esm2022/lib/base/classes/base-project-resolver.mjs +291 -0
  16. package/browser/esm2022/lib/base/classes/base-project.mjs +926 -0
  17. package/browser/esm2022/lib/base/classes/base-quick-fixes.mjs +24 -0
  18. package/{websql/esm2022/lib/base → browser/esm2022/lib/base/classes}/base-release-process.mjs +4 -4
  19. package/browser/esm2022/lib/base/classes/base-vscode.mjs +488 -0
  20. package/browser/esm2022/lib/base/classes/index.mjs +22 -0
  21. package/browser/esm2022/lib/base/commit-data.mjs +1 -1
  22. package/browser/esm2022/lib/base/config-database.mjs +5 -2
  23. package/browser/esm2022/lib/base/core-project.mjs +1 -1
  24. package/browser/esm2022/lib/base/index.mjs +3 -19
  25. package/browser/esm2022/lib/base/project-database.mjs +2 -2
  26. package/browser/esm2022/lib/base/tcp-udp-ports/index.mjs +7 -0
  27. package/browser/esm2022/lib/base/tcp-udp-ports/not-assignable-port.entity.mjs +19 -0
  28. package/browser/esm2022/lib/base/tcp-udp-ports/ports.controller.mjs +108 -0
  29. package/browser/esm2022/lib/base/tcp-udp-ports/ports.entity.mjs +26 -0
  30. package/browser/esm2022/lib/base/tcp-udp-ports/tcp-udp-ports.context.mjs +35 -0
  31. package/browser/esm2022/lib/base/tcp-udp-ports/tcp-upd-ports.worker.mjs +122 -0
  32. package/browser/esm2022/lib/utils.mjs +33 -144
  33. package/browser/esm2022/migrations/1736198527297_init.mjs +41 -0
  34. package/browser/esm2022/migrations/1736199486472_addingNotAssignablePorts.mjs +55 -0
  35. package/browser/esm2022/migrations/1736454437350_addFreePorts.mjs +37 -0
  36. package/browser/esm2022/migrations/index.mjs +5 -0
  37. package/browser/esm2022/migrations/migrations_index._auto-generated_.mjs +16 -0
  38. package/browser/fesm2022/tnp-helpers.mjs +2136 -1591
  39. package/browser/fesm2022/tnp-helpers.mjs.map +1 -1
  40. package/{client/lib/base → browser/lib/base/classes}/base-cli-worker-controller.d.ts +2 -2
  41. package/browser/lib/base/{base-cli-worker.d.ts → classes/base-cli-worker.d.ts} +7 -1
  42. package/browser/lib/base/{base-git.d.ts → classes/base-git.d.ts} +1 -1
  43. package/{client/lib/base → browser/lib/base/classes}/base-library-build.d.ts +1 -1
  44. package/{websql/lib/base → browser/lib/base/classes}/base-linked-projects.d.ts +1 -1
  45. package/{client/lib/base → browser/lib/base/classes}/base-project-resolver.d.ts +4 -4
  46. package/browser/lib/base/{base-project.d.ts → classes/base-project.d.ts} +11 -4
  47. package/browser/lib/base/{base-release-process.d.ts → classes/base-release-process.d.ts} +1 -1
  48. package/browser/lib/base/classes/base-vscode.d.ts +24 -0
  49. package/browser/lib/base/classes/index.d.ts +16 -0
  50. package/browser/lib/base/config-database.d.ts +2 -2
  51. package/browser/lib/base/core-project.d.ts +1 -1
  52. package/browser/lib/base/index.d.ts +3 -16
  53. package/browser/lib/base/project-database.d.ts +2 -2
  54. package/browser/lib/base/tcp-udp-ports/index.d.ts +5 -0
  55. package/browser/lib/base/tcp-udp-ports/not-assignable-port.entity.d.ts +7 -0
  56. package/browser/lib/base/tcp-udp-ports/ports.controller.d.ts +20 -0
  57. package/browser/lib/base/tcp-udp-ports/ports.entity.d.ts +15 -0
  58. package/browser/lib/base/tcp-udp-ports/tcp-udp-ports.context.d.ts +59 -0
  59. package/browser/lib/base/tcp-udp-ports/tcp-upd-ports.worker.d.ts +23 -0
  60. package/browser/lib/utils.d.ts +2 -38
  61. package/browser/migrations/1736198527297_init.d.ts +19 -0
  62. package/browser/migrations/1736199486472_addingNotAssignablePorts.d.ts +11 -0
  63. package/browser/migrations/1736454437350_addFreePorts.d.ts +10 -0
  64. package/browser/migrations/index.d.ts +2 -0
  65. package/browser/migrations/migrations_index._auto-generated_.d.ts +12 -0
  66. package/client/README.md +24 -24
  67. package/client/esm2022/lib/base/classes/base-cli-worker-config.mjs +40 -0
  68. package/client/esm2022/lib/base/classes/base-cli-worker-controller.mjs +125 -0
  69. package/client/esm2022/lib/base/classes/base-cli-worker.mjs +466 -0
  70. package/client/esm2022/lib/base/classes/base-compiler-for-project.mjs +61 -0
  71. package/client/esm2022/lib/base/classes/base-db.mjs +31 -0
  72. package/client/esm2022/lib/base/classes/base-debounce-compiler-for-project.mjs +56 -0
  73. package/client/esm2022/lib/base/classes/base-feature-for-project.mjs +8 -0
  74. package/client/esm2022/lib/base/classes/base-git.mjs +932 -0
  75. package/client/esm2022/lib/base/classes/base-github-pages.mjs +110 -0
  76. package/{browser/esm2022/lib/base → client/esm2022/lib/base/classes}/base-library-build.mjs +2 -2
  77. package/client/esm2022/lib/base/classes/base-linked-projects.mjs +320 -0
  78. package/client/esm2022/lib/base/classes/base-npm-helpers.mjs +630 -0
  79. package/client/esm2022/lib/base/classes/base-project-resolver.mjs +291 -0
  80. package/client/esm2022/lib/base/classes/base-project.mjs +926 -0
  81. package/client/esm2022/lib/base/classes/base-quick-fixes.mjs +24 -0
  82. package/{browser/esm2022/lib/base → client/esm2022/lib/base/classes}/base-release-process.mjs +3 -3
  83. package/client/esm2022/lib/base/classes/base-vscode.mjs +488 -0
  84. package/client/esm2022/lib/base/classes/index.mjs +22 -0
  85. package/client/esm2022/lib/base/commit-data.mjs +1 -1
  86. package/client/esm2022/lib/base/config-database.mjs +5 -2
  87. package/client/esm2022/lib/base/core-project.mjs +1 -1
  88. package/client/esm2022/lib/base/index.mjs +3 -19
  89. package/client/esm2022/lib/base/project-database.mjs +2 -2
  90. package/client/esm2022/lib/base/tcp-udp-ports/index.mjs +7 -0
  91. package/client/esm2022/lib/base/tcp-udp-ports/not-assignable-port.entity.mjs +19 -0
  92. package/client/esm2022/lib/base/tcp-udp-ports/ports.controller.mjs +108 -0
  93. package/client/esm2022/lib/base/tcp-udp-ports/ports.entity.mjs +26 -0
  94. package/client/esm2022/lib/base/tcp-udp-ports/tcp-udp-ports.context.mjs +35 -0
  95. package/client/esm2022/lib/base/tcp-udp-ports/tcp-upd-ports.worker.mjs +122 -0
  96. package/client/esm2022/lib/utils.mjs +33 -144
  97. package/client/esm2022/migrations/1736198527297_init.mjs +41 -0
  98. package/client/esm2022/migrations/1736199486472_addingNotAssignablePorts.mjs +55 -0
  99. package/client/esm2022/migrations/1736454437350_addFreePorts.mjs +37 -0
  100. package/client/esm2022/migrations/index.mjs +5 -0
  101. package/client/esm2022/migrations/migrations_index._auto-generated_.mjs +16 -0
  102. package/client/fesm2022/tnp-helpers.mjs +2136 -1591
  103. package/client/fesm2022/tnp-helpers.mjs.map +1 -1
  104. package/{browser/lib/base → client/lib/base/classes}/base-cli-worker-controller.d.ts +2 -2
  105. package/client/lib/base/{base-cli-worker.d.ts → classes/base-cli-worker.d.ts} +7 -1
  106. package/{websql/lib/base → client/lib/base/classes}/base-git.d.ts +1 -1
  107. package/{browser/lib/base → client/lib/base/classes}/base-library-build.d.ts +1 -1
  108. package/{browser/lib/base → client/lib/base/classes}/base-linked-projects.d.ts +1 -1
  109. package/{websql/lib/base → client/lib/base/classes}/base-project-resolver.d.ts +4 -4
  110. package/client/lib/base/{base-project.d.ts → classes/base-project.d.ts} +11 -4
  111. package/client/lib/base/{base-release-process.d.ts → classes/base-release-process.d.ts} +1 -1
  112. package/client/lib/base/classes/base-vscode.d.ts +24 -0
  113. package/client/lib/base/classes/index.d.ts +16 -0
  114. package/client/lib/base/config-database.d.ts +2 -2
  115. package/client/lib/base/core-project.d.ts +1 -1
  116. package/client/lib/base/index.d.ts +3 -16
  117. package/client/lib/base/project-database.d.ts +2 -2
  118. package/client/lib/base/tcp-udp-ports/index.d.ts +5 -0
  119. package/client/lib/base/tcp-udp-ports/not-assignable-port.entity.d.ts +7 -0
  120. package/client/lib/base/tcp-udp-ports/ports.controller.d.ts +20 -0
  121. package/client/lib/base/tcp-udp-ports/ports.entity.d.ts +15 -0
  122. package/client/lib/base/tcp-udp-ports/tcp-udp-ports.context.d.ts +59 -0
  123. package/client/lib/base/tcp-udp-ports/tcp-upd-ports.worker.d.ts +23 -0
  124. package/client/lib/utils.d.ts +2 -38
  125. package/client/migrations/1736198527297_init.d.ts +19 -0
  126. package/client/migrations/1736199486472_addingNotAssignablePorts.d.ts +11 -0
  127. package/client/migrations/1736454437350_addFreePorts.d.ts +10 -0
  128. package/client/migrations/index.d.ts +2 -0
  129. package/client/migrations/migrations_index._auto-generated_.d.ts +12 -0
  130. package/lib/base/{base-cli-worker-controller.d.ts → classes/base-cli-worker-controller.d.ts} +4 -4
  131. package/lib/base/{base-cli-worker-controller.js → classes/base-cli-worker-controller.js} +3 -3
  132. package/lib/base/classes/base-cli-worker-controller.js.map +1 -0
  133. package/lib/base/{base-cli-worker.d.ts → classes/base-cli-worker.d.ts} +7 -1
  134. package/lib/base/{base-cli-worker.js → classes/base-cli-worker.js} +48 -29
  135. package/lib/base/classes/base-cli-worker.js.map +1 -0
  136. package/lib/base/{command-line-feature.backend.d.ts → classes/base-command-line-feature.backend.d.ts} +1 -1
  137. package/lib/base/{command-line-feature.backend.js → classes/base-command-line-feature.backend.js} +15 -15
  138. package/lib/base/classes/base-command-line-feature.backend.js.map +1 -0
  139. package/lib/base/{base-compiler-for-project.d.ts → classes/base-compiler-for-project.d.ts} +2 -2
  140. package/lib/base/{base-compiler-for-project.js → classes/base-compiler-for-project.js} +1 -1
  141. package/lib/base/{base-compiler-for-project.js.map → classes/base-compiler-for-project.js.map} +1 -1
  142. package/lib/base/{base-db.d.ts → classes/base-db.d.ts} +1 -1
  143. package/lib/base/{base-db.js → classes/base-db.js} +1 -1
  144. package/lib/base/{base-db.js.map → classes/base-db.js.map} +1 -1
  145. package/lib/base/{base-debounce-compiler-for-project.d.ts → classes/base-debounce-compiler-for-project.d.ts} +2 -2
  146. package/lib/base/{base-debounce-compiler-for-project.js.map → classes/base-debounce-compiler-for-project.js.map} +1 -1
  147. package/lib/base/{base-git.d.ts → classes/base-git.d.ts} +1 -1
  148. package/lib/base/{base-git.js → classes/base-git.js} +3 -3
  149. package/lib/base/{base-git.js.map → classes/base-git.js.map} +1 -1
  150. package/lib/base/{base-github-pages.js → classes/base-github-pages.js} +1 -1
  151. package/lib/base/{base-github-pages.js.map → classes/base-github-pages.js.map} +1 -1
  152. package/lib/base/{base-command-line.backend.d.ts → classes/base-global-command-line.backend.d.ts} +17 -4
  153. package/lib/base/{base-command-line.backend.js → classes/base-global-command-line.backend.js} +236 -161
  154. package/lib/base/classes/base-global-command-line.backend.js.map +1 -0
  155. package/lib/base/{base-ignore-hide.js → classes/base-ignore-hide.js} +1 -1
  156. package/lib/base/{base-ignore-hide.js.map → classes/base-ignore-hide.js.map} +1 -1
  157. package/lib/base/{base-library-build.d.ts → classes/base-library-build.d.ts} +3 -3
  158. package/lib/base/{base-library-build.js → classes/base-library-build.js} +2 -2
  159. package/lib/base/{base-library-build.js.map → classes/base-library-build.js.map} +1 -1
  160. package/lib/base/{base-linked-projects.d.ts → classes/base-linked-projects.d.ts} +1 -1
  161. package/lib/base/{base-linked-projects.js → classes/base-linked-projects.js} +1 -1
  162. package/lib/base/{base-linked-projects.js.map → classes/base-linked-projects.js.map} +1 -1
  163. package/lib/base/{base-npm-helpers.d.ts → classes/base-npm-helpers.d.ts} +3 -3
  164. package/lib/base/{base-npm-helpers.js → classes/base-npm-helpers.js} +1 -1
  165. package/lib/base/{base-npm-helpers.js.map → classes/base-npm-helpers.js.map} +1 -1
  166. package/lib/base/{base-project-resolver.d.ts → classes/base-project-resolver.d.ts} +4 -4
  167. package/lib/base/{base-project-resolver.js → classes/base-project-resolver.js} +6 -6
  168. package/lib/base/{base-project-resolver.js.map → classes/base-project-resolver.js.map} +1 -1
  169. package/lib/base/{base-project.d.ts → classes/base-project.d.ts} +14 -7
  170. package/lib/base/{base-project.js → classes/base-project.js} +34 -5
  171. package/lib/base/classes/base-project.js.map +1 -0
  172. package/lib/base/{base-quick-fixes.js → classes/base-quick-fixes.js} +1 -1
  173. package/lib/base/{base-quick-fixes.js.map → classes/base-quick-fixes.js.map} +1 -1
  174. package/lib/base/{base-release-process.d.ts → classes/base-release-process.d.ts} +3 -3
  175. package/lib/base/{base-release-process.js → classes/base-release-process.js} +2 -2
  176. package/lib/base/{base-release-process.js.map → classes/base-release-process.js.map} +1 -1
  177. package/lib/base/{base-start-config.backend.js → classes/base-start-config.backend.js} +2 -2
  178. package/lib/base/{base-start-config.backend.js.map → classes/base-start-config.backend.js.map} +1 -1
  179. package/lib/base/classes/base-vscode.d.ts +23 -0
  180. package/lib/base/classes/base-vscode.js +451 -0
  181. package/lib/base/classes/base-vscode.js.map +1 -0
  182. package/lib/base/classes/index.d.ts +18 -0
  183. package/lib/base/classes/index.js +24 -0
  184. package/lib/base/classes/index.js.map +1 -0
  185. package/lib/base/commit-data.js.map +1 -1
  186. package/lib/base/config-database.d.ts +2 -2
  187. package/lib/base/config-database.js +5 -8
  188. package/lib/base/config-database.js.map +1 -1
  189. package/lib/base/core-project.d.ts +3 -3
  190. package/lib/base/gh-temp-code.d.ts +1 -1
  191. package/lib/base/index.d.ts +2 -18
  192. package/lib/base/index.js +2 -18
  193. package/lib/base/index.js.map +1 -1
  194. package/lib/base/project-database.d.ts +2 -2
  195. package/lib/base/project-database.js +1 -1
  196. package/lib/base/project-database.js.map +1 -1
  197. package/lib/base/tcp-udp-ports/index.d.ts +4 -0
  198. package/lib/base/tcp-udp-ports/index.js +8 -0
  199. package/lib/base/tcp-udp-ports/index.js.map +1 -0
  200. package/lib/base/tcp-udp-ports/not-assignable-port.entity.d.ts +6 -0
  201. package/lib/base/tcp-udp-ports/not-assignable-port.entity.js +45 -0
  202. package/lib/base/tcp-udp-ports/not-assignable-port.entity.js.map +1 -0
  203. package/lib/base/tcp-udp-ports/ports.controller.d.ts +19 -0
  204. package/lib/base/tcp-udp-ports/ports.controller.js +135 -0
  205. package/lib/base/tcp-udp-ports/ports.controller.js.map +1 -0
  206. package/lib/base/tcp-udp-ports/ports.entity.d.ts +14 -0
  207. package/lib/base/tcp-udp-ports/ports.entity.js +45 -0
  208. package/lib/base/tcp-udp-ports/ports.entity.js.map +1 -0
  209. package/lib/base/tcp-udp-ports/tcp-udp-ports.context.d.ts +58 -0
  210. package/lib/base/tcp-udp-ports/tcp-udp-ports.context.js +41 -0
  211. package/lib/base/tcp-udp-ports/tcp-udp-ports.context.js.map +1 -0
  212. package/lib/base/tcp-udp-ports/tcp-upd-ports.worker.d.ts +31 -0
  213. package/lib/base/tcp-udp-ports/tcp-upd-ports.worker.js +215 -0
  214. package/lib/base/tcp-udp-ports/tcp-upd-ports.worker.js.map +1 -0
  215. package/lib/helpers/for-backend/helpers-cli-tool.backend.d.ts +1 -1
  216. package/lib/helpers/for-backend/helpers-cli-tool.backend.js.map +1 -1
  217. package/lib/helpers/for-backend/helpers-console-gui.js +2 -1
  218. package/lib/helpers/for-backend/helpers-console-gui.js.map +1 -1
  219. package/lib/helpers/for-backend/helpers-file-folders.backend.d.ts +2 -2
  220. package/lib/helpers/for-backend/helpers-git.backend.js +2 -2
  221. package/lib/helpers/for-backend/helpers-git.backend.js.map +1 -1
  222. package/lib/helpers/for-backend/helpers-process.backend.d.ts +3 -3
  223. package/lib/helpers/for-backend/helpers-process.backend.js +4 -26
  224. package/lib/helpers/for-backend/helpers-process.backend.js.map +1 -1
  225. package/lib/helpers/for-backend/helpers-vscode.backend.d.ts +2 -2
  226. package/lib/helpers/for-browser/angular.helper.js +2 -2
  227. package/lib/helpers/helpers.d.ts +1 -1
  228. package/lib/models.d.ts +2 -2
  229. package/lib/old/base-component.js +2 -2
  230. package/lib/old/base-formly-component.js +2 -2
  231. package/lib/old/dual-component-ctrl.js +2 -2
  232. package/lib/utils.d.ts +2 -38
  233. package/lib/utils.js +51 -158
  234. package/lib/utils.js.map +1 -1
  235. package/migrations/1736198527297_init.d.ts +18 -0
  236. package/migrations/1736198527297_init.js +72 -0
  237. package/migrations/1736198527297_init.js.map +1 -0
  238. package/migrations/1736199486472_addingNotAssignablePorts.d.ts +10 -0
  239. package/migrations/1736199486472_addingNotAssignablePorts.js +94 -0
  240. package/migrations/1736199486472_addingNotAssignablePorts.js.map +1 -0
  241. package/migrations/1736454437350_addFreePorts.d.ts +9 -0
  242. package/migrations/1736454437350_addFreePorts.js +78 -0
  243. package/migrations/1736454437350_addFreePorts.js.map +1 -0
  244. package/migrations/migrations_index._auto-generated_.d.ts +11 -0
  245. package/migrations/migrations_index._auto-generated_.js +14 -0
  246. package/migrations/migrations_index._auto-generated_.js.map +1 -1
  247. package/package.json +5 -5
  248. package/taon.jsonc +49 -49
  249. package/tmp-environment.json +30 -29
  250. package/websql/README.md +24 -24
  251. package/websql/esm2022/lib/base/classes/base-cli-worker-config.mjs +40 -0
  252. package/websql/esm2022/lib/base/classes/base-cli-worker-controller.mjs +125 -0
  253. package/websql/esm2022/lib/base/classes/base-cli-worker.mjs +466 -0
  254. package/websql/esm2022/lib/base/classes/base-compiler-for-project.mjs +61 -0
  255. package/websql/esm2022/lib/base/classes/base-db.mjs +31 -0
  256. package/websql/esm2022/lib/base/classes/base-debounce-compiler-for-project.mjs +56 -0
  257. package/websql/esm2022/lib/base/classes/base-feature-for-project.mjs +8 -0
  258. package/{browser/esm2022/lib/base → websql/esm2022/lib/base/classes}/base-git.mjs +2 -2
  259. package/{client/esm2022/lib/base → websql/esm2022/lib/base/classes}/base-github-pages.mjs +2 -2
  260. package/{client/esm2022/lib/base → websql/esm2022/lib/base/classes}/base-library-build.mjs +3 -3
  261. package/websql/esm2022/lib/base/classes/base-linked-projects.mjs +320 -0
  262. package/websql/esm2022/lib/base/classes/base-npm-helpers.mjs +630 -0
  263. package/websql/esm2022/lib/base/classes/base-project-resolver.mjs +280 -0
  264. package/websql/esm2022/lib/base/classes/base-project.mjs +896 -0
  265. package/websql/esm2022/lib/base/classes/base-quick-fixes.mjs +24 -0
  266. package/{client/esm2022/lib/base → websql/esm2022/lib/base/classes}/base-release-process.mjs +4 -4
  267. package/websql/esm2022/lib/base/classes/base-vscode.mjs +488 -0
  268. package/websql/esm2022/lib/base/classes/index.mjs +22 -0
  269. package/websql/esm2022/lib/base/commit-data.mjs +1 -1
  270. package/websql/esm2022/lib/base/config-database.mjs +5 -2
  271. package/websql/esm2022/lib/base/core-project.mjs +1 -1
  272. package/websql/esm2022/lib/base/index.mjs +3 -19
  273. package/websql/esm2022/lib/base/project-database.mjs +2 -2
  274. package/websql/esm2022/lib/base/tcp-udp-ports/index.mjs +7 -0
  275. package/websql/esm2022/lib/base/tcp-udp-ports/not-assignable-port.entity.mjs +34 -0
  276. package/websql/esm2022/lib/base/tcp-udp-ports/ports.controller.mjs +108 -0
  277. package/websql/esm2022/lib/base/tcp-udp-ports/ports.entity.mjs +34 -0
  278. package/websql/esm2022/lib/base/tcp-udp-ports/tcp-udp-ports.context.mjs +35 -0
  279. package/websql/esm2022/lib/base/tcp-udp-ports/tcp-upd-ports.worker.mjs +122 -0
  280. package/websql/esm2022/lib/utils.mjs +33 -144
  281. package/websql/esm2022/migrations/1736198527297_init.mjs +41 -0
  282. package/websql/esm2022/migrations/1736199486472_addingNotAssignablePorts.mjs +55 -0
  283. package/websql/esm2022/migrations/1736454437350_addFreePorts.mjs +37 -0
  284. package/websql/esm2022/migrations/index.mjs +5 -0
  285. package/websql/esm2022/migrations/migrations_index._auto-generated_.mjs +16 -0
  286. package/websql/fesm2022/tnp-helpers.mjs +1942 -1379
  287. package/websql/fesm2022/tnp-helpers.mjs.map +1 -1
  288. package/websql/lib/base/{base-cli-worker-controller.d.ts → classes/base-cli-worker-controller.d.ts} +2 -2
  289. package/websql/lib/base/{base-cli-worker.d.ts → classes/base-cli-worker.d.ts} +7 -1
  290. package/{client/lib/base → websql/lib/base/classes}/base-git.d.ts +1 -1
  291. package/websql/lib/base/{base-library-build.d.ts → classes/base-library-build.d.ts} +1 -1
  292. package/{client/lib/base → websql/lib/base/classes}/base-linked-projects.d.ts +1 -1
  293. package/{browser/lib/base → websql/lib/base/classes}/base-project-resolver.d.ts +4 -4
  294. package/websql/lib/base/{base-project.d.ts → classes/base-project.d.ts} +11 -4
  295. package/websql/lib/base/{base-release-process.d.ts → classes/base-release-process.d.ts} +1 -1
  296. package/websql/lib/base/classes/base-vscode.d.ts +24 -0
  297. package/websql/lib/base/classes/index.d.ts +16 -0
  298. package/websql/lib/base/config-database.d.ts +2 -2
  299. package/websql/lib/base/core-project.d.ts +1 -1
  300. package/websql/lib/base/index.d.ts +3 -16
  301. package/websql/lib/base/project-database.d.ts +2 -2
  302. package/websql/lib/base/tcp-udp-ports/index.d.ts +5 -0
  303. package/websql/lib/base/tcp-udp-ports/not-assignable-port.entity.d.ts +7 -0
  304. package/websql/lib/base/tcp-udp-ports/ports.controller.d.ts +20 -0
  305. package/websql/lib/base/tcp-udp-ports/ports.entity.d.ts +15 -0
  306. package/websql/lib/base/tcp-udp-ports/tcp-udp-ports.context.d.ts +59 -0
  307. package/websql/lib/base/tcp-udp-ports/tcp-upd-ports.worker.d.ts +23 -0
  308. package/websql/lib/utils.d.ts +2 -38
  309. package/websql/migrations/1736198527297_init.d.ts +19 -0
  310. package/websql/migrations/1736199486472_addingNotAssignablePorts.d.ts +11 -0
  311. package/websql/migrations/1736454437350_addFreePorts.d.ts +10 -0
  312. package/websql/migrations/index.d.ts +2 -0
  313. package/websql/migrations/migrations_index._auto-generated_.d.ts +12 -0
  314. package/browser/esm2022/lib/base/base-cli-worker-config.mjs +0 -40
  315. package/browser/esm2022/lib/base/base-cli-worker-controller.mjs +0 -125
  316. package/browser/esm2022/lib/base/base-cli-worker.mjs +0 -451
  317. package/browser/esm2022/lib/base/base-compiler-for-project.mjs +0 -61
  318. package/browser/esm2022/lib/base/base-db.mjs +0 -31
  319. package/browser/esm2022/lib/base/base-debounce-compiler-for-project.mjs +0 -56
  320. package/browser/esm2022/lib/base/base-feature-for-project.mjs +0 -8
  321. package/browser/esm2022/lib/base/base-github-pages.mjs +0 -110
  322. package/browser/esm2022/lib/base/base-linked-projects.mjs +0 -321
  323. package/browser/esm2022/lib/base/base-npm-helpers.mjs +0 -630
  324. package/browser/esm2022/lib/base/base-project-resolver.mjs +0 -291
  325. package/browser/esm2022/lib/base/base-project.mjs +0 -911
  326. package/browser/esm2022/lib/base/base-quick-fixes.mjs +0 -24
  327. package/browser/esm2022/lib/base/base-vscode.mjs +0 -145
  328. package/browser/esm2022/lib/base/ports-worker.mjs +0 -162
  329. package/browser/lib/base/base-vscode.d.ts +0 -13
  330. package/browser/lib/base/ports-worker.d.ts +0 -33
  331. package/client/esm2022/lib/base/base-cli-worker-config.mjs +0 -40
  332. package/client/esm2022/lib/base/base-cli-worker-controller.mjs +0 -125
  333. package/client/esm2022/lib/base/base-cli-worker.mjs +0 -451
  334. package/client/esm2022/lib/base/base-compiler-for-project.mjs +0 -61
  335. package/client/esm2022/lib/base/base-db.mjs +0 -31
  336. package/client/esm2022/lib/base/base-debounce-compiler-for-project.mjs +0 -56
  337. package/client/esm2022/lib/base/base-feature-for-project.mjs +0 -8
  338. package/client/esm2022/lib/base/base-git.mjs +0 -932
  339. package/client/esm2022/lib/base/base-linked-projects.mjs +0 -321
  340. package/client/esm2022/lib/base/base-npm-helpers.mjs +0 -630
  341. package/client/esm2022/lib/base/base-project-resolver.mjs +0 -291
  342. package/client/esm2022/lib/base/base-project.mjs +0 -911
  343. package/client/esm2022/lib/base/base-quick-fixes.mjs +0 -24
  344. package/client/esm2022/lib/base/base-vscode.mjs +0 -145
  345. package/client/esm2022/lib/base/ports-worker.mjs +0 -162
  346. package/client/lib/base/base-vscode.d.ts +0 -13
  347. package/client/lib/base/ports-worker.d.ts +0 -33
  348. package/lib/base/base-cli-worker-controller.js.map +0 -1
  349. package/lib/base/base-cli-worker.js.map +0 -1
  350. package/lib/base/base-command-line.backend.js.map +0 -1
  351. package/lib/base/base-project.js.map +0 -1
  352. package/lib/base/base-vscode.d.ts +0 -12
  353. package/lib/base/base-vscode.js +0 -139
  354. package/lib/base/base-vscode.js.map +0 -1
  355. package/lib/base/command-line-feature.backend.js.map +0 -1
  356. package/lib/base/ports-worker.d.ts +0 -32
  357. package/lib/base/ports-worker.js +0 -244
  358. package/lib/base/ports-worker.js.map +0 -1
  359. package/websql/esm2022/lib/base/base-cli-worker-config.mjs +0 -40
  360. package/websql/esm2022/lib/base/base-cli-worker-controller.mjs +0 -125
  361. package/websql/esm2022/lib/base/base-cli-worker.mjs +0 -451
  362. package/websql/esm2022/lib/base/base-compiler-for-project.mjs +0 -61
  363. package/websql/esm2022/lib/base/base-db.mjs +0 -31
  364. package/websql/esm2022/lib/base/base-debounce-compiler-for-project.mjs +0 -56
  365. package/websql/esm2022/lib/base/base-feature-for-project.mjs +0 -8
  366. package/websql/esm2022/lib/base/base-linked-projects.mjs +0 -321
  367. package/websql/esm2022/lib/base/base-npm-helpers.mjs +0 -630
  368. package/websql/esm2022/lib/base/base-project-resolver.mjs +0 -280
  369. package/websql/esm2022/lib/base/base-project.mjs +0 -883
  370. package/websql/esm2022/lib/base/base-quick-fixes.mjs +0 -24
  371. package/websql/esm2022/lib/base/base-vscode.mjs +0 -145
  372. package/websql/esm2022/lib/base/ports-worker.mjs +0 -165
  373. package/websql/lib/base/base-vscode.d.ts +0 -13
  374. package/websql/lib/base/ports-worker.d.ts +0 -33
  375. /package/browser/lib/base/{base-cli-worker-config.d.ts → classes/base-cli-worker-config.d.ts} +0 -0
  376. /package/browser/lib/base/{base-compiler-for-project.d.ts → classes/base-compiler-for-project.d.ts} +0 -0
  377. /package/browser/lib/base/{base-db.d.ts → classes/base-db.d.ts} +0 -0
  378. /package/browser/lib/base/{base-debounce-compiler-for-project.d.ts → classes/base-debounce-compiler-for-project.d.ts} +0 -0
  379. /package/browser/lib/base/{base-feature-for-project.d.ts → classes/base-feature-for-project.d.ts} +0 -0
  380. /package/browser/lib/base/{base-github-pages.d.ts → classes/base-github-pages.d.ts} +0 -0
  381. /package/browser/lib/base/{base-npm-helpers.d.ts → classes/base-npm-helpers.d.ts} +0 -0
  382. /package/browser/lib/base/{base-quick-fixes.d.ts → classes/base-quick-fixes.d.ts} +0 -0
  383. /package/client/lib/base/{base-cli-worker-config.d.ts → classes/base-cli-worker-config.d.ts} +0 -0
  384. /package/client/lib/base/{base-compiler-for-project.d.ts → classes/base-compiler-for-project.d.ts} +0 -0
  385. /package/client/lib/base/{base-db.d.ts → classes/base-db.d.ts} +0 -0
  386. /package/client/lib/base/{base-debounce-compiler-for-project.d.ts → classes/base-debounce-compiler-for-project.d.ts} +0 -0
  387. /package/client/lib/base/{base-feature-for-project.d.ts → classes/base-feature-for-project.d.ts} +0 -0
  388. /package/client/lib/base/{base-github-pages.d.ts → classes/base-github-pages.d.ts} +0 -0
  389. /package/client/lib/base/{base-npm-helpers.d.ts → classes/base-npm-helpers.d.ts} +0 -0
  390. /package/client/lib/base/{base-quick-fixes.d.ts → classes/base-quick-fixes.d.ts} +0 -0
  391. /package/lib/base/{base-cli-worker-config.d.ts → classes/base-cli-worker-config.d.ts} +0 -0
  392. /package/lib/base/{base-cli-worker-config.js → classes/base-cli-worker-config.js} +0 -0
  393. /package/lib/base/{base-cli-worker-config.js.map → classes/base-cli-worker-config.js.map} +0 -0
  394. /package/lib/base/{base-debounce-compiler-for-project.js → classes/base-debounce-compiler-for-project.js} +0 -0
  395. /package/lib/base/{base-detached-service.d.ts → classes/base-detached-service.d.ts} +0 -0
  396. /package/lib/base/{base-detached-service.js → classes/base-detached-service.js} +0 -0
  397. /package/lib/base/{base-detached-service.js.map → classes/base-detached-service.js.map} +0 -0
  398. /package/lib/base/{base-feature-for-project.d.ts → classes/base-feature-for-project.d.ts} +0 -0
  399. /package/lib/base/{base-feature-for-project.js → classes/base-feature-for-project.js} +0 -0
  400. /package/lib/base/{base-feature-for-project.js.map → classes/base-feature-for-project.js.map} +0 -0
  401. /package/lib/base/{base-github-pages.d.ts → classes/base-github-pages.d.ts} +0 -0
  402. /package/lib/base/{base-ignore-hide.d.ts → classes/base-ignore-hide.d.ts} +0 -0
  403. /package/lib/base/{base-quick-fixes.d.ts → classes/base-quick-fixes.d.ts} +0 -0
  404. /package/lib/base/{base-start-config.backend.d.ts → classes/base-start-config.backend.d.ts} +0 -0
  405. /package/websql/lib/base/{base-cli-worker-config.d.ts → classes/base-cli-worker-config.d.ts} +0 -0
  406. /package/websql/lib/base/{base-compiler-for-project.d.ts → classes/base-compiler-for-project.d.ts} +0 -0
  407. /package/websql/lib/base/{base-db.d.ts → classes/base-db.d.ts} +0 -0
  408. /package/websql/lib/base/{base-debounce-compiler-for-project.d.ts → classes/base-debounce-compiler-for-project.d.ts} +0 -0
  409. /package/websql/lib/base/{base-feature-for-project.d.ts → classes/base-feature-for-project.d.ts} +0 -0
  410. /package/websql/lib/base/{base-github-pages.d.ts → classes/base-github-pages.d.ts} +0 -0
  411. /package/websql/lib/base/{base-npm-helpers.d.ts → classes/base-npm-helpers.d.ts} +0 -0
  412. /package/websql/lib/base/{base-quick-fixes.d.ts → classes/base-quick-fixes.d.ts} +0 -0
@@ -0,0 +1,926 @@
1
+ /* */
2
+ /* */
3
+ /* */
4
+ /* */
5
+ /* */
6
+ /* */
7
+ /* */
8
+ import { path, crossPlatformPath } from 'tnp-core/browser';
9
+ import { _ } from 'tnp-core/browser';
10
+ import { CoreProject, Helpers, } from '../../index'; /* */
11
+ /* */
12
+ /* */
13
+ /* */
14
+ /* */
15
+ /* */
16
+ /* */
17
+ /* */
18
+ import { BaseProjectResolver } from './base-project-resolver';
19
+ const takenPorts = [];
20
+ export class BaseProject {
21
+ static { this.ins = new BaseProjectResolver(BaseProject, 'taon'); }
22
+ static { this.cache = {}; }
23
+ get globalCache() {
24
+ return BaseProject.cache;
25
+ }
26
+ get location() {
27
+ return this.__location;
28
+ }
29
+ set location(v) {
30
+ this.__location = crossPlatformPath(v);
31
+ }
32
+ // @ts-ignore
33
+ constructor(
34
+ /**
35
+ * doesn't need to be real path -> can be link
36
+ */
37
+ location) {
38
+ this.cache = {};
39
+ this.type = 'unknow';
40
+ this.toString = () => {
41
+ return `${this.name}=>${this.location}`;
42
+ };
43
+ this.location = location;
44
+ /* */
45
+ /* */
46
+ /* */
47
+ /* */
48
+ /* */
49
+ /* */
50
+ /* */
51
+ /* */
52
+ /* */
53
+ /* */
54
+ /* */
55
+ /* */
56
+ /* */
57
+ /* */
58
+ /* */
59
+ /* */
60
+ /* */
61
+ /* */
62
+ /* */
63
+ /* */
64
+ /* */
65
+ /* */
66
+ }
67
+ get isMonorepo() {
68
+ return false;
69
+ }
70
+ orderCoreProjects(coreProjects) {
71
+ const projectMap = new Map();
72
+ for (const project of coreProjects) {
73
+ projectMap.set(project, []);
74
+ }
75
+ for (const project of coreProjects) {
76
+ if (!projectMap.has(project.extends)) {
77
+ projectMap.set(project.extends, []);
78
+ }
79
+ projectMap.get(project.extends).push(project);
80
+ }
81
+ const orderedProjects = [];
82
+ const visited = new Set();
83
+ const visit = (project) => {
84
+ if (!visited.has(project)) {
85
+ visited.add(project);
86
+ const dependencies = projectMap.get(project);
87
+ if (dependencies) {
88
+ for (const dep of dependencies) {
89
+ visit(dep);
90
+ }
91
+ }
92
+ orderedProjects.push(project);
93
+ }
94
+ };
95
+ for (const project of coreProjects) {
96
+ visit(project);
97
+ }
98
+ return orderedProjects.reverse();
99
+ }
100
+ get core() {
101
+ if (!_.isUndefined(this.cache['core'])) {
102
+ return this.cache['core'];
103
+ }
104
+ let coreProjects = CoreProject.coreProjects.filter(p => p.recognizedFn(this));
105
+ coreProjects = this.orderCoreProjects(coreProjects);
106
+ this.cache['core'] = _.first(coreProjects);
107
+ return this.cache['core'];
108
+ }
109
+ get linkedProjectsExisted() {
110
+ /* */
111
+ /* */
112
+ /* */
113
+ /* */
114
+ /* */
115
+ /* */
116
+ /* */
117
+ return (void 0);
118
+ }
119
+ setType(type) {
120
+ // @ts-ignore
121
+ this.type = type;
122
+ }
123
+ typeIs(...types) {
124
+ return this.type && types.includes(this.type);
125
+ }
126
+ typeIsNot(...types) {
127
+ return !this.typeIs(...types);
128
+ }
129
+ /**
130
+ * project folder basename
131
+ */
132
+ get basename() {
133
+ /* */
134
+ /* */
135
+ return (void 0);
136
+ }
137
+ /**
138
+ * project folder parent basename
139
+ */
140
+ get parentBasename() {
141
+ /* */
142
+ /* */
143
+ return (void 0);
144
+ }
145
+ /**
146
+ * name from package.json
147
+ */
148
+ get name() {
149
+ return this.npmHelpers?.name || this.nameFromPomXML;
150
+ }
151
+ get nameForCli() {
152
+ return this.name?.endsWith('-cli') ? this.name : `${this.name}-cli`;
153
+ }
154
+ get nameFromPomXML() {
155
+ const artifactIdPattern = /<artifactId>([^<]+)<\/artifactId>/;
156
+ const match = (this.readFile('pom.xml') || '').match(artifactIdPattern);
157
+ if (match && match[1]) {
158
+ return match[1];
159
+ }
160
+ return '';
161
+ }
162
+ getFoldersForPossibleProjectChildren() {
163
+ /* */
164
+ /* */
165
+ /* */
166
+ /* */
167
+ /* */
168
+ /* */
169
+ /* */
170
+ /* */
171
+ /* */
172
+ /* */
173
+ /* */
174
+ /* */
175
+ /* */
176
+ /* */
177
+ /* */
178
+ /* */
179
+ /* */
180
+ /* */
181
+ /* */
182
+ /* */
183
+ /* */
184
+ return (void 0);
185
+ }
186
+ getAllChildren() {
187
+ /* */
188
+ /* */
189
+ /* */
190
+ /* */
191
+ /* */
192
+ /* */
193
+ /* */
194
+ /* */
195
+ /* */
196
+ return (void 0);
197
+ }
198
+ /**
199
+ * alias to getAllChildren
200
+ */
201
+ get children() {
202
+ /* */
203
+ /* */
204
+ return (void 0);
205
+ }
206
+ getChildBy(nameOrBasename, errors = true) {
207
+ /* */
208
+ /* */
209
+ /* */
210
+ /* */
211
+ /* */
212
+ /* */
213
+ /* */
214
+ /* */
215
+ /* */
216
+ /* */
217
+ return (void 0);
218
+ }
219
+ get parent() {
220
+ /* */
221
+ /* */
222
+ /* */
223
+ /* */
224
+ /* */
225
+ return (void 0);
226
+ }
227
+ get nearestParent() {
228
+ /* */
229
+ /* */
230
+ /* */
231
+ /* */
232
+ /* */
233
+ /* */
234
+ /* */
235
+ /* */
236
+ /* */
237
+ /* */
238
+ /* */
239
+ /* */
240
+ /* */
241
+ return (void 0);
242
+ }
243
+ get grandpa() {
244
+ /* */
245
+ /* */
246
+ /* */
247
+ /* */
248
+ /* */
249
+ /* */
250
+ return (void 0);
251
+ }
252
+ get allNpmPackagesNames() {
253
+ return [this.name];
254
+ }
255
+ get titleBarName() {
256
+ const allPackagesNames = this.allNpmPackagesNames.filter(f => f !== this.basename).length === 0
257
+ ? ''
258
+ : `(${this.allNpmPackagesNames.filter(f => f !== this.basename).join(',')})`;
259
+ if (this.parent) {
260
+ return (`${path.basename(path.dirname(this.parent.location))}/${this.parent.name}/` +
261
+ `${this.basename} ${allPackagesNames} [ \${activeEditorShort} ]`);
262
+ }
263
+ return (`${path.basename(path.dirname(this.location))}/` +
264
+ `${this.basename} (${allPackagesNames}) [ \${activeEditorShort}]`);
265
+ }
266
+ get genericName() {
267
+ /* */
268
+ /* */
269
+ /* */
270
+ /* */
271
+ /* */
272
+ /* */
273
+ /* */
274
+ /* */
275
+ /* */
276
+ /* */
277
+ /* */
278
+ /* */
279
+ /* */
280
+ /* */
281
+ /* */
282
+ /* */
283
+ /* */
284
+ /* */
285
+ /* */
286
+ /* */
287
+ /* */
288
+ /* */
289
+ /* */
290
+ /* */
291
+ /* */
292
+ /* */
293
+ /* */
294
+ return (void 0);
295
+ }
296
+ checkAndBoldenPath(fullPath) {
297
+ const parts = fullPath.split('/');
298
+ const result = parts.map((part, index) => {
299
+ const pathTocheck = parts.slice(0, index + 1).join('/');
300
+ /* */
301
+ /* */
302
+ /* */
303
+ /* */
304
+ return part;
305
+ });
306
+ return result.join('/');
307
+ }
308
+ /**
309
+ * same has project.hasFile();
310
+ */
311
+ pathExists(relativePath) {
312
+ return this.hasFile(relativePath);
313
+ }
314
+ /**
315
+ * same as project.pathExists();
316
+ */
317
+ hasFile(relativePath) {
318
+ /* */
319
+ /* */
320
+ /* */
321
+ return (void 0);
322
+ }
323
+ hasFolder(relativePath) {
324
+ /* */
325
+ /* */
326
+ /* */
327
+ /* */
328
+ /* */
329
+ return (void 0);
330
+ }
331
+ /**
332
+ * Function will return relative path from project location
333
+ */
334
+ relative(absoultePath) {
335
+ return crossPlatformPath(path.relative(this.location, absoultePath));
336
+ }
337
+ /**
338
+ *
339
+ * @param relativePath
340
+ * @param override it will remove ex
341
+ */
342
+ createFolder(relativePath, options) {
343
+ /* */
344
+ /* */
345
+ /* */
346
+ /* */
347
+ /* */
348
+ /* */
349
+ /* */
350
+ /* */
351
+ /* */
352
+ /* */
353
+ /* */
354
+ /* */
355
+ return (void 0);
356
+ }
357
+ formatFile(specificRelativePath) {
358
+ /* */
359
+ /* */
360
+ /* */
361
+ /* */
362
+ return (void 0);
363
+ }
364
+ formatAllFiles() {
365
+ /* */
366
+ /* */
367
+ /* */
368
+ return (void 0);
369
+ }
370
+ /**
371
+ * same as project.pathhasFileExists();
372
+ * but with path.resolve
373
+ */
374
+ containsFile(fileRelativeToProjectPath) {
375
+ const fullPath = path.resolve(path.join(this.location, fileRelativeToProjectPath));
376
+ return Helpers.exists(fullPath);
377
+ }
378
+ /**
379
+ * absolute path:
380
+ * concated project location with relative path
381
+ */
382
+ pathFor(relativePath) {
383
+ /* */
384
+ /* */
385
+ /* */
386
+ /* */
387
+ /* */
388
+ /* */
389
+ /* */
390
+ /* */
391
+ return (void 0);
392
+ }
393
+ writeJson(relativePath, json) {
394
+ /* */
395
+ /* */
396
+ /* */
397
+ /* */
398
+ /* */
399
+ return (void 0);
400
+ }
401
+ writeJsonC(relativePath, json) {
402
+ /* */
403
+ /* */
404
+ /* */
405
+ /* */
406
+ /* */
407
+ return (void 0);
408
+ }
409
+ /**
410
+ * @deprecated us execute instead
411
+ * use output from or more preciese crafted api
412
+ */
413
+ run(command, options) {
414
+ let opt;
415
+ /* */
416
+ /* */
417
+ /* */
418
+ /* */
419
+ /* */
420
+ /* */
421
+ /* */
422
+ /* */
423
+ /* */
424
+ /* */
425
+ /* */
426
+ /* */
427
+ /* */
428
+ /* */
429
+ /* */
430
+ /* */
431
+ /* */
432
+ /* */
433
+ /* */
434
+ /* */
435
+ return Helpers.run(command, opt);
436
+ }
437
+ /**
438
+ * same as run but async
439
+ */
440
+ async execute(command, options) {
441
+ /* */
442
+ /* */
443
+ /* */
444
+ /* */
445
+ /* */
446
+ /* */
447
+ /* */
448
+ /* */
449
+ /* */
450
+ /* */
451
+ /* */
452
+ /* */
453
+ /* */
454
+ /* */
455
+ /* */
456
+ /* */
457
+ /* */
458
+ /* */
459
+ /* */
460
+ return (void 0);
461
+ }
462
+ /**
463
+ * try run but continue when it fails
464
+ * @param command
465
+ * @param options
466
+ * @returns
467
+ */
468
+ tryRunSync(command) {
469
+ /* */
470
+ /* */
471
+ /* */
472
+ /* */
473
+ /* */
474
+ /* */
475
+ return (void 0);
476
+ }
477
+ outputFrom(command) {
478
+ /* */
479
+ /* */
480
+ return (void 0);
481
+ }
482
+ removeFile(fileRelativeToProjectPath) {
483
+ /* */
484
+ /* */
485
+ /* */
486
+ /* */
487
+ /* */
488
+ return (void 0);
489
+ }
490
+ readFile(fileRelativeToProjectPath) {
491
+ /* */
492
+ /* */
493
+ /* */
494
+ /* */
495
+ /* */
496
+ /* */
497
+ return (void 0);
498
+ }
499
+ /**
500
+ * read json file
501
+ * handle all json files
502
+ * jsonc, json5 , json
503
+ * @param fileRelativeToProjectPath
504
+ * @returns
505
+ */
506
+ readJson(fileRelativeToProjectPath) {
507
+ /* */
508
+ /* */
509
+ /* */
510
+ /* */
511
+ /* */
512
+ return (void 0);
513
+ }
514
+ /**
515
+ * copy files or folders from
516
+ * project to destination
517
+ */
518
+ copy(filesOrFolderRelativePathes) {
519
+ return {
520
+ to: (destination) => {
521
+ /* */
522
+ /* */
523
+ /* */
524
+ /* */
525
+ /* */
526
+ /* */
527
+ /* */
528
+ /* */
529
+ /* */
530
+ /* */
531
+ /* */
532
+ /* */
533
+ /* */
534
+ /* */
535
+ /* */
536
+ /* */
537
+ /* */
538
+ return (void 0);
539
+ },
540
+ };
541
+ }
542
+ remove(relativePath, exactPath = true) {
543
+ /* */
544
+ /* */
545
+ /* */
546
+ /* */
547
+ /* */
548
+ /* */
549
+ /* */
550
+ /* */
551
+ /* */
552
+ return (void 0);
553
+ }
554
+ removeFolderByRelativePath(relativePathToFolder) {
555
+ /* */
556
+ /* */
557
+ /* */
558
+ /* */
559
+ /* */
560
+ }
561
+ getUniqueForTask(task) {
562
+ return `task(${task}) in ${this.genericName}`;
563
+ }
564
+ async registerAndAssignPort(taskName, options) {
565
+ /* */
566
+ /* */
567
+ /* */
568
+ /* */
569
+ /* */
570
+ /* */
571
+ /* */
572
+ /* */
573
+ /* */
574
+ /* */
575
+ return (void 0);
576
+ }
577
+ /**
578
+ * @deprecated use registerAndAssignPort() instead
579
+ */
580
+ async assignFreePort(startFrom = 4200, howManyFreePortsAfterThatPort = 0) {
581
+ /* */
582
+ /* */
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
+ /* */
609
+ /* */
610
+ /* */
611
+ return (void 0);
612
+ }
613
+ removeItself() {
614
+ /* */
615
+ /* */
616
+ }
617
+ /**
618
+ * Purpose: not initializing all classes at the beginning
619
+ * Only for BaseFeatureForProject class
620
+ */
621
+ defineProperty(variableName, classFn, options) {
622
+ /* */
623
+ /* */
624
+ /* */
625
+ /* */
626
+ /* */
627
+ /* */
628
+ /* */
629
+ /* */
630
+ /* */
631
+ /* */
632
+ /* */
633
+ /* */
634
+ /* */
635
+ /* */
636
+ /* */
637
+ /* */
638
+ /* */
639
+ /* */
640
+ /* */
641
+ /* */
642
+ /* */
643
+ /* */
644
+ /* */
645
+ /* */
646
+ /* */
647
+ /* */
648
+ /* */
649
+ /* */
650
+ return (void 0);
651
+ }
652
+ /**
653
+ * fs.copy option filter function for copying only selected folders from project
654
+ */
655
+ filterOnlyCopy(basePathFoldersOnlyToInclude) {
656
+ /* */
657
+ /* */
658
+ return (void 0);
659
+ }
660
+ /**
661
+ * fs.copy option filter function for copying only not selected folders from project
662
+ */
663
+ filterDontCopy(basePathFoldersTosSkip) {
664
+ /* */
665
+ /* */
666
+ return (void 0);
667
+ }
668
+ /**
669
+ * general default development branch for all kinds of projects
670
+ */
671
+ getDefaultDevelopmentBranch() {
672
+ return 'develop';
673
+ }
674
+ /**
675
+ * main/default hardcoded branches
676
+ */
677
+ getMainBranches() {
678
+ return ['master', 'develop', 'stage', 'prod', 'test'];
679
+ }
680
+ isUnsingActionCommit() {
681
+ return false;
682
+ }
683
+ useFeatureInBranchNameForTests() {
684
+ return false;
685
+ }
686
+ async resetProcess(overrideBranch, recrusive = false) {
687
+ /* */
688
+ /* */
689
+ /* */
690
+ /* */
691
+ /* */
692
+ /* */
693
+ /* */
694
+ /* */
695
+ /* */
696
+ /* */
697
+ /* */
698
+ /* */
699
+ /* */
700
+ /* */
701
+ /* */
702
+ /* */
703
+ /* */
704
+ /* */
705
+ /* */
706
+ /* */
707
+ /* */
708
+ /* */
709
+ /* */
710
+ /* */
711
+ /* */
712
+ /* */
713
+ /* */
714
+ /* */
715
+ /* */
716
+ /* */
717
+ /* */
718
+ /* */
719
+ /* */
720
+ /* */
721
+ /* */
722
+ /* */
723
+ /* */
724
+ /* */
725
+ /* */
726
+ /* */
727
+ /* */
728
+ }
729
+ linkTo(destPackageLocation) {
730
+ /* */
731
+ /* */
732
+ }
733
+ setValueToJSON(relativePath, lodashGetPath, value) {
734
+ /* */
735
+ /* */
736
+ /* */
737
+ /* */
738
+ /* */
739
+ return (void 0);
740
+ }
741
+ setValueToJSONC(relativePath, lodashGetPath, value) {
742
+ /* */
743
+ /* */
744
+ /* */
745
+ /* */
746
+ /* */
747
+ return (void 0);
748
+ }
749
+ setValueToJSON5(relativePath, lodashGetPath, value) {
750
+ /* */
751
+ /* */
752
+ /* */
753
+ /* */
754
+ /* */
755
+ return (void 0);
756
+ }
757
+ getValueFromJSON(relativePath, lodashGetPath, defaultValue = void 0) {
758
+ /* */
759
+ /* */
760
+ /* */
761
+ /* */
762
+ /* */
763
+ /* */
764
+ /* */
765
+ /* */
766
+ /* */
767
+ return (void 0);
768
+ }
769
+ getValueFromJSONC(relativePath, lodashGetPath, defaultValue = void 0) {
770
+ /* */
771
+ /* */
772
+ /* */
773
+ /* */
774
+ /* */
775
+ /* */
776
+ /* */
777
+ /* */
778
+ /* */
779
+ return (void 0);
780
+ }
781
+ writeFile(relativePath, content) {
782
+ /* */
783
+ /* */
784
+ /* */
785
+ /* */
786
+ /* */
787
+ }
788
+ runCommandGetString(command) {
789
+ /* */
790
+ /* */
791
+ /* */
792
+ /* */
793
+ return (void 0);
794
+ }
795
+ get parentsNames() {
796
+ /* */
797
+ /* */
798
+ return (void 0);
799
+ }
800
+ openLocation(relativeFolderPath) {
801
+ /* */
802
+ /* */
803
+ return (void 0);
804
+ }
805
+ findParentsNames(project, parent, result = []) {
806
+ /* */
807
+ /* */
808
+ /* */
809
+ /* */
810
+ /* */
811
+ /* */
812
+ /* */
813
+ /* */
814
+ /* */
815
+ /* */
816
+ /* */
817
+ return (void 0);
818
+ }
819
+ tryKillAllElectronInstances() {
820
+ /* */
821
+ /* */
822
+ /* */
823
+ /* */
824
+ /* */
825
+ /* */
826
+ /* */
827
+ /* */
828
+ /* */
829
+ /* */
830
+ return (void 0);
831
+ }
832
+ /**
833
+ * init project files structure and depedencies
834
+ */
835
+ async init(initOptions) {
836
+ throw new Error('TODO IMPLEMENT');
837
+ }
838
+ /**
839
+ * globally link npm as package
840
+ */
841
+ async link() {
842
+ throw new Error('TODO IMPLEMENT');
843
+ }
844
+ /**
845
+ * init project files structure without depedencies
846
+ */
847
+ async struct(initOptions) {
848
+ throw new Error('TODO IMPLEMENT');
849
+ }
850
+ /**
851
+ * init and build() project
852
+ */
853
+ async test(testOptions) {
854
+ throw new Error('TODO IMPLEMENT');
855
+ }
856
+ /**
857
+ * init and build() project
858
+ */
859
+ async build(buildOptions) {
860
+ throw new Error('TODO IMPLEMENT');
861
+ }
862
+ /**
863
+ * publish project to npm
864
+ */
865
+ async publish(publishOptions) {
866
+ throw new Error('TODO IMPLEMENT');
867
+ }
868
+ async release(releaseOptions) {
869
+ throw new Error('TODO IMPLEMENT');
870
+ }
871
+ /**
872
+ * lint porject
873
+ */
874
+ async lint(lintOptions) {
875
+ Helpers.info(`
876
+
877
+
878
+ COMMIT LINT NOT IMPLEMENTED
879
+
880
+
881
+ `);
882
+ }
883
+ /**
884
+ * get info about porject
885
+ */
886
+ async info() {
887
+ /* */
888
+ /* */
889
+ /* */
890
+ /* */
891
+ /* */
892
+ /* */
893
+ /* */
894
+ /* */
895
+ /* */
896
+ /* */
897
+ /* */
898
+ /* */
899
+ /* */
900
+ /* */
901
+ /* */
902
+ /* */
903
+ /* */
904
+ /* */
905
+ /* */
906
+ /* */
907
+ /* */
908
+ /* */
909
+ /* */
910
+ /* */
911
+ /* */
912
+ /* */
913
+ /* */
914
+ /* */
915
+ /* */
916
+ /* */
917
+ /* */
918
+ /* */
919
+ /* */
920
+ /* */
921
+ return (void 0);
922
+ }
923
+ }
924
+ ;
925
+ ({}); // @--end-of-file-for-module=tnp-helpers lib/base/classes/base-project.ts
926
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1wcm9qZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3QvdG5wLWhlbHBlcnMvcHJvamVjdHMvdG5wLWhlbHBlcnMvc3JjL2xpYi9iYXNlL2NsYXNzZXMvYmFzZS1wcm9qZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFJTCxPQUFPLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFM0QsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JDLE9BQU8sRUFBa0IsV0FBVyxFQUFJLE9BQU8sR0FBK0UsTUFBTSxhQUFhLENBQUMsQ0FBQSxLQUFLO0FBQ3ZKLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFFTCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQWlCOUQsTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDO0FBRXRCLE1BQU0sT0FBZ0IsV0FBVzthQU94QixRQUFHLEdBQUcsSUFBSSxtQkFBbUIsQ0FBYyxXQUFXLEVBQUUsTUFBTSxDQUFDLEFBQTVELENBQTZEO2FBT3pELFVBQUssR0FBUSxFQUFFLEFBQVYsQ0FBVztJQUM5QixJQUFXLFdBQVc7UUFDcEIsT0FBTyxXQUFXLENBQUMsS0FBSyxDQUFDO0lBQzNCLENBQUM7SUF3QkQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFDRCxJQUFJLFFBQVEsQ0FBQyxDQUFTO1FBQ3BCLElBQUksQ0FBQyxVQUFVLEdBQUcsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUdE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QUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7O0FBSUYsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyx5RUFBeUUiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcbmltcG9ydCB7IENvcmVNb2RlbHMgfSBmcm9tICd0bnAtY29yZS9icm93c2VyJztcbmltcG9ydCB7IENMSSB9IGZyb20gJ3RucC1jb3JlL2Jyb3dzZXInO1xuaW1wb3J0IHsgcGF0aCwgY3Jvc3NQbGF0Zm9ybVBhdGggfSBmcm9tICd0bnAtY29yZS9icm93c2VyJztcbmltcG9ydCB7IGNvbmZpZyB9IGZyb20gJ3RucC1jb25maWcvYnJvd3Nlcic7XG5pbXBvcnQgeyBfIH0gZnJvbSAndG5wLWNvcmUvYnJvd3Nlcic7XG5pbXBvcnQgeyAgIENvbW1pdERhdGEsICAgQ29yZVByb2plY3QsICAgSGVscGVycywgICBMaW5rZWRQb3JqZWN0c0NvbmZpZywgICBMaW5rZWRQcm9qZWN0LCAgIFR5cGVPZkNvbW1pdCwgICBVdGlsc1R5cGVzY3JpcHQsIH0gZnJvbSAnLi4vLi4vaW5kZXgnOy8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuXG5pbXBvcnQgeyBCYXNlUHJvamVjdFJlc29sdmVyIH0gZnJvbSAnLi9iYXNlLXByb2plY3QtcmVzb2x2ZXInO1xuaW1wb3J0IHsgICBCYXNlUHJvamVjdFR5cGUsICAgTGlicmFyaWVzQnVpbGRPcHRpb25zLCAgIExpYnJhcnlCdWlsZENvbW1hbmRPcHRpb25zLCAgIE5nUHJvamVjdCwgfSBmcm9tICcuLi8uLi9tb2RlbHMnOy8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuXG5pbXBvcnQgdHlwZSB7IEJhc2VMaWJyYXJ5QnVpbGQgfSBmcm9tICcuL2Jhc2UtbGlicmFyeS1idWlsZCc7XG5pbXBvcnQgeyBCYXNlTnBtSGVscGVycyB9IGZyb20gJy4vYmFzZS1ucG0taGVscGVycyc7XG5pbXBvcnQgeyBCYXNlTGlua2VkUHJvamVjdHMgfSBmcm9tICcuL2Jhc2UtbGlua2VkLXByb2plY3RzJztcbmltcG9ydCB7IEJhc2VHaXQgfSBmcm9tICcuL2Jhc2UtZ2l0JztcbmltcG9ydCB7IEJhc2VWc2NvZGVIZWxwZXJzIH0gZnJvbSAnLi9iYXNlLXZzY29kZSc7XG5pbXBvcnQgeyBCYXNlUmVsZWFzZVByb2Nlc3MgfSBmcm9tICcuL2Jhc2UtcmVsZWFzZS1wcm9jZXNzJztcbmltcG9ydCB7IEJhc2VRdWlja0ZpeGVzIH0gZnJvbSAnLi9iYXNlLXF1aWNrLWZpeGVzJztcbmltcG9ydCB7IEJhc2VHaXRodWJQYWdlcyB9IGZyb20gJy4vYmFzZS1naXRodWItcGFnZXMnO1xuXG5cbmNvbnN0IHRha2VuUG9ydHMgPSBbXTtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VQcm9qZWN0PFxuICBQUk9KRUNUIGV4dGVuZHMgQmFzZVByb2plY3QgPSBCYXNlUHJvamVjdDxhbnksIGFueT4sXG4gIFRZUEUgPSBCYXNlUHJvamVjdFR5cGUsXG4+IHtcblxuXG5cbiAgc3RhdGljIGlucyA9IG5ldyBCYXNlUHJvamVjdFJlc29sdmVyPEJhc2VQcm9qZWN0PihCYXNlUHJvamVjdCwgJ3Rhb24nKTtcblxuXG5cblxuXG4gIHB1YmxpYyBjYWNoZTogYW55ID0ge307XG4gIHB1YmxpYyBzdGF0aWMgY2FjaGU6IGFueSA9IHt9O1xuICBwdWJsaWMgZ2V0IGdsb2JhbENhY2hlKCkge1xuICAgIHJldHVybiBCYXNlUHJvamVjdC5jYWNoZTtcbiAgfVxuICByZWFkb25seSB0eXBlOiBUWVBFIHwgc3RyaW5nID0gJ3Vua25vdyc7XG5cbiAgLyoqXG4gICAqIHJlc29sdmUgaW5zdGFuY2VcbiAgICovXG4gIGFic3RyYWN0IHJlYWRvbmx5IGluczogQmFzZVByb2plY3RSZXNvbHZlcjxQUk9KRUNUPjtcbiAgLyoqXG4gICAqIFVuaXF1ZSBmcmVlIHBvcnQgZm9yIHByb2plY3QgaW5zdGFuY2VcbiAgICogb25seSBhdmFpbGFibGUgYWZ0ZXIgZXhlY3V0aW5nICp0aGlzLmFzc2lnbkZyZWVQb3J0KCkqXG4gICAqL1xuICByZWFkb25seSBwb3J0OiBzdHJpbmc7XG5cbiAgcHVibGljIGxpYnJhcnlCdWlsZD86IEJhc2VMaWJyYXJ5QnVpbGQ8QmFzZVByb2plY3Q+O1xuICBwdWJsaWMgbnBtSGVscGVycz86IEJhc2VOcG1IZWxwZXJzO1xuICBwdWJsaWMgbGlua2VkUHJvamVjdHM/OiBCYXNlTGlua2VkUHJvamVjdHM7XG4gIHB1YmxpYyB2c0NvZGVIZWxwZXJzPzogQmFzZVZzY29kZUhlbHBlcnM7XG4gIHB1YmxpYyByZWxlYXNlUHJvY2Vzcz86IEJhc2VSZWxlYXNlUHJvY2VzcztcbiAgcHVibGljIGdpdD86IEJhc2VHaXQ7XG4gIHB1YmxpYyBxdWlja0ZpeGVzPzogQmFzZVF1aWNrRml4ZXM7XG4gIHB1YmxpYyBnaXRodWJQYWdlcz86IEJhc2VHaXRodWJQYWdlcztcblxuXG4gIHByaXZhdGUgX19sb2NhdGlvbjogc3RyaW5nO1xuICBnZXQgbG9jYXRpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fX2xvY2F0aW9uO1xuICB9XG4gIHNldCBsb2NhdGlvbih2OiBzdHJpbmcpIHtcbiAgICB0aGlzLl9fbG9jYXRpb24gPSBjcm9zc1BsYXRmb3JtUGF0aCh2KTtcbiAgfVxuXG5cbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdHJ1Y3RvcihcbiAgICAvKipcbiAgICAgKiBkb2Vzbid0IG5lZWQgdG8gYmUgcmVhbCBwYXRoIC0+IGNhbiBiZSBsaW5rXG4gICAgICovXG4gICAgbG9jYXRpb246IHN0cmluZyxcbiAgKSB7XG4gICAgdGhpcy5sb2NhdGlvbiA9IGxvY2F0aW9uO1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG4gIH1cblxuXG5cbiAgZ2V0IGlzTW9ub3JlcG8oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cblxuXG4gIHByb3RlY3RlZCBvcmRlckNvcmVQcm9qZWN0cyhjb3JlUHJvamVjdHM6IENvcmVQcm9qZWN0W10pOiBDb3JlUHJvamVjdFtdIHtcbiAgICBjb25zdCBwcm9qZWN0TWFwID0gbmV3IE1hcDxDb3JlUHJvamVjdCwgQ29yZVByb2plY3RbXT4oKTtcblxuXG4gICAgZm9yIChjb25zdCBwcm9qZWN0IG9mIGNvcmVQcm9qZWN0cykge1xuICAgICAgcHJvamVjdE1hcC5zZXQocHJvamVjdCwgW10pO1xuICAgIH1cblxuXG4gICAgZm9yIChjb25zdCBwcm9qZWN0IG9mIGNvcmVQcm9qZWN0cykge1xuICAgICAgaWYgKCFwcm9qZWN0TWFwLmhhcyhwcm9qZWN0LmV4dGVuZHMpKSB7XG4gICAgICAgIHByb2plY3RNYXAuc2V0KHByb2plY3QuZXh0ZW5kcywgW10pO1xuICAgICAgfVxuICAgICAgcHJvamVjdE1hcC5nZXQocHJvamVjdC5leHRlbmRzKSEucHVzaChwcm9qZWN0KTtcbiAgICB9XG5cbiAgICBjb25zdCBvcmRlcmVkUHJvamVjdHM6IENvcmVQcm9qZWN0W10gPSBbXTtcbiAgICBjb25zdCB2aXNpdGVkID0gbmV3IFNldDxDb3JlUHJvamVjdD4oKTtcblxuICAgIGNvbnN0IHZpc2l0ID0gKHByb2plY3Q6IENvcmVQcm9qZWN0KSA9PiB7XG4gICAgICBpZiAoIXZpc2l0ZWQuaGFzKHByb2plY3QpKSB7XG4gICAgICAgIHZpc2l0ZWQuYWRkKHByb2plY3QpO1xuICAgICAgICBjb25zdCBkZXBlbmRlbmNpZXMgPSBwcm9qZWN0TWFwLmdldChwcm9qZWN0KTtcbiAgICAgICAgaWYgKGRlcGVuZGVuY2llcykge1xuICAgICAgICAgIGZvciAoY29uc3QgZGVwIG9mIGRlcGVuZGVuY2llcykge1xuICAgICAgICAgICAgdmlzaXQoZGVwKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgb3JkZXJlZFByb2plY3RzLnB1c2gocHJvamVjdCk7XG4gICAgICB9XG4gICAgfTtcblxuXG4gICAgZm9yIChjb25zdCBwcm9qZWN0IG9mIGNvcmVQcm9qZWN0cykge1xuICAgICAgdmlzaXQocHJvamVjdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9yZGVyZWRQcm9qZWN0cy5yZXZlcnNlKCk7XG4gIH1cblxuXG5cblxuICBnZXQgY29yZSgpOiBDb3JlUHJvamVjdCB7XG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKHRoaXMuY2FjaGVbJ2NvcmUnXSkpIHtcbiAgICAgIHJldHVybiB0aGlzLmNhY2hlWydjb3JlJ107XG4gICAgfVxuXG4gICAgbGV0IGNvcmVQcm9qZWN0cyA9IENvcmVQcm9qZWN0LmNvcmVQcm9qZWN0cy5maWx0ZXIocCA9PlxuICAgICAgcC5yZWNvZ25pemVkRm4odGhpcyBhcyBhbnkpLFxuICAgICk7XG4gICAgY29yZVByb2plY3RzID0gdGhpcy5vcmRlckNvcmVQcm9qZWN0cyhjb3JlUHJvamVjdHMpO1xuXG5cbiAgICB0aGlzLmNhY2hlWydjb3JlJ10gPSBfLmZpcnN0KGNvcmVQcm9qZWN0cyk7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVbJ2NvcmUnXTtcbiAgfVxuXG5cblxuICBnZXQgbGlua2VkUHJvamVjdHNFeGlzdGVkKCk6IFBST0pFQ1RbXSB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICBwdWJsaWMgc2V0VHlwZSh0eXBlOiBUWVBFKSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gIH1cblxuXG5cbiAgcHVibGljIHR5cGVJcyguLi50eXBlczogVFlQRVtdKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZSAmJiB0eXBlcy5pbmNsdWRlcyh0aGlzLnR5cGUgYXMgYW55KTtcbiAgfVxuXG5cblxuICBwdWJsaWMgdHlwZUlzTm90KC4uLnR5cGVzOiBUWVBFW10pIHtcbiAgICByZXR1cm4gIXRoaXMudHlwZUlzKC4uLnR5cGVzKTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogcHJvamVjdCBmb2xkZXIgYmFzZW5hbWVcbiAgICovXG4gIGdldCBiYXNlbmFtZSgpOiBzdHJpbmcge1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBwcm9qZWN0IGZvbGRlciBwYXJlbnQgYmFzZW5hbWVcbiAgICovXG4gIGdldCBwYXJlbnRCYXNlbmFtZSgpOiBzdHJpbmcge1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBuYW1lIGZyb20gcGFja2FnZS5qc29uXG4gICAqL1xuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm5wbUhlbHBlcnM/Lm5hbWUgfHwgdGhpcy5uYW1lRnJvbVBvbVhNTDtcbiAgfVxuXG4gIGdldCBuYW1lRm9yQ2xpKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubmFtZT8uZW5kc1dpdGgoJy1jbGknKSA/IHRoaXMubmFtZSA6IGAke3RoaXMubmFtZX0tY2xpYDtcbiAgfVxuXG4gIGdldCBuYW1lRnJvbVBvbVhNTCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGFydGlmYWN0SWRQYXR0ZXJuID0gLzxhcnRpZmFjdElkPihbXjxdKyk8XFwvYXJ0aWZhY3RJZD4vO1xuICAgIGNvbnN0IG1hdGNoID0gKHRoaXMucmVhZEZpbGUoJ3BvbS54bWwnKSB8fCAnJykubWF0Y2goYXJ0aWZhY3RJZFBhdHRlcm4pO1xuICAgIGlmIChtYXRjaCAmJiBtYXRjaFsxXSkge1xuICAgICAgcmV0dXJuIG1hdGNoWzFdO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuXG5cbiAgcHJvdGVjdGVkIGdldEZvbGRlcnNGb3JQb3NzaWJsZVByb2plY3RDaGlsZHJlbigpOiBzdHJpbmdbXSB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIHByb3RlY3RlZCBnZXRBbGxDaGlsZHJlbigpIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIGFsaWFzIHRvIGdldEFsbENoaWxkcmVuXG4gICAqL1xuICBnZXQgY2hpbGRyZW4oKTogUFJPSkVDVFtdIHtcbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICBnZXRDaGlsZEJ5KG5hbWVPckJhc2VuYW1lOiBzdHJpbmcsIGVycm9ycyA9IHRydWUpOiBQUk9KRUNUIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIGdldCBwYXJlbnQoKTogUFJPSkVDVCB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgZ2V0IG5lYXJlc3RQYXJlbnQoKTogUFJPSkVDVCB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICBnZXQgZ3JhbmRwYSgpOiBQUk9KRUNUIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgZ2V0IGFsbE5wbVBhY2thZ2VzTmFtZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbdGhpcy5uYW1lXTtcbiAgfVxuXG4gIGdldCB0aXRsZUJhck5hbWUoKSB7XG4gICAgY29uc3QgYWxsUGFja2FnZXNOYW1lcyA9XG4gICAgICB0aGlzLmFsbE5wbVBhY2thZ2VzTmFtZXMuZmlsdGVyKGYgPT4gZiAhPT0gdGhpcy5iYXNlbmFtZSkubGVuZ3RoID09PSAwXG4gICAgICAgID8gJydcbiAgICAgICAgOiBgKCR7dGhpcy5hbGxOcG1QYWNrYWdlc05hbWVzLmZpbHRlcihmID0+IGYgIT09IHRoaXMuYmFzZW5hbWUpLmpvaW4oJywnKX0pYDtcblxuICAgIGlmICh0aGlzLnBhcmVudCkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgYCR7cGF0aC5iYXNlbmFtZShwYXRoLmRpcm5hbWUodGhpcy5wYXJlbnQubG9jYXRpb24pKX0vJHt0aGlzLnBhcmVudC5uYW1lfS9gICtcbiAgICAgICAgYCR7dGhpcy5iYXNlbmFtZX0gJHthbGxQYWNrYWdlc05hbWVzfSBbIFxcJHthY3RpdmVFZGl0b3JTaG9ydH0gXWBcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiAoXG4gICAgICBgJHtwYXRoLmJhc2VuYW1lKHBhdGguZGlybmFtZSh0aGlzLmxvY2F0aW9uKSl9L2AgK1xuICAgICAgYCR7dGhpcy5iYXNlbmFtZX0gKCR7YWxsUGFja2FnZXNOYW1lc30pIFsgXFwke2FjdGl2ZUVkaXRvclNob3J0fV1gXG4gICAgKTtcbiAgfVxuXG4gIGdldCBnZW5lcmljTmFtZSgpIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgcHJpdmF0ZSBjaGVja0FuZEJvbGRlblBhdGgoZnVsbFBhdGg6IHN0cmluZykge1xuICAgIGNvbnN0IHBhcnRzID0gZnVsbFBhdGguc3BsaXQoJy8nKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IHBhcnRzLm1hcCgocGFydCwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IHBhdGhUb2NoZWNrID0gcGFydHMuc2xpY2UoMCwgaW5kZXggKyAxKS5qb2luKCcvJyk7XG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuICAgICAgcmV0dXJuIHBhcnQ7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVzdWx0LmpvaW4oJy8nKTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogc2FtZSBoYXMgcHJvamVjdC5oYXNGaWxlKCk7XG4gICAqL1xuICBwYXRoRXhpc3RzKHJlbGF0aXZlUGF0aDogc3RyaW5nIHwgc3RyaW5nW10pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXNGaWxlKHJlbGF0aXZlUGF0aCk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIHNhbWUgYXMgcHJvamVjdC5wYXRoRXhpc3RzKCk7XG4gICAqL1xuICBoYXNGaWxlKHJlbGF0aXZlUGF0aDogc3RyaW5nIHwgc3RyaW5nW10pOiBib29sZWFuIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cbiAgaGFzRm9sZGVyKHJlbGF0aXZlUGF0aDogc3RyaW5nIHwgc3RyaW5nW10pOiBib29sZWFuIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogRnVuY3Rpb24gd2lsbCByZXR1cm4gcmVsYXRpdmUgcGF0aCBmcm9tIHByb2plY3QgbG9jYXRpb25cbiAgICovXG4gIHJlbGF0aXZlKGFic291bHRlUGF0aDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGNyb3NzUGxhdGZvcm1QYXRoKHBhdGgucmVsYXRpdmUodGhpcy5sb2NhdGlvbiwgYWJzb3VsdGVQYXRoKSk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSByZWxhdGl2ZVBhdGhcbiAgICogQHBhcmFtIG92ZXJyaWRlIGl0IHdpbGwgcmVtb3ZlIGV4XG4gICAqL1xuICBjcmVhdGVGb2xkZXIoXG4gICAgcmVsYXRpdmVQYXRoOiBzdHJpbmcgfCBzdHJpbmdbXSxcbiAgICBvcHRpb25zPzoge1xuICAgICAgb3ZlcnJpZGU/OiBib29sZWFuO1xuICAgIH0sXG4gICkge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICBmb3JtYXRGaWxlKHNwZWNpZmljUmVsYXRpdmVQYXRoOiBzdHJpbmcgfCBzdHJpbmdbXSkge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuICBmb3JtYXRBbGxGaWxlcygpIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIHNhbWUgYXMgcHJvamVjdC5wYXRoaGFzRmlsZUV4aXN0cygpO1xuICAgKiBidXQgd2l0aCBwYXRoLnJlc29sdmVcbiAgICovXG4gIGNvbnRhaW5zRmlsZShmaWxlUmVsYXRpdmVUb1Byb2plY3RQYXRoOiBzdHJpbmcpIHtcbiAgICBjb25zdCBmdWxsUGF0aCA9IHBhdGgucmVzb2x2ZShcbiAgICAgIHBhdGguam9pbih0aGlzLmxvY2F0aW9uLCBmaWxlUmVsYXRpdmVUb1Byb2plY3RQYXRoKSxcbiAgICApO1xuICAgIHJldHVybiBIZWxwZXJzLmV4aXN0cyhmdWxsUGF0aCk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIGFic29sdXRlIHBhdGg6XG4gICAqIGNvbmNhdGVkIHByb2plY3QgbG9jYXRpb24gd2l0aCByZWxhdGl2ZSBwYXRoXG4gICAqL1xuICBwYXRoRm9yKHJlbGF0aXZlUGF0aDogc3RyaW5nIHwgc3RyaW5nW10pIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICB3cml0ZUpzb24ocmVsYXRpdmVQYXRoOiBzdHJpbmcsIGpzb246IG9iamVjdCkge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIHdyaXRlSnNvbkMocmVsYXRpdmVQYXRoOiBzdHJpbmcsIGpzb246IG9iamVjdCkge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1cyBleGVjdXRlIGluc3RlYWRcbiAgICogdXNlIG91dHB1dCBmcm9tIG9yIG1vcmUgcHJlY2llc2UgY3JhZnRlZCBhcGlcbiAgICovXG4gIHJ1bihjb21tYW5kOiBzdHJpbmcsIG9wdGlvbnM/OiBPbWl0PENvcmVNb2RlbHMuUnVuT3B0aW9ucywgJ2N3ZCc+KSB7XG4gICAgbGV0IG9wdDogQ29yZU1vZGVscy5SdW5PcHRpb25zO1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuICAgIHJldHVybiBIZWxwZXJzLnJ1bihjb21tYW5kLCBvcHQpO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBzYW1lIGFzIHJ1biBidXQgYXN5bmNcbiAgICovXG4gIHB1YmxpYyBhc3luYyBleGVjdXRlKFxuICAgIGNvbW1hbmQ6IHN0cmluZyxcbiAgICBvcHRpb25zPzogQ29yZU1vZGVscy5FeGVjdXRlT3B0aW9ucyAmIHsgc2hvd0NvbW1hbmQ/OiBib29sZWFuIH0sXG4gICk6IFByb21pc2U8YW55PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogdHJ5IHJ1biBidXQgY29udGludWUgd2hlbiBpdCBmYWlsc1xuICAgKiBAcGFyYW0gY29tbWFuZFxuICAgKiBAcGFyYW0gb3B0aW9uc1xuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgdHJ5UnVuU3luYyhcbiAgICBjb21tYW5kOiBzdHJpbmcsXG4vKiAqL1xuLyogKi9cbiAgXG4gICk6IHZvaWQge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICBvdXRwdXRGcm9tKFxuICAgIGNvbW1hbmQ6IHN0cmluZyxcbi8qICovXG4vKiAqL1xuICBcbiAgKSB7XG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgcmVtb3ZlRmlsZShmaWxlUmVsYXRpdmVUb1Byb2plY3RQYXRoOiBzdHJpbmcpIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICByZWFkRmlsZShmaWxlUmVsYXRpdmVUb1Byb2plY3RQYXRoOiBzdHJpbmcpIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIHJlYWQganNvbiBmaWxlXG4gICAqIGhhbmRsZSBhbGwganNvbiBmaWxlc1xuICAgKiBqc29uYywganNvbjUgLCBqc29uXG4gICAqIEBwYXJhbSBmaWxlUmVsYXRpdmVUb1Byb2plY3RQYXRoXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICByZWFkSnNvbjxUID0ge30+KGZpbGVSZWxhdGl2ZVRvUHJvamVjdFBhdGg6IHN0cmluZyk6IFQge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBjb3B5IGZpbGVzIG9yIGZvbGRlcnMgZnJvbVxuICAgKiBwcm9qZWN0IHRvIGRlc3RpbmF0aW9uXG4gICAqL1xuICBjb3B5KGZpbGVzT3JGb2xkZXJSZWxhdGl2ZVBhdGhlczogc3RyaW5nW10pOiB7XG4gICAgdG86IChkZXN0aW5hdGlvbjogc3RyaW5nKSA9PiB2b2lkO1xuICB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgdG86IChkZXN0aW5hdGlvbjogc3RyaW5nKTogdm9pZCA9PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICAgICAgcmV0dXJuICh2b2lkIDApO1xuICAgICAgfSxcbiAgICB9O1xuICB9XG5cblxuXG4gIHJlbW92ZShyZWxhdGl2ZVBhdGg6IHN0cmluZyB8IHN0cmluZ1tdLCBleGFjdFBhdGggPSB0cnVlKSB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIHJlbW92ZUZvbGRlckJ5UmVsYXRpdmVQYXRoKHJlbGF0aXZlUGF0aFRvRm9sZGVyOiBzdHJpbmcpIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcbiAgfVxuXG5cbiAgcHJvdGVjdGVkIGdldFVuaXF1ZUZvclRhc2sodGFzazogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYHRhc2soJHt0YXNrfSkgaW4gJHt0aGlzLmdlbmVyaWNOYW1lfWA7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcmVnaXN0ZXJBbmRBc3NpZ25Qb3J0KFxuICAgIHRhc2tOYW1lOiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IHsgc3RhcnRGcm9tPzogbnVtYmVyIH0sXG4gICk6IFByb21pc2U8bnVtYmVyPiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSByZWdpc3RlckFuZEFzc2lnblBvcnQoKSBpbnN0ZWFkXG4gICAqL1xuICBhc3luYyBhc3NpZ25GcmVlUG9ydChcbiAgICBzdGFydEZyb206IG51bWJlciA9IDQyMDAsXG4gICAgaG93TWFueUZyZWVQb3J0c0FmdGVyVGhhdFBvcnQ6IG51bWJlciA9IDAsXG4gICk6IFByb21pc2U8bnVtYmVyPiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIHJlbW92ZUl0c2VsZigpIHtcbi8qICovXG4vKiAqL1xuICBcbiAgfVxuXG5cblxuICAvKipcbiAgICogUHVycG9zZTogbm90IGluaXRpYWxpemluZyBhbGwgY2xhc3NlcyBhdCB0aGUgYmVnaW5uaW5nXG4gICAqIE9ubHkgZm9yIEJhc2VGZWF0dXJlRm9yUHJvamVjdCBjbGFzc1xuICAgKi9cbiAgZGVmaW5lUHJvcGVydHk8UFJPSkVDVD4oXG4gICAgdmFyaWFibGVOYW1lOiBrZXlvZiBQUk9KRUNULFxuICAgIGNsYXNzRm46IEZ1bmN0aW9uLFxuICAgIG9wdGlvbnM/OiB7XG4gICAgICBjdXN0b21JbnN0YW5jZVJldHVybj86ICgpID0+IG9iamVjdDtcbiAgICB9LFxuICApIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBmcy5jb3B5IG9wdGlvbiBmaWx0ZXIgZnVuY3Rpb24gZm9yIGNvcHlpbmcgb25seSBzZWxlY3RlZCBmb2xkZXJzIGZyb20gcHJvamVjdFxuICAgKi9cbiAgZmlsdGVyT25seUNvcHkoYmFzZVBhdGhGb2xkZXJzT25seVRvSW5jbHVkZTogc3RyaW5nW10pIHtcbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogZnMuY29weSBvcHRpb24gZmlsdGVyIGZ1bmN0aW9uIGZvciBjb3B5aW5nIG9ubHkgbm90IHNlbGVjdGVkIGZvbGRlcnMgZnJvbSBwcm9qZWN0XG4gICAqL1xuICBmaWx0ZXJEb250Q29weShiYXNlUGF0aEZvbGRlcnNUb3NTa2lwOiBzdHJpbmdbXSkge1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBnZW5lcmFsIGRlZmF1bHQgZGV2ZWxvcG1lbnQgYnJhbmNoIGZvciBhbGwga2luZHMgb2YgcHJvamVjdHNcbiAgICovXG4gIGdldERlZmF1bHREZXZlbG9wbWVudEJyYW5jaCgpIHtcbiAgICByZXR1cm4gJ2RldmVsb3AnO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBtYWluL2RlZmF1bHQgaGFyZGNvZGVkIGJyYW5jaGVzXG4gICAqL1xuICBnZXRNYWluQnJhbmNoZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbJ21hc3RlcicsICdkZXZlbG9wJywgJ3N0YWdlJywgJ3Byb2QnLCAndGVzdCddO1xuICB9XG5cblxuXG4gIGlzVW5zaW5nQWN0aW9uQ29tbWl0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG5cblxuICB1c2VGZWF0dXJlSW5CcmFuY2hOYW1lRm9yVGVzdHMoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cblxuXG4gIGFzeW5jIHJlc2V0UHJvY2VzcyhvdmVycmlkZUJyYW5jaD86IHN0cmluZywgcmVjcnVzaXZlID0gZmFsc2UpIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcbiAgfVxuXG5cblxuICBsaW5rVG8oZGVzdFBhY2thZ2VMb2NhdGlvbjogc3RyaW5nKSB7XG4vKiAqL1xuLyogKi9cbiAgXG4gIH1cblxuXG5cbiAgc2V0VmFsdWVUb0pTT04oXG4gICAgcmVsYXRpdmVQYXRoOiBzdHJpbmcgfCBzdHJpbmdbXSxcbiAgICBsb2Rhc2hHZXRQYXRoOiBzdHJpbmcsXG4gICAgdmFsdWU6IGFueSxcbiAgKTogdm9pZCB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgc2V0VmFsdWVUb0pTT05DKFxuICAgIHJlbGF0aXZlUGF0aDogc3RyaW5nIHwgc3RyaW5nW10sXG4gICAgbG9kYXNoR2V0UGF0aDogc3RyaW5nLFxuICAgIHZhbHVlOiBhbnksXG4gICk6IHZvaWQge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIHNldFZhbHVlVG9KU09ONShcbiAgICByZWxhdGl2ZVBhdGg6IHN0cmluZyB8IHN0cmluZ1tdLFxuICAgIGxvZGFzaEdldFBhdGg6IHN0cmluZyxcbiAgICB2YWx1ZTogYW55LFxuICApOiB2b2lkIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICBnZXRWYWx1ZUZyb21KU09OKFxuICAgIHJlbGF0aXZlUGF0aDogc3RyaW5nIHwgc3RyaW5nW10sXG4gICAgbG9kYXNoR2V0UGF0aDogc3RyaW5nLFxuICAgIGRlZmF1bHRWYWx1ZTogYW55ID0gdm9pZCAwLFxuICApOiBhbnkge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICBnZXRWYWx1ZUZyb21KU09OQyhcbiAgICByZWxhdGl2ZVBhdGg6IHN0cmluZyB8IHN0cmluZ1tdLFxuICAgIGxvZGFzaEdldFBhdGg6IHN0cmluZyxcbiAgICBkZWZhdWx0VmFsdWU6IGFueSA9IHZvaWQgMCxcbiAgKTogYW55IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cblxuICB3cml0ZUZpbGUocmVsYXRpdmVQYXRoOiBzdHJpbmcgfCBzdHJpbmdbXSwgY29udGVudDogc3RyaW5nKSB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG4gIH1cblxuXG5cbiAgcHVibGljIHJ1bkNvbW1hbmRHZXRTdHJpbmcodGhpczogQmFzZVByb2plY3QsIGNvbW1hbmQ6IHN0cmluZykge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgdG9TdHJpbmcgPSAoKSA9PiB7XG4gICAgcmV0dXJuIGAke3RoaXMubmFtZX09PiR7dGhpcy5sb2NhdGlvbn1gO1xuICB9O1xuXG5cblxuICBnZXQgcGFyZW50c05hbWVzKCkge1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuICBvcGVuTG9jYXRpb24ocmVsYXRpdmVGb2xkZXJQYXRoOiBzdHJpbmcpIHtcbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cbiAgcHJpdmF0ZSBmaW5kUGFyZW50c05hbWVzKFxuICAgIHByb2plY3Q/OiBQUk9KRUNULFxuICAgIHBhcmVudD86IFBST0pFQ1QsXG4gICAgcmVzdWx0ID0gW10sXG4gICk6IHN0cmluZ1tdIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICB0cnlLaWxsQWxsRWxlY3Ryb25JbnN0YW5jZXMoKSB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogaW5pdCBwcm9qZWN0IGZpbGVzIHN0cnVjdHVyZSBhbmQgZGVwZWRlbmNpZXNcbiAgICovXG4gIGFzeW5jIGluaXQoaW5pdE9wdGlvbnM/OiBhbnkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RPRE8gSU1QTEVNRU5UJyk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIGdsb2JhbGx5IGxpbmsgbnBtIGFzIHBhY2thZ2VcbiAgICovXG4gIGFzeW5jIGxpbmsoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUT0RPIElNUExFTUVOVCcpO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBpbml0IHByb2plY3QgZmlsZXMgc3RydWN0dXJlIHdpdGhvdXQgZGVwZWRlbmNpZXNcbiAgICovXG4gIGFzeW5jIHN0cnVjdChpbml0T3B0aW9ucz86IGFueSkge1xuICAgIHRocm93IG5ldyBFcnJvcignVE9ETyBJTVBMRU1FTlQnKTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogaW5pdCBhbmQgYnVpbGQoKSBwcm9qZWN0XG4gICAqL1xuICBhc3luYyB0ZXN0KHRlc3RPcHRpb25zPzogYW55KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUT0RPIElNUExFTUVOVCcpO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBpbml0IGFuZCBidWlsZCgpIHByb2plY3RcbiAgICovXG4gIGFzeW5jIGJ1aWxkKGJ1aWxkT3B0aW9ucz86IGFueSkge1xuICAgIHRocm93IG5ldyBFcnJvcignVE9ETyBJTVBMRU1FTlQnKTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogcHVibGlzaCBwcm9qZWN0IHRvIG5wbVxuICAgKi9cbiAgYXN5bmMgcHVibGlzaChwdWJsaXNoT3B0aW9ucz86IGFueSkge1xuICAgIHRocm93IG5ldyBFcnJvcignVE9ETyBJTVBMRU1FTlQnKTtcbiAgfVxuXG5cblxuICBhc3luYyByZWxlYXNlKHJlbGVhc2VPcHRpb25zPzogYW55KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUT0RPIElNUExFTUVOVCcpO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBsaW50IHBvcmplY3RcbiAgICovXG4gIGFzeW5jIGxpbnQobGludE9wdGlvbnM/OiBhbnkpIHtcbiAgICBIZWxwZXJzLmluZm8oYFxuXG5cbiAgICBDT01NSVQgTElOVCBOT1QgSU1QTEVNRU5URURcblxuXG4gICAgYCk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIGdldCBpbmZvIGFib3V0IHBvcmplY3RcbiAgICovXG4gIGFzeW5jIGluZm8oKSB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG59XG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT10bnAtaGVscGVycyBsaWIvYmFzZS9jbGFzc2VzL2Jhc2UtcHJvamVjdC50cyJdfQ==