tnp-helpers 18.0.17 → 18.0.19

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