tnp-helpers 19.0.0 → 19.0.2

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 (246) hide show
  1. package/assets/shared/shared_folder_info.txt +3 -3
  2. package/browser/fesm2022/tnp-helpers.mjs +74 -39
  3. package/browser/fesm2022/tnp-helpers.mjs.map +1 -1
  4. package/browser/lib/base/classes/base-cli-worker/base-cli-worker.d.ts +13 -3
  5. package/browser/lib/base/classes/base-git.d.ts +1 -1
  6. package/browser/lib/base/classes/base-node-modules.d.ts +1 -1
  7. package/browser/lib/base/tcp-udp-ports/tcp-udp-ports.context.d.ts +10 -43
  8. package/browser/lib/base/tcp-udp-ports/tcp-upd-ports.worker.d.ts +3 -7
  9. package/browser/lib/build-info._auto-generated_.d.ts +3 -0
  10. package/browser/lib/helpers/helpers.d.ts +4 -1
  11. package/client/fesm2022/tnp-helpers.mjs +74 -39
  12. package/client/fesm2022/tnp-helpers.mjs.map +1 -1
  13. package/client/lib/base/classes/base-cli-worker/base-cli-worker.d.ts +13 -3
  14. package/client/lib/base/classes/base-git.d.ts +1 -1
  15. package/client/lib/base/classes/base-node-modules.d.ts +1 -1
  16. package/client/lib/base/tcp-udp-ports/tcp-udp-ports.context.d.ts +10 -43
  17. package/client/lib/base/tcp-udp-ports/tcp-upd-ports.worker.d.ts +3 -7
  18. package/client/lib/build-info._auto-generated_.d.ts +3 -0
  19. package/client/lib/helpers/helpers.d.ts +4 -1
  20. package/lib/base/classes/base-cli-worker/base-cli-worker.d.ts +13 -3
  21. package/lib/base/classes/base-cli-worker/base-cli-worker.js +54 -1
  22. package/lib/base/classes/base-cli-worker/base-cli-worker.js.map +1 -1
  23. package/lib/base/classes/base-global-command-line.backend.d.ts +2 -0
  24. package/lib/base/classes/base-global-command-line.backend.js +36 -1
  25. package/lib/base/classes/base-global-command-line.backend.js.map +1 -1
  26. package/lib/base/classes/base-node-modules.d.ts +1 -1
  27. package/lib/base/classes/base-project-resolver.js +4 -2
  28. package/lib/base/classes/base-project-resolver.js.map +1 -1
  29. package/lib/base/classes/base-project.d.ts +1 -1
  30. package/lib/base/classes/base-vscode.js +3 -0
  31. package/lib/base/classes/base-vscode.js.map +1 -1
  32. package/lib/base/tcp-udp-ports/not-assignable-port.entity.js +2 -2
  33. package/lib/base/tcp-udp-ports/tcp-udp-ports.context.d.ts +10 -43
  34. package/lib/base/tcp-udp-ports/tcp-udp-ports.context.js +2 -2
  35. package/lib/base/tcp-udp-ports/tcp-udp-ports.context.js.map +1 -1
  36. package/lib/base/tcp-udp-ports/tcp-upd-ports.worker.d.ts +3 -7
  37. package/lib/base/tcp-udp-ports/tcp-upd-ports.worker.js +3 -33
  38. package/lib/base/tcp-udp-ports/tcp-upd-ports.worker.js.map +1 -1
  39. package/lib/build-info._auto-generated_.d.ts +1 -0
  40. package/lib/build-info._auto-generated_.js +4 -1
  41. package/lib/build-info._auto-generated_.js.map +1 -1
  42. package/lib/helpers/for-backend/helpers-file-folders.js.map +1 -1
  43. package/lib/helpers/for-backend/helpers-git.backend.d.ts +2 -0
  44. package/lib/helpers/for-backend/helpers-git.backend.js +34 -23
  45. package/lib/helpers/for-backend/helpers-git.backend.js.map +1 -1
  46. package/lib/helpers/for-browser/angular.helper.js +2 -2
  47. package/lib/helpers/helpers.d.ts +4 -1
  48. package/lib/helpers/helpers.js +18 -15
  49. package/lib/helpers/helpers.js.map +1 -1
  50. package/lib/index._auto-generated_.js +2 -2
  51. package/lib/index._auto-generated_.js.map +1 -1
  52. package/lib/old/base-component.js +2 -2
  53. package/lib/old/base-formly-component.js +2 -2
  54. package/lib/old/dual-component-ctrl.js +2 -2
  55. package/package.json +5 -5
  56. package/src.d.ts +3 -3
  57. package/tmp-environment.json +5 -4
  58. package/websql/fesm2022/tnp-helpers.mjs +74 -40
  59. package/websql/fesm2022/tnp-helpers.mjs.map +1 -1
  60. package/websql/lib/base/classes/base-cli-worker/base-cli-worker.d.ts +13 -3
  61. package/websql/lib/base/classes/base-git.d.ts +1 -1
  62. package/websql/lib/base/classes/base-node-modules.d.ts +1 -1
  63. package/websql/lib/base/tcp-udp-ports/tcp-udp-ports.context.d.ts +10 -43
  64. package/websql/lib/base/tcp-udp-ports/tcp-upd-ports.worker.d.ts +3 -7
  65. package/websql/lib/build-info._auto-generated_.d.ts +3 -0
  66. package/websql/lib/helpers/helpers.d.ts +4 -1
  67. package/browser/esm2022/lib/base/classes/base-bower-json.mjs +0 -14
  68. package/browser/esm2022/lib/base/classes/base-cli-worker/base-cli-worker-config.mjs +0 -37
  69. package/browser/esm2022/lib/base/classes/base-cli-worker/base-cli-worker-controller.mjs +0 -125
  70. package/browser/esm2022/lib/base/classes/base-cli-worker/base-cli-worker-terminal-ui.mjs +0 -133
  71. package/browser/esm2022/lib/base/classes/base-cli-worker/base-cli-worker.mjs +0 -404
  72. package/browser/esm2022/lib/base/classes/base-cli-worker/index.mjs +0 -7
  73. package/browser/esm2022/lib/base/classes/base-compiler-for-project.mjs +0 -61
  74. package/browser/esm2022/lib/base/classes/base-db.mjs +0 -31
  75. package/browser/esm2022/lib/base/classes/base-debounce-compiler-for-project.mjs +0 -56
  76. package/browser/esm2022/lib/base/classes/base-feature-for-project.mjs +0 -11
  77. package/browser/esm2022/lib/base/classes/base-git.mjs +0 -1175
  78. package/browser/esm2022/lib/base/classes/base-json-file-reader.mjs +0 -114
  79. package/browser/esm2022/lib/base/classes/base-library-build.mjs +0 -613
  80. package/browser/esm2022/lib/base/classes/base-linked-projects.mjs +0 -323
  81. package/browser/esm2022/lib/base/classes/base-node-modules.mjs +0 -417
  82. package/browser/esm2022/lib/base/classes/base-npm-helpers.mjs +0 -266
  83. package/browser/esm2022/lib/base/classes/base-package-json.mjs +0 -340
  84. package/browser/esm2022/lib/base/classes/base-process-manager.mjs +0 -285
  85. package/browser/esm2022/lib/base/classes/base-project-resolver.mjs +0 -282
  86. package/browser/esm2022/lib/base/classes/base-project.mjs +0 -922
  87. package/browser/esm2022/lib/base/classes/base-quick-fixes.mjs +0 -88
  88. package/browser/esm2022/lib/base/classes/base-release-process.mjs +0 -599
  89. package/browser/esm2022/lib/base/classes/base-static-pages.mjs +0 -110
  90. package/browser/esm2022/lib/base/classes/base-vscode.mjs +0 -531
  91. package/browser/esm2022/lib/base/classes/index.mjs +0 -24
  92. package/browser/esm2022/lib/base/commit-data.mjs +0 -633
  93. package/browser/esm2022/lib/base/config-database.mjs +0 -46
  94. package/browser/esm2022/lib/base/core-project.mjs +0 -115
  95. package/browser/esm2022/lib/base/index.mjs +0 -10
  96. package/browser/esm2022/lib/base/linked-project.mjs +0 -90
  97. package/browser/esm2022/lib/base/project-database.mjs +0 -18
  98. package/browser/esm2022/lib/base/tcp-udp-ports/index.mjs +0 -6
  99. package/browser/esm2022/lib/base/tcp-udp-ports/ports.controller.mjs +0 -260
  100. package/browser/esm2022/lib/base/tcp-udp-ports/ports.entity.mjs +0 -33
  101. package/browser/esm2022/lib/base/tcp-udp-ports/tcp-udp-ports.context.mjs +0 -32
  102. package/browser/esm2022/lib/base/tcp-udp-ports/tcp-upd-ports-terminal-ui.mjs +0 -261
  103. package/browser/esm2022/lib/base/tcp-udp-ports/tcp-upd-ports.worker.mjs +0 -45
  104. package/browser/esm2022/lib/base/translate.mjs +0 -566
  105. package/browser/esm2022/lib/helpers/for-backend/helpers-file-folders.mjs +0 -1008
  106. package/browser/esm2022/lib/helpers/for-backend/helpers-process.mjs +0 -493
  107. package/browser/esm2022/lib/helpers/for-browser/angular.helper.mjs +0 -89
  108. package/browser/esm2022/lib/helpers/for-browser/helpers-browser.mjs +0 -47
  109. package/browser/esm2022/lib/helpers/helpers-array-obj.mjs +0 -118
  110. package/browser/esm2022/lib/helpers/helpers-numbers.mjs +0 -12
  111. package/browser/esm2022/lib/helpers/helpers-strings-regexes.mjs +0 -51
  112. package/browser/esm2022/lib/helpers/helpers-strings.mjs +0 -258
  113. package/browser/esm2022/lib/helpers/helpers.mjs +0 -428
  114. package/browser/esm2022/lib/index.mjs +0 -13
  115. package/browser/esm2022/lib/models.mjs +0 -175
  116. package/browser/esm2022/lib/utils.mjs +0 -952
  117. package/browser/esm2022/lib/validators/validators-git.mjs +0 -12
  118. package/browser/esm2022/lib/validators/validators-network.mjs +0 -18
  119. package/browser/esm2022/lib/validators/validators.mjs +0 -10
  120. package/browser/esm2022/migrations/1736198527297_init.mjs +0 -41
  121. package/browser/esm2022/migrations/1736199486472_addingNotAssignablePorts.mjs +0 -63
  122. package/browser/esm2022/migrations/1736454437350_addFreePorts.mjs +0 -50
  123. package/browser/esm2022/migrations/index.mjs +0 -5
  124. package/browser/esm2022/migrations/migrations_index._auto-generated_.mjs +0 -16
  125. package/browser/esm2022/public-api.mjs +0 -2
  126. package/browser/esm2022/tnp-helpers.mjs +0 -5
  127. package/client/esm2022/lib/base/classes/base-bower-json.mjs +0 -14
  128. package/client/esm2022/lib/base/classes/base-cli-worker/base-cli-worker-config.mjs +0 -37
  129. package/client/esm2022/lib/base/classes/base-cli-worker/base-cli-worker-controller.mjs +0 -125
  130. package/client/esm2022/lib/base/classes/base-cli-worker/base-cli-worker-terminal-ui.mjs +0 -133
  131. package/client/esm2022/lib/base/classes/base-cli-worker/base-cli-worker.mjs +0 -404
  132. package/client/esm2022/lib/base/classes/base-cli-worker/index.mjs +0 -7
  133. package/client/esm2022/lib/base/classes/base-compiler-for-project.mjs +0 -61
  134. package/client/esm2022/lib/base/classes/base-db.mjs +0 -31
  135. package/client/esm2022/lib/base/classes/base-debounce-compiler-for-project.mjs +0 -56
  136. package/client/esm2022/lib/base/classes/base-feature-for-project.mjs +0 -11
  137. package/client/esm2022/lib/base/classes/base-git.mjs +0 -1175
  138. package/client/esm2022/lib/base/classes/base-json-file-reader.mjs +0 -114
  139. package/client/esm2022/lib/base/classes/base-library-build.mjs +0 -613
  140. package/client/esm2022/lib/base/classes/base-linked-projects.mjs +0 -323
  141. package/client/esm2022/lib/base/classes/base-node-modules.mjs +0 -417
  142. package/client/esm2022/lib/base/classes/base-npm-helpers.mjs +0 -266
  143. package/client/esm2022/lib/base/classes/base-package-json.mjs +0 -340
  144. package/client/esm2022/lib/base/classes/base-process-manager.mjs +0 -285
  145. package/client/esm2022/lib/base/classes/base-project-resolver.mjs +0 -282
  146. package/client/esm2022/lib/base/classes/base-project.mjs +0 -922
  147. package/client/esm2022/lib/base/classes/base-quick-fixes.mjs +0 -88
  148. package/client/esm2022/lib/base/classes/base-release-process.mjs +0 -599
  149. package/client/esm2022/lib/base/classes/base-static-pages.mjs +0 -110
  150. package/client/esm2022/lib/base/classes/base-vscode.mjs +0 -531
  151. package/client/esm2022/lib/base/classes/index.mjs +0 -24
  152. package/client/esm2022/lib/base/commit-data.mjs +0 -633
  153. package/client/esm2022/lib/base/config-database.mjs +0 -46
  154. package/client/esm2022/lib/base/core-project.mjs +0 -115
  155. package/client/esm2022/lib/base/index.mjs +0 -10
  156. package/client/esm2022/lib/base/linked-project.mjs +0 -90
  157. package/client/esm2022/lib/base/project-database.mjs +0 -18
  158. package/client/esm2022/lib/base/tcp-udp-ports/index.mjs +0 -6
  159. package/client/esm2022/lib/base/tcp-udp-ports/ports.controller.mjs +0 -260
  160. package/client/esm2022/lib/base/tcp-udp-ports/ports.entity.mjs +0 -33
  161. package/client/esm2022/lib/base/tcp-udp-ports/tcp-udp-ports.context.mjs +0 -32
  162. package/client/esm2022/lib/base/tcp-udp-ports/tcp-upd-ports-terminal-ui.mjs +0 -261
  163. package/client/esm2022/lib/base/tcp-udp-ports/tcp-upd-ports.worker.mjs +0 -45
  164. package/client/esm2022/lib/base/translate.mjs +0 -566
  165. package/client/esm2022/lib/helpers/for-backend/helpers-file-folders.mjs +0 -1008
  166. package/client/esm2022/lib/helpers/for-backend/helpers-process.mjs +0 -493
  167. package/client/esm2022/lib/helpers/for-browser/angular.helper.mjs +0 -89
  168. package/client/esm2022/lib/helpers/for-browser/helpers-browser.mjs +0 -47
  169. package/client/esm2022/lib/helpers/helpers-array-obj.mjs +0 -118
  170. package/client/esm2022/lib/helpers/helpers-numbers.mjs +0 -12
  171. package/client/esm2022/lib/helpers/helpers-strings-regexes.mjs +0 -51
  172. package/client/esm2022/lib/helpers/helpers-strings.mjs +0 -258
  173. package/client/esm2022/lib/helpers/helpers.mjs +0 -428
  174. package/client/esm2022/lib/index.mjs +0 -13
  175. package/client/esm2022/lib/models.mjs +0 -175
  176. package/client/esm2022/lib/utils.mjs +0 -952
  177. package/client/esm2022/lib/validators/validators-git.mjs +0 -12
  178. package/client/esm2022/lib/validators/validators-network.mjs +0 -18
  179. package/client/esm2022/lib/validators/validators.mjs +0 -10
  180. package/client/esm2022/migrations/1736198527297_init.mjs +0 -41
  181. package/client/esm2022/migrations/1736199486472_addingNotAssignablePorts.mjs +0 -63
  182. package/client/esm2022/migrations/1736454437350_addFreePorts.mjs +0 -50
  183. package/client/esm2022/migrations/index.mjs +0 -5
  184. package/client/esm2022/migrations/migrations_index._auto-generated_.mjs +0 -16
  185. package/client/esm2022/public-api.mjs +0 -2
  186. package/client/esm2022/tnp-helpers.mjs +0 -5
  187. package/websql/esm2022/lib/base/classes/base-bower-json.mjs +0 -14
  188. package/websql/esm2022/lib/base/classes/base-cli-worker/base-cli-worker-config.mjs +0 -37
  189. package/websql/esm2022/lib/base/classes/base-cli-worker/base-cli-worker-controller.mjs +0 -125
  190. package/websql/esm2022/lib/base/classes/base-cli-worker/base-cli-worker-terminal-ui.mjs +0 -133
  191. package/websql/esm2022/lib/base/classes/base-cli-worker/base-cli-worker.mjs +0 -404
  192. package/websql/esm2022/lib/base/classes/base-cli-worker/index.mjs +0 -7
  193. package/websql/esm2022/lib/base/classes/base-compiler-for-project.mjs +0 -61
  194. package/websql/esm2022/lib/base/classes/base-db.mjs +0 -31
  195. package/websql/esm2022/lib/base/classes/base-debounce-compiler-for-project.mjs +0 -56
  196. package/websql/esm2022/lib/base/classes/base-feature-for-project.mjs +0 -11
  197. package/websql/esm2022/lib/base/classes/base-git.mjs +0 -1175
  198. package/websql/esm2022/lib/base/classes/base-json-file-reader.mjs +0 -114
  199. package/websql/esm2022/lib/base/classes/base-library-build.mjs +0 -613
  200. package/websql/esm2022/lib/base/classes/base-linked-projects.mjs +0 -323
  201. package/websql/esm2022/lib/base/classes/base-node-modules.mjs +0 -417
  202. package/websql/esm2022/lib/base/classes/base-npm-helpers.mjs +0 -266
  203. package/websql/esm2022/lib/base/classes/base-package-json.mjs +0 -340
  204. package/websql/esm2022/lib/base/classes/base-process-manager.mjs +0 -285
  205. package/websql/esm2022/lib/base/classes/base-project-resolver.mjs +0 -272
  206. package/websql/esm2022/lib/base/classes/base-project.mjs +0 -891
  207. package/websql/esm2022/lib/base/classes/base-quick-fixes.mjs +0 -88
  208. package/websql/esm2022/lib/base/classes/base-release-process.mjs +0 -599
  209. package/websql/esm2022/lib/base/classes/base-static-pages.mjs +0 -110
  210. package/websql/esm2022/lib/base/classes/base-vscode.mjs +0 -531
  211. package/websql/esm2022/lib/base/classes/index.mjs +0 -24
  212. package/websql/esm2022/lib/base/commit-data.mjs +0 -633
  213. package/websql/esm2022/lib/base/config-database.mjs +0 -46
  214. package/websql/esm2022/lib/base/core-project.mjs +0 -115
  215. package/websql/esm2022/lib/base/index.mjs +0 -10
  216. package/websql/esm2022/lib/base/linked-project.mjs +0 -90
  217. package/websql/esm2022/lib/base/project-database.mjs +0 -18
  218. package/websql/esm2022/lib/base/tcp-udp-ports/index.mjs +0 -6
  219. package/websql/esm2022/lib/base/tcp-udp-ports/ports.controller.mjs +0 -260
  220. package/websql/esm2022/lib/base/tcp-udp-ports/ports.entity.mjs +0 -56
  221. package/websql/esm2022/lib/base/tcp-udp-ports/tcp-udp-ports.context.mjs +0 -32
  222. package/websql/esm2022/lib/base/tcp-udp-ports/tcp-upd-ports-terminal-ui.mjs +0 -261
  223. package/websql/esm2022/lib/base/tcp-udp-ports/tcp-upd-ports.worker.mjs +0 -45
  224. package/websql/esm2022/lib/base/translate.mjs +0 -566
  225. package/websql/esm2022/lib/helpers/for-backend/helpers-file-folders.mjs +0 -1008
  226. package/websql/esm2022/lib/helpers/for-backend/helpers-process.mjs +0 -493
  227. package/websql/esm2022/lib/helpers/for-browser/angular.helper.mjs +0 -89
  228. package/websql/esm2022/lib/helpers/for-browser/helpers-browser.mjs +0 -47
  229. package/websql/esm2022/lib/helpers/helpers-array-obj.mjs +0 -118
  230. package/websql/esm2022/lib/helpers/helpers-numbers.mjs +0 -12
  231. package/websql/esm2022/lib/helpers/helpers-strings-regexes.mjs +0 -51
  232. package/websql/esm2022/lib/helpers/helpers-strings.mjs +0 -258
  233. package/websql/esm2022/lib/helpers/helpers.mjs +0 -428
  234. package/websql/esm2022/lib/index.mjs +0 -13
  235. package/websql/esm2022/lib/models.mjs +0 -175
  236. package/websql/esm2022/lib/utils.mjs +0 -952
  237. package/websql/esm2022/lib/validators/validators-git.mjs +0 -12
  238. package/websql/esm2022/lib/validators/validators-network.mjs +0 -18
  239. package/websql/esm2022/lib/validators/validators.mjs +0 -10
  240. package/websql/esm2022/migrations/1736198527297_init.mjs +0 -41
  241. package/websql/esm2022/migrations/1736199486472_addingNotAssignablePorts.mjs +0 -63
  242. package/websql/esm2022/migrations/1736454437350_addFreePorts.mjs +0 -50
  243. package/websql/esm2022/migrations/index.mjs +0 -5
  244. package/websql/esm2022/migrations/migrations_index._auto-generated_.mjs +0 -16
  245. package/websql/esm2022/public-api.mjs +0 -2
  246. package/websql/esm2022/tnp-helpers.mjs +0 -5
@@ -1,118 +0,0 @@
1
- import { _, Utils } from 'tnp-core/websql';
2
- import * as fuzzy from 'fuzzy';
3
- export class HelpersArrayObj {
4
- from(s) {
5
- if (_.isArray(s)) {
6
- return s;
7
- }
8
- if (_.isString(s)) {
9
- return s.split(' ');
10
- }
11
- }
12
- second(arr) {
13
- if (!Array.isArray(arr) || arr.length < 2) {
14
- return void 0;
15
- }
16
- return arr[1];
17
- }
18
- /**
19
- * @deprecated
20
- * use moveObjectBefore
21
- */
22
- arrayMoveElementBefore(arr, a, b, prop) {
23
- let indexA = prop
24
- ? arr.findIndex(elem => elem[prop] === a[prop])
25
- : arr.indexOf(a);
26
- _.pullAt(arr, indexA);
27
- let indexB = prop
28
- ? arr.findIndex(elem => elem[prop] === b[prop])
29
- : arr.indexOf(b);
30
- if (indexB === 0) {
31
- arr.unshift(a);
32
- }
33
- else {
34
- arr.splice(indexB - 1, 0, a);
35
- }
36
- return arr;
37
- }
38
- /**
39
- * @deprecated
40
- * use moveObjectAfter
41
- */
42
- arrayMoveElementAfterB(arr, a, b, prop) {
43
- let indexA = prop
44
- ? arr.findIndex(elem => elem[prop] === a[prop])
45
- : arr.indexOf(a);
46
- _.pullAt(arr, indexA);
47
- let indexB = prop
48
- ? arr.findIndex(elem => elem[prop] === b[prop])
49
- : arr.indexOf(b);
50
- if (indexB === arr.length - 1) {
51
- arr.push(a);
52
- }
53
- else {
54
- arr.splice(indexB + 1, 0, a);
55
- }
56
- return arr;
57
- }
58
- moveObjectBefore(array, target, before) {
59
- const newArray = [...array];
60
- const targetIndex = newArray.findIndex(item => item === target);
61
- const beforeIndex = newArray.findIndex(item => item === before);
62
- if (targetIndex === -1 || beforeIndex === -1) {
63
- console.error('Target or Before object not found in the array');
64
- return newArray;
65
- }
66
- newArray.splice(targetIndex, 1);
67
- newArray.splice(beforeIndex, 0, target);
68
- return newArray;
69
- }
70
- moveObjectAfter(array, target, after) {
71
- const newArray = [...array];
72
- const targetIndex = newArray.findIndex(item => item === target);
73
- const afterIndex = newArray.findIndex(item => item === after);
74
- if (targetIndex === -1 || afterIndex === -1) {
75
- console.error('Target or After object not found in the array');
76
- return newArray;
77
- }
78
- newArray.splice(targetIndex, 1);
79
- newArray.splice(afterIndex + 1, 0, target);
80
- return newArray;
81
- }
82
- /**
83
- * @deprecated use Utils.uniqArray from tnp-core
84
- */
85
- uniqArray(array, uniqueProperty) {
86
- return Utils.uniqArray(array, uniqueProperty);
87
- }
88
- /**
89
- * @deprecated use Utils.uniqArray from tnp-core
90
- */
91
- sortKeys(obj) {
92
- return Utils.sortKeys(obj);
93
- }
94
- /**
95
- * Fuzzy search
96
- */
97
- fuzzy(query, list, valueFn) {
98
- const resultsFuzzy = fuzzy.filter(query, list.map(k => (valueFn ? valueFn(k) : k)));
99
- const resultsFuzzyKebab = fuzzy.filter(_.kebabCase(query), list.map(k => _.kebabCase((valueFn ? valueFn(k) : k))));
100
- const matches = resultsFuzzy.map(el => el.string);
101
- const matchesKebab = resultsFuzzyKebab.map(el => el.string);
102
- const results = resultsFuzzy.length === 0
103
- ? []
104
- : list.filter(k => {
105
- return matches.includes((valueFn ? valueFn(k) : k));
106
- });
107
- if (matches.length === 0 && matchesKebab.length > 0) {
108
- const m = list.find(k => _.kebabCase((valueFn ? valueFn(k) : k)) ===
109
- _.first(matchesKebab));
110
- results.push(m);
111
- matches.push((valueFn ? valueFn(m) : m));
112
- }
113
- return { matches, results };
114
- }
115
- }
116
- ;
117
- ({}); // @--end-of-file-for-module=tnp-helpers lib/helpers/helpers-array-obj.ts
118
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy1hcnJheS1vYmouanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItZGlzdC13ZWJzcWwvdG5wLWhlbHBlcnMvcHJvamVjdHMvdG5wLWhlbHBlcnMvc3JjL2xpYi9oZWxwZXJzL2hlbHBlcnMtYXJyYXktb2JqLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFFL0IsTUFBTSxPQUFPLGVBQWU7SUFDMUIsSUFBSSxDQUFDLENBQW9CO1FBQ3ZCLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2pCLE9BQU8sQ0FBQyxDQUFDO1FBQ1gsQ0FBQztRQUNELElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2xCLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QixDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxHQUFHO1FBQ1IsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMxQyxPQUFPLEtBQUssQ0FBQyxDQUFDO1FBQ2hCLENBQUM7UUFDRCxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsc0JBQXNCLENBQVUsR0FBVSxFQUFFLENBQU0sRUFBRSxDQUFNLEVBQUUsSUFBYztRQUN4RSxJQUFJLE1BQU0sR0FBRyxJQUFJO1lBQ2YsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxD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Q0FBQyxDQUFDLENBQUMsQ0FBUSxDQUFDO2dCQUM5QyxDQUFDLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUN4QixDQUFDO1lBQ0YsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNoQixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBUSxDQUFDLENBQUM7UUFDbEQsQ0FBQztRQUVELE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUM7SUFDOUIsQ0FBQztDQUNGO0FBRUEsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyx5RUFBeUUiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuaW1wb3J0IHsgXywgVXRpbHMgfSBmcm9tICd0bnAtY29yZS93ZWJzcWwnO1xuaW1wb3J0ICogYXMgZnV6enkgZnJvbSAnZnV6enknO1xuXG5leHBvcnQgY2xhc3MgSGVscGVyc0FycmF5T2JqIHtcbiAgZnJvbShzOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcbiAgICBpZiAoXy5pc0FycmF5KHMpKSB7XG4gICAgICByZXR1cm4gcztcbiAgICB9XG4gICAgaWYgKF8uaXNTdHJpbmcocykpIHtcbiAgICAgIHJldHVybiBzLnNwbGl0KCcgJyk7XG4gICAgfVxuICB9XG5cbiAgc2Vjb25kKGFycikge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShhcnIpIHx8IGFyci5sZW5ndGggPCAyKSB7XG4gICAgICByZXR1cm4gdm9pZCAwO1xuICAgIH1cbiAgICByZXR1cm4gYXJyWzFdO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkXG4gICAqIHVzZSBtb3ZlT2JqZWN0QmVmb3JlXG4gICAqL1xuICBhcnJheU1vdmVFbGVtZW50QmVmb3JlPFQgPSBhbnk+KGFycjogYW55W10sIGE6IGFueSwgYjogYW55LCBwcm9wPzoga2V5b2YgVCkge1xuICAgIGxldCBpbmRleEEgPSBwcm9wXG4gICAgICA/IGFyci5maW5kSW5kZXgoZWxlbSA9PiBlbGVtW3Byb3BdID09PSBhW3Byb3BdKVxuICAgICAgOiBhcnIuaW5kZXhPZihhKTtcbiAgICBfLnB1bGxBdChhcnIsIGluZGV4QSk7XG4gICAgbGV0IGluZGV4QiA9IHByb3BcbiAgICAgID8gYXJyLmZpbmRJbmRleChlbGVtID0+IGVsZW1bcHJvcF0gPT09IGJbcHJvcF0pXG4gICAgICA6IGFyci5pbmRleE9mKGIpO1xuICAgIGlmIChpbmRleEIgPT09IDApIHtcbiAgICAgIGFyci51bnNoaWZ0KGEpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhcnIuc3BsaWNlKGluZGV4QiAtIDEsIDAsIGEpO1xuICAgIH1cbiAgICByZXR1cm4gYXJyO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkXG4gICAqIHVzZSBtb3ZlT2JqZWN0QWZ0ZXJcbiAgICovXG4gIGFycmF5TW92ZUVsZW1lbnRBZnRlckI8VCA9IGFueT4oYXJyOiBhbnlbXSwgYTogYW55LCBiOiBhbnksIHByb3A/OiBrZXlvZiBUKSB7XG4gICAgbGV0IGluZGV4QSA9IHByb3BcbiAgICAgID8gYXJyLmZpbmRJbmRleChlbGVtID0+IGVsZW1bcHJvcF0gPT09IGFbcHJvcF0pXG4gICAgICA6IGFyci5pbmRleE9mKGEpO1xuICAgIF8ucHVsbEF0KGFyciwgaW5kZXhBKTtcbiAgICBsZXQgaW5kZXhCID0gcHJvcFxuICAgICAgPyBhcnIuZmluZEluZGV4KGVsZW0gPT4gZWxlbVtwcm9wXSA9PT0gYltwcm9wXSlcbiAgICAgIDogYXJyLmluZGV4T2YoYik7XG4gICAgaWYgKGluZGV4QiA9PT0gYXJyLmxlbmd0aCAtIDEpIHtcbiAgICAgIGFyci5wdXNoKGEpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhcnIuc3BsaWNlKGluZGV4QiArIDEsIDAsIGEpO1xuICAgIH1cbiAgICByZXR1cm4gYXJyO1xuICB9XG5cbiAgbW92ZU9iamVjdEJlZm9yZTxUID0gYW55PihhcnJheTogVFtdLCB0YXJnZXQ6IFQsIGJlZm9yZTogVCk6IFRbXSB7XG4gICAgY29uc3QgbmV3QXJyYXkgPSBbLi4uYXJyYXldO1xuICAgIGNvbnN0IHRhcmdldEluZGV4ID0gbmV3QXJyYXkuZmluZEluZGV4KGl0ZW0gPT4gaXRlbSA9PT0gdGFyZ2V0KTtcbiAgICBjb25zdCBiZWZvcmVJbmRleCA9IG5ld0FycmF5LmZpbmRJbmRleChpdGVtID0+IGl0ZW0gPT09IGJlZm9yZSk7XG5cbiAgICBpZiAodGFyZ2V0SW5kZXggPT09IC0xIHx8IGJlZm9yZUluZGV4ID09PSAtMSkge1xuXG4gICAgICBjb25zb2xlLmVycm9yKCdUYXJnZXQgb3IgQmVmb3JlIG9iamVjdCBub3QgZm91bmQgaW4gdGhlIGFycmF5Jyk7XG4gICAgICByZXR1cm4gbmV3QXJyYXk7XG4gICAgfVxuXG5cbiAgICBuZXdBcnJheS5zcGxpY2UodGFyZ2V0SW5kZXgsIDEpO1xuXG5cbiAgICBuZXdBcnJheS5zcGxpY2UoYmVmb3JlSW5kZXgsIDAsIHRhcmdldCk7XG5cbiAgICByZXR1cm4gbmV3QXJyYXk7XG4gIH1cblxuICBtb3ZlT2JqZWN0QWZ0ZXI8VCA9IGFueT4oYXJyYXk6IFRbXSwgdGFyZ2V0OiBULCBhZnRlcjogVCk6IFRbXSB7XG4gICAgY29uc3QgbmV3QXJyYXkgPSBbLi4uYXJyYXldO1xuICAgIGNvbnN0IHRhcmdldEluZGV4ID0gbmV3QXJyYXkuZmluZEluZGV4KGl0ZW0gPT4gaXRlbSA9PT0gdGFyZ2V0KTtcbiAgICBjb25zdCBhZnRlckluZGV4ID0gbmV3QXJyYXkuZmluZEluZGV4KGl0ZW0gPT4gaXRlbSA9PT0gYWZ0ZXIpO1xuXG4gICAgaWYgKHRhcmdldEluZGV4ID09PSAtMSB8fCBhZnRlckluZGV4ID09PSAtMSkge1xuXG4gICAgICBjb25zb2xlLmVycm9yKCdUYXJnZXQgb3IgQWZ0ZXIgb2JqZWN0IG5vdCBmb3VuZCBpbiB0aGUgYXJyYXknKTtcbiAgICAgIHJldHVybiBuZXdBcnJheTtcbiAgICB9XG5cblxuICAgIG5ld0FycmF5LnNwbGljZSh0YXJnZXRJbmRleCwgMSk7XG5cblxuICAgIG5ld0FycmF5LnNwbGljZShhZnRlckluZGV4ICsgMSwgMCwgdGFyZ2V0KTtcblxuICAgIHJldHVybiBuZXdBcnJheTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgVXRpbHMudW5pcUFycmF5IGZyb20gdG5wLWNvcmVcbiAgICovXG4gIHVuaXFBcnJheTxUID0gYW55PihhcnJheTogYW55W10sIHVuaXF1ZVByb3BlcnR5Pzoga2V5b2YgVCkge1xuICAgIHJldHVybiBVdGlscy51bmlxQXJyYXkoYXJyYXksIHVuaXF1ZVByb3BlcnR5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgVXRpbHMudW5pcUFycmF5IGZyb20gdG5wLWNvcmVcbiAgICovXG4gIHNvcnRLZXlzKG9iaikge1xuICAgIHJldHVybiBVdGlscy5zb3J0S2V5cyhvYmopO1xuICB9XG5cbiAgLyoqXG4gICAqIEZ1enp5IHNlYXJjaFxuICAgKi9cbiAgZnV6enk8VCA9IGFueT4oXG4gICAgcXVlcnk6IHN0cmluZyxcbiAgICBsaXN0OiBUW10sXG4gICAgdmFsdWVGbj86IChtb2RlbEZyb21MaXN0OiBUKSA9PiBzdHJpbmcsXG4gICkge1xuXG4gICAgY29uc3QgcmVzdWx0c0Z1enp5ID0gZnV6enkuZmlsdGVyKFxuICAgICAgcXVlcnksXG4gICAgICBsaXN0Lm1hcChrID0+ICh2YWx1ZUZuID8gdmFsdWVGbihrKSA6IGspKSxcbiAgICApO1xuICAgIGNvbnN0IHJlc3VsdHNGdXp6eUtlYmFiID0gZnV6enkuZmlsdGVyKFxuICAgICAgXy5rZWJhYkNhc2UocXVlcnkpLFxuICAgICAgbGlzdC5tYXAoayA9PiBfLmtlYmFiQ2FzZSgodmFsdWVGbiA/IHZhbHVlRm4oaykgOiBrKSBhcyBhbnkpKSxcbiAgICApO1xuICAgIGNvbnN0IG1hdGNoZXMgPSByZXN1bHRzRnV6enkubWFwKGVsID0+IGVsLnN0cmluZyk7XG4gICAgY29uc3QgbWF0Y2hlc0tlYmFiID0gcmVzdWx0c0Z1enp5S2ViYWIubWFwKGVsID0+IGVsLnN0cmluZyk7XG5cbiAgICBjb25zdCByZXN1bHRzID1cbiAgICAgIHJlc3VsdHNGdXp6eS5sZW5ndGggPT09IDBcbiAgICAgICAgPyBbXVxuICAgICAgICA6IGxpc3QuZmlsdGVyKGsgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXMuaW5jbHVkZXMoKHZhbHVlRm4gPyB2YWx1ZUZuKGspIDogaykgYXMgYW55KTtcbiAgICAgICAgICB9KTtcblxuICAgIGlmIChtYXRjaGVzLmxlbmd0aCA9PT0gMCAmJiBtYXRjaGVzS2ViYWIubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgbSA9IGxpc3QuZmluZChcbiAgICAgICAgayA9PlxuICAgICAgICAgIF8ua2ViYWJDYXNlKCh2YWx1ZUZuID8gdmFsdWVGbihrKSA6IGspIGFzIGFueSkgPT09XG4gICAgICAgICAgXy5maXJzdChtYXRjaGVzS2ViYWIpLFxuICAgICAgKTtcbiAgICAgIHJlc3VsdHMucHVzaChtKTtcbiAgICAgIG1hdGNoZXMucHVzaCgodmFsdWVGbiA/IHZhbHVlRm4obSkgOiBtKSBhcyBhbnkpO1xuICAgIH1cblxuICAgIHJldHVybiB7IG1hdGNoZXMsIHJlc3VsdHMgfTtcbiAgfVxufVxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9dG5wLWhlbHBlcnMgbGliL2hlbHBlcnMvaGVscGVycy1hcnJheS1vYmoudHMiXX0=
@@ -1,12 +0,0 @@
1
- export class HelpersNumber {
2
- constructor() {
3
- /**
4
- * @deprecated
5
- * use _.random()
6
- */
7
- this.randomInteger = (max, min) => Math.round(Math.random() * (max - min)) + min;
8
- }
9
- }
10
- ;
11
- ({}); // @--end-of-file-for-module=tnp-helpers lib/helpers/helpers-numbers.ts
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy1udW1iZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3Qtd2Vic3FsL3RucC1oZWxwZXJzL3Byb2plY3RzL3RucC1oZWxwZXJzL3NyYy9saWIvaGVscGVycy9oZWxwZXJzLW51bWJlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxPQUFPLGFBQWE7SUFBMUI7UUFDRTs7O1dBR0c7UUFDSCxrQkFBYSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7SUFHOUUsQ0FBQztDQUFBO0FBRUEsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyx1RUFBdUUiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuXG5leHBvcnQgY2xhc3MgSGVscGVyc051bWJlciB7XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKiB1c2UgXy5yYW5kb20oKVxuICAgKi9cbiAgcmFuZG9tSW50ZWdlciA9IChtYXgsIG1pbikgPT4gTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpICogKG1heCAtIG1pbikpICsgbWluO1xuXG5cbn1cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPXRucC1oZWxwZXJzIGxpYi9oZWxwZXJzL2hlbHBlcnMtbnVtYmVycy50cyJdfQ==
@@ -1,51 +0,0 @@
1
- import { Utils, _ } from 'tnp-core/websql';
2
- export class HelpersStringsRegexes {
3
- escapeStringForRegEx(s) {
4
- return Utils.escapeStringForRegEx(s);
5
- }
6
- matchExactOnce(s, regex) {
7
- if (!_.isString(s) || !_.isRegExp(regex)) {
8
- return void 0;
9
- }
10
- const result = s.match(regex);
11
- if (_.isNil(result)) {
12
- return void 0;
13
- }
14
- return result.length >= 1 ? _.first(result) : void 0;
15
- }
16
- get regex() {
17
- return {
18
- /**
19
- * mathes
20
- * xxx.xxx.xxx.xxx
21
- * xxx.xxx.xxx.xxx:port
22
- * http://xxx.xxx.xxx.xxx:port
23
- * http://xxx.xxx.xxx.xxx
24
- * https://xxx.xxx.xxx.xxx:port
25
- * https://xxx.xxx.xxx.xxx *
26
- */
27
- get forStringWithIpHost() {
28
- const regex = /(http(s)?\:\/\/)?(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\:[0-9]+)?/;
29
- return regex;
30
- },
31
- /**
32
- * mathes
33
- * http://domain.com:port
34
- * http://domain.com
35
- * http://domain:port
36
- * http://domain
37
- * https://domain.com:port
38
- * https://domain.com
39
- * https://domain:port
40
- * https://domain
41
- */
42
- get forStringWithDomainHost() {
43
- const regex = /(((http(s)?\:\/\/)?[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9](?:\.[a-zA-Z]{2,})+(\:[0-9]+)?)|((http(s)?\:\/\/)[a-zA-Z0-9-]{1,61}))/;
44
- return regex;
45
- }
46
- };
47
- }
48
- }
49
- ;
50
- ({}); // @--end-of-file-for-module=tnp-helpers lib/helpers/helpers-strings-regexes.ts
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy1zdHJpbmdzLXJlZ2V4ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItZGlzdC13ZWJzcWwvdG5wLWhlbHBlcnMvcHJvamVjdHMvdG5wLWhlbHBlcnMvc3JjL2xpYi9oZWxwZXJzL2hlbHBlcnMtc3RyaW5ncy1yZWdleGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsTUFBTSxPQUFPLHFCQUFxQjtJQUloQyxvQkFBb0IsQ0FBQyxDQUFTO1FBQzVCLE9BQU8sS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxjQUFjLENBQUMsQ0FBUyxFQUFFLEtBQWE7UUFDckMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDekMsT0FBTyxLQUFLLENBQUMsQ0FBQztRQUNoQixDQUFDO1FBQ0QsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNwQixPQUFPLEtBQUssQ0FBQyxDQUFDO1FBQ2hCLENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTztZQUNMOzs7Ozs7OzthQVFDO1lBQ0QsSUFBSSxtQkFBbUI7Z0JBQ3JCLE1BQU0sS0FBSyxHQUFHLDRMQUE0TCxDQUFDO2dCQUMzTSxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7WUFDRDs7Ozs7Ozs7OztZQVVBO1lBQ0EsSUFBSSx1QkFBdUI7Z0JBQ3pCLE1BQU0sS0FBSyxHQUFHLGtJQUFrSSxDQUFDO2dCQUNqSixPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7U0FDRixDQUFBO0lBQ0gsQ0FBQztDQUNGO0FBRUEsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQywrRUFBK0UiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuaW1wb3J0IHsgVXRpbHMsIF8gfSBmcm9tICd0bnAtY29yZS93ZWJzcWwnO1xuZXhwb3J0IGNsYXNzIEhlbHBlcnNTdHJpbmdzUmVnZXhlcyB7XG5cblxuXG4gIGVzY2FwZVN0cmluZ0ZvclJlZ0V4KHM6IHN0cmluZykge1xuICAgIHJldHVybiBVdGlscy5lc2NhcGVTdHJpbmdGb3JSZWdFeChzKTtcbiAgfVxuXG4gIG1hdGNoRXhhY3RPbmNlKHM6IHN0cmluZywgcmVnZXg6IFJlZ0V4cCk6IHN0cmluZyB7XG4gICAgaWYgKCFfLmlzU3RyaW5nKHMpIHx8ICFfLmlzUmVnRXhwKHJlZ2V4KSkge1xuICAgICAgcmV0dXJuIHZvaWQgMDtcbiAgICB9XG4gICAgY29uc3QgcmVzdWx0ID0gcy5tYXRjaChyZWdleCk7XG4gICAgaWYgKF8uaXNOaWwocmVzdWx0KSkge1xuICAgICAgcmV0dXJuIHZvaWQgMDtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdC5sZW5ndGggPj0gMSA/IF8uZmlyc3QocmVzdWx0KSA6IHZvaWQgMDtcbiAgfVxuXG4gIGdldCByZWdleCgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLyoqXG4gICAgICogbWF0aGVzXG4gICAgICogeHh4Lnh4eC54eHgueHh4XG4gICAgICogeHh4Lnh4eC54eHgueHh4OnBvcnRcbiAgICAgKiBodHRwOi8veHh4Lnh4eC54eHgueHh4OnBvcnRcbiAgICAgKiBodHRwOi8veHh4Lnh4eC54eHgueHh4XG4gICAgICogaHR0cHM6Ly94eHgueHh4Lnh4eC54eHg6cG9ydFxuICAgICAqIGh0dHBzOi8veHh4Lnh4eC54eHgueHh4ICAgKlxuICAgICAqL1xuICAgICAgZ2V0IGZvclN0cmluZ1dpdGhJcEhvc3QoKSB7XG4gICAgICAgIGNvbnN0IHJlZ2V4ID0gLyhodHRwKHMpP1xcOlxcL1xcLyk/KDI1WzAtNV18MlswLTRdWzAtOV18WzAxXT9bMC05XVswLTldPylcXC4oMjVbMC01XXwyWzAtNF1bMC05XXxbMDFdP1swLTldWzAtOV0/KVxcLigyNVswLTVdfDJbMC00XVswLTldfFswMV0/WzAtOV1bMC05XT8pXFwuKDI1WzAtNV18MlswLTRdWzAtOV18WzAxXT9bMC05XVswLTldPykoXFw6WzAtOV0rKT8vO1xuICAgICAgICByZXR1cm4gcmVnZXg7XG4gICAgICB9LFxuICAgICAgLyoqXG4gICAgKiBtYXRoZXNcbiAgICAqIGh0dHA6Ly9kb21haW4uY29tOnBvcnRcbiAgICAqIGh0dHA6Ly9kb21haW4uY29tXG4gICAgKiBodHRwOi8vZG9tYWluOnBvcnRcbiAgICAqIGh0dHA6Ly9kb21haW5cbiAgICAqIGh0dHBzOi8vZG9tYWluLmNvbTpwb3J0XG4gICAgKiBodHRwczovL2RvbWFpbi5jb21cbiAgICAqIGh0dHBzOi8vZG9tYWluOnBvcnRcbiAgICAqIGh0dHBzOi8vZG9tYWluXG4gICAgKi9cbiAgICAgIGdldCBmb3JTdHJpbmdXaXRoRG9tYWluSG9zdCgpIHtcbiAgICAgICAgY29uc3QgcmVnZXggPSAvKCgoaHR0cChzKT9cXDpcXC9cXC8pP1thLXpBLVowLTldW2EtekEtWjAtOS1dezEsNjF9W2EtekEtWjAtOV0oPzpcXC5bYS16QS1aXXsyLH0pKyhcXDpbMC05XSspPyl8KChodHRwKHMpP1xcOlxcL1xcLylbYS16QS1aMC05LV17MSw2MX0pKS87XG4gICAgICAgIHJldHVybiByZWdleDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPXRucC1oZWxwZXJzIGxpYi9oZWxwZXJzL2hlbHBlcnMtc3RyaW5ncy1yZWdleGVzLnRzIl19
@@ -1,258 +0,0 @@
1
- import { _ } from 'tnp-core/websql';
2
- import { Helpers } from '../index';
3
- export class HelpersStrings {
4
- /**
5
- * Example:
6
- *
7
- * const result = interpolateString("I'm {age} years old!")
8
- * .withParameters({ age: 29 });
9
- *
10
- * const result = interpolateString("The {a} says {n}, {n}, {n}!")
11
- * .withParameters({ a: 'cow', n: 'moo' });
12
- *
13
- *
14
- * @param value string to interpolate
15
- * @param parameters object with parametes
16
- */
17
- interpolateString(value) {
18
- if (typeof value !== 'string') {
19
- Helpers.warn('[taon-heleprs] Value for interpolation is not string: ', value);
20
- return value;
21
- }
22
- return {
23
- withParameters(parameters) {
24
- if (typeof parameters !== 'object') {
25
- Helpers.log(parameters);
26
- Helpers.warn('[taon-heleprs] Parameters are not a object: ');
27
- return value;
28
- }
29
- return value.replace(/{([^{}]*)}/g, function (a, b) {
30
- var r = parameters[b];
31
- return typeof r === 'string' || typeof r === 'number' ? r : a;
32
- });
33
- }
34
- };
35
- }
36
- /**
37
- *
38
- * @param pixelsCss exmaple: 100px
39
- * @returns number value
40
- */
41
- numValue(pixelsCss) {
42
- return parseInt(pixelsCss.replace('px', ''));
43
- }
44
- /**
45
- * examples:
46
- * 'aa bb bb' => ['aa','bb','cc'],
47
- * 'aa' => ['aa']
48
- * ['aa'] => ['aa']
49
- */
50
- splitIfNeed(stringOrArr) {
51
- let res = [];
52
- if (_.isArray(stringOrArr)) {
53
- res = stringOrArr.map(s => {
54
- return s.trim();
55
- });
56
- }
57
- if (_.isString(stringOrArr)) {
58
- res = stringOrArr.split(/\s*[\s,]\s*/);
59
- }
60
- return res.filter(f => !!f && (f.trim() !== ''));
61
- }
62
- removeDoubleOrMoreEmptyLines(s) {
63
- s = s?.split('\n').map(f => f.trimRight()).join('\n');
64
- return s?.replace(/(\r\n|\r|\n){2,}/g, '$1\n');
65
- }
66
- /**
67
- *
68
- * https://stackoverflow.com/a/57129703/1345101
69
- *
70
- * Returns the plural of an English word.
71
- *
72
- * @export
73
- * @param {string} word
74
- * @param {number} [amount]
75
- * @returns {string}
76
- */
77
- plural(word, amount) {
78
- if (amount !== undefined && amount === 1) {
79
- return word;
80
- }
81
- const plural = {
82
- '(quiz)$': "$1zes",
83
- '^(ox)$': "$1en",
84
- '([m|l])ouse$': "$1ice",
85
- '(matr|vert|ind)ix|ex$': "$1ices",
86
- '(x|ch|ss|sh)$': "$1es",
87
- '([^aeiouy]|qu)y$': "$1ies",
88
- '(hive)$': "$1s",
89
- '(?:([^f])fe|([lr])f)$': "$1$2ves",
90
- '(shea|lea|loa|thie)f$': "$1ves",
91
- 'sis$': "ses",
92
- '([ti])um$': "$1a",
93
- '(tomat|potat|ech|her|vet)o$': "$1oes",
94
- '(bu)s$': "$1ses",
95
- '(alias)$': "$1es",
96
- '(octop)us$': "$1i",
97
- '(ax|test)is$': "$1es",
98
- '(us)$': "$1es",
99
- '([^s]+)$': "$1s"
100
- };
101
- const irregular = {
102
- 'move': 'moves',
103
- 'foot': 'feet',
104
- 'goose': 'geese',
105
- 'sex': 'sexes',
106
- 'child': 'children',
107
- 'man': 'men',
108
- 'tooth': 'teeth',
109
- 'person': 'people'
110
- };
111
- const uncountable = [
112
- 'sheep',
113
- 'fish',
114
- 'deer',
115
- 'moose',
116
- 'series',
117
- 'species',
118
- 'money',
119
- 'rice',
120
- 'information',
121
- 'equipment',
122
- 'bison',
123
- 'cod',
124
- 'offspring',
125
- 'pike',
126
- 'salmon',
127
- 'shrimp',
128
- 'swine',
129
- 'trout',
130
- 'aircraft',
131
- 'hovercraft',
132
- 'spacecraft',
133
- 'sugar',
134
- 'tuna',
135
- 'you',
136
- 'wood'
137
- ];
138
- if (uncountable.indexOf(word.toLowerCase()) >= 0) {
139
- return word;
140
- }
141
- for (const w in irregular) {
142
- const pattern = new RegExp(`${w}$`, 'i');
143
- const replace = irregular[w];
144
- if (pattern.test(word)) {
145
- return word.replace(pattern, replace);
146
- }
147
- }
148
- for (const reg in plural) {
149
- const pattern = new RegExp(reg, 'i');
150
- if (pattern.test(word)) {
151
- return word.replace(pattern, plural[reg]);
152
- }
153
- }
154
- return word;
155
- }
156
- /**
157
- * https://stackoverflow.com/a/57129703/1345101
158
- *
159
- * Returns the singular of an English word.
160
- *
161
- * @export
162
- * @param {string} word
163
- * @param {number} [amount]
164
- * @returns {string}
165
- */
166
- singular(word, amount) {
167
- if (amount !== undefined && amount !== 1) {
168
- return word;
169
- }
170
- const singular = {
171
- '(quiz)zes$': "$1",
172
- '(matr)ices$': "$1ix",
173
- '(vert|ind)ices$': "$1ex",
174
- '^(ox)en$': "$1",
175
- '(alias)es$': "$1",
176
- '(octop|vir)i$': "$1us",
177
- '(cris|ax|test)es$': "$1is",
178
- '(shoe)s$': "$1",
179
- '(o)es$': "$1",
180
- '(bus)es$': "$1",
181
- '([m|l])ice$': "$1ouse",
182
- '(x|ch|ss|sh)es$': "$1",
183
- '(m)ovies$': "$1ovie",
184
- '(s)eries$': "$1eries",
185
- '([^aeiouy]|qu)ies$': "$1y",
186
- '([lr])ves$': "$1f",
187
- '(tive)s$': "$1",
188
- '(hive)s$': "$1",
189
- '(li|wi|kni)ves$': "$1fe",
190
- '(shea|loa|lea|thie)ves$': "$1f",
191
- '(^analy)ses$': "$1sis",
192
- '((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$': "$1$2sis",
193
- '([ti])a$': "$1um",
194
- '(n)ews$': "$1ews",
195
- '(h|bl)ouses$': "$1ouse",
196
- '(corpse)s$': "$1",
197
- '(us)es$': "$1",
198
- 's$': ""
199
- };
200
- const irregular = {
201
- 'move': 'moves',
202
- 'foot': 'feet',
203
- 'goose': 'geese',
204
- 'sex': 'sexes',
205
- 'child': 'children',
206
- 'man': 'men',
207
- 'tooth': 'teeth',
208
- 'person': 'people'
209
- };
210
- const uncountable = [
211
- 'sheep',
212
- 'fish',
213
- 'deer',
214
- 'moose',
215
- 'series',
216
- 'species',
217
- 'money',
218
- 'rice',
219
- 'information',
220
- 'equipment',
221
- 'bison',
222
- 'cod',
223
- 'offspring',
224
- 'pike',
225
- 'salmon',
226
- 'shrimp',
227
- 'swine',
228
- 'trout',
229
- 'aircraft',
230
- 'hovercraft',
231
- 'spacecraft',
232
- 'sugar',
233
- 'tuna',
234
- 'you',
235
- 'wood'
236
- ];
237
- if (uncountable.indexOf(word.toLowerCase()) >= 0) {
238
- return word;
239
- }
240
- for (const w in irregular) {
241
- const pattern = new RegExp(`${irregular[w]}$`, 'i');
242
- const replace = w;
243
- if (pattern.test(word)) {
244
- return word.replace(pattern, replace);
245
- }
246
- }
247
- for (const reg in singular) {
248
- const pattern = new RegExp(reg, 'i');
249
- if (pattern.test(word)) {
250
- return word.replace(pattern, singular[reg]);
251
- }
252
- }
253
- return word;
254
- }
255
- }
256
- ;
257
- ({}); // @--end-of-file-for-module=tnp-helpers lib/helpers/helpers-strings.ts
258
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy1zdHJpbmdzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3Qtd2Vic3FsL3RucC1oZWxwZXJzL3Byb2plY3RzL3RucC1oZWxwZXJzL3NyYy9saWIvaGVscGVycy9oZWxwZXJzLXN0cmluZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFbkMsTUFBTSxPQUFPLGNBQWM7SUFFekI7Ozs7Ozs7Ozs7OztPQVlHO0lBQ0gsaUJBQWlCLENBQVUsS0FBYTtRQUN0QyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzlCLE9BQU8sQ0FBQyxJQUFJLENBQUMsd0RBQXdELEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDOUUsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsT0FBTztZQUNMLGNBQWMsQ0FBQyxVQUFhO2dCQUMxQixJQUFJLE9BQU8sVUFBVSxLQUFLLFFBQVEsRUFBRSxDQUFDO29CQUNuQyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQWlCLENBQUMsQ0FBQztvQkFDL0IsT0FBTyxDQUFDLElBQUksQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO29CQUM3RCxPQUFPLEtBQUssQ0FBQztnQkFDZixDQUFDO2dCQUNELE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQztvQkFDaEQsSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUN0QixPQUFPLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNoRSxDQUFRLENBQUMsQ0FBQztZ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QUMsdUVBQXVFIiwic291cmNlc0NvbnRlbnQiOlsiXG5cbmltcG9ydCB7IF8gfSBmcm9tICd0bnAtY29yZS93ZWJzcWwnO1xuaW1wb3J0IHsgSGVscGVycyB9IGZyb20gJy4uL2luZGV4JztcblxuZXhwb3J0IGNsYXNzIEhlbHBlcnNTdHJpbmdzIHtcblxuICAvKipcbiAgICogRXhhbXBsZTpcbiAgICpcbiAgICogY29uc3QgcmVzdWx0ID0gaW50ZXJwb2xhdGVTdHJpbmcoXCJJJ20ge2FnZX0geWVhcnMgb2xkIVwiKVxuICAgKiAud2l0aFBhcmFtZXRlcnMoeyBhZ2U6IDI5IH0pO1xuICAgKlxuICAgKiBjb25zdCByZXN1bHQgPSBpbnRlcnBvbGF0ZVN0cmluZyhcIlRoZSB7YX0gc2F5cyB7bn0sIHtufSwge259IVwiKVxuICAgKiAud2l0aFBhcmFtZXRlcnMoeyBhOiAnY293JywgbjogJ21vbycgfSk7XG4gICAqXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSBzdHJpbmcgdG8gaW50ZXJwb2xhdGVcbiAgICogQHBhcmFtIHBhcmFtZXRlcnMgb2JqZWN0IHdpdGggcGFyYW1ldGVzXG4gICAqL1xuICBpbnRlcnBvbGF0ZVN0cmluZzxUID0gYW55Pih2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIEhlbHBlcnMud2FybignW3Rhb24taGVsZXByc10gVmFsdWUgZm9yIGludGVycG9sYXRpb24gaXMgbm90IHN0cmluZzogJywgdmFsdWUpO1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB3aXRoUGFyYW1ldGVycyhwYXJhbWV0ZXJzOiBUKSB7XG4gICAgICAgIGlmICh0eXBlb2YgcGFyYW1ldGVycyAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBIZWxwZXJzLmxvZyhwYXJhbWV0ZXJzIGFzIGFueSk7XG4gICAgICAgICAgSGVscGVycy53YXJuKCdbdGFvbi1oZWxlcHJzXSBQYXJhbWV0ZXJzIGFyZSBub3QgYSBvYmplY3Q6ICcpO1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWUucmVwbGFjZSgveyhbXnt9XSopfS9nLCBmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICAgIHZhciByID0gcGFyYW1ldGVyc1tiXTtcbiAgICAgICAgICByZXR1cm4gdHlwZW9mIHIgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiByID09PSAnbnVtYmVyJyA/IHIgOiBhO1xuICAgICAgICB9IGFzIGFueSk7XG4gICAgICB9XG4gICAgfVxuXG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHBpeGVsc0NzcyBleG1hcGxlOiAxMDBweFxuICAgKiBAcmV0dXJucyBudW1iZXIgdmFsdWVcbiAgICovXG4gIG51bVZhbHVlKHBpeGVsc0Nzczogc3RyaW5nKSB7XG5cbiAgICByZXR1cm4gcGFyc2VJbnQocGl4ZWxzQ3NzLnJlcGxhY2UoJ3B4JywgJycpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBleGFtcGxlczpcbiAgICogJ2FhIGJiIGJiJyA9PiBbJ2FhJywnYmInLCdjYyddLFxuICAgKiAnYWEnID0+IFsnYWEnXVxuICAgKiBbJ2FhJ10gPT4gWydhYSddXG4gICAqL1xuICBzcGxpdElmTmVlZChzdHJpbmdPckFycjogc3RyaW5nIHwgc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gICAgbGV0IHJlcyA9IFtdO1xuICAgIGlmIChfLmlzQXJyYXkoc3RyaW5nT3JBcnIpKSB7XG4gICAgICByZXMgPSBzdHJpbmdPckFyci5tYXAocyA9PiB7XG4gICAgICAgIHJldHVybiBzLnRyaW0oKTtcbiAgICAgIH0pXG4gICAgfVxuICAgIGlmIChfLmlzU3RyaW5nKHN0cmluZ09yQXJyKSkge1xuICAgICAgcmVzID0gc3RyaW5nT3JBcnIuc3BsaXQoL1xccypbXFxzLF1cXHMqLyk7XG4gICAgfVxuICAgIHJldHVybiByZXMuZmlsdGVyKGYgPT4gISFmICYmIChmLnRyaW0oKSAhPT0gJycpKTtcbiAgfVxuXG4gIHJlbW92ZURvdWJsZU9yTW9yZUVtcHR5TGluZXMoczogc3RyaW5nKSB7XG4gICAgcyA9IHM/LnNwbGl0KCdcXG4nKS5tYXAoZiA9PiBmLnRyaW1SaWdodCgpKS5qb2luKCdcXG4nKTtcbiAgICByZXR1cm4gcz8ucmVwbGFjZSgvKFxcclxcbnxcXHJ8XFxuKXsyLH0vZywgJyQxXFxuJyk7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzU3MTI5NzAzLzEzNDUxMDFcbiAgICpcbiAgICogUmV0dXJucyB0aGUgcGx1cmFsIG9mIGFuIEVuZ2xpc2ggd29yZC5cbiAgICpcbiAgICogQGV4cG9ydFxuICAgKiBAcGFyYW0ge3N0cmluZ30gd29yZFxuICAgKiBAcGFyYW0ge251bWJlcn0gW2Ftb3VudF1cbiAgICogQHJldHVybnMge3N0cmluZ31cbiAgICovXG4gIHBsdXJhbCh3b3JkOiBzdHJpbmcsIGFtb3VudD86IG51bWJlcik6IHN0cmluZyB7XG4gICAgaWYgKGFtb3VudCAhPT0gdW5kZWZpbmVkICYmIGFtb3VudCA9PT0gMSkge1xuICAgICAgcmV0dXJuIHdvcmRcbiAgICB9XG4gICAgY29uc3QgcGx1cmFsOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgICAgJyhxdWl6KSQnOiBcIiQxemVzXCIsXG4gICAgICAnXihveCkkJzogXCIkMWVuXCIsXG4gICAgICAnKFttfGxdKW91c2UkJzogXCIkMWljZVwiLFxuICAgICAgJyhtYXRyfHZlcnR8aW5kKWl4fGV4JCc6IFwiJDFpY2VzXCIsXG4gICAgICAnKHh8Y2h8c3N8c2gpJCc6IFwiJDFlc1wiLFxuICAgICAgJyhbXmFlaW91eV18cXUpeSQnOiBcIiQxaWVzXCIsXG4gICAgICAnKGhpdmUpJCc6IFwiJDFzXCIsXG4gICAgICAnKD86KFteZl0pZmV8KFtscl0pZikkJzogXCIkMSQydmVzXCIsXG4gICAgICAnKHNoZWF8bGVhfGxvYXx0aGllKWYkJzogXCIkMXZlc1wiLFxuICAgICAgJ3NpcyQnOiBcInNlc1wiLFxuICAgICAgJyhbdGldKXVtJCc6IFwiJDFhXCIsXG4gICAgICAnKHRvbWF0fHBvdGF0fGVjaHxoZXJ8dmV0KW8kJzogXCIkMW9lc1wiLFxuICAgICAgJyhidSlzJCc6IFwiJDFzZXNcIixcbiAgICAgICcoYWxpYXMpJCc6IFwiJDFlc1wiLFxuICAgICAgJyhvY3RvcCl1cyQnOiBcIiQxaVwiLFxuICAgICAgJyhheHx0ZXN0KWlzJCc6IFwiJDFlc1wiLFxuICAgICAgJyh1cykkJzogXCIkMWVzXCIsXG4gICAgICAnKFtec10rKSQnOiBcIiQxc1wiXG4gICAgfVxuICAgIGNvbnN0IGlycmVndWxhcjogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICAgICdtb3ZlJzogJ21vdmVzJyxcbiAgICAgICdmb290JzogJ2ZlZXQnLFxuICAgICAgJ2dvb3NlJzogJ2dlZXNlJyxcbiAgICAgICdzZXgnOiAnc2V4ZXMnLFxuICAgICAgJ2NoaWxkJzogJ2NoaWxkcmVuJyxcbiAgICAgICdtYW4nOiAnbWVuJyxcbiAgICAgICd0b290aCc6ICd0ZWV0aCcsXG4gICAgICAncGVyc29uJzogJ3Blb3BsZSdcbiAgICB9XG4gICAgY29uc3QgdW5jb3VudGFibGU6IHN0cmluZ1tdID0gW1xuICAgICAgJ3NoZWVwJyxcbiAgICAgICdmaXNoJyxcbiAgICAgICdkZWVyJyxcbiAgICAgICdtb29zZScsXG4gICAgICAnc2VyaWVzJyxcbiAgICAgICdzcGVjaWVzJyxcbiAgICAgICdtb25leScsXG4gICAgICAncmljZScsXG4gICAgICAnaW5mb3JtYXRpb24nLFxuICAgICAgJ2VxdWlwbWVudCcsXG4gICAgICAnYmlzb24nLFxuICAgICAgJ2NvZCcsXG4gICAgICAnb2Zmc3ByaW5nJyxcbiAgICAgICdwaWtlJyxcbiAgICAgICdzYWxtb24nLFxuICAgICAgJ3NocmltcCcsXG4gICAgICAnc3dpbmUnLFxuICAgICAgJ3Ryb3V0JyxcbiAgICAgICdhaXJjcmFmdCcsXG4gICAgICAnaG92ZXJjcmFmdCcsXG4gICAgICAnc3BhY2VjcmFmdCcsXG4gICAgICAnc3VnYXInLFxuICAgICAgJ3R1bmEnLFxuICAgICAgJ3lvdScsXG4gICAgICAnd29vZCdcbiAgICBdXG5cbiAgICBpZiAodW5jb3VudGFibGUuaW5kZXhPZih3b3JkLnRvTG93ZXJDYXNlKCkpID49IDApIHtcbiAgICAgIHJldHVybiB3b3JkXG4gICAgfVxuXG4gICAgZm9yIChjb25zdCB3IGluIGlycmVndWxhcikge1xuICAgICAgY29uc3QgcGF0dGVybiA9IG5ldyBSZWdFeHAoYCR7d30kYCwgJ2knKVxuICAgICAgY29uc3QgcmVwbGFjZSA9IGlycmVndWxhclt3XVxuICAgICAgaWYgKHBhdHRlcm4udGVzdCh3b3JkKSkge1xuICAgICAgICByZXR1cm4gd29yZC5yZXBsYWNlKHBhdHRlcm4sIHJlcGxhY2UpXG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCByZWcgaW4gcGx1cmFsKSB7XG4gICAgICBjb25zdCBwYXR0ZXJuID0gbmV3IFJlZ0V4cChyZWcsICdpJylcbiAgICAgIGlmIChwYXR0ZXJuLnRlc3Qod29yZCkpIHtcbiAgICAgICAgcmV0dXJuIHdvcmQucmVwbGFjZShwYXR0ZXJuLCBwbHVyYWxbcmVnXSlcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHdvcmRcbiAgfVxuXG5cbiAgLyoqXG4gICAqIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS81NzEyOTcwMy8xMzQ1MTAxXG4gICAqXG4gICogUmV0dXJucyB0aGUgc2luZ3VsYXIgb2YgYW4gRW5nbGlzaCB3b3JkLlxuICAqXG4gICogQGV4cG9ydFxuICAqIEBwYXJhbSB7c3RyaW5nfSB3b3JkXG4gICogQHBhcmFtIHtudW1iZXJ9IFthbW91bnRdXG4gICogQHJldHVybnMge3N0cmluZ31cbiAgKi9cbiAgc2luZ3VsYXIod29yZDogc3RyaW5nLCBhbW91bnQ/OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGlmIChhbW91bnQgIT09IHVuZGVmaW5lZCAmJiBhbW91bnQgIT09IDEpIHtcbiAgICAgIHJldHVybiB3b3JkXG4gICAgfVxuICAgIGNvbnN0IHNpbmd1bGFyOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgICAgJyhxdWl6KXplcyQnOiBcIiQxXCIsXG4gICAgICAnKG1hdHIpaWNlcyQnOiBcIiQxaXhcIixcbiAgICAgICcodmVydHxpbmQpaWNlcyQnOiBcIiQxZXhcIixcbiAgICAgICdeKG94KWVuJCc6IFwiJDFcIixcbiAgICAgICcoYWxpYXMpZXMkJzogXCIkMVwiLFxuICAgICAgJyhvY3RvcHx2aXIpaSQnOiBcIiQxdXNcIixcbiAgICAgICcoY3Jpc3xheHx0ZXN0KWVzJCc6IFwiJDFpc1wiLFxuICAgICAgJyhzaG9lKXMkJzogXCIkMVwiLFxuICAgICAgJyhvKWVzJCc6IFwiJDFcIixcbiAgICAgICcoYnVzKWVzJCc6IFwiJDFcIixcbiAgICAgICcoW218bF0paWNlJCc6IFwiJDFvdXNlXCIsXG4gICAgICAnKHh8Y2h8c3N8c2gpZXMkJzogXCIkMVwiLFxuICAgICAgJyhtKW92aWVzJCc6IFwiJDFvdmllXCIsXG4gICAgICAnKHMpZXJpZXMkJzogXCIkMWVyaWVzXCIsXG4gICAgICAnKFteYWVpb3V5XXxxdSlpZXMkJzogXCIkMXlcIixcbiAgICAgICcoW2xyXSl2ZXMkJzogXCIkMWZcIixcbiAgICAgICcodGl2ZSlzJCc6IFwiJDFcIixcbiAgICAgICcoaGl2ZSlzJCc6IFwiJDFcIixcbiAgICAgICcobGl8d2l8a25pKXZlcyQnOiBcIiQxZmVcIixcbiAgICAgICcoc2hlYXxsb2F8bGVhfHRoaWUpdmVzJCc6IFwiJDFmXCIsXG4gICAgICAnKF5hbmFseSlzZXMkJzogXCIkMXNpc1wiLFxuICAgICAgJygoYSluYWx5fChiKWF8KGQpaWFnbm98KHApYXJlbnRoZXwocClyb2dub3wocyl5bm9wfCh0KWhlKXNlcyQnOiBcIiQxJDJzaXNcIixcbiAgICAgICcoW3RpXSlhJCc6IFwiJDF1bVwiLFxuICAgICAgJyhuKWV3cyQnOiBcIiQxZXdzXCIsXG4gICAgICAnKGh8Ymwpb3VzZXMkJzogXCIkMW91c2VcIixcbiAgICAgICcoY29ycHNlKXMkJzogXCIkMVwiLFxuICAgICAgJyh1cyllcyQnOiBcIiQxXCIsXG4gICAgICAncyQnOiBcIlwiXG4gICAgfVxuICAgIGNvbnN0IGlycmVndWxhcjogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICAgICdtb3ZlJzogJ21vdmVzJyxcbiAgICAgICdmb290JzogJ2ZlZXQnLFxuICAgICAgJ2dvb3NlJzogJ2dlZXNlJyxcbiAgICAgICdzZXgnOiAnc2V4ZXMnLFxuICAgICAgJ2NoaWxkJzogJ2NoaWxkcmVuJyxcbiAgICAgICdtYW4nOiAnbWVuJyxcbiAgICAgICd0b290aCc6ICd0ZWV0aCcsXG4gICAgICAncGVyc29uJzogJ3Blb3BsZSdcbiAgICB9XG4gICAgY29uc3QgdW5jb3VudGFibGU6IHN0cmluZ1tdID0gW1xuICAgICAgJ3NoZWVwJyxcbiAgICAgICdmaXNoJyxcbiAgICAgICdkZWVyJyxcbiAgICAgICdtb29zZScsXG4gICAgICAnc2VyaWVzJyxcbiAgICAgICdzcGVjaWVzJyxcbiAgICAgICdtb25leScsXG4gICAgICAncmljZScsXG4gICAgICAnaW5mb3JtYXRpb24nLFxuICAgICAgJ2VxdWlwbWVudCcsXG4gICAgICAnYmlzb24nLFxuICAgICAgJ2NvZCcsXG4gICAgICAnb2Zmc3ByaW5nJyxcbiAgICAgICdwaWtlJyxcbiAgICAgICdzYWxtb24nLFxuICAgICAgJ3NocmltcCcsXG4gICAgICAnc3dpbmUnLFxuICAgICAgJ3Ryb3V0JyxcbiAgICAgICdhaXJjcmFmdCcsXG4gICAgICAnaG92ZXJjcmFmdCcsXG4gICAgICAnc3BhY2VjcmFmdCcsXG4gICAgICAnc3VnYXInLFxuICAgICAgJ3R1bmEnLFxuICAgICAgJ3lvdScsXG4gICAgICAnd29vZCdcbiAgICBdXG5cbiAgICBpZiAodW5jb3VudGFibGUuaW5kZXhPZih3b3JkLnRvTG93ZXJDYXNlKCkpID49IDApIHtcbiAgICAgIHJldHVybiB3b3JkXG4gICAgfVxuXG4gICAgZm9yIChjb25zdCB3IGluIGlycmVndWxhcikge1xuICAgICAgY29uc3QgcGF0dGVybiA9IG5ldyBSZWdFeHAoYCR7aXJyZWd1bGFyW3ddfSRgLCAnaScpXG4gICAgICBjb25zdCByZXBsYWNlID0gd1xuICAgICAgaWYgKHBhdHRlcm4udGVzdCh3b3JkKSkge1xuICAgICAgICByZXR1cm4gd29yZC5yZXBsYWNlKHBhdHRlcm4sIHJlcGxhY2UpXG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCByZWcgaW4gc2luZ3VsYXIpIHtcbiAgICAgIGNvbnN0IHBhdHRlcm4gPSBuZXcgUmVnRXhwKHJlZywgJ2knKVxuICAgICAgaWYgKHBhdHRlcm4udGVzdCh3b3JkKSkge1xuICAgICAgICByZXR1cm4gd29yZC5yZXBsYWNlKHBhdHRlcm4sIHNpbmd1bGFyW3JlZ10pXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB3b3JkXG4gIH1cblxufVxuXG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT10bnAtaGVscGVycyBsaWIvaGVscGVycy9oZWxwZXJzLXN0cmluZ3MudHMiXX0=