@alauda-fe/dynamic-plugin-shared 0.0.1-alpha.0

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 (415) hide show
  1. package/README.md +7 -0
  2. package/array-form-table/base-string-map-form.component.d.ts +22 -0
  3. package/array-form-table/form/component.d.ts +106 -0
  4. package/array-form-table/form/index.d.ts +2 -0
  5. package/array-form-table/index.d.ts +10 -0
  6. package/array-form-table/key-value-form/component.d.ts +38 -0
  7. package/array-form-table/key-value-table/component.d.ts +9 -0
  8. package/array-form-table/string-array-form/component.d.ts +41 -0
  9. package/assets/images/abnormal.svg +1 -0
  10. package/assets/images/dark/disconnected.svg +1 -0
  11. package/assets/images/dark/license-abnormal.svg +1 -0
  12. package/assets/images/dark/network-abnormal.svg +1 -0
  13. package/assets/images/dark/no-data.svg +1 -0
  14. package/assets/images/dark/no-message.svg +1 -0
  15. package/assets/images/dark/no-permission.svg +1 -0
  16. package/assets/images/dark/no_realtime_alarm.svg +1 -0
  17. package/assets/images/dark/not-deployed.svg +1 -0
  18. package/assets/images/dark/not-found.svg +1 -0
  19. package/assets/images/dark/not-supported.svg +1 -0
  20. package/assets/images/dark/system-abnormal.svg +1 -0
  21. package/assets/images/light/disconnected.svg +1 -0
  22. package/assets/images/light/license-abnormal.svg +1 -0
  23. package/assets/images/light/network-abnormal.svg +1 -0
  24. package/assets/images/light/no-data.svg +1 -0
  25. package/assets/images/light/no-message.svg +1 -0
  26. package/assets/images/light/no-permission.svg +1 -0
  27. package/assets/images/light/no_realtime_alarm.svg +1 -0
  28. package/assets/images/light/not-deployed.svg +1 -0
  29. package/assets/images/light/not-found.svg +1 -0
  30. package/assets/images/light/not-supported.svg +1 -0
  31. package/assets/images/light/system-abnormal.svg +1 -0
  32. package/assets/images/no-data.png +0 -0
  33. package/async-data/async-data-loader.d.ts +31 -0
  34. package/async-data/error-page/component.d.ts +30 -0
  35. package/async-data/index.d.ts +13 -0
  36. package/async-data/page-state/component.d.ts +21 -0
  37. package/async-data/types.d.ts +29 -0
  38. package/code-editor/code-display-dialog/component.d.ts +17 -0
  39. package/code-editor/code-editor-configs.d.ts +19 -0
  40. package/code-editor/index.d.ts +10 -0
  41. package/code-editor/k8s-yaml-display-dialog/component.d.ts +16 -0
  42. package/code-editor/resource-yaml-display/component.d.ts +21 -0
  43. package/components/card-section/card-section.component.d.ts +9 -0
  44. package/components/confirm-delete/confirm-delete.component.d.ts +57 -0
  45. package/components/confirm-delete/utils.d.ts +25 -0
  46. package/components/current-time/component.d.ts +14 -0
  47. package/components/custom-columns-setting/component.d.ts +16 -0
  48. package/components/custom-columns-setting/index.d.ts +1 -0
  49. package/components/date-range-picker/component.d.ts +55 -0
  50. package/components/date-range-picker/index.d.ts +3 -0
  51. package/components/date-range-picker/type.d.ts +36 -0
  52. package/components/date-range-picker/util.d.ts +11 -0
  53. package/components/disabled-container/disabled-container.component.d.ts +21 -0
  54. package/components/disabled-container/index.d.ts +7 -0
  55. package/components/field-set/column/component.d.ts +10 -0
  56. package/components/field-set/group/component.d.ts +6 -0
  57. package/components/field-set/index.d.ts +7 -0
  58. package/components/field-set/item/component.d.ts +13 -0
  59. package/components/foldable-block/component.d.ts +17 -0
  60. package/components/foldable-item-in-table/component.d.ts +21 -0
  61. package/components/help-document/component.d.ts +29 -0
  62. package/components/help-document/directive.d.ts +20 -0
  63. package/components/help-document/index.d.ts +8 -0
  64. package/components/help-document/service.d.ts +20 -0
  65. package/components/index.d.ts +31 -0
  66. package/components/loading-mask/loading-mask.component.d.ts +13 -0
  67. package/components/page-guard/component/component.d.ts +40 -0
  68. package/components/page-guard/component/helper-directives.d.ts +17 -0
  69. package/components/page-guard/component/page-guard.type.d.ts +86 -0
  70. package/components/page-guard/index.d.ts +12 -0
  71. package/components/password-input/component.d.ts +39 -0
  72. package/components/pod-status/component.d.ts +25 -0
  73. package/components/pod-status/index.d.ts +3 -0
  74. package/components/pod-status/status.d.ts +4 -0
  75. package/components/pod-status/typings.d.ts +16 -0
  76. package/components/relative-time/component.d.ts +15 -0
  77. package/components/resource-label/component.d.ts +25 -0
  78. package/components/resource-multi-select/component.d.ts +41 -0
  79. package/components/resource-multi-select/util.d.ts +10 -0
  80. package/components/search-panel/component.d.ts +16 -0
  81. package/components/search-panel/helper.directive.d.ts +5 -0
  82. package/components/search-panel/search-item/component.d.ts +7 -0
  83. package/components/select-prefix-label/directive.d.ts +17 -0
  84. package/components/status-icon/status-icon.component.d.ts +16 -0
  85. package/components/tags-label/component.d.ts +56 -0
  86. package/components/terminating-tag/component.d.ts +7 -0
  87. package/components/text-ellipsis/component.d.ts +9 -0
  88. package/components/text-tooltip/directive.d.ts +21 -0
  89. package/components/text-with-url/component.d.ts +12 -0
  90. package/components/upload-file/component.d.ts +32 -0
  91. package/components/zero-state/zero-state.component.d.ts +16 -0
  92. package/constants/common.d.ts +64 -0
  93. package/constants/index.d.ts +6 -0
  94. package/constants/k8s.d.ts +12 -0
  95. package/constants/patterns.d.ts +124 -0
  96. package/constants/resource-definitions.d.ts +414 -0
  97. package/constants/status-icons.d.ts +34 -0
  98. package/constants/timezones.d.ts +6 -0
  99. package/directives/aui-code-editor.directive.d.ts +13 -0
  100. package/directives/click-outside.directive.d.ts +12 -0
  101. package/directives/declare.directive.d.ts +8 -0
  102. package/directives/disabled.directive.d.ts +28 -0
  103. package/directives/effect-directive/coerce-number.directive.d.ts +8 -0
  104. package/directives/effect-directive/e2e-attribute-binding.directive.d.ts +10 -0
  105. package/directives/effect-directive/event.directive.d.ts +47 -0
  106. package/directives/effect-directive/index.d.ts +12 -0
  107. package/directives/effect-directive/min-max.directive.d.ts +30 -0
  108. package/directives/effect-directive/trim.directive.d.ts +7 -0
  109. package/directives/effect-directive/validators.directive.d.ts +12 -0
  110. package/directives/feature-gate.directive.d.ts +31 -0
  111. package/directives/index.d.ts +12 -0
  112. package/directives/last-form-item.directive.d.ts +8 -0
  113. package/directives/readonly-field.directive.d.ts +39 -0
  114. package/directives/resize.directive.d.ts +17 -0
  115. package/directives/scroll-border-observer.directive.d.ts +23 -0
  116. package/directives/scroll-to-first-invalid.directive.d.ts +24 -0
  117. package/directives/value-trace.directive.d.ts +27 -0
  118. package/esm2022/alauda-fe-dynamic-plugin-shared.mjs +5 -0
  119. package/esm2022/array-form-table/base-string-map-form.component.mjs +92 -0
  120. package/esm2022/array-form-table/form/component.mjs +266 -0
  121. package/esm2022/array-form-table/form/index.mjs +12 -0
  122. package/esm2022/array-form-table/index.mjs +11 -0
  123. package/esm2022/array-form-table/key-value-form/component.mjs +135 -0
  124. package/esm2022/array-form-table/key-value-table/component.mjs +24 -0
  125. package/esm2022/array-form-table/string-array-form/component.mjs +168 -0
  126. package/esm2022/async-data/async-data-loader.mjs +63 -0
  127. package/esm2022/async-data/error-page/component.mjs +54 -0
  128. package/esm2022/async-data/index.mjs +18 -0
  129. package/esm2022/async-data/page-state/component.mjs +62 -0
  130. package/esm2022/async-data/types.mjs +6 -0
  131. package/esm2022/code-editor/code-display-dialog/component.mjs +35 -0
  132. package/esm2022/code-editor/code-editor-configs.mjs +66 -0
  133. package/esm2022/code-editor/index.mjs +11 -0
  134. package/esm2022/code-editor/k8s-yaml-display-dialog/component.mjs +26 -0
  135. package/esm2022/code-editor/resource-yaml-display/component.mjs +67 -0
  136. package/esm2022/components/card-section/card-section.component.mjs +24 -0
  137. package/esm2022/components/confirm-delete/confirm-delete.component.mjs +192 -0
  138. package/esm2022/components/confirm-delete/utils.mjs +8 -0
  139. package/esm2022/components/current-time/component.mjs +39 -0
  140. package/esm2022/components/custom-columns-setting/component.mjs +75 -0
  141. package/esm2022/components/custom-columns-setting/index.mjs +2 -0
  142. package/esm2022/components/date-range-picker/component.mjs +215 -0
  143. package/esm2022/components/date-range-picker/index.mjs +4 -0
  144. package/esm2022/components/date-range-picker/type.mjs +2 -0
  145. package/esm2022/components/date-range-picker/util.mjs +57 -0
  146. package/esm2022/components/disabled-container/disabled-container.component.mjs +81 -0
  147. package/esm2022/components/disabled-container/index.mjs +8 -0
  148. package/esm2022/components/field-set/column/component.mjs +25 -0
  149. package/esm2022/components/field-set/group/component.mjs +16 -0
  150. package/esm2022/components/field-set/index.mjs +14 -0
  151. package/esm2022/components/field-set/item/component.mjs +41 -0
  152. package/esm2022/components/foldable-block/component.mjs +60 -0
  153. package/esm2022/components/foldable-item-in-table/component.mjs +56 -0
  154. package/esm2022/components/help-document/component.mjs +69 -0
  155. package/esm2022/components/help-document/directive.mjs +70 -0
  156. package/esm2022/components/help-document/index.mjs +9 -0
  157. package/esm2022/components/help-document/service.mjs +43 -0
  158. package/esm2022/components/index.mjs +32 -0
  159. package/esm2022/components/loading-mask/loading-mask.component.mjs +35 -0
  160. package/esm2022/components/page-guard/component/component.mjs +101 -0
  161. package/esm2022/components/page-guard/component/helper-directives.mjs +51 -0
  162. package/esm2022/components/page-guard/component/page-guard.type.mjs +82 -0
  163. package/esm2022/components/page-guard/index.mjs +19 -0
  164. package/esm2022/components/password-input/component.mjs +143 -0
  165. package/esm2022/components/pod-status/component.mjs +49 -0
  166. package/esm2022/components/pod-status/index.mjs +4 -0
  167. package/esm2022/components/pod-status/status.mjs +84 -0
  168. package/esm2022/components/pod-status/typings.mjs +19 -0
  169. package/esm2022/components/relative-time/component.mjs +58 -0
  170. package/esm2022/components/resource-label/component.mjs +100 -0
  171. package/esm2022/components/resource-multi-select/component.mjs +152 -0
  172. package/esm2022/components/resource-multi-select/util.mjs +24 -0
  173. package/esm2022/components/search-panel/component.mjs +51 -0
  174. package/esm2022/components/search-panel/helper.directive.mjs +14 -0
  175. package/esm2022/components/search-panel/search-item/component.mjs +15 -0
  176. package/esm2022/components/select-prefix-label/directive.mjs +89 -0
  177. package/esm2022/components/status-icon/status-icon.component.mjs +56 -0
  178. package/esm2022/components/tags-label/component.mjs +224 -0
  179. package/esm2022/components/terminating-tag/component.mjs +16 -0
  180. package/esm2022/components/text-ellipsis/component.mjs +28 -0
  181. package/esm2022/components/text-tooltip/directive.mjs +71 -0
  182. package/esm2022/components/text-with-url/component.mjs +40 -0
  183. package/esm2022/components/upload-file/component.mjs +95 -0
  184. package/esm2022/components/zero-state/zero-state.component.mjs +51 -0
  185. package/esm2022/constants/common.mjs +86 -0
  186. package/esm2022/constants/index.mjs +7 -0
  187. package/esm2022/constants/k8s.mjs +13 -0
  188. package/esm2022/constants/patterns.mjs +142 -0
  189. package/esm2022/constants/resource-definitions.mjs +424 -0
  190. package/esm2022/constants/status-icons.mjs +65 -0
  191. package/esm2022/constants/timezones.mjs +234 -0
  192. package/esm2022/directives/aui-code-editor.directive.mjs +30 -0
  193. package/esm2022/directives/click-outside.directive.mjs +49 -0
  194. package/esm2022/directives/declare.directive.mjs +27 -0
  195. package/esm2022/directives/disabled.directive.mjs +76 -0
  196. package/esm2022/directives/effect-directive/coerce-number.directive.mjs +54 -0
  197. package/esm2022/directives/effect-directive/e2e-attribute-binding.directive.mjs +57 -0
  198. package/esm2022/directives/effect-directive/event.directive.mjs +129 -0
  199. package/esm2022/directives/effect-directive/index.mjs +21 -0
  200. package/esm2022/directives/effect-directive/min-max.directive.mjs +107 -0
  201. package/esm2022/directives/effect-directive/trim.directive.mjs +40 -0
  202. package/esm2022/directives/effect-directive/validators.directive.mjs +43 -0
  203. package/esm2022/directives/feature-gate.directive.mjs +90 -0
  204. package/esm2022/directives/index.mjs +13 -0
  205. package/esm2022/directives/last-form-item.directive.mjs +18 -0
  206. package/esm2022/directives/readonly-field.directive.mjs +145 -0
  207. package/esm2022/directives/resize.directive.mjs +39 -0
  208. package/esm2022/directives/scroll-border-observer.directive.mjs +77 -0
  209. package/esm2022/directives/scroll-to-first-invalid.directive.mjs +126 -0
  210. package/esm2022/directives/value-trace.directive.mjs +61 -0
  211. package/esm2022/form/base-form-container.mjs +126 -0
  212. package/esm2022/form/base-nested-form-control.mjs +190 -0
  213. package/esm2022/form/errors-mapper/base-errors-mapper.mjs +41 -0
  214. package/esm2022/form/errors-mapper/default-errors-mapper.service.mjs +65 -0
  215. package/esm2022/form/errors-mapper/errors-mapper-component/component.mjs +53 -0
  216. package/esm2022/form/errors-mapper/errors-mapper.directive.mjs +109 -0
  217. package/esm2022/form/errors-mapper/index.mjs +10 -0
  218. package/esm2022/form/errors-mapper/types.mjs +2 -0
  219. package/esm2022/form/index.mjs +6 -0
  220. package/esm2022/form/utils.mjs +61 -0
  221. package/esm2022/form/validators/async-function-validator.directive.mjs +49 -0
  222. package/esm2022/form/validators/dns1123-subdomain.mjs +42 -0
  223. package/esm2022/form/validators/function-validator.directive.mjs +49 -0
  224. package/esm2022/form/validators/index.mjs +10 -0
  225. package/esm2022/form/validators/maxlength-minlength-validator.directive.mjs +71 -0
  226. package/esm2022/form/validators/not-be-validator.directive.mjs +56 -0
  227. package/esm2022/form/validators/one-of-validator.directive.mjs +57 -0
  228. package/esm2022/form/validators/resource-limit.mjs +79 -0
  229. package/esm2022/form/validators/strong-password/index.mjs +4 -0
  230. package/esm2022/form/validators/strong-password/strong-password-tooltip/component.mjs +15 -0
  231. package/esm2022/form/validators/strong-password/strong-password-validator.directive.mjs +171 -0
  232. package/esm2022/form/validators/strong-password/strong-password-validator.module.mjs +36 -0
  233. package/esm2022/form/validators/utils.mjs +155 -0
  234. package/esm2022/index.mjs +15 -0
  235. package/esm2022/k8s-resource-list/footer/component.mjs +156 -0
  236. package/esm2022/k8s-resource-list/index.mjs +18 -0
  237. package/esm2022/k8s-resource-list/k8s-resource-list.mjs +224 -0
  238. package/esm2022/k8s-resource-list/k8s-resource-paged-list.mjs +174 -0
  239. package/esm2022/k8s-resource-list/types.mjs +11 -0
  240. package/esm2022/k8s-resource-list/utils.mjs +84 -0
  241. package/esm2022/k8s-shared/constants.mjs +53 -0
  242. package/esm2022/k8s-shared/index.mjs +12 -0
  243. package/esm2022/k8s-shared/k8s-resource-translate-key.pipe.mjs +31 -0
  244. package/esm2022/k8s-shared/k8s-shared-util.service.mjs +152 -0
  245. package/esm2022/k8s-shared/resource-mark/component.mjs +54 -0
  246. package/esm2022/k8s-shared/resource-mark/util.mjs +137 -0
  247. package/esm2022/k8s-shared/update-description-dialog/component.mjs +66 -0
  248. package/esm2022/k8s-shared/update-display-name-dialog/component.mjs +59 -0
  249. package/esm2022/k8s-shared/update-key-value-dialog/component.mjs +76 -0
  250. package/esm2022/page-deactivate/deactivate.directive.mjs +50 -0
  251. package/esm2022/page-deactivate/deactivate.guard.mjs +41 -0
  252. package/esm2022/page-deactivate/deactivate.service.mjs +78 -0
  253. package/esm2022/page-deactivate/index.mjs +4 -0
  254. package/esm2022/pipes/calc.pipe.mjs +21 -0
  255. package/esm2022/pipes/cron-human-readable.pipe.mjs +30 -0
  256. package/esm2022/pipes/crontab-next.pipe.mjs +67 -0
  257. package/esm2022/pipes/duration.pipe.mjs +51 -0
  258. package/esm2022/pipes/field-not-available.pipe.mjs +25 -0
  259. package/esm2022/pipes/img-header.pipe.mjs +18 -0
  260. package/esm2022/pipes/img-theme.pipe.mjs +38 -0
  261. package/esm2022/pipes/index.mjs +19 -0
  262. package/esm2022/pipes/keyvalue.pipe.mjs +20 -0
  263. package/esm2022/pipes/marked.pipe.mjs +18 -0
  264. package/esm2022/pipes/minimum-format.pipe.mjs +25 -0
  265. package/esm2022/pipes/page-env.pipe.mjs +69 -0
  266. package/esm2022/pipes/parse-json-translate.pipe.mjs +28 -0
  267. package/esm2022/pipes/parse-json.pipe.mjs +22 -0
  268. package/esm2022/pipes/pure.pipe.mjs +26 -0
  269. package/esm2022/pipes/safe.pipe.mjs +49 -0
  270. package/esm2022/pipes/sanitize.pipe.mjs +31 -0
  271. package/esm2022/pipes/time.pipe.mjs +113 -0
  272. package/esm2022/pipes/timezone-display.pipe.mjs +21 -0
  273. package/esm2022/services/form-row-duplicate/form-row-duplicate.service.mjs +280 -0
  274. package/esm2022/services/index.mjs +4 -0
  275. package/esm2022/services/on-resize.service.mjs +52 -0
  276. package/esm2022/services/yaml-util.service.mjs +99 -0
  277. package/esm2022/types/common.mjs +6 -0
  278. package/esm2022/types/helpers.mjs +12 -0
  279. package/esm2022/types/index.mjs +9 -0
  280. package/esm2022/types/k8s/core.mjs +2 -0
  281. package/esm2022/types/k8s/crd.mjs +57 -0
  282. package/esm2022/types/k8s/index.mjs +4 -0
  283. package/esm2022/types/k8s/raw.mjs +77 -0
  284. package/esm2022/types/schema.mjs +2 -0
  285. package/esm2022/utils/browser.mjs +21 -0
  286. package/esm2022/utils/cache-store.mjs +83 -0
  287. package/esm2022/utils/color-helpers.mjs +6 -0
  288. package/esm2022/utils/common.mjs +315 -0
  289. package/esm2022/utils/cron-util.mjs +44 -0
  290. package/esm2022/utils/decorators.mjs +137 -0
  291. package/esm2022/utils/disabled-state.mjs +47 -0
  292. package/esm2022/utils/format-number.mjs +227 -0
  293. package/esm2022/utils/index.mjs +24 -0
  294. package/esm2022/utils/local-storage-constants.mjs +2 -0
  295. package/esm2022/utils/node.mjs +18 -0
  296. package/esm2022/utils/observable.mjs +32 -0
  297. package/esm2022/utils/operators.mjs +38 -0
  298. package/esm2022/utils/request-pool.mjs +37 -0
  299. package/esm2022/utils/resources.mjs +66 -0
  300. package/esm2022/utils/router.mjs +20 -0
  301. package/esm2022/utils/sort-fn.mjs +7 -0
  302. package/esm2022/utils/tree.mjs +79 -0
  303. package/esm2022/utils/unit.mjs +191 -0
  304. package/esm2022/utils/version.mjs +76 -0
  305. package/esm2022/utils/with-load-state.mjs +21 -0
  306. package/esm2022/utils/workload.mjs +183 -0
  307. package/esm2022/utils/workspace.mjs +59 -0
  308. package/esm2022/utils/yaml.mjs +54 -0
  309. package/fesm2022/alauda-fe-dynamic-plugin-shared.mjs +11151 -0
  310. package/fesm2022/alauda-fe-dynamic-plugin-shared.mjs.map +1 -0
  311. package/form/base-form-container.d.ts +41 -0
  312. package/form/base-nested-form-control.d.ts +58 -0
  313. package/form/errors-mapper/base-errors-mapper.d.ts +13 -0
  314. package/form/errors-mapper/default-errors-mapper.service.d.ts +10 -0
  315. package/form/errors-mapper/errors-mapper-component/component.d.ts +19 -0
  316. package/form/errors-mapper/errors-mapper.directive.d.ts +39 -0
  317. package/form/errors-mapper/index.d.ts +6 -0
  318. package/form/errors-mapper/types.d.ts +16 -0
  319. package/form/index.d.ts +5 -0
  320. package/form/utils.d.ts +40 -0
  321. package/form/validators/async-function-validator.directive.d.ts +11 -0
  322. package/form/validators/dns1123-subdomain.d.ts +28 -0
  323. package/form/validators/function-validator.directive.d.ts +11 -0
  324. package/form/validators/index.d.ts +9 -0
  325. package/form/validators/maxlength-minlength-validator.directive.d.ts +20 -0
  326. package/form/validators/not-be-validator.directive.d.ts +12 -0
  327. package/form/validators/one-of-validator.directive.d.ts +12 -0
  328. package/form/validators/resource-limit.d.ts +17 -0
  329. package/form/validators/strong-password/index.d.ts +3 -0
  330. package/form/validators/strong-password/strong-password-tooltip/component.d.ts +6 -0
  331. package/form/validators/strong-password/strong-password-validator.directive.d.ts +34 -0
  332. package/form/validators/strong-password/strong-password-validator.module.d.ts +12 -0
  333. package/form/validators/utils.d.ts +67 -0
  334. package/index.d.ts +14 -0
  335. package/k8s-resource-list/footer/component.d.ts +42 -0
  336. package/k8s-resource-list/index.d.ts +13 -0
  337. package/k8s-resource-list/k8s-resource-list.d.ts +42 -0
  338. package/k8s-resource-list/k8s-resource-paged-list.d.ts +61 -0
  339. package/k8s-resource-list/types.d.ts +70 -0
  340. package/k8s-resource-list/utils.d.ts +19 -0
  341. package/k8s-shared/constants.d.ts +7 -0
  342. package/k8s-shared/index.d.ts +11 -0
  343. package/k8s-shared/k8s-resource-translate-key.pipe.d.ts +9 -0
  344. package/k8s-shared/k8s-shared-util.service.d.ts +48 -0
  345. package/k8s-shared/resource-mark/component.d.ts +16 -0
  346. package/k8s-shared/resource-mark/util.d.ts +2 -0
  347. package/k8s-shared/update-description-dialog/component.d.ts +33 -0
  348. package/k8s-shared/update-display-name-dialog/component.d.ts +27 -0
  349. package/k8s-shared/update-key-value-dialog/component.d.ts +38 -0
  350. package/package.json +56 -0
  351. package/page-deactivate/deactivate.directive.d.ts +18 -0
  352. package/page-deactivate/deactivate.guard.d.ts +13 -0
  353. package/page-deactivate/deactivate.service.d.ts +28 -0
  354. package/page-deactivate/index.d.ts +3 -0
  355. package/pipes/calc.pipe.d.ts +11 -0
  356. package/pipes/cron-human-readable.pipe.d.ts +9 -0
  357. package/pipes/crontab-next.pipe.d.ts +18 -0
  358. package/pipes/duration.pipe.d.ts +10 -0
  359. package/pipes/field-not-available.pipe.d.ts +13 -0
  360. package/pipes/img-header.pipe.d.ts +7 -0
  361. package/pipes/img-theme.pipe.d.ts +13 -0
  362. package/pipes/index.d.ts +18 -0
  363. package/pipes/keyvalue.pipe.d.ts +9 -0
  364. package/pipes/marked.pipe.d.ts +8 -0
  365. package/pipes/minimum-format.pipe.d.ts +10 -0
  366. package/pipes/page-env.pipe.d.ts +34 -0
  367. package/pipes/parse-json-translate.pipe.d.ts +8 -0
  368. package/pipes/parse-json.pipe.d.ts +7 -0
  369. package/pipes/pure.pipe.d.ts +17 -0
  370. package/pipes/safe.pipe.d.ts +10 -0
  371. package/pipes/sanitize.pipe.d.ts +10 -0
  372. package/pipes/time.pipe.d.ts +40 -0
  373. package/pipes/timezone-display.pipe.d.ts +10 -0
  374. package/services/form-row-duplicate/form-row-duplicate.service.d.ts +45 -0
  375. package/services/index.d.ts +3 -0
  376. package/services/on-resize.service.d.ts +20 -0
  377. package/services/yaml-util.service.d.ts +20 -0
  378. package/styles/ansi-color.scss +131 -0
  379. package/styles/global.scss +904 -0
  380. package/styles/lib.scss +1 -0
  381. package/styles/markdown-body.scss +107 -0
  382. package/styles/mixins.scss +710 -0
  383. package/styles/var.scss +30 -0
  384. package/types/common.d.ts +42 -0
  385. package/types/helpers.d.ts +35 -0
  386. package/types/index.d.ts +8 -0
  387. package/types/k8s/core.d.ts +100 -0
  388. package/types/k8s/crd.d.ts +497 -0
  389. package/types/k8s/index.d.ts +3 -0
  390. package/types/k8s/raw.d.ts +860 -0
  391. package/types/schema.d.ts +14 -0
  392. package/utils/browser.d.ts +4 -0
  393. package/utils/cache-store.d.ts +35 -0
  394. package/utils/color-helpers.d.ts +4 -0
  395. package/utils/common.d.ts +64 -0
  396. package/utils/cron-util.d.ts +8 -0
  397. package/utils/decorators.d.ts +14 -0
  398. package/utils/disabled-state.d.ts +20 -0
  399. package/utils/format-number.d.ts +11 -0
  400. package/utils/index.d.ts +23 -0
  401. package/utils/local-storage-constants.d.ts +1 -0
  402. package/utils/node.d.ts +8 -0
  403. package/utils/observable.d.ts +5 -0
  404. package/utils/operators.d.ts +22 -0
  405. package/utils/request-pool.d.ts +12 -0
  406. package/utils/resources.d.ts +19 -0
  407. package/utils/router.d.ts +3 -0
  408. package/utils/sort-fn.d.ts +2 -0
  409. package/utils/tree.d.ts +16 -0
  410. package/utils/unit.d.ts +21 -0
  411. package/utils/version.d.ts +39 -0
  412. package/utils/with-load-state.d.ts +11 -0
  413. package/utils/workload.d.ts +66 -0
  414. package/utils/workspace.d.ts +28 -0
  415. package/utils/yaml.d.ts +11 -0
@@ -0,0 +1,79 @@
1
+ /**
2
+ * @packageDocumentation
3
+ * @module utils
4
+ */
5
+ // reduceTree :: String -> (a -> Tree -> [Tree] -> [Number] -> a) -> a -> [Tree] -> a
6
+ export const reduceTrees = (subtreeKey) => (fn) => (seed) => (trees) => {
7
+ const reducer = (nodes, parents, path, acc) => nodes.reduce((prev, curr, index) => {
8
+ const result = fn(prev, curr, parents, [...path, index]);
9
+ return curr[subtreeKey]
10
+ ? reducer(curr[subtreeKey], [...parents, curr], [...path, index], result)
11
+ : result;
12
+ }, acc);
13
+ return reducer(trees, [], [], seed);
14
+ };
15
+ // mapTree :: String -> (Tree -> [Tree] -> [Number] -> Tree) -> [Tree] -> [Tree]
16
+ export const mapTrees = (subtreeKey) => (fn) => (trees) => {
17
+ const mapper = (acc, curr, parents, path) => {
18
+ const mapped = fn(curr, parents, path);
19
+ return setNode(subtreeKey, path, acc, mapped);
20
+ };
21
+ return reduceTrees(subtreeKey)(mapper)([])(trees);
22
+ };
23
+ export const filterTrees = (subtreeKey) => (fn) => (trees) => {
24
+ const filter = (nodes, parents, path) => nodes
25
+ ?.filter(node => fn(node, parents, path))
26
+ .map((node, index) => node[subtreeKey]
27
+ ? {
28
+ ...node,
29
+ [subtreeKey]: filter(node[subtreeKey], [...parents, node], [...path, index]),
30
+ }
31
+ : node);
32
+ return filter(trees, [], []);
33
+ };
34
+ export const findPath = (subtreeKey) => (fn) => (trees) => {
35
+ const endPoint = [];
36
+ const finder = (nodes, parents, path) => {
37
+ const result = nodes.find((node, index) => {
38
+ if (fn(node, parents, path)) {
39
+ return true;
40
+ }
41
+ if (node[subtreeKey]) {
42
+ return finder(node[subtreeKey], [...parents, node], [...path, index]);
43
+ }
44
+ return false;
45
+ });
46
+ if (result) {
47
+ endPoint.unshift(result);
48
+ }
49
+ return !!result;
50
+ };
51
+ finder(trees, [], []);
52
+ return endPoint;
53
+ };
54
+ export const firstPath = (subtreeKey) => (trees) => {
55
+ const head = trees[0];
56
+ if (head) {
57
+ return head.children
58
+ ? [head, ...firstPath(subtreeKey)(head[subtreeKey])]
59
+ : [head];
60
+ }
61
+ return [];
62
+ };
63
+ export function setNode(subtreeKey, path, source, target) {
64
+ const iterator = ([head, ...tail], trees) => {
65
+ if (tail.length > 0) {
66
+ const point = trees[head] || {};
67
+ const tree = {
68
+ ...point,
69
+ [subtreeKey]: iterator(tail, (point[subtreeKey] || [])),
70
+ };
71
+ trees[head] = tree;
72
+ return trees;
73
+ }
74
+ trees[head] = target;
75
+ return trees;
76
+ };
77
+ return iterator(path, source);
78
+ }
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvZHluYW1pYy1wbHVnaW4tc2hhcmVkL3NyYy91dGlscy90cmVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILHFGQUFxRjtBQUNyRixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQ3RCLENBQUMsVUFBa0IsRUFBRSxFQUFFLENBQ3ZCLENBQW9CLEVBQXFCLEVBQUUsRUFBRSxDQUM3QyxDQUFDLElBQU8sRUFBRSxFQUFFLENBQ1osQ0FBQyxLQUFVLEVBQUUsRUFBRTtJQUNiLE1BQU0sT0FBTyxHQUFHLENBQUMsS0FBVSxFQUFFLE9BQVksRUFBRSxJQUFjLEVBQUUsR0FBTSxFQUFLLEVBQUUsQ0FDdEUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7UUFDakMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN6RCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDckIsQ0FBQyxDQUFDLE9BQU8sQ0FDTCxJQUFJLENBQUMsVUFBVSxDQUFRLEVBQ3ZCLENBQUMsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQ2xCLENBQUMsR0FBRyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQ2hCLE1BQU0sQ0FDUDtZQUNILENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDYixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDVixPQUFPLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN0QyxDQUFDLENBQUM7QUFFSixnRkFBZ0Y7QUFDaEYsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUNuQixDQUFDLFVBQWtCLEVBQUUsRUFB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bnRlbnQiOlsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqIEBtb2R1bGUgdXRpbHNcbiAqL1xuXG4vLyByZWR1Y2VUcmVlIDo6IFN0cmluZyAtPiAoYSAtPiBUcmVlIC0+IFtUcmVlXSAtPiBbTnVtYmVyXSAtPiBhKSAtPiBhIC0+IFtUcmVlXSAtPiBhXG5leHBvcnQgY29uc3QgcmVkdWNlVHJlZXMgPVxuICAoc3VidHJlZUtleTogc3RyaW5nKSA9PlxuICA8VCBleHRlbmRzIFRyZWUsIFI+KGZuOiBUcmVlUmVkdWNlcjxULCBSPikgPT5cbiAgKHNlZWQ6IFIpID0+XG4gICh0cmVlczogVFtdKSA9PiB7XG4gICAgY29uc3QgcmVkdWNlciA9IChub2RlczogVFtdLCBwYXJlbnRzOiBUW10sIHBhdGg6IG51bWJlcltdLCBhY2M6IFIpOiBSID0+XG4gICAgICBub2Rlcy5yZWR1Y2UoKHByZXYsIGN1cnIsIGluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGZuKHByZXYsIGN1cnIsIHBhcmVudHMsIFsuLi5wYXRoLCBpbmRleF0pO1xuICAgICAgICByZXR1cm4gY3VycltzdWJ0cmVlS2V5XVxuICAgICAgICAgID8gcmVkdWNlcihcbiAgICAgICAgICAgICAgY3VycltzdWJ0cmVlS2V5XSBhcyBUW10sXG4gICAgICAgICAgICAgIFsuLi5wYXJlbnRzLCBjdXJyXSxcbiAgICAgICAgICAgICAgWy4uLnBhdGgsIGluZGV4XSxcbiAgICAgICAgICAgICAgcmVzdWx0LFxuICAgICAgICAgICAgKVxuICAgICAgICAgIDogcmVzdWx0O1xuICAgICAgfSwgYWNjKTtcbiAgICByZXR1cm4gcmVkdWNlcih0cmVlcywgW10sIFtdLCBzZWVkKTtcbiAgfTtcblxuLy8gbWFwVHJlZSA6OiBTdHJpbmcgLT4gKFRyZWUgLT4gW1RyZWVdIC0+IFtOdW1iZXJdIC0+IFRyZWUpIC0+IFtUcmVlXSAtPiBbVHJlZV1cbmV4cG9ydCBjb25zdCBtYXBUcmVlcyA9XG4gIChzdWJ0cmVlS2V5OiBzdHJpbmcpID0+XG4gIDxUIGV4dGVuZHMgVHJlZSwgUiBleHRlbmRzIFRyZWU+KGZuOiBUcmVlTWFwcGVyPFQsIFI+KSA9PlxuICAodHJlZXM6IFRbXSkgPT4ge1xuICAgIGNvbnN0IG1hcHBlciA9IChhY2M6IFJbXSwgY3VycjogVCwgcGFyZW50czogVFtdLCBwYXRoOiBudW1iZXJbXSkgPT4ge1xuICAgICAgY29uc3QgbWFwcGVkID0gZm4oY3VyciwgcGFyZW50cywgcGF0aCk7XG4gICAgICByZXR1cm4gc2V0Tm9kZTxSPihzdWJ0cmVlS2V5LCBwYXRoLCBhY2MsIG1hcHBlZCk7XG4gICAgfTtcbiAgICByZXR1cm4gcmVkdWNlVHJlZXMoc3VidHJlZUtleSk8VCwgUltdPihtYXBwZXIpKFtdKSh0cmVlcyk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBmaWx0ZXJUcmVlcyA9XG4gIChzdWJ0cmVlS2V5OiBzdHJpbmcpID0+XG4gIDxUIGV4dGVuZHMgVHJlZT4oZm46IFRyZWVGaWx0ZXI8VD4pID0+XG4gICh0cmVlczogVFtdKSA9PiB7XG4gICAgY29uc3QgZmlsdGVyID0gKG5vZGVzOiBUW10sIHBhcmVudHM6IFRbXSwgcGF0aDogbnVtYmVyW10pOiBUW10gPT5cbiAgICAgIG5vZGVzXG4gICAgICAgID8uZmlsdGVyKG5vZGUgPT4gZm4obm9kZSwgcGFyZW50cywgcGF0aCkpXG4gICAgICAgIC5tYXAoKG5vZGUsIGluZGV4KSA9PlxuICAgICAgICAgIG5vZGVbc3VidHJlZUtleV1cbiAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgIC4uLm5vZGUsXG4gICAgICAgICAgICAgICAgW3N1YnRyZWVLZXldOiBmaWx0ZXIoXG4gICAgICAgICAgICAgICAgICBub2RlW3N1YnRyZWVLZXldIGFzIFRbXSxcbiAgICAgICAgICAgICAgICAgIFsuLi5wYXJlbnRzLCBub2RlXSxcbiAgICAgICAgICAgICAgICAgIFsuLi5wYXRoLCBpbmRleF0sXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiBub2RlLFxuICAgICAgICApO1xuICAgIHJldHVybiBmaWx0ZXIodHJlZXMsIFtdLCBbXSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBmaW5kUGF0aCA9XG4gIChzdWJ0cmVlS2V5OiBzdHJpbmcpID0+XG4gIDxUIGV4dGVuZHMgVHJlZT4oZm46IFRyZWVGaWx0ZXI8VD4pID0+XG4gICh0cmVlczogVFtdKSA9PiB7XG4gICAgY29uc3QgZW5kUG9pbnQ6IFRbXSA9IFtdO1xuICAgIGNvbnN0IGZpbmRlciA9IChub2RlczogVFtdLCBwYXJlbnRzOiBUW10sIHBhdGg6IG51bWJlcltdKTogYm9vbGVhbiA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBub2Rlcy5maW5kKChub2RlLCBpbmRleCkgPT4ge1xuICAgICAgICBpZiAoZm4obm9kZSwgcGFyZW50cywgcGF0aCkpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZVtzdWJ0cmVlS2V5XSkge1xuICAgICAgICAgIHJldHVybiBmaW5kZXIoXG4gICAgICAgICAgICBub2RlW3N1YnRyZWVLZXldIGFzIFRbXSxcbiAgICAgICAgICAgIFsuLi5wYXJlbnRzLCBub2RlXSxcbiAgICAgICAgICAgIFsuLi5wYXRoLCBpbmRleF0sXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9KTtcbiAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgZW5kUG9pbnQudW5zaGlmdChyZXN1bHQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuICEhcmVzdWx0O1xuICAgIH07XG5cbiAgICBmaW5kZXIodHJlZXMsIFtdLCBbXSk7XG4gICAgcmV0dXJuIGVuZFBvaW50O1xuICB9O1xuXG5leHBvcnQgY29uc3QgZmlyc3RQYXRoID1cbiAgKHN1YnRyZWVLZXk6IHN0cmluZykgPT5cbiAgPFQgZXh0ZW5kcyBUcmVlPih0cmVlczogVFtdKTogVFtdID0+IHtcbiAgICBjb25zdCBoZWFkID0gdHJlZXNbMF07XG4gICAgaWYgKGhlYWQpIHtcbiAgICAgIHJldHVybiBoZWFkLmNoaWxkcmVuXG4gICAgICAgID8gW2hlYWQsIC4uLmZpcnN0UGF0aChzdWJ0cmVlS2V5KTxUPihoZWFkW3N1YnRyZWVLZXldIGFzIFRbXSldXG4gICAgICAgIDogW2hlYWRdO1xuICAgIH1cbiAgICByZXR1cm4gW107XG4gIH07XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXROb2RlPFQgZXh0ZW5kcyBUcmVlPihcbiAgc3VidHJlZUtleTogc3RyaW5nLFxuICBwYXRoOiBudW1iZXJbXSxcbiAgc291cmNlOiBUW10sXG4gIHRhcmdldDogVCxcbikge1xuICBjb25zdCBpdGVyYXRvciA9IChbaGVhZCwgLi4udGFpbF06IG51bWJlcltdLCB0cmVlczogVFtdKSA9PiB7XG4gICAgaWYgKHRhaWwubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgcG9pbnQgPSB0cmVlc1toZWFkXSB8fCAoe30gYXMgVCk7XG4gICAgICBjb25zdCB0cmVlID0ge1xuICAgICAgICAuLi5wb2ludCxcbiAgICAgICAgW3N1YnRyZWVLZXldOiBpdGVyYXRvcih0YWlsLCAocG9pbnRbc3VidHJlZUtleV0gfHwgW10pIGFzIFRbXSksXG4gICAgICB9O1xuICAgICAgdHJlZXNbaGVhZF0gPSB0cmVlO1xuICAgICAgcmV0dXJuIHRyZWVzO1xuICAgIH1cbiAgICB0cmVlc1toZWFkXSA9IHRhcmdldDtcbiAgICByZXR1cm4gdHJlZXM7XG4gIH07XG4gIHJldHVybiBpdGVyYXRvcihwYXRoLCBzb3VyY2UpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRyZWUge1xuICBba2V5OiBzdHJpbmddOiBUcmVlW107XG59XG5cbmV4cG9ydCB0eXBlIFRyZWVSZWR1Y2VyPFQgZXh0ZW5kcyBUcmVlLCBSPiA9IChcbiAgYWNjOiBSLFxuICBjdXJyZW50Tm9kZTogVCxcbiAgcGFyZW50czogVFtdLFxuICBwYXRoOiBudW1iZXJbXSxcbikgPT4gUjtcblxuZXhwb3J0IHR5cGUgVHJlZU1hcHBlcjxUIGV4dGVuZHMgVHJlZSwgUiBleHRlbmRzIFRyZWU+ID0gKFxuICB0cmVlOiBULFxuICBwYXJlbnRzOiBUW10sXG4gIHBhdGg6IG51bWJlcltdLFxuKSA9PiBSO1xuXG5leHBvcnQgdHlwZSBUcmVlRmlsdGVyPFQgZXh0ZW5kcyBUcmVlPiA9IChcbiAgdHJlZTogVCxcbiAgcGFyZW50czogVFtdLFxuICBwYXRoOiBudW1iZXJbXSxcbikgPT4gYm9vbGVhbjtcbiJdfQ==
@@ -0,0 +1,191 @@
1
+ import { isBlank, numToStr } from './common';
2
+ const COMMON_UNITS = ['M', 'G', 'T', 'P', 'E'];
3
+ export const CORE_UNITS = ['m', '', 'k', ...COMMON_UNITS];
4
+ export const CORE_UNIT_REG = new RegExp(`[${CORE_UNITS.join('')}]$`);
5
+ const toUnitNumBase = (coreStr, isUnitM = false) => {
6
+ if (typeof coreStr === 'number') {
7
+ return numToStr(coreStr * Math.pow(1000, +isUnitM));
8
+ }
9
+ if (isBlank(coreStr)) {
10
+ return '';
11
+ }
12
+ coreStr = coreStr.trim();
13
+ const num = +coreStr.replace(CORE_UNIT_REG, '');
14
+ if (Number.isNaN(num)) {
15
+ return '';
16
+ }
17
+ if (num <= 0) {
18
+ return '0';
19
+ }
20
+ const lastChar = coreStr.at(-1);
21
+ let unitIndex = CORE_UNITS.indexOf(lastChar);
22
+ unitIndex = (unitIndex === -1 ? 0 : unitIndex - 1) + +isUnitM;
23
+ return numToStr(num * Math.pow(1000, unitIndex));
24
+ };
25
+ export const toUnitNumM = (coreStr) => toUnitNumBase(coreStr, true);
26
+ export const toUnitNum = (coreStr) => toUnitNumBase(coreStr);
27
+ export const UNITS = ['', 'K', ...COMMON_UNITS];
28
+ export const UNIT_REG = new RegExp(`[${UNITS.join('')}]i?$`);
29
+ // TODO: UNITS 临时被其他地方当成了枚举项使用,先临时添加MEMORY_UNITS来处理 toUnitI 中兼容 k、Ki 的问题
30
+ const MEMORY_UNITS = ['', ['k', 'K'], ...COMMON_UNITS];
31
+ const MEMORY_UNIT_REG = new RegExp(`[${MEMORY_UNITS.join('')}]i?$`);
32
+ export const toUnitI = (str, negative = false) => {
33
+ if (typeof str === 'number') {
34
+ if (str <= 0 && !negative) {
35
+ return '0';
36
+ }
37
+ return numToStr(str);
38
+ }
39
+ if (isBlank(str)) {
40
+ return '';
41
+ }
42
+ str = str.trim();
43
+ const num = +str.replace(MEMORY_UNIT_REG, '');
44
+ if (Number.isNaN(num)) {
45
+ return '';
46
+ }
47
+ if (num <= 0 && !negative) {
48
+ return '0';
49
+ }
50
+ let base = 1000;
51
+ if (str.endsWith('i')) {
52
+ base = 1024;
53
+ str = str.replace(/i$/, '');
54
+ }
55
+ const lastChar = str.at(-1);
56
+ const unitIndex = MEMORY_UNITS.findIndex(unit => Array.isArray(unit) ? unit.includes(lastChar) : unit === lastChar);
57
+ return numToStr(num * Math.pow(base, unitIndex === -1 ? 0 : unitIndex));
58
+ };
59
+ export const toUnitMi = (str, negative) => {
60
+ const unitI = toUnitI(str, negative);
61
+ if (!unitI) {
62
+ return '';
63
+ }
64
+ return numToStr(+unitI / 1024 / 1024);
65
+ };
66
+ export const toUnitGi = (str, negative) => {
67
+ const unitI = toUnitI(str, negative);
68
+ if (!unitI) {
69
+ return '';
70
+ }
71
+ return numToStr(+unitI / 1024 / 1024 / 1024);
72
+ };
73
+ export const addUnitCoreM = (coreStr) => {
74
+ if (isBlank(coreStr)) {
75
+ return null;
76
+ }
77
+ return numToStr(+coreStr) + 'm';
78
+ };
79
+ export const addUnitMi = (miStr) => {
80
+ if (isBlank(miStr)) {
81
+ return null;
82
+ }
83
+ return numToStr(+miStr) + 'Mi';
84
+ };
85
+ export const addUnitGi = (giStr) => {
86
+ if (isBlank(giStr)) {
87
+ return null;
88
+ }
89
+ return numToStr(+giStr) + 'Gi';
90
+ };
91
+ const POWER_MEMORY_UNITS = ['Ki', 'Mi', 'Gi', 'Ti', 'Pi', 'Ei'];
92
+ export function getAppropriateMemory(base) {
93
+ let unit = -1;
94
+ while (base >= 800 || unit >= POWER_MEMORY_UNITS.length - 1) {
95
+ base /= 1024;
96
+ unit++;
97
+ }
98
+ return {
99
+ value: base,
100
+ unit: POWER_MEMORY_UNITS[unit],
101
+ };
102
+ }
103
+ const reg = /^(\d?\.?\d+)(\w+)*$/;
104
+ export const parseValueAndUnit = (str) => {
105
+ const [_, value, unit] = /^(\d?\.?\d+)(\w+)*$/.exec(str) || [];
106
+ return [value, unit];
107
+ };
108
+ export function formatMemory(mem) {
109
+ const base = parseFloat(mem);
110
+ const res = reg.exec(mem);
111
+ const unit = res?.[2];
112
+ return unit ? getMemory(base, unit) : base;
113
+ }
114
+ export function getMemory(base, unit) {
115
+ switch (unit) {
116
+ case 'm': {
117
+ return base * 1e-3;
118
+ }
119
+ case 'K': {
120
+ return base * 1e3;
121
+ }
122
+ case 'Ki': {
123
+ return base * 1024;
124
+ }
125
+ case 'M': {
126
+ return base * 1e6;
127
+ }
128
+ case 'Mi': {
129
+ return base * 1024 ** 2;
130
+ }
131
+ case 'G': {
132
+ return base * 1e9;
133
+ }
134
+ case 'Gi': {
135
+ return base * 1024 ** 3;
136
+ }
137
+ case 'T': {
138
+ return base * 1e12;
139
+ }
140
+ case 'Ti': {
141
+ return base * 1024 ** 4;
142
+ }
143
+ case 'P': {
144
+ return base * 1e15;
145
+ }
146
+ case 'Pi': {
147
+ return base * 1024 ** 5;
148
+ }
149
+ case 'E': {
150
+ return base * 1e18;
151
+ }
152
+ case 'Ei': {
153
+ return base * 1024 ** 6;
154
+ }
155
+ default: {
156
+ return base;
157
+ }
158
+ }
159
+ }
160
+ export function getCpu(base, unit) {
161
+ switch (unit) {
162
+ case 'm': {
163
+ return base;
164
+ }
165
+ case 'c': {
166
+ return base * 1e3;
167
+ }
168
+ case 'k': {
169
+ return base * 1e6;
170
+ }
171
+ case 'M': {
172
+ return base * 1e9;
173
+ }
174
+ case 'G': {
175
+ return base * 1e12;
176
+ }
177
+ case 'T': {
178
+ return base * 1e15;
179
+ }
180
+ default: {
181
+ return base * 1e3;
182
+ }
183
+ }
184
+ }
185
+ export function formatCPU(cpu) {
186
+ const base = parseFloat(cpu);
187
+ const res = reg.exec(cpu);
188
+ const unit = res?.[2];
189
+ return getCpu(base, unit);
190
+ }
191
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvZHluYW1pYy1wbHVnaW4tc2hhcmVkL3NyYy91dGlscy91bml0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRTdDLE1BQU0sWUFBWSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBRS9DLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsWUFBWSxDQUFDLENBQUM7QUFFMUQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFckUsTUFBTSxhQUFhLEdBQUcsQ0FBQyxPQUF5QixFQUFFLE9BQU8sR0FBRyxLQUFLLEVBQUUsRUFBRTtJQUNuRSxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ2hDLE9BQU8sUUFBUSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDckIsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBQ0QsT0FBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN6QixNQUFNLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2hELElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3RCLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUNELElBQUksR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ2IsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBQ0QsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hDLElBQUksU0FBUyxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDN0MsU0FBUyxHQUFHLENBQUMsU0FBUyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQztJQUM5RCxPQUFPLFFBQVEsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztBQUNuRCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxPQUF5QixFQUFFLEVBQUUsQ0FDdEQsYUFBYSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztBQUUvQixNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxPQUF5QixFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7QUFFL0UsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLFlBQVksQ0FBQyxDQUFDO0FBQ2hELE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRTdELHdFQUF3RTtBQUN4RSxNQUFNLFlBQVksR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLFlBQVksQ0FBQyxDQUFDO0FBQ3ZELE1BQU0sZUFBZSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7QUFFcEUsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBcUIsRUFBRSxRQUFRLEdBQUcsS0FBSyxFQUFFLEVBQUU7SUFDakUsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUM1QixJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUMxQixPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUM7UUFDRCxPQUFPLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNqQixPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFDRCxHQUFHLEdBQUcsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2pCLE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDOUMsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDdEIsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBQ0QsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDMUIsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBRWhCLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3RCLElBQUksR0FBRyxJQUFJLENBQUM7UUFDWixHQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QixNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQzlDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxRQUFRLENBQ2xFLENBQUM7SUFDRixPQUFPLFFBQVEsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsU0FBUyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7QUFDMUUsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLENBQUMsR0FBcUIsRUFBRSxRQUFrQixFQUFFLEVBQUU7SUFDcEUsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNyQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDWCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFDRCxPQUFPLFFBQVEsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDeEMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLENBQUMsR0FBcUIsRUFBRSxRQUFrQixFQUFFLEVBQUU7SUFDcEUsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNyQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDWCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFDRCxPQUFPLFFBQVEsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDO0FBQy9DLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLE9BQXlCLEVBQUUsRUFBRTtJQUN4RCxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ3JCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELE9BQU8sUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDO0FBQ2xDLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxDQUFDLEtBQXVCLEVBQUUsRUFBRTtJQUNuRCxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ25CLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELE9BQU8sUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ2pDLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxDQUFDLEtBQXVCLEVBQUUsRUFBRTtJQUNuRCxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ25CLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELE9BQU8sUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ2pDLENBQUMsQ0FBQztBQUVGLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBRWhFLE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxJQUFZO0lBQy9DLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2QsT0FBTyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDNUQsSUFBSSxJQUFJLElBQUksQ0FBQztRQUNiLElBQUksRUFBRSxDQUFDO0lBQ1QsQ0FBQztJQUNELE9BQU87UUFDTCxLQUFLLEVBQUUsSUFBSTtRQUNYLElBQUksRUFBRSxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7S0FDL0IsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLEdBQUcsR0FBRyxxQkFBcUIsQ0FBQztBQUVsQyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEdBQVcsRUFBRSxFQUFFO0lBQy9DLE1BQU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLHFCQUFxQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDL0QsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN2QixDQUFDLENBQUM7QUFFRixNQUFNLFVBQVUsWUFBWSxDQUFDLEdBQVc7SUFDdEMsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzdCLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDMUIsTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEIsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUM3QyxDQUFDO0FBRUQsTUFBTSxVQUFVLFNBQVMsQ0FBQyxJQUFZLEVBQUUsSUFBWTtJQUNsRCxRQUFRLElBQUksRUFBRSxDQUFDO1FBQ2IsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ1QsT0FBTyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLENBQUM7UUFDRCxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDVCxPQUFPLElBQUksR0FBRyxHQUFHLENBQUM7UUFDcEIsQ0FBQztRQUNELEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNWLE9BQU8sSUFBSSxHQUFHLElBQUksQ0FBQztRQUNyQixDQUFDO1FBQ0QsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ1QsT0FBTyxJQUFJLEdBQUcsR0FBRyxDQUFDO1FBQ3BCLENBQUM7UUFDRCxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDVixPQUFPLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDO1FBQzFCLENBQUM7UUFDRCxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDVCxPQUFPLElBQUksR0FBRyxHQUFHLENBQUM7UUFDcEIsQ0FBQztRQUNELEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNWLE9BQU8sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUM7UUFDMUIsQ0FBQztRQUNELEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNULE9BQU8sSUFBSSxHQUFHLElBQUksQ0FBQztRQUNyQixDQUFDO1FBQ0QsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ1YsT0FBTyxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQztRQUMxQixDQUFDO1FBQ0QsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ1QsT0FBTyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLENBQUM7UUFDRCxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDVixPQUFPLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDO1FBQzFCLENBQUM7UUFDRCxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDVCxPQUFPLElBQUksR0FBRyxJQUFJLENBQUM7UUFDckIsQ0FBQztRQUNELEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNWLE9BQU8sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUM7UUFDMUIsQ0FBQztRQUNELE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDUixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxNQUFNLENBQUMsSUFBWSxFQUFFLElBQVk7SUFDL0MsUUFBUSxJQUFJLEVBQUUsQ0FBQztRQUNiLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNULE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNULE9BQU8sSUFBSSxHQUFHLEdBQUcsQ0FBQztRQUNwQixDQUFDO1FBQ0QsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ1QsT0FBTyxJQUFJLEdBQUcsR0FBRyxDQUFDO1FBQ3BCLENBQUM7UUFDRCxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDVCxPQUFPLElBQUksR0FBRyxHQUFHLENBQUM7UUFDcEIsQ0FBQztRQUNELEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNULE9BQU8sSUFBSSxHQUFHLElBQUksQ0FBQztRQUNyQixDQUFDO1FBQ0QsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ1QsT0FBTyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLENBQUM7UUFDRCxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ1IsT0FBTyxJQUFJLEdBQUcsR0FBRyxDQUFDO1FBQ3BCLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxTQUFTLENBQUMsR0FBVztJQUNuQyxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDN0IsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxQixNQUFNLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0QixPQUFPLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDNUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzQmxhbmssIG51bVRvU3RyIH0gZnJvbSAnLi9jb21tb24nO1xuXG5jb25zdCBDT01NT05fVU5JVFMgPSBbJ00nLCAnRycsICdUJywgJ1AnLCAnRSddO1xuXG5leHBvcnQgY29uc3QgQ09SRV9VTklUUyA9IFsnbScsICcnLCAnaycsIC4uLkNPTU1PTl9VTklUU107XG5cbmV4cG9ydCBjb25zdCBDT1JFX1VOSVRfUkVHID0gbmV3IFJlZ0V4cChgWyR7Q09SRV9VTklUUy5qb2luKCcnKX1dJGApO1xuXG5jb25zdCB0b1VuaXROdW1CYXNlID0gKGNvcmVTdHI/OiBzdHJpbmcgfCBudW1iZXIsIGlzVW5pdE0gPSBmYWxzZSkgPT4ge1xuICBpZiAodHlwZW9mIGNvcmVTdHIgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIG51bVRvU3RyKGNvcmVTdHIgKiBNYXRoLnBvdygxMDAwLCAraXNVbml0TSkpO1xuICB9XG5cbiAgaWYgKGlzQmxhbmsoY29yZVN0cikpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgY29yZVN0ciA9IGNvcmVTdHIudHJpbSgpO1xuICBjb25zdCBudW0gPSArY29yZVN0ci5yZXBsYWNlKENPUkVfVU5JVF9SRUcsICcnKTtcbiAgaWYgKE51bWJlci5pc05hTihudW0pKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIGlmIChudW0gPD0gMCkge1xuICAgIHJldHVybiAnMCc7XG4gIH1cbiAgY29uc3QgbGFzdENoYXIgPSBjb3JlU3RyLmF0KC0xKTtcbiAgbGV0IHVuaXRJbmRleCA9IENPUkVfVU5JVFMuaW5kZXhPZihsYXN0Q2hhcik7XG4gIHVuaXRJbmRleCA9ICh1bml0SW5kZXggPT09IC0xID8gMCA6IHVuaXRJbmRleCAtIDEpICsgK2lzVW5pdE07XG4gIHJldHVybiBudW1Ub1N0cihudW0gKiBNYXRoLnBvdygxMDAwLCB1bml0SW5kZXgpKTtcbn07XG5cbmV4cG9ydCBjb25zdCB0b1VuaXROdW1NID0gKGNvcmVTdHI/OiBzdHJpbmcgfCBudW1iZXIpID0+XG4gIHRvVW5pdE51bUJhc2UoY29yZVN0ciwgdHJ1ZSk7XG5cbmV4cG9ydCBjb25zdCB0b1VuaXROdW0gPSAoY29yZVN0cj86IHN0cmluZyB8IG51bWJlcikgPT4gdG9Vbml0TnVtQmFzZShjb3JlU3RyKTtcblxuZXhwb3J0IGNvbnN0IFVOSVRTID0gWycnLCAnSycsIC4uLkNPTU1PTl9VTklUU107XG5leHBvcnQgY29uc3QgVU5JVF9SRUcgPSBuZXcgUmVnRXhwKGBbJHtVTklUUy5qb2luKCcnKX1daT8kYCk7XG5cbi8vIFRPRE86IFVOSVRTIOS4tOaXtuiiq+WFtuS7luWcsOaWueW9k+aIkOS6huaemuS4vumhueS9v+eUqO+8jOWFiOS4tOaXtua3u+WKoE1FTU9SWV9VTklUU+adpeWkhOeQhiB0b1VuaXRJIOS4reWFvOWuuSBr44CBS2kg55qE6Zeu6aKYXG5jb25zdCBNRU1PUllfVU5JVFMgPSBbJycsIFsnaycsICdLJ10sIC4uLkNPTU1PTl9VTklUU107XG5jb25zdCBNRU1PUllfVU5JVF9SRUcgPSBuZXcgUmVnRXhwKGBbJHtNRU1PUllfVU5JVFMuam9pbignJyl9XWk/JGApO1xuXG5leHBvcnQgY29uc3QgdG9Vbml0SSA9IChzdHI/OiBzdHJpbmcgfCBudW1iZXIsIG5lZ2F0aXZlID0gZmFsc2UpID0+IHtcbiAgaWYgKHR5cGVvZiBzdHIgPT09ICdudW1iZXInKSB7XG4gICAgaWYgKHN0ciA8PSAwICYmICFuZWdhdGl2ZSkge1xuICAgICAgcmV0dXJuICcwJztcbiAgICB9XG4gICAgcmV0dXJuIG51bVRvU3RyKHN0cik7XG4gIH1cblxuICBpZiAoaXNCbGFuayhzdHIpKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIHN0ciA9IHN0ci50cmltKCk7XG4gIGNvbnN0IG51bSA9ICtzdHIucmVwbGFjZShNRU1PUllfVU5JVF9SRUcsICcnKTtcbiAgaWYgKE51bWJlci5pc05hTihudW0pKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIGlmIChudW0gPD0gMCAmJiAhbmVnYXRpdmUpIHtcbiAgICByZXR1cm4gJzAnO1xuICB9XG5cbiAgbGV0IGJhc2UgPSAxMDAwO1xuXG4gIGlmIChzdHIuZW5kc1dpdGgoJ2knKSkge1xuICAgIGJhc2UgPSAxMDI0O1xuICAgIHN0ciA9IHN0ci5yZXBsYWNlKC9pJC8sICcnKTtcbiAgfVxuXG4gIGNvbnN0IGxhc3RDaGFyID0gc3RyLmF0KC0xKTtcbiAgY29uc3QgdW5pdEluZGV4ID0gTUVNT1JZX1VOSVRTLmZpbmRJbmRleCh1bml0ID0+XG4gICAgQXJyYXkuaXNBcnJheSh1bml0KSA/IHVuaXQuaW5jbHVkZXMobGFzdENoYXIpIDogdW5pdCA9PT0gbGFzdENoYXIsXG4gICk7XG4gIHJldHVybiBudW1Ub1N0cihudW0gKiBNYXRoLnBvdyhiYXNlLCB1bml0SW5kZXggPT09IC0xID8gMCA6IHVuaXRJbmRleCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHRvVW5pdE1pID0gKHN0cj86IHN0cmluZyB8IG51bWJlciwgbmVnYXRpdmU/OiBib29sZWFuKSA9PiB7XG4gIGNvbnN0IHVuaXRJID0gdG9Vbml0SShzdHIsIG5lZ2F0aXZlKTtcbiAgaWYgKCF1bml0SSkge1xuICAgIHJldHVybiAnJztcbiAgfVxuICByZXR1cm4gbnVtVG9TdHIoK3VuaXRJIC8gMTAyNCAvIDEwMjQpO1xufTtcblxuZXhwb3J0IGNvbnN0IHRvVW5pdEdpID0gKHN0cj86IHN0cmluZyB8IG51bWJlciwgbmVnYXRpdmU/OiBib29sZWFuKSA9PiB7XG4gIGNvbnN0IHVuaXRJID0gdG9Vbml0SShzdHIsIG5lZ2F0aXZlKTtcbiAgaWYgKCF1bml0SSkge1xuICAgIHJldHVybiAnJztcbiAgfVxuICByZXR1cm4gbnVtVG9TdHIoK3VuaXRJIC8gMTAyNCAvIDEwMjQgLyAxMDI0KTtcbn07XG5cbmV4cG9ydCBjb25zdCBhZGRVbml0Q29yZU0gPSAoY29yZVN0cj86IHN0cmluZyB8IG51bWJlcikgPT4ge1xuICBpZiAoaXNCbGFuayhjb3JlU3RyKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiBudW1Ub1N0cigrY29yZVN0cikgKyAnbSc7XG59O1xuXG5leHBvcnQgY29uc3QgYWRkVW5pdE1pID0gKG1pU3RyPzogc3RyaW5nIHwgbnVtYmVyKSA9PiB7XG4gIGlmIChpc0JsYW5rKG1pU3RyKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiBudW1Ub1N0cigrbWlTdHIpICsgJ01pJztcbn07XG5cbmV4cG9ydCBjb25zdCBhZGRVbml0R2kgPSAoZ2lTdHI/OiBzdHJpbmcgfCBudW1iZXIpID0+IHtcbiAgaWYgKGlzQmxhbmsoZ2lTdHIpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgcmV0dXJuIG51bVRvU3RyKCtnaVN0cikgKyAnR2knO1xufTtcblxuY29uc3QgUE9XRVJfTUVNT1JZX1VOSVRTID0gWydLaScsICdNaScsICdHaScsICdUaScsICdQaScsICdFaSddO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXBwcm9wcmlhdGVNZW1vcnkoYmFzZTogbnVtYmVyKSB7XG4gIGxldCB1bml0ID0gLTE7XG4gIHdoaWxlIChiYXNlID49IDgwMCB8fCB1bml0ID49IFBPV0VSX01FTU9SWV9VTklUUy5sZW5ndGggLSAxKSB7XG4gICAgYmFzZSAvPSAxMDI0O1xuICAgIHVuaXQrKztcbiAgfVxuICByZXR1cm4ge1xuICAgIHZhbHVlOiBiYXNlLFxuICAgIHVuaXQ6IFBPV0VSX01FTU9SWV9VTklUU1t1bml0XSxcbiAgfTtcbn1cblxuY29uc3QgcmVnID0gL14oXFxkP1xcLj9cXGQrKShcXHcrKSokLztcblxuZXhwb3J0IGNvbnN0IHBhcnNlVmFsdWVBbmRVbml0ID0gKHN0cjogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IFtfLCB2YWx1ZSwgdW5pdF0gPSAvXihcXGQ/XFwuP1xcZCspKFxcdyspKiQvLmV4ZWMoc3RyKSB8fCBbXTtcbiAgcmV0dXJuIFt2YWx1ZSwgdW5pdF07XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0TWVtb3J5KG1lbTogc3RyaW5nKSB7XG4gIGNvbnN0IGJhc2UgPSBwYXJzZUZsb2F0KG1lbSk7XG4gIGNvbnN0IHJlcyA9IHJlZy5leGVjKG1lbSk7XG4gIGNvbnN0IHVuaXQgPSByZXM/LlsyXTtcbiAgcmV0dXJuIHVuaXQgPyBnZXRNZW1vcnkoYmFzZSwgdW5pdCkgOiBiYXNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWVtb3J5KGJhc2U6IG51bWJlciwgdW5pdDogc3RyaW5nKSB7XG4gIHN3aXRjaCAodW5pdCkge1xuICAgIGNhc2UgJ20nOiB7XG4gICAgICByZXR1cm4gYmFzZSAqIDFlLTM7XG4gICAgfVxuICAgIGNhc2UgJ0snOiB7XG4gICAgICByZXR1cm4gYmFzZSAqIDFlMztcbiAgICB9XG4gICAgY2FzZSAnS2knOiB7XG4gICAgICByZXR1cm4gYmFzZSAqIDEwMjQ7XG4gICAgfVxuICAgIGNhc2UgJ00nOiB7XG4gICAgICByZXR1cm4gYmFzZSAqIDFlNjtcbiAgICB9XG4gICAgY2FzZSAnTWknOiB7XG4gICAgICByZXR1cm4gYmFzZSAqIDEwMjQgKiogMjtcbiAgICB9XG4gICAgY2FzZSAnRyc6IHtcbiAgICAgIHJldHVybiBiYXNlICogMWU5O1xuICAgIH1cbiAgICBjYXNlICdHaSc6IHtcbiAgICAgIHJldHVybiBiYXNlICogMTAyNCAqKiAzO1xuICAgIH1cbiAgICBjYXNlICdUJzoge1xuICAgICAgcmV0dXJuIGJhc2UgKiAxZTEyO1xuICAgIH1cbiAgICBjYXNlICdUaSc6IHtcbiAgICAgIHJldHVybiBiYXNlICogMTAyNCAqKiA0O1xuICAgIH1cbiAgICBjYXNlICdQJzoge1xuICAgICAgcmV0dXJuIGJhc2UgKiAxZTE1O1xuICAgIH1cbiAgICBjYXNlICdQaSc6IHtcbiAgICAgIHJldHVybiBiYXNlICogMTAyNCAqKiA1O1xuICAgIH1cbiAgICBjYXNlICdFJzoge1xuICAgICAgcmV0dXJuIGJhc2UgKiAxZTE4O1xuICAgIH1cbiAgICBjYXNlICdFaSc6IHtcbiAgICAgIHJldHVybiBiYXNlICogMTAyNCAqKiA2O1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICByZXR1cm4gYmFzZTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENwdShiYXNlOiBudW1iZXIsIHVuaXQ6IHN0cmluZykge1xuICBzd2l0Y2ggKHVuaXQpIHtcbiAgICBjYXNlICdtJzoge1xuICAgICAgcmV0dXJuIGJhc2U7XG4gICAgfVxuICAgIGNhc2UgJ2MnOiB7XG4gICAgICByZXR1cm4gYmFzZSAqIDFlMztcbiAgICB9XG4gICAgY2FzZSAnayc6IHtcbiAgICAgIHJldHVybiBiYXNlICogMWU2O1xuICAgIH1cbiAgICBjYXNlICdNJzoge1xuICAgICAgcmV0dXJuIGJhc2UgKiAxZTk7XG4gICAgfVxuICAgIGNhc2UgJ0cnOiB7XG4gICAgICByZXR1cm4gYmFzZSAqIDFlMTI7XG4gICAgfVxuICAgIGNhc2UgJ1QnOiB7XG4gICAgICByZXR1cm4gYmFzZSAqIDFlMTU7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHJldHVybiBiYXNlICogMWUzO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0Q1BVKGNwdTogc3RyaW5nKSB7XG4gIGNvbnN0IGJhc2UgPSBwYXJzZUZsb2F0KGNwdSk7XG4gIGNvbnN0IHJlcyA9IHJlZy5leGVjKGNwdSk7XG4gIGNvbnN0IHVuaXQgPSByZXM/LlsyXTtcbiAgcmV0dXJuIGdldENwdShiYXNlLCB1bml0KTtcbn1cbiJdfQ==
@@ -0,0 +1,76 @@
1
+ /**
2
+ * 基于相对严格的版本号规则,规范可以参考https://semver.org/
3
+ * 但在比较版本号时使用相对宽松的规则,具体可以查看compare-versions库的实现
4
+ * 自测用例:https://stackblitz.com/edit/typescript-jqszbj
5
+ */
6
+ import { compare } from 'compare-versions';
7
+ export { compareVersions as compareVersionToNum, satisfies as satisfiesVersion, } from 'compare-versions';
8
+ export const versionRegex = /^(\d+)\.(\d+)\.(\d+)(?:-([\da-z-]+(?:\.[\da-z-]+)*))?$/;
9
+ const removeFirstV = (version) => {
10
+ version = version.trim();
11
+ if (/^v\d/.test(version)) {
12
+ version = version.slice(1);
13
+ }
14
+ return version;
15
+ };
16
+ /**
17
+ * 获取有效的版本号,如果符合规范则返回,否则返回null
18
+ * eg: getValidVersion('v1.2.3') // '1.2.3'
19
+ */
20
+ export const getValidVersion = (version) => {
21
+ version = removeFirstV(version);
22
+ return versionRegex.test(version) ? version : null;
23
+ };
24
+ /**
25
+ * 解析版本号,如果符合规范则返回一个包含版本信息的对象
26
+ */
27
+ export const parseVersion = (version) => {
28
+ version = removeFirstV(version);
29
+ const match = version.match(versionRegex);
30
+ if (match?.length) {
31
+ return {
32
+ version: match[0],
33
+ major: +match[1],
34
+ minor: +match[2],
35
+ patch: +match[3],
36
+ prerelease: match[4]?.split('.').map(str => {
37
+ if (/^\d*$/.test(str)) {
38
+ return +str;
39
+ }
40
+ return str;
41
+ }) || [],
42
+ };
43
+ }
44
+ };
45
+ const _getCompare = (operator) => (v1, v2) => compare(v1, v2, operator);
46
+ /**
47
+ * 使用给定规则比较两个版本
48
+ * lt: v1小于v2; gt: v1大于v2; lte: v1小于等于v2; gte: v1大于等于v2;
49
+ * eg: compareVersion.lt('1.2.3', '9.8.7') // true
50
+ * compareVersion.cmp('1.2.3', '9.8.7', '<') // true
51
+ */
52
+ export const compareVersion = {
53
+ lt: _getCompare('<'),
54
+ gt: _getCompare('>'),
55
+ eq: _getCompare('='),
56
+ lte: _getCompare('<='),
57
+ gte: _getCompare('>='),
58
+ cmp: compare,
59
+ };
60
+ // 允许使用宽松的版本号进行 minor 版本比较
61
+ export const compareMinorVersion = (v1, v2) => {
62
+ const v1Arr = v1.split('.').map(v => parseInt(v));
63
+ const v2Arr = v2.split('.').map(v => parseInt(v));
64
+ for (let i = 0; i < 2; i++) {
65
+ const v1Part = v1Arr[i] || 0;
66
+ const v2Part = v2Arr[i] || 0;
67
+ if (v1Part > v2Part) {
68
+ return 1;
69
+ }
70
+ if (v1Part < v2Part) {
71
+ return -1;
72
+ }
73
+ }
74
+ return 0;
75
+ };
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvZHluYW1pYy1wbHVnaW4tc2hhcmVkL3NyYy91dGlscy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxPQUFPLEVBQUUsT0FBTyxFQUFtQixNQUFNLGtCQUFrQixDQUFDO0FBRTVELE9BQU8sRUFFTCxlQUFlLElBQUksbUJBQW1CLEVBQ3RDLFNBQVMsSUFBSSxnQkFBZ0IsR0FDOUIsTUFBTSxrQkFBa0IsQ0FBQztBQVUxQixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQ3ZCLHdEQUF3RCxDQUFDO0FBRTNELE1BQU0sWUFBWSxHQUFHLENBQUMsT0FBZSxFQUFFLEVBQUU7SUFDdkMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN6QixJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUN6QixPQUFPLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBQ0QsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQyxDQUFDO0FBQ0Y7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQUMsT0FBZSxFQUFVLEVBQUU7SUFDekQsT0FBTyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoQyxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ3JELENBQUMsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsT0FBZSxFQUFpQixFQUFFO0lBQzdELE9BQU8sR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaEMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUMxQyxJQUFJLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUNsQixPQUFPO1lBQ0wsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDakIsS0FBSyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNoQixLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ2hCLEtBQUssRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDaEIsVUFBVSxFQUNSLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUM3QixJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDdEIsT0FBTyxDQUFDLEdBQUcsQ0FBQztnQkFDZCxDQUFDO2dCQUNELE9BQU8sR0FBRyxDQUFDO1lBQ2IsQ0FBQyxDQUFDLElBQUksRUFBRTtTQUNYLENBQUM7SUFDSixDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsTUFBTSxXQUFXLEdBQ2YsQ0FBQyxRQUF5QixFQUFFLEVBQUUsQ0FDOUIsQ0FBQyxFQUFVLEVBQUUsRUFBVSxFQUFXLEVBQUUsQ0FDbEMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDOUI7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDNUIsRUFBRSxFQUFFLFdBQVcsQ0FBQyxHQUFHLENBQUM7SUFDcEIsRUFBRSxFQUFFLFdBQVcsQ0FBQyxHQUFHLENBQUM7SUFDcEIsRUFBRSxFQUFFLFdBQVcsQ0FBQyxHQUFHLENBQUM7SUFDcEIsR0FBRyxFQUFFLFdBQVcsQ0FBQyxJQUFJLENBQUM7SUFDdEIsR0FBRyxFQUFFLFdBQVcsQ0FBQyxJQUFJLENBQUM7SUFDdEIsR0FBRyxFQUFFLE9BQU87Q0FDYixDQUFDO0FBRUYsMEJBQTBCO0FBQzFCLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsRUFBVSxFQUFFLEVBQVUsRUFBRSxFQUFFO0lBQzVELE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEQsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDM0IsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLElBQUksTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDO1lBQ3BCLE9BQU8sQ0FBQyxDQUFDO1FBQ1gsQ0FBQztRQUNELElBQUksTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDO1lBQ3BCLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDWixDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sQ0FBQyxDQUFDO0FBQ1gsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiDln7rkuo7nm7jlr7nkuKXmoLznmoTniYjmnKzlj7fop4TliJnvvIzop4TojIPlj6/ku6Xlj4LogINodHRwczovL3NlbXZlci5vcmcvXG4gKiDkvYblnKjmr5TovoPniYjmnKzlj7fml7bkvb/nlKjnm7jlr7nlrr3mnb7nmoTop4TliJnvvIzlhbfkvZPlj6/ku6Xmn6XnnItjb21wYXJlLXZlcnNpb25z5bqT55qE5a6e546wXG4gKiDoh6rmtYvnlKjkvovvvJpodHRwczovL3N0YWNrYmxpdHouY29tL2VkaXQvdHlwZXNjcmlwdC1qcXN6YmpcbiAqL1xuXG5pbXBvcnQgeyBjb21wYXJlLCBDb21wYXJlT3BlcmF0b3IgfSBmcm9tICdjb21wYXJlLXZlcnNpb25zJztcblxuZXhwb3J0IHtcbiAgQ29tcGFyZU9wZXJhdG9yIGFzIFZlcnNpb25Db21wYXJlT3BlcmF0b3IsXG4gIGNvbXBhcmVWZXJzaW9ucyBhcyBjb21wYXJlVmVyc2lvblRvTnVtLFxuICBzYXRpc2ZpZXMgYXMgc2F0aXNmaWVzVmVyc2lvbixcbn0gZnJvbSAnY29tcGFyZS12ZXJzaW9ucyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmVyc2lvbk9iamVjdCB7XG4gIHZlcnNpb246IHN0cmluZztcbiAgbWFqb3I6IG51bWJlcjtcbiAgbWlub3I6IG51bWJlcjtcbiAgcGF0Y2g6IG51bWJlcjtcbiAgcHJlcmVsZWFzZT86IEFycmF5PG51bWJlciB8IHN0cmluZz47XG59XG5cbmV4cG9ydCBjb25zdCB2ZXJzaW9uUmVnZXggPVxuICAvXihcXGQrKVxcLihcXGQrKVxcLihcXGQrKSg/Oi0oW1xcZGEtei1dKyg/OlxcLltcXGRhLXotXSspKikpPyQvO1xuXG5jb25zdCByZW1vdmVGaXJzdFYgPSAodmVyc2lvbjogc3RyaW5nKSA9PiB7XG4gIHZlcnNpb24gPSB2ZXJzaW9uLnRyaW0oKTtcbiAgaWYgKC9edlxcZC8udGVzdCh2ZXJzaW9uKSkge1xuICAgIHZlcnNpb24gPSB2ZXJzaW9uLnNsaWNlKDEpO1xuICB9XG4gIHJldHVybiB2ZXJzaW9uO1xufTtcbi8qKlxuICog6I635Y+W5pyJ5pWI55qE54mI5pys5Y+377yM5aaC5p6c56ym5ZCI6KeE6IyD5YiZ6L+U5Zue77yM5ZCm5YiZ6L+U5ZuebnVsbFxuICogZWc6IGdldFZhbGlkVmVyc2lvbigndjEuMi4zJykgLy8gJzEuMi4zJ1xuICovXG5leHBvcnQgY29uc3QgZ2V0VmFsaWRWZXJzaW9uID0gKHZlcnNpb246IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHZlcnNpb24gPSByZW1vdmVGaXJzdFYodmVyc2lvbik7XG4gIHJldHVybiB2ZXJzaW9uUmVnZXgudGVzdCh2ZXJzaW9uKSA/IHZlcnNpb24gOiBudWxsO1xufTtcblxuLyoqXG4gKiDop6PmnpDniYjmnKzlj7fvvIzlpoLmnpznrKblkIjop4TojIPliJnov5Tlm57kuIDkuKrljIXlkKvniYjmnKzkv6Hmga/nmoTlr7nosaFcbiAqL1xuZXhwb3J0IGNvbnN0IHBhcnNlVmVyc2lvbiA9ICh2ZXJzaW9uOiBzdHJpbmcpOiBWZXJzaW9uT2JqZWN0ID0+IHtcbiAgdmVyc2lvbiA9IHJlbW92ZUZpcnN0Vih2ZXJzaW9uKTtcbiAgY29uc3QgbWF0Y2ggPSB2ZXJzaW9uLm1hdGNoKHZlcnNpb25SZWdleCk7XG4gIGlmIChtYXRjaD8ubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHZlcnNpb246IG1hdGNoWzBdLFxuICAgICAgbWFqb3I6ICttYXRjaFsxXSxcbiAgICAgIG1pbm9yOiArbWF0Y2hbMl0sXG4gICAgICBwYXRjaDogK21hdGNoWzNdLFxuICAgICAgcHJlcmVsZWFzZTpcbiAgICAgICAgbWF0Y2hbNF0/LnNwbGl0KCcuJykubWFwKHN0ciA9PiB7XG4gICAgICAgICAgaWYgKC9eXFxkKiQvLnRlc3Qoc3RyKSkge1xuICAgICAgICAgICAgcmV0dXJuICtzdHI7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBzdHI7XG4gICAgICAgIH0pIHx8IFtdLFxuICAgIH07XG4gIH1cbn07XG5cbmNvbnN0IF9nZXRDb21wYXJlID1cbiAgKG9wZXJhdG9yOiBDb21wYXJlT3BlcmF0b3IpID0+XG4gICh2MTogc3RyaW5nLCB2Mjogc3RyaW5nKTogYm9vbGVhbiA9PlxuICAgIGNvbXBhcmUodjEsIHYyLCBvcGVyYXRvcik7XG4vKipcbiAqIOS9v+eUqOe7meWumuinhOWImeavlOi+g+S4pOS4queJiOacrFxuICogbHQ6IHYx5bCP5LqOdjI7ICBndDogdjHlpKfkuo52MjsgIGx0ZTogdjHlsI/kuo7nrYnkuo52MjsgIGd0ZTogdjHlpKfkuo7nrYnkuo52MjtcbiAqIGVnOiBjb21wYXJlVmVyc2lvbi5sdCgnMS4yLjMnLCAnOS44LjcnKSAvLyB0cnVlXG4gKiAgICAgY29tcGFyZVZlcnNpb24uY21wKCcxLjIuMycsICc5LjguNycsICc8JykgLy8gdHJ1ZVxuICovXG5leHBvcnQgY29uc3QgY29tcGFyZVZlcnNpb24gPSB7XG4gIGx0OiBfZ2V0Q29tcGFyZSgnPCcpLFxuICBndDogX2dldENvbXBhcmUoJz4nKSxcbiAgZXE6IF9nZXRDb21wYXJlKCc9JyksXG4gIGx0ZTogX2dldENvbXBhcmUoJzw9JyksXG4gIGd0ZTogX2dldENvbXBhcmUoJz49JyksXG4gIGNtcDogY29tcGFyZSxcbn07XG5cbi8vIOWFgeiuuOS9v+eUqOWuveadvueahOeJiOacrOWPt+i/m+ihjCBtaW5vciDniYjmnKzmr5TovoNcbmV4cG9ydCBjb25zdCBjb21wYXJlTWlub3JWZXJzaW9uID0gKHYxOiBzdHJpbmcsIHYyOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgdjFBcnIgPSB2MS5zcGxpdCgnLicpLm1hcCh2ID0+IHBhcnNlSW50KHYpKTtcbiAgY29uc3QgdjJBcnIgPSB2Mi5zcGxpdCgnLicpLm1hcCh2ID0+IHBhcnNlSW50KHYpKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCAyOyBpKyspIHtcbiAgICBjb25zdCB2MVBhcnQgPSB2MUFycltpXSB8fCAwO1xuICAgIGNvbnN0IHYyUGFydCA9IHYyQXJyW2ldIHx8IDA7XG4gICAgaWYgKHYxUGFydCA+IHYyUGFydCkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIGlmICh2MVBhcnQgPCB2MlBhcnQpIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIDA7XG59O1xuIl19
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @packageDocumentation
3
+ * @module utils
4
+ */
5
+ import { of, catchError, map, startWith } from 'rxjs';
6
+ export function withLoadState(input, defaultValue = null) {
7
+ return input.pipe(map(data => ({
8
+ loading: false,
9
+ data,
10
+ error: null,
11
+ })), startWith({
12
+ loading: true,
13
+ data: defaultValue,
14
+ error: null,
15
+ }), catchError(error => of({
16
+ loading: false,
17
+ data: defaultValue,
18
+ error,
19
+ })));
20
+ }
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1sb2FkLXN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9keW5hbWljLXBsdWdpbi1zaGFyZWQvc3JjL3V0aWxzL3dpdGgtbG9hZC1zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxPQUFPLEVBQWMsRUFBRSxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBUWxFLE1BQU0sVUFBVSxhQUFhLENBQzNCLEtBQW9CLEVBQ3BCLGVBQWtCLElBQUk7SUFFdEIsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUNmLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDWCxPQUFPLEVBQUUsS0FBSztRQUNkLElBQUk7UUFDSixLQUFLLEVBQUUsSUFBSTtLQUNaLENBQUMsQ0FBQyxFQUNILFNBQVMsQ0FBQztRQUNSLE9BQU8sRUFBRSxJQUFJO1FBQ2IsSUFBSSxFQUFFLFlBQVk7UUFDbEIsS0FBSyxFQUFFLElBQUk7S0FDWixDQUFDLEVBQ0YsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQ2pCLEVBQUUsQ0FBQztRQUNELE9BQU8sRUFBRSxLQUFLO1FBQ2QsSUFBSSxFQUFFLFlBQVk7UUFDbEIsS0FBSztLQUNOLENBQUMsQ0FDSCxDQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqIEBtb2R1bGUgdXRpbHNcbiAqL1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgY2F0Y2hFcnJvciwgbWFwLCBzdGFydFdpdGggfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGludGVyZmFjZSBXaXRoTG9hZFN0YXRlPFQsIEUgPSB1bmtub3duPiB7XG4gIGxvYWRpbmc6IGJvb2xlYW47XG4gIGRhdGE6IFQ7XG4gIGVycm9yOiBFO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd2l0aExvYWRTdGF0ZTxUPihcbiAgaW5wdXQ6IE9ic2VydmFibGU8VD4sXG4gIGRlZmF1bHRWYWx1ZTogVCA9IG51bGwsXG4pOiBPYnNlcnZhYmxlPFdpdGhMb2FkU3RhdGU8VD4+IHtcbiAgcmV0dXJuIGlucHV0LnBpcGUoXG4gICAgbWFwKGRhdGEgPT4gKHtcbiAgICAgIGxvYWRpbmc6IGZhbHNlLFxuICAgICAgZGF0YSxcbiAgICAgIGVycm9yOiBudWxsLFxuICAgIH0pKSxcbiAgICBzdGFydFdpdGgoe1xuICAgICAgbG9hZGluZzogdHJ1ZSxcbiAgICAgIGRhdGE6IGRlZmF1bHRWYWx1ZSxcbiAgICAgIGVycm9yOiBudWxsLFxuICAgIH0pLFxuICAgIGNhdGNoRXJyb3IoZXJyb3IgPT5cbiAgICAgIG9mKHtcbiAgICAgICAgbG9hZGluZzogZmFsc2UsXG4gICAgICAgIGRhdGE6IGRlZmF1bHRWYWx1ZSxcbiAgICAgICAgZXJyb3IsXG4gICAgICB9KSxcbiAgICApLFxuICApO1xufVxuIl19
@@ -0,0 +1,183 @@
1
+ import { get } from 'lodash-es';
2
+ import { GenericStatusColor, GenericStatusIcon, } from '../constants/status-icons';
3
+ export var WorkloadKind;
4
+ (function (WorkloadKind) {
5
+ WorkloadKind["Deployment"] = "Deployment";
6
+ WorkloadKind["StatefulSet"] = "StatefulSet";
7
+ WorkloadKind["DaemonSet"] = "DaemonSet";
8
+ })(WorkloadKind || (WorkloadKind = {}));
9
+ export var JobStatusEnum;
10
+ (function (JobStatusEnum) {
11
+ JobStatusEnum["EXECUTING"] = "executing";
12
+ JobStatusEnum["EXECUTE_SUCCEEDED"] = "execute_succeeded";
13
+ JobStatusEnum["EXECUTE_FAILED"] = "execute_failed";
14
+ JobStatusEnum["UNKNOWN"] = "unknown";
15
+ })(JobStatusEnum || (JobStatusEnum = {}));
16
+ export const JobStatusColorMapper = {
17
+ [JobStatusEnum.EXECUTING]: GenericStatusColor.Pending,
18
+ [JobStatusEnum.EXECUTE_SUCCEEDED]: GenericStatusColor.Succeeded,
19
+ [JobStatusEnum.EXECUTE_FAILED]: GenericStatusColor.Failed,
20
+ [JobStatusEnum.UNKNOWN]: GenericStatusColor.Empty,
21
+ };
22
+ export const JobStatusIconMapper = {
23
+ [JobStatusEnum.EXECUTING]: GenericStatusIcon.Pending,
24
+ [JobStatusEnum.EXECUTE_SUCCEEDED]: GenericStatusIcon.Check,
25
+ [JobStatusEnum.EXECUTE_FAILED]: GenericStatusIcon.Error,
26
+ [JobStatusEnum.UNKNOWN]: GenericStatusIcon.Question,
27
+ };
28
+ export var WorkloadStatusEnum;
29
+ (function (WorkloadStatusEnum) {
30
+ WorkloadStatusEnum["running"] = "running";
31
+ WorkloadStatusEnum["stopped"] = "stopped";
32
+ WorkloadStatusEnum["pending"] = "pending";
33
+ WorkloadStatusEnum["killed"] = "killed";
34
+ })(WorkloadStatusEnum || (WorkloadStatusEnum = {}));
35
+ export const WorkloadStatusColorMapper = {
36
+ [WorkloadStatusEnum.running]: GenericStatusColor.Running,
37
+ [WorkloadStatusEnum.pending]: GenericStatusColor.Pending,
38
+ [WorkloadStatusEnum.stopped]: GenericStatusColor.Stopped,
39
+ [WorkloadStatusEnum.killed]: GenericStatusColor.Stopped,
40
+ };
41
+ export const WorkloadStatusIconMapper = {
42
+ [WorkloadStatusEnum.running]: GenericStatusIcon.Running,
43
+ [WorkloadStatusEnum.pending]: GenericStatusIcon.Pending,
44
+ [WorkloadStatusEnum.stopped]: GenericStatusIcon.Stopped,
45
+ [WorkloadStatusEnum.killed]: GenericStatusIcon.Stopped,
46
+ };
47
+ export const STATUS = 'status';
48
+ export function parseDeploymentStatus(res) {
49
+ const status = res.status;
50
+ if (larger(res.spec.replicas, 0) &&
51
+ equal(status.updatedReplicas, res.spec.replicas) &&
52
+ equal(status.replicas, res.spec.replicas) &&
53
+ equal(status.availableReplicas, res.spec.replicas) &&
54
+ largerEqual(status.observedGeneration, res.metadata.generation)) {
55
+ return WorkloadStatusEnum.running;
56
+ }
57
+ if (equal(res.spec.replicas, 0) &&
58
+ equal(status.replicas, res.spec.replicas) &&
59
+ equal(status.updatedReplicas, res.spec.replicas) &&
60
+ equal(status.availableReplicas, res.spec.replicas) &&
61
+ largerEqual(status.observedGeneration, res.metadata.generation)) {
62
+ return WorkloadStatusEnum.stopped;
63
+ }
64
+ return WorkloadStatusEnum.pending;
65
+ }
66
+ export function parseDaemonSetStatus(res) {
67
+ const status = res.status;
68
+ if (larger(status.desiredNumberScheduled, 0) &&
69
+ largerEqual(status.observedGeneration, res.metadata.generation) &&
70
+ equal(status.desiredNumberScheduled, status.currentNumberScheduled) &&
71
+ equal(status.numberReady, status.desiredNumberScheduled) &&
72
+ equal(status.numberAvailable, status.desiredNumberScheduled) &&
73
+ (res.spec.updateStrategy.type !== 'RollingUpdate' ||
74
+ equal(status.updatedNumberScheduled, status.desiredNumberScheduled))) {
75
+ return WorkloadStatusEnum.running;
76
+ }
77
+ if (equal(status.desiredNumberScheduled, 0) &&
78
+ largerEqual(status.observedGeneration, res.metadata.generation) &&
79
+ equal(status.desiredNumberScheduled, status.desiredNumberScheduled) &&
80
+ equal(status.numberReady, status.desiredNumberScheduled) &&
81
+ equal(status.numberAvailable, status.desiredNumberScheduled) &&
82
+ equal(status.currentNumberScheduled, status.desiredNumberScheduled) &&
83
+ (res.spec.updateStrategy.type !== 'RollingUpdate' ||
84
+ equal(status.updatedNumberScheduled, status.desiredNumberScheduled))) {
85
+ return WorkloadStatusEnum.stopped;
86
+ }
87
+ return WorkloadStatusEnum.pending;
88
+ }
89
+ export function parseStatefulSetStatus(res) {
90
+ const status = res.status;
91
+ if (larger(res.spec.replicas, 0) &&
92
+ equal(status.replicas, res.spec.replicas) &&
93
+ equal(status.readyReplicas, res.spec.replicas) &&
94
+ largerEqual(status.observedGeneration, res.metadata.generation) &&
95
+ (res.spec.updateStrategy.type !== 'RollingUpdate' ||
96
+ (equal(status.currentRevision, status.updateRevision)
97
+ ? equal(status.currentReplicas, res.spec.replicas)
98
+ : largerEqual(status?.updatedReplicas, status.replicas - +res.spec.updateStrategy.rollingUpdate?.partition)))) {
99
+ return WorkloadStatusEnum.running;
100
+ }
101
+ if (equal(res.spec.replicas, 0) &&
102
+ equal(status.replicas, res.spec.replicas) &&
103
+ equal(status.readyReplicas, res.spec.replicas) &&
104
+ largerEqual(status.observedGeneration, res.metadata.generation) &&
105
+ (res.spec.updateStrategy.type !== 'RollingUpdate' ||
106
+ (equal(status.currentRevision, status.updateRevision) &&
107
+ equal(status.currentReplicas, res.spec.replicas)))) {
108
+ return WorkloadStatusEnum.stopped;
109
+ }
110
+ return WorkloadStatusEnum.pending;
111
+ }
112
+ export function parseToWorkloadStatus(data) {
113
+ switch (data?.kind) {
114
+ case WorkloadKind.Deployment: {
115
+ return {
116
+ status: parseDeploymentStatus(data),
117
+ desired: get(data, ['spec', 'replicas'], 0),
118
+ current: get(data, [STATUS, 'availableReplicas'], 0),
119
+ };
120
+ }
121
+ case WorkloadKind.DaemonSet: {
122
+ return {
123
+ status: parseDaemonSetStatus(data),
124
+ desired: get(data, [STATUS, 'desiredNumberScheduled'], 0),
125
+ current: get(data, [STATUS, 'numberReady'], 0),
126
+ };
127
+ }
128
+ case WorkloadKind.StatefulSet: {
129
+ return {
130
+ status: parseStatefulSetStatus(data),
131
+ desired: get(data, ['spec', 'replicas'], 0),
132
+ current: get(data, [STATUS, 'readyReplicas'], 0),
133
+ };
134
+ }
135
+ default: {
136
+ return {
137
+ status: WorkloadStatusEnum.stopped,
138
+ desired: 0,
139
+ current: 0,
140
+ };
141
+ }
142
+ }
143
+ }
144
+ function equal(x, y) {
145
+ return defaultZero(x) === defaultZero(y);
146
+ }
147
+ function largerEqual(x, y) {
148
+ return defaultZero(x) >= defaultZero(y);
149
+ }
150
+ function larger(x, y) {
151
+ return defaultZero(x) > defaultZero(y);
152
+ }
153
+ function defaultZero(x) {
154
+ return x || 0;
155
+ }
156
+ export function getJobStatus(data) {
157
+ const status = data.status;
158
+ if (status.conditions?.some(_item => _item.type === 'Failed')) {
159
+ return JobStatusEnum.EXECUTE_FAILED;
160
+ }
161
+ // when Complete and succeeded, judge to execute_succeeded
162
+ if (status.conditions?.some(_item => _item.type === 'Complete')) {
163
+ if (status.succeeded) {
164
+ return JobStatusEnum.EXECUTE_SUCCEEDED;
165
+ }
166
+ if (status.failed) {
167
+ return JobStatusEnum.EXECUTE_FAILED;
168
+ }
169
+ }
170
+ // no condition and no Complete when running
171
+ if (status.active) {
172
+ return JobStatusEnum.EXECUTING;
173
+ }
174
+ return JobStatusEnum.UNKNOWN;
175
+ }
176
+ export function getWorkloadStatus(status) {
177
+ return status.status.toLowerCase();
178
+ }
179
+ export function getPodIPs(pod) {
180
+ const podIPs = pod.status.podIPs?.map(({ ip }) => ip);
181
+ return podIPs?.length ? podIPs : [pod.status.podIP].filter(Boolean);
182
+ }
183
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2xvYWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2R5bmFtaWMtcGx1Z2luLXNoYXJlZC9zcmMvdXRpbHMvd29ya2xvYWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVoQyxPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLGlCQUFpQixHQUNsQixNQUFNLDJCQUEyQixDQUFDO0FBS25DLE1BQU0sQ0FBTixJQUFZLFlBSVg7QUFKRCxXQUFZLFlBQVk7SUFDdEIseUNBQXlCLENBQUE7SUFDekIsMkNBQTJCLENBQUE7SUFDM0IsdUNBQXVCLENBQUE7QUFDekIsQ0FBQyxFQUpXLFlBQVksS0FBWixZQUFZLFFBSXZCO0FBRUQsTUFBTSxDQUFOLElBQVksYUFLWDtBQUxELFdBQVksYUFBYTtJQUN2Qix3Q0FBdUIsQ0FBQTtJQUN2Qix3REFBdUMsQ0FBQTtJQUN2QyxrREFBaUMsQ0FBQTtJQUNqQyxvQ0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBTFcsYUFBYSxLQUFiLGFBQWEsUUFLeEI7QUFFRCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRztJQUNsQyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsRUFBRSxrQkFBa0IsQ0FBQyxPQUFPO0lBQ3JELENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsa0JBQWtCLENBQUMsU0FBUztJQUMvRCxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsRUFBRSxrQkFBa0IsQ0FBQyxNQUFNO0lBQ3pELENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxFQUFFLGtCQUFrQixDQUFDLEtBQUs7Q0FDbEQsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHO0lBQ2pDLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxFQUFFLGlCQUFpQixDQUFDLE9BQU87SUFDcEQsQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxLQUFLO0lBQzFELENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxFQUFFLGlCQUFpQixDQUFDLEtBQUs7SUFDdkQsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsaUJBQWlCLENBQUMsUUFBUTtDQUNwRCxDQUFDO0FBRUYsTUFBTSxDQUFOLElBQVksa0JBS1g7QUFMRCxXQUFZLGtCQUFrQjtJQUM1Qix5Q0FBbUIsQ0FBQTtJQUNuQix5Q0FBbUIsQ0FBQTtJQUNuQix5Q0FBbUIsQ0FBQTtJQUNuQix1Q0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVBTFcsa0JBQWtCLEtBQWxCLGtCQUFrQixRQUs3QjtBQWtCRCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRztJQUN2QyxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxFQUFFLGtCQUFrQixDQUFDLE9BQU87SUFDeEQsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxrQkFBa0IsQ0FBQyxPQUFPO0lBQ3hELENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLEVBQUUsa0JBQWtCLENBQUMsT0FBTztJQUN4RCxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxFQUFFLGtCQUFrQixDQUFDLE9BQU87Q0FDeEQsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHO0lBQ3RDLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLEVBQUUsaUJBQWlCLENBQUMsT0FBTztJQUN2RCxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxFQUFFLGlCQUFpQixDQUFDLE9BQU87SUFDdkQsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxPQUFPO0lBQ3ZELENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLEVBQUUsaUJBQWlCLENBQUMsT0FBTztDQUN2RCxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQztBQUUvQixNQUFNLFVBQVUscUJBQXFCLENBQUMsR0FBZTtJQUNuRCxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDO0lBQzFCLElBQ0UsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUM1QixLQUFLLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUNoRCxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUN6QyxLQUFLLENBQUMsTUFBTSxDQUFDLGlCQUFpQixFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ2xELFdBQVcsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFDL0QsQ0FBQztRQUNELE9BQU8sa0JBQWtCLENBQUMsT0FBTyxDQUFDO0lBQ3BDLENBQUM7SUFDRCxJQUNFLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDM0IsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDekMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDaEQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUNsRCxXQUFXLENBQUMsTUFBTSxDQUFDLGtCQUFrQixFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQy9ELENBQUM7UUFDRCxPQUFPLGtCQUFrQixDQUFDLE9BQU8sQ0FBQztJQUNwQyxDQUFDO0lBQ0QsT0FBTyxrQkFBa0IsQ0FBQyxPQUFPLENBQUM7QUFDcEMsQ0FBQztBQUVELE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxHQUFjO0lBQ2pELE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUM7SUFDMUIsSUFDRSxNQUFNLENBQUMsTUFBTSxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQztRQUN4QyxXQUFXLENBQUMsTUFBTSxDQUFDLGtCQUFrQixFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO1FBQy9ELEtBQUssQ0FBQyxNQUFNLENBQUMsc0JBQXNCLEVBQUUsTUFBTSxDQUFDLHNCQUFzQixDQUFDO1FBQ25FLEtBQUssQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQztRQUN4RCxLQUFLLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRSxNQUFNLENBQUMsc0JBQXNCLENBQUM7UUFDNUQsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEtBQUssZUFBZTtZQUMvQyxLQUFLLENBQUMsTUFBTSxDQUFDLHNCQUFzQixFQUFFLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLEVBQ3RFLENBQUM7UUFDRCxPQUFPLGtCQUFrQixDQUFDLE9BQU8sQ0FBQztJQUNwQyxDQUFDO0lBQ0QsSUFDRSxLQUFLLENBQUMsTUFBTSxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQztRQUN2QyxXQUFXLENBQUMsTUFBTSxDQUFDLGtCQUFrQixFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO1FBQy9ELEtBQUssQ0FBQyxNQUFNLENBQUMsc0JBQXNCLEVBQUUsTUFBTSxDQUFDLHNCQUFzQixDQUFDO1FBQ25FLEtBQUssQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQztRQUN4RCxLQUFLLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRSxNQUFNLENBQUMsc0JBQXNCLENBQUM7UUFDNUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsRUFBRSxNQUFNLENBQUMsc0JBQXNCLENBQUM7UUFDbkUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEtBQUssZUFBZTtZQUMvQyxLQUFLLENBQUMsTUFBTSxDQUFDLHNCQUFzQixFQUFFLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLEVBQ3RFLENBQUM7UUFDRCxPQUFPLGtCQUFrQixDQUFDLE9BQU8sQ0FBQztJQUNwQyxDQUFDO0lBQ0QsT0FBTyxrQkFBa0IsQ0FBQyxPQUFPLENBQUM7QUFDcEMsQ0FBQztBQUVELE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxHQUFnQjtJQUNyRCxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDO0lBQzFCLElBQ0UsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUM1QixLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUN6QyxLQUFLLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUM5QyxXQUFXLENBQUMsTUFBTSxDQUFDLGtCQUFrQixFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO1FBQy9ELENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxLQUFLLGVBQWU7WUFDL0MsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRSxNQUFNLENBQUMsY0FBYyxDQUFDO2dCQUNuRCxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7Z0JBQ2xELENBQUMsQ0FBQyxXQUFXLENBQ1QsTUFBTSxFQUFFLGVBQWUsRUFDdkIsTUFBTSxDQUFDLFFBQVEsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxTQUFTLENBQ3BFLENBQUMsQ0FBQyxFQUNULENBQUM7UUFDRCxPQUFPLGtCQUFrQixDQUFDLE9BQU8sQ0FBQztJQUNwQyxDQUFDO0lBQ0QsSUFDRSxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzNCLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ3pDLEtBQUssQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQzlDLFdBQVcsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUM7UUFDL0QsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEtBQUssZUFBZTtZQUMvQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLE1BQU0sQ0FBQyxjQUFjLENBQUM7Z0JBQ25ELEtBQUssQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUN0RCxDQUFDO1FBQ0QsT0FBTyxrQkFBa0IsQ0FBQyxPQUFPLENBQUM7SUFDcEMsQ0FBQztJQUNELE9BQU8sa0JBQWtCLENBQUMsT0FBTyxDQUFDO0FBQ3BDLENBQUM7QUFFRCxNQUFNLFVBQVUscUJBQXFCLENBQUMsSUFBZ0I7SUFDcEQsUUFBUSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDbkIsS0FBSyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztZQUM3QixPQUFPO2dCQUNMLE1BQU0sRUFBRSxxQkFBcUIsQ0FBQyxJQUFJLENBQUM7Z0JBQ25DLE9BQU8sRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDM0MsT0FBTyxFQUFFLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEVBQUUsbUJBQW1CLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDckQsQ0FBQztRQUNKLENBQUM7UUFDRCxLQUFLLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQzVCLE9BQU87Z0JBQ0wsTUFBTSxFQUFFLG9CQUFvQixDQUFDLElBQUksQ0FBQztnQkFDbEMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEVBQUUsd0JBQXdCLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3pELE9BQU8sRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUMvQyxDQUFDO1FBQ0osQ0FBQztRQUNELEtBQUssWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDOUIsT0FBTztnQkFDTCxNQUFNLEVBQUUsc0JBQXNCLENBQUMsSUFBSSxDQUFDO2dCQUNwQyxPQUFPLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzNDLE9BQU8sRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUNqRCxDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDUixPQUFPO2dCQUNMLE1BQU0sRUFBRSxrQkFBa0IsQ0FBQyxPQUFPO2dCQUNsQyxPQUFPLEVBQUUsQ0FBQztnQkFDVixPQUFPLEVBQUUsQ0FBQzthQUNYLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFTLEtBQUssQ0FBQyxDQUFrQixFQUFFLENBQWtCO0lBQ25ELE9BQU8sV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzQyxDQUFDO0FBRUQsU0FBUyxXQUFXLENBQUMsQ0FBUyxFQUFFLENBQVM7SUFDdkMsT0FBTyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFDLENBQUM7QUFFRCxTQUFTLE1BQU0sQ0FBQyxDQUFTLEVBQUUsQ0FBUztJQUNsQyxPQUFPLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekMsQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFDLENBQWtCO0lBQ3JDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNoQixDQUFDO0FBRUQsTUFBTSxVQUFVLFlBQVksQ0FBQyxJQUFTO0lBQ3BDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDM0IsSUFBSSxNQUFNLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUM5RCxPQUFPLGFBQWEsQ0FBQyxjQUFjLENBQUM7SUFDdEMsQ0FBQztJQUNELDBEQUEwRDtJQUMxRCxJQUFJLE1BQU0sQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxVQUFVLENBQUMsRUFBRSxDQUFDO1FBQ2hFLElBQUksTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3JCLE9BQU8sYUFBYSxDQUFDLGlCQUFpQixDQUFDO1FBQ3pDLENBQUM7UUFDRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNsQixPQUFPLGFBQWEsQ0FBQyxjQUFjLENBQUM7UUFDdEMsQ0FBQztJQUNILENBQUM7SUFDRCw0Q0FBNEM7SUFDNUMsSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDbEIsT0FBTyxhQUFhLENBQUMsU0FBUyxDQUFDO0lBQ2pDLENBQUM7SUFDRCxPQUFPLGFBQWEsQ0FBQyxPQUFPLENBQUM7QUFDL0IsQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxNQUE2QjtJQUM3RCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUF3QixDQUFDO0FBQzNELENBQUM7QUFFRCxNQUFNLFVBQVUsU0FBUyxDQUFDLEdBQVE7SUFDaEMsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdEQsT0FBTyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDdEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cbmltcG9ydCB7XG4gIEdlbmVyaWNTdGF0dXNDb2xvcixcbiAgR2VuZXJpY1N0YXR1c0ljb24sXG59IGZyb20gJy4uL2NvbnN0YW50cy9zdGF0dXMtaWNvbnMnO1xuaW1wb3J0IHsgRGFlbW9uU2V0LCBEZXBsb3ltZW50LCBKb2IsIFBvZCwgU3RhdGVmdWxTZXQgfSBmcm9tICcuLi90eXBlcyc7XG5cbmV4cG9ydCB0eXBlIFdvcmtsb2FkID0gRGVwbG95bWVudCB8IFN0YXRlZnVsU2V0IHwgRGFlbW9uU2V0O1xuXG5leHBvcnQgZW51bSBXb3JrbG9hZEtpbmQge1xuICBEZXBsb3ltZW50ID0gJ0RlcGxveW1lbnQnLFxuICBTdGF0ZWZ1bFNldCA9ICdTdGF0ZWZ1bFNldCcsXG4gIERhZW1vblNldCA9ICdEYWVtb25TZXQnLFxufVxuXG5leHBvcnQgZW51bSBKb2JTdGF0dXNFbnVtIHtcbiAgRVhFQ1VUSU5HID0gJ2V4ZWN1dGluZycsXG4gIEVYRUNVVEVfU1VDQ0VFREVEID0gJ2V4ZWN1dGVfc3VjY2VlZGVkJyxcbiAgRVhFQ1VURV9GQUlMRUQgPSAnZXhlY3V0ZV9mYWlsZWQnLFxuICBVTktOT1dOID0gJ3Vua25vd24nLCAvLyDmr5TlpoIgbmFtZXNwYWNlIHBvZCDmlbDph4/ovr7liLDpmZDpop3kuIrpmZDvvIzku7vliqHlsLHkvJrlj6rop6blj5HvvIzkvYbmmK/msqHmnInnirbmgIFcbn1cblxuZXhwb3J0IGNvbnN0IEpvYlN0YXR1c0NvbG9yTWFwcGVyID0ge1xuICBbSm9iU3RhdHVzRW51bS5FWEVDVVRJTkddOiBHZW5lcmljU3RhdHVzQ29sb3IuUGVuZGluZyxcbiAgW0pvYlN0YXR1c0VudW0uRVhFQ1VURV9TVUNDRUVERURdOiBHZW5lcmljU3RhdHVzQ29sb3IuU3VjY2VlZGVkLFxuICBbSm9iU3RhdHVzRW51bS5FWEVDVVRFX0ZBSUxFRF06IEdlbmVyaWNTdGF0dXNDb2xvci5GYWlsZWQsXG4gIFtKb2JTdGF0dXNFbnVtLlVOS05PV05dOiBHZW5lcmljU3RhdHVzQ29sb3IuRW1wdHksXG59O1xuXG5leHBvcnQgY29uc3QgSm9iU3RhdHVzSWNvbk1hcHBlciA9IHtcbiAgW0pvYlN0YXR1c0VudW0uRVhFQ1VUSU5HXTogR2VuZXJpY1N0YXR1c0ljb24uUGVuZGluZyxcbiAgW0pvYlN0YXR1c0VudW0uRVhFQ1VURV9TVUNDRUVERURdOiBHZW5lcmljU3RhdHVzSWNvbi5DaGVjayxcbiAgW0pvYlN0YXR1c0VudW0uRVhFQ1VURV9GQUlMRURdOiBHZW5lcmljU3RhdHVzSWNvbi5FcnJvcixcbiAgW0pvYlN0YXR1c0VudW0uVU5LTk9XTl06IEdlbmVyaWNTdGF0dXNJY29uLlF1ZXN0aW9uLFxufTtcblxuZXhwb3J0IGVudW0gV29ya2xvYWRTdGF0dXNFbnVtIHtcbiAgcnVubmluZyA9ICdydW5uaW5nJyxcbiAgc3RvcHBlZCA9ICdzdG9wcGVkJyxcbiAgcGVuZGluZyA9ICdwZW5kaW5nJyxcbiAga2lsbGVkID0gJ2tpbGxlZCcsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2VuZXJpY1dvcmtsb2FkU3RhdHVzIHtcbiAgc3RhdHVzPzogV29ya2xvYWRTdGF0dXNFbnVtO1xuICBkZXNpcmVkPzogbnVtYmVyO1xuICBjdXJyZW50PzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtsb2FkU3RhdHVzIGV4dGVuZHMgR2VuZXJpY1dvcmtsb2FkU3RhdHVzIHtcbiAgbmFtZT86IHN0cmluZztcbiAgZ3JvdXA/OiBzdHJpbmc7XG4gIGtpbmQ/OiBzdHJpbmc7XG4gIG1lc3NhZ2VzPzogQXJyYXk8e1xuICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgICByZWFzb24/OiBzdHJpbmc7XG4gIH0+O1xufVxuXG5leHBvcnQgY29uc3QgV29ya2xvYWRTdGF0dXNDb2xvck1hcHBlciA9IHtcbiAgW1dvcmtsb2FkU3RhdHVzRW51bS5ydW5uaW5nXTogR2VuZXJpY1N0YXR1c0NvbG9yLlJ1bm5pbmcsXG4gIFtXb3JrbG9hZFN0YXR1c0VudW0ucGVuZGluZ106IEdlbmVyaWNTdGF0dXNDb2xvci5QZW5kaW5nLFxuICBbV29ya2xvYWRTdGF0dXNFbnVtLnN0b3BwZWRdOiBHZW5lcmljU3RhdHVzQ29sb3IuU3RvcHBlZCxcbiAgW1dvcmtsb2FkU3RhdHVzRW51bS5raWxsZWRdOiBHZW5lcmljU3RhdHVzQ29sb3IuU3RvcHBlZCxcbn07XG5cbmV4cG9ydCBjb25zdCBXb3JrbG9hZFN0YXR1c0ljb25NYXBwZXIgPSB7XG4gIFtXb3JrbG9hZFN0YXR1c0VudW0ucnVubmluZ106IEdlbmVyaWNTdGF0dXNJY29uLlJ1bm5pbmcsXG4gIFtXb3JrbG9hZFN0YXR1c0VudW0ucGVuZGluZ106IEdlbmVyaWNTdGF0dXNJY29uLlBlbmRpbmcsXG4gIFtXb3JrbG9hZFN0YXR1c0VudW0uc3RvcHBlZF06IEdlbmVyaWNTdGF0dXNJY29uLlN0b3BwZWQsXG4gIFtXb3JrbG9hZFN0YXR1c0VudW0ua2lsbGVkXTogR2VuZXJpY1N0YXR1c0ljb24uU3RvcHBlZCxcbn07XG5cbmV4cG9ydCBjb25zdCBTVEFUVVMgPSAnc3RhdHVzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlRGVwbG95bWVudFN0YXR1cyhyZXM6IERlcGxveW1lbnQpIHtcbiAgY29uc3Qgc3RhdHVzID0gcmVzLnN0YXR1cztcbiAgaWYgKFxuICAgIGxhcmdlcihyZXMuc3BlYy5yZXBsaWNhcywgMCkgJiZcbiAgICBlcXVhbChzdGF0dXMudXBkYXRlZFJlcGxpY2FzLCByZXMuc3BlYy5yZXBsaWNhcykgJiZcbiAgICBlcXVhbChzdGF0dXMucmVwbGljYXMsIHJlcy5zcGVjLnJlcGxpY2FzKSAmJlxuICAgIGVxdWFsKHN0YXR1cy5hdmFpbGFibGVSZXBsaWNhcywgcmVzLnNwZWMucmVwbGljYXMpICYmXG4gICAgbGFyZ2VyRXF1YWwoc3RhdHVzLm9ic2VydmVkR2VuZXJhdGlvbiwgcmVzLm1ldGFkYXRhLmdlbmVyYXRpb24pXG4gICkge1xuICAgIHJldHVybiBXb3JrbG9hZFN0YXR1c0VudW0ucnVubmluZztcbiAgfVxuICBpZiAoXG4gICAgZXF1YWwocmVzLnNwZWMucmVwbGljYXMsIDApICYmXG4gICAgZXF1YWwoc3RhdHVzLnJlcGxpY2FzLCByZXMuc3BlYy5yZXBsaWNhcykgJiZcbiAgICBlcXVhbChzdGF0dXMudXBkYXRlZFJlcGxpY2FzLCByZXMuc3BlYy5yZXBsaWNhcykgJiZcbiAgICBlcXVhbChzdGF0dXMuYXZhaWxhYmxlUmVwbGljYXMsIHJlcy5zcGVjLnJlcGxpY2FzKSAmJlxuICAgIGxhcmdlckVxdWFsKHN0YXR1cy5vYnNlcnZlZEdlbmVyYXRpb24sIHJlcy5tZXRhZGF0YS5nZW5lcmF0aW9uKVxuICApIHtcbiAgICByZXR1cm4gV29ya2xvYWRTdGF0dXNFbnVtLnN0b3BwZWQ7XG4gIH1cbiAgcmV0dXJuIFdvcmtsb2FkU3RhdHVzRW51bS5wZW5kaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VEYWVtb25TZXRTdGF0dXMocmVzOiBEYWVtb25TZXQpIHtcbiAgY29uc3Qgc3RhdHVzID0gcmVzLnN0YXR1cztcbiAgaWYgKFxuICAgIGxhcmdlcihzdGF0dXMuZGVzaXJlZE51bWJlclNjaGVkdWxlZCwgMCkgJiZcbiAgICBsYXJnZXJFcXVhbChzdGF0dXMub2JzZXJ2ZWRHZW5lcmF0aW9uLCByZXMubWV0YWRhdGEuZ2VuZXJhdGlvbikgJiZcbiAgICBlcXVhbChzdGF0dXMuZGVzaXJlZE51bWJlclNjaGVkdWxlZCwgc3RhdHVzLmN1cnJlbnROdW1iZXJTY2hlZHVsZWQpICYmXG4gICAgZXF1YWwoc3RhdHVzLm51bWJlclJlYWR5LCBzdGF0dXMuZGVzaXJlZE51bWJlclNjaGVkdWxlZCkgJiZcbiAgICBlcXVhbChzdGF0dXMubnVtYmVyQXZhaWxhYmxlLCBzdGF0dXMuZGVzaXJlZE51bWJlclNjaGVkdWxlZCkgJiZcbiAgICAocmVzLnNwZWMudXBkYXRlU3RyYXRlZ3kudHlwZSAhPT0gJ1JvbGxpbmdVcGRhdGUnIHx8XG4gICAgICBlcXVhbChzdGF0dXMudXBkYXRlZE51bWJlclNjaGVkdWxlZCwgc3RhdHVzLmRlc2lyZWROdW1iZXJTY2hlZHVsZWQpKVxuICApIHtcbiAgICByZXR1cm4gV29ya2xvYWRTdGF0dXNFbnVtLnJ1bm5pbmc7XG4gIH1cbiAgaWYgKFxuICAgIGVxdWFsKHN0YXR1cy5kZXNpcmVkTnVtYmVyU2NoZWR1bGVkLCAwKSAmJlxuICAgIGxhcmdlckVxdWFsKHN0YXR1cy5vYnNlcnZlZEdlbmVyYXRpb24sIHJlcy5tZXRhZGF0YS5nZW5lcmF0aW9uKSAmJlxuICAgIGVxdWFsKHN0YXR1cy5kZXNpcmVkTnVtYmVyU2NoZWR1bGVkLCBzdGF0dXMuZGVzaXJlZE51bWJlclNjaGVkdWxlZCkgJiZcbiAgICBlcXVhbChzdGF0dXMubnVtYmVyUmVhZHksIHN0YXR1cy5kZXNpcmVkTnVtYmVyU2NoZWR1bGVkKSAmJlxuICAgIGVxdWFsKHN0YXR1cy5udW1iZXJBdmFpbGFibGUsIHN0YXR1cy5kZXNpcmVkTnVtYmVyU2NoZWR1bGVkKSAmJlxuICAgIGVxdWFsKHN0YXR1cy5jdXJyZW50TnVtYmVyU2NoZWR1bGVkLCBzdGF0dXMuZGVzaXJlZE51bWJlclNjaGVkdWxlZCkgJiZcbiAgICAocmVzLnNwZWMudXBkYXRlU3RyYXRlZ3kudHlwZSAhPT0gJ1JvbGxpbmdVcGRhdGUnIHx8XG4gICAgICBlcXVhbChzdGF0dXMudXBkYXRlZE51bWJlclNjaGVkdWxlZCwgc3RhdHVzLmRlc2lyZWROdW1iZXJTY2hlZHVsZWQpKVxuICApIHtcbiAgICByZXR1cm4gV29ya2xvYWRTdGF0dXNFbnVtLnN0b3BwZWQ7XG4gIH1cbiAgcmV0dXJuIFdvcmtsb2FkU3RhdHVzRW51bS5wZW5kaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VTdGF0ZWZ1bFNldFN0YXR1cyhyZXM6IFN0YXRlZnVsU2V0KSB7XG4gIGNvbnN0IHN0YXR1cyA9IHJlcy5zdGF0dXM7XG4gIGlmIChcbiAgICBsYXJnZXIocmVzLnNwZWMucmVwbGljYXMsIDApICYmXG4gICAgZXF1YWwoc3RhdHVzLnJlcGxpY2FzLCByZXMuc3BlYy5yZXBsaWNhcykgJiZcbiAgICBlcXVhbChzdGF0dXMucmVhZHlSZXBsaWNhcywgcmVzLnNwZWMucmVwbGljYXMpICYmXG4gICAgbGFyZ2VyRXF1YWwoc3RhdHVzLm9ic2VydmVkR2VuZXJhdGlvbiwgcmVzLm1ldGFkYXRhLmdlbmVyYXRpb24pICYmXG4gICAgKHJlcy5zcGVjLnVwZGF0ZVN0cmF0ZWd5LnR5cGUgIT09ICdSb2xsaW5nVXBkYXRlJyB8fFxuICAgICAgKGVxdWFsKHN0YXR1cy5jdXJyZW50UmV2aXNpb24sIHN0YXR1cy51cGRhdGVSZXZpc2lvbilcbiAgICAgICAgPyBlcXVhbChzdGF0dXMuY3VycmVudFJlcGxpY2FzLCByZXMuc3BlYy5yZXBsaWNhcylcbiAgICAgICAgOiBsYXJnZXJFcXVhbChcbiAgICAgICAgICAgIHN0YXR1cz8udXBkYXRlZFJlcGxpY2FzLFxuICAgICAgICAgICAgc3RhdHVzLnJlcGxpY2FzIC0gK3Jlcy5zcGVjLnVwZGF0ZVN0cmF0ZWd5LnJvbGxpbmdVcGRhdGU/LnBhcnRpdGlvbixcbiAgICAgICAgICApKSlcbiAgKSB7XG4gICAgcmV0dXJuIFdvcmtsb2FkU3RhdHVzRW51bS5ydW5uaW5nO1xuICB9XG4gIGlmIChcbiAgICBlcXVhbChyZXMuc3BlYy5yZXBsaWNhcywgMCkgJiZcbiAgICBlcXVhbChzdGF0dXMucmVwbGljYXMsIHJlcy5zcGVjLnJlcGxpY2FzKSAmJlxuICAgIGVxdWFsKHN0YXR1cy5yZWFkeVJlcGxpY2FzLCByZXMuc3BlYy5yZXBsaWNhcykgJiZcbiAgICBsYXJnZXJFcXVhbChzdGF0dXMub2JzZXJ2ZWRHZW5lcmF0aW9uLCByZXMubWV0YWRhdGEuZ2VuZXJhdGlvbikgJiZcbiAgICAocmVzLnNwZWMudXBkYXRlU3RyYXRlZ3kudHlwZSAhPT0gJ1JvbGxpbmdVcGRhdGUnIHx8XG4gICAgICAoZXF1YWwoc3RhdHVzLmN1cnJlbnRSZXZpc2lvbiwgc3RhdHVzLnVwZGF0ZVJldmlzaW9uKSAmJlxuICAgICAgICBlcXVhbChzdGF0dXMuY3VycmVudFJlcGxpY2FzLCByZXMuc3BlYy5yZXBsaWNhcykpKVxuICApIHtcbiAgICByZXR1cm4gV29ya2xvYWRTdGF0dXNFbnVtLnN0b3BwZWQ7XG4gIH1cbiAgcmV0dXJuIFdvcmtsb2FkU3RhdHVzRW51bS5wZW5kaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VUb1dvcmtsb2FkU3RhdHVzKGRhdGE6IERlcGxveW1lbnQpOiBHZW5lcmljV29ya2xvYWRTdGF0dXMge1xuICBzd2l0Y2ggKGRhdGE/LmtpbmQpIHtcbiAgICBjYXNlIFdvcmtsb2FkS2luZC5EZXBsb3ltZW50OiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdGF0dXM6IHBhcnNlRGVwbG95bWVudFN0YXR1cyhkYXRhKSxcbiAgICAgICAgZGVzaXJlZDogZ2V0KGRhdGEsIFsnc3BlYycsICdyZXBsaWNhcyddLCAwKSxcbiAgICAgICAgY3VycmVudDogZ2V0KGRhdGEsIFtTVEFUVVMsICdhdmFpbGFibGVSZXBsaWNhcyddLCAwKSxcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgV29ya2xvYWRLaW5kLkRhZW1vblNldDoge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3RhdHVzOiBwYXJzZURhZW1vblNldFN0YXR1cyhkYXRhKSxcbiAgICAgICAgZGVzaXJlZDogZ2V0KGRhdGEsIFtTVEFUVVMsICdkZXNpcmVkTnVtYmVyU2NoZWR1bGVkJ10sIDApLFxuICAgICAgICBjdXJyZW50OiBnZXQoZGF0YSwgW1NUQVRVUywgJ251bWJlclJlYWR5J10sIDApLFxuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSBXb3JrbG9hZEtpbmQuU3RhdGVmdWxTZXQ6IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN0YXR1czogcGFyc2VTdGF0ZWZ1bFNldFN0YXR1cyhkYXRhKSxcbiAgICAgICAgZGVzaXJlZDogZ2V0KGRhdGEsIFsnc3BlYycsICdyZXBsaWNhcyddLCAwKSxcbiAgICAgICAgY3VycmVudDogZ2V0KGRhdGEsIFtTVEFUVVMsICdyZWFkeVJlcGxpY2FzJ10sIDApLFxuICAgICAgfTtcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3RhdHVzOiBXb3JrbG9hZFN0YXR1c0VudW0uc3RvcHBlZCxcbiAgICAgICAgZGVzaXJlZDogMCxcbiAgICAgICAgY3VycmVudDogMCxcbiAgICAgIH07XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGVxdWFsKHg6IG51bWJlciB8IHN0cmluZywgeTogbnVtYmVyIHwgc3RyaW5nKSB7XG4gIHJldHVybiBkZWZhdWx0WmVybyh4KSA9PT0gZGVmYXVsdFplcm8oeSk7XG59XG5cbmZ1bmN0aW9uIGxhcmdlckVxdWFsKHg6IG51bWJlciwgeTogbnVtYmVyKSB7XG4gIHJldHVybiBkZWZhdWx0WmVybyh4KSA+PSBkZWZhdWx0WmVybyh5KTtcbn1cblxuZnVuY3Rpb24gbGFyZ2VyKHg6IG51bWJlciwgeTogbnVtYmVyKSB7XG4gIHJldHVybiBkZWZhdWx0WmVybyh4KSA+IGRlZmF1bHRaZXJvKHkpO1xufVxuXG5mdW5jdGlvbiBkZWZhdWx0WmVybyh4OiBudW1iZXIgfCBzdHJpbmcpIHtcbiAgcmV0dXJuIHggfHwgMDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEpvYlN0YXR1cyhkYXRhOiBKb2IpOiBKb2JTdGF0dXNFbnVtIHtcbiAgY29uc3Qgc3RhdHVzID0gZGF0YS5zdGF0dXM7XG4gIGlmIChzdGF0dXMuY29uZGl0aW9ucz8uc29tZShfaXRlbSA9PiBfaXRlbS50eXBlID09PSAnRmFpbGVkJykpIHtcbiAgICByZXR1cm4gSm9iU3RhdHVzRW51bS5FWEVDVVRFX0ZBSUxFRDtcbiAgfVxuICAvLyB3aGVuIENvbXBsZXRlIGFuZCBzdWNjZWVkZWQsIGp1ZGdlIHRvIGV4ZWN1dGVfc3VjY2VlZGVkXG4gIGlmIChzdGF0dXMuY29uZGl0aW9ucz8uc29tZShfaXRlbSA9PiBfaXRlbS50eXBlID09PSAnQ29tcGxldGUnKSkge1xuICAgIGlmIChzdGF0dXMuc3VjY2VlZGVkKSB7XG4gICAgICByZXR1cm4gSm9iU3RhdHVzRW51bS5FWEVDVVRFX1NVQ0NFRURFRDtcbiAgICB9XG4gICAgaWYgKHN0YXR1cy5mYWlsZWQpIHtcbiAgICAgIHJldHVybiBKb2JTdGF0dXNFbnVtLkVYRUNVVEVfRkFJTEVEO1xuICAgIH1cbiAgfVxuICAvLyBubyBjb25kaXRpb24gYW5kIG5vIENvbXBsZXRlIHdoZW4gcnVubmluZ1xuICBpZiAoc3RhdHVzLmFjdGl2ZSkge1xuICAgIHJldHVybiBKb2JTdGF0dXNFbnVtLkVYRUNVVElORztcbiAgfVxuICByZXR1cm4gSm9iU3RhdHVzRW51bS5VTktOT1dOO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0V29ya2xvYWRTdGF0dXMoc3RhdHVzOiBHZW5lcmljV29ya2xvYWRTdGF0dXMpIHtcbiAgcmV0dXJuIHN0YXR1cy5zdGF0dXMudG9Mb3dlckNhc2UoKSBhcyBXb3JrbG9hZFN0YXR1c0VudW07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQb2RJUHMocG9kOiBQb2QpIHtcbiAgY29uc3QgcG9kSVBzID0gcG9kLnN0YXR1cy5wb2RJUHM/Lm1hcCgoeyBpcCB9KSA9PiBpcCk7XG4gIHJldHVybiBwb2RJUHM/Lmxlbmd0aCA/IHBvZElQcyA6IFtwb2Quc3RhdHVzLnBvZElQXS5maWx0ZXIoQm9vbGVhbik7XG59XG4iXX0=