@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 @@
1
+ {"version":3,"file":"alauda-fe-dynamic-plugin-shared.mjs","sources":["../../../../libs/dynamic-plugin-shared/src/types/common.ts","../../../../libs/dynamic-plugin-shared/src/types/helpers.ts","../../../../libs/dynamic-plugin-shared/src/types/k8s/crd.ts","../../../../libs/dynamic-plugin-shared/src/types/k8s/raw.ts","../../../../libs/dynamic-plugin-shared/src/types/index.ts","../../../../libs/dynamic-plugin-shared/src/constants/common.ts","../../../../libs/dynamic-plugin-shared/src/constants/k8s.ts","../../../../libs/dynamic-plugin-shared/src/constants/patterns.ts","../../../../libs/dynamic-plugin-shared/src/constants/status-icons.ts","../../../../libs/dynamic-plugin-shared/src/constants/timezones.ts","../../../../libs/dynamic-plugin-shared/src/constants/resource-definitions.ts","../../../../libs/dynamic-plugin-shared/src/utils/operators.ts","../../../../libs/dynamic-plugin-shared/src/utils/observable.ts","../../../../libs/dynamic-plugin-shared/src/utils/decorators.ts","../../../../libs/dynamic-plugin-shared/src/utils/browser.ts","../../../../libs/dynamic-plugin-shared/src/utils/common.ts","../../../../libs/dynamic-plugin-shared/src/utils/cache-store.ts","../../../../libs/dynamic-plugin-shared/src/utils/color-helpers.ts","../../../../libs/dynamic-plugin-shared/src/utils/cron-util.ts","../../../../libs/dynamic-plugin-shared/src/utils/request-pool.ts","../../../../libs/dynamic-plugin-shared/src/utils/tree.ts","../../../../libs/dynamic-plugin-shared/src/utils/with-load-state.ts","../../../../libs/dynamic-plugin-shared/src/utils/workspace.ts","../../../../libs/dynamic-plugin-shared/src/utils/unit.ts","../../../../libs/dynamic-plugin-shared/src/utils/yaml.ts","../../../../libs/dynamic-plugin-shared/src/utils/version.ts","../../../../libs/dynamic-plugin-shared/src/utils/resources.ts","../../../../libs/dynamic-plugin-shared/src/utils/local-storage-constants.ts","../../../../libs/dynamic-plugin-shared/src/utils/format-number.ts","../../../../libs/dynamic-plugin-shared/src/utils/node.ts","../../../../libs/dynamic-plugin-shared/src/utils/sort-fn.ts","../../../../libs/dynamic-plugin-shared/src/utils/workload.ts","../../../../libs/dynamic-plugin-shared/src/utils/router.ts","../../../../libs/dynamic-plugin-shared/src/utils/disabled-state.ts","../../../../libs/dynamic-plugin-shared/src/services/on-resize.service.ts","../../../../libs/dynamic-plugin-shared/src/services/yaml-util.service.ts","../../../../libs/dynamic-plugin-shared/src/services/form-row-duplicate/form-row-duplicate.service.ts","../../../../libs/dynamic-plugin-shared/src/pipes/crontab-next.pipe.ts","../../../../libs/dynamic-plugin-shared/src/pipes/field-not-available.pipe.ts","../../../../libs/dynamic-plugin-shared/src/pipes/img-header.pipe.ts","../../../../libs/dynamic-plugin-shared/src/pipes/img-theme.pipe.ts","../../../../libs/dynamic-plugin-shared/src/pipes/keyvalue.pipe.ts","../../../../libs/dynamic-plugin-shared/src/pipes/safe.pipe.ts","../../../../libs/dynamic-plugin-shared/src/pipes/sanitize.pipe.ts","../../../../libs/dynamic-plugin-shared/src/pipes/time.pipe.ts","../../../../libs/dynamic-plugin-shared/src/pipes/page-env.pipe.ts","../../../../libs/dynamic-plugin-shared/src/pipes/marked.pipe.ts","../../../../libs/dynamic-plugin-shared/src/pipes/parse-json-translate.pipe.ts","../../../../libs/dynamic-plugin-shared/src/pipes/timezone-display.pipe.ts","../../../../libs/dynamic-plugin-shared/src/pipes/cron-human-readable.pipe.ts","../../../../libs/dynamic-plugin-shared/src/pipes/parse-json.pipe.ts","../../../../libs/dynamic-plugin-shared/src/pipes/minimum-format.pipe.ts","../../../../libs/dynamic-plugin-shared/src/pipes/duration.pipe.ts","../../../../libs/dynamic-plugin-shared/src/pipes/pure.pipe.ts","../../../../libs/dynamic-plugin-shared/src/pipes/calc.pipe.ts","../../../../libs/dynamic-plugin-shared/src/directives/disabled.directive.ts","../../../../libs/dynamic-plugin-shared/src/directives/feature-gate.directive.ts","../../../../libs/dynamic-plugin-shared/src/directives/last-form-item.directive.ts","../../../../libs/dynamic-plugin-shared/src/directives/readonly-field.directive.ts","../../../../libs/dynamic-plugin-shared/src/directives/resize.directive.ts","../../../../libs/dynamic-plugin-shared/src/directives/scroll-to-first-invalid.directive.ts","../../../../libs/dynamic-plugin-shared/src/directives/scroll-border-observer.directive.ts","../../../../libs/dynamic-plugin-shared/src/directives/click-outside.directive.ts","../../../../libs/dynamic-plugin-shared/src/directives/declare.directive.ts","../../../../libs/dynamic-plugin-shared/src/directives/aui-code-editor.directive.ts","../../../../libs/dynamic-plugin-shared/src/directives/value-trace.directive.ts","../../../../libs/dynamic-plugin-shared/src/directives/effect-directive/e2e-attribute-binding.directive.ts","../../../../libs/dynamic-plugin-shared/src/directives/effect-directive/event.directive.ts","../../../../libs/dynamic-plugin-shared/src/directives/effect-directive/min-max.directive.ts","../../../../libs/dynamic-plugin-shared/src/directives/effect-directive/trim.directive.ts","../../../../libs/dynamic-plugin-shared/src/directives/effect-directive/validators.directive.ts","../../../../libs/dynamic-plugin-shared/src/directives/effect-directive/coerce-number.directive.ts","../../../../libs/dynamic-plugin-shared/src/directives/effect-directive/index.ts","../../../../libs/dynamic-plugin-shared/src/components/confirm-delete/utils.ts","../../../../libs/dynamic-plugin-shared/src/components/confirm-delete/confirm-delete.component.ts","../../../../libs/dynamic-plugin-shared/src/components/confirm-delete/confirm-delete.component.html","../../../../libs/dynamic-plugin-shared/src/components/field-set/column/component.ts","../../../../libs/dynamic-plugin-shared/src/components/field-set/group/component.ts","../../../../libs/dynamic-plugin-shared/src/components/field-set/item/component.ts","../../../../libs/dynamic-plugin-shared/src/components/field-set/item/template.html","../../../../libs/dynamic-plugin-shared/src/components/field-set/index.ts","../../../../libs/dynamic-plugin-shared/src/components/loading-mask/loading-mask.component.ts","../../../../libs/dynamic-plugin-shared/src/components/loading-mask/loading-mask.component.html","../../../../libs/dynamic-plugin-shared/src/components/select-prefix-label/directive.ts","../../../../libs/dynamic-plugin-shared/src/components/zero-state/zero-state.component.ts","../../../../libs/dynamic-plugin-shared/src/components/zero-state/zero-state.component.html","../../../../libs/dynamic-plugin-shared/src/components/relative-time/component.ts","../../../../libs/dynamic-plugin-shared/src/components/disabled-container/disabled-container.component.ts","../../../../libs/dynamic-plugin-shared/src/components/disabled-container/disabled-container.component.html","../../../../libs/dynamic-plugin-shared/src/components/disabled-container/index.ts","../../../../libs/dynamic-plugin-shared/src/components/foldable-block/component.ts","../../../../libs/dynamic-plugin-shared/src/components/foldable-block/template.html","../../../../libs/dynamic-plugin-shared/src/components/foldable-item-in-table/component.ts","../../../../libs/dynamic-plugin-shared/src/components/foldable-item-in-table/template.html","../../../../libs/dynamic-plugin-shared/src/components/terminating-tag/component.ts","../../../../libs/dynamic-plugin-shared/src/components/terminating-tag/template.html","../../../../libs/dynamic-plugin-shared/src/components/text-with-url/component.ts","../../../../libs/dynamic-plugin-shared/src/components/text-with-url/template.html","../../../../libs/dynamic-plugin-shared/src/components/card-section/card-section.component.ts","../../../../libs/dynamic-plugin-shared/src/components/card-section/card-section.component.html","../../../../libs/dynamic-plugin-shared/src/components/current-time/component.ts","../../../../libs/dynamic-plugin-shared/src/components/text-tooltip/directive.ts","../../../../libs/dynamic-plugin-shared/src/components/date-range-picker/util.ts","../../../../libs/dynamic-plugin-shared/src/components/date-range-picker/component.ts","../../../../libs/dynamic-plugin-shared/src/components/date-range-picker/template.html","../../../../libs/dynamic-plugin-shared/src/components/tags-label/component.ts","../../../../libs/dynamic-plugin-shared/src/components/tags-label/template.html","../../../../libs/dynamic-plugin-shared/src/components/status-icon/status-icon.component.ts","../../../../libs/dynamic-plugin-shared/src/components/status-icon/status-icon.component.html","../../../../libs/dynamic-plugin-shared/src/components/text-ellipsis/component.ts","../../../../libs/dynamic-plugin-shared/src/components/text-ellipsis/component.html","../../../../libs/dynamic-plugin-shared/src/form/validators/utils.ts","../../../../libs/dynamic-plugin-shared/src/form/validators/dns1123-subdomain.ts","../../../../libs/dynamic-plugin-shared/src/form/validators/resource-limit.ts","../../../../libs/dynamic-plugin-shared/src/form/validators/strong-password/strong-password-tooltip/component.ts","../../../../libs/dynamic-plugin-shared/src/form/validators/strong-password/strong-password-tooltip/template.html","../../../../libs/dynamic-plugin-shared/src/form/validators/strong-password/strong-password-validator.directive.ts","../../../../libs/dynamic-plugin-shared/src/form/validators/strong-password/strong-password-validator.module.ts","../../../../libs/dynamic-plugin-shared/src/form/validators/not-be-validator.directive.ts","../../../../libs/dynamic-plugin-shared/src/form/validators/one-of-validator.directive.ts","../../../../libs/dynamic-plugin-shared/src/form/validators/function-validator.directive.ts","../../../../libs/dynamic-plugin-shared/src/form/validators/async-function-validator.directive.ts","../../../../libs/dynamic-plugin-shared/src/form/validators/maxlength-minlength-validator.directive.ts","../../../../libs/dynamic-plugin-shared/src/form/errors-mapper/default-errors-mapper.service.ts","../../../../libs/dynamic-plugin-shared/src/form/errors-mapper/base-errors-mapper.ts","../../../../libs/dynamic-plugin-shared/src/form/errors-mapper/errors-mapper-component/component.ts","../../../../libs/dynamic-plugin-shared/src/form/errors-mapper/errors-mapper-component/template.html","../../../../libs/dynamic-plugin-shared/src/form/errors-mapper/errors-mapper.directive.ts","../../../../libs/dynamic-plugin-shared/src/form/errors-mapper/index.ts","../../../../libs/dynamic-plugin-shared/src/form/utils.ts","../../../../libs/dynamic-plugin-shared/src/code-editor/code-editor-configs.ts","../../../../libs/dynamic-plugin-shared/src/page-deactivate/deactivate.service.ts","../../../../libs/dynamic-plugin-shared/src/page-deactivate/deactivate.guard.ts","../../../../libs/dynamic-plugin-shared/src/page-deactivate/deactivate.directive.ts","../../../../libs/dynamic-plugin-shared/src/form/base-form-container.ts","../../../../libs/dynamic-plugin-shared/src/form/base-nested-form-control.ts","../../../../libs/dynamic-plugin-shared/src/components/password-input/component.ts","../../../../libs/dynamic-plugin-shared/src/components/password-input/template.html","../../../../libs/dynamic-plugin-shared/src/components/resource-label/component.ts","../../../../libs/dynamic-plugin-shared/src/components/resource-label/template.html","../../../../libs/dynamic-plugin-shared/src/components/resource-multi-select/util.ts","../../../../libs/dynamic-plugin-shared/src/components/resource-multi-select/component.ts","../../../../libs/dynamic-plugin-shared/src/components/resource-multi-select/template.html","../../../../libs/dynamic-plugin-shared/src/components/search-panel/helper.directive.ts","../../../../libs/dynamic-plugin-shared/src/components/search-panel/search-item/component.ts","../../../../libs/dynamic-plugin-shared/src/components/search-panel/search-item/template.html","../../../../libs/dynamic-plugin-shared/src/components/search-panel/component.ts","../../../../libs/dynamic-plugin-shared/src/components/search-panel/template.html","../../../../libs/dynamic-plugin-shared/src/components/custom-columns-setting/component.ts","../../../../libs/dynamic-plugin-shared/src/components/custom-columns-setting/template.html","../../../../libs/dynamic-plugin-shared/src/components/pod-status/typings.ts","../../../../libs/dynamic-plugin-shared/src/components/pod-status/status.ts","../../../../libs/dynamic-plugin-shared/src/components/pod-status/component.ts","../../../../libs/dynamic-plugin-shared/src/components/pod-status/template.html","../../../../libs/dynamic-plugin-shared/src/components/upload-file/component.ts","../../../../libs/dynamic-plugin-shared/src/components/upload-file/template.html","../../../../libs/dynamic-plugin-shared/src/components/help-document/component.ts","../../../../libs/dynamic-plugin-shared/src/components/help-document/template.html","../../../../libs/dynamic-plugin-shared/src/components/help-document/service.ts","../../../../libs/dynamic-plugin-shared/src/components/help-document/directive.ts","../../../../libs/dynamic-plugin-shared/src/components/help-document/index.ts","../../../../libs/dynamic-plugin-shared/src/components/page-guard/component/helper-directives.ts","../../../../libs/dynamic-plugin-shared/src/components/page-guard/component/page-guard.type.ts","../../../../libs/dynamic-plugin-shared/src/components/page-guard/component/component.ts","../../../../libs/dynamic-plugin-shared/src/components/page-guard/component/template.html","../../../../libs/dynamic-plugin-shared/src/components/page-guard/index.ts","../../../../libs/dynamic-plugin-shared/src/k8s-resource-list/types.ts","../../../../libs/dynamic-plugin-shared/src/k8s-resource-list/footer/component.ts","../../../../libs/dynamic-plugin-shared/src/k8s-resource-list/footer/template.html","../../../../libs/dynamic-plugin-shared/src/k8s-resource-list/utils.ts","../../../../libs/dynamic-plugin-shared/src/k8s-resource-list/k8s-resource-list.ts","../../../../libs/dynamic-plugin-shared/src/k8s-resource-list/k8s-resource-paged-list.ts","../../../../libs/dynamic-plugin-shared/src/k8s-resource-list/index.ts","../../../../libs/dynamic-plugin-shared/src/k8s-shared/update-description-dialog/component.ts","../../../../libs/dynamic-plugin-shared/src/k8s-shared/update-description-dialog/template.html","../../../../libs/dynamic-plugin-shared/src/k8s-shared/update-display-name-dialog/component.ts","../../../../libs/dynamic-plugin-shared/src/k8s-shared/update-display-name-dialog/template.html","../../../../libs/dynamic-plugin-shared/src/array-form-table/base-string-map-form.component.ts","../../../../libs/dynamic-plugin-shared/src/array-form-table/form/component.ts","../../../../libs/dynamic-plugin-shared/src/array-form-table/form/template.html","../../../../libs/dynamic-plugin-shared/src/array-form-table/form/index.ts","../../../../libs/dynamic-plugin-shared/src/array-form-table/key-value-form/component.ts","../../../../libs/dynamic-plugin-shared/src/array-form-table/key-value-form/template.html","../../../../libs/dynamic-plugin-shared/src/k8s-shared/update-key-value-dialog/component.ts","../../../../libs/dynamic-plugin-shared/src/k8s-shared/update-key-value-dialog/template.html","../../../../libs/dynamic-plugin-shared/src/k8s-shared/k8s-shared-util.service.ts","../../../../libs/dynamic-plugin-shared/src/k8s-shared/constants.ts","../../../../libs/dynamic-plugin-shared/src/k8s-shared/k8s-resource-translate-key.pipe.ts","../../../../libs/dynamic-plugin-shared/src/k8s-shared/resource-mark/util.ts","../../../../libs/dynamic-plugin-shared/src/k8s-shared/resource-mark/component.ts","../../../../libs/dynamic-plugin-shared/src/k8s-shared/index.ts","../../../../libs/dynamic-plugin-shared/src/code-editor/code-display-dialog/component.ts","../../../../libs/dynamic-plugin-shared/src/code-editor/code-display-dialog/template.html","../../../../libs/dynamic-plugin-shared/src/code-editor/resource-yaml-display/component.ts","../../../../libs/dynamic-plugin-shared/src/code-editor/resource-yaml-display/template.html","../../../../libs/dynamic-plugin-shared/src/code-editor/k8s-yaml-display-dialog/component.ts","../../../../libs/dynamic-plugin-shared/src/code-editor/k8s-yaml-display-dialog/template.html","../../../../libs/dynamic-plugin-shared/src/code-editor/index.ts","../../../../libs/dynamic-plugin-shared/src/array-form-table/key-value-table/component.ts","../../../../libs/dynamic-plugin-shared/src/array-form-table/key-value-table/template.html","../../../../libs/dynamic-plugin-shared/src/array-form-table/string-array-form/component.ts","../../../../libs/dynamic-plugin-shared/src/array-form-table/string-array-form/template.html","../../../../libs/dynamic-plugin-shared/src/array-form-table/index.ts","../../../../libs/dynamic-plugin-shared/src/async-data/error-page/component.ts","../../../../libs/dynamic-plugin-shared/src/async-data/error-page/template.html","../../../../libs/dynamic-plugin-shared/src/async-data/page-state/component.ts","../../../../libs/dynamic-plugin-shared/src/async-data/page-state/template.html","../../../../libs/dynamic-plugin-shared/src/async-data/async-data-loader.ts","../../../../libs/dynamic-plugin-shared/src/async-data/types.ts","../../../../libs/dynamic-plugin-shared/src/async-data/index.ts","../../../../libs/dynamic-plugin-shared/src/alauda-fe-dynamic-plugin-shared.ts"],"sourcesContent":["/**\n * @packageDocumentation\n * @module types\n */\n\nexport type StringMap = Record<string, string>;\n\nexport interface Environments {\n GLOBAL_NAMESPACE?: string;\n LABEL_BASE_DOMAIN?: string;\n LOGO_URL?: string;\n INNER_PROJECT_NS_PREFIX?: string;\n CPAAS_SESSION_SWITCH?: 'on' | 'off';\n CLOSE_BROWSER_END_SESSION?: string;\n CURRENT_STATE?: 'Active' | 'Standby';\n}\n\nexport type KeyValue<V = string, T extends object = object> = T & {\n key: string;\n value: V;\n};\n\nexport interface ResourceListParams extends StringMap {\n limit?: string;\n continue?: string;\n labelSelector?: string;\n fieldSelector?: string;\n field?: string;\n keyword?: string;\n}\n\nexport interface WorkspaceParams {\n project?: string;\n cluster?: string;\n namespace?: string;\n}\n\nexport interface WorkspaceListParams\n extends WorkspaceParams,\n ResourceListParams {}\n\nexport interface WorkspaceDetailParams extends WorkspaceListParams {\n name?: string;\n}\n\nexport type Pagination<T, O = { [key: string]: unknown }> = {\n total: number;\n items: T[];\n} & O;\n","/**\n * @packageDocumentation\n * @module types\n */\n\nimport { Observable } from 'rxjs';\nimport { Primitive } from 'ts-essentials';\n\nexport {\n DeepPartial,\n DeepReadonly,\n Dictionary,\n ValueOf as LooseValueOf,\n} from 'ts-essentials';\n\nexport type Readonlyable<T> = T | Readonly<T>;\n\nexport type AnyArray<T> = Readonlyable<T[]>;\n\nexport type Arrayable<T, R extends boolean = false> = [R] extends [never]\n ? T | T[]\n : R extends true\n ? Readonly<T> | readonly T[]\n : R extends false\n ? Readonlyable<T> | AnyArray<T>\n : never;\n\nexport type Nullable<T> = T | null | undefined;\n\nexport type Callback<T extends any[] = unknown[], R = unknown> = (\n ...args: T\n) => R;\n\n/** Dark magic helper */\nexport type IfEqual<X, Y, A = X, B = never> =\n (<T>() => T extends X ? true : false) extends <T>() => T extends Y\n ? true\n : false\n ? A\n : B;\n\nexport type Keys<T> = { [Key in keyof T]: Key };\n\nexport type ObservableType<T> = T extends Observable<infer R> ? R : never;\n\nexport type UnaryObservableFunction<T, R> = (\n source: Observable<T>,\n) => Observable<R>;\n\nexport type ValueOf<T> = T extends {\n [key: string]: infer M;\n}\n ? M\n : T extends {\n [key: number]: infer N;\n }\n ? N\n : never;\n\nexport function isErrorMessage<T extends { message: string }>(\n error: any,\n): error is T {\n return 'message' in error && typeof error.message === 'string';\n}\n\nexport type LiteralUnion<LiteralType, BaseType extends Primitive> =\n | LiteralType\n | (BaseType & { _?: never });\n\nexport const DataSource = {\n Platform: 'Platform',\n Business: 'Business',\n} as const;\nexport type DataSource = ValueOf<typeof DataSource>;\n","import { ValueOf } from 'ts-essentials';\n\nimport { StringMap } from '../common';\n\nimport {\n Condition,\n KubernetesResource,\n KubernetesResourceList,\n ObjectMeta,\n} from './core';\nimport { ConfigMapKeyRef, SecretKeyRef } from './raw';\n\nexport interface ClusterSpec {\n authInfo?: {\n controller: {\n kind: string;\n namespace: string;\n name: string;\n };\n };\n kubernetesApiEndpoints?: {\n caBundle?: string;\n serverEndpoints: Array<{\n clientCIDR: string;\n serverAddress: string;\n }>;\n };\n}\n\nexport type ClusterStatusReason =\n | 'Timeout'\n | 'Forbidden'\n | 'Unauthorized'\n | 'SomeComponentsUnhealthy'\n | 'SomeNodesNotReady';\n\nexport interface ClusterStatusCondition extends Condition {\n lastTransitionTime: string;\n type:\n | 'NotReachable'\n | 'NotAccessible'\n | 'ComponentNotHealthy'\n | 'NodeNotReady';\n status: 'True' | 'False';\n reason: ClusterStatusReason;\n}\n\nexport interface ClusterStatus {\n version: string;\n conditions: ClusterStatusCondition[];\n}\n\n// clusters.clusterregistry.k8s.io 的类型定义\nexport interface Cluster extends KubernetesResource {\n metadata?: ObjectMeta & {\n finalizers?: string[];\n };\n spec?: ClusterSpec;\n status?: ClusterStatus;\n details?: {\n group: string;\n kind: string;\n name: string;\n uid: string;\n };\n}\n\n// Alauda Product\nexport interface AlaudaProductStatus extends Condition {\n deployStatus?: AlaudaDeployStatus;\n runningStatus?: AlaudaRunningStatus;\n message: string;\n deployTime?: string;\n}\n\nexport enum AlaudaRunningStatus {\n NOT_RUNNING = 'NotRunning',\n HEALTHY = 'Healthy',\n ABNORMAL = 'Abnormal',\n}\n\nexport enum AlaudaDeployStatus {\n NOT_DEPLOYED = 'NotDeployed',\n SUCCESS = 'success',\n ABNORMAL = 'Abnormal',\n DEPLOYING = 'Deploying',\n DEPLOY_FAILED = 'DeployFailed',\n UPGRADING = 'Upgrading',\n UPGRADE_FAILED = 'UpgradeFailed',\n COMPLETED = 'Completed',\n PENDING = 'Pending',\n}\nexport interface ProductBase extends KubernetesResource {\n spec: ProductBaseSpec;\n status?: ProductBaseStatus;\n}\n\nexport interface ProductStatusCondition {\n status?: 'True' | 'False' | 'Unknown';\n reason?: string;\n message?: string;\n type: 'Ready' | 'Initialized' | 'Reclaimed' | 'Succeed';\n lastTransitionTime?: string;\n lastHeartbeatTime?: string;\n}\n\nexport interface ProductBaseStatus {\n globalID: string;\n cloud: {\n phase: 'ONLine' | 'ConnectFailed' | 'Connecting' | 'OFFLine';\n message: string;\n connectURL: string;\n };\n version: string;\n phase?:\n | 'Pending'\n | 'Provisioning'\n | 'Provisioned'\n | 'Deleting'\n | 'Failed'\n | 'Running'\n | 'Installing' // tdsql\n | 'Upgrading';\n productEntrypoint?: string;\n deletable?: boolean;\n conditions?: ProductStatusCondition[];\n prometheusAddress?: string;\n elasticSearchAddress?: string;\n kafkaAddress?: string;\n containerPlatform?: AlaudaProductStatus;\n devops?: AlaudaProductStatus;\n serviceMesh?: AlaudaProductStatus;\n dataServices?: AlaudaProductStatus;\n base?: AlaudaProductStatus;\n progress?: number;\n replicas?: number;\n}\n\nexport const ProductKey = {\n BASE: 'base',\n CONTAINER_PLATFORM: 'containerPlatform',\n DEVOPS: 'devops',\n SERVICE_MESH: 'serviceMesh',\n DATA_SERVICES: 'dataServices',\n} as const;\n\nexport type ProductKey = ValueOf<typeof ProductKey>;\n\ntype GenProduct<T extends ProductKey> = Record<T, { install: boolean }>;\n\nexport interface Tls {\n secretRef: {\n name: string;\n };\n}\n\nexport interface ProductBaseSpec extends GenProduct<ProductKey> {\n alternativeURLs: string[];\n chartMuseum: {\n url: string;\n };\n packageEdition: string;\n valuesOverride?: {\n dex: StringMap;\n };\n chartVersions: [{ name: string; version: string }];\n defaultAdmin: {\n account: string;\n email: string;\n password: string;\n };\n defaultRedirectPath: string;\n deployType: string;\n elasticsearch: {\n install: boolean;\n nodes: string[];\n username: string;\n };\n http: {\n forceRedirectHttps?: boolean;\n httpPort?: number;\n httpsPort?: number;\n tls?: Tls;\n };\n ingress: {\n controller: { install: boolean; nodes: string[] };\n host: string;\n ingressClassName: string;\n };\n kafka: {\n auth: boolean;\n install: boolean;\n nodes: string[];\n username: string;\n };\n logAgent: {\n enable: boolean;\n };\n logCenter: {\n enable: boolean;\n };\n platformURL: string;\n prometheus: {\n install: boolean;\n replicas: number;\n storage: { capacity: number; nodes: string[]; path: string; type: string };\n };\n registry: {\n external?: string;\n address: string;\n username: string;\n secretRef?: string;\n };\n replicas: number;\n version: string;\n cloud: {\n connect: boolean;\n connectType: string;\n };\n}\n\nexport interface ProjectSpec {\n clusters: ProjectCluster[];\n status?: {\n phase: string;\n };\n clusterDeletePolicy?: 'Delete' | 'Retain';\n}\n\nexport interface ProjectCluster {\n name: string;\n quota: Record<string, string>;\n type?: '' | 'FedMember';\n}\n\nexport interface Project extends KubernetesResource {\n spec: ProjectSpec;\n status?: {\n phase: string;\n };\n}\n\nexport type LocaleDisplay = Record<string, string>;\n\nexport interface ProductEntrySpec {\n logo?: string;\n displayName?: LocaleDisplay;\n description?: LocaleDisplay;\n catalog?: LocaleDisplay;\n entrypoint?: string;\n ssoEnabled?: boolean;\n packType?: 'Integrated' | 'BuildIn' | 'AdminPage';\n version?: string;\n}\n\nexport interface ProductEntryStatus {\n hiddenOnPortal?: boolean;\n hiddenOnMenu?: boolean;\n orderOnPortal?: number;\n orderOnMenu?: number;\n}\n\nexport interface ProductEntry extends KubernetesResource {\n spec?: ProductEntrySpec;\n status?: ProductEntryStatus;\n}\n\nexport interface ProductStatus {\n type:\n | 'NotDeployed'\n | 'InDeployment'\n | 'Running'\n | 'DeploymentFailure'\n | 'RunningAbnormal'\n | 'Deleting'\n | 'DeleteFailure'\n | 'DeploymentSucceed'\n | 'SystemError'\n | 'Upgrading';\n icon: string;\n text: string;\n}\n\n/**\n * @link https://gitlab-ce.alauda.cn/container-platform/captain/-/blob/master/docs/crd.md\n */\nexport interface HelmRequest extends KubernetesResource {\n spec?: HelmRequestSpec;\n status?: {\n phase: HelmRequestPhaseEnum;\n notes?: string;\n lastSpecHash?: string;\n reason?: string;\n conditions?: HelmRequestCondition[];\n targetClusterSyncResults?: HelmRequestClusterSyncResults;\n };\n}\n\nexport interface HelmRequestCondition {\n lastProbeTime?: string;\n lastTransitionTime?: string;\n message: string;\n reason: string; // PermissionCheckFailed\n status: 'True' | 'False';\n type: string;\n}\n\nexport interface HelmRequestClusterSyncResults {\n [cluster: string]: HelmRequestClusterSyncResult;\n}\n\nexport enum CloudHelmRequestStateEnum {\n Pending = 'Pending',\n Running = 'Running',\n Stopped = 'Stopped',\n Failed = 'Failed',\n Empty = 'Empty',\n}\n\nexport interface HelmRequestClusterSyncResult {\n appStatus: CloudHelmRequestStateEnum;\n endpoint: string;\n lastUpdateAt: string;\n name: string;\n phase: HelmRequestPhaseEnum;\n reason: string;\n}\n\nexport enum HelmRequestPhaseEnum {\n Synced = 'Synced',\n Failed = 'Failed',\n Pending = 'Pending',\n Uninstalling = 'Uninstalling',\n}\n\nexport interface HelmRequestSpec {\n chart?: string;\n values: Record<string, unknown>;\n valuesFrom?: Array<{\n configMapKeyRef?: ConfigMapKeyRef;\n secretKeyRef?: SecretKeyRef;\n }>;\n clusterName?: string;\n namespace?: string;\n releaseName?: string;\n version?: string;\n projectName?: string;\n source?: {\n oci?: HelmRequestOci;\n http?: HelmRequestHttp;\n };\n targetClusters?: {\n clusterNames: {\n names: string[];\n };\n };\n}\n\nexport interface HelmRequestOci {\n repo: string;\n secretRef: string;\n}\nexport interface HelmRequestHttp {\n url: string;\n secretRef: string;\n}\n\n// http://confluence.alaudatech.com/pages/viewpage.action?pageId=39338366#1-%E8%8E%B7%E5%8F%96%E7%94%A8%E6%88%B7%E4%BF%A1%E6%81%AF\nexport interface User extends KubernetesResource {\n spec?: UserSpec;\n}\n\nexport interface UserSpec {\n connector_name?: string;\n connector_type?: string;\n email?: string;\n mail?: string;\n groups?: string[];\n is_admin?: boolean;\n valid?: boolean;\n username?: string;\n old_password?: string;\n password?: string;\n last_login_time?: string;\n login_failure_times?: number;\n state?: UserState;\n is_disabled?: boolean;\n expired?: {\n begin: string;\n end: string;\n };\n mobile?: string;\n webhookType?: WebhookType;\n webhookUrl?: string;\n ids?: Array<{ type: string; id: string }>;\n}\n\nexport enum UserState {\n ACTIVE = 'active',\n LOCKED = 'locked',\n INVALID = 'invalid',\n DELETED = 'deleted',\n}\n\nexport type WebhookType = 'Webhook' | 'DingTalk' | 'WeChat';\n\nexport interface UserList extends KubernetesResourceList<User> {\n total: number;\n}\n\n/**\n * https://confluence.alauda.cn/pages/viewpage.action?pageId=176883470\n */\nexport interface UserBinding extends KubernetesResource {\n spec?: UserBindingSpec;\n}\n\nexport interface UserBindingSpec {\n subjects: Array<{\n kind: 'User' | 'Group' | 'ServiceAccount';\n name: string;\n }>;\n roleRef: string;\n scope: string; // 支持类型platform, cluster, project, namespace\n constraint: Array<{\n project?: string;\n cluster?: string;\n namespace?: string;\n }>;\n}\n\nexport interface UserGroup extends KubernetesResource {\n spec: UserGroupSpec;\n}\n\nexport interface UserGroupSpec {\n refConnector?: {\n id: string;\n type: string;\n };\n name?: string;\n description?: string;\n users?: Array<{ name: string; importTime: string }>;\n}\n\nexport interface RoleRule {\n functionResourceRef: string;\n verbs: string[];\n}\n\nexport interface RoleCustomRule {\n apiGroup: string;\n resources: string[];\n verbs: string[];\n}\n\nexport interface RoleTemplateSpec {\n rules?: RoleRule[];\n customRules?: RoleCustomRule[];\n}\n\nexport interface RoleTemplate extends KubernetesResource {\n spec?: RoleTemplateSpec;\n}\n\nexport interface UserRoleNamespace {\n namespace: string;\n cluster: string;\n}\n\nexport interface UserRole extends KubernetesResource {\n name?: string;\n roles?: string[];\n namespaces?: Record<string, UserRoleNamespace[]>;\n}\n\nexport enum UserSecurityPolicyRule {\n PasswordPolicy = 'PasswordPolicy',\n UserLock = 'UserLockedPolicy',\n UserDisable = 'UserDisabledPolicy',\n Notification = 'NotificationPolicy',\n AccessControl = 'AccessControlPolicy',\n TwoFA = 'TwoFactorAuthenticationPolicy',\n}\n\nexport interface UserPolicyRule {\n name: UserSecurityPolicyRule;\n items: Array<{\n enable: boolean;\n key: string;\n value?: string;\n }>;\n}\n\nexport interface UserPolicy extends KubernetesResource {\n rules: UserPolicyRule[];\n}\n\nexport interface Idp extends KubernetesResource {\n spec?: { config?: LdapConfig | OidcConfig };\n id: string;\n name: string;\n type: string;\n namespace?: string;\n config?: string;\n ldapSync?: {\n sync: boolean;\n roles: string;\n };\n idpValidation?: {\n username: string;\n password: string;\n };\n}\n\n// https://godoc.org/github.com/coreos/dex/connector/ldap\nexport interface LdapConfig {\n host?: string;\n insecureNoSSL?: boolean;\n insecureSkipVerify?: boolean;\n startTLS?: boolean;\n rootCA?: string;\n rootCAData?: string;\n bindDN?: string;\n bindPW?: string;\n clientSecretRef?: string;\n ldapType?: string;\n usernamePrompt?: string;\n userSearch?: LdapUserSearch;\n groupSearch?: LdapGroupSearch;\n}\n\nexport interface LdapUserSearch {\n baseDN?: string;\n filter?: string;\n scope?: string;\n username?: string;\n idAttr?: string;\n emailAttr?: string;\n nameAttr?: string;\n}\n\nexport interface LdapGroupSearch {\n baseDN?: string;\n filter?: string;\n scope?: string;\n userAttr?: string;\n groupAttr?: string;\n nameAttr?: string;\n}\n\n// https://godoc.org/github.com/coreos/dex/connector/oidc\nexport interface OidcConfig {\n issuer?: string;\n clientID?: string;\n clientSecret?: string;\n clientSecretRef?: string;\n redirectURI?: string;\n logoutURL?: string;\n scopes?: string[];\n}\n\nexport interface AccessTokenInfo extends KubernetesResource {\n spec: {\n timestamp: number;\n expiration: number;\n description: string;\n };\n}\n","// TypeMeta describes an individual object in an API response or request\n// with strings representing the type of the object and its API schema version.\n// Structures that are versioned or persisted should inline TypeMeta.\n\n/**\n * 此文件只维护 所有的 k8s 原生类型\n */\n\nimport { StringMap } from '../common';\nimport { ValueOf } from '../helpers';\nimport { OpenAPIV3SchemaObject } from '../schema';\n\nimport {\n KubernetesResource,\n LabelSelector,\n LabelSelectorRequirement,\n ObjectMeta,\n ObjectReference,\n Condition,\n} from './core';\n\nexport interface Secret<T = StringMap> extends KubernetesResource {\n data?: T;\n stringData?: StringMap;\n type?: SecretType;\n // ! hack, not spec\n global?: boolean;\n certificate?: Certificate;\n}\n\nexport interface Certificate {\n name: string;\n namespace: string;\n notBefore: string;\n notAfter: string;\n dnsNames: string[];\n valid: boolean;\n reasonCode?:\n | 1 // 证书格式有误\n | 2 // 证书不在有效期内\n | 3; // 证书信息未知\n}\n\nexport interface Namespace extends KubernetesResource {\n status?: NamespaceStatus;\n}\n\nexport interface NamespaceStatus {\n phase?: string;\n}\n\nexport interface ScopedResourceSelectorRequirement {\n operator: 'In' | 'NotIn' | 'Exists' | 'DoesNotExist';\n scopeName: string;\n values: string;\n}\n\nexport interface ScopeSelector {\n matchExpressions: ScopedResourceSelectorRequirement[];\n}\n\nexport enum K8sResourceAction {\n GET = 'get',\n LIST = 'list',\n WATCH = 'watch',\n CREATE = 'create',\n UPDATE = 'update',\n PATCH = 'patch',\n DELETE = 'delete',\n DELETE_COLLECTION = 'deletecollection',\n PROXY = 'proxy',\n REDIRECT = 'redirect',\n ALL = '*',\n}\n\nexport enum SecretType {\n Opaque = 'Opaque',\n TLS = 'kubernetes.io/tls',\n SSHKey = 'kubernetes.io/ssh-public-key',\n SSHAuth = 'kubernetes.io/ssh-auth',\n BasicAuth = 'kubernetes.io/basic-auth',\n BasicAuthSecret = 'kubernetes.io/basic-auth-secret',\n Database = 'kubernetes.io/database',\n DockerConfigJson = 'kubernetes.io/dockerconfigjson',\n NoAuth = 'kubernetes.io/no-auth',\n}\n\nexport interface StatefulSet extends KubernetesResource {\n spec?: StatefulSetSpec;\n status?: StatefulSetStatus;\n}\n\nexport interface StatefulSetSpec {\n replicas?: number;\n selector?: LabelSelector;\n template?: PodTemplateSpec;\n\n // serviceName is the name of the service that governs this StatefulSet.\n // This service must exist before the StatefulSet, and is responsible for\n // the network identity of the set. Pods get DNS/hostnames that follow the\n // pattern: pod-specific-string.serviceName.default.svc.cluster.local\n // where \"pod-specific-string\" is managed by the StatefulSet controller.\n serviceName?: string;\n updateStrategy?: StatefulSetUpdateStrategy;\n revisionHistoryLimit?: number;\n volumeClaimTemplates?: PersistentVolumeClaim[];\n}\n\nexport interface PodTemplateSpec extends KubernetesResource {\n spec?: PodSpec;\n}\n\nexport interface PodSpec {\n containers?: Container[];\n initContainers?: Container[];\n ephemeralContainers?: EphemeralContainer[];\n volumes?: Volume[];\n hostAliases?: HostAliases[];\n nodeSelector?: StringMap;\n hostNetwork?: boolean;\n affinity?: Affinity;\n restartPolicy?: string;\n imagePullSecrets?: LocalObjectReference[];\n serviceAccountName?: string;\n serviceAccount?: string;\n nodeName?: string;\n terminationGracePeriodSeconds?: number;\n tolerations?: Toleration[];\n}\n\nexport interface Toleration {\n key?: string;\n value?: string;\n operator?: TolerationOperator;\n tolerationSeconds?: number;\n effect?: TaintEffect;\n}\n\nexport enum TolerationOperator {\n Exists = 'Exists',\n Equal = 'Equal',\n}\n\nexport enum TaintEffect {\n NoSchedule = 'NoSchedule',\n PreferNoSchedule = 'PreferNoSchedule',\n NoExecute = 'NoExecute',\n}\n\nexport interface Container {\n name?: string;\n image?: string;\n command?: string[];\n args?: string[];\n env?: EnvVar[];\n envFrom?: EnvFromSource[];\n workingDir?: string;\n ports?: ContainerPort[];\n resources?: ResourceRequirements;\n volumeMounts?: VolumeMount[];\n livenessProbe?: Probe;\n readinessProbe?: Probe;\n lifecycle?: PodLifeCycle;\n}\n\nexport interface EnvVarSource {\n configMapKeyRef?: ConfigMapKeyRef;\n secretKeyRef?: SecretKeyRef;\n fieldRef?: ObjectFieldSelector;\n resourceFieldRef?: ResourceFieldSelector;\n}\n\nexport interface EnvVar {\n name: string;\n value?: string;\n valueFrom?: EnvVarSource;\n}\n\nexport interface EnvFromSource {\n prefix?: string;\n configMapRef?: ConfigMapRef;\n secretRef?: SecretRef;\n}\n\nexport interface PodLifeCycle {\n postStart?: PodLifeCycleHook;\n preStop?: PodLifeCycleHook;\n}\n\nexport interface PodLifeCycleHook {\n exec: { command: string[] };\n}\n\nexport interface HTTPGetAction {\n host?: string;\n httpHeaders?: HTTPHeader[];\n path: string;\n port?: number | string;\n scheme?: string;\n}\n\nexport interface EphemeralContainer {\n command: string[];\n image: string;\n imagePullPolicy: string;\n name: string;\n stdin: boolean;\n tty: boolean;\n terminationMessagePolicy?: string;\n [key: string]: unknown;\n}\n\nexport type StatefulSetStatus = Partial<{\n collisionCount: number;\n observedGeneration: number;\n replicas: number;\n readyReplicas: number;\n currentReplicas: number;\n currentRevision: string;\n updateRevision: string;\n updatedReplicas?: number;\n}>;\n\nexport type DeploymentStrategyType = 'RollingUpdate' | 'Recreate';\nexport type DaemonSetUpdateStrategyType = 'RollingUpdate' | 'OnDelete';\nexport type StatefulSetUpdateStrategyType = 'RollingUpdate' | 'OnDelete';\n\nexport interface DeploymentStrategy {\n type?: DeploymentStrategyType;\n rollingUpdate?: RollingUpdateDeployment;\n}\n\nexport interface RollingUpdateDeployment {\n maxUnavailable?: string | number;\n maxSurge?: string | number;\n}\n\nexport interface StatefulSetUpdateStrategy {\n type?: StatefulSetUpdateStrategyType;\n rollingUpdate?: RollingUpdateStatefulSetStrategy;\n}\n\nexport interface RollingUpdateStatefulSetStrategy {\n partition?: string | number;\n}\n\nexport interface Ingress extends KubernetesResource {\n spec?: IngressSpec;\n}\n\nexport interface IngressSpec {\n ingressClassName?: string;\n rules?: IngressRule[];\n tls?: IngressTLS[];\n}\n\nexport interface IngressRule {\n host?: string;\n http: HTTPIngressRuleValue;\n}\n\nexport interface HTTPIngressRuleValue {\n paths: HTTPIngressPath[];\n}\n\nexport interface HTTPIngressPath {\n path: string;\n pathType: 'Prefix' | 'Exact' | 'ImplementationSpecific';\n backend: IngressBackend;\n}\n\nexport interface IngressBackend {\n serviceName?: string;\n servicePort?: number;\n service?: {\n name: string;\n port: {\n number: number;\n };\n };\n}\n\nexport interface IngressTLS {\n hosts?: string[];\n secretName?: string;\n global?: boolean;\n certificate?: Certificate;\n}\n\nexport interface IngressStatus {\n loadBalancer?: IngressLoadBalancerStatus;\n}\n\nexport interface IngressLoadBalancerStatus {\n ingress?: LoadBalancerIngress[];\n}\n\nexport interface LoadBalancerIngress {\n ip: string;\n hostname: string;\n}\n\nexport const VolumeMode = {\n FILE_SYSTEM: 'Filesystem',\n BLOCK_DEVICE: 'Block',\n} as const;\n\nexport type VolumeMode = ValueOf<typeof VolumeMode>;\n\nexport const VolumeModes = [VolumeMode.BLOCK_DEVICE, VolumeMode.FILE_SYSTEM];\n\nexport const AccessMode = {\n RWO: 'ReadWriteOnce',\n ROX: 'ReadOnlyMany',\n RWX: 'ReadWriteMany',\n} as const;\n\nexport type AccessMode = ValueOf<typeof AccessMode>;\n\nexport const AccessModes = [AccessMode.RWO, AccessMode.ROX, AccessMode.RWX];\n\nexport interface PersistentVolumeClaim extends KubernetesResource {\n spec: PersistentVolumeClaimSpec;\n status?: PersistentVolumeClaimStatus;\n}\n\nexport interface PersistentVolumeClaimStatus {\n phase: string;\n capacity?: { storage: string };\n}\n\nexport interface PersistentVolumeClaimSpec {\n // null 表示使用默认 sc\n // \"\" 表示不设置存储类\n storageClassName?: string;\n volumeName?: string;\n resources: {\n requests: { storage: string };\n };\n dataSource?: PersistentVolumeClaimDataSource;\n selector?: LabelSelector;\n accessModes: AccessMode[];\n volumeMode?: VolumeMode;\n}\n\nexport interface PersistentVolumeClaimDataSource {\n name: string;\n kind: string;\n apiGroup: string;\n}\n\nexport interface APIResourceItem {\n name: string;\n singularName: string;\n namespaced: boolean;\n kind: string;\n verbs: K8sResourceAction[];\n groupVersion?: string[];\n}\n\nexport interface APIResourceList extends KubernetesResource {\n kind: 'APIResourceList';\n apiVersion?: string;\n groupVersion: string;\n resources: APIResourceItem[];\n}\n\nexport interface ResourceAttributes<T extends K8sResourceAction> {\n group: string;\n resource: string;\n verb: T;\n namespace?: string;\n name?: string;\n}\n\nexport interface SubjectAccessReviewSpec<T extends K8sResourceAction> {\n resourceAttributes: ResourceAttributes<T>;\n}\n\nexport interface SubjectAccessReviewStatus {\n allowed: boolean;\n denied?: boolean;\n evaluationError?: string;\n reason?: string;\n}\n\nexport interface SubjectAccessReview<\n T extends K8sResourceAction = K8sResourceAction,\n> extends KubernetesResource {\n kind: 'SubjectAccessReview';\n spec: SubjectAccessReviewSpec<T>;\n status: SubjectAccessReviewStatus;\n}\n\nexport interface SelfResourceAttributes<T extends K8sResourceAction>\n extends ResourceAttributes<T> {\n project?: string;\n cluster?: string;\n}\n\nexport interface SelfSubjectAccessReviewSpec<T extends K8sResourceAction>\n extends SubjectAccessReviewSpec<T> {\n resourceAttributes: SelfResourceAttributes<T>;\n}\n\nexport interface SelfSubjectAccessReview<\n T extends K8sResourceAction = K8sResourceAction,\n> extends KubernetesResource {\n kind: 'SelfSubjectAccessReview';\n spec: SelfSubjectAccessReviewSpec<T>;\n status: SubjectAccessReviewStatus;\n}\n\nexport interface Status {\n kind: 'Status';\n apiVersion: string;\n metadata: {\n continue?: string;\n };\n status: string;\n message: string;\n reason: string;\n code: number;\n details?: {\n group?: string;\n kind: string;\n name: string;\n uid: string;\n causes: Array<{\n message?: string;\n reason?: string;\n field?: string;\n }>;\n };\n}\n\nexport interface LocalObjectReference {\n name: string;\n}\n\nexport interface ConfigMapKeyRef extends LocalObjectReference {\n key: string;\n optional?: boolean;\n}\n\nexport interface SecretKeyRef extends LocalObjectReference {\n key: string;\n optional?: boolean;\n}\n\nexport interface ConfigMapRef extends LocalObjectReference {\n optional?: boolean;\n}\n\nexport interface SecretRef extends LocalObjectReference {\n optional?: boolean;\n}\n\nexport interface ObjectFieldSelector {\n apiVersion?: string;\n fieldPath: string;\n}\nexport interface ResourceFieldSelector {\n containerName?: string;\n divisor?: string;\n resource: string;\n}\n\n/**\n * Workload API\n */\nexport interface Deployment extends KubernetesResource {\n name?: string;\n spec?: DeploymentSpec;\n status?: DeploymentStatus;\n generation?: number;\n}\n\n// DeploymentSpec is the specification of the desired behavior of the Deployment.\nexport interface DeploymentSpec {\n replicas?: number;\n selector?: LabelSelector;\n template?: PodTemplateSpec;\n strategy?: DeploymentStrategy;\n minReadySeconds?: number;\n revisionHistoryLimit?: number;\n}\n\nexport interface Pod extends KubernetesResource {\n spec?: PodSpec;\n status?: PodStatus;\n}\n\nexport interface PodStatus {\n conditions?: Condition[];\n containerStatuses?: ContainerStatus[];\n hostIP?: string;\n initContainerStatuses?: ContainerStatus[];\n ephemeralContainerStatuses?: ContainerStatus[];\n message?: string;\n nominatedNodeName?: string;\n phase?: string;\n podIP?: string;\n podIPs?: Array<{ ip: string }>;\n qosClass?: string;\n reason?: string;\n startTime?: string;\n}\n\nexport interface HostAliases {\n ip: string;\n hostnames: string[];\n}\n\nexport interface ContainerStatus {\n containerID?: string;\n image?: string;\n imageID?: string;\n lastState?: ContainerState;\n name?: string;\n ready?: boolean;\n restartCount?: number;\n state?: ContainerState;\n started?: boolean;\n}\n\nexport interface ContainerState {\n running?: ContainerStateRunning;\n terminated?: ContainerStateTerminated;\n waiting?: ContainerStateWaiting;\n}\n\nexport interface ContainerStateRunning {\n startedAt?: string;\n}\n\nexport interface ContainerStateTerminated {\n containerID?: string;\n exitCode?: number;\n finishedAt?: string;\n message?: string;\n reason?: string;\n signal?: number;\n startedAt?: string;\n}\n\nexport interface ContainerStateWaiting {\n message?: string;\n reason?: string;\n}\n\nexport interface DeploymentStatus {\n availableReplicas?: number;\n collisionCount?: number;\n observedGeneration?: number;\n readyReplicas?: number;\n replicas?: number;\n unavailableReplicas?: number;\n updatedReplicas?: number;\n conditions?: Condition[];\n}\n\nexport interface RequiredAffinity {\n topologyKey: string;\n labelSelector: LabelSelector;\n}\n\nexport interface PreferredAffinity {\n weight: number;\n podAffinityTerm: {\n labelSelector?: LabelSelector;\n topologyKey: string;\n };\n}\n\nexport interface PodAffinity {\n requiredDuringSchedulingIgnoredDuringExecution?: RequiredAffinity[];\n preferredDuringSchedulingIgnoredDuringExecution?: PreferredAffinity[];\n}\n\nexport interface PodSpecAffinity {\n podAffinity?: Affinity;\n podAntiAffinity?: Affinity;\n nodeAffinity?: Affinity;\n}\n\nexport interface Affinity {\n requiredDuringSchedulingIgnoredDuringExecution?:\n | PodAffinityTerm[]\n | NodeAffinityTerm;\n preferredDuringSchedulingIgnoredDuringExecution?: WeightedPodAffinityTerm[];\n}\n\nexport interface WeightedNodeAffinityTerm {\n weight: number;\n preference: NodeSelectorTerm;\n}\n\nexport interface NodeAffinity {\n requiredDuringSchedulingIgnoredDuringExecution?: NodeAffinityTerm;\n preferredDuringSchedulingIgnoredDuringExecution?: WeightedNodeAffinityTerm[];\n}\n\nexport interface WeightedPodAffinityTerm {\n podAffinityTerm: PodAffinityTerm;\n weight: number;\n}\n\nexport interface PodAffinityTerm {\n labelSelector?: LabelSelector;\n topologyKey: string;\n namespaces?: string[];\n}\n\nexport interface NodeAffinityTerm {\n nodeSelectorTerms: NodeSelectorTerm[];\n}\n\nexport interface NodeSelectorTerm {\n matchExpressions: LabelSelectorRequirement[];\n}\n\nexport enum VolumeTypeEnum {\n persistentVolumeClaim = 'persistentVolumeClaim',\n configMap = 'configMap',\n secret = 'secret',\n ephemeral = 'ephemeral',\n emptyDir = 'emptyDir',\n hostPath = 'hostPath',\n}\n\nexport interface Volume {\n name: string;\n [VolumeTypeEnum.emptyDir]?: EmptyDirVolumeSource;\n [VolumeTypeEnum.configMap]?: ConfigMapVolumeSource;\n [VolumeTypeEnum.secret]?: SecretVolumeSource;\n [VolumeTypeEnum.persistentVolumeClaim]?: PersistentVolumeClaimVolumeSource;\n [VolumeTypeEnum.hostPath]?: HostPathVolumeSource;\n [VolumeTypeEnum.ephemeral]?: EphemeralVolumeSource;\n // other iaas storage definitions not included\n isAppResource?: boolean; // 是否OAM应用资源\n mountPath?: string; // for oam component webservice component. 未来可能单独定义\n}\n\nexport interface CsiVolumeSource {\n driver: 'objectstorage.k8s.io';\n volumeAttributes: {\n 'bar-name': string;\n 'bar-namespace': string;\n bucketRequestName: string;\n };\n}\n\nexport interface KeyToPath {\n key?: string;\n mode?: number;\n path?: string;\n}\n\nexport interface EmptyDirVolumeSource {\n medium?: string;\n sizeLimit?: string; // eg: 1500m refers to: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.15/#quantity-resource-core\n}\n\nexport interface ConfigMapVolumeSource {\n name: string;\n optional?: boolean;\n items?: KeyToPath[];\n}\n\nexport interface SecretVolumeSource {\n secretName: string;\n optional?: boolean;\n items?: KeyToPath[];\n}\n\nexport interface HostPathVolumeSource {\n type?: string;\n path: string;\n}\n\nexport interface PersistentVolumeClaimVolumeSource {\n claimName: string;\n readOnly?: boolean;\n}\n\nexport interface EphemeralVolumeSource {\n volumeClaimTemplate: PersistentVolumeClaim;\n}\n\nexport interface Probe {\n exec?: ExecAction;\n failureThreshold?: number;\n httpGet?: HTTPGetAction;\n initialDelaySeconds?: number;\n periodSeconds?: number;\n successThreshold?: number;\n tcpSocket?: TCPSocketAction;\n timeoutSeconds?: number;\n}\n\nexport interface ExecAction {\n command?: string[];\n}\n\nexport interface HTTPHeader {\n name?: string;\n value?: string;\n}\n\nexport interface TCPSocketAction {\n host?: string;\n port?: number | string;\n}\n\nexport interface VolumeMount {\n name: string;\n mountPath?: string;\n readOnly?: boolean;\n subPath?: string;\n mountPropagation?: string;\n}\n\nexport interface ResourceRequirements {\n limits?: StringMap;\n requests?: StringMap;\n}\n\nexport interface ContainerPort {\n name?: string;\n hostPort?: number;\n containerPort?: number;\n servicePort?: number;\n protocol?: 'TCP' | 'UDP';\n hostIP?: string;\n}\n\nexport interface RollingUpdateDaemonSet {\n maxUnavailable?: string | number;\n}\n\nexport interface DaemonSetUpdateStrategy {\n type?: DaemonSetUpdateStrategyType;\n rollingUpdate?: RollingUpdateDaemonSet;\n}\n\nexport interface DaemonSet extends KubernetesResource {\n spec?: DaemonSetSpec;\n status?: DaemonSetStatus;\n}\n\nexport interface DaemonSetSpec {\n selector?: LabelSelector;\n template?: PodTemplateSpec;\n updateStrategy?: DaemonSetUpdateStrategy;\n minReadySeconds?: number;\n revisionHistoryLimit?: number;\n}\n\nexport type DaemonSetStatus = Partial<{\n currentNumberScheduled: number;\n numberMisscheduled: number;\n desiredNumberScheduled: number;\n numberReady: number;\n observedGeneration: number;\n updatedNumberScheduled: number;\n numberUnavailable: number;\n numberAvailable: number;\n}>;\n\nexport interface ConfigMap<T = StringMap> extends KubernetesResource {\n data?: T;\n binaryData?: StringMap;\n}\n\n// https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.11/#cronjobspec-v1beta1-batch\nexport interface CronJobSpec {\n concurrencyPolicy?: string;\n failedJobsHistoryLimit?: number | '';\n schedule?: string;\n startingDeadlineSeconds?: number | '';\n successfulJobsHistoryLimit?: number | '';\n suspend?: boolean;\n timeZone?: string;\n jobTemplate?: JobTemplateSpec;\n}\n\nexport interface Job extends KubernetesResource {\n spec?: JobSpec;\n status?: JobStatus;\n}\n\nexport interface JobSpec {\n activeDeadlineSeconds?: number | '';\n backoffLimit?: number | '';\n completions?: number | '';\n manualSelector?: boolean;\n parallelism?: number | '';\n selector?: LabelSelector;\n template?: PodTemplateSpec;\n startingDeadlineSeconds?: number | '';\n}\n\n// https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.11/#jobtemplatespec-v1beta1-batch\nexport interface JobTemplateSpec {\n metadata?: ObjectMeta;\n spec?: JobSpec;\n}\n\nexport interface JobStatus {\n active: number | '';\n completionTime: string;\n conditions: Condition[];\n startTime: string;\n succeeded: number;\n failed: number;\n}\n\nexport interface CronJobStatus {\n active?: ObjectReference[];\n lastScheduleTime: string;\n}\n\nexport interface CronJob extends KubernetesResource {\n spec?: CronJobSpec;\n status?: CronJobStatus;\n}\n\nexport type NodeStatusReason =\n | 'KubeletHasSufficientDisk'\n | 'KubeletHasSufficientMemory'\n | 'KubeletHasNoDiskPressure'\n | 'KubeletReady';\n\nexport type NodeStatusType =\n | 'OutOfDisk'\n | 'MemoryPressure'\n | 'DiskPressure'\n | 'Ready';\n\nexport interface NodeTaint {\n key: string;\n timeAdded?: string;\n effect: TaintEffect;\n value?: string;\n unschedulable?: boolean;\n}\n\nexport interface Node extends KubernetesResource {\n spec?: {\n providerID?: string;\n taints?: NodeTaint[];\n configSource?: string;\n unschedulable?: boolean;\n podCIDR?: string;\n podCIDRs?: string[];\n externalID?: string;\n ip?: string;\n };\n status?: NodeStatus;\n}\n\nexport interface NodeStatus {\n volumesAttached: boolean;\n daemonEndpoints: {\n kubeletEndpoint: {\n port: number;\n };\n };\n capacity: Record<string, string>;\n addresses: Array<{\n type: string;\n address: string;\n }>;\n allocatable: {\n 'alpha.kubernetes.io/nvidia-gpu': string;\n 'tencent.com/vcuda-core': string;\n 'tencent.com/vcuda-memory': string;\n pods: string;\n cpu: string;\n memory: string;\n };\n images: Array<{\n sizeBytes: number;\n names: string[];\n }>;\n nodeInfo: {\n kubeProxyVersion: string;\n operatingSystem: string;\n kernelVersion: string;\n systemUUID: string;\n containerRuntimeVersion: string;\n osImage: string;\n architecture: string;\n bootID: string;\n machineID: string;\n kubeletVersion: string;\n };\n volumesInUse: boolean;\n phase: string;\n conditions: Condition[];\n}\n\nexport interface Service extends KubernetesResource {\n kind: 'Service';\n spec?: ServiceSpec;\n status?: {\n loadBalancer?: {\n ingress?: Array<{\n hostname?: string;\n ip?: string;\n }>;\n };\n };\n}\n\nexport const SERVICE_TYPES = [\n 'ClusterIP',\n 'NodePort',\n 'LoadBalancer',\n 'ExternalName',\n] as const;\nexport const SERVICE_SESSION_AFFINITIES = ['None', 'ClientIP'] as const;\n\nexport type ServiceType = (typeof SERVICE_TYPES)[number];\n\nexport type ServiceSessionAffinity =\n (typeof SERVICE_SESSION_AFFINITIES)[number];\n\nexport interface ServiceSpec {\n clusterIP?: string;\n clusterIPs?: string[];\n externalIPs?: string[];\n externalName?: string;\n ipFamilies?: ['IPv4'] | ['IPv6'] | ['IPv4', 'IPv6'] | ['IPv6', 'IPv4'];\n ipFamilyPolicy?: 'SingleStack' | 'PreferDualStack' | 'RequireDualStack';\n ports?: ServicePort[];\n selector?: StringMap;\n type?: ServiceType;\n sessionAffinity?: ServiceSessionAffinity;\n}\n\nexport const SERVICE_PORT_BASE_PROTOCOLS = ['TCP', 'UDP'] as const;\nexport type ServicePortBaseProtocol =\n (typeof SERVICE_PORT_BASE_PROTOCOLS)[number];\n\nexport const SERVICE_PORT_PROTOCOLS = [\n 'TCP',\n 'UDP',\n 'HTTP',\n 'HTTPS',\n 'HTTP2',\n 'gRPC',\n] as const;\nexport type ServicePortProtocol = (typeof SERVICE_PORT_PROTOCOLS)[number];\n\nexport interface ServicePort {\n name?: string;\n nodePort?: number;\n port?: number;\n protocol?: ServicePortBaseProtocol;\n appProtocol?: Lowercase<ServicePortProtocol>;\n targetPort?: number | string;\n}\n\nexport interface CustomResourceDefinitionVersion {\n name: string;\n served: boolean;\n storage: boolean;\n schema?: {\n openAPIV3Schema: OpenAPIV3SchemaObject;\n };\n}\n\nexport interface CustomResourceDefinition extends KubernetesResource {\n kind: 'CustomResourceDefinition';\n spec: {\n group: string;\n version: string;\n names: {\n plural: string;\n singular: string;\n kind: string;\n listKind: string;\n };\n scope: string;\n validation: {\n openAPIV3Schema: OpenAPIV3SchemaObject;\n };\n versions: CustomResourceDefinitionVersion[];\n preserveUnknownFields: boolean;\n };\n}\n\nexport interface NameSpaceResourceRatio extends KubernetesResource {\n spec: {\n cpu: number;\n memory: number;\n };\n status: {\n clusterCPU: number;\n clusterMemory: number;\n };\n}\n\n// https://github.com/kubernetes/kubernetes/blob/5a99930ab57b2c7837960b21d2c92e958db8c377/pkg/apis/core/types.go#L5575\nexport interface K8sEventSeries {\n count: number;\n lastObservedTime: string;\n}\n\nexport interface K8sEventSource {\n component?: string;\n host?: string;\n}\n\nexport interface K8sEvent extends KubernetesResource {\n involvedObject?: ObjectReference;\n reason?: string;\n message?: string;\n source?: K8sEventSource;\n firstTimestamp?: string;\n lastTimestamp?: string;\n count?: number;\n type?: string;\n eventTime?: string;\n series?: K8sEventSeries;\n action?: string;\n related?: ObjectReference;\n reportingController?: string;\n reportingInstance?: string;\n}\n\nexport interface ResourcePatch extends KubernetesResource {\n spec?: {\n jsonPatch: Array<{\n op: string;\n path: string;\n value: string;\n }>;\n target?: {\n apiVersion: string;\n kind: string;\n name: string;\n namespace: string;\n };\n release: string;\n };\n}\n","/**\n * @packageDocumentation\n * @module types\n * @preferred\n */\n\nexport * from './common';\nexport * from './helpers';\nexport * from './k8s';\n","/**\n * @packageDocumentation\n * @module utils\n */\n\nexport const API_GATEWAY = '{{API_GATEWAY}}';\n\nexport const TRUE = 'true';\nexport const FALSE = 'false';\n\nexport const EMPTY = '';\nexport const SPACE = ' ';\nexport const DOT = '.';\nexport const SLASH = '/';\nexport const HYPHEN = '-';\nexport const UNDERSCORE = '_';\nexport const DELIMITER = ':';\n\nexport const WILDCARD = '.*';\n\nexport const DATE_FORMAT = 'YYYY-MM-DD';\nexport const TIME_FORMAT = 'HH:mm:ss';\nexport const DATE_TIME_FORMAT = `${DATE_FORMAT} ${TIME_FORMAT}`;\n\nexport const WORKSPACE_PARAMS = 'workspace_params_v1';\n\nexport const PUBLIC_NAMESPACE = 'kube-public';\n\nexport const ASSIGN_ALL = 'ALL_ALL';\nexport const ALL = 'ALL';\n\nexport const Bracket = {\n PARENTHESES: ['(', ')'],\n BRACES: ['{', '}'],\n SQUARE_BRACKETS: ['[', ']'],\n POINTY_BRACKETS: ['<', '>'],\n} as const;\n\nexport const TEMPLATE_OPTIONS = Object.freeze({\n interpolate: /{{([\\S\\s]+?)}}/g,\n});\n\nexport const DEFAULT_CODE_EDITOR_OPTIONS: import('@alauda/code-editor').MonacoEditorOptions =\n {\n fontSize: 12,\n folding: true,\n scrollBeyondLastLine: false,\n minimap: { enabled: false },\n find: {\n seedSearchStringFromSelection: 'never',\n autoFindInSelection: 'never',\n },\n mouseWheelZoom: true,\n scrollbar: {\n vertical: 'visible',\n horizontal: 'visible',\n },\n fixedOverflowWidgets: true,\n };\n\nexport const NOTIFY_ON_ERROR_HEADER = '__NOTIFICATION_ON_ERROR__';\n\nexport const NOTIFY_DURATION_HEADER = '__NOTIFICATION_DURATION__';\n\nexport const NOTIFY_ON_ERROR_HEADERS = {\n [NOTIFY_ON_ERROR_HEADER]: TRUE,\n} as const;\n\nexport const NOT_NOTIFY_ON_ERROR_HEADERS = {\n [NOTIFY_ON_ERROR_HEADER]: FALSE,\n} as const;\n\n// 当前环境是否允许降级\n// 'enabled_downgrade_watch' 主要提供本地开发强制打开需要\nexport const DOWNGRADE_WATCH_ENABLED =\n localStorage.getItem('enabled_downgrade_watch') === TRUE ||\n (document.location.protocol !== 'https:' &&\n document.location.hostname !== 'localhost');\n\nexport const DOWNGRADE_WATCH_POLLING = 5000 as const;\n\nexport const CREATED_AT = 'created_at';\nexport const UPDATED_AT = 'updated_at';\nexport const ACTION = 'action';\nexport const SPEC = 'spec';\nexport const CREATE = 'create';\nexport const UPDATE = 'update';\nexport const LINK = 'link';\n\nexport const ESCAPE_DEACTIVATE_CHECK = 'escape';\n\nexport const CUSTOMIZED = 'customized';\n\nexport const GLOBAL_CLUSTER = 'global';\n\nexport const PACKAGE_RUNTIME_VALUE = 'Runtime';\n\nexport const CRYPTO_HEADER_KEY = 'X-Param-Response';\nexport enum CRYPTO_TYPE {\n Enable = 'Force',\n Drop = 'Drop',\n Disable = 'None',\n}\nexport const CRYPTO_RANDOM_HEADER_KEY = 'X-Param-Init';\nexport const CRYPTO_KEY = 'alauda';\n\nexport const PLATFORM_OPS_MODE = 'platform-ops-mode';\n\n// https://kubernetes.io/docs/reference/labels-annotations-taints/#kubectl-kubernetes-io-default-container\nexport const DEFAULT_CONTAINER_ANNOTATION =\n 'kubectl.kubernetes.io/default-container';\n\nexport const NOTIFICATION_SERVER_NAME = 'platform-email-server';\n","export const METADATA = 'metadata';\nexport const NAMESPACE = 'namespace';\nexport const NAME = 'name';\nexport const CREATION_TIMESTAMP = 'creationTimestamp';\nexport const ANNOTATIONS = 'annotations';\nexport const LABELS = 'labels';\nexport const DISPLAY_NAME = 'display-name';\nexport const DESCRIPTION = 'description';\nexport const CREATOR = 'creator';\nexport const UPDATED__AT = 'updated-at';\nexport const PROJECT = 'project';\nexport const CLUSTER = 'cluster';\n","export const DOMAIN_PATTERN_BASE = '^([\\\\da-z.-]+)\\\\.([a-z.]{2,6})$';\n\nexport const IP_PATTERN_BASE =\n '^(?:(?:25[0-5]|2[0-4]\\\\d|[01]?\\\\d{1,2})\\\\.){3}(?:25[0-5]|2[0-4]\\\\d|[01]?\\\\d{1,2})$';\n\nexport const IPV6_PATTERN_BASE =\n '^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]+|::(ffff(:0{1,4})?:)?((25[0-5]|(2[0-4]|1?[0-9])?[0-9]).){3}(25[0-5]|(2[0-4]|1?[0-9])?[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?[0-9])?[0-9]).){3}(25[0-5]|(2[0-4]|1?[0-9])?[0-9]))$';\n\nconst PROTOCOL_PATTERN_BASE = 'https?://';\nconst PORT_PATTERN_BASE =\n '(:(6553[0-5]|655[0-2]\\\\d|65[0-4]\\\\d\\\\d|6[0-4]\\\\d\\\\d\\\\d|[1-5]\\\\d\\\\d\\\\d\\\\d|[1-9]\\\\d\\\\d\\\\d|[1-9]\\\\d\\\\d|[1-9]\\\\d|[1-9]))';\n\nconst addPortAndProtocol = (patternStr: string) => {\n const main = patternStr.replace(/(^\\^)?/, '').replace(/(\\$?)$/, '');\n return `^(${PROTOCOL_PATTERN_BASE})?${main}(${PORT_PATTERN_BASE})?$`;\n};\n\nconst addPortAndProtocolForIpv6 = (patternStr: string) => {\n const main = patternStr.replace(/(^\\^)?/, '').replace(/(\\$?)$/, '');\n return `(${patternStr})|(^(${PROTOCOL_PATTERN_BASE})\\\\[${main}\\\\]$)|(^(${PROTOCOL_PATTERN_BASE})?\\\\[${main}\\\\](${PORT_PATTERN_BASE})$)`;\n};\n\nexport const PORT_PATTERN = {\n pattern:\n /(^[1-9]\\d{0,3}$)|(^[1-5]\\d{4}$)|^(6[0-4]\\d{3}$)|(^65[0-4]\\d{2}$)|(^655[0-2]\\d$)|(^6553[0-5]$)/,\n tip: 'invalid_port',\n};\n\n// include ipv4, domain\nexport const IP_ADDRESS_HOSTNAME_PATTERN = {\n pattern: new RegExp(`(${IP_PATTERN_BASE})|(${DOMAIN_PATTERN_BASE})`),\n tip: 'regexp_tip_ip_address_or_hostname',\n};\n\n// include ipv6, domain\nexport const IPV6_ADDRESS_HOSTNAME_PATTERN = {\n pattern: new RegExp(`(${IPV6_PATTERN_BASE})|(${DOMAIN_PATTERN_BASE})`),\n tip: 'regexp_tip_ipv6_address_or_hostname',\n};\n\n// include ipv4, domain, and support port and protocol\nexport const IP_ADDRESS_HOSTNAME_PORT_PATTERN = {\n pattern: new RegExp(\n `(${addPortAndProtocol(IP_PATTERN_BASE)})|(${addPortAndProtocol(\n DOMAIN_PATTERN_BASE,\n )})`,\n ),\n tip: 'regexp_tip_ip_address_or_hostname',\n};\n\n// include ipv6, domain, and support port and protocol\nexport const IPV6_ADDRESS_HOSTNAME_PORT_PATTERN = {\n pattern: new RegExp(\n `(${addPortAndProtocolForIpv6(IPV6_PATTERN_BASE)})|(${addPortAndProtocol(\n DOMAIN_PATTERN_BASE,\n )})`,\n ),\n tip: 'regexp_tip_ipv6_address_or_hostname',\n};\n\n// include ipv4, ipv6, domain, and support port and protocol\nexport const IPV4_IPV6_ADDRESS_HOSTNAME_PORT_PATTERN = {\n pattern: new RegExp(\n `(${addPortAndProtocol(IP_PATTERN_BASE)})|(${addPortAndProtocolForIpv6(\n IPV6_PATTERN_BASE,\n )})|(${addPortAndProtocol(DOMAIN_PATTERN_BASE)})`,\n ),\n tip: 'regexp_tip_ipv4_ipv6_address_or_hostname',\n};\n\n// include ipv4, ipv6, domain\nexport const IP_ADDRESS_HOSTNAME_PATTERN_EXTEND = {\n pattern: new RegExp(\n `(${IP_PATTERN_BASE})|(${DOMAIN_PATTERN_BASE})|(${IPV6_PATTERN_BASE})`,\n ),\n tip: 'regexp_tip_ip_address_or_hostname',\n};\n\nexport const IP_ADDRESS_SUBNET_PATTERN = {\n pattern:\n /^((\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])\\.){3}(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])\\/\\d+$/,\n tip: 'regexp_tip_ip_address_with_subnet',\n};\n\nexport const DOMAIN_PATTERN = {\n pattern: new RegExp(DOMAIN_PATTERN_BASE),\n placeholder: 'domain_regexp_placeholder',\n tip: 'domain_regexp_tip',\n};\n\nexport const IP_ADDRESS_PATTERN = {\n pattern:\n /^(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d{1,2})\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d{1,2})$/,\n placeholder: 'ip_address_placeholder',\n tip: 'regexp_tip_ip_address',\n};\n\nexport const IP_PATTERN = {\n pattern:\n /^((2(5[0-5]|[0-4]\\d))|[01]?\\d{1,2})(\\.((2(5[0-5]|[0-4]\\d))|[01]?\\d{1,2})){3}$/,\n tip: 'invalid_ip',\n};\n\nexport const IP_V6_PATTERN = {\n pattern: new RegExp(`${IPV6_PATTERN_BASE}`),\n tip: 'invalid_ip',\n};\n\nexport const IP_V6_ADDRESS_PATTERN = {\n pattern: new RegExp(IPV6_PATTERN_BASE),\n};\n\nexport const IP_V4_OR_V6_PATTERN = {\n pattern: new RegExp(`(${IP_PATTERN_BASE})|(${IPV6_PATTERN_BASE})`),\n};\n\nexport const IP_ADDRESS_PORT_PATTERN = {\n pattern: new RegExp(`${IP_PATTERN_BASE.slice(0, -1)}(?::\\\\d+)?$`),\n tip: 'regexp_tip_ip_address',\n};\n\nexport const INT_ZERO_PATTERN = {\n pattern: /^(0|\\+?[1-9]\\d*)$/,\n tip: 'regexp_tip_positive_integer_pattern_zero',\n};\n\nexport const POSITIVE_INT_PATTERN = {\n pattern: /^[1-9]\\d*$/,\n tip: 'regexp_tip_positive_integer_pattern',\n};\n\nexport const POSITIVE_NUMBER_PATTERN = {\n pattern: /^([1-9]\\d*(?:\\.\\d*)?|0*\\.0*[1-9]\\d*)$/,\n tip: 'regexp_tip_positive_number_pattern',\n};\n\nexport const K8S_RESOURCE_NAME_BASE = {\n pattern: /^[\\da-z]([\\da-z-]*[\\da-z])?$/,\n tip: 'regexp_tip_k8s_resource_name_base',\n};\n\nexport const K8S_RESOURCE_LABEL_KEY_PREFIX_PATTERN = {\n pattern: /^[\\da-z]([\\da-z-]*[\\da-z])?(\\.[\\da-z]([\\da-z-]*[\\da-z])?)*$/,\n tip: 'regexp_tip_resource_label_key_prefix',\n};\n\n// 不能直接用来校验 label key,需要使用 `k8sResourceLabelKeyValidator`\nexport const K8S_RESOURCE_LABEL_KEY_NAME_PATTERN = {\n pattern: /^(([\\dA-Za-z][\\w.-]*)?[\\dA-Za-z])$/,\n tip: 'k8s_resource_label_key_invalid',\n};\n\nexport const K8S_RESOURCE_LABEL_VALUE_PATTERN = {\n pattern: /^(([\\dA-Za-z][\\w.-]*)?[\\dA-Za-z])?$/,\n tip: 'k8s_resource_label_value_invalid',\n};\n\nexport const K8S_RESOURCE_NAME_START_WITH_CHARS_ONLY = {\n pattern: /^[a-z]([\\da-z-]*[\\da-z])?$/,\n tip: 'regexp_tip_k8s_resource_name_start_with_chars_only',\n};\n\nexport const HTTP_IP_OR_DOMAIN_PATTERN = {\n pattern:\n /^((http|https):\\/\\/)((((2(5[0-5]|[0-4]\\d))|[01]?\\d{1,2})(\\.((2(5[0-5]|[0-4]\\d))|[01]?\\d{1,2})){3})|((([\\dA-Za-z-]*[\\dA-Za-z])\\.)*([A-Za-z]|[A-Za-z][\\dA-Za-z-]*[\\dA-Za-z])))(:(([1-9]\\d{0,3})|([1-5]\\d{4})|(6[0-4]\\d{3})|(65[0-4]\\d{2})|(655[0-2]\\d)|(6553[0-5])))?(\\/\\S*)*$/,\n tip: 'domain_ip_placeholder',\n};\n\nexport const HTTP_DUAL_IP_OR_DOMAIN_PATTERN = {\n pattern:\n /^((http|https):\\/\\/)((((2(5[0-5]|[0-4]\\d))|[01]?\\d{1,2})(\\.((2(5[0-5]|[0-4]\\d))|[01]?\\d{1,2})){3})|((([\\dA-Za-z-]*[\\dA-Za-z])\\.)*([A-Za-z]|[A-Za-z][\\dA-Za-z-]*[\\dA-Za-z]))|(\\[((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:)(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\]))(:(([1-9]\\d{0,3})|([1-5]\\d{4})|(6[0-4]\\d{3})|(65[0-4]\\d{2})|(655[0-2]\\d)|(6553[0-5])))?(\\/\\S*)*$/,\n tip: 'domain_ip_placeholder',\n};\n\nexport const HTTP_ADDRESS_PATTERN = {\n pattern: /^(http|https):\\/\\/([\\w.])\\S*$/,\n tip: 'http_address_format_limit',\n};\n\nexport const EMAIL_PATTERN = {\n pattern: /^[\\w.-]+@[\\w-]+(\\.[\\w-]+)+$/,\n tip: 'invalid_email',\n};\n\nexport const IMAGE_TAG_PATTERN = {\n pattern: /^((sha256:[\\da-f]{6,64})|(\\w[\\w.-]{0,127}))$/,\n tip: 'regexp_tip_image_tag',\n placeholder: 'image_tag_input_placeholder',\n};\n\nexport const INT_PATTERN = {\n pattern: /^-?\\d+$/,\n tip: 'regexp_tip_integer_pattern',\n};\n\nexport const NUMBER_PATTERN = {\n pattern: /^-?\\d+(\\.\\d*)?$/,\n tip: 'invalid_number',\n};\n","import { StringMap } from '../types';\n\nexport enum GenericStatusIcon {\n Check = 'check_circle_s',\n Running = 'arrow_right_circle_s',\n Error = 'xmark_circle_s',\n Missing = 'prod:lose',\n Stopped = 'stop_circle_s',\n Pending = 'rotate_circle_s',\n Question = 'question_circle_s',\n Exclamation = 'exclamation_circle_s',\n Warning = 'exclamation_triangle_s',\n Deleting = 'trash_circle_s',\n Invalid = 'minus_circle_s',\n Pause = 'pause_circle_s',\n Alarm = 'siren',\n Upgradeable = 'prod:upgradable_s',\n Provisioning = 'hourglass_circle_s',\n Circle = 'circle',\n Healthy = 'prod:heart_pulse_circle_s',\n play = 'play_circle_s',\n}\n\nexport enum GenericStatusColor {\n Pending = 'rgb(var(--aui-color-blue))',\n Running = 'rgb(var(--aui-color-green))',\n // eslint-disable-next-line @typescript-eslint/no-duplicate-enum-values\n Succeeded = 'rgb(var(--aui-color-green))',\n Warning = 'rgb(var(--aui-color-yellow))',\n Failed = 'rgb(var(--aui-color-red))',\n Stopped = 'rgb(var(--aui-color-n-3))',\n Empty = 'rgb(var(--aui-color-n-4))',\n Missing = 'rgb(var(--aui-color-n-6))',\n // eslint-disable-next-line @typescript-eslint/no-duplicate-enum-values\n Completed = 'rgb(var(--aui-color-n-3))',\n}\n\nexport const DefaultStatusColorMapper: StringMap = {\n normal: GenericStatusColor.Running,\n success: GenericStatusColor.Running,\n running: GenericStatusColor.Running,\n error: GenericStatusColor.Failed,\n abnormal: GenericStatusColor.Failed,\n stopped: GenericStatusColor.Stopped,\n pending: GenericStatusColor.Pending,\n info: GenericStatusColor.Empty,\n provisioning: GenericStatusColor.Pending,\n failed: GenericStatusColor.Failed,\n processing: GenericStatusColor.Pending,\n waiting: GenericStatusColor.Empty,\n};\n\nexport const DefaultStatusIconMapper: StringMap = {\n normal: GenericStatusIcon.Check,\n success: GenericStatusIcon.Check,\n running: GenericStatusIcon.Running,\n abnormal: GenericStatusIcon.Error,\n error: GenericStatusIcon.Error,\n stopped: GenericStatusIcon.Stopped,\n pending: GenericStatusIcon.Pending,\n info: GenericStatusIcon.Question,\n alarm: GenericStatusIcon.Alarm,\n provisioning: GenericStatusIcon.Provisioning,\n failed: GenericStatusIcon.Error,\n processing: GenericStatusIcon.Pending,\n waiting: GenericStatusIcon.Invalid,\n};\n","export const BASE_TIMEZONE = 'Etc/UTC';\n\nexport const TIMEZONES = [\n {\n name: '(UTC-12:00) International Date Line West',\n name_zh: '(UTC-12:00) 国际日期变更线西',\n tzCode: 'Etc/GMT+12',\n },\n {\n name: '(UTC-11:00) Coordinated Universal Time-1',\n name_zh: '(UTC-11:00) 协调世界时-1',\n tzCode: 'Etc/GMT+11',\n },\n {\n name: '(UTC-10:00) Hawaii',\n name_zh: '(UTC-10:00) 夏威夷',\n tzCode: 'Pacific/Honolulu',\n },\n {\n name: '(UTC-07:00) Arizona',\n name_zh: '(UTC-07:00) 亚利桑那州',\n tzCode: 'America/Phoenix',\n },\n\n {\n name: '(UTC-06:00) Saskatchewan',\n name_zh: '(UTC-06:00) 萨斯喀彻温省',\n tzCode: 'America/Regina',\n },\n {\n name: '(UTC-06:00) Central America',\n name_zh: '(UTC-06:00) 中部美洲',\n tzCode: 'America/Belize',\n },\n\n {\n name: '(UTC-05:00) Bogota, Lima, Quito',\n name_zh: '(UTC-05:00) 波哥大,利马,基多',\n tzCode: 'America/Bogota',\n },\n\n {\n name: '(UTC-04:30) Caracas',\n name_zh: '(UTC-04:30) 加拉加斯',\n tzCode: 'America/Caracas',\n },\n {\n name: '(UTC-04:00) Georgetown, La Paz, Manaus, San Juan',\n name_zh: '(UTC-04:00) 乔治敦,拉巴斯,马瑙斯,圣胡安',\n tzCode: 'America/La_Paz',\n },\n {\n name: '(UTC-03:00) Cayenne, Fortaleza',\n name_zh: '(UTC-03:00) 卡宴,福塔莱萨',\n tzCode: 'America/Fortaleza',\n },\n {\n name: '(UTC-03:00) Buenos Aires',\n name_zh: '(UTC-03:00) 布宜诺斯艾利斯',\n tzCode: 'America/Argentina/Buenos_Aires',\n },\n {\n name: '(UTC-02:00) Coordinated Universal Time-02',\n name_zh: '(UTC-02:00) 协调世界时-02',\n tzCode: 'Etc/GMT+2',\n },\n {\n name: '(UTC-01:00) Cabo Verde Is.',\n name_zh: '(UTC-01:00) 佛得角',\n tzCode: 'Atlantic/Cape_Verde',\n },\n {\n name: '(UTC+00:00) Coordinated Universal Time',\n name_zh: '(UTC) 协调世界时',\n tzCode: 'Etc/UTC',\n },\n {\n name: '(UTC+00:00) Monrovia, Reykjavik',\n name_zh: '(UTC) 蒙罗维亚,雷克雅维克',\n tzCode: 'Africa/Monrovia',\n },\n {\n name: '(UTC+01:00) West Central Africa',\n name_zh: '(UTC+01:00) 中西非洲',\n tzCode: 'Africa/Lagos',\n },\n {\n name: '(UTC+02:00) Harare, Pretoria',\n name_zh: '(UTC+02:00) 哈拉雷,比勒陀利亚',\n tzCode: 'Africa/Harare',\n },\n {\n name: '(UTC+03:00) Baghdad',\n name_zh: '(UTC+03:00) 巴格达',\n tzCode: 'Asia/Baghdad',\n },\n {\n name: '(UTC+03:00) Kuwait, Riyadh',\n name_zh: '(UTC+03:00) 科威特,利雅得',\n tzCode: 'Asia/Riyadh',\n },\n {\n name: '(UTC+03:00) Nairobi',\n name_zh: '(UTC+03:00) 内罗毕',\n tzCode: 'Africa/Nairobi',\n },\n {\n name: '(UTC+04:00) Abu Dhabi, Muscat',\n name_zh: '(UTC+04:00) 阿布扎比,马斯喀特',\n tzCode: 'Asia/Dubai',\n },\n {\n name: '(UTC+04:00) Port Louis',\n name_zh: '(UTC+04:00) 路易港',\n tzCode: 'Indian/Mauritius',\n },\n {\n name: '(UTC+04:00) Tbilisi',\n name_zh: '(UTC+04:00) 第比利斯',\n tzCode: 'Asia/Tbilisi',\n },\n {\n name: '(UTC+04:30) Kabul',\n name_zh: '(UTC+04:30) 喀布尔',\n tzCode: 'Asia/Kabul',\n },\n {\n name: '(UTC+05:00) Islamabad, Karachi',\n name_zh: '(UTC+05:00) 伊斯兰堡,卡拉奇',\n tzCode: 'Asia/Karachi',\n },\n {\n name: '(UTC+05:00) Toshkent',\n name_zh: '(UTC+05:00) Toshkent',\n tzCode: 'Asia/Tashkent',\n },\n {\n name: '(UTC+05:30) Chennai, Kolkata, Mumbai, New Delhi',\n name_zh: '(UTC+05:30) 金奈,加尔各答,孟买,新德里',\n tzCode: 'Asia/Kolkata',\n },\n {\n name: '(UTC+05:30) Sri Jayawardenepura',\n name_zh: '(UTC+05:30) 斯里哈亚华登尼普拉',\n tzCode: 'Asia/Colombo',\n },\n {\n name: '(UTC+05:45) Kathmandu',\n name_zh: '(UTC+05:45) 加德满都',\n tzCode: 'Asia/Kathmandu',\n },\n {\n name: '(UTC+06:00) Nur-Sultan',\n name_zh: '(UTC+06:00) Nur-Sultan',\n tzCode: 'Asia/Almaty',\n },\n {\n name: '(UTC+06:00) Dhaka',\n name_zh: '(UTC+06:00) 达卡',\n tzCode: 'Asia/Dhaka',\n },\n {\n name: '(UTC+06:30) Yangon (Rangoon)',\n name_zh: '(UTC+06:30) 仰光',\n tzCode: 'Asia/Yangon',\n },\n {\n name: '(UTC+07:00) Bangkok, Hanoi, Jakarta',\n name_zh: '(UTC+07:00) 曼谷,河内,雅加达',\n tzCode: 'Asia/Bangkok',\n },\n {\n name: '(UTC+08:00) Beijing, Chongqing, Hong Kong, Urumqi',\n name_zh: '(UTC+08:00) 北京,重庆,香港,乌鲁木齐',\n tzCode: 'Asia/Shanghai',\n },\n {\n name: '(UTC+08:00) Kuala Lumpur, Singapore',\n name_zh: '(UTC+08:00) 吉隆坡,新加坡',\n tzCode: 'Asia/Kuala_Lumpur',\n },\n {\n name: '(UTC+08:00) Perth',\n name_zh: '(UTC+08:00) 珀斯',\n tzCode: 'Australia/Perth',\n },\n {\n name: '(UTC+08:00) Taipei',\n name_zh: '(UTC+08:00) 台北',\n tzCode: 'Asia/Taipei',\n },\n {\n name: '(UTC+08:00) Ulaanbaatar',\n name_zh: '(UTC+08:00) 乌兰巴托',\n tzCode: 'Asia/Ulaanbaatar',\n },\n {\n name: '(UTC+09:00) Osaka, Sapporo, Tokyo',\n name_zh: '(UTC+09:00) 大阪,札幌,东京',\n tzCode: 'Asia/Tokyo',\n },\n {\n name: '(UTC+09:00) Seoul',\n name_zh: '(UTC+09:00) 首尔',\n tzCode: 'Asia/Seoul',\n },\n {\n name: '(UTC+09:30) Darwin',\n name_zh: '(UTC+09:30) 达尔文',\n tzCode: 'Australia/Darwin',\n },\n {\n name: '(UTC+10:00) Brisbane',\n name_zh: '(UTC+10:00) 布里斯班',\n tzCode: 'Australia/Brisbane',\n },\n {\n name: '(UTC+10:00) Guam, Port Moresby',\n name_zh: '(UTC+10:00) 关岛,莫尔兹比港',\n tzCode: 'Pacific/Guam',\n },\n {\n name: '(UTC+11:00) Magadan, Solomon Is., New Caledonia',\n name_zh: '(UTC+11:00) 马加丹,所罗门群岛,新喀里多尼亚',\n tzCode: 'Asia/Magadan',\n },\n {\n name: '(UTC+12:00) Coordinated Universal Time+12',\n name_zh: '(UTC+12:00) 协调世界时+12',\n tzCode: 'Etc/GMT-12',\n },\n {\n name: \"(UTC+13:00) Nuku'alofa\",\n name_zh: '(UTC+13:00) 努库阿洛法',\n tzCode: 'Pacific/Tongatapu',\n },\n];\n","const CRD_GROUP = 'crd.alauda.io';\nconst AIOPS_GROUP = 'aiops.alauda.io';\nconst AUTH_GROUP = 'auth.alauda.io';\nconst COREOS_OPERATOR_GROUP = 'operators.coreos.com';\nconst APP_GROUP = 'app.alauda.io';\nconst STORAGE_GROUP = 'storage.k8s.io';\nconst TKE_PLATFORM_GROUP = 'platform.tkestack.io';\nconst CLUSTER_API_GROUP = 'cluster.alauda.io';\nexport const AIT_API_GROUP = 'ait.alauda.io';\n\nexport const OAM_GROUP = 'core.oam.dev';\n\nexport const ARGOCD_GROUP = 'argoproj.io';\nexport const MACHINE_API_GROUP = 'machine.alauda.io';\nexport const VOLUME_SNAPSHOT_GROUP = 'snapshot.storage.k8s.io';\nexport const K8S_CORE_API_GROUP = 'core.kubernetes.io';\nexport const K8S_APP_API_GROUP = 'app.k8s.io';\n\nexport const COMMON_RESOURCE_DEFINITIONS = {\n ALAUDA_LOADBALANCER2: {\n apiGroup: CRD_GROUP,\n type: 'alaudaloadbalancer2',\n },\n ALB2: {\n apiGroup: CRD_GROUP,\n apiVersion: 'v2beta1',\n type: 'alaudaloadbalancer2',\n },\n HELM_REQUEST: {\n type: 'helmrequests',\n apiGroup: APP_GROUP,\n apiVersion: 'v1alpha1',\n },\n // TODO: 只提供云边使用,后续容器平台需要升级到 v1\n HELM_REQUEST_V1: {\n type: 'helmrequests',\n apiGroup: APP_GROUP,\n apiVersion: 'v1',\n },\n DEPLOYMENT: {\n apiGroup: 'apps',\n type: 'deployments',\n },\n DAEMONSET: {\n apiGroup: 'apps',\n type: 'daemonsets',\n },\n STATEFULSET: {\n apiGroup: 'apps',\n type: 'statefulsets',\n },\n FRONTEND: {\n apiGroup: CRD_GROUP,\n type: 'frontends',\n },\n RULE: {\n apiGroup: CRD_GROUP,\n type: 'rules',\n },\n POD: {\n type: 'pods',\n },\n PODS_EXEC: {\n type: 'pods/exec',\n },\n PODS_ROOT_EXEC: {\n type: 'pods/root-exec',\n },\n CONFIG_MAP: {\n type: 'configmaps',\n },\n ALERT_TEMPLATE: {\n apiGroup: AIOPS_GROUP,\n apiVersion: 'v1beta1',\n type: 'alerttemplates',\n },\n APPLICATION: {\n apiGroup: K8S_APP_API_GROUP,\n apiVersion: 'v1beta1',\n type: 'applications',\n },\n APPLICATION_HISTORY: {\n apiGroup: K8S_APP_API_GROUP,\n apiVersion: 'v1beta1',\n type: 'applicationhistories',\n },\n CLUSTER: {\n apiGroup: 'clusterregistry.k8s.io',\n apiVersion: 'v1alpha1',\n type: 'clusters',\n },\n CLUSTER_VIEW: {\n apiGroup: 'cluster.alauda.io',\n apiVersion: 'v1',\n type: 'clusterviews',\n },\n DAEMON_SET: {\n apiGroup: 'apps',\n type: 'daemonsets',\n },\n STATEFUL_SET: {\n apiGroup: 'apps',\n type: 'statefulsets',\n },\n DOMAIN: {\n apiGroup: CRD_GROUP,\n apiVersion: 'v2',\n type: 'domains',\n },\n FEATURE: {\n apiGroup: 'infrastructure.alauda.io',\n apiVersion: 'v1alpha1',\n type: 'features',\n },\n ALAUDA_FEATURE_GATE: {\n apiGroup: 'alauda.io',\n apiVersion: 'v1',\n type: 'alaudafeaturegates',\n },\n CLUSTER_ALAUDA_FEATURE_GATE: {\n apiGroup: 'alauda.io',\n apiVersion: 'v1',\n type: 'clusteralaudafeaturegates',\n },\n HORIZONTAL_POD_AUTOSCALER: {\n apiGroup: 'autoscaling',\n apiVersion: 'v2',\n type: 'horizontalpodautoscalers',\n },\n LOG: {\n apiGroup: AIOPS_GROUP,\n apiVersion: 'v1beta1',\n type: 'logs',\n },\n PROJECT: {\n apiGroup: AUTH_GROUP,\n type: 'projects',\n },\n PROMETHEUS_RULE: {\n apiGroup: 'monitoring.coreos.com',\n apiVersion: 'v1',\n type: 'prometheusrules',\n },\n ALERT_HISTORY: {\n apiGroup: AIOPS_GROUP,\n type: 'alerthistories',\n },\n SELF_SUBJECT_ACCESS_REVIEW: {\n apiGroup: 'authorization.k8s.io',\n type: 'selfsubjectaccessreviews',\n },\n VIEW: {\n apiGroup: AUTH_GROUP,\n type: 'views',\n },\n SERVICE: {\n type: 'services',\n },\n LIMIT_RANGE: {\n type: 'limitranges',\n },\n SECRET: {\n type: 'secrets',\n },\n CRON_JOB: {\n apiGroup: 'batch',\n apiVersion: 'v1',\n type: 'cronjobs',\n },\n ADVANCED_CRON_JOB: {\n type: 'advancedcronjobs',\n apiGroup: 'operator.alauda.io',\n apiVersion: 'v1alpha1',\n },\n JOB: {\n apiGroup: 'batch',\n type: 'jobs',\n },\n INGRESS: {\n apiGroup: 'networking.k8s.io',\n type: 'ingresses',\n },\n PERSISTENT_VOLUME_CLAIM: {\n type: 'persistentvolumeclaims',\n },\n NAMESPACE: {\n type: 'namespaces',\n },\n NODE: {\n type: 'nodes',\n },\n NODE_METRICS: {\n apiGroup: 'metrics.k8s.io',\n apiVersion: 'v1beta1',\n type: 'nodes',\n },\n PV: {\n type: 'persistentvolumes',\n },\n CRD: {\n apiGroup: 'apiextensions.k8s.io',\n type: 'customresourcedefinitions',\n },\n CHART_REPO: {\n type: 'chartrepos',\n apiGroup: APP_GROUP,\n apiVersion: 'v1beta1',\n },\n CHART: {\n type: 'charts',\n apiGroup: APP_GROUP,\n apiVersion: 'v1alpha1',\n },\n NETWORK_POLICY: {\n apiGroup: 'networking.k8s.io',\n type: 'networkpolicies',\n },\n SERVICE_ACCOUNT: {\n type: 'serviceaccounts',\n },\n REPLICA_SET: {\n apiGroup: 'apps',\n type: 'replicasets',\n },\n POD_SECURITY_POLICY: {\n apiGroup: 'policy',\n apiVersion: 'v1beta1',\n type: 'podsecuritypolicies',\n },\n NAMESPACE_OVERVIEW: {\n apiGroup: 'k8s.io',\n type: 'namespaceoverviews',\n },\n CSP: {\n apiGroup: 'product.alauda.io',\n type: 'csps',\n },\n RESOURCE_QUOTA: {\n type: 'resourcequotas',\n },\n CLUSTER_NETWORK_POLICY: {\n apiGroup: CRD_GROUP,\n type: 'clusternetworkpolicies',\n },\n PROJECT_QUOTA: {\n apiGroup: 'auth.alauda.io',\n apiVersion: 'v1',\n type: 'projectquotas',\n },\n TKE_CLUSTER: {\n apiGroup: TKE_PLATFORM_GROUP,\n type: 'clusters',\n },\n TKE_MACHINE: {\n apiGroup: TKE_PLATFORM_GROUP,\n type: 'machines',\n },\n MACHINE: {\n apiGroup: MACHINE_API_GROUP,\n apiVersion: 'v1beta1',\n type: 'machines',\n },\n NODE_GROUP: {\n apiGroup: 'security.alauda.io',\n apiVersion: 'v1beta1',\n type: 'nodegroups',\n },\n CLUSTERSERVICEVERSION: {\n apiGroup: COREOS_OPERATOR_GROUP,\n apiVersion: 'v1alpha1',\n type: 'clusterserviceversions',\n },\n TENANT: {\n apiGroup: 'minio.min.io',\n apiVersion: 'v2',\n type: 'tenants',\n },\n SUBSCRIPTION: {\n apiGroup: COREOS_OPERATOR_GROUP,\n apiVersion: 'v1alpha1',\n type: 'subscriptions',\n },\n PACKAGE_MANIFEST: {\n apiGroup: 'packages.operators.coreos.com',\n apiVersion: 'v1',\n type: 'packagemanifests',\n },\n BUCKET_CLASS: {\n apiGroup: 'objectstorage.k8s.io',\n apiVersion: 'v1alpha1',\n type: 'bucketclasses',\n },\n PRODUCT_CONFIG: {\n type: 'productconfigs',\n apiGroup: 'alauda.io',\n apiVersion: 'v1alpha1',\n },\n STORAGE_CLASS: {\n type: 'storageclasses',\n apiGroup: STORAGE_GROUP,\n },\n VOLUME_SNAPSHOT_CLASS: {\n type: 'volumesnapshotclasses',\n apiGroup: VOLUME_SNAPSHOT_GROUP,\n apiVersion: 'v1',\n },\n PRODUCT_BASE: {\n type: 'productbases',\n apiGroup: 'product.alauda.io',\n apiVersion: 'v1alpha1',\n },\n MODULE_INFO: {\n type: 'moduleinfoes',\n apiVersion: 'v1alpha1',\n apiGroup: CLUSTER_API_GROUP,\n },\n MODULE_CONFIG: {\n apiGroup: CLUSTER_API_GROUP,\n apiVersion: 'v1alpha1',\n type: 'moduleconfigs',\n },\n MODULE_PLUGIN: {\n apiGroup: CLUSTER_API_GROUP,\n apiVersion: 'v1alpha1',\n type: 'moduleplugins',\n },\n PRODUCT_ENTRY: {\n type: 'productentries',\n apiGroup: 'alauda.io',\n apiVersion: 'v1alpha1',\n },\n PRODUCT_DOCS_ENTRY: {\n type: 'productdocsentries',\n apiGroup: 'alauda.io',\n apiVersion: 'v1alpha1',\n },\n SERVICEMESH_GROUP: {\n apiGroup: 'asm.alauda.io',\n apiVersion: 'v1alpha1',\n type: 'servicemeshgroups',\n },\n CLUSTER_MODULE: {\n type: 'clustermodules',\n apiVersion: 'v1alpha1',\n apiGroup: CLUSTER_API_GROUP,\n },\n USER_SECURITY_POLICY: {\n type: 'userpolicies',\n apiGroup: 'security.alauda.io',\n apiVersion: 'v1alpha1',\n },\n CONNECTOR: {\n type: 'connectors',\n apiGroup: 'dex.coreos.com',\n },\n ACCESS_TOKEN_INFO: {\n type: 'accesstokeninfoes',\n apiGroup: AUTH_GROUP,\n },\n FUNCTION_RESOURCE: {\n type: 'functionresources',\n apiGroup: AUTH_GROUP,\n apiVersion: 'v1beta1',\n },\n USER_BINDING: {\n type: 'userbindings',\n apiGroup: AUTH_GROUP,\n apiVersion: 'v1',\n },\n USER: {\n type: 'users',\n apiGroup: AUTH_GROUP,\n },\n GROUP: {\n type: 'groups',\n apiGroup: AUTH_GROUP,\n },\n PROJECT_MEMBER: {\n type: 'projectmembers',\n apiGroup: AUTH_GROUP,\n },\n ROLE_TEMPLATE: {\n type: 'roletemplates',\n apiGroup: AUTH_GROUP,\n apiVersion: 'v1beta1',\n },\n BATCH_ACTION: {\n apiGroup: 'batch.alauda.io',\n apiVersion: 'v1alpha1',\n type: 'batchactions',\n },\n EVENT: {\n type: 'events',\n apiVersion: 'v1',\n },\n SERVICE_MONITOR: {\n apiGroup: 'monitoring.coreos.com',\n type: 'servicemonitors',\n apiVersion: 'v1',\n },\n OAM_APPLICATION: {\n apiGroup: OAM_GROUP,\n apiVersion: 'v1beta1',\n type: 'applications',\n },\n ARGOCD_APPLICATION_SET: {\n apiGroup: ARGOCD_GROUP,\n apiVersion: 'v1alpha1',\n type: 'applicationsets',\n },\n ARGOCD_APPLICATION: {\n apiGroup: ARGOCD_GROUP,\n apiVersion: 'v1alpha1',\n type: 'applications',\n },\n OPERATOR_VIEW: {\n type: 'operatorviews',\n apiGroup: APP_GROUP,\n apiVersion: 'v1beta2',\n },\n MODULE_PLUGIN_VIEW: {\n type: 'modulepluginview',\n apiGroup: APP_GROUP,\n apiVersion: 'v1beta2',\n },\n};\n","/**\n * @packageDocumentation\n * @module utils\n */\n\nimport { DestroyRef, isDevMode } from '@angular/core';\nimport { get } from 'lodash-es';\nimport {\n EMPTY,\n MonoTypeOperatorFunction,\n Observable,\n ReplaySubject,\n SchedulerLike,\n TimestampProvider,\n catchError,\n concatWith,\n filter,\n from,\n ignoreElements,\n map,\n of,\n pipe,\n share,\n shareReplay,\n startWith,\n switchMap,\n takeUntil,\n} from 'rxjs';\n\nimport { onDestroy } from './observable';\n\nexport type PublishRefConfig<T> =\n | number\n | (import('rxjs/internal/operators/share').ShareConfig<T> & {\n bufferSize?: number;\n windowTime?: number;\n timestampProvider?: TimestampProvider;\n });\n\nexport const publishRef = <T>(bufferSizeOrConfig: PublishRefConfig<T> = {}) => {\n const {\n bufferSize = 1,\n windowTime,\n timestampProvider,\n connector = () =>\n new ReplaySubject(bufferSize, windowTime, timestampProvider),\n resetOnError = false,\n resetOnComplete = false,\n resetOnRefCountZero = true,\n } = typeof bufferSizeOrConfig === 'number'\n ? ({\n bufferSize: bufferSizeOrConfig,\n } as Exclude<PublishRefConfig<T>, number>)\n : bufferSizeOrConfig;\n return share<T>({\n connector,\n resetOnError,\n resetOnComplete,\n resetOnRefCountZero,\n });\n};\n\nexport const shareUntil = <T>(\n destroy$: Observable<unknown>,\n bufferSize = 1,\n windowTime?: number,\n scheduler?: SchedulerLike,\n) =>\n pipe(takeUntil<T>(destroy$), shareReplay(bufferSize, windowTime, scheduler));\n\nexport const skipError = <T, R = never>(\n mapped: R | Observable<R> = EMPTY,\n debug = false,\n) =>\n catchError<T, Observable<R>>(err => {\n if (isDevMode() && debug) {\n console.error(err);\n }\n return mapped instanceof Observable ? mapped : of(mapped);\n });\n\nexport const catchPromise = <T, R = never>(\n promise: Promise<T>,\n mapped?: R | Observable<R>,\n) => from(promise).pipe(skipError(mapped));\n\nconst NULL = Symbol('null');\n\nexport const startWithCondition =\n <T>(condition: boolean, value: T) =>\n (source: Observable<T>) =>\n source.pipe(\n startWith(condition ? value : NULL),\n filter(value => value !== NULL),\n );\n\nexport const shareUntilDestroyed = <T>(\n destroyRef?: DestroyRef,\n bufferSize?: number,\n windowTime?: number,\n scheduler?: SchedulerLike,\n) => shareUntil<T>(onDestroy(destroyRef), bufferSize, windowTime, scheduler);\n\nexport const safePluck = (...properties: Array<string | number>) =>\n pipe(map(source => get(source, properties)));\n\n// reference https://github.com/ReactiveX/rxjs/issues/3353\nexport function switchTap<T, R>(\n next: (x: T) => Observable<R>,\n): MonoTypeOperatorFunction<T>;\nexport function switchTap<R>(\n observable: Observable<R>,\n): MonoTypeOperatorFunction<R>;\nexport function switchTap<T, R>(\n arg: Observable<T> | ((x: T) => Observable<R>),\n): MonoTypeOperatorFunction<T> {\n const next: (x: T) => Observable<T | R> =\n typeof arg === 'function' ? arg : (_x: any): Observable<T> => arg;\n return switchMap<T, Observable<T>>(value =>\n next(value).pipe(ignoreElements(), concatWith(of(value))),\n );\n}\n","import { DestroyRef, assertInInjectionContext, inject } from '@angular/core';\nimport { isNumber } from 'lodash-es';\nimport {\n EMPTY,\n Observable,\n Subject,\n of,\n catchError,\n delay,\n startWith,\n switchMap,\n tap,\n defer,\n} from 'rxjs';\n\nimport { publishRef } from './operators';\n\nexport const createPollObservable = <TResult>(\n fetch$: Observable<TResult>,\n pollIn: number | Observable<number>,\n): Observable<TResult> => {\n const INIT_VALUE = 'Initialize';\n const subject = new Subject<void>();\n\n const createDelayObservable = () =>\n (isNumber(pollIn) ? of(pollIn) : pollIn).pipe(\n switchMap(pi => (pi === 0 ? EMPTY : of(null).pipe(delay(pi)))),\n );\n\n return subject.pipe(\n startWith(INIT_VALUE),\n switchMap(value =>\n value === INIT_VALUE ? of(null) : createDelayObservable(),\n ),\n switchMap(() => fetch$.pipe(catchError((_: unknown) => of(null)))),\n tap(() => {\n subject.next();\n }),\n publishRef(),\n );\n};\n\n// https://github.com/angular/angular/blob/6fefbe8fca6e96549416a27c14e02957da1291e7/packages/core/rxjs-interop/src/take_until_destroyed.ts#L23\nexport function onDestroy(destroyRef?: DestroyRef): Observable<void> {\n if (!destroyRef) {\n assertInInjectionContext(onDestroy);\n destroyRef = inject(DestroyRef);\n }\n\n return new Observable(observer => {\n return destroyRef.onDestroy(observer.next.bind(observer));\n });\n}\n\nexport const tapSkip =\n <T>(nEmissions: number, callback: (args: T) => void) =>\n (source$: Observable<T>): Observable<T> =>\n defer(() => {\n let counter = 0;\n return source$.pipe(\n tap(item => {\n if (counter >= nEmissions) {\n callback(item);\n }\n counter++;\n }),\n );\n });\n","/**\n * @packageDocumentation\n * @module utils\n */\n\nimport { DebounceSettings, DebouncedFunc, debounce } from 'lodash-es';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { ObservableType } from '../types';\n\nconst checkDescriptor = <T, K extends keyof T>(target: T, propertyKey: K) => {\n const oDescriptor = Object.getOwnPropertyDescriptor(target, propertyKey);\n\n if (oDescriptor && !oDescriptor.configurable) {\n throw new TypeError(`property ${String(propertyKey)} is not configurable`);\n }\n\n return {\n oGetter: oDescriptor?.get,\n oSetter: oDescriptor?.set,\n oDescriptor,\n };\n};\n\nconst strictCheckDescriptor = <T, K extends keyof T>(\n target: T,\n propertyKey: K,\n) => {\n const { oGetter, oSetter, oDescriptor } = checkDescriptor(\n target,\n propertyKey,\n );\n\n if (oGetter || oSetter) {\n throw new TypeError(\n `property ${String(propertyKey)} should not define getter or setter`,\n );\n }\n\n return oDescriptor;\n};\n\nexport function ValueHook<T = any, K extends keyof T = any>(\n setter?: (this: T, value?: T[K]) => boolean | void,\n getter?: (this: T, value?: T[K]) => T[K],\n afterSetter?: (this: T, value?: T[K]) => void,\n) {\n return (target: T, propertyKey: K) => {\n const { oGetter, oSetter } = checkDescriptor(target, propertyKey);\n\n const symbol = Symbol(propertyKey as string);\n\n type Mixed = T & {\n [symbol]: T[K];\n };\n\n Object.defineProperty(target, propertyKey, {\n enumerable: true,\n configurable: true,\n get(this: Mixed) {\n return getter\n ? getter.call(this, this[symbol])\n : oGetter\n ? oGetter.call(this)\n : this[symbol];\n },\n set(this: Mixed, value: T[K]) {\n if (\n value === this[propertyKey] ||\n setter?.call(this, value) === false\n ) {\n return;\n }\n if (oSetter) {\n oSetter.call(this, value);\n }\n this[symbol] = value;\n afterSetter?.call(this, value);\n },\n });\n };\n}\n\nexport type ObservableInputPropertyKey<T> = T extends `${infer R}$`\n ? ObservableInputPropertyKey<R>\n : T;\n\nexport function ObservableInput<\n T = any,\n OK extends keyof T = any,\n K extends keyof T = ObservableInputPropertyKey<OK> & keyof T,\n>(propertyKey: K | boolean = true, initialValue?: ObservableType<T[OK]>) {\n return (target: T, oPropertyKey: OK) => {\n if (!(oPropertyKey as string).endsWith('$')) {\n throw new TypeError(\n `property ${\n oPropertyKey as string\n } should be an Observable and its name should end with $`,\n );\n }\n\n strictCheckDescriptor(target, oPropertyKey);\n\n const symbol = Symbol(oPropertyKey as string);\n\n type OT = ObservableType<T[OK]>;\n\n type Mixed = T & {\n [symbol]: BehaviorSubject<OT>;\n } & Record<OK, BehaviorSubject<OT>>;\n\n // eslint-disable-next-line prefer-const\n let oPropertyValue: OT;\n\n Object.defineProperty(target, oPropertyKey, {\n enumerable: true,\n configurable: true,\n get(this: Mixed) {\n return (\n this[symbol] ||\n (this[symbol] = new BehaviorSubject(\n // when no initialValue passed in, use the original property val\n initialValue === undefined ? oPropertyValue : initialValue,\n ))\n );\n },\n set(this: Mixed, value: OT) {\n this[oPropertyKey].next(value);\n },\n });\n\n if (!propertyKey) {\n return;\n }\n\n if (propertyKey === true) {\n propertyKey = (oPropertyKey as string).replace(/\\$+$/, '') as K;\n }\n\n const oDescriptor = strictCheckDescriptor(target, propertyKey);\n oPropertyValue = oDescriptor ? oDescriptor.value : target[propertyKey];\n\n Object.defineProperty(target, propertyKey, {\n enumerable: true,\n configurable: true,\n get(this: Mixed) {\n return this[oPropertyKey].getValue();\n },\n set(this: Mixed, value: OT) {\n this[oPropertyKey].next(value);\n },\n });\n };\n}\n\n/**\n * @see https://github.com/NoHomey/bind-decorator\n */\n// eslint-disable-next-line @typescript-eslint/ban-types -- intended\nexport function bind<T extends Function>(\n _target: object,\n propertyKey: string,\n descriptor: TypedPropertyDescriptor<T>,\n): TypedPropertyDescriptor<T> | void {\n if (typeof descriptor.value !== 'function') {\n throw new TypeError(\n `Only methods can be decorated with @bind. <${propertyKey}> is not a method!`,\n );\n }\n\n return {\n configurable: true,\n get(this: T): T {\n const bound: T = descriptor.value.bind(this);\n // Credits to https://github.com/andreypopp/autobind-decorator for memoizing the result of bind against a symbol on the instance.\n Object.defineProperty(this, propertyKey, {\n value: bound,\n configurable: true,\n writable: true,\n });\n return bound;\n },\n };\n}\n\n// lodash 的 debounce 类型约束要求 (...args: any) => any\nexport function debounceFn<T extends (...args: any) => any>(\n delay = 200,\n options?: DebounceSettings,\n) {\n return function (\n _target: object,\n propertyKey: string,\n descriptor: TypedPropertyDescriptor<T>,\n ): TypedPropertyDescriptor<DebouncedFunc<T>> | void {\n if (typeof descriptor.value !== 'function') {\n throw new TypeError(\n `Only methods can be decorated with @bind. <${propertyKey}> is not a method!`,\n );\n }\n\n return {\n configurable: true,\n get(this: T): DebouncedFunc<T> {\n const bound = debounce(descriptor.value, delay, options);\n Object.defineProperty(this, propertyKey, {\n value: bound,\n configurable: true,\n writable: true,\n });\n return bound;\n },\n };\n };\n}\n","export const saveAs = (data: Blob | File | string, filename: string) => {\n const anchor = document.createElement('a');\n anchor.href = typeof data === 'string' ? data : URL.createObjectURL(data);\n anchor.download = filename;\n anchor.rel = 'noopener';\n anchor.click();\n anchor.remove();\n};\n\nexport function isMac() {\n return /macintosh|mac os x/i.test(navigator.userAgent);\n}\n\nexport function isWindows() {\n return /windows|win32/i.test(navigator.userAgent);\n}\n\nexport const getTopWindow = () => {\n const isInCypress = 'Cypress' in window;\n return isInCypress\n ? window.top.document.querySelector('iframe').contentWindow\n : window.top;\n};\n","/**\n * @packageDocumentation\n * @module utils\n */\n\nimport { Sort } from '@alauda/ui';\nimport {\n last,\n // eslint-disable-next-line no-restricted-imports\n isEqual as _isEqual,\n} from 'lodash-es';\nimport { UnionToIntersection } from 'ts-essentials';\n\nimport { Bracket } from '../constants/common';\nimport {\n Callback,\n Keys,\n KubernetesResource,\n Nullable,\n Readonlyable,\n StringMap,\n} from '../types';\n\n/**\n * 保证任何语言环境下将数字转换为非科学计数法且不带千位分隔符并保留三位有效小数的数字字符串\n *\n * @example\n * numToStr(123123.3456) // \"123123.346\"\n * numToStr(123.12) // \"123.12\"\n */\nexport const numToStr = (num?: number) => {\n if (num === 0) {\n return '0';\n }\n\n if (!num) {\n return '';\n }\n\n return num\n .toLocaleString('en-US', {\n minimumFractionDigits: 3,\n useGrouping: false,\n })\n .replace(/([^.])\\.?0+$/, '$1');\n};\n\nexport const shortNum = (num?: number | string, digits = 2) => {\n if (typeof num === 'string') {\n num = num.trim();\n }\n if (num === 0 || num === '0') {\n return '0';\n }\n if (!num) {\n return '';\n }\n return numToStr(+(+num).toFixed(digits) || Math.pow(10, -digits));\n};\n\nexport const isBlank = (str?: unknown) =>\n str == null || Number.isNaN(str as number) || !str.toString().trim();\n\nexport const getBaseHref = () => {\n // The last base element has highest privilege\n const base = last(document.querySelectorAll('base'));\n // use `getAttribute` instead of `base.href` because the attribute could be void but results current whole location url\n return base?.getAttribute('href') || '/';\n};\n\nexport const ifExist = <T>(\n toCheck: boolean | Nullable<T>,\n truthyValue: T,\n fallback?: T,\n) => (toCheck ? truthyValue : ((fallback || '') as T));\n\nexport const isAbsoluteUrl = (url: string) => /^(https?:\\/)?\\//.test(url);\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport const noop: Callback = () => {};\n\nexport const toKeys = <T extends object>(source: T): Keys<T> =>\n Object.keys(source).reduce((acc, k) => {\n const key = k as keyof T;\n acc[key] = key;\n return acc;\n }, {} as Keys<T>);\n\nexport const wrapText = (\n text?: string,\n wrapper: Readonlyable<[string, string]> = Bracket.PARENTHESES,\n fallback?: string,\n) => (text ? wrapper.join(text) : fallback || '');\n\nexport function parseJSONStream<T>(text: string): T[] {\n return text\n .split('\\n')\n .map(v => {\n try {\n return JSON.parse(v);\n } catch {\n return null;\n }\n })\n .filter(v => !!v);\n}\n\nexport const trackByUid = <T extends KubernetesResource>(\n _: number,\n resource: T,\n) => resource.metadata.uid;\n\nexport const isK8sResource = <\n T extends KubernetesResource = KubernetesResource,\n>(\n value: object,\n): value is T =>\n value &&\n typeof value === 'object' &&\n 'apiVersion' in value &&\n typeof value.apiVersion === 'string' &&\n 'kind' in value &&\n typeof value.kind === 'string' &&\n 'metadata' in value &&\n value.metadata &&\n typeof value.metadata === 'object';\n\nexport const arrayify = <\n T,\n R = T extends Array<infer S> ? NonNullable<S> : NonNullable<T>,\n>(\n ...args: Array<R | R[]>\n) =>\n args.reduce<R[]>((arr, curr) => {\n arr.push(...(Array.isArray(curr) ? curr : curr == null ? [] : [curr]));\n return arr;\n }, []);\n\nexport function sleep(ms = 0) {\n return new Promise(resolve => {\n setTimeout(resolve, ms);\n });\n}\n\nexport const delay = sleep;\n\nexport function scrollIntoView(container: HTMLElement, selected: HTMLElement) {\n if (!selected) {\n container.scrollTop = 0;\n return;\n }\n\n const top = selected.offsetTop;\n const bottom = selected.offsetTop + selected.offsetHeight;\n const viewRectTop = container.scrollTop;\n const viewRectBottom = viewRectTop + container.clientHeight;\n\n if (viewRectTop > top) {\n container.scrollTop = top;\n } else if (viewRectBottom < bottom) {\n container.scrollTop = bottom - container.clientHeight;\n }\n}\n\nexport const isEqual: <T, V = T>(a: T, b: V) => boolean = _isEqual;\n\nexport const parseJson = <T>(str: string, defaultValue: T = null) => {\n if (str === undefined) {\n return defaultValue;\n }\n try {\n return JSON.parse(str);\n } catch {\n return defaultValue;\n }\n};\n\nexport function isJsonObjectString(str: string): boolean {\n try {\n const parsed = JSON.parse(str);\n return typeof parsed === 'object' && parsed !== null;\n } catch {\n return false;\n }\n}\n\nexport const parseValidImageName = (image: string) =>\n image?.replace(/([^:])\\/\\//g, '$1/') || image;\n\nexport const atobWithFallback = (str: string, fallbackValue: string = null) => {\n try {\n return window.atob(str);\n } catch {\n return fallbackValue;\n }\n};\n\nexport interface SafeAssignOptions {\n notice: (duplicates: string[]) => any;\n}\n/**\n * 带重复检查的assign,只做一级key的重复检查\n * 如果有重复项默认会throw error,如果你明确这不是一个关键性错误,则可以通过指定notice函数修改该默认行为\n * @param sources\n * @param optionsOrNotice\n * @return object 一个全新的对象\n */\nexport const safeAssign = <T extends Record<string, any>>(\n sources: T[],\n optionsOrNotice?: SafeAssignOptions['notice'] | SafeAssignOptions,\n): UnionToIntersection<T> => {\n if (sources.length === 1) {\n return sources[0] as UnionToIntersection<T>;\n }\n\n const option: SafeAssignOptions = {\n notice: (duplicates: string[]) => {\n throw new Error(\n `There are duplicate definitions: ${duplicates.join(',')}`,\n );\n },\n };\n if (typeof optionsOrNotice === 'function') {\n option.notice = optionsOrNotice;\n }\n if (typeof optionsOrNotice === 'object') {\n Object.assign(option, optionsOrNotice);\n }\n\n const duplicates = new Set<string>();\n const allKey = new Set(Object.keys(sources[0]));\n sources.slice(1).forEach(obj => {\n Object.keys(obj).forEach(key => {\n if (allKey.has(key)) {\n duplicates.add(key);\n } else {\n allKey.add(key);\n }\n });\n });\n if (duplicates.size) {\n option.notice([...duplicates]);\n }\n return Object.assign({}, ...sources);\n};\n\nexport const toLowerFirstLetter = (text: string) =>\n typeof text === 'string' && text.length > 0\n ? text.replace(text[0], text[0].toLocaleLowerCase())\n : text;\n\nexport const loadEnv = (envText: string): Array<[string, string]> => {\n if (!envText) return [];\n return envText\n .split('\\n')\n .filter(s => !!s.trim())\n .map(s => {\n const index = s.trim().includes('=')\n ? s.trim().indexOf('=')\n : s.trim().length;\n return [\n s.trim().slice(0, index).trim(),\n s\n .trim()\n .slice(index + 1)\n .trim(),\n ];\n });\n};\n\nexport function filterEmptyValue<T extends Record<string, unknown>>(\n obj: T,\n): Partial<T> {\n return Object.entries(obj).reduce((acc, [key, value]) => {\n if (value !== undefined && value !== null) {\n acc[key as keyof T] = value as T[keyof T];\n }\n return acc;\n }, {} as Partial<T>);\n}\n\nconst IMAGE_TYPE_MAPPER: StringMap = {\n '/': 'jpg',\n i: 'png',\n P: 'svg+xml',\n R: 'gif',\n};\n\nexport function parseBase64Type(base64Str: string) {\n const firstChar = base64Str.charAt(0);\n return IMAGE_TYPE_MAPPER[firstChar];\n}\n\nexport function appendImageHeader(value: string, prefix?: string): string {\n if (!value || value.startsWith('data:image/')) {\n return value;\n }\n const header =\n prefix || `data:image/${parseBase64Type(value) || 'jpg'};base64,`;\n return `${header}${value}`;\n}\n\nexport const getRelativePath = (from: string, to: string) => {\n if (to === null || to === undefined || !from) {\n return to;\n }\n const fromParts = (from ?? '').split('/').filter(p => p !== '');\n const toParts = (to ?? '').split('/').filter(p => p !== '');\n\n let relativePath = '';\n while (\n fromParts.length > 0 &&\n toParts.length > 0 &&\n fromParts[0] === toParts[0]\n ) {\n fromParts.shift();\n toParts.shift();\n }\n\n relativePath = '../'.repeat(fromParts.length);\n\n relativePath += toParts.join('/');\n\n return relativePath;\n};\n\nexport const getToPath = (from: string, relative: string) => {\n if (relative === null || relative === undefined || !from) {\n return relative;\n }\n\n const fromParts = from.split('/').filter(p => p !== '');\n const relativeParts = relative.split('/').filter(p => p !== '');\n\n const dotDotCount = +relativeParts.filter(p => p === '..')?.length;\n\n const s = fromParts.splice(0, fromParts.length - dotDotCount);\n\n return s.concat(relativeParts.splice(dotDotCount)).join('/');\n};\n\nexport const trackByName = <T extends KubernetesResource>(\n _: number,\n resource: T,\n) => resource.metadata.name;\n\nexport function tableSort<T>(\n list: T[],\n sort: Sort,\n sortActiveValueFn: (item: T, name: string) => string | number,\n): T[] {\n return list.slice().sort((a, b) => {\n const key = sort.active;\n const keyA = sortActiveValueFn(a, key);\n const keyB = sortActiveValueFn(b, key);\n if (keyA === keyB) return 0;\n return sort.direction === 'asc'\n ? keyA > keyB\n ? 1\n : -1\n : keyB > keyA\n ? 1\n : -1;\n });\n}\n\n// 支持中文排序,推荐使用\nexport function tableSortAdvance<T>(\n list: T[],\n sort: Sort,\n sortActiveValueFn: (item: T, name: string) => string | number,\n): T[] {\n return list.slice().sort((a, b) => {\n const key = sort.active;\n const keyA = sortActiveValueFn(a, key).toString();\n const keyB = sortActiveValueFn(b, key).toString();\n if (keyA === keyB) return 0;\n return sort.direction === 'asc'\n ? keyA.localeCompare(keyB)\n : keyB.localeCompare(keyA);\n });\n}\n\n// 根据 tagOrDigest 生成镜像地址\nexport const buildImageAddress = (url: string, tagOrDigest: string) => {\n return `${url}${tagOrDigest?.startsWith('sha256:') ? '@' : ':'}${tagOrDigest}`;\n};\n\n// 解析镜像地址\nexport const parseImageAddress = (addr: string) => {\n const result: {\n digest?: string;\n tag?: string;\n url: string;\n } = {\n url: '',\n };\n\n const [urlPart, digestPart] = addr.split('@sha256');\n if (digestPart) {\n result.digest = `sha256${digestPart}`;\n }\n\n const tagIndex = urlPart.lastIndexOf(':');\n if (tagIndex > 0 && tagIndex > urlPart.lastIndexOf('/')) {\n result.tag = urlPart.slice(tagIndex + 1);\n result.url = urlPart.slice(0, tagIndex);\n } else {\n result.url = urlPart;\n }\n\n return result;\n};\n\nexport const clearWindowsXtermTools = () => {\n delete (window as any).__XTERM_TOOLS__;\n};\n\nexport const buildUrl = (\n baseUri: string,\n params?: Record<string, string | boolean>,\n) => {\n const searchParams = new URLSearchParams();\n\n for (const [key, value] of Object.entries(params)) {\n searchParams.append(key, value.toString());\n }\n\n const queryString = searchParams.toString();\n return queryString ? `${baseUri}?${queryString}` : baseUri;\n};\n","import {\n BehaviorSubject,\n catchError,\n filter,\n map,\n MonoTypeOperatorFunction,\n Observable,\n of,\n startWith,\n Subject,\n switchMap,\n takeUntil,\n tap,\n} from 'rxjs';\n\nimport { isEqual } from './common';\nimport { publishRef } from './operators';\n\nexport class CacheStore<P, V> {\n private readonly fetcher: (params: P) => Observable<V>;\n private readonly share: <T>() => MonoTypeOperatorFunction<T>;\n private readonly validator: (loadState: CacheLoadState<V>) => boolean;\n\n private readonly store = new Map<P, Cache<V>>();\n\n constructor({ fetcher, share, validator }: CacheStoreOptions<P, V>) {\n this.fetcher = fetcher;\n this.share = share ?? publishRef;\n this.validator = validator ?? (() => true);\n }\n\n fetchState(params: P) {\n let cache = this.get(params);\n\n if (!cache) {\n const refetch$$ = new BehaviorSubject<void>(null);\n const finish$$ = new Subject<void>();\n\n cache = {\n refetch: () => {\n refetch$$.next();\n },\n finish: () => {\n finish$$.next();\n finish$$.complete();\n },\n loadState: refetch$$.pipe(\n switchMap(() =>\n this.fetcher(params).pipe(\n map(result => ({ state: 'loaded' as const, result })),\n catchError(error => of({ state: 'loadFailed' as const, error })),\n startWith({ state: 'loading' as const }),\n ),\n ),\n tap(loadState => {\n if (loadState.state !== 'loading' && !this.validator(loadState)) {\n for (const [key, value] of this.store.entries()) {\n if (isEqual(key, params)) {\n this.store.delete(key);\n setTimeout(() => {\n value.finish();\n });\n return;\n }\n }\n }\n }),\n takeUntil(finish$$),\n this.share(),\n ),\n };\n\n this.store.set(params, cache);\n }\n\n return cache.loadState;\n }\n\n fetch(params: P) {\n return this.fetchState(params).pipe(\n filter(loadState => loadState.state === 'loaded'),\n map(loadState => loadState.result),\n );\n }\n\n refetch(params: P) {\n this.get(params)?.refetch();\n }\n\n refetchAll() {\n this.forEach(cache => {\n cache.refetch();\n });\n }\n\n get(params: P) {\n for (const [key, value] of this.store.entries()) {\n if (isEqual(key, params)) {\n return value;\n }\n }\n }\n\n has(params: P) {\n return !!this.get(params);\n }\n\n delete(params: P) {\n for (const [key, value] of this.store.entries()) {\n if (isEqual(key, params)) {\n this.store.delete(key);\n value.finish();\n return;\n }\n }\n }\n\n clear() {\n this.store.forEach(value => {\n value.finish();\n });\n this.store.clear();\n }\n\n forEach = this.store.forEach.bind(this.store);\n\n entries = this.store.entries.bind(this.store);\n\n values = this.store.values.bind(this.store);\n\n keys = this.store.keys.bind(this.store);\n}\n\nexport interface CacheStoreOptions<P, V> {\n fetcher: (params: P) => Observable<V>;\n share?: <T>() => MonoTypeOperatorFunction<T>;\n validator?: (loadState: CacheLoadState<V>) => boolean;\n}\n\nexport interface CacheLoadState<V> {\n state: 'loading' | 'loaded' | 'loadFailed';\n result?: V;\n error?: unknown;\n}\n\nexport interface Cache<V> {\n loadState: Observable<CacheLoadState<V>>;\n refetch: () => void;\n finish: () => void;\n}\n","import { rgbColor } from '@alauda/ui';\n\nexport const primaryColor = rgbColor('primary');\nexport const errorColor = rgbColor('red');\nexport const successColor = rgbColor('green');\nexport const warnColor = rgbColor('yellow');\n","export const CRON_ENABLE_7_FOR_SUNDAY = false;\n\nexport type CronWeekDay = 'mon' | 'tue' | 'wed' | 'thu' | 'fri' | 'sat' | 'sun';\n\nexport const CronWeekDays: CronWeekDay[] = [\n 'sun',\n 'mon',\n 'tue',\n 'wed',\n 'thu',\n 'fri',\n 'sat',\n];\n\nexport const WEEK_DAYS = [...CronWeekDays.slice(1), CronWeekDays[0]];\n\nfunction formatWeekDaysValue(days: string[]) {\n return days\n .map(v => (v.length === 3 ? CronWeekDays.indexOf(v as CronWeekDay) : +v))\n .sort((a, b) => a - b);\n}\n\nexport function getCronWeekDayNumbers(schedule: string): number[] {\n const matches = schedule.match(\n /(?: ((?:\\d|mon|tue|wed|thu|fri|sat|sun)(?:,(?:\\d|mon|tue|wed|thu|fri|sat|sun))*)| ((?:\\d|mon|tue|wed|thu|fri|sat|sun)-(?:\\d|mon|tue|wed|thu|fri|sat|sun)))$/,\n );\n if (matches) {\n const days = matches[1] ? matches[1].split(',') : matches[2].split('-');\n return formatWeekDaysValue(days);\n }\n\n return null;\n}\n\nexport function isCronWeekDayCorrect(schedule: string) {\n const dayNumbers = getCronWeekDayNumbers(schedule);\n return !(!CRON_ENABLE_7_FOR_SUNDAY && dayNumbers && dayNumbers.pop() === 7);\n}\n\nexport function isCronWeekDaysContinuous(days: number[]) {\n if (days.length === 7) {\n return true;\n }\n const sorted = days.sort((a, b) => a - b);\n const [first, ...others] = sorted;\n // If sunday exists, move it to end\n const handled = (first === 0 ? [...others, 7] : [...sorted]).map(\n item => item - (7 - days.length),\n );\n\n return handled.reduce(\n (prev, cur, index) =>\n prev && (index === 0 || handled[index - 1] + 1 === cur),\n true,\n );\n}\n\nexport function isCronFieldCountCorrect(exp: string) {\n const spaceCount = exp.split('').filter(val => val === ' ').length;\n const fieldCount = exp.split(' ').filter(Boolean).length;\n return spaceCount === 4 && fieldCount === 5;\n}\n","import { finalize, Observable, Subscription } from 'rxjs';\n\nexport class RequestPool {\n private readonly maxParallel: number;\n private readonly runnerQueue: Array<() => void> = [];\n private runningCount = 0;\n\n constructor({ maxParallel = 3 }: { maxParallel: number }) {\n this.maxParallel = maxParallel;\n }\n\n queue<T>(request: Observable<T>): Observable<T> {\n return new Observable<T>(observer => {\n let subscription: Subscription;\n\n const runner = () => {\n subscription = request\n .pipe(\n finalize(() => {\n this.runningCount--;\n this.flushQueue();\n }),\n )\n .subscribe(observer);\n };\n\n this.runnerQueue.push(runner);\n this.flushQueue();\n\n return () => {\n subscription?.unsubscribe();\n };\n });\n }\n\n private flushQueue() {\n if (this.runningCount < this.maxParallel && this.runnerQueue.length > 0) {\n this.runningCount++;\n const run = this.runnerQueue.shift();\n run();\n }\n }\n}\n\nexport function maxParallelByHttpVersion(http_2 = 30, http_1 = 3) {\n return location.protocol === 'https:' ? http_2 : http_1;\n}\n","/**\n * @packageDocumentation\n * @module utils\n */\n\n// reduceTree :: String -> (a -> Tree -> [Tree] -> [Number] -> a) -> a -> [Tree] -> a\nexport const reduceTrees =\n (subtreeKey: string) =>\n <T extends Tree, R>(fn: TreeReducer<T, R>) =>\n (seed: R) =>\n (trees: T[]) => {\n const reducer = (nodes: T[], parents: T[], path: number[], acc: R): R =>\n nodes.reduce((prev, curr, index) => {\n const result = fn(prev, curr, parents, [...path, index]);\n return curr[subtreeKey]\n ? reducer(\n curr[subtreeKey] as T[],\n [...parents, curr],\n [...path, index],\n result,\n )\n : result;\n }, acc);\n return reducer(trees, [], [], seed);\n };\n\n// mapTree :: String -> (Tree -> [Tree] -> [Number] -> Tree) -> [Tree] -> [Tree]\nexport const mapTrees =\n (subtreeKey: string) =>\n <T extends Tree, R extends Tree>(fn: TreeMapper<T, R>) =>\n (trees: T[]) => {\n const mapper = (acc: R[], curr: T, parents: T[], path: number[]) => {\n const mapped = fn(curr, parents, path);\n return setNode<R>(subtreeKey, path, acc, mapped);\n };\n return reduceTrees(subtreeKey)<T, R[]>(mapper)([])(trees);\n };\n\nexport const filterTrees =\n (subtreeKey: string) =>\n <T extends Tree>(fn: TreeFilter<T>) =>\n (trees: T[]) => {\n const filter = (nodes: T[], parents: T[], path: number[]): T[] =>\n nodes\n ?.filter(node => fn(node, parents, path))\n .map((node, index) =>\n node[subtreeKey]\n ? {\n ...node,\n [subtreeKey]: filter(\n node[subtreeKey] as T[],\n [...parents, node],\n [...path, index],\n ),\n }\n : node,\n );\n return filter(trees, [], []);\n };\n\nexport const findPath =\n (subtreeKey: string) =>\n <T extends Tree>(fn: TreeFilter<T>) =>\n (trees: T[]) => {\n const endPoint: T[] = [];\n const finder = (nodes: T[], parents: T[], path: number[]): boolean => {\n const result = nodes.find((node, index) => {\n if (fn(node, parents, path)) {\n return true;\n }\n if (node[subtreeKey]) {\n return finder(\n node[subtreeKey] as T[],\n [...parents, node],\n [...path, index],\n );\n }\n return false;\n });\n if (result) {\n endPoint.unshift(result);\n }\n return !!result;\n };\n\n finder(trees, [], []);\n return endPoint;\n };\n\nexport const firstPath =\n (subtreeKey: string) =>\n <T extends Tree>(trees: T[]): T[] => {\n const head = trees[0];\n if (head) {\n return head.children\n ? [head, ...firstPath(subtreeKey)<T>(head[subtreeKey] as T[])]\n : [head];\n }\n return [];\n };\n\nexport function setNode<T extends Tree>(\n subtreeKey: string,\n path: number[],\n source: T[],\n target: T,\n) {\n const iterator = ([head, ...tail]: number[], trees: T[]) => {\n if (tail.length > 0) {\n const point = trees[head] || ({} as T);\n const tree = {\n ...point,\n [subtreeKey]: iterator(tail, (point[subtreeKey] || []) as T[]),\n };\n trees[head] = tree;\n return trees;\n }\n trees[head] = target;\n return trees;\n };\n return iterator(path, source);\n}\n\nexport interface Tree {\n [key: string]: Tree[];\n}\n\nexport type TreeReducer<T extends Tree, R> = (\n acc: R,\n currentNode: T,\n parents: T[],\n path: number[],\n) => R;\n\nexport type TreeMapper<T extends Tree, R extends Tree> = (\n tree: T,\n parents: T[],\n path: number[],\n) => R;\n\nexport type TreeFilter<T extends Tree> = (\n tree: T,\n parents: T[],\n path: number[],\n) => boolean;\n","/**\n * @packageDocumentation\n * @module utils\n */\n\nimport { Observable, of, catchError, map, startWith } from 'rxjs';\n\nexport interface WithLoadState<T, E = unknown> {\n loading: boolean;\n data: T;\n error: E;\n}\n\nexport function withLoadState<T>(\n input: Observable<T>,\n defaultValue: T = null,\n): Observable<WithLoadState<T>> {\n return input.pipe(\n map(data => ({\n loading: false,\n data,\n error: null,\n })),\n startWith({\n loading: true,\n data: defaultValue,\n error: null,\n }),\n catchError(error =>\n of({\n loading: false,\n data: defaultValue,\n error,\n }),\n ),\n );\n}\n","import {\n ActivatedRoute,\n ActivatedRouteSnapshot,\n ParamMap,\n Params,\n} from '@angular/router';\n\nimport { WorkspaceParams } from '../types';\n\nexport type Workspace = Readonly<{\n project: string;\n cluster: string;\n namespace: string;\n}>;\n\nexport interface ResourceIdentifier extends Workspace {\n name: string;\n}\n\nexport function parseWorkspace(workspace: string): Workspace {\n if (!workspace) {\n return null;\n }\n const [project, cluster, namespace] = workspace.split('~');\n const workspaceObj = { project, cluster, namespace };\n return isValidWorkspace(workspaceObj) ? workspaceObj : null;\n}\n\nexport function stringifyWorkspace(\n workspace: WorkspaceParams,\n strict = true,\n): string {\n if (!strict && !workspace.project) {\n Object.assign(workspace, { project: 'default' });\n }\n return isValidWorkspace(workspace)\n ? `${workspace.project}~${workspace.cluster}~${workspace.namespace}`\n : '';\n}\n\nexport function isValidWorkspace(obj: any): obj is Workspace {\n return !!(obj?.project && obj?.cluster && obj?.namespace);\n}\nexport function parseRID(rid: string): ResourceIdentifier {\n if (!rid) {\n return null;\n }\n const [project, cluster, namespace, name] = rid.split('~');\n const ridObj = { project, cluster, namespace, name };\n return isValidRID(ridObj) ? ridObj : null;\n}\n\nexport function stringifyRID(rid: ResourceIdentifier): string;\nexport function stringifyRID(workspace: Workspace, name: string): string;\nexport function stringifyRID(p1: ResourceIdentifier | Workspace, p2?: string) {\n return isValidWorkspace(p1) && p2\n ? `${p1.project}~${p1.cluster}~${p1.namespace}~${p2}`\n : isValidRID(p1)\n ? `${p1.project}~${p1.cluster}~${p1.namespace}~${p1.name}`\n : '';\n}\n\nexport function isValidRID(obj: any): obj is ResourceIdentifier {\n return !!(obj?.project && obj?.cluster && obj?.namespace && obj?.name);\n}\n\nexport function extractWorkspace(params: Params | ParamMap) {\n return params.get && params.get instanceof Function\n ? parseWorkspace((params as ParamMap).get('workspace'))\n : parseWorkspace((params as Params).workspace);\n}\n\nexport function extractWorkspaceFromRoute(\n route: ActivatedRoute | ActivatedRouteSnapshot,\n) {\n const snapshot = route instanceof ActivatedRoute ? route.snapshot : route;\n return parseWorkspace(snapshot.paramMap.get('workspace'));\n}\n\n// owner: ait\nexport const workspaceToPath = (workspace: Partial<Workspace>) => {\n if (!workspace) {\n return '';\n }\n const { project, namespace, cluster } = workspace;\n const p = project ? `/projects/${project}` : '';\n const c = cluster ? `/clusters/${cluster}` : '';\n const n = namespace ? `/namespaces/${namespace}` : '';\n return `${p}${c}${n}`;\n};\n","import { isBlank, numToStr } from './common';\n\nconst COMMON_UNITS = ['M', 'G', 'T', 'P', 'E'];\n\nexport const CORE_UNITS = ['m', '', 'k', ...COMMON_UNITS];\n\nexport const CORE_UNIT_REG = new RegExp(`[${CORE_UNITS.join('')}]$`);\n\nconst toUnitNumBase = (coreStr?: string | number, isUnitM = false) => {\n if (typeof coreStr === 'number') {\n return numToStr(coreStr * Math.pow(1000, +isUnitM));\n }\n\n if (isBlank(coreStr)) {\n return '';\n }\n coreStr = coreStr.trim();\n const num = +coreStr.replace(CORE_UNIT_REG, '');\n if (Number.isNaN(num)) {\n return '';\n }\n if (num <= 0) {\n return '0';\n }\n const lastChar = coreStr.at(-1);\n let unitIndex = CORE_UNITS.indexOf(lastChar);\n unitIndex = (unitIndex === -1 ? 0 : unitIndex - 1) + +isUnitM;\n return numToStr(num * Math.pow(1000, unitIndex));\n};\n\nexport const toUnitNumM = (coreStr?: string | number) =>\n toUnitNumBase(coreStr, true);\n\nexport const toUnitNum = (coreStr?: string | number) => toUnitNumBase(coreStr);\n\nexport const UNITS = ['', 'K', ...COMMON_UNITS];\nexport const UNIT_REG = new RegExp(`[${UNITS.join('')}]i?$`);\n\n// TODO: UNITS 临时被其他地方当成了枚举项使用,先临时添加MEMORY_UNITS来处理 toUnitI 中兼容 k、Ki 的问题\nconst MEMORY_UNITS = ['', ['k', 'K'], ...COMMON_UNITS];\nconst MEMORY_UNIT_REG = new RegExp(`[${MEMORY_UNITS.join('')}]i?$`);\n\nexport const toUnitI = (str?: string | number, negative = false) => {\n if (typeof str === 'number') {\n if (str <= 0 && !negative) {\n return '0';\n }\n return numToStr(str);\n }\n\n if (isBlank(str)) {\n return '';\n }\n str = str.trim();\n const num = +str.replace(MEMORY_UNIT_REG, '');\n if (Number.isNaN(num)) {\n return '';\n }\n if (num <= 0 && !negative) {\n return '0';\n }\n\n let base = 1000;\n\n if (str.endsWith('i')) {\n base = 1024;\n str = str.replace(/i$/, '');\n }\n\n const lastChar = str.at(-1);\n const unitIndex = MEMORY_UNITS.findIndex(unit =>\n Array.isArray(unit) ? unit.includes(lastChar) : unit === lastChar,\n );\n return numToStr(num * Math.pow(base, unitIndex === -1 ? 0 : unitIndex));\n};\n\nexport const toUnitMi = (str?: string | number, negative?: boolean) => {\n const unitI = toUnitI(str, negative);\n if (!unitI) {\n return '';\n }\n return numToStr(+unitI / 1024 / 1024);\n};\n\nexport const toUnitGi = (str?: string | number, negative?: boolean) => {\n const unitI = toUnitI(str, negative);\n if (!unitI) {\n return '';\n }\n return numToStr(+unitI / 1024 / 1024 / 1024);\n};\n\nexport const addUnitCoreM = (coreStr?: string | number) => {\n if (isBlank(coreStr)) {\n return null;\n }\n return numToStr(+coreStr) + 'm';\n};\n\nexport const addUnitMi = (miStr?: string | number) => {\n if (isBlank(miStr)) {\n return null;\n }\n return numToStr(+miStr) + 'Mi';\n};\n\nexport const addUnitGi = (giStr?: string | number) => {\n if (isBlank(giStr)) {\n return null;\n }\n return numToStr(+giStr) + 'Gi';\n};\n\nconst POWER_MEMORY_UNITS = ['Ki', 'Mi', 'Gi', 'Ti', 'Pi', 'Ei'];\n\nexport function getAppropriateMemory(base: number) {\n let unit = -1;\n while (base >= 800 || unit >= POWER_MEMORY_UNITS.length - 1) {\n base /= 1024;\n unit++;\n }\n return {\n value: base,\n unit: POWER_MEMORY_UNITS[unit],\n };\n}\n\nconst reg = /^(\\d?\\.?\\d+)(\\w+)*$/;\n\nexport const parseValueAndUnit = (str: string) => {\n const [_, value, unit] = /^(\\d?\\.?\\d+)(\\w+)*$/.exec(str) || [];\n return [value, unit];\n};\n\nexport function formatMemory(mem: string) {\n const base = parseFloat(mem);\n const res = reg.exec(mem);\n const unit = res?.[2];\n return unit ? getMemory(base, unit) : base;\n}\n\nexport function getMemory(base: number, unit: string) {\n switch (unit) {\n case 'm': {\n return base * 1e-3;\n }\n case 'K': {\n return base * 1e3;\n }\n case 'Ki': {\n return base * 1024;\n }\n case 'M': {\n return base * 1e6;\n }\n case 'Mi': {\n return base * 1024 ** 2;\n }\n case 'G': {\n return base * 1e9;\n }\n case 'Gi': {\n return base * 1024 ** 3;\n }\n case 'T': {\n return base * 1e12;\n }\n case 'Ti': {\n return base * 1024 ** 4;\n }\n case 'P': {\n return base * 1e15;\n }\n case 'Pi': {\n return base * 1024 ** 5;\n }\n case 'E': {\n return base * 1e18;\n }\n case 'Ei': {\n return base * 1024 ** 6;\n }\n default: {\n return base;\n }\n }\n}\n\nexport function getCpu(base: number, unit: string) {\n switch (unit) {\n case 'm': {\n return base;\n }\n case 'c': {\n return base * 1e3;\n }\n case 'k': {\n return base * 1e6;\n }\n case 'M': {\n return base * 1e9;\n }\n case 'G': {\n return base * 1e12;\n }\n case 'T': {\n return base * 1e15;\n }\n default: {\n return base * 1e3;\n }\n }\n}\n\nexport function formatCPU(cpu: string) {\n const base = parseFloat(cpu);\n const res = reg.exec(cpu);\n const unit = res?.[2];\n return getCpu(base, unit);\n}\n","import { cloneDeep, get, has, unset } from 'lodash-es';\nimport { dissocPath } from 'ramda';\nimport {\n DocumentOptions,\n parse as parseYaml,\n parseAllDocuments,\n ParseOptions,\n SchemaOptions,\n ToJSOptions,\n} from 'yaml';\n\nimport { KubernetesResource } from '../types';\n\nexport { stringify } from 'yaml';\n\nexport const parse = <T>(\n yaml: string,\n options?: ParseOptions & DocumentOptions & SchemaOptions & ToJSOptions,\n): T => parseYaml(yaml, options);\n\nexport const safeParseYaml = <T>(\n yaml: string,\n defaultValue: T = null,\n options?: ParseOptions & DocumentOptions & SchemaOptions & ToJSOptions,\n) => {\n try {\n return parse<T>(yaml, options);\n } catch {\n return defaultValue;\n }\n};\n\nexport const parseAll = <T>(yaml: string): T[] => {\n const docs = parseAllDocuments(yaml);\n return docs.map(doc => doc.toJS());\n};\n\nexport type YamlFilterItem =\n | string\n | ((resource: KubernetesResource) => string[]);\n\nexport function yamlFilterField<T extends KubernetesResource>(\n resource: T,\n filterList: YamlFilterItem[],\n deepClone = true,\n) {\n let cloneResource = deepClone ? cloneDeep(resource) : resource;\n filterList.forEach(pathOrFunction => {\n if (typeof pathOrFunction === 'string') {\n if (has(cloneResource, pathOrFunction)) {\n unset(cloneResource, pathOrFunction);\n }\n } else {\n const list = pathOrFunction(cloneResource);\n cloneResource = yamlFilterField(cloneResource, list, false);\n }\n });\n return cloneResource;\n}\n\nexport const removeDirtyFieldsBeforeUpdate: <T extends KubernetesResource>(\n resource: T,\n) => T = dissocPath(['metadata', 'managedFields']);\n\nexport function prefixFilterRuleFactory(\n prefix: string,\n path: string[],\n includeOrStartsWith: Extract<\n keyof string,\n 'includes' | 'startsWith'\n > = 'includes',\n) {\n return <T extends KubernetesResource>(resource: T) => {\n if (!has(resource, path)) {\n return [];\n }\n const obj = get(resource, path);\n return Object.keys(obj)\n .filter(item => item[includeOrStartsWith](prefix))\n .map(item => [...path, `['${item}']`].join('.'));\n };\n}\n\nexport function emptyObjectRemoveRuleFactory(path: string[]) {\n return <T extends KubernetesResource>(resource: T) => {\n if (!has(resource, path)) {\n return [];\n }\n const obj = get(resource, path);\n return Object.keys(obj).length ? [] : [path.join('.')];\n };\n}\n","/**\n * 基于相对严格的版本号规则,规范可以参考https://semver.org/\n * 但在比较版本号时使用相对宽松的规则,具体可以查看compare-versions库的实现\n * 自测用例:https://stackblitz.com/edit/typescript-jqszbj\n */\n\nimport { compare, CompareOperator } from 'compare-versions';\n\nexport {\n CompareOperator as VersionCompareOperator,\n compareVersions as compareVersionToNum,\n satisfies as satisfiesVersion,\n} from 'compare-versions';\n\nexport interface VersionObject {\n version: string;\n major: number;\n minor: number;\n patch: number;\n prerelease?: Array<number | string>;\n}\n\nexport const versionRegex =\n /^(\\d+)\\.(\\d+)\\.(\\d+)(?:-([\\da-z-]+(?:\\.[\\da-z-]+)*))?$/;\n\nconst removeFirstV = (version: string) => {\n version = version.trim();\n if (/^v\\d/.test(version)) {\n version = version.slice(1);\n }\n return version;\n};\n/**\n * 获取有效的版本号,如果符合规范则返回,否则返回null\n * eg: getValidVersion('v1.2.3') // '1.2.3'\n */\nexport const getValidVersion = (version: string): string => {\n version = removeFirstV(version);\n return versionRegex.test(version) ? version : null;\n};\n\n/**\n * 解析版本号,如果符合规范则返回一个包含版本信息的对象\n */\nexport const parseVersion = (version: string): VersionObject => {\n version = removeFirstV(version);\n const match = version.match(versionRegex);\n if (match?.length) {\n return {\n version: match[0],\n major: +match[1],\n minor: +match[2],\n patch: +match[3],\n prerelease:\n match[4]?.split('.').map(str => {\n if (/^\\d*$/.test(str)) {\n return +str;\n }\n return str;\n }) || [],\n };\n }\n};\n\nconst _getCompare =\n (operator: CompareOperator) =>\n (v1: string, v2: string): boolean =>\n compare(v1, v2, operator);\n/**\n * 使用给定规则比较两个版本\n * lt: v1小于v2; gt: v1大于v2; lte: v1小于等于v2; gte: v1大于等于v2;\n * eg: compareVersion.lt('1.2.3', '9.8.7') // true\n * compareVersion.cmp('1.2.3', '9.8.7', '<') // true\n */\nexport const compareVersion = {\n lt: _getCompare('<'),\n gt: _getCompare('>'),\n eq: _getCompare('='),\n lte: _getCompare('<='),\n gte: _getCompare('>='),\n cmp: compare,\n};\n\n// 允许使用宽松的版本号进行 minor 版本比较\nexport const compareMinorVersion = (v1: string, v2: string) => {\n const v1Arr = v1.split('.').map(v => parseInt(v));\n const v2Arr = v2.split('.').map(v => parseInt(v));\n for (let i = 0; i < 2; i++) {\n const v1Part = v1Arr[i] || 0;\n const v2Part = v2Arr[i] || 0;\n if (v1Part > v2Part) {\n return 1;\n }\n if (v1Part < v2Part) {\n return -1;\n }\n }\n return 0;\n};\n","import { ResourceControl } from '../form/validators/resource-limit';\n\nexport const RESOURCE_MAC_TYPES = ['cpu', 'memory'] as const;\nexport const RESOURCE_REQUIREMENT_KEYS = ['requests', 'limits'] as const;\n\nexport type ResourceMacKey = (typeof RESOURCE_MAC_TYPES)[number];\nexport type ResourceMacs = Record<ResourceMacKey, string>;\nexport type ResourceMacFormModal = Record<ResourceMacKey, ResourceControl>;\nexport type ResourceRequirementKey = (typeof RESOURCE_REQUIREMENT_KEYS)[number];\nexport type ResourceRequirementStrict = Record<\n ResourceRequirementKey,\n ResourceMacs\n>;\n\nexport type ResourceRequirementFormModal = Record<\n ResourceRequirementKey,\n ResourceMacFormModal\n>;\n\nexport function getResourceViewModel(\n data: string,\n type: 'cpu' | 'memory',\n preferEmptyOrC?: boolean,\n): ResourceControl {\n // 对于 '2' 的cpu大小,视图上展示为 '2c'\n if (type === 'cpu' && !isNaN(+data)) {\n data = `${data}c`;\n }\n if (type === 'memory' && !isNaN(+data)) {\n data = `${data}Bytes`;\n }\n const reg = /^(\\d?\\.?\\d+)([A-Za-z]+)$/;\n const res = {\n value: '',\n unit: '',\n };\n\n if (!isNaN(parseFloat(data))) {\n const _res: string[] = reg.exec(data) || [];\n res.value = _res[1] || '';\n const unit = _res[2];\n switch (type) {\n case 'cpu': {\n res.unit = preferEmptyOrC && unit === 'c' ? '' : unit || 'm';\n break;\n }\n case 'memory': {\n res.unit = unit || '';\n break;\n }\n }\n }\n\n return res;\n}\n\nexport const resourceUnits = {\n cpu: [\n {\n value: 'm',\n label: 'unit_m',\n },\n {\n value: 'c',\n label: 'core',\n },\n ],\n memory: ['Mi', 'Gi'],\n};\n\nexport function getResourceValue(data: ResourceControl | string) {\n if (typeof data === 'string') {\n return data;\n }\n if (data.value) {\n return !data.unit || data.unit === 'c' || data.unit === 'Bytes'\n ? data.value\n : `${data.value}${data.unit}`;\n }\n return '';\n}\n\nexport function transferResource(resource: ResourceMacFormModal) {\n return Object.keys(resource).reduce((item, type: ResourceMacKey) => {\n const value = getResourceValue(resource[type]);\n if (value) {\n item[type] = value;\n }\n return item;\n }, {} as ResourceMacs);\n}\n","export const LOCAL_STORAGE_KEY_THEME_MODE = 'theme-mode';\n","const MAX_DIGITS = 22;\nconst DECIMAL_SEP = '.';\nconst ZERO_CHAR = '0';\nconst SymbolInfinity = '∞';\nconst SymbolDecimal = '.';\nconst SymbolGroup = '';\nconst SymbolExponential = 'E';\nconst SymbolNumberPattern = {\n gSize: 3,\n lgSize: 3,\n maxFrac: 3,\n minFrac: 0,\n minInt: 1,\n negPre: '-',\n negSuf: '',\n posPre: '',\n posSuf: '',\n};\n\n/**\n * Transforms a number to a locale string based on a style and a format\n */\n\nfunction formatNumberToLocaleString(\n value: number,\n pattern: ParsedNumberFormat,\n digitsInfo?: number[],\n): string {\n let formattedText = '';\n let isZero = false;\n\n if (isFinite(value)) {\n const parsedNumber = parseNumber(value);\n\n const minInt = digitsInfo[0] || 0;\n const minFraction = digitsInfo[1] || 0;\n const maxFraction = digitsInfo[2] || 0;\n\n roundNumber(parsedNumber, minFraction, maxFraction);\n\n let digits = parsedNumber.digits;\n let integerLen = parsedNumber.integerLen;\n const exponent = parsedNumber.exponent;\n let decimals = [];\n isZero = digits.every(d => !d);\n\n // pad zeros for small numbers\n for (; integerLen < minInt; integerLen++) {\n digits.unshift(0);\n }\n\n // pad zeros for small numbers\n for (; integerLen < 0; integerLen++) {\n digits.unshift(0);\n }\n\n // extract decimals digits\n if (integerLen > 0) {\n decimals = digits.splice(integerLen, digits.length);\n } else {\n decimals = digits;\n digits = [0];\n }\n\n // format the integer digits with grouping separators\n const groups = [];\n if (digits.length >= pattern.lgSize) {\n groups.unshift(digits.splice(-pattern.lgSize, digits.length).join(''));\n }\n\n while (digits.length > pattern.gSize) {\n groups.unshift(digits.splice(-pattern.gSize, digits.length).join(''));\n }\n\n if (digits.length > 0) {\n groups.unshift(digits.join(''));\n }\n\n formattedText = groups.join(SymbolGroup);\n\n // append the decimal digits\n if (decimals.length > 0) {\n formattedText += SymbolDecimal + decimals.join('');\n }\n\n if (exponent) {\n formattedText += SymbolExponential + '+' + exponent;\n }\n } else {\n formattedText = SymbolInfinity;\n }\n\n formattedText =\n value < 0 && !isZero\n ? pattern.negPre + formattedText + pattern.negSuf\n : pattern.posPre + formattedText + pattern.posSuf;\n\n return formattedText;\n}\n\n/**\n * @ngModule CommonModule\n *\n * Formats a number as text. Group sizing and separator and other locale-specific\n * configurations are based on the locale.\n *\n * Where:\n * - `value` is a number.\n * - `digitInfo` See {@link DecimalPipe} for more details.\n */\nexport function formatNumber(value: number, digitsInfo?: number[]): string {\n return formatNumberToLocaleString(value, SymbolNumberPattern, digitsInfo);\n}\n\ninterface ParsedNumberFormat {\n minInt: number;\n // the minimum number of digits required in the fraction part of the number\n minFrac: number;\n // the maximum number of digits required in the fraction part of the number\n maxFrac: number;\n // the prefix for a positive number\n posPre: string;\n // the suffix for a positive number\n posSuf: string;\n // the prefix for a negative number (e.g. `-` or `(`))\n negPre: string;\n // the suffix for a negative number (e.g. `)`)\n negSuf: string;\n // number of digits in each group of separated digits\n gSize: number;\n // number of digits in the last group of digits before the decimal separator\n lgSize: number;\n}\n\ninterface ParsedNumber {\n // an array of digits containing leading zeros as necessary\n digits: number[];\n // the exponent for numbers that would need more than `MAX_DIGITS` digits in `d`\n exponent: number;\n // the number of the digits in `d` that are to the left of the decimal point\n integerLen: number;\n}\n\n/**\n * Parses a number.\n * Significant bits of this parse algorithm came from https://github.com/MikeMcl/big.js/\n */\nfunction parseNumber(num: number): ParsedNumber {\n let numStr = Math.abs(num) + '';\n let exponent = 0;\n let digits: number[];\n let integerLen: number;\n let i: number;\n let j: number;\n let zeros: number;\n\n // Decimal point?\n if ((integerLen = numStr.indexOf(DECIMAL_SEP)) > -1) {\n numStr = numStr.replace(DECIMAL_SEP, '');\n }\n\n // Exponential form?\n if ((i = numStr.search(/e/i)) > 0) {\n // Work out the exponent.\n if (integerLen < 0) {\n integerLen = i;\n }\n integerLen += +numStr.slice(i + 1);\n numStr = numStr.slice(0, Math.max(0, i));\n } else if (integerLen < 0) {\n // There was no decimal point or exponent so it is an integer.\n integerLen = numStr.length;\n }\n\n // Count the number of leading zeros.\n for (i = 0; numStr.charAt(i) === ZERO_CHAR; i++) {\n /* empty */\n }\n\n if (i === (zeros = numStr.length)) {\n // The digits are all zero.\n digits = [0];\n integerLen = 1;\n } else {\n // Count the number of trailing zeros\n zeros--;\n while (numStr.charAt(zeros) === ZERO_CHAR) {\n zeros--;\n }\n\n // Trailing zeros are insignificant so ignore them\n integerLen -= i;\n digits = [];\n // Convert string to array of digits without leading/trailing zeros.\n for (j = 0; i <= zeros; i++, j++) {\n digits[j] = Number(numStr.charAt(i));\n }\n }\n\n // If the number overflows the maximum allowed digits then use an exponent.\n if (integerLen > MAX_DIGITS) {\n digits = digits.splice(0, MAX_DIGITS - 1);\n exponent = integerLen - 1;\n integerLen = 1;\n }\n\n return { digits, exponent, integerLen };\n}\n\n/**\n * Round the parsed number to the specified number of decimal places\n * This function changes the parsedNumber in-place\n */\n\nfunction roundNumber(\n parsedNumber: ParsedNumber,\n minFrac: number,\n maxFrac: number,\n) {\n if (minFrac > maxFrac) {\n throw new Error(\n `The minimum number of digits after fraction (${minFrac}) is higher than the maximum (${maxFrac}).`,\n );\n }\n\n const digits = parsedNumber.digits;\n let fractionLen = digits.length - parsedNumber.integerLen;\n const fractionSize = Math.min(Math.max(minFrac, fractionLen), maxFrac);\n\n // The index of the digit to where rounding is to occur\n let roundAt = fractionSize + parsedNumber.integerLen;\n const digit = digits[roundAt];\n\n if (roundAt > 0) {\n // Drop fractional digits beyond `roundAt`\n digits.splice(Math.max(parsedNumber.integerLen, roundAt));\n\n // Set non-fractional digits beyond `roundAt` to 0\n for (let j = roundAt; j < digits.length; j++) {\n digits[j] = 0;\n }\n } else {\n // We rounded to zero so reset the parsedNumber\n fractionLen = Math.max(0, fractionLen);\n parsedNumber.integerLen = 1;\n digits.length = Math.max(1, (roundAt = fractionSize + 1));\n digits[0] = 0;\n for (let i = 1; i < roundAt; i++) {\n digits[i] = 0;\n }\n }\n\n if (digit >= 5) {\n if (roundAt - 1 < 0) {\n for (let k = 0; k > roundAt; k--) {\n digits.unshift(0);\n parsedNumber.integerLen++;\n }\n digits.unshift(1);\n parsedNumber.integerLen++;\n } else {\n digits[roundAt - 1]++;\n }\n }\n\n // Pad out with zeros to get the required fraction length\n for (; fractionLen < Math.max(0, fractionSize); fractionLen++) {\n digits.push(0);\n }\n\n let dropTrailingZeros = fractionSize !== 0;\n // Minimal length = nb of decimals required + current nb of integers\n // Any number besides that is optional and can be removed if it's a trailing 0\n const minLen = minFrac + parsedNumber.integerLen;\n // Do any carrying, e.g. a digit was rounded up to 10\n const carry = digits.reduceRight((c, d, i, ds) => {\n d = d + c;\n ds[i] = d < 10 ? d : d - 10; // d % 10\n if (dropTrailingZeros) {\n // Do not keep meaningless fractional trailing zeros (e.g. 15.52000 --> 15.52)\n if (ds[i] === 0 && i >= minLen) {\n ds.pop();\n } else {\n dropTrailingZeros = false;\n }\n }\n return d >= 10 ? 1 : 0;\n }, 0);\n if (carry) {\n digits.unshift(carry);\n parsedNumber.integerLen++;\n }\n}\n","import { IP_ADDRESS_PATTERN } from '../constants/patterns';\nimport { Node } from '../types';\n\n/**\n * 从 underlord 节点 utils 中抽离出来,作为通用的内部IP、内部IPv6、hostname 获取方式\n */\nexport function getPrivateIPv4(node: Node) {\n return (\n node?.status?.addresses?.find(\n ({ type, address }) =>\n type === 'InternalIP' && IP_ADDRESS_PATTERN.pattern.test(address),\n )?.address || node?.metadata?.labels?.['platform.tkestack.io/machine-ip']\n );\n}\n\nexport function getPrivateIPv6(node: Node) {\n return node?.status?.addresses?.find(\n ({ type, address }) =>\n type === 'InternalIP' && !IP_ADDRESS_PATTERN.pattern.test(address),\n )?.address;\n}\n\nexport function getPrivateIP(node: Node) {\n return getPrivateIPv4(node) || getPrivateIPv6(node);\n}\n\nexport function getHostname(node: Node) {\n return node?.status?.addresses?.find(addr => addr.type === 'Hostname')\n .address;\n}\n","import { KubernetesResource } from '../types';\n\nexport function sortByCreationTimestamp<T extends KubernetesResource>(\n list: T[],\n): T[] {\n if (list) {\n return [...list].sort(\n (a, b) =>\n +new Date(b.metadata.creationTimestamp) -\n +new Date(a.metadata.creationTimestamp),\n );\n }\n}\n","import { get } from 'lodash-es';\n\nimport {\n GenericStatusColor,\n GenericStatusIcon,\n} from '../constants/status-icons';\nimport { DaemonSet, Deployment, Job, Pod, StatefulSet } from '../types';\n\nexport type Workload = Deployment | StatefulSet | DaemonSet;\n\nexport enum WorkloadKind {\n Deployment = 'Deployment',\n StatefulSet = 'StatefulSet',\n DaemonSet = 'DaemonSet',\n}\n\nexport enum JobStatusEnum {\n EXECUTING = 'executing',\n EXECUTE_SUCCEEDED = 'execute_succeeded',\n EXECUTE_FAILED = 'execute_failed',\n UNKNOWN = 'unknown', // 比如 namespace pod 数量达到限额上限,任务就会只触发,但是没有状态\n}\n\nexport const JobStatusColorMapper = {\n [JobStatusEnum.EXECUTING]: GenericStatusColor.Pending,\n [JobStatusEnum.EXECUTE_SUCCEEDED]: GenericStatusColor.Succeeded,\n [JobStatusEnum.EXECUTE_FAILED]: GenericStatusColor.Failed,\n [JobStatusEnum.UNKNOWN]: GenericStatusColor.Empty,\n};\n\nexport const JobStatusIconMapper = {\n [JobStatusEnum.EXECUTING]: GenericStatusIcon.Pending,\n [JobStatusEnum.EXECUTE_SUCCEEDED]: GenericStatusIcon.Check,\n [JobStatusEnum.EXECUTE_FAILED]: GenericStatusIcon.Error,\n [JobStatusEnum.UNKNOWN]: GenericStatusIcon.Question,\n};\n\nexport enum WorkloadStatusEnum {\n running = 'running',\n stopped = 'stopped',\n pending = 'pending',\n killed = 'killed',\n}\n\nexport interface GenericWorkloadStatus {\n status?: WorkloadStatusEnum;\n desired?: number;\n current?: number;\n}\n\nexport interface WorkloadStatus extends GenericWorkloadStatus {\n name?: string;\n group?: string;\n kind?: string;\n messages?: Array<{\n message: string;\n reason?: string;\n }>;\n}\n\nexport const WorkloadStatusColorMapper = {\n [WorkloadStatusEnum.running]: GenericStatusColor.Running,\n [WorkloadStatusEnum.pending]: GenericStatusColor.Pending,\n [WorkloadStatusEnum.stopped]: GenericStatusColor.Stopped,\n [WorkloadStatusEnum.killed]: GenericStatusColor.Stopped,\n};\n\nexport const WorkloadStatusIconMapper = {\n [WorkloadStatusEnum.running]: GenericStatusIcon.Running,\n [WorkloadStatusEnum.pending]: GenericStatusIcon.Pending,\n [WorkloadStatusEnum.stopped]: GenericStatusIcon.Stopped,\n [WorkloadStatusEnum.killed]: GenericStatusIcon.Stopped,\n};\n\nexport const STATUS = 'status';\n\nexport function parseDeploymentStatus(res: Deployment) {\n const status = res.status;\n if (\n larger(res.spec.replicas, 0) &&\n equal(status.updatedReplicas, res.spec.replicas) &&\n equal(status.replicas, res.spec.replicas) &&\n equal(status.availableReplicas, res.spec.replicas) &&\n largerEqual(status.observedGeneration, res.metadata.generation)\n ) {\n return WorkloadStatusEnum.running;\n }\n if (\n equal(res.spec.replicas, 0) &&\n equal(status.replicas, res.spec.replicas) &&\n equal(status.updatedReplicas, res.spec.replicas) &&\n equal(status.availableReplicas, res.spec.replicas) &&\n largerEqual(status.observedGeneration, res.metadata.generation)\n ) {\n return WorkloadStatusEnum.stopped;\n }\n return WorkloadStatusEnum.pending;\n}\n\nexport function parseDaemonSetStatus(res: DaemonSet) {\n const status = res.status;\n if (\n larger(status.desiredNumberScheduled, 0) &&\n largerEqual(status.observedGeneration, res.metadata.generation) &&\n equal(status.desiredNumberScheduled, status.currentNumberScheduled) &&\n equal(status.numberReady, status.desiredNumberScheduled) &&\n equal(status.numberAvailable, status.desiredNumberScheduled) &&\n (res.spec.updateStrategy.type !== 'RollingUpdate' ||\n equal(status.updatedNumberScheduled, status.desiredNumberScheduled))\n ) {\n return WorkloadStatusEnum.running;\n }\n if (\n equal(status.desiredNumberScheduled, 0) &&\n largerEqual(status.observedGeneration, res.metadata.generation) &&\n equal(status.desiredNumberScheduled, status.desiredNumberScheduled) &&\n equal(status.numberReady, status.desiredNumberScheduled) &&\n equal(status.numberAvailable, status.desiredNumberScheduled) &&\n equal(status.currentNumberScheduled, status.desiredNumberScheduled) &&\n (res.spec.updateStrategy.type !== 'RollingUpdate' ||\n equal(status.updatedNumberScheduled, status.desiredNumberScheduled))\n ) {\n return WorkloadStatusEnum.stopped;\n }\n return WorkloadStatusEnum.pending;\n}\n\nexport function parseStatefulSetStatus(res: StatefulSet) {\n const status = res.status;\n if (\n larger(res.spec.replicas, 0) &&\n equal(status.replicas, res.spec.replicas) &&\n equal(status.readyReplicas, res.spec.replicas) &&\n largerEqual(status.observedGeneration, res.metadata.generation) &&\n (res.spec.updateStrategy.type !== 'RollingUpdate' ||\n (equal(status.currentRevision, status.updateRevision)\n ? equal(status.currentReplicas, res.spec.replicas)\n : largerEqual(\n status?.updatedReplicas,\n status.replicas - +res.spec.updateStrategy.rollingUpdate?.partition,\n )))\n ) {\n return WorkloadStatusEnum.running;\n }\n if (\n equal(res.spec.replicas, 0) &&\n equal(status.replicas, res.spec.replicas) &&\n equal(status.readyReplicas, res.spec.replicas) &&\n largerEqual(status.observedGeneration, res.metadata.generation) &&\n (res.spec.updateStrategy.type !== 'RollingUpdate' ||\n (equal(status.currentRevision, status.updateRevision) &&\n equal(status.currentReplicas, res.spec.replicas)))\n ) {\n return WorkloadStatusEnum.stopped;\n }\n return WorkloadStatusEnum.pending;\n}\n\nexport function parseToWorkloadStatus(data: Deployment): GenericWorkloadStatus {\n switch (data?.kind) {\n case WorkloadKind.Deployment: {\n return {\n status: parseDeploymentStatus(data),\n desired: get(data, ['spec', 'replicas'], 0),\n current: get(data, [STATUS, 'availableReplicas'], 0),\n };\n }\n case WorkloadKind.DaemonSet: {\n return {\n status: parseDaemonSetStatus(data),\n desired: get(data, [STATUS, 'desiredNumberScheduled'], 0),\n current: get(data, [STATUS, 'numberReady'], 0),\n };\n }\n case WorkloadKind.StatefulSet: {\n return {\n status: parseStatefulSetStatus(data),\n desired: get(data, ['spec', 'replicas'], 0),\n current: get(data, [STATUS, 'readyReplicas'], 0),\n };\n }\n default: {\n return {\n status: WorkloadStatusEnum.stopped,\n desired: 0,\n current: 0,\n };\n }\n }\n}\n\nfunction equal(x: number | string, y: number | string) {\n return defaultZero(x) === defaultZero(y);\n}\n\nfunction largerEqual(x: number, y: number) {\n return defaultZero(x) >= defaultZero(y);\n}\n\nfunction larger(x: number, y: number) {\n return defaultZero(x) > defaultZero(y);\n}\n\nfunction defaultZero(x: number | string) {\n return x || 0;\n}\n\nexport function getJobStatus(data: Job): JobStatusEnum {\n const status = data.status;\n if (status.conditions?.some(_item => _item.type === 'Failed')) {\n return JobStatusEnum.EXECUTE_FAILED;\n }\n // when Complete and succeeded, judge to execute_succeeded\n if (status.conditions?.some(_item => _item.type === 'Complete')) {\n if (status.succeeded) {\n return JobStatusEnum.EXECUTE_SUCCEEDED;\n }\n if (status.failed) {\n return JobStatusEnum.EXECUTE_FAILED;\n }\n }\n // no condition and no Complete when running\n if (status.active) {\n return JobStatusEnum.EXECUTING;\n }\n return JobStatusEnum.UNKNOWN;\n}\n\nexport function getWorkloadStatus(status: GenericWorkloadStatus) {\n return status.status.toLowerCase() as WorkloadStatusEnum;\n}\n\nexport function getPodIPs(pod: Pod) {\n const podIPs = pod.status.podIPs?.map(({ ip }) => ip);\n return podIPs?.length ? podIPs : [pod.status.podIP].filter(Boolean);\n}\n","import { inject } from '@angular/core';\nimport {\n ActivatedRoute,\n ActivatedRouteSnapshot,\n NavigationEnd,\n Router,\n} from '@angular/router';\nimport { distinctUntilChanged, filter, map, startWith } from 'rxjs';\n\nimport { publishRef } from './operators';\n\nexport function getParamFromParent(\n key: string,\n snapshot: ActivatedRouteSnapshot,\n): string {\n const value = snapshot.paramMap.get(key);\n if (value) {\n return value;\n }\n if (snapshot.parent) {\n return getParamFromParent(key, snapshot.parent);\n }\n return '';\n}\n\nexport function initParamFromParent$(key: string) {\n const router = inject(Router);\n const route = inject(ActivatedRoute);\n return router.events.pipe(\n filter(e => e instanceof NavigationEnd),\n map(({ url }: NavigationEnd) => url),\n startWith(route.url),\n distinctUntilChanged(),\n map(() => getParamFromParent(key, route.snapshot)),\n publishRef(),\n );\n}\n","import { isBoolean } from 'lodash-es';\nimport { Observable, isObservable, of, switchMap } from 'rxjs';\n\nimport { publishRef } from './operators';\n\nexport type DisabledResult =\n | {\n disabled: boolean;\n tooltip?: string;\n }\n | boolean;\n\nexport type QueryDisabledFunc = () =>\n | DisabledResult\n | Observable<DisabledResult>;\n\n// 同步 Chain\nfunction buildDisabledQueryChain(\n judgeFns: QueryDisabledFunc[],\n index: number,\n): Exclude<DisabledResult, boolean> {\n if (!judgeFns[index]) {\n return null;\n }\n let result = judgeFns[index]() as DisabledResult;\n\n if (isBoolean(result)) {\n result = { disabled: result };\n }\n\n if (result?.disabled) {\n return result;\n }\n\n return buildDisabledQueryChain(judgeFns, index + 1);\n}\n\n// 异步 Chain\nfunction buildDisabledQueryChain$(\n judgeFns: QueryDisabledFunc[],\n index: number,\n): Observable<Exclude<DisabledResult, boolean>> {\n if (!judgeFns[index]) {\n return of(null);\n }\n let result$ = judgeFns[index]();\n result$ = isObservable(result$) ? result$ : of(result$);\n return result$.pipe(\n switchMap(result => {\n if (isBoolean(result)) {\n result = { disabled: result };\n }\n if (result?.disabled) {\n return of(result);\n }\n return buildDisabledQueryChain$(judgeFns, index + 1);\n }),\n );\n}\n\n/**\n * @description 获取同步状态\n */\nexport function getDisabledState(...judgeFns: QueryDisabledFunc[]) {\n return buildDisabledQueryChain(judgeFns, 0);\n}\n\n/**\n * @description 获取异步状态\n */\nexport function getDisabledState$(...judgeFns: QueryDisabledFunc[]) {\n return buildDisabledQueryChain$(judgeFns, 0).pipe(publishRef());\n}\n","import {\n AfterViewInit,\n Directive,\n Injectable,\n Injector,\n NgZone,\n OnDestroy,\n} from '@angular/core';\nimport { animationFrameScheduler, fromEvent, auditTime } from 'rxjs';\n\nconst RESIZE_SCHEDULER = animationFrameScheduler;\n\n// 提供全局的监听事件\n@Directive()\nexport abstract class ListenResizeDirective\n implements AfterViewInit, OnDestroy\n{\n // window 触发resize时触发,性能优化在OnResizeChangeService里执行,因此子类实现需要使用ngZone\n abstract onResize(): unknown;\n\n _resizeService: OnResizeChangeService;\n\n constructor(injector: Injector) {\n this._resizeService = injector.get(OnResizeChangeService);\n }\n\n ngAfterViewInit() {\n this._resizeService.subscribe(this);\n }\n\n ngOnDestroy() {\n this._resizeService.unsubscribe(this);\n }\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class OnResizeChangeService {\n private readonly _resizeListeners = new Set<ListenResizeDirective>();\n\n constructor(private readonly ngZone: NgZone) {\n this.ngZone.runOutsideAngular(() =>\n Promise.resolve().then(() => {\n fromEvent(window, 'resize')\n .pipe(\n // 收集多个resize\n auditTime(0, RESIZE_SCHEDULER),\n )\n .subscribe(_ => {\n this._resizeListeners.forEach(i => i.onResize());\n });\n }),\n );\n }\n\n subscribe(item: ListenResizeDirective) {\n this._resizeListeners.add(item);\n item.onResize();\n }\n\n unsubscribe(item: ListenResizeDirective) {\n this._resizeListeners.delete(item);\n }\n}\n","import { TOKEN_BASE_DOMAIN } from '@alauda-fe/dynamic-plugin-sdk';\nimport { Inject, Injectable } from '@angular/core';\nimport { get, sortBy } from 'lodash-es';\n\nimport { ANNOTATIONS, LABELS, METADATA } from '../constants';\nimport { Arrayable, KubernetesResource, ServicePort } from '../types';\nimport {\n emptyObjectRemoveRuleFactory,\n prefixFilterRuleFactory,\n stringify,\n yamlFilterField,\n YamlFilterItem,\n} from '../utils';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class YamlUtilService {\n constructor(@Inject(TOKEN_BASE_DOMAIN) private readonly baseDomain: string) {}\n\n // https://confluence.alauda.cn/pages/viewpage.action?pageId=112060211\n // 所有资源规则全平台通用\n getConciseResource(r: KubernetesResource) {\n const commonFilters: YamlFilterItem[] = [\n 'metadata.namespace',\n 'metadata.managedFields',\n 'metadata.creationTimestamp',\n 'metadata.generation',\n 'metadata.resourceVersion',\n 'metadata.uid',\n 'metadata.ownerReferences',\n 'metadata.finalizers',\n 'metadata.selfLink',\n `metadata.labels.['app.${this.baseDomain}/uuid']`,\n prefixFilterRuleFactory(this.baseDomain, [METADATA, ANNOTATIONS]),\n prefixFilterRuleFactory(\n 'kubernetes.io',\n [METADATA, ANNOTATIONS],\n 'includes',\n ),\n 'status',\n ];\n const specificFilters: YamlFilterItem[] = [];\n switch (r.kind) {\n case 'Application': {\n specificFilters.push('metadata.labels.sync-from-helmrequest');\n break;\n }\n case 'Deployment':\n case 'StatefulSet':\n case 'DaemonSet': {\n specificFilters.push('spec.template.annotations.updateTimestamp');\n break;\n }\n case 'Job': {\n specificFilters.push(\n 'spec.selector.matchLabels',\n 'spec.template.metadata.labels.controller-uid',\n `${METADATA}.${LABELS}.controller-uid`,\n prefixFilterRuleFactory(\n 'batch.kubernetes.io/controller-uid',\n ['spec', 'template', METADATA, LABELS],\n 'includes',\n ),\n );\n break;\n }\n case 'PersistentVolumeClaim': {\n specificFilters.push(\n prefixFilterRuleFactory(\n 'pv.kubernetes.io',\n [METADATA, ANNOTATIONS],\n 'startsWith',\n ),\n prefixFilterRuleFactory(\n 'volume.beta.kubernetes.io',\n [METADATA, ANNOTATIONS],\n 'startsWith',\n ),\n 'spec.volumeName',\n );\n break;\n }\n case 'Service': {\n specificFilters.push(\n resource => {\n // ExternalName 类型的 Service 没有 ports\n const ports =\n (get(resource, ['spec', 'ports']) as ServicePort[]) ?? [];\n return ports.map((_, i) =>\n ['spec', 'ports', `[${i}]`, 'nodePort'].join('.'),\n );\n },\n 'spec.clusterIPs',\n 'spec.clusterIP',\n 'spec.ipFamilies',\n 'spec.ipFamilyPolicy',\n );\n break;\n }\n default: {\n break;\n }\n }\n specificFilters.push(\n emptyObjectRemoveRuleFactory([METADATA, ANNOTATIONS]),\n emptyObjectRemoveRuleFactory([METADATA, LABELS]),\n );\n return yamlFilterField(r, [...commonFilters, ...specificFilters]);\n }\n\n /**\n *\n *\n * @template T\n * @param {T} resource\n * @param {boolean} [concise=false] 精简 Yaml\n * @param {boolean} [reduce=false] 隐藏 managedFields\n * @returns\n * @memberof YamlUtilService\n */\n generateFilteredYamlResource<T extends KubernetesResource>(\n resource: Arrayable<T>,\n concise = false,\n reduce = false,\n ) {\n return sortBy(Array.isArray(resource) ? resource : [resource], 'kind')\n .map((resource: T) =>\n concise\n ? this.getConciseResource(resource)\n : reduce\n ? yamlFilterField(resource, ['metadata.managedFields'])\n : resource,\n )\n .map(res =>\n stringify(res, {\n strict: false,\n sortMapEntries: true,\n }),\n )\n .join('\\n---\\r\\n\\n');\n }\n}\n","import {\n Injectable,\n IterableDiffer,\n IterableDiffers,\n OnDestroy,\n} from '@angular/core';\nimport {\n AbstractControl,\n FormArray,\n FormGroup,\n ValidationErrors,\n ValidatorFn,\n} from '@angular/forms';\nimport { cloneDeep, set, unset } from 'lodash-es';\nimport { Subscription } from 'rxjs';\n\nimport { isEqual } from '../../utils';\n\nexport const DUPLICATE_ERROR_KEY = 'duplicateError';\n\ntype RowKeys = Array<string | Record<string, string[]>>;\ntype FormatKeys = Record<string, string[]>;\nexport type FormatValue = Record<string, any>;\n\nexport type MatchValueFn = (\n props: string[],\n value1: FormatValue,\n value2: FormatValue,\n) => boolean;\n\nexport type StrategyFn = (\n keys: FormatKeys,\n controls: AbstractControl[],\n staleValue: FormatValue,\n mapFn: ValueMapFn,\n matchesFn: MatchValueFn,\n initData: any[],\n) => Array<{ key: string; control: AbstractControl }>;\n\n// IDENTICAL: 检测具有互反性,传递性。a与b重复,b与c重复,a必然与c重复,此程度上可进行优化\n// FULL: 不要求检测具有互反性,传递性。a与b判别重复,b与c判别重复,a未必与c判别重复\n// 主要是针对一些复杂的自定义匹配重复的使用场景,FULL模式采用全检查\nexport enum DUPLICATION_JUSTIFY_STRATEGY {\n IDENTICAL = 'identical',\n FULL = 'full',\n}\n\nexport const STRATEGY_JUDGE_MAPPER: Record<\n DUPLICATION_JUSTIFY_STRATEGY,\n StrategyFn\n> = {\n [DUPLICATION_JUSTIFY_STRATEGY.IDENTICAL]: identicalStrategyCheck,\n [DUPLICATION_JUSTIFY_STRATEGY.FULL]: fullStrategyCheck,\n};\n\n// use in component lifecycle\n@Injectable()\nexport class ValidateRowDuplicateService implements OnDestroy {\n // used to detect all controls data change\n private rowsDiffer: IterableDiffer<AbstractControl>;\n\n /**\n * @param differFactory: used to create support differ, which can be provided by user\n */\n constructor(private readonly arrayDiffers: IterableDiffers) {}\n\n // used to save last value, to check whether if control changed\n private readonly controlValueMap = new WeakMap<\n AbstractControl,\n FormatValue\n >();\n\n // used to save errors,to solve validators concurrently work(second validator can't get error from previous validator in one turn)\n private readonly errorMap = new WeakMap<AbstractControl, ValidationErrors>();\n\n private formArraySizeSub: Subscription;\n\n createFormArrayValidator({\n rowKeys,\n formArray,\n valueMapFn = defaultValueMapFn,\n initData = [],\n matchesFn = matchValue,\n strategy = DUPLICATION_JUSTIFY_STRATEGY.IDENTICAL,\n }: {\n rowKeys: RowKeys;\n formArray: FormArray;\n valueMapFn?: any;\n initData?: any[];\n matchesFn?: MatchValueFn;\n strategy?: DUPLICATION_JUSTIFY_STRATEGY;\n }): ValidatorFn {\n const keys = formatKeys(rowKeys);\n if (!this.rowsDiffer) {\n this.rowsDiffer = this.arrayDiffers.find([]).create();\n }\n\n this.initFormArraySizeChange(\n formArray,\n this.rowsDiffer,\n keys,\n valueMapFn,\n matchesFn,\n strategy,\n initData,\n );\n\n return (control: FormGroup) => {\n const { controls } = formArray;\n const lastValue = this.controlValueMap.get(control);\n if (control.pristine) {\n return null;\n }\n // nothing change\n const currentValue = getValueInKeys(control.value, keys, valueMapFn);\n this.controlValueMap.set(control, currentValue);\n if (lastValue) {\n let identical = true;\n Object.entries(keys).forEach(([key, props]) => {\n if (!equalsValue(props, currentValue[key], lastValue[key])) {\n identical = false;\n }\n });\n if (identical) {\n return this.errorMap.get(control);\n }\n }\n const diffKeys = lastValue\n ? diffKeysByValue(keys, currentValue, lastValue)\n : keys;\n // 和上次值存在差异,可将老数据作为删除行处理\n if (lastValue) {\n this.handleRemoveRowValue(\n diffKeys,\n controls,\n lastValue,\n valueMapFn,\n control,\n matchesFn,\n strategy,\n initData,\n );\n }\n // 更新后的状态,可能导致其他行出现新的重复\n const otherControls = controls.filter(ctrl => ctrl !== control);\n const ctrlError: Record<string, any> = {};\n otherControls.forEach(ctrl => {\n const otherValue = getValueInKeys(ctrl.value, diffKeys, valueMapFn);\n const othersError: Record<string, any> = {};\n // keys 中分别比较 如果 otherValue 与 currentValue 在某个key下,数据相同,则说明此 key 存在重复错误\n Object.entries(diffKeys).forEach(([key, props]) => {\n if (matchesFn(props, otherValue[key], currentValue[key])) {\n set(othersError, [key], currentValue[key]);\n set(ctrlError, key, currentValue[key]);\n }\n });\n this.addDuplicateError(othersError, ctrl, true);\n });\n (initData || []).forEach(initRow => {\n Object.entries(diffKeys).forEach(([key, props]) => {\n if (matchesFn(props, initRow[key], currentValue[key])) {\n set(ctrlError, key, currentValue[key]);\n }\n });\n });\n this.addDuplicateError(ctrlError, control);\n return this.errorMap.get(control);\n };\n }\n\n private handleRemoveRowValue(\n keys: FormatKeys,\n controls: AbstractControl[],\n staleValue: FormatValue,\n mapFn: ValueMapFn,\n selfControl?: AbstractControl,\n matchesFn?: MatchValueFn,\n strategy?: DUPLICATION_JUSTIFY_STRATEGY,\n initData?: any[],\n ) {\n if (selfControl) {\n this.removeDuplicateError(Object.keys(keys), selfControl);\n }\n const toRemoveError = STRATEGY_JUDGE_MAPPER[strategy](\n keys,\n controls,\n staleValue,\n mapFn,\n matchesFn,\n initData,\n );\n (toRemoveError || []).forEach(({ key, control }) =>\n this.removeDuplicateError([key], control, true),\n );\n }\n\n private initFormArraySizeChange(\n formArray: FormArray,\n rowsDiffer: IterableDiffer<AbstractControl>,\n keys: FormatKeys,\n mapFn: ValueMapFn,\n matchesFn: MatchValueFn,\n strategy: DUPLICATION_JUSTIFY_STRATEGY,\n initData?: any[],\n ) {\n if (!this.formArraySizeSub) {\n this.formArraySizeSub = formArray.valueChanges.subscribe(_ => {\n const { controls } = formArray;\n const rowsDiff = rowsDiffer.diff(controls);\n if (rowsDiff) {\n // on deleting row\n rowsDiff.forEachRemovedItem(record => {\n const rawValue = getValueInKeys(record.item.value, keys, mapFn);\n this.handleRemoveRowValue(\n keys,\n controls,\n rawValue,\n mapFn,\n undefined,\n matchesFn,\n strategy,\n initData,\n );\n });\n }\n });\n }\n }\n\n private addDuplicateError(\n errorInfo: Record<string, any>,\n control: AbstractControl,\n setControl = false,\n ) {\n const errors = cloneDeep(this.errorMap.get(control)) || {};\n // already has error,no need to add\n if (\n !Object.keys(errorInfo).some(\n key => errors?.[DUPLICATE_ERROR_KEY]?.[key] == null,\n )\n ) {\n return;\n }\n\n Object.keys(errorInfo).forEach(key => {\n set(errors, [DUPLICATE_ERROR_KEY, key], errorInfo[key]);\n });\n this.errorMap.set(control, errors);\n if (setControl) {\n // 当设置重复报错时,需要注意保留原来的报错\n const controlError = cloneDeep(control.errors);\n unset(controlError, [DUPLICATE_ERROR_KEY]);\n const error = { ...controlError, ...this.errorMap.get(control) };\n control.setErrors(Object.keys(error).length === 0 ? null : error, {\n emitEvent: false,\n });\n\n // control's error should be shown,it's not pristine any more\n control.markAsDirty();\n }\n }\n\n private removeDuplicateError(\n errorInfo: string[],\n control: AbstractControl,\n setControl = false,\n ) {\n const errors = cloneDeep(this.errorMap.get(control));\n // no need to remove error\n if (!errorInfo.some(key => errors?.[DUPLICATE_ERROR_KEY]?.[key] != null)) {\n return;\n }\n errorInfo.forEach(key => {\n unset(errors, [DUPLICATE_ERROR_KEY, key]);\n });\n this.errorMap.set(\n control,\n Object.keys(errors?.[DUPLICATE_ERROR_KEY] || {}).length ? errors : null,\n );\n if (setControl) {\n const controlError: Record<string, any> = cloneDeep(control.errors) || {};\n unset(controlError, [DUPLICATE_ERROR_KEY]);\n\n const error = { ...controlError, ...this.errorMap.get(control) };\n control.setErrors(Object.keys(error).length === 0 ? null : error, {\n emitEvent: false,\n });\n }\n }\n\n ngOnDestroy() {\n if (this.formArraySizeSub) {\n this.formArraySizeSub.unsubscribe();\n }\n }\n}\n\n// 仅返回keys规则下,currentValue与lastValue存在不同的部分key\nfunction diffKeysByValue(\n keys: FormatKeys,\n currentValue: FormatValue,\n lastValue: FormatValue,\n) {\n const obj: FormatKeys = {};\n Object.entries(keys).forEach(([key, props]) => {\n if (!equalsValue(props, currentValue[key], lastValue[key])) {\n obj[key] = props;\n }\n });\n return obj;\n}\n\n// 指定属性下,value1 和 value2 对于所有的属性存在有效值,并且相同,此时可判定重复\nfunction matchValue(props: string[], value1: FormatValue, value2: FormatValue) {\n return !props.some(\n prop => unCheckedValue(value1, prop) || value1[prop] !== value2[prop],\n );\n}\n\n// 指定属性下,value1 和 value2 对于所有的属性相同,此时可判定 value1 , value2 相等\nfunction equalsValue(\n props: string[],\n value1: FormatValue,\n value2: FormatValue,\n) {\n return !props.some(prop => !isEqual(value1[prop], value2[prop]));\n}\n\n/**\n * @param keys ['protocol',{complex: ['containerPort','hostPort']}]\n * @returns [{protocol: ['protocol']}, {complex: ['containerPort','hostPort']}]\n */\nfunction formatKeys(keys: RowKeys = []): FormatKeys {\n const obj: FormatKeys = {};\n keys.forEach(keyObj => {\n if (typeof keyObj === 'string') {\n obj[keyObj] = [keyObj];\n return;\n }\n Object.keys(keyObj).forEach(key => {\n obj[key] = keyObj[key];\n });\n });\n return obj;\n}\n\nfunction unCheckedValue(value: FormatValue, key: string) {\n return value?.[key] == null || value[key] === '';\n}\n\nfunction defaultValueMapFn(data: any, prop: string) {\n return data?.[prop];\n}\n\ntype ValueMapFn = (data: any, prop?: string) => any;\n\n/**\n * @param value input value,which should include all key behind keys\n * @param keys formatted keys, key is error key, like [{'containerPort':['containerPort']},{'complexError':['containerPort','hostPort']}]\n * @returns\n */\nfunction getValueInKeys(\n value: any,\n keys: FormatKeys,\n mapFn: ValueMapFn,\n): FormatValue {\n const obj = {};\n Object.entries(keys).forEach(([key, props]) => {\n props.forEach(prop => {\n set(obj, [key, prop], mapFn(value, prop));\n });\n });\n return obj;\n}\n\n// 互反性检查\nfunction identicalStrategyCheck(\n keys: FormatKeys,\n controls: AbstractControl[],\n staleValue: FormatValue,\n mapFn: ValueMapFn,\n matchesFn: MatchValueFn,\n initData: any[],\n) {\n const errorsCounter: Record<\n string,\n { controls: Set<AbstractControl>; count: number }\n > = {};\n\n Object.entries(keys).forEach(([key, props]) => {\n errorsCounter[key] = { controls: new Set(), count: 0 };\n initData.forEach(initRow => {\n if (matchValue(props, initRow[key], staleValue[key])) {\n errorsCounter[key].count++;\n }\n });\n controls.forEach(ctrl => {\n const controlValue = getValueInKeys(ctrl.value, keys, mapFn);\n // 互反性策略,要求和老数据相比,因此只有和老数据相同,但和任意当前其他数据不同的,才需要去掉之前的错误\n if (matchesFn(props, controlValue[key], staleValue[key])) {\n errorsCounter[key].count++;\n errorsCounter[key].controls.add(ctrl);\n }\n });\n });\n const toRemoveError: Array<{ key: string; control: AbstractControl }> = [];\n Object.entries(errorsCounter).forEach(([key, item]) => {\n if (item.count === 1) {\n item.controls.forEach(control => {\n toRemoveError.push({ key, control });\n });\n }\n });\n return toRemoveError;\n}\n\n// 全检查\nfunction fullStrategyCheck(\n keys: FormatKeys,\n controls: AbstractControl[],\n _: FormatValue,\n mapFn: ValueMapFn,\n matchesFn: MatchValueFn,\n initData: any[],\n) {\n const controlError: Map<AbstractControl, { key: string; count: number }> =\n new Map();\n\n Object.entries(keys).forEach(([key, props]) => {\n controls.forEach(ctrl => {\n const controlValue = getValueInKeys(ctrl.value, keys, mapFn);\n // 全检查策略,最终错误 key 对应 count 为 0 的ctrl会去掉相应错误\n controlError.set(ctrl, { key, count: 0 });\n initData.forEach(initRow => {\n if (matchValue(props, initRow[key], controlValue)) {\n const rawCount = controlError.get(ctrl).count;\n controlError.set(ctrl, { key, count: rawCount + 1 });\n }\n });\n controls\n .filter(otherControl => otherControl !== ctrl)\n .forEach(otherControl => {\n const otherValue = getValueInKeys(otherControl.value, keys, mapFn);\n if (matchesFn(props, controlValue[key], otherValue[key])) {\n const rawCount = controlError.get(ctrl).count;\n controlError.set(ctrl, { key, count: rawCount + 1 });\n }\n });\n });\n });\n const toRemoveError: Array<{ key: string; control: AbstractControl }> = [];\n controlError.forEach(({ count, key }, control) => {\n if (count === 0) {\n toRemoveError.push({ key, control });\n }\n });\n return toRemoveError;\n}\n","import { TimeService } from '@alauda-fe/dynamic-plugin-sdk';\nimport { Pipe, PipeTransform, isDevMode } from '@angular/core';\nimport parser from 'cron-parser';\nimport dayjs from 'dayjs';\nimport timezone from 'dayjs/plugin/timezone';\nimport utc from 'dayjs/plugin/utc';\n\nimport { isErrorMessage } from '../types/helpers';\nimport {\n isCronWeekDayCorrect,\n isCronFieldCountCorrect,\n} from '../utils/cron-util';\n\ndayjs.extend(utc);\ndayjs.extend(timezone);\n\n@Pipe({\n standalone: true,\n name: 'aclCrontabNext',\n})\nexport class CrontabNextPipe implements PipeTransform {\n constructor(private readonly time: TimeService) {}\n\n transform(\n rule: string,\n step = 1,\n {\n utc,\n showUtc = true,\n format,\n tz = this.time.currTz,\n formatTz = this.time.currTz,\n showLocalTz = true,\n parseInCurrentTz = false,\n }: {\n utc?: boolean;\n showUtc?: boolean;\n format?: string;\n tz?: string;\n formatTz?: string;\n showLocalTz?: boolean;\n parseInCurrentTz?: boolean;\n } = {},\n ) {\n let dateString = 'N/A';\n if (\n !rule ||\n !isCronFieldCountCorrect(rule) ||\n !isCronWeekDayCorrect(rule)\n ) {\n return dateString;\n }\n try {\n // 后端解析 crontab 表达式一定是 UTC 时间\n // const interval = parser.parseExpression(rule, { utc: false, tz });\n\n // underlord 的网络检测目前后端未按 UTC 时间解析,增加对本地时区的处理\n // 预计 3.13 去除对网络检测的兼容\n // Usage: apps\\underlord\\src\\app\\manage-platform\\features\\network-manage\\trace\n const interval = parser.parseExpression(rule, {\n utc: !parseInCurrentTz,\n tz,\n });\n\n let timestamp: number;\n for (let i = 0; i < step; i++) {\n timestamp = interval.next().getTime();\n }\n const nextDate = dayjs.utc(timestamp);\n\n const tzDisplay = utc\n ? showUtc\n ? ` (UTC)`\n : ''\n : showLocalTz\n ? ` (${tz})`\n : '';\n dateString =\n this.time.format(utc ? nextDate : nextDate.tz(formatTz), format) +\n tzDisplay;\n } catch (err) {\n if (isDevMode() && isErrorMessage(err) && !/invalid/i.test(err.message)) {\n console.error(err);\n }\n }\n return dateString;\n }\n}\n","/**\n * @packageDocumentation\n * @module utils\n */\n\nimport { Pipe, PipeTransform } from '@angular/core';\n\nexport const FIELD_NOT_AVAILABLE_PLACEHOLDER = '-';\n\nexport const isFieldNotAvailable = (field: unknown): boolean =>\n field == null || Number.isNaN(field as number) || !String(field).trim();\n\n@Pipe({\n name: 'aclFieldNotAvailable',\n standalone: true,\n})\nexport class FieldNotAvailablePipe implements PipeTransform {\n transform(field: unknown) {\n return isFieldNotAvailable(field)\n ? FIELD_NOT_AVAILABLE_PLACEHOLDER\n : String(field);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { appendImageHeader } from '../utils';\n\n@Pipe({\n name: 'aclImageHeader',\n standalone: true,\n})\nexport class ImgHeaderPipe implements PipeTransform {\n transform(value: string, prefix?: string) {\n return appendImageHeader(value, prefix);\n }\n}\n","import { ThemeService } from '@alauda/ui';\nimport {\n ChangeDetectorRef,\n OnDestroy,\n Pipe,\n PipeTransform,\n} from '@angular/core';\nimport { Subject, takeUntil } from 'rxjs';\n\n/*\n 因为业务中有很多图片需要在浅色和暗色两个主题切换后使用不同的图片。\n 推荐在业务中建两个图片的文件夹,light 和 dark,把两种主题对应的图片放在这两个目录下\n <img src=\"icons/xxx/xxx.svg\" > 变更为 <img [src]=\"'icons/$theme/xxx/xxx.svg' | aclImageTheme\" >\n*/\n@Pipe({\n name: 'aclImageTheme',\n pure: false,\n standalone: true,\n})\nexport class ImgThemePipe implements PipeTransform, OnDestroy {\n private readonly destroy$$ = new Subject<void>();\n\n constructor(\n private readonly theme: ThemeService,\n private readonly cdr: ChangeDetectorRef,\n ) {\n this.theme.currentTheme$.pipe(takeUntil(this.destroy$$)).subscribe(() => {\n this.cdr.markForCheck();\n });\n }\n\n transform(value: string) {\n return value.replace('$theme', this.theme.currentTheme());\n }\n\n ngOnDestroy() {\n this.destroy$$.next();\n this.destroy$$.complete();\n }\n}\n","import { KeyValuePipe as _KeyValuePipe } from '@angular/common';\nimport { Pipe, PipeTransform } from '@angular/core';\n\nexport const asIsComparator = (_a: unknown, _b: unknown) => 0;\n\n@Pipe({\n name: 'aclKeyvalue',\n standalone: true,\n})\nexport class KeyValuePipe extends _KeyValuePipe implements PipeTransform {\n // @ts-expect-error - no idea how to fix thi shit\n override transform<K extends keyof any, V>(input: Record<K, V>) {\n return super.transform(input, asIsComparator);\n }\n}\n","import { Pipe, PipeTransform, isDevMode } from '@angular/core';\nimport {\n DomSanitizer,\n SafeHtml,\n SafeResourceUrl,\n SafeScript,\n SafeStyle,\n SafeUrl,\n} from '@angular/platform-browser';\n\n@Pipe({\n name: 'aclSafe',\n standalone: true,\n})\nexport class SafePipe implements PipeTransform {\n constructor(private readonly sanitizer: DomSanitizer) {}\n\n transform(\n value: string,\n type: string,\n ): SafeHtml | SafeStyle | SafeScript | SafeUrl | SafeResourceUrl {\n if (!value) {\n return value;\n }\n\n if (isDevMode()) {\n console.warn(\n `Make sure the ${type} content is XSS safe${\n ['html', 'url'].includes(type)\n ? \", otherwise replace with 'aclSanitize'\"\n : ''\n }`,\n );\n }\n\n switch (type) {\n case 'html': {\n return this.sanitizer.bypassSecurityTrustHtml(value);\n }\n case 'style': {\n return this.sanitizer.bypassSecurityTrustStyle(value);\n }\n case 'script': {\n return this.sanitizer.bypassSecurityTrustScript(value);\n }\n case 'url': {\n return this.sanitizer.bypassSecurityTrustUrl(value);\n }\n case 'resourceUrl': {\n return this.sanitizer.bypassSecurityTrustResourceUrl(value);\n }\n default: {\n throw new Error(`Invalid safe type specified: ${type}`);\n }\n }\n }\n}\n","import { Pipe, PipeTransform, SecurityContext } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { sanitize } from 'dompurify';\n\n@Pipe({\n name: 'aclSanitize',\n standalone: true,\n})\nexport class SanitizePipe implements PipeTransform {\n constructor(private readonly sanitizer: DomSanitizer) {}\n\n transform(value: string, type: 'html' | 'url' = 'html'): SafeHtml {\n const valueSanitizer = sanitize(value ?? '');\n switch (type) {\n case 'html': {\n return this.sanitizer.bypassSecurityTrustHtml(valueSanitizer);\n }\n case 'url': {\n return this.sanitizer.sanitize(SecurityContext.URL, valueSanitizer);\n }\n }\n }\n}\n","/**\n * @packageDocumentation\n * @module utils\n */\n\nimport { TimeService, TranslateService } from '@alauda-fe/dynamic-plugin-sdk';\nimport {\n ChangeDetectorRef,\n Injectable,\n OnDestroy,\n Pipe,\n PipeTransform,\n} from '@angular/core';\nimport dayjs, { ConfigType } from 'dayjs';\nimport { Subject, takeUntil } from 'rxjs';\n\nimport { DATE_FORMAT, DATE_TIME_FORMAT } from '../constants';\n\nimport {\n FIELD_NOT_AVAILABLE_PLACEHOLDER,\n isFieldNotAvailable,\n} from './field-not-available.pipe';\n\nconst MILLISECONDS_SECOND = 1000;\nconst MILLISECONDS_MINUTE = MILLISECONDS_SECOND * 60;\nconst MILLISECONDS_HOUR = MILLISECONDS_MINUTE * 60;\nconst MILLISECONDS_DAY = MILLISECONDS_HOUR * 24;\nconst MILLISECONDS_WEEK = MILLISECONDS_DAY * 7;\n\n@Pipe({ name: 'aclRelativeTime', pure: false, standalone: true })\nexport class RelativeTimePipe implements PipeTransform, OnDestroy {\n private readonly destroy$$ = new Subject<void>();\n\n private timerId: number;\n\n constructor(\n private readonly cdr: ChangeDetectorRef,\n private readonly time: TimeService,\n private readonly translate: TranslateService,\n ) {\n this.translate.locale$\n .pipe(takeUntil(this.destroy$$))\n .subscribe(() => this.cdr.markForCheck());\n }\n\n ngOnDestroy() {\n this.destroy$$.next();\n this.destroy$$.complete();\n\n if (this.timerId) {\n clearTimeout(this.timerId);\n }\n }\n\n transform(value: ConfigType) {\n if (isFieldNotAvailable(value)) {\n return FIELD_NOT_AVAILABLE_PLACEHOLDER;\n }\n\n const currentTime = Date.now();\n const givenTime = dayjs(value).valueOf();\n\n const distance = currentTime - givenTime;\n\n if (distance >= MILLISECONDS_WEEK) {\n return this.time.format(value, DATE_FORMAT);\n }\n\n this.checkDistance(distance);\n\n return distance < MILLISECONDS_MINUTE\n ? this.translate.get('just_now')\n : this.time.distance(givenTime, currentTime);\n }\n\n protected checkDistance(distance: number) {\n if (distance < MILLISECONDS_MINUTE) {\n return this.startTimer(MILLISECONDS_SECOND);\n }\n\n if (distance < MILLISECONDS_HOUR) {\n return this.startTimer(MILLISECONDS_MINUTE);\n }\n\n if (distance < MILLISECONDS_DAY) {\n return this.startTimer(MILLISECONDS_HOUR);\n }\n\n return this.startTimer(MILLISECONDS_DAY);\n }\n\n private startTimer(timeout: number) {\n clearTimeout(this.timerId);\n this.timerId = window.setTimeout(() => this.cdr.markForCheck(), timeout);\n }\n}\n\n@Injectable()\nexport abstract class DateTimePipe implements PipeTransform {\n abstract format: string;\n\n constructor(private readonly time: TimeService) {}\n\n transform(value: ConfigType, utc = false) {\n if (!value?.toString().trim()) {\n return FIELD_NOT_AVAILABLE_PLACEHOLDER;\n }\n\n return this.time.format(utc ? dayjs.utc(value) : value, this.format);\n }\n}\n\n@Pipe({ name: 'aclStandardTime', standalone: true })\nexport class StandardTimePipe extends DateTimePipe implements PipeTransform {\n override format = DATE_TIME_FORMAT;\n}\n\n@Pipe({ name: 'aclStandardDate', standalone: true })\nexport class StandardDatePipe extends DateTimePipe implements PipeTransform {\n override format = DATE_FORMAT;\n}\n","import { ThemeService } from '@alauda/ui';\nimport {\n FALLBACK_LANGUAGE,\n isZhLang,\n TranslateService,\n} from '@alauda-fe/dynamic-plugin-sdk';\nimport {\n Pipe,\n PipeTransform,\n OnDestroy,\n ChangeDetectorRef,\n} from '@angular/core';\nimport { Subject, takeUntil } from 'rxjs';\n\n/**\n * 业务中存在需要根据界面语言和主题环境切换而变化的数据\n * 通过传入第一个参数为环境变量(theme/locale)的回调函数以实现数据的变化\n * 例 fn:(locale:string,prefix:string) => string;\n * fn | aclLocaleTrans:prefix\n *\n * 需要组合多种环境影响的场景可以通过柯里化的方式来使用管道\n * 例 fn: (locale:string) => (theme:string) => string;\n * fn | aclLocaleTrans | aclThemeTrans\n */\n\n@Pipe({ name: 'aclLocaleTrans', pure: false })\nexport class LocaleTransformPipe<T> implements PipeTransform, OnDestroy {\n private readonly destroyed$$ = new Subject<void>();\n\n constructor(\n private readonly translate: TranslateService,\n private readonly cdr: ChangeDetectorRef,\n ) {\n this.translate.locale$.pipe(takeUntil(this.destroyed$$)).subscribe(() => {\n this.cdr.markForCheck();\n });\n }\n\n ngOnDestroy() {\n this.destroyed$$.next();\n this.destroyed$$.complete();\n }\n\n transform(\n fn: (locale: string, ...params: unknown[]) => T,\n ...params: unknown[]\n ) {\n const locale = isZhLang(this.translate.locale)\n ? this.translate.locale\n : FALLBACK_LANGUAGE;\n return fn(locale, ...params);\n }\n}\n\n@Pipe({ name: 'aclThemeTrans', pure: false })\nexport class ThemeTransformPipe<T> implements PipeTransform, OnDestroy {\n private readonly destroyed$$ = new Subject<void>();\n\n constructor(\n private readonly themeService: ThemeService,\n private readonly cdr: ChangeDetectorRef,\n ) {\n this.themeService.currentTheme$\n .pipe(takeUntil(this.destroyed$$))\n .subscribe(() => {\n this.cdr.markForCheck();\n });\n }\n\n ngOnDestroy() {\n this.destroyed$$.next();\n this.destroyed$$.complete();\n }\n\n transform(\n fn: (theme: string, ...params: unknown[]) => T,\n ...params: unknown[]\n ) {\n return fn(this.themeService.currentTheme(), ...params);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { MarkedOptions, marked } from 'marked';\n\n@Pipe({\n name: 'aclMarked',\n standalone: true,\n})\nexport class MarkedPipe implements PipeTransform {\n transform(value: string, options?: MarkedOptions) {\n return marked(value, options);\n }\n}\n","import { TranslateKey, TranslatePipe } from '@alauda-fe/dynamic-plugin-sdk';\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { trim } from 'lodash-es';\n\n@Pipe({\n name: 'aclParseJsonTranslate',\n pure: false,\n standalone: true,\n})\nexport class ParseJsonTranslatePipe\n extends TranslatePipe\n implements PipeTransform\n{\n override transform(key: TranslateKey, data?: unknown): string {\n if (typeof key !== 'string' || /^{[\\S\\s]*}$/.test(trim(key))) {\n try {\n return super.transform(\n typeof key === 'string' ? JSON.parse(trim(key)) : key,\n data,\n );\n } catch {\n return key as string;\n }\n }\n\n return key;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { TIMEZONES } from '../constants/timezones';\n\n@Pipe({\n name: 'aclTimezoneDisplay',\n})\nexport class TimezoneDisplayPipe implements PipeTransform {\n transform(tz: string) {\n const matched = TIMEZONES.find(t => t.tzCode === tz);\n return {\n zh: matched.name_zh,\n en: matched.name,\n };\n }\n}\n","import { isZhLang } from '@alauda-fe/dynamic-plugin-sdk';\nimport { Pipe, PipeTransform } from '@angular/core';\nimport cronstrue from 'cronstrue';\n\nimport 'cronstrue/locales/zh_CN';\nimport 'cronstrue/locales/en';\n\n@Pipe({\n name: 'aclCronHumanReadable',\n})\nexport class CronHumanReadablePipe implements PipeTransform {\n transform(cronString: string, locale: string) {\n let humanReadableString;\n try {\n humanReadableString = cronstrue.toString(cronString, {\n locale: isZhLang(locale) ? 'zh_CN' : 'en',\n throwExceptionOnParseError: true,\n });\n } catch {\n humanReadableString = 'N/A';\n }\n return humanReadableString;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'aclParseJson',\n standalone: true,\n})\nexport class ParseJsonPipe implements PipeTransform {\n transform(value: string) {\n try {\n return JSON.parse(value);\n } catch {\n return value;\n }\n }\n}\n","import { DecimalPipe } from '@angular/common';\nimport { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'aclMinimumFormat',\n standalone: true,\n})\nexport class MinimumFormatPipe implements PipeTransform {\n constructor(private readonly decimal: DecimalPipe) {}\n\n transform(value: number | string, decimalPlaces = 0) {\n const decimalFormat = `1.${decimalPlaces}-${decimalPlaces || 2}`;\n return +value > 0 && +value < 0.01\n ? '<0.01'\n : this.decimal.transform(value, decimalFormat)?.replace(/,/g, '');\n }\n}\n","import { TranslateService } from '@alauda-fe/dynamic-plugin-sdk';\nimport { Pipe, PipeTransform } from '@angular/core';\nimport dayjs from 'dayjs';\nimport duration from 'dayjs/plugin/duration';\n\ndayjs.extend(duration);\n\n@Pipe({ name: 'aclDuration', pure: false, standalone: true })\nexport class DurationPipe implements PipeTransform {\n constructor(private readonly translate: TranslateService) {}\n transform(ms: any): string {\n if (!ms) {\n return '-';\n }\n\n let message = '';\n if (ms >= 1000) {\n const duration = dayjs.duration(ms);\n\n const days = duration.days();\n const hours = duration.hours();\n const minutes = duration.minutes();\n const seconds = duration.seconds();\n\n message += days\n ? days + ' ' + this.translate.get('days').toLowerCase()\n : '';\n message += hours\n ? ' ' + hours + ' ' + this.translate.get('hours').toLowerCase()\n : '';\n message += minutes\n ? ' ' + minutes + ' ' + this.translate.get('minutes').toLowerCase()\n : '';\n message += seconds\n ? ' ' + seconds + ' ' + this.translate.get('seconds').toLowerCase()\n : '';\n } else if (ms > 0) {\n message = this.translate.get('less_than_a_second');\n } else {\n message = '-';\n }\n\n return message;\n }\n}\n","/**\n * @packageDocumentation\n * @module utils\n */\n\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { last } from 'lodash-es';\n\nimport { IfEqual } from '../types';\n\nexport type OmitFirst<T extends unknown[]> = T extends [unknown, ...infer R]\n ? R\n : [];\n\n@Pipe({\n name: 'pure',\n standalone: true,\n})\nexport class PurePipe implements PipeTransform {\n /**\n * ! Notice: function overload is not supported for `mapper`,\n * you may have to use `$any` to workaround in template.\n */\n transform<T extends (...args: unknown[]) => unknown>(\n value: Parameters<T>[0],\n mapper: T,\n ...args: IfEqual<T, any, unknown[], OmitFirst<Parameters<T>>>\n ) {\n return mapper.call(last(args), value, ...args) as ReturnType<T>;\n }\n}\n","/**\n * @packageDocumentation\n * @module utils\n */\n\nimport { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'calc',\n standalone: true,\n})\nexport class CalcPipe implements PipeTransform {\n transform<T extends (...args: unknown[]) => unknown>(\n calc: T,\n ...args: Parameters<T>\n ) {\n return calc(...args) as ReturnType<T>;\n }\n}\n","import { AttrBoolean, coerceAttrBoolean } from '@alauda/ui';\nimport {\n Directive,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Self,\n} from '@angular/core';\nimport { ControlContainer, NgControl } from '@angular/forms';\nimport { Observable, Subject, takeUntil } from 'rxjs';\n\nimport { ObservableInput } from '../utils';\n\n/**\n *\n * Usage:\n * If you want to disable a formControl.\n *\n * eg:\n * <input formControlName=\"name\" [aclDisabled]=\"true\">\n *\n */\n@Directive({\n selector: '[aclDisabled]',\n standalone: true,\n})\nexport class DisabledDirective implements OnInit, OnDestroy {\n @Input()\n aclDisabled: AttrBoolean;\n\n @ObservableInput()\n aclDisabled$!: Observable<AttrBoolean>;\n\n @Input()\n destroyStrategy?: 'check' | 'disable' | 'enable';\n\n private readonly destroy$$ = new Subject<void>();\n\n constructor(\n @Self()\n @Optional()\n private readonly ctrlContainer: ControlContainer,\n @Self()\n @Optional()\n private readonly ngControl: NgControl,\n ) {}\n\n ngOnInit(): void {\n this.aclDisabled$\n .pipe(takeUntil(this.destroy$$))\n .subscribe(disabled => this.checkStatus(disabled));\n }\n\n ngOnDestroy(): void {\n this.destroy$$.next();\n this.destroy$$.complete();\n\n switch (this.destroyStrategy) {\n case 'check': {\n this.checkStatus(this.aclDisabled);\n break;\n }\n case 'disable': {\n this.checkStatus(true);\n break;\n }\n case 'enable': {\n this.checkStatus(false);\n break;\n }\n }\n }\n\n private checkStatus(disabled: boolean | '') {\n (this.ngControl ?? this.ctrlContainer)?.control?.[\n coerceAttrBoolean(disabled) ? 'disable' : 'enable'\n ]();\n }\n}\n","/**\n * @packageDocumentation\n * @module utils\n */\n\nimport { FeatureGateService } from '@alauda-fe/dynamic-plugin-sdk';\nimport {\n ChangeDetectorRef,\n Directive,\n Input,\n OnDestroy,\n OnInit,\n TemplateRef,\n ViewContainerRef,\n // cspell: disable-next-line\n ɵstringify as stringify,\n} from '@angular/core';\nimport { Subscription, distinctUntilChanged } from 'rxjs';\n\n/**\n * @example\n * ```\n * <ng-container *aclFeatureGate=\"gate-name\"></ng-container>\n * ```\n */\n@Directive({ selector: '[aclFeatureGate]', standalone: true })\nexport class FeatureGateDirective implements OnInit, OnDestroy {\n @Input('aclFeatureGate')\n featureName: string = null;\n\n @Input('aclFeatureGateCluster')\n cluster: string = null;\n\n @Input('aclFeatureGateNegate')\n negate: boolean = false;\n\n @Input('aclFeatureGateThen')\n set then(templateRef: TemplateRef<void>) {\n assertTemplate('aclFeatureGateThen', templateRef);\n this.thenTemplateRef = templateRef;\n }\n\n @Input('aclFeatureGateElse')\n set else(templateRef: TemplateRef<void>) {\n assertTemplate('aclVersionGateElse', templateRef);\n this.elseTemplateRef = templateRef;\n }\n\n private thenTemplateRef: TemplateRef<void> = null;\n private elseTemplateRef: TemplateRef<void> = null;\n\n private subscription: Subscription = null;\n\n constructor(\n private readonly container: ViewContainerRef,\n private readonly featureGate: FeatureGateService,\n private readonly crd: ChangeDetectorRef,\n templateRef: TemplateRef<void>,\n ) {\n this.thenTemplateRef = templateRef;\n }\n\n ngOnInit() {\n if (!this.featureName) {\n this.container.createEmbeddedView(this.thenTemplateRef);\n return;\n }\n\n this.subscription = this.featureGate[\n this.negate ? 'isNegateEnabled' : 'isEnabled'\n ](this.featureName, this.cluster)\n .pipe(distinctUntilChanged())\n .subscribe(enabled => {\n this.container.clear();\n if (enabled) {\n this.container.createEmbeddedView(this.thenTemplateRef);\n } else if (this.elseTemplateRef) {\n this.container.createEmbeddedView(this.elseTemplateRef);\n }\n this.crd.markForCheck();\n });\n }\n\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n}\n\nfunction assertTemplate(\n property: string,\n templateRef: TemplateRef<any> | null,\n): void {\n const isTemplateRefOrNull = !!(\n !templateRef || templateRef.createEmbeddedView\n );\n if (!isTemplateRefOrNull) {\n throw new Error(\n `${property} must be a TemplateRef, but received '${stringify(\n templateRef,\n )}'.`,\n );\n }\n}\n","import { Directive, ElementRef } from '@angular/core';\n\n@Directive({\n selector: '[aclFormItemEffect]',\n})\nexport class FormItemMarginEffectDirective {\n constructor(private readonly el: ElementRef) {\n this.el.nativeElement.style.display = 'block';\n this.el.nativeElement.style.marginBottom = '-16px';\n }\n}\n","/**\n * @packageDocumentation\n * @module utils\n */\n\nimport { FormItemControlDirective } from '@alauda/ui';\nimport {\n CdkPortalOutlet,\n ComponentPortal,\n TemplatePortal,\n} from '@angular/cdk/portal';\nimport {\n ChangeDetectionStrategy,\n Component,\n ComponentFactoryResolver,\n ComponentRef,\n Directive,\n HostBinding,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Self,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport {\n AbstractControl,\n AsyncValidatorFn,\n NgControl,\n ValidatorFn,\n} from '@angular/forms';\nimport {\n Observable,\n Subject,\n combineLatest,\n distinctUntilChanged,\n filter,\n map,\n startWith,\n takeUntil,\n} from 'rxjs';\n\nimport { FieldNotAvailablePipe } from '../pipes/field-not-available.pipe';\nimport { ObservableInput } from '../utils';\n\n@Directive({\n selector: '[aclReadonlyField]',\n standalone: true,\n})\nexport class ReadonlyFieldDirective implements OnInit, OnDestroy {\n @Input()\n aclReadonlyField: boolean;\n\n @ObservableInput()\n aclReadonlyField$: Observable<boolean>;\n\n @Input()\n hidden: boolean;\n\n private isControlRequired = false;\n\n private spanComponentRef: ComponentRef<SpanComponent>;\n\n private readonly templateContext = {};\n\n private readonly destroy$ = new Subject<void>();\n\n // 自定义模板\n @Input('aclReadonlyFieldTemplate')\n template: TemplateRef<any>;\n\n // 自定义模板\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('aclReadonlyFieldTemplateContext')\n context: object;\n\n @HostBinding('hidden')\n get isHidden() {\n return this.hidden || this.aclReadonlyField;\n }\n\n constructor(\n private readonly control: NgControl,\n private readonly cfr: ComponentFactoryResolver,\n private readonly viewContainerRef: ViewContainerRef,\n // 仅考虑当前control,子control无法知晓父FormItemControl元素 ,包裹了多少个control,以及各自处于什么状态,该情况自行处理\n @Self()\n @Optional()\n private readonly controlDirective: FormItemControlDirective,\n ) {}\n\n private setValue(value: unknown) {\n if (this.template) {\n Object.assign(this.templateContext, {\n $implicit: value,\n ...this.context,\n });\n } else {\n this.spanComponentRef.instance.setData(value);\n }\n }\n\n ngOnInit() {\n const controlEntity = this.control.control;\n // formControl will compose multi validators to 1, no matter defined in template nor FormBuilder\n const { validator, asyncValidator } = controlEntity;\n this.isControlRequired = this.controlDirective?.required || false;\n const portalOutlet = new CdkPortalOutlet(this.cfr, this.viewContainerRef);\n const portal = this.template\n ? new TemplatePortal(\n this.template,\n this.viewContainerRef,\n this.templateContext,\n )\n : new ComponentPortal(SpanComponent, this.viewContainerRef);\n\n const containerAttached$ = this.aclReadonlyField$.pipe(\n distinctUntilChanged(),\n map(isUpdate => {\n if (!isUpdate) {\n // 重置\n if (this.controlDirective) {\n this.controlDirective.required = this.isControlRequired;\n }\n if (portalOutlet.hasAttached()) {\n portalOutlet.detach();\n }\n this.applyValidators(controlEntity, validator, asyncValidator);\n return false;\n }\n\n if (this.controlDirective) {\n this.controlDirective.required = false;\n }\n const attachPoint = portalOutlet.attach(portal);\n if (!this.template) {\n this.spanComponentRef = attachPoint as ComponentRef<SpanComponent>;\n }\n this.clearValidators(controlEntity);\n return true;\n }),\n );\n\n const sourceValue$ = this.control.valueChanges.pipe(\n startWith(this.control.value),\n );\n\n combineLatest([sourceValue$, containerAttached$])\n .pipe(\n takeUntil(this.destroy$),\n filter(([, attached]) => !!attached),\n )\n .subscribe(([value]) => {\n this.setValue(value);\n });\n }\n\n private applyValidators(\n control: AbstractControl,\n rawValidator?: ValidatorFn,\n rawAsyncValidator?: AsyncValidatorFn,\n ) {\n if (\n control.validator === rawValidator &&\n control.asyncValidator === rawAsyncValidator\n ) {\n return;\n }\n control.setValidators(rawValidator);\n control.setAsyncValidators(rawAsyncValidator);\n control.updateValueAndValidity();\n }\n\n private clearValidators(control: AbstractControl) {\n // delay checking validators for ngModel\n requestAnimationFrame(() => {\n if (!control.validator && !control.asyncValidator) {\n return;\n }\n control.clearValidators();\n control.clearAsyncValidators();\n control.updateValueAndValidity();\n });\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n }\n}\n\n@Component({\n template: `<span>{{ data | aclFieldNotAvailable }}</span>`,\n styles: [\n `\n span {\n word-break: break-all;\n }\n `,\n ],\n // eslint-disable-next-line @angular-eslint/prefer-on-push-component-change-detection\n changeDetection: ChangeDetectionStrategy.Default,\n standalone: true,\n imports: [FieldNotAvailablePipe],\n})\nexport class SpanComponent<T = unknown> {\n data: T;\n\n setData(value: T) {\n this.data = value;\n }\n}\n","import { observeResizeOn } from '@alauda/ui';\nimport {\n AfterViewInit,\n Directive,\n ElementRef,\n EventEmitter,\n OnDestroy,\n Output,\n} from '@angular/core';\nimport { Subject, takeUntil } from 'rxjs';\n\nexport interface ResizeEvent {\n width: number;\n height: number;\n}\n\n@Directive({\n selector: '[aclResize]',\n standalone: true,\n})\nexport class ResizeDirective implements OnDestroy, AfterViewInit {\n @Output()\n resized = new EventEmitter<ResizeEvent>();\n\n private readonly destroy$$ = new Subject<void>();\n\n constructor(private readonly element: ElementRef) {}\n\n ngAfterViewInit() {\n observeResizeOn(this.element.nativeElement)\n .pipe(takeUntil(this.destroy$$))\n .subscribe(() => this.onResized());\n }\n\n private onResized() {\n const { clientWidth, clientHeight } = this.element.nativeElement;\n this.resized.emit({\n width: clientWidth,\n height: clientHeight,\n });\n }\n\n ngOnDestroy() {\n this.destroy$$.next();\n this.destroy$$.complete();\n }\n}\n","import { CdkScrollable } from '@angular/cdk/scrolling';\nimport {\n Directive,\n ElementRef,\n HostBinding,\n HostListener,\n Input,\n Optional,\n} from '@angular/core';\nimport { ControlContainer } from '@angular/forms';\nimport { fromEvent, debounceTime, startWith, take } from 'rxjs';\n\nconst FOCUSABLE_TAG_NAMES = ['INPUT', 'TEXTAREA'];\nconst NG_INVALID = '.ng-invalid';\nconst MARKED_CLASS_NAME = 'acl-scroll-to-first-invalid-marker';\n\nconst SELECTORS = [\n [\n FOCUSABLE_TAG_NAMES.map(tagName => `${tagName}${NG_INVALID}`),\n ...[\n 'aui-number-input',\n 'aui-tags-input',\n 'aui-select',\n 'aui-multi-select',\n 'aui-switch',\n 'aui-tree-select',\n ].map(tagName => `${tagName}${NG_INVALID} input`),\n `aui-radio-group${NG_INVALID}`,\n `.${MARKED_CLASS_NAME}${NG_INVALID}`,\n ].join(','),\n NG_INVALID,\n];\n\n@Directive({\n selector: '[aclScrollToFirstInvalidMarker]',\n})\nexport class ScrollToFirstInvalidMarkerDirective {\n @HostBinding(`class.${MARKED_CLASS_NAME}`)\n @HostBinding('class.ng-invalid')\n @Input()\n aclScrollToFirstInvalidMarker = false;\n}\n\n@Directive({\n selector: '[aclScrollToFirstInvalid]',\n standalone: true,\n})\nexport class ScrollToFirstInvalidDirective {\n @Input()\n labelOffset = this.cdkScrollable ? 20 : 150;\n\n @Input()\n aclScrollToFirstInvalid: boolean | '';\n\n get containerEl() {\n return this.cdkScrollable?.getElementRef().nativeElement || window;\n }\n\n @HostListener('ngSubmit')\n onSubmit() {\n requestAnimationFrame(() => {\n if (\n this.aclScrollToFirstInvalid === ''\n ? this.controlContainer.invalid\n : this.aclScrollToFirstInvalid\n ) {\n this.scrollToFirstInvalid();\n }\n });\n }\n\n constructor(\n private readonly elRef: ElementRef<HTMLElement>,\n private readonly controlContainer: ControlContainer,\n @Optional() private readonly cdkScrollable: CdkScrollable,\n ) {}\n\n scrollToFirstInvalid() {\n const firstInvalidEl = this.getFirstInvalidInput();\n\n if (!firstInvalidEl) {\n return;\n }\n\n this.containerEl.scrollTo({\n top: this.getTopOffset(firstInvalidEl),\n behavior: 'smooth',\n });\n\n if (FOCUSABLE_TAG_NAMES.includes(firstInvalidEl.tagName)) {\n fromEvent(this.containerEl, 'scroll')\n .pipe(startWith(null as void), debounceTime(100), take(1))\n .subscribe(() => firstInvalidEl.focus());\n }\n }\n\n getFirstInvalidInput() {\n const el = this.elRef.nativeElement;\n const hiddenEls = Array.from(el.querySelectorAll('[hidden]'));\n for (const selector of SELECTORS) {\n const ctrlEls = Array.from(el.querySelectorAll<HTMLElement>(selector));\n for (const ctrlEl of ctrlEls) {\n if (\n hiddenEls.some(\n hiddenEl => hiddenEl === ctrlEl || hiddenEl.contains(ctrlEl),\n )\n ) {\n continue;\n }\n return ctrlEl;\n }\n }\n }\n\n private getTopOffset(controlEl: HTMLElement): number {\n const labelOffset = this.labelOffset;\n const controlElTop = controlEl.getBoundingClientRect().top;\n\n if (this.cdkScrollable) {\n const containerEl = this.containerEl as HTMLElement;\n const containerTop = containerEl.getBoundingClientRect().top;\n const absoluteControlElTop = controlElTop + containerEl.scrollTop;\n return absoluteControlElTop - containerTop - labelOffset;\n }\n\n const absoluteControlElTop = controlElTop + window.scrollY;\n return absoluteControlElTop - labelOffset;\n }\n}\n","import { observeResizeOn } from '@alauda/ui';\nimport { ScrollDispatcher } from '@angular/cdk/overlay';\nimport {\n Directive,\n EventEmitter,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewContainerRef,\n} from '@angular/core';\nimport {\n debounceTime,\n fromEvent,\n map,\n pairwise,\n startWith,\n Subject,\n takeUntil,\n merge,\n} from 'rxjs';\n\nconst defaultDistance = 60;\n\ninterface Option {\n bottomDistance?: number;\n topDistance?: number;\n}\n\n// 监测滚动到边界并触发回调\n@Directive({\n selector: '[aclScrollBorderObserver]',\n standalone: true,\n})\nexport class ScrollBorderObserverDirective implements OnInit, OnDestroy {\n @Input('aclScrollBorderObserver')\n option: Option | '' | false | number;\n\n @Output()\n scrollBorder = new EventEmitter<'top' | 'bottom'>();\n\n @Output()\n scrollBottomBorder = new EventEmitter();\n\n scrollEl: HTMLElement | Window;\n readonly destroy$$ = new Subject<void>();\n private readonly scrollDispatcher: ScrollDispatcher;\n private readonly viewContainerRef: ViewContainerRef;\n\n constructor(injector: Injector) {\n this.scrollDispatcher = injector.get(ScrollDispatcher);\n this.viewContainerRef = injector.get(ViewContainerRef);\n }\n\n ngOnInit() {\n if (this.option === false) {\n return;\n }\n this.scrollEl =\n this.scrollDispatcher\n .getAncestorScrollContainers(\n this.viewContainerRef.element.nativeElement,\n )\n .pop()\n ?.getElementRef()?.nativeElement ?? window;\n\n this.setupScroll();\n }\n\n ngOnDestroy() {\n this.destroy$$.next();\n this.destroy$$.complete();\n }\n\n private setupScroll() {\n const viewEl =\n this.scrollEl === window\n ? document.documentElement\n : (this.scrollEl as HTMLElement);\n merge(\n observeResizeOn(viewEl),\n fromEvent(this.scrollEl, 'scroll').pipe(startWith(viewEl.scrollTop)),\n )\n .pipe(\n debounceTime(50),\n map(() => viewEl.scrollTop),\n pairwise(),\n takeUntil(this.destroy$$),\n )\n .subscribe(([prev, cur]) => {\n let direction: 'top' | 'bottom';\n const option =\n typeof this.option === 'number'\n ? {\n topDistance: this.option,\n bottomDistance: this.option,\n }\n : this.option || ({} as Option);\n if (\n cur > prev &&\n viewEl.scrollTop >\n viewEl.scrollHeight -\n viewEl.clientHeight -\n (option.bottomDistance || defaultDistance)\n ) {\n direction = 'bottom';\n } else if (\n cur < prev &&\n viewEl.scrollTop < (option.topDistance || defaultDistance)\n ) {\n direction = 'top';\n }\n this.scrollBorder.emit(direction);\n direction === 'bottom' && this.scrollBottomBorder.emit();\n });\n }\n}\n","import {\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n isDevMode,\n OnInit,\n Output,\n} from '@angular/core';\n\n@Directive({\n selector: '[aclClickOutside]',\n exportAs: 'aclClickOutside',\n standalone: true,\n})\nexport class ClickOutsideDirective implements OnInit {\n // 为了应对例如dialog等感性上属于该子元素的点击, 支持传入className用以判断是否是outside\n @Input('aclClickOutside')\n className: string;\n\n @Output()\n clickOutside = new EventEmitter<Event>();\n\n @HostListener('document:click', ['$event'])\n onBodyClick(event: MouseEvent) {\n const targetEl = event.target as Node;\n if (!this.el.nativeElement.contains(targetEl)) {\n if (this.className) {\n // @ts-ignore\n for (const contain of document.querySelectorAll(`.${this.className}`)) {\n if ((contain as Node).contains(targetEl)) {\n return;\n }\n }\n }\n this.clickOutside.emit(event);\n }\n }\n\n constructor(private readonly el: ElementRef<HTMLElement>) {}\n\n ngOnInit() {\n if (\n isDevMode() &&\n this.className &&\n !this.className.startsWith('click-outside')\n ) {\n // 因为松耦合的设计,所以增加一个范式要求\n console.error('aclClickOutside 必须是空或以 click-outside 开头');\n }\n }\n}\n","import {\n Directive,\n Input,\n TemplateRef,\n ViewContainerRef,\n inject,\n} from '@angular/core';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[declare]',\n standalone: true,\n})\nexport class DeclareDirective {\n private readonly viewContainerRef = inject(ViewContainerRef);\n private readonly templateRef = inject(TemplateRef<any>);\n\n @Input()\n set declare(declare: unknown) {\n this.viewContainerRef.clear();\n this.viewContainerRef.createEmbeddedView(this.templateRef, {\n declare,\n });\n }\n}\n","import { TranslateService } from '@alauda-fe/dynamic-plugin-sdk';\nimport { ChangeDetectorRef, Directive, OnDestroy } from '@angular/core';\nimport { Subject, takeUntil } from 'rxjs';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'aui-code-editor',\n standalone: true,\n})\nexport class AuiCodeEditorHelperDirective implements OnDestroy {\n destroy$$ = new Subject<void>();\n\n constructor(\n private readonly cdr: ChangeDetectorRef,\n private readonly translate: TranslateService,\n ) {\n this.translate.locale$.pipe(takeUntil(this.destroy$$)).subscribe(() => {\n this.cdr.markForCheck();\n });\n }\n\n ngOnDestroy() {\n this.destroy$$.next();\n this.destroy$$.complete();\n }\n}\n","import {\n Directive,\n Host,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { isFunction } from 'lodash-es';\nimport {\n combineLatest,\n distinctUntilChanged,\n filter,\n Observable,\n startWith,\n Subject,\n takeUntil,\n tap,\n} from 'rxjs';\n\nimport { ObservableInput } from '../utils';\n\n/**\n *\n * Usage:\n * If you want to trace value with control.\n * The difference between aclValueTrack and ngModelChange is that aclValueTrack carries the first value.\n * So it is not for changes, but for value traces\n * For compatibility and cover the deprecation of ngModelChange, we provide aclValueTrackSkipFirst option\n * eg:\n * <input formControlName=\"name\" [aclValueTrack]=\"function()\">\n *\n */\n@Directive({\n selector: '[aclValueTrack]',\n standalone: true,\n})\nexport class ControlValueTraceDirective implements OnInit, OnDestroy {\n @Input() aclValueTrackSkipFirst = false;\n\n @Input() aclValueTrack: (value?: unknown) => void;\n @ObservableInput() aclValueTrack$: Observable<(value?: unknown) => void>;\n\n destroy$$ = new Subject<void>();\n\n ngOnDestroy() {\n this.destroy$$.next();\n this.destroy$$.complete();\n }\n\n ngOnInit() {\n combineLatest([\n this.ngControl.valueChanges.pipe(\n this.aclValueTrackSkipFirst ? tap() : startWith(this.ngControl.value),\n ),\n this.aclValueTrack$.pipe(\n distinctUntilChanged(),\n filter(i => isFunction(i)),\n ),\n ])\n .pipe(takeUntil(this.destroy$$))\n .subscribe(([value, changeFn]) => changeFn(value));\n }\n\n constructor(\n @Inject(NgControl) @Host() private readonly ngControl: NgControl,\n ) {}\n}\n","import { AfterViewInit, Directive, ElementRef } from '@angular/core';\n\n// base from alauda-ui export\nconst formatDataTestId = (input: string) => {\n if (!input) return '';\n return input\n .replaceAll('\\r', '')\n .replaceAll('\\n', '')\n .replaceAll('\\\\s', '')\n .replaceAll(' ', '')\n .slice(0, 63); // 避免有些text-content 太长不利于阅读,产生的副作用不会影响对元素的识别\n};\n\nconst getDataTextContent = (element: HTMLElement, type?: string) => {\n switch (type) {\n case 'INPUT': {\n return (\n element.getAttribute('formcontrolname') ||\n element.getAttribute('name') ||\n element.getAttribute('placeholder') ||\n ''\n );\n }\n default: {\n return element.textContent;\n }\n }\n};\n\nconst generateDataTestId = (ei: HTMLElement) => {\n const prefix = ei.nodeName;\n const textContent = getDataTextContent(ei);\n return ei.dataset.test || formatDataTestId(`${prefix}/${textContent}`);\n};\n\n@Directive({\n selector:\n // eslint-disable-next-line @angular-eslint/directive-selector\n '[click],[routerLink],a[href],[auiTooltip],[auiDropdown]',\n standalone: true,\n})\nexport class E2eAttributeBindingDirective implements AfterViewInit {\n constructor(private readonly el: ElementRef<HTMLElement>) {}\n\n ngAfterViewInit(): void {\n this.setDataTestId();\n }\n\n setDataTestId() {\n const currentAttr = generateDataTestId(this.el.nativeElement);\n if (currentAttr !== this.el.nativeElement.dataset.test) {\n this.el.nativeElement.dataset.test = currentAttr;\n }\n }\n}\n","import {\n booleanAttribute,\n Directive,\n HostListener,\n Input,\n} from '@angular/core';\nimport { isBoolean } from 'lodash-es';\n\nimport { ValueHook } from '../../utils';\n\nexport enum PreventHandler {\n Contextmenu = 'contextmenu',\n Paste = 'paste',\n Cut = 'cut',\n Copy = 'copy',\n}\n\nconst handleEvent = (event: Event, enable: boolean) =>\n enable && event.preventDefault();\n\n/**\n * 阻止点击事件\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[prevent]',\n host: {\n click: 'prevent && $event.preventDefault()',\n },\n standalone: true,\n})\nexport class PreventDirective {\n @ValueHook(isBoolean)\n @Input()\n prevent = true;\n}\n\n/**\n * 阻止冒泡事件\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[stop]',\n host: {\n click: 'stop && $event.stopPropagation()',\n },\n standalone: true,\n})\nexport class StopDirective {\n @ValueHook(isBoolean)\n @Input()\n stop = true;\n}\n\n/**\n * 阻止剪切板(拷贝、粘贴、剪切、右键菜单)等事件\n *\n * @example\n *\n * 阻止全部:\n * ```\n * <input aui-input aclPreventEvent>\n * ```\n * 自定义:\n * ```\n * <input aui-input [aclPreventEvent]=\"{copy: true, paste: true}\">\n * ```\n */\n@Directive({\n selector: 'input[aclPreventClipboardEvent]',\n standalone: true,\n})\nexport class PreventClipboardDirective {\n @Input('aclPreventClipboardEvent')\n preventClipboardEvent:\n | boolean\n | ''\n | Partial<Record<PreventHandler, boolean>> = true;\n\n private isPreventEvent(action: PreventHandler): boolean {\n if (typeof this.preventClipboardEvent === 'object') {\n return !!this.preventClipboardEvent[action];\n }\n\n return booleanAttribute(this.preventClipboardEvent);\n }\n\n @HostListener('contextmenu', ['$event'])\n onContextmenu(event: Event) {\n handleEvent(event, this.isPreventEvent(PreventHandler.Contextmenu));\n }\n\n @HostListener('cut', ['$event'])\n onCut(event: Event) {\n handleEvent(event, this.isPreventEvent(PreventHandler.Cut));\n }\n\n @HostListener('paste', ['$event'])\n onPaste(event: Event) {\n handleEvent(event, this.isPreventEvent(PreventHandler.Paste));\n }\n\n @HostListener('copy', ['$event'])\n onCopy(event: Event) {\n handleEvent(event, this.isPreventEvent(PreventHandler.Copy));\n }\n}\n","import {\n Directive,\n HostBinding,\n Input,\n OnChanges,\n SimpleChanges,\n forwardRef,\n} from '@angular/core';\nimport {\n AbstractControl,\n NG_VALIDATORS,\n ValidationErrors,\n Validator,\n ValidatorFn,\n Validators,\n} from '@angular/forms';\n\n/**\n * Angular form directives for min/max.\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[max][formControlName],[max][formControl],[max][ngModel]',\n providers: [\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MaxValidatorDirective),\n multi: true,\n },\n ],\n standalone: true,\n})\nexport class MaxValidatorDirective implements Validator, OnChanges {\n private _validator: ValidatorFn;\n private _onChange: () => void;\n\n @Input()\n max: string | number;\n\n @HostBinding('attr.max')\n get maxValue() {\n return this.max || this.max === 0 ? this.max : null;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if ('max' in changes) {\n this._createValidator();\n if (this._onChange) {\n this._onChange();\n }\n }\n }\n\n validate(c: AbstractControl): ValidationErrors | null {\n return this.max == null ? null : this._validator(c);\n }\n\n registerOnValidatorChange(fn: () => void): void {\n this._onChange = fn;\n }\n\n private _createValidator(): void {\n this._validator = Validators.max(\n typeof this.max === 'number' ? this.max : parseFloat(this.max),\n );\n }\n}\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[min][formControlName],[min][formControl],[min][ngModel]',\n providers: [\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MinValidatorDirective),\n multi: true,\n },\n ],\n standalone: true,\n})\nexport class MinValidatorDirective implements Validator, OnChanges {\n private _validator: ValidatorFn;\n private _onChange: () => void;\n\n @HostBinding('attr.min')\n get maxValue() {\n return this.min || this.min === 0 ? this.min : null;\n }\n\n @Input()\n min: string | number;\n\n ngOnChanges(changes: SimpleChanges): void {\n if ('min' in changes) {\n this._createValidator();\n if (this._onChange) {\n this._onChange();\n }\n }\n }\n\n validate(c: AbstractControl): ValidationErrors | null {\n return this.min == null ? null : this._validator(c);\n }\n\n registerOnValidatorChange(fn: () => void): void {\n this._onChange = fn;\n }\n\n private _createValidator(): void {\n this._validator = Validators.min(\n typeof this.min === 'number' ? this.min : parseFloat(this.min),\n );\n }\n}\n","import { Directive, forwardRef } from '@angular/core';\nimport { DefaultValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'input[trim],textarea[trim]]',\n\n host: {\n '(input)': '$any(this)._handleInput($event.target.value)',\n '(blur)': 'onTouched()',\n '(compositionstart)': '$any(this)._compositionStart()',\n '(compositionend)': '$any(this)._compositionEnd($event.target.value)',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TrimDirective),\n multi: true,\n },\n ],\n standalone: true,\n})\nexport class TrimDirective extends DefaultValueAccessor {\n _handleInput(value: string) {\n if (value != null) {\n this.onChange(value.trim());\n }\n }\n}\n","import { AfterViewInit, Directive, OnDestroy } from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\nfunction getSelector(validator: string) {\n return `[ngModel][${validator}],[formControl][${validator}],[formControlName][${validator}]`;\n}\n\n@Directive({\n selector:\n getSelector('required') +\n ',' +\n getSelector('pattern') +\n ',' +\n getSelector('min') +\n ',' +\n getSelector('max') +\n ',' +\n getSelector('minlength') +\n ',' +\n getSelector('maxlength') +\n ',' +\n getSelector('email'),\n standalone: true,\n})\nexport class ValidatorsDirective implements AfterViewInit, OnDestroy {\n constructor(private readonly ngControl: NgControl) {}\n\n ngAfterViewInit(): void {\n this.validate();\n }\n\n ngOnDestroy(): void {\n this.validate();\n }\n\n validate() {\n this.ngControl.control?.updateValueAndValidity();\n }\n}\n","import { coerceAttrBoolean } from '@alauda/ui';\nimport { Directive, forwardRef, Input } from '@angular/core';\nimport { DefaultValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Directive({\n selector:\n 'input[formControlName][aclCoerceNumber],input[ngModel][aclCoerceNumber],input[formControl][aclCoerceNumber]',\n\n host: {\n '(input)': '$any(this)._handleInput($event.target.value)',\n '(blur)': 'onTouched()',\n '(compositionstart)': '$any(this)._compositionStart()',\n '(compositionend)': '$any(this)._compositionEnd($event.target.value)',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CoerceNumberDirective),\n multi: true,\n },\n ],\n standalone: true,\n})\nexport class CoerceNumberDirective extends DefaultValueAccessor {\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('aclCoerceNumber')\n aclCoerceNumberEnabled: boolean | '' = true;\n\n _handleInput(value: any) {\n if (!coerceAttrBoolean(this.aclCoerceNumberEnabled)) {\n this.onChange(value);\n return;\n }\n\n const coercedValue = Number(value);\n\n if (value == null || value === '' || isNaN(coercedValue)) {\n return this.onChange(value);\n }\n\n this.onChange(coercedValue);\n }\n}\n","import { E2eAttributeBindingDirective } from './e2e-attribute-binding.directive';\nimport { PreventDirective, StopDirective } from './event.directive';\nimport {\n MaxValidatorDirective,\n MinValidatorDirective,\n} from './min-max.directive';\nimport { TrimDirective } from './trim.directive';\nimport { ValidatorsDirective } from './validators.directive';\n\nexport const EFFECT_DIRECTIVE_MODULE = [\n E2eAttributeBindingDirective,\n MaxValidatorDirective,\n MinValidatorDirective,\n TrimDirective,\n ValidatorsDirective,\n PreventDirective,\n StopDirective,\n] as const;\n\nexport * from './coerce-number.directive';\nexport * from './e2e-attribute-binding.directive';\nexport * from './event.directive';\nexport * from './min-max.directive';\nexport * from './trim.directive';\nexport * from './validators.directive';\n","import { Observable } from 'rxjs';\nimport { ValueOf } from 'ts-essentials';\n\nexport const DeleteType = {\n DELETE: 'delete',\n UNINSTALL: 'uninstall',\n QUIT: 'quit',\n UNBIND: 'unbind',\n UNMOUNT: 'unmount',\n} as const;\n\nexport type DeleteType = ValueOf<typeof DeleteType>;\n\nexport type DeleteResourceApi<P, R> = (\n inputValue?: string,\n params?: P,\n) => Observable<R> | Promise<R>;\n\nexport interface ConfirmDeleteData<P = unknown, R = unknown> {\n context?: unknown;\n type?: DeleteType;\n title: string;\n resourceName: string | string[];\n deleteTips?: string;\n confirmTips?: string;\n extraConfirmTips?: string;\n deleteResourceApi: DeleteResourceApi<P, R>;\n deleteResourceParams?: P;\n deleteSuccessMsg?: string;\n deleteFailMsg?: string;\n confirmText?: string;\n}\n","import {\n ButtonModule,\n DIALOG_DATA,\n DialogModule,\n DialogRef,\n FormModule,\n IconModule,\n InputModule,\n MessageService,\n NotificationService,\n} from '@alauda/ui';\nimport { TranslatePipe } from '@alauda-fe/dynamic-plugin-sdk';\nimport { AsyncPipe, NgIf, NgTemplateOutlet } from '@angular/common';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n Directive,\n EventEmitter,\n Inject,\n Input,\n OnDestroy,\n Optional,\n Output,\n TemplateRef,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { get } from 'lodash-es';\nimport {\n BehaviorSubject,\n combineLatest,\n from,\n Subject,\n finalize,\n map,\n takeUntil,\n} from 'rxjs';\n\nimport { EFFECT_DIRECTIVE_MODULE } from '../../directives';\n\nimport { ConfirmDeleteData, DeleteResourceApi, DeleteType } from './utils';\n\n@Directive({\n selector: '[aclConfirmDeleteTip]',\n standalone: true,\n})\nexport class ConfirmDeleteTipDirective {\n constructor(public templateRef: TemplateRef<any>) {}\n}\n\n@Directive({\n standalone: true,\n selector: '[aclConfirmDeleteContent]',\n})\nexport class ConfirmDeleteContentDirective {\n constructor(public templateRef: TemplateRef<any>) {}\n}\n\n@Directive({\n standalone: true,\n selector: '[aclConfirmDeleteLabel]',\n})\nexport class ConfirmDeleteLabelDirective {\n constructor(public templateRef: TemplateRef<any>) {}\n}\n\n@Component({\n selector: 'acl-confirm-delete',\n templateUrl: './confirm-delete.component.html',\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n DialogModule,\n ButtonModule,\n TranslatePipe,\n FormsModule,\n InputModule,\n IconModule,\n NgIf,\n NgTemplateOutlet,\n FormModule,\n AsyncPipe,\n EFFECT_DIRECTIVE_MODULE,\n ],\n standalone: true,\n})\nexport class ConfirmDeleteComponent<P = unknown, R = unknown>\n implements ConfirmDeleteData<P, R>, OnDestroy\n{\n @Input()\n context?: unknown;\n\n @Input()\n type: DeleteType = DeleteType.DELETE;\n\n @Input()\n title: string;\n\n @Input()\n resourceName: string | string[];\n\n @Input()\n deleteTips?: string;\n\n @Input()\n confirmTips?: string;\n\n @Input()\n extraConfirmTips?: string;\n\n @Input()\n confirmText?: string;\n\n @Input()\n deleteResourceApi: DeleteResourceApi<P, R>;\n\n @Input()\n deleteResourceParams?: P;\n\n @Input()\n deleteSuccessMsg: string;\n\n @Input()\n deleteFailMsg: string;\n\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-native\n close = new EventEmitter<R>();\n\n @ContentChild(ConfirmDeleteTipDirective, {\n read: TemplateRef,\n })\n deleteTipTemplate: TemplateRef<any>;\n\n @ContentChild(ConfirmDeleteContentDirective, {\n read: TemplateRef,\n })\n contentTemplate: TemplateRef<any>;\n\n @ContentChild(ConfirmDeleteLabelDirective, {\n read: TemplateRef,\n })\n labelTemplate: TemplateRef<any>;\n\n inputValue = '';\n\n inputValue$$ = new BehaviorSubject(this.inputValue);\n\n deleting$$ = new BehaviorSubject(false);\n\n disabled$ = combineLatest([this.inputValue$$, this.deleting$$]).pipe(\n map(([inputValue, deleting]) => {\n const { resourceName } = this;\n return (\n deleting ||\n !(Array.isArray(resourceName)\n ? resourceName.includes(inputValue)\n : inputValue === resourceName)\n );\n }),\n );\n\n destroy$$ = new Subject<void>();\n\n constructor(\n private readonly message: MessageService,\n private readonly notification: NotificationService,\n @Optional()\n private readonly dialogRef?: DialogRef<ConfirmDeleteComponent<P, R>, R>,\n @Optional()\n @Inject(DIALOG_DATA)\n public data?: ConfirmDeleteData<P, R>,\n ) {\n this.resolveData();\n }\n\n ngOnDestroy(): void {\n this.destroy$$.next();\n this.destroy$$.complete();\n }\n\n onConfirm() {\n this.deleting$$.next(true);\n const completed$$ = new Subject<void>();\n from(\n this.deleteResourceApi.call(\n this.context,\n this.inputValue,\n this.deleteResourceParams,\n ),\n )\n .pipe(\n finalize(() => this.deleting$$.next(false)),\n takeUntil(completed$$),\n takeUntil(this.destroy$$),\n )\n .subscribe({\n next: result => {\n if (this.deleteSuccessMsg) {\n this.message.success(this.deleteSuccessMsg);\n }\n this.closeDialog(result);\n completed$$.next();\n },\n error: (e: HttpErrorResponse) => {\n if (this.deleteFailMsg) {\n this.notification.error({\n title: this.deleteFailMsg,\n content: get(e.error, 'message', e.message),\n });\n }\n completed$$.next();\n },\n });\n }\n\n closeDialog(result?: R) {\n if (this.dialogRef) {\n this.dialogRef.close(result);\n } else {\n this.close.emit(result);\n }\n }\n\n private resolveData() {\n if (!this.data) {\n return;\n }\n\n Object.entries(this.data).forEach(([key, value]) => {\n if (value != null) {\n this[key as keyof ConfirmDeleteData<P, R>] = value;\n }\n });\n }\n}\n","<form (ngSubmit)=\"onConfirm()\">\n <aui-dialog-header>\n <aui-icon\n icon=\"exclamation_triangle_s\"\n background=\"triangle\"\n size=\"22\"\n ></aui-icon>\n {{ title }}\n </aui-dialog-header>\n <aui-dialog-content>\n <p class=\"tw-mt-0 tw-mb-12 tw-text-main-text\">\n <ng-container *ngIf=\"deleteTips\">{{ deleteTips }}</ng-container>\n <ng-container *ngIf=\"deleteTipTemplate\">\n <ng-container *ngTemplateOutlet=\"deleteTipTemplate\"></ng-container>\n </ng-container>\n </p>\n <ng-container *ngIf=\"contentTemplate\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </ng-container>\n <div class=\"tw-mb-4 tw-text-main-text\">\n <ng-container *ngIf=\"labelTemplate\">\n <ng-container *ngTemplateOutlet=\"labelTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!labelTemplate\">\n <ng-container *ngIf=\"confirmTips\">\n {{ confirmTips }}\n </ng-container>\n <ng-container *ngIf=\"!confirmTips\">\n {{ 'please_enter_extra' | translate }}\n <span class=\"tw-text-red\">{{ resourceName }}</span>\n {{ 'extra_determine_' + type | translate\n }}{{ extraConfirmTips ? ('period_symbol' | translate) : null\n }}{{ extraConfirmTips }}\n </ng-container>\n </ng-container>\n </div>\n <input\n auiFormItemControl\n aui-input\n name=\"resource-name\"\n [(ngModel)]=\"inputValue\"\n (ngModelChange)=\"inputValue$$.next($event)\"\n />\n </aui-dialog-content>\n <aui-dialog-footer>\n <button\n aui-button=\"danger\"\n [loading]=\"deleting$$ | async\"\n [disabled]=\"disabled$ | async\"\n >\n {{ confirmText || type | translate }}\n </button>\n <button\n aui-button\n type=\"button\"\n (click)=\"closeDialog()\"\n >\n {{ 'cancel' | translate }}\n </button>\n </aui-dialog-footer>\n</form>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n// 支持统一的列布局(如单列布局,双栏布局)\n@Component({\n selector: 'acl-field-set-column-group',\n template: '<ng-content></ng-content>',\n styleUrls: ['./column-group.style.scss'],\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n\n host: { '[class.label--not_bold]': 'labelNotBold' },\n standalone: true,\n})\nexport class FieldSetColumnGroupComponent {\n @Input() labelNotBold = false;\n}\n\n@Component({\n selector: 'acl-field-set-column',\n template: '<ng-content></ng-content>',\n styleUrls: ['./column.style.scss'],\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class FieldSetColumnComponent {}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'acl-field-set-group',\n template: '<ng-content></ng-content>',\n styleUrls: ['./styles.scss'],\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n\n host: { '[class.label--not_bold]': 'labelNotBold?true:false' },\n})\nexport class FieldSetGroupComponent {\n @Input() labelNotBold = false;\n}\n","import { NgClass } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Directive,\n HostBinding,\n Input,\n} from '@angular/core';\n\nimport { EFFECT_DIRECTIVE_MODULE } from '../../../directives';\n\n@Component({\n selector: 'acl-field-set-item',\n templateUrl: './template.html',\n styleUrls: ['./styles.scss'],\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass, EFFECT_DIRECTIVE_MODULE],\n standalone: true,\n})\nexport class FieldSetItemComponent {\n @Input() allowFullWidth = false;\n @Input() allowOverflow = false;\n @Input() allowWrap = false;\n @HostBinding('style.align-items') get align() {\n return this.allowWrap ? 'flex-start' : 'center';\n }\n}\n\n@Directive({\n selector: '[aclFieldSetItemAction]',\n standalone: true,\n})\nexport class FieldSetItemActionDirective {}\n","<div class=\"field-set-item__label\">\n <ng-content select=\"label\"></ng-content>\n</div>\n<div class=\"field-set-item__value\">\n <div\n class=\"field-set-item__value__content\"\n [ngClass]=\"{\n 'field-set-item__value__content__full-width': allowFullWidth,\n 'field-set-item__value__content__overflow': allowOverflow,\n 'field-set-item__value__content__wrap': allowWrap,\n }\"\n >\n <ng-content></ng-content>\n </div>\n <div class=\"field-set-item__value__action\">\n <ng-content select=\"[aclFieldSetItemAction]\"></ng-content>\n </div>\n</div>\n","import {\n FieldSetColumnComponent,\n FieldSetColumnGroupComponent,\n} from './column/component';\nimport { FieldSetGroupComponent } from './group/component';\nimport {\n FieldSetItemActionDirective,\n FieldSetItemComponent,\n} from './item/component';\n\nexport const FIELDSET_GROUP_COMPONENTS = [\n FieldSetItemActionDirective,\n FieldSetItemComponent,\n FieldSetGroupComponent,\n FieldSetColumnComponent,\n FieldSetColumnGroupComponent,\n] as const;\n\nexport {\n FieldSetItemActionDirective,\n FieldSetItemComponent,\n} from './item/component';\nexport { FieldSetGroupComponent } from './group/component';\n\nexport {\n FieldSetColumnComponent,\n FieldSetColumnGroupComponent,\n} from './column/component';\n","import { IconModule } from '@alauda/ui';\nimport { TranslatePipe } from '@alauda-fe/dynamic-plugin-sdk';\nimport { NgIf } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n} from '@angular/core';\n\nimport { EFFECT_DIRECTIVE_MODULE } from '../../directives';\n\n/**\n * A simple loading mask component which will show a spinner\n * when loading attribute is true.\n */\n@Component({\n selector: 'acl-loading-mask',\n templateUrl: 'loading-mask.component.html',\n styleUrls: ['loading-mask.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgIf, IconModule, TranslatePipe, EFFECT_DIRECTIVE_MODULE],\n standalone: true,\n})\nexport class LoadingMaskComponent {\n @Input() loading: boolean;\n @Input() type: 'module' | 'content' = 'content';\n @Input() text: string;\n\n @HostBinding('hidden')\n get hidden() {\n return !this.loading;\n }\n}\n","<div\n class=\"acl-loading-mask acl-loading-mask--{{ type }}\"\n *ngIf=\"loading\"\n>\n <aui-icon\n class=\"acl-loading-mask__icon\"\n icon=\"spinner\"\n margin=\"right\"\n ></aui-icon>\n <span class=\"acl-loading-mask__text\">\n <ng-container *ngIf=\"text\">\n {{ text }}\n </ng-container>\n <ng-container *ngIf=\"!text\">\n {{ 'loading_please_wait' | translate }}\n </ng-container>\n </span>\n</div>\n","import { MultiSelectComponent } from '@alauda/ui';\nimport {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n Input,\n Optional,\n Renderer2,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { ValueHook } from '../../utils';\n\nexport const PREFIX_LABEL_CLASS = 'acl-select-prefix__label';\nconst PREFIX_LABEL_WRAPPER_CLASS = 'acl-select-prefix__wrapper';\n// 补全父级div的padding-left: 7px和prefixLabel的margin-right: 8px;\nconst PREFIX_LABEL_PLACEHOLDER_PADDING_LEFT_FIX = 7 + 8;\nconst AUI_SELECT_CLASS = 'aui-select';\nconst AUI_MULTI_SELECT_CLASS = 'aui-multi-select';\nconst AUI_MULTI_SELECT_SUFFIX_CLASS = 'aui-multi-select__suffix';\nconst AUI_MULTI_SELECT_PLACEHOLDER_CLASS = 'aui-multi-select__placeholder';\n\n// NOTE: 提供此指令,是由于个人不支持此组件行为,不建议直接引入aui,希望作为业务上的尝试,因此提供指令以供删改\n// 纯css无法提供本问题的完整解决方案,若有更优方案,请删除此部分代码,以及 acl-select-prefix mixin\n@Directive({\n selector: 'aui-select[aclPrefixLabel],aui-multi-select[aclPrefixLabel]',\n standalone: true,\n})\nexport class SelectPrefixLabelDirective {\n @ValueHook(function (\n this: SelectPrefixLabelDirective,\n value: string | TemplateRef<any>,\n ) {\n requestAnimationFrame(() => {\n if (!value) {\n return;\n }\n // 适配 multi select\n if (this.multiSelectComponent) {\n const container = this.queryElementByClassName(AUI_MULTI_SELECT_CLASS);\n const childRef = this.queryElementByClassName(\n AUI_MULTI_SELECT_SUFFIX_CLASS,\n );\n this.insertNode(container, value, childRef);\n } else {\n const container = this.queryElementByClassName(AUI_SELECT_CLASS);\n this.renderer.addClass(container, PREFIX_LABEL_WRAPPER_CLASS);\n this.insertNode(container, value);\n }\n this.viewContainerRef.injector.get(ChangeDetectorRef).markForCheck();\n });\n })\n @Input()\n aclPrefixLabel: string | TemplateRef<any>;\n\n queryElementByClassName(className: string) {\n return (this.elementRef.nativeElement as HTMLElement)?.querySelector(\n `.${className}`,\n );\n }\n\n createInlineLabel(\n value: string | TemplateRef<any>,\n className = PREFIX_LABEL_CLASS,\n ) {\n const label = this.renderer.createElement('span') as HTMLSpanElement;\n this.renderer.addClass(label, className);\n\n if (typeof value === 'string') {\n // 此处加上 ':' 是由于 template 时无需分隔符,不希望再加入额外的class进行控制\n label.textContent = `${value} :`;\n } else {\n const view = this.viewContainerRef.createEmbeddedView(value);\n const templateElement = view.rootNodes[0] as HTMLElement;\n label.append(templateElement);\n }\n\n return label;\n }\n\n insertNode(\n container: Element,\n value: string | TemplateRef<any>,\n refChild?: Element,\n ) {\n let inlineLabel = this.queryElementByClassName(\n PREFIX_LABEL_CLASS,\n ) as HTMLSpanElement;\n if (inlineLabel) {\n inlineLabel.remove();\n }\n\n inlineLabel = this.createInlineLabel(value);\n this.renderer.insertBefore(container, inlineLabel, refChild, false);\n const placeholder = this.queryElementByClassName(\n AUI_MULTI_SELECT_PLACEHOLDER_CLASS,\n ) as HTMLSpanElement;\n if (placeholder) {\n placeholder.style.paddingLeft = `${\n inlineLabel.offsetWidth + PREFIX_LABEL_PLACEHOLDER_PADDING_LEFT_FIX\n }px`;\n }\n }\n\n constructor(\n private readonly elementRef: ElementRef,\n private readonly renderer: Renderer2,\n private readonly viewContainerRef: ViewContainerRef,\n @Optional()\n private readonly multiSelectComponent: MultiSelectComponent,\n ) {}\n}\n","import { handlePixel, isTemplateRef } from '@alauda/ui';\nimport { TranslatePipe } from '@alauda-fe/dynamic-plugin-sdk';\nimport { NgClass, NgIf, NgStyle, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n TemplateRef,\n} from '@angular/core';\n\nimport { PurePipe } from '../../pipes';\nimport { LoadingMaskComponent } from '../loading-mask/loading-mask.component';\n\n@Component({\n selector: 'acl-zero-state',\n templateUrl: './zero-state.component.html',\n styleUrls: ['./zero-state.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgClass,\n NgStyle,\n PurePipe,\n TranslatePipe,\n LoadingMaskComponent,\n NgTemplateOutlet,\n NgIf,\n ],\n standalone: true,\n})\nexport class ZeroStateComponent {\n @Input()\n resourceName: string;\n\n @Input()\n resourceNameTranslated: string;\n\n @Input() customPlaceholder: TemplateRef<unknown> | string;\n\n @Input()\n zeroState = true;\n\n @Input()\n fetching = false;\n\n @Input()\n context: 'form' | 'table' = 'form';\n\n @Input()\n minHeight: string | number;\n\n @HostBinding('hidden')\n get hiddenState() {\n return !this.zeroState && !this.fetching;\n }\n\n handlePixel = handlePixel;\n\n isTemplateRef = isTemplateRef;\n}\n","<div\n *ngIf=\"zeroState && !fetching\"\n class=\"zero-placeholder\"\n [ngClass]=\"context\"\n [ngStyle]=\"{\n minHeight: (minHeight | pure: handlePixel),\n }\"\n>\n @if (customPlaceholder) {\n <ng-container\n [ngTemplateOutlet]=\"\n isTemplateRef(customPlaceholder) ? customPlaceholder : literal\n \"\n ></ng-container>\n <ng-template #literal>{{ customPlaceholder }}</ng-template>\n } @else if (!(resourceName || resourceNameTranslated)) {\n {{ 'no_data' | translate }}\n } @else {\n {{\n 'no_named_data_hint'\n | translate\n : {\n name: resourceNameTranslated || (resourceName | translate),\n }\n }}\n }\n</div>\n<acl-loading-mask\n class=\"zero-placeholder\"\n [loading]=\"fetching\"\n></acl-loading-mask>\n","import { TooltipModule } from '@alauda/ui';\nimport { TranslateService } from '@alauda-fe/dynamic-plugin-sdk';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport dayjs from 'dayjs';\nimport { Subject, distinctUntilChanged, takeUntil } from 'rxjs';\n\nimport { RelativeTimePipe, StandardTimePipe } from '../../pipes';\n\n@Component({\n selector: 'acl-relative-time',\n template: `\n <span\n [auiTooltip]=\"time | aclStandardTime\"\n [auiTooltipDisabled]=\"!time\"\n auiTooltipType=\"info\"\n >\n {{ time | aclRelativeTime }}\n </span>\n `,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [TooltipModule, StandardTimePipe, RelativeTimePipe],\n})\nexport class RelativeTimeComponent implements OnInit, OnDestroy {\n private readonly destroy$ = new Subject<void>();\n\n constructor(\n private readonly cdr: ChangeDetectorRef,\n private readonly translate: TranslateService,\n ) {}\n\n @Input()\n time: dayjs.ConfigType;\n\n ngOnInit() {\n this.translate.locale$\n .pipe(distinctUntilChanged(), takeUntil(this.destroy$))\n .subscribe(() => {\n this.cdr.markForCheck();\n });\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n }\n}\n","/**\n * @packageDocumentation\n * @module disabled-container\n */\n\nimport { TooltipModule, TooltipType } from '@alauda/ui';\nimport { TranslatePipe } from '@alauda-fe/dynamic-plugin-sdk';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { Observable, Subscription, combineLatest } from 'rxjs';\n\nimport { TRUE } from '../../constants';\nimport { ObservableInput } from '../../utils';\n\n@Component({\n selector: 'acl-disabled-container',\n templateUrl: './disabled-container.component.html',\n styleUrls: ['disabled-container.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [TranslatePipe, TooltipModule],\n})\nexport class DisabledContainerComponent implements AfterViewInit, OnDestroy {\n @Input()\n tooltip: string | TemplateRef<unknown> = '';\n\n @Input()\n tooltipPosition = 'top';\n\n @Input()\n tooltipType: string = TooltipType.Default;\n\n @Input()\n isAllowed = false;\n\n @Input()\n isDisabled = false;\n\n @ObservableInput()\n readonly isAllowed$: Observable<boolean>;\n\n @ObservableInput()\n readonly isDisabled$: Observable<boolean>;\n\n @ObservableInput()\n readonly tooltip$: Observable<string | TemplateRef<unknown>>;\n\n private disabledSubscription: Subscription;\n\n constructor(private readonly elementRef: ElementRef<HTMLElement>) {}\n\n ngAfterViewInit() {\n this.disabledSubscription = combineLatest([\n this.isAllowed$,\n this.isDisabled$,\n ]).subscribe(([isAllowed, isDisabled]) => {\n this.setButtonStatus(isAllowed && !isDisabled);\n });\n }\n\n ngOnDestroy() {\n if (this.disabledSubscription) {\n this.disabledSubscription.unsubscribe();\n }\n }\n\n private setButtonStatus(isAllowed: boolean) {\n const container = this.elementRef.nativeElement.querySelector(\n '.acl-disabled-container',\n );\n if (!container) {\n return;\n }\n const button = container.querySelector('button');\n if (button) {\n isAllowed\n ? button.removeAttribute('disabled')\n : button.setAttribute('disabled', TRUE);\n }\n const a = container.querySelector('a');\n if (a) {\n a.style.pointerEvents = isAllowed ? 'auto' : 'none';\n }\n }\n}\n","<div\n class=\"acl-disabled-container\"\n [auiTooltip]=\"\n isAllowed\n ? tooltip\n : ('no_permission_please_contact_administrator' | translate)\n \"\n [auiTooltipPosition]=\"tooltipPosition\"\n [auiTooltipType]=\"tooltipType\"\n [auiTooltipDisabled]=\"isAllowed && (!isDisabled || !tooltip)\"\n [attr.data-test]=\"\n 'acl-disabled-container-' + !!isAllowed + '-' + !!isDisabled\n \"\n>\n <ng-content></ng-content>\n</div>\n","/**\n * [[include:disabled-container/README.md]]\n * @module disabled-container\n * @preferred\n */\n/** imports */\nexport * from './disabled-container.component';\n","import { ButtonModule, IconModule } from '@alauda/ui';\nimport { TranslatePipe } from '@alauda-fe/dynamic-plugin-sdk';\nimport { CommonModule, NgClass } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Input,\n EventEmitter,\n Output,\n ContentChild,\n TemplateRef,\n} from '@angular/core';\n\nimport { EFFECT_DIRECTIVE_MODULE } from '../../directives';\nimport { DisabledContainerComponent } from '../disabled-container';\n\n@Component({\n selector: 'acl-foldable-block',\n templateUrl: 'template.html',\n styleUrls: ['styles.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgClass,\n DisabledContainerComponent,\n CommonModule,\n ButtonModule,\n IconModule,\n TranslatePipe,\n EFFECT_DIRECTIVE_MODULE,\n ],\n standalone: true,\n})\nexport class FoldableBlockComponent {\n @Input()\n hint: string;\n\n @Input()\n collapseHint: string;\n\n @Input()\n hiddenButton: boolean = false;\n\n @Input()\n expandHint: string;\n\n @Input() folded = true;\n\n @Input() isDisabled = false;\n\n @Input() tooltip = '';\n\n @Input()\n padding = true;\n\n @Output() foldedChange = new EventEmitter<boolean>();\n\n @ContentChild('foldedContent')\n foldedContent: TemplateRef<unknown>;\n\n toggleFoldable = () => {\n this.folded = !this.folded;\n this.foldedChange.emit(this.folded);\n };\n}\n","<div\n class=\"foldable\"\n [ngClass]=\"{ folded: folded && !foldedContent, noPadding: !padding }\"\n>\n <div\n [hidden]=\"folded\"\n class=\"foldable-content\"\n >\n <ng-content></ng-content>\n </div>\n <div\n *ngIf=\"foldedContent\"\n [hidden]=\"!folded\"\n class=\"foldable-content\"\n >\n <ng-container [ngTemplateOutlet]=\"foldedContent\"></ng-container>\n </div>\n\n <acl-disabled-container\n [hidden]=\"hiddenButton\"\n [isAllowed]=\"true\"\n [isDisabled]=\"isDisabled\"\n [tooltip]=\"tooltip\"\n >\n <button\n (click)=\"toggleFoldable()\"\n [ngClass]=\"{ folded: !folded }\"\n aui-button=\"primary\"\n [round]=\"true\"\n [plain]=\"folded\"\n size=\"mini\"\n type=\"button\"\n >\n {{\n hint ||\n (folded\n ? expandHint || ('more' | translate)\n : collapseHint || ('collapse' | translate))\n }}\n <aui-icon [icon]=\"folded ? 'angles_down' : 'angles_up'\"></aui-icon>\n </button>\n </acl-disabled-container>\n</div>\n","import { ButtonComponent, IconComponent, isTemplateRef } from '@alauda/ui';\nimport { TranslatePipe, TranslateService } from '@alauda-fe/dynamic-plugin-sdk';\nimport {\n NgClass,\n NgFor,\n NgIf,\n NgStyle,\n NgTemplateOutlet,\n} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Input,\n TemplateRef,\n} from '@angular/core';\n\nimport { FieldNotAvailablePipe, PurePipe } from '../../pipes';\n\n@Component({\n selector: 'acl-foldable-item-in-table',\n templateUrl: 'template.html',\n styleUrls: ['styles.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n NgIf,\n NgClass,\n NgStyle,\n NgFor,\n TranslatePipe,\n PurePipe,\n NgTemplateOutlet,\n ButtonComponent,\n IconComponent,\n FieldNotAvailablePipe,\n ],\n})\nexport class FoldableItemInTableComponent<T> {\n @Input()\n hint: string;\n\n @Input()\n itemTpl: TemplateRef<unknown>;\n\n @Input()\n itemTitle: (item: T, _locale: string, ..._args: unknown[]) => string = String;\n\n @Input()\n folded = true;\n\n @Input()\n items: T[];\n\n @Input()\n min = 2; // 默认显示几条数据,如果总数超过这个值则显示更多的按钮\n\n @Input()\n max = 4; // 最多显示几条数据,如果超过这个值,则内部滚动\n\n isTemplateRef = isTemplateRef;\n\n getItems = (items: T[], folded: boolean) =>\n folded ? items.slice(0, this.min) : items;\n\n constructor(public readonly translate: TranslateService) {}\n\n getStyle(max: number) {\n const height = max * 24;\n return {\n maxHeight: `${height}px`,\n };\n }\n}\n","<div\n *ngIf=\"items?.length; else empty\"\n class=\"foldable\"\n [ngClass]=\"{\n unfolded: !folded,\n 'has-more': items.length > min,\n }\"\n [ngStyle]=\"{ marginBottom: items.length > min ? '10px' : null }\"\n>\n <ul [ngStyle]=\"max | pure: getStyle\">\n <li\n *ngFor=\"let item of items | pure: getItems : folded\"\n [title]=\"item | pure: itemTitle : translate.locale\"\n >\n <ng-container *ngIf=\"isTemplateRef(itemTpl); else normal\">\n <ng-container\n *ngTemplateOutlet=\"itemTpl; context: { $implicit: item }\"\n ></ng-container>\n </ng-container>\n <ng-template #normal>{{ item }}</ng-template>\n </li>\n </ul>\n <button\n *ngIf=\"items.length > min\"\n (click)=\"folded = !folded\"\n [ngClass]=\"{ folded: !folded }\"\n aui-button=\"primary\"\n [round]=\"true\"\n [plain]=\"folded\"\n size=\"mini\"\n type=\"button\"\n >\n {{ (folded ? 'unfold' : 'collapse') | translate }}\n <aui-icon [icon]=\"folded ? 'angles_down' : 'angles_up'\"></aui-icon>\n </button>\n</div>\n\n<ng-template #empty>\n {{ null | aclFieldNotAvailable }}\n</ng-template>\n","import { TagComponent } from '@alauda/ui';\nimport { TranslatePipe } from '@alauda-fe/dynamic-plugin-sdk';\nimport { NgIf } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nimport { KubernetesResource } from '../../types';\n\n@Component({\n selector: 'acl-deleting-tag',\n templateUrl: 'template.html',\n styleUrls: ['style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [TagComponent, NgIf, TranslatePipe],\n})\nexport class TerminatingTagComponent {\n @Input()\n resource: KubernetesResource;\n}\n","<aui-tag\n *ngIf=\"resource?.metadata?.deletionTimestamp\"\n type=\"error\"\n size=\"mini\"\n [border]=\"true\"\n>\n {{ 'deleting' | translate }}\n</aui-tag>\n","import { NgFor, NgIf } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nimport { PurePipe } from '../../pipes';\n\n@Component({\n selector: 'acl-text-with-url',\n templateUrl: './template.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgFor, NgIf, PurePipe],\n})\nexport class TextWithUrlComponent {\n @Input() text: string;\n\n parseUrlInText = parseUrlInText;\n}\n\nexport function parseUrlInText(text: string): Text[] {\n const urlRegex =\n /((([A-Za-z]{3,9}:(?:\\/\\/)?)(?:[\\w$&+,:;=-]+@)?[\\d.A-Za-z-]+|(?:www.|[\\w$&+,:;=-]+@)[\\d.A-Za-z-]+)((?:\\/[\\w%+./~-]*)?\\??[\\w%&+.;=@-]*#?\\w*)?)/g;\n const urlMatches = text.match(urlRegex);\n\n if (!urlMatches) {\n return [{ value: text, type: 'plain' }];\n }\n\n const result: Text[] = [];\n let i = 0;\n while (text?.length) {\n const url = urlMatches[i++];\n if (url) {\n const index = text.indexOf(url);\n result.push(\n { value: text.slice(0, Math.max(0, index)), type: 'plain' },\n { value: url, type: 'url' },\n );\n text = text.slice(Math.max(0, index + url.length));\n } else {\n result.push({ value: text, type: 'plain' });\n break;\n }\n }\n return result;\n}\n\nexport interface Text {\n value: string;\n type: 'plain' | 'url';\n}\n","<ng-container *ngFor=\"let item of text | pure: parseUrlInText\">\n <span *ngIf=\"item.type === 'plain'\">{{ item.value }}</span>\n <a\n *ngIf=\"item.type === 'url'\"\n [href]=\"item.value\"\n target=\"_blank\"\n >{{ item.value }}</a\n >\n</ng-container>\n","import { isTemplateRef } from '@alauda/ui';\nimport { NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n TemplateRef,\n} from '@angular/core';\n\n@Component({\n selector: 'acl-card-section',\n templateUrl: './card-section.component.html',\n styleUrls: ['./card-section.component.scss'],\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf, NgTemplateOutlet],\n})\nexport class CardSectionComponent {\n @Input()\n title: string | TemplateRef<unknown>;\n\n @HostBinding('class.bordered')\n @Input()\n bordered = true;\n\n isTemplateRef = isTemplateRef;\n}\n","<h3 class=\"d-flex align-center mb-16 card-section__title\">\n <ng-container\n *ngIf=\"isTemplateRef(title); else literal\"\n [ngTemplateOutlet]=\"title\"\n ></ng-container>\n</h3>\n<ng-content></ng-content>\n\n<ng-template #literal>\n {{ title }}\n</ng-template>\n","import { TimeService } from '@alauda-fe/dynamic-plugin-sdk';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { combineLatest, map, Observable, timer } from 'rxjs';\n\nimport { ObservableInput } from '../../utils';\n\n@Component({\n selector: 'acl-current-time',\n template: `{{ time$ | async }}`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [AsyncPipe],\n})\nexport class CurrentTimeComponent {\n @Input()\n utc: boolean;\n\n @ObservableInput()\n utc$!: Observable<boolean>;\n\n @Input()\n format: string;\n\n @ObservableInput()\n format$!: Observable<string>;\n\n time$ = combineLatest([this.utc$, this.format$, timer(0, 1000)]).pipe(\n map(([utc, format]) => this.time.format(this.time.now(utc), format)),\n );\n\n constructor(private readonly time: TimeService) {}\n}\n","import { TooltipDirective } from '@alauda/ui';\nimport { Directive, HostListener, Input, inject } from '@angular/core';\n\nconst CLONE_ELEMENT_BASE_STYLES = {\n position: 'absolute',\n visibility: 'hidden',\n zIndex: -999,\n};\n\n/**\n * 使用场景:\n * 文案需要单行显示,过长时截取的情况。\n * 效果:\n * 发生截取的文案会显示完整内容的 tooltip。未发生截取的文案不显示 tooltip。\n * @example:\n * <span class=\"tw-text-overflow\" aclTextTooltip>TEXT...</span>\n *\n * tooltip 的一些设置(位置、类型)可以使用 aui 相同设置。未传 tooltip content 则取元素 text content\n */\n@Directive({\n selector: '[aclTextTooltip]',\n hostDirectives: [\n {\n directive: TooltipDirective,\n inputs: [\n 'auiTooltip:aclTextTooltip',\n 'auiTooltipPosition',\n 'auiTooltipType',\n ],\n },\n ],\n standalone: true,\n})\nexport class TextTooltipDirective {\n @Input('aclTextTooltip')\n content: string;\n\n @HostListener('mouseenter', ['$event'])\n onMouseEnter(e: MouseEvent) {\n const el = e.target as HTMLElement;\n const displayWidth = el.offsetWidth;\n const fullWidth = this.calcFullTextWidth(el);\n this.tooltipDirective.content = this.content || el.textContent;\n this.tooltipDirective.disabled = fullWidth <= displayWidth;\n }\n\n tooltipDirective = inject(TooltipDirective);\n\n private calcFullTextWidth(el: HTMLElement) {\n const computedStyle = window.getComputedStyle(el);\n const contentContainer = document.createElement('div');\n contentContainer.textContent = this.content || el.textContent;\n Object.assign(contentContainer.style, {\n ...CLONE_ELEMENT_BASE_STYLES,\n fontSize: computedStyle.fontSize,\n fontWeight: computedStyle.fontWeight,\n });\n document.body.append(contentContainer);\n const width = contentContainer.offsetWidth;\n contentContainer.remove();\n return width;\n }\n}\n","import dayjs, { ConfigType, ManipulateType } from 'dayjs';\n\nimport { Options, PickerTimeRange } from './type';\n\nexport const CUSTOM = 'custom';\nexport const CUSTOM_RANGE: PickerTimeRange = {\n label: CUSTOM,\n};\n\nexport const getPickerTimeRanges = (value: number, unit: ManipulateType) => ({\n start: () => dayjs().clone().subtract(value, unit),\n end: () => dayjs().clone(),\n});\n\nexport const DEFAULT_OPTIONS: Options = {\n timePicker: true,\n showCustom: true,\n};\n\nexport const CHART_PICKER_TIME_RANGES: PickerTimeRange[] = [\n {\n label: 'nearly_30_minute',\n ...getPickerTimeRanges(30, 'm'),\n step: 1,\n },\n {\n label: 'nearly_1_hour',\n ...getPickerTimeRanges(1, 'h'),\n step: 1,\n },\n {\n label: 'nearly_3_hour',\n ...getPickerTimeRanges(3, 'h'),\n step: 10,\n },\n {\n label: 'nearly_6_hour',\n ...getPickerTimeRanges(6, 'h'),\n step: 20,\n },\n {\n label: 'nearly_12_hour',\n ...getPickerTimeRanges(12, 'h'),\n step: 20,\n },\n {\n label: 'nearly_1_day',\n ...getPickerTimeRanges(1, 'd'),\n step: 30,\n },\n {\n label: 'nearly_3_day',\n ...getPickerTimeRanges(3, 'd'),\n step: 60,\n },\n {\n label: 'nearly_7_day',\n ...getPickerTimeRanges(7, 'd'),\n step: 60,\n },\n];\n\nexport const dateValueOf = (date: ConfigType) => dayjs(date).valueOf();\n","import {\n DateNavRange,\n TooltipDirective,\n DisabledTimeFn,\n InputGroupComponent,\n InputComponent,\n IconComponent,\n TagComponent,\n DateRangePickerPanelComponent,\n InputSuffixDirective,\n} from '@alauda/ui';\nimport { TranslatePipe, TranslateService } from '@alauda-fe/dynamic-plugin-sdk';\nimport { AsyncPipe, NgForOf, NgIf } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnInit,\n ViewChild,\n forwardRef,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n FormsModule,\n NG_VALUE_ACCESSOR,\n} from '@angular/forms';\nimport dayjs, { Dayjs } from 'dayjs';\nimport { range } from 'lodash-es';\n\nimport { EFFECT_DIRECTIVE_MODULE } from '../../directives';\nimport { PurePipe } from '../../pipes';\n\nimport { Options, PickerTimeRange } from './type';\nimport { CUSTOM, CUSTOM_RANGE, DEFAULT_OPTIONS } from './util';\n\n@Component({\n selector: 'acl-date-range-picker',\n templateUrl: './template.html',\n styleUrls: ['./style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DateRangePickerComponent),\n multi: true,\n },\n ],\n imports: [\n InputGroupComponent,\n NgIf,\n TooltipDirective,\n InputSuffixDirective,\n InputComponent,\n IconComponent,\n TagComponent,\n NgForOf,\n TranslatePipe,\n DateRangePickerPanelComponent,\n FormsModule,\n PurePipe,\n AsyncPipe,\n EFFECT_DIRECTIVE_MODULE,\n ],\n standalone: true,\n})\nexport class DateRangePickerComponent implements OnInit, ControlValueAccessor {\n @Input() options: Options = {};\n\n @Input()\n format = 'YYYY-MM-DD HH:mm:ss';\n\n @Input() mode = 'input';\n\n @Input()\n tagActive: boolean;\n\n @Input()\n customInputWidth = '315px';\n\n @Input() enableDisableTime: boolean;\n\n @ViewChild('tip', { static: false })\n tip: TooltipDirective;\n\n rangeValue: Dayjs[] = null;\n\n get isCustom() {\n return this.selectedRange?.label === 'custom';\n }\n\n get ranges() {\n return [...(this.options.timeRange || []), CUSTOM_RANGE];\n }\n\n finalOptions = this.options;\n CUSTOM = CUSTOM;\n\n selectedRange: PickerTimeRange;\n CUSTOM_RANGE = CUSTOM_RANGE;\n value: PickerTimeRange;\n\n inputWidth = '';\n\n private onChange: (value: PickerTimeRange) => void;\n onBlur: (value: PickerTimeRange) => void;\n\n constructor(\n public readonly translate: TranslateService,\n private readonly cdr: ChangeDetectorRef,\n ) {\n this.submitRange = this.submitRange.bind(this);\n this.formatValue = this.formatValue.bind(this);\n this.formatCustomValue = this.formatCustomValue.bind(this);\n }\n\n writeValue(obj: PickerTimeRange) {\n if (obj) {\n this.value = obj;\n this.selectedRange = obj;\n this.setInputWidth(obj.label);\n this.cdr.markForCheck();\n }\n }\n\n registerOnChange(fn: () => void) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onBlur = fn;\n }\n\n ngOnInit() {\n const { timePicker, ...reset } = this.options;\n this.finalOptions = {\n ...DEFAULT_OPTIONS,\n timePicker: timePicker !== false,\n ...reset,\n };\n }\n\n cancel() {\n this.tip.hide();\n this.selectedRange = this.value;\n }\n\n submitRange(range: PickerTimeRange, rangeValue?: Dayjs[]) {\n if (!rangeValue?.length && range.label === CUSTOM) {\n this.tip.hide();\n return;\n }\n range =\n range.label === CUSTOM\n ? {\n label: range.label,\n start: () => rangeValue[0] || this.value.start(),\n end: () => rangeValue[1] || dayjs(),\n }\n : range;\n this.value = range;\n this.selectedRange = range;\n this.setInputWidth(range.label);\n this.onChange?.(range);\n this.tip.hide();\n }\n\n setInputWidth(label: string) {\n if (this.options?.widthAdaptive) {\n this.inputWidth = label === CUSTOM ? this.customInputWidth : '';\n }\n }\n\n selectRange(range: PickerTimeRange) {\n this.selectedRange = range;\n if (range.label === CUSTOM) {\n requestAnimationFrame(() => this.tip.updatePosition());\n } else {\n this.submitRange(range);\n }\n }\n\n formatValue(value: PickerTimeRange, _locale: string) {\n if (!value) {\n return '';\n }\n if (value.label !== CUSTOM) {\n return value.display\n ? this.translate.get(value.display, value.displayCtx)\n : this.translate.get(value.label);\n }\n return this.formatCustomValue([value.start(), value.end()]);\n }\n\n formatCustomValue(value: Dayjs[]) {\n return value?.map(i => i?.format(this.format)).join(' - ');\n }\n\n getDisabledDate =\n (options: Options) =>\n (date: Dayjs, navType: DateNavRange, startDate: Dayjs) => {\n let result = false;\n const { minValue, maxValue } = this.getMinMaxDate(startDate);\n if (navType === DateNavRange.Month) {\n if (options.minDate) {\n result = result || date.isBefore(minValue, 'date');\n }\n if (options.maxDate) {\n result = result || date.isAfter(maxValue, 'date');\n }\n }\n return result;\n };\n\n getMinMaxDate = (startDate?: Dayjs) => {\n const { minDate, maxDate } = this.options;\n const minValue =\n typeof minDate === 'function'\n ? minDate(startDate)?.valueOf()\n : minDate?.valueOf();\n const maxValue =\n typeof maxDate === 'function'\n ? maxDate(startDate)?.valueOf()\n : maxDate?.valueOf();\n return {\n minValue: minValue || 0,\n maxValue: maxValue || 0,\n };\n };\n\n /**\n * 禁用时间存在 bug 具体查看 https://jira.alauda.cn/browse/AIT-52471 描述\n * 可通过 enableDisableTime 开启 默认关闭,如果选择的 end 比 start 会对调\n */\n disabledTime = (): { left: DisabledTimeFn; right: DisabledTimeFn } => ({\n left: (value: Dayjs) => {\n const { minValue } = this.getMinMaxDate();\n const minDate = dayjs(minValue);\n const sameDay = minDate?.day() === value?.day();\n return (\n minValue &&\n sameDay && {\n hours: () => range(0, minDate.hour() - 1),\n minutes: () => range(0, minDate.minute()),\n seconds: () => range(0, minDate.second()),\n }\n );\n },\n right: (value: Dayjs) => {\n const { maxValue } = this.getMinMaxDate();\n const minDate = this.rangeValue?.[0];\n const sameHour = minDate?.isSame(value, 'hour');\n const sameDay = this.rangeValue?.[0]?.isSame(value, 'day');\n return (\n maxValue &&\n sameDay && {\n hours: () => range(minDate.hour()),\n minutes: sameHour ? () => range(minDate.minute()) : () => [],\n seconds: sameHour ? () => range(minDate.second()) : () => [],\n }\n );\n },\n });\n}\n","<aui-input-group\n *ngIf=\"mode === 'input' || mode === 'dropdown'\"\n [auiTooltip]=\"tooltip\"\n auiTooltipClass=\"acl-date-range-picker__panel\"\n auiTooltipTrigger=\"click\"\n auiTooltipType=\"info\"\n auiTooltipPosition=\"bottom start\"\n auiTooltipAnimType=\"none\"\n [style.width]=\"inputWidth\"\n #tip=\"auiTooltip\"\n>\n <input\n aui-input\n [class]=\"{\n 'tw-text-center': mode === 'dropdown',\n '!tw-text-s': mode === 'dropdown',\n 'date-range-picker': true,\n }\"\n [title]=\"value | pure: formatValue : (translate.locale$ | async)\"\n [value]=\"value | pure: formatValue : (translate.locale$ | async)\"\n readonly\n />\n <aui-icon\n auiInputSuffix\n class=\"tw-text-n-2\"\n [icon]=\"mode === 'dropdown' ? 'calendar' : 'caret_down_s'\"\n ></aui-icon>\n</aui-input-group>\n\n<aui-tag\n *ngIf=\"mode === 'tag'\"\n size=\"mini\"\n class=\"tag\"\n [type]=\"tagActive ? 'primary' : 'info'\"\n [solid]=\"tagActive\"\n [auiTooltip]=\"tooltip\"\n auiTooltipClass=\"acl-date-range-picker__panel\"\n auiTooltipTrigger=\"click\"\n auiTooltipType=\"info\"\n #tip=\"auiTooltip\"\n auiTooltipPosition=\"bottom start\"\n>\n <aui-icon icon=\"clock\"></aui-icon>\n {{\n !value\n ? ('more' | translate)\n : (value | pure: formatValue : (translate.locale$ | async))\n }}\n <aui-icon\n class=\"tw-ml-[-4px]\"\n icon=\"angle_down\"\n margin=\"left\"\n ></aui-icon>\n</aui-tag>\n\n<ng-template #tooltip>\n <div class=\"range-picker-panel\">\n <div class=\"control\">\n <span\n *ngFor=\"let range of ranges\"\n class=\"control-row\"\n [class.active]=\"range.label === selectedRange?.label\"\n (click)=\"selectRange(range)\"\n >\n {{\n range.display\n ? (range.display | translate: range.displayCtx)\n : (range.label | translate)\n }}\n </span>\n </div>\n <div\n class=\"range-picker-wrapper\"\n *ngIf=\"isCustom\"\n >\n <aui-date-range-picker-panel\n [disabledDate]=\"options | pure: getDisabledDate\"\n [(ngModel)]=\"rangeValue\"\n (confirm)=\"submitRange(CUSTOM_RANGE, rangeValue)\"\n (clear)=\"rangeValue = []\"\n (click)=\"$event.stopImmediatePropagation()\"\n [showTime]=\"finalOptions.timePicker\"\n [disabledTime]=\"enableDisableTime && disabledTime()\"\n ></aui-date-range-picker-panel>\n </div>\n </div>\n</ng-template>\n","import { IconModule, TagModule, TagType, TooltipModule } from '@alauda/ui';\nimport { AsyncPipe, NgFor, NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n Injector,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Output,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { debounce } from 'lodash-es';\nimport {\n Observable,\n ReplaySubject,\n animationFrameScheduler,\n combineLatest,\n merge,\n auditTime,\n delay,\n distinctUntilChanged,\n filter,\n map,\n takeUntil,\n tap,\n} from 'rxjs';\n\nimport { PurePipe } from '../../pipes';\nimport { ListenResizeDirective } from '../../services';\nimport { isEqual, ObservableInput, publishRef } from '../../utils';\n\nconst ELLIPSE_TAG_WIDTH = 28;\nconst ELLIPSE_TAG_MARGIN = 6;\nconst MIN_TAG_WIDTH = 40;\nconst RESIZE_SCHEDULER = animationFrameScheduler;\n\nconst stringify = (value: unknown) =>\n typeof value === 'string' ? value : JSON.stringify(value);\n\n/**\n * User could provide two types of tags to use this component.\n * Tags requires a map of tags, while tagList requires a list of key/value pairs.\n */\nexport const tagRenderDefault = <T>(tag: T | [string | T, T]) =>\n Array.isArray(tag)\n ? tag\n .filter(t => !!t)\n .map(stringify)\n .join(': ')\n : stringify(tag);\n\n@Component({\n selector: 'acl-tags-label',\n templateUrl: 'template.html',\n styleUrls: ['styles.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n AsyncPipe,\n NgIf,\n NgFor,\n NgTemplateOutlet,\n TagModule,\n TooltipModule,\n IconModule,\n PurePipe,\n ],\n})\nexport class TagsLabelComponent<T = string>\n extends ListenResizeDirective\n implements AfterViewInit, OnDestroy, OnInit\n{\n @ViewChild('tagsContainerMirror', { static: false })\n tagsContainerMirror: ElementRef;\n\n @ViewChild('tagsContainer', { static: true })\n tagsContainer: ElementRef;\n\n /**\n * @deprecated\n * 在父组件内处理 pointer 样式\n */\n @Input()\n tagClickable: boolean;\n\n @Input()\n border = true;\n\n @Input()\n tagType: TagType = TagType.Info;\n\n @Input()\n tagRound = true;\n\n @Output()\n tagClick = new EventEmitter<T | [string | T, T]>();\n\n @ContentChild('tagTemplate')\n tagTemplate: TemplateRef<unknown>;\n\n constructor(\n injector: Injector,\n private readonly cdr: ChangeDetectorRef,\n private readonly ngZone: NgZone,\n ) {\n super(injector);\n }\n\n @Input()\n tags: Record<string, T> | Array<T | [string | T, T]>;\n\n @ObservableInput()\n tags$!: Observable<Record<string, T> | Array<T | [string | T, T]>>;\n\n @Input()\n tooltipPosition = 'top end';\n\n @Input()\n showMore = true;\n\n @Input()\n isWrapped = false;\n\n @Input()\n controlSize: number;\n\n @ObservableInput()\n controlSize$!: Observable<number>;\n\n // 由于无法确切知道是否传递controlSize,暂采用指定的方式\n @Input()\n isControlSize = false;\n\n @Input()\n tagRender:\n | ((tag: T) => string)\n | ((tag: [string, T]) => string)\n | ((tag: [T, T]) => string)\n | ((tag: [string | T, T]) => string) = tagRenderDefault;\n\n private readonly tagsContainerSize$$ = new ReplaySubject<number>(1);\n // 在没有传入受控尺寸时,根据自身计算\n private readonly selfContainerSize$ = this.tagsContainerSize$$\n .asObservable()\n .pipe(takeUntil(this.controlSize$.pipe(filter(i => i != null))));\n\n private readonly containerSize$ = merge(\n this.controlSize$,\n this.selfContainerSize$,\n ).pipe(filter(i => i != null));\n\n private tagsTotalCount: number;\n\n shouldRenderCount: number;\n shouldRenderEllipse: boolean;\n\n tagsValue$ = this.tags$.pipe(\n map(value => (Array.isArray(value) ? value : Object.entries(value ?? {}))),\n tap(val => {\n this.tagsTotalCount = val.length;\n }),\n distinctUntilChanged(isEqual),\n publishRef(),\n );\n\n // 仅当内容变更时,需要计算位置信息,统计所有子元素右边距相对父容器左边延距离\n private readonly tagsPositionInfo$$ = new ReplaySubject<number[]>(1);\n\n ELLIPSE_TAG_WIDTH = ELLIPSE_TAG_WIDTH;\n\n // 根据tag size和容器size计算要显示的个数\n private readonly renderCount$ = combineLatest([\n this.tagsPositionInfo$$,\n this.containerSize$,\n ]).pipe(\n map(([tagsPosInfo, containerSize]) => {\n this.shouldRenderEllipse = false;\n if (!tagsPosInfo) {\n return this.tagsTotalCount;\n }\n const candidateInd = tagsPosInfo.findIndex(\n right => right > containerSize,\n );\n if (candidateInd === -1) {\n // 无溢出\n return tagsPosInfo.length;\n }\n // 设计上至少显示一个,不可能出现低于最小宽度的情况\n if (candidateInd === 0) {\n this.shouldRenderEllipse = tagsPosInfo.length > 1;\n return 1;\n }\n\n // 计算后 tags 中不展示的 tag 只有一个,判断最后一个 tag 是否不完整显示\n if (\n tagsPosInfo.length - candidateInd === 1 &&\n containerSize - tagsPosInfo[candidateInd - 1] >=\n MIN_TAG_WIDTH + ELLIPSE_TAG_MARGIN\n ) {\n // 1 剩余一个,不完整显示\n return tagsPosInfo.length;\n }\n this.shouldRenderEllipse = true;\n\n const displaySize =\n containerSize - ELLIPSE_TAG_WIDTH - ELLIPSE_TAG_MARGIN;\n\n const lastTagSize =\n candidateInd - 1 === 0\n ? tagsPosInfo[candidateInd - 1]\n : tagsPosInfo[candidateInd - 1] - tagsPosInfo[candidateInd - 2];\n\n // ELLIPSE_TAG 是否占用最后一个显示 tag 的位置\n if (\n displaySize >=\n tagsPosInfo[candidateInd - 1] -\n lastTagSize +\n MIN_TAG_WIDTH +\n ELLIPSE_TAG_MARGIN\n ) {\n // 2 显示最后一个 tag\n return candidateInd;\n }\n // 3 最后一个 tag 不展示,展示 ELLIPSE_TAG\n return candidateInd - 1;\n }),\n auditTime(0, RESIZE_SCHEDULER),\n );\n\n _isChangeDetectionPending = false;\n\n // onResize 函数防抖,防止组件在表格内可能出现的高度抖动问题\n // e.g. 行尾 action 列使用 ellipsis_v_s 产生行高变化,此时组件读取 offsetWidth 导致 reflow 产生了高度抖动\n debounceResize = debounce(() => {\n if (!this.isControlSize) {\n // 当尺寸变更时应该让隐藏恢复原状,使其填充到最大宽度,然后再重新判定宽度\n this.shouldRenderCount = undefined;\n this.shouldRenderEllipse = false;\n this.cdr.detectChanges();\n this.tagsContainerSize$$.next(\n this.tagsContainer.nativeElement.offsetWidth,\n );\n }\n }, 0);\n\n private markNeedRender() {\n // Use a Promise to batch together calls to `_doChangeDetection`. This way if we set a bunch of\n // properties sequentially we only have to run `_doChangeDetection` once at the end.\n if (!this._isChangeDetectionPending) {\n this._isChangeDetectionPending = true;\n this.ngZone.runOutsideAngular(() =>\n Promise.resolve().then(() => {\n this._doChangeDetection();\n }),\n );\n }\n }\n\n /** Run change detection. */\n private _doChangeDetection() {\n this._isChangeDetectionPending = false;\n this.ngZone.run(() => this.cdr.markForCheck());\n }\n\n ngOnInit() {\n this.ngZone.runOutsideAngular(() =>\n Promise.resolve().then(() => {\n this.renderCount$.subscribe(count => {\n this.shouldRenderCount = count;\n this.markNeedRender();\n });\n }),\n );\n }\n\n onResize() {\n this.debounceResize();\n }\n\n override ngAfterViewInit() {\n super.ngAfterViewInit();\n if (!this.showMore) {\n return;\n }\n this.ngZone.runOutsideAngular(() =>\n Promise.resolve().then(() => {\n this.tagsValue$\n .pipe(\n // 增加此delay,解决container size随着label增加动态变化的问题\n delay(0),\n map(_ => {\n if (this.isWrapped || !this.showMore) {\n return null;\n }\n const containerEle = this.tagsContainerMirror\n .nativeElement as HTMLElement;\n const { children: renderChildren, offsetLeft: baseOffset } =\n containerEle;\n const rightEdges = [];\n const childrenSize = renderChildren.length;\n for (let i = 0; i < childrenSize; i++) {\n const { offsetLeft, clientWidth } = renderChildren.item(\n i,\n ) as HTMLElement;\n const currentRightEdge = offsetLeft + clientWidth - baseOffset;\n rightEdges.push(currentRightEdge);\n }\n return rightEdges;\n }),\n )\n .subscribe(values => {\n this.onResize();\n this.tagsPositionInfo$$.next(values);\n });\n }),\n );\n }\n}\n","<div\n #tagsContainer\n class=\"tags-strut\"\n>\n <div\n *ngIf=\"(tagsValue$ | async)?.length; else noData\"\n class=\"tags-container\"\n [class.tags-container--multiline]=\"isWrapped\"\n >\n <ng-container *ngFor=\"let tag of tagsValue$ | async; let index = index\">\n <!-- 修改 tag 时必须同时调整 mirror 内的 tag 样式,保证渲染一致 -->\n <aui-tag\n [type]=\"tagType\"\n size=\"mini\"\n [border]=\"border\"\n [title]=\"tag | pure: tagRender\"\n [round]=\"tagRound\"\n [hidden]=\"index >= shouldRenderCount\"\n [class.last-display-tag]=\"shouldRenderCount - index === 1\"\n [class.tag-clickable]=\"tagClickable\"\n (click)=\"tagClick.next(tag)\"\n >\n <!-- {{ tag | pure: renderTag }} -->\n <ng-container\n *ngTemplateOutlet=\"\n tagTemplate || defaultTagTemplate;\n context: { $implicit: tag, index }\n \"\n ></ng-container>\n </aui-tag>\n </ng-container>\n </div>\n\n <aui-tag\n class=\"tooltip-toggle\"\n *ngIf=\"\n !isWrapped &&\n showMore &&\n (tagsValue$ | async)?.length &&\n shouldRenderEllipse\n \"\n [round]=\"tagRound\"\n [auiTooltip]=\"labels\"\n auiTooltipType=\"info\"\n auiTooltipClass=\"tag-tooltip\"\n [auiTooltipPosition]=\"tooltipPosition\"\n [type]=\"tagType\"\n size=\"mini\"\n >\n <aui-icon icon=\"ellipsis_s\"></aui-icon>\n </aui-tag>\n</div>\n\n<!-- 通过创建镜像元素,来计算所有子tag宽度,这样既能保证子tag横向排列,同时由于是absolute元素,对其以及其子元素进行DOM查询,代价较低 -->\n<div\n class=\"tags-container--mirror\"\n #tagsContainerMirror\n>\n <ng-container *ngFor=\"let tag of tagsValue$ | async\">\n <aui-tag\n [type]=\"tagType\"\n size=\"mini\"\n [border]=\"true\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n tagTemplate || defaultTagTemplate;\n context: { $implicit: tag }\n \"\n ></ng-container>\n </aui-tag>\n </ng-container>\n</div>\n\n<ng-template #noData>\n <div>-</div>\n</ng-template>\n\n<ng-template #labels>\n <div class=\"tooltip-container\">\n <div\n *ngFor=\"let tag of tagsValue$ | async; let index = index\"\n class=\"tooltip-tag\"\n >\n <aui-tag\n [type]=\"tagType\"\n size=\"mini\"\n [title]=\"tag | pure: tagRender\"\n [class.tag-clickable]=\"tagClickable\"\n [border]=\"border\"\n [round]=\"tagRound\"\n (click)=\"tagClick.next(tag)\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n tagTemplate || defaultTagTemplate;\n context: { $implicit: tag, index }\n \"\n ></ng-container>\n </aui-tag>\n </div>\n </div>\n</ng-template>\n\n<ng-template\n #defaultTagTemplate\n let-tag\n>\n {{ tag | pure: tagRender }}\n</ng-template>\n\n<ng-content></ng-content>\n","import { IconModule } from '@alauda/ui';\nimport { TranslatePipe } from '@alauda-fe/dynamic-plugin-sdk';\nimport { NgClass, NgIf } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nimport {\n DefaultStatusColorMapper,\n DefaultStatusIconMapper,\n GenericStatusColor,\n GenericStatusIcon,\n} from '../../constants/status-icons';\nimport { PurePipe } from '../../pipes';\nimport { StringMap } from '../../types';\n\n@Component({\n selector: 'acl-status-icon',\n templateUrl: './status-icon.component.html',\n styleUrls: ['./status-icon.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [IconModule, NgClass, PurePipe, NgIf, TranslatePipe],\n})\nexport class StatusIconComponent {\n @Input()\n status: string;\n\n @Input() withText = true;\n\n @Input() colorMapper: StringMap;\n @Input() iconMapper: StringMap;\n @Input() disabled: boolean;\n @Input() iconSize = '16px';\n\n isPending(status: string, iconMapper: StringMap) {\n const icon = iconMapper\n ? { ...DefaultStatusIconMapper, ...iconMapper }[status]\n : DefaultStatusIconMapper[status];\n return icon === GenericStatusIcon.Pending;\n }\n\n getStatusColor(status: string, colorMapper: StringMap) {\n return colorMapper\n ? { ...DefaultStatusColorMapper, ...colorMapper }[status]\n : DefaultStatusColorMapper[status] || GenericStatusColor.Empty;\n }\n\n getStatusIcon(status: string, iconMapper: StringMap) {\n return iconMapper\n ? { ...DefaultStatusIconMapper, ...iconMapper }[status]\n : DefaultStatusIconMapper[status] || GenericStatusIcon.Question;\n }\n\n backgroundShape(icon?: string) {\n return icon?.endsWith('_circle_s')\n ? 'circle'\n : icon?.endsWith('_triangle_s')\n ? 'triangle'\n : null;\n }\n}\n","<ng-container *ngIf=\"status\">\n <aui-icon\n *ngIf=\"status | pure: getStatusIcon : iconMapper as icon\"\n [ngClass]=\"{ pending: status | pure: isPending : iconMapper }\"\n [style.fontSize]=\"iconSize\"\n [color]=\"status | pure: getStatusColor : colorMapper\"\n [icon]=\"icon\"\n [size]=\"iconSize\"\n [background]=\"icon | pure: backgroundShape\"\n >\n </aui-icon>\n <span\n *ngIf=\"withText\"\n [title]=\"status.toLowerCase() | translate\"\n [ngClass]=\"{ disabled: disabled }\"\n >{{ status.toLowerCase() | translate }}</span\n >\n <ng-content></ng-content>\n</ng-container>\n","import { NgIf } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n ViewEncapsulation,\n} from '@angular/core';\n\n@Component({\n selector: 'acl-text-ellipsis',\n templateUrl: 'component.html',\n styleUrls: ['component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [NgIf],\n standalone: true,\n})\nexport class TextEllipsisComponent {\n @HostBinding('title')\n @Input()\n text: string;\n\n @Input()\n tailLength = 0;\n\n get head() {\n return this.text.slice(0, this.text.length - this.tailLength);\n }\n\n get tail() {\n return this.text.slice(this.text.length - this.tailLength);\n }\n}\n","<span\n *ngIf=\"head as text\"\n class=\"head\"\n >{{ text }}</span\n><span\n *ngIf=\"tail as text\"\n class=\"tail\"\n >{{ text }}</span\n>\n","import { TranslateService } from '@alauda-fe/dynamic-plugin-sdk';\nimport { AbstractControl, ValidationErrors, Validators } from '@angular/forms';\nimport parser from 'cron-parser';\nimport { map } from 'rxjs';\n\nimport {\n K8S_RESOURCE_LABEL_KEY_NAME_PATTERN,\n K8S_RESOURCE_LABEL_KEY_PREFIX_PATTERN,\n K8S_RESOURCE_LABEL_VALUE_PATTERN,\n} from '../../constants/patterns';\nimport {\n isCronFieldCountCorrect,\n isCronWeekDayCorrect,\n publishRef,\n} from '../../utils';\n\nexport const STRONG_PASSWORD_SPECIAL_CHARS = '~!@#$%^&*()-_=+?';\nconst K8S_RESOURCE_LABEL_KEY_NAME_MAX_LENGTH = 63;\nconst K8S_RESOURCE_LABEL_KEY_PREFIX_MAX_LENGTH = 253;\n\nexport function randomPassword({\n length = 12,\n symbols = STRONG_PASSWORD_SPECIAL_CHARS,\n}: {\n length?: number;\n symbols?: string;\n} = {}): string {\n const lowerCase = 'abcdefghijklmnopqrstuvwxyz';\n const upperCase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';\n const numbers = '0123456789';\n\n const password = Array.from({ length });\n\n const randomPosition = (i = Math.floor(Math.random() * length)): number => {\n if (password[i]) {\n return randomPosition(++i >= length ? i - length : i);\n }\n return i;\n };\n\n const randomChar = (options: string) =>\n options.charAt(Math.floor(Math.random() * options.length));\n\n const randomGenerator = () => {\n const options = [lowerCase, upperCase, numbers];\n if (symbols) {\n options.push(symbols);\n }\n return randomChar(options[Math.floor(Math.random() * options.length)]);\n };\n\n password[randomPosition()] = randomChar(lowerCase);\n password[randomPosition()] = randomChar(numbers);\n if (symbols) {\n password[randomPosition()] = randomChar(symbols);\n }\n\n password.forEach((char, index) => {\n if (!char) {\n password[index] = randomGenerator();\n }\n });\n\n return password.join('');\n}\n\nexport function k8sResourceLabelKeyValidator(\n control: AbstractControl,\n): ValidationErrors | null {\n if (!control.value) {\n return null;\n }\n\n const keyPartition = (control.value as string).split('/');\n const [prefix, ...nameParts] = keyPartition;\n let checkPrefix = true;\n let checkName = true;\n let name: string;\n if (keyPartition.length > 1) {\n name = nameParts.join('/');\n checkPrefix = K8S_RESOURCE_LABEL_KEY_PREFIX_PATTERN.pattern.test(prefix);\n checkName = K8S_RESOURCE_LABEL_KEY_NAME_PATTERN.pattern.test(name);\n } else {\n name = keyPartition[0];\n checkName = K8S_RESOURCE_LABEL_KEY_NAME_PATTERN.pattern.test(\n keyPartition[0],\n );\n }\n if (keyPartition.length > 1) {\n if (!checkPrefix) {\n return { prefixPattern: true };\n }\n if (prefix.length > K8S_RESOURCE_LABEL_KEY_PREFIX_MAX_LENGTH) {\n return { prefixTooLong: prefix.length };\n }\n }\n\n if (!checkName) {\n return { namePattern: true };\n }\n\n if (name.length > K8S_RESOURCE_LABEL_KEY_NAME_MAX_LENGTH) {\n return { nameTooLong: name.length };\n }\n\n return null;\n}\n\nexport const k8sResourceAnnotationKeyValidator = k8sResourceLabelKeyValidator;\n\nexport const k8sResourceLabelValueValidator = Validators.compose([\n Validators.pattern(K8S_RESOURCE_LABEL_VALUE_PATTERN.pattern),\n Validators.maxLength(63),\n]);\n\nexport const k8sResourceLabelValidator = {\n key: k8sResourceLabelKeyValidator,\n value: k8sResourceLabelValueValidator,\n};\n\nexport const k8sResourceAnnotationValidator = {\n key: k8sResourceAnnotationKeyValidator,\n};\n\nexport const getK8sResourceLabelErrorMapper = (\n translate: TranslateService,\n) => ({\n key: {\n namePattern: translate.get(K8S_RESOURCE_LABEL_KEY_NAME_PATTERN.tip),\n prefixPattern: translate.get(K8S_RESOURCE_LABEL_KEY_PREFIX_PATTERN.tip),\n nameTooLong: translate.get('k8s_resource_label_key_exceeding'),\n prefixTooLong: translate.get('k8s_label_prefix_too_long'),\n },\n value: {\n pattern: translate.get(K8S_RESOURCE_LABEL_VALUE_PATTERN.tip),\n maxlength: translate.get('k8s_resource_label_value_exceeding'),\n },\n});\n\nexport const getK8sResourceLabelErrorMapper$ = (translate: TranslateService) =>\n translate.locale$.pipe(\n map(() => getK8sResourceLabelErrorMapper(translate)),\n publishRef(),\n );\n\nexport const getK8sResourceAnnotationErrorMapper = (\n translate: TranslateService,\n) => ({\n key: {\n namePattern: translate.get(K8S_RESOURCE_LABEL_KEY_NAME_PATTERN.tip),\n prefixPattern: translate.get(K8S_RESOURCE_LABEL_KEY_PREFIX_PATTERN.tip),\n nameTooLong: translate.get('k8s_resource_label_key_exceeding'),\n prefixTooLong: translate.get('k8s_label_prefix_too_long'),\n },\n});\n\nexport const getK8sResourceAnnotationErrorMapper$ = (\n translate: TranslateService,\n) =>\n translate.locale$.pipe(\n map(() => getK8sResourceAnnotationErrorMapper(translate)),\n publishRef(),\n );\n\n// CRON_FORMAT_ERROR: cronFormatError 标识格式错误\n// CRON_MIN_INTERVAL_ERROR: cronMinIntervalError 标识最小间隔错误\n\nexport const CRON_FORMAT_ERROR = 'cronFormatError';\nexport const CRON_MIN_INTERVAL_ERROR = 'cronMinIntervalError';\nexport function cronValidator(minInterval?: number) {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value as string;\n return cronValidatorBasic(value, minInterval);\n };\n}\nexport function cronValidatorBasic(value: string, minInterval?: number) {\n if (!value) {\n return null;\n }\n\n if (!isCronWeekDayCorrect(value)) {\n return {\n [CRON_FORMAT_ERROR]: true,\n };\n }\n\n if (!isCronFieldCountCorrect(value)) {\n return {\n [CRON_FORMAT_ERROR]: true,\n };\n }\n try {\n const iterator = parser.parseExpression(value);\n\n let minIntervalValidity = true;\n\n if (minInterval) {\n const next1 = iterator.next() as any;\n const next2 = iterator.next() as any;\n // minute\n if ((next2._date - next1._date) / 1000 / 60 < minInterval) {\n minIntervalValidity = false;\n }\n }\n\n return minIntervalValidity\n ? null\n : {\n [CRON_MIN_INTERVAL_ERROR]: true,\n };\n } catch {\n return {\n [CRON_FORMAT_ERROR]: true,\n };\n }\n}\n","import { AbstractControl } from '@angular/forms';\n\n/**\n * https://kubernetes.io/zh/docs/concepts/overview/working-with-objects/names/\n const dns1123LabelFmt string = \"[a-z0-9]([-a-z0-9]*[a-z0-9])?\"\n const dns1123SubdomainFmt string = dns1123LabelFmt + \"(\\\\.\" + dns1123LabelFmt + \")*\"\n const dns1123SubdomainErrorMsg string = \"a lowercase RFC 1123 subdomain must consist of lower case alphanumeric characters, '-' or '.', and must start and end with an alphanumeric character\"\n\n // DNS1123SubdomainMaxLength is a subdomain's max length in DNS (RFC 1123)\n const DNS1123SubdomainMaxLength int = 253\n\n var dns1123SubdomainRegexp = regexp.MustCompile(\"^\" + dns1123SubdomainFmt + \"$\")\n\n // IsDNS1123Subdomain tests for a string that conforms to the definition of a\n // subdomain in DNS (RFC 1123).\n func IsDNS1123Subdomain(value string) []string {\n var errs []string\n if len(value) > DNS1123SubdomainMaxLength {\n errs = append(errs, MaxLenError(DNS1123SubdomainMaxLength))\n }\n if !dns1123SubdomainRegexp.MatchString(value) {\n errs = append(errs, RegexError(dns1123SubdomainErrorMsg, dns1123SubdomainFmt, \"example.com\"))\n }\n return errs\n }\n */\nexport function DNS1123SubdomainValidator(ctrl: AbstractControl) {\n const value = ctrl.value as string;\n if (!value) {\n return null;\n }\n if (value.length > 253) {\n return {\n domain: true,\n };\n }\n const regex = /^[\\da-z]([\\da-z-]*[\\da-z])?(\\.[\\da-z]([\\da-z-]*[\\da-z])?)*$/;\n return regex.test(value)\n ? null\n : {\n domain: true,\n };\n}\n","import { TranslateService } from '@alauda-fe/dynamic-plugin-sdk';\nimport { AbstractControl, AsyncValidatorFn, ValidatorFn } from '@angular/forms';\nimport { get } from 'lodash-es';\nimport { Observable, take, map, combineLatest, startWith } from 'rxjs';\n\nimport { LimitRange, LimitRangeItem, StringMap } from '../../types';\nimport {\n formatCPU,\n formatMemory,\n RESOURCE_MAC_TYPES,\n RESOURCE_REQUIREMENT_KEYS,\n} from '../../utils';\n\nexport type AvailableResourceType = (typeof RESOURCE_MAC_TYPES)[number];\n\nexport interface ResourceControl {\n value: string;\n unit: string;\n}\n\nexport function setupErrorMapper(\n resource: LimitRange,\n translate: TranslateService,\n) {\n const defaultRequest = get(resource, 'spec.limits[0].defaultRequest');\n const max = get(resource, 'spec.limits[0].max') as {\n cpu: string;\n memory: string;\n };\n if (max && defaultRequest) {\n return {\n cpu_max: translate.get('cpu_should_not_greater_than', {\n maxCPU: max.cpu.endsWith('m')\n ? max.cpu\n : max.cpu + translate.get('unit_core'),\n }),\n memory_max: translate.get('memory_should_not_greater_than', {\n maxMemory: max.memory,\n }),\n };\n }\n}\n\nexport const getResourceLimitValidatorFn = (\n type: AvailableResourceType,\n limitRange: Omit<LimitRangeItem, 'type'>,\n unit?: string,\n): ValidatorFn => {\n return control => limitResourceValidator(limitRange, control, type, unit);\n};\n\nexport function getResourceLimitAsyncValidatorFn(\n type: AvailableResourceType,\n limitRange$: Observable<LimitRange>,\n unit?: string,\n): AsyncValidatorFn {\n return control =>\n limitRange$.pipe(\n map(resource =>\n getResourceLimitValidatorFn(\n type,\n get(resource, ['spec', 'limits', 0]),\n unit,\n )(control),\n ),\n take(1),\n );\n}\n\nfunction limitResourceValidator(\n limitRange: Omit<LimitRangeItem, 'type'>,\n control: AbstractControl,\n type: AvailableResourceType,\n unit?: string,\n) {\n if (!limitRange) {\n return null;\n }\n const { max } = limitRange;\n if (unit) {\n return limitLessThanMax(max, { value: control.value, unit }, type)\n ? null\n : { [`${type}_max`]: true };\n }\n return limitLessThanMax(max, control.value, type)\n ? null\n : { [`${type}_max`]: true };\n}\n\n/**\n * request值不能大于max值\n * 如果max值为空,则一定通过\n */\nfunction limitLessThanMax(\n max: StringMap,\n request: ResourceControl,\n type: AvailableResourceType,\n): boolean {\n return type === 'cpu'\n ? !max?.cpu ||\n formatCPU(max?.cpu) >= formatCPU((request.value || 0) + request.unit)\n : !max?.memory ||\n formatMemory(max?.memory) >=\n formatMemory((request.value || 0) + request.unit);\n}\n\nexport const initGreaterValidator = (\n type: AvailableResourceType,\n control: AbstractControl,\n) => {\n const paths: string[][] = [];\n RESOURCE_REQUIREMENT_KEYS.forEach(key => {\n ['value', 'unit'].forEach(valueType => {\n paths.push([key, type, valueType]);\n });\n });\n return combineLatest(\n paths.map(path => {\n const ctl = control.get(path);\n return ctl.valueChanges.pipe(startWith(ctl.value));\n }),\n ).subscribe(([_requestValue, unit, maxValue, maxUnit]) => {\n if (\n (!_requestValue && _requestValue !== 0) ||\n (!maxValue && maxValue !== 0)\n ) {\n return;\n }\n const res = getResourceLimitValidatorFn(\n type,\n {\n max: {\n [type]: maxValue ? maxValue + maxUnit : '',\n },\n },\n unit,\n )(control.get(['requests', type, 'value']));\n const limitValueControl = control.get(['limits', type, 'value']);\n if (\n !limitValueControl.errors ||\n ['cpu_max', 'memory_max'].includes(\n Object.keys(limitValueControl.errors)[0],\n )\n ) {\n limitValueControl.setErrors(res);\n }\n });\n};\n","import { TooltipComponent } from '@alauda/ui';\nimport {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n} from '@angular/core';\n\n@Component({\n templateUrl: 'template.html',\n styleUrls: ['style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class StrongPasswordTooltipComponent extends TooltipComponent {}\n","<div\n [class]=\"class$ | async\"\n [class.strong-password-tooltip]=\"true\"\n (mouseenter)=\"hover$.next(true)\"\n (mouseleave)=\"hover$.next(false)\"\n>\n <ng-container *ngIf=\"context$ | async as context\">\n <div class=\"title\">{{ 'strong_password_hint_title' | translate }}</div>\n <ul class=\"conditions\">\n <li>\n <ng-container\n [ngTemplateOutlet]=\"indicator\"\n [ngTemplateOutletContext]=\"{ state: context.state.length }\"\n >\n </ng-container>\n <span>{{\n 'strong_password_conditions_length'\n | translate\n : {\n min: context.conditions.minLength,\n max: context.conditions.maxLength,\n }\n }}</span>\n </li>\n <li>\n <ng-container\n [ngTemplateOutlet]=\"indicator\"\n [ngTemplateOutletContext]=\"{ state: context.state.englishChar }\"\n >\n </ng-container>\n <span>{{ 'strong_password_conditions_english_char' | translate }}</span>\n </li>\n <li>\n <ng-container\n [ngTemplateOutlet]=\"indicator\"\n [ngTemplateOutletContext]=\"{ state: context.state.number }\"\n >\n </ng-container>\n <span>{{ 'strong_password_conditions_number' | translate }}</span>\n </li>\n <li *ngIf=\"context.conditions.specialChar\">\n <ng-container\n [ngTemplateOutlet]=\"indicator\"\n [ngTemplateOutletContext]=\"{ state: context.state.specialChar }\"\n >\n </ng-container>\n <span>{{\n 'strong_password_conditions_special_char'\n | translate: { chars: context.conditions.specialChar }\n }}</span>\n </li>\n </ul>\n </ng-container>\n</div>\n\n<ng-template\n #indicator\n let-state=\"state\"\n>\n <span\n class=\"indicator\"\n [class.check]=\"state\"\n >\n <aui-icon [icon]=\"state ? 'check_circle' : 'circle'\"></aui-icon>\n </span>\n</ng-template>\n","import {\n BaseTooltip,\n coerceAttrBoolean,\n TooltipTrigger,\n TooltipType,\n} from '@alauda/ui';\nimport { Overlay } from '@angular/cdk/overlay';\nimport {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n Input,\n NgZone,\n Renderer2,\n ViewContainerRef,\n forwardRef,\n OnChanges,\n} from '@angular/core';\nimport {\n AbstractControl,\n NG_VALIDATORS,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { converge, mergeAll } from 'ramda';\n\nimport { STRONG_PASSWORD_SPECIAL_CHARS } from '../utils';\n\nimport { StrongPasswordTooltipComponent } from './strong-password-tooltip/component';\n\n@Directive({\n selector:\n 'input[aclStrongPassword][ngModel],input[aclStrongPassword][formControl],input[aclStrongPassword][formControlName]',\n providers: [\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => StrongPasswordDirective),\n multi: true,\n },\n ],\n})\nexport class StrongPasswordDirective\n extends BaseTooltip\n implements Validator, OnChanges\n{\n private _enabled: boolean;\n\n @Input()\n set aclStrongPassword(enabled: boolean | '') {\n this._enabled = coerceAttrBoolean(enabled);\n }\n\n get aclStrongPassword(): boolean {\n return this._enabled && !this.disabled;\n }\n\n private _required: boolean;\n\n @Input()\n set required(required: boolean | '') {\n this._required = coerceAttrBoolean(required);\n }\n\n get required(): boolean {\n return this._required;\n }\n\n @Input()\n specialChars = STRONG_PASSWORD_SPECIAL_CHARS;\n\n @Input()\n minlength = 8;\n\n @Input()\n maxlength = 32;\n\n @Input()\n notStartsWith = '';\n\n protected override componentClass = StrongPasswordTooltipComponent;\n\n registerOnValidatorChange(fn: () => void) {\n this.onValidatorChange = fn;\n }\n\n ngOnChanges() {\n this.onValidatorChange?.();\n }\n\n onValidatorChange: () => void;\n\n constructor(\n overlay: Overlay,\n viewContainerRef: ViewContainerRef,\n elRef: ElementRef<HTMLInputElement>,\n renderer: Renderer2,\n cdr: ChangeDetectorRef,\n ngZone: NgZone,\n ) {\n super(overlay, viewContainerRef, elRef, renderer, cdr, ngZone);\n this.type = TooltipType.Info;\n this.position = 'top start';\n this.trigger = TooltipTrigger.Focus;\n }\n\n protected override onFocus(): void {\n if (!this.aclStrongPassword) {\n return;\n }\n\n super.onFocus();\n }\n\n validate = (control: AbstractControl): ValidationErrors => {\n const v: string = control.value ?? '';\n\n const isFocusing = this.elRef.nativeElement === document.activeElement;\n\n if (this.aclStrongPassword && v) {\n if (isFocusing) {\n this.show();\n }\n } else if (!isFocusing || !this.required) {\n this.hide();\n }\n\n // 必填校验由 required validator 控制\n const errors =\n this.aclStrongPassword && (this.required || v)\n ? converge((...list) => mergeAll(list), [\n this.validateLength,\n this.validatePattern,\n ] as const)(v)\n : null;\n\n this.resetContext(errors, v);\n\n return errors;\n };\n\n private resetContext(errors: ValidationErrors, value: string) {\n const length = !!value && !errors?.maxlength && !errors?.minlength;\n const englishChar = !!value && !errors?.pattern?.needEnglishChar;\n const needNumber = !!value && !errors?.pattern?.needNumber;\n const specialChar = !!value && !errors?.pattern?.needSpecialChar;\n\n this.context = {\n state: {\n length,\n englishChar,\n specialChar,\n number: needNumber,\n },\n conditions: {\n specialChar: this.specialChars,\n minLength: this.minlength,\n maxLength: this.maxlength,\n },\n };\n }\n\n private readonly validatePattern = (v: string): ValidationErrors => {\n if (!v) {\n return null;\n }\n\n const errors = converge((...list) => mergeAll(list), [\n this.validateEnglishChar,\n this.validateSpecialChar,\n this.validateNumber,\n this.validateNotStartsWith,\n ] as const)(v);\n\n return Object.keys(errors).length ? { pattern: errors } : null;\n };\n\n private readonly validateLength = (v: string): ValidationErrors => {\n if (!v || (v.length >= this.minlength && v.length <= this.maxlength)) {\n return null;\n }\n\n const errors: ValidationErrors = {};\n if (v.length < this.minlength) {\n errors.minlength = {\n requiredLength: this.minlength,\n actualLength: v.length,\n };\n }\n if (v.length > this.maxlength) {\n errors.maxlength = {\n requiredLength: this.maxlength,\n actualLength: v.length,\n };\n }\n return errors;\n };\n\n private readonly validateEnglishChar = (v: string): ValidationErrors =>\n /[A-Za-z]/.test(v) ? null : { needEnglishChar: true };\n\n private readonly validateNumber = (v: string): ValidationErrors =>\n /\\d/.test(v) ? null : { needNumber: true };\n\n private readonly validateSpecialChar = (v: string): ValidationErrors => {\n if (!this.specialChars) {\n return null;\n }\n const chars = this.specialChars.split('').join('\\\\');\n const unexpectedChars = (\n v.match(new RegExp(`(?![a-zA-Z0-9${chars}]).`, 'g')) ?? []\n ).join('');\n return new RegExp(`[${chars}]`, 'g').test(v) && !unexpectedChars\n ? null\n : {\n needSpecialChar: {\n requiredChars: this.specialChars,\n actualChars: unexpectedChars,\n },\n };\n };\n\n private readonly validateNotStartsWith = (v: string): ValidationErrors =>\n this.notStartsWith && v.startsWith(this.notStartsWith)\n ? { notStartsWith: this.notStartsWith }\n : null;\n}\n","import { IconModule } from '@alauda/ui';\nimport { TranslatePipe } from '@alauda-fe/dynamic-plugin-sdk';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { StrongPasswordTooltipComponent } from './strong-password-tooltip/component';\nimport { StrongPasswordDirective } from './strong-password-validator.directive';\n\nconst EXPORTABLES = [StrongPasswordTooltipComponent, StrongPasswordDirective];\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n IconModule,\n TranslatePipe,\n ],\n declarations: EXPORTABLES,\n exports: EXPORTABLES,\n})\nexport class StrongPasswordValidatorModule {}\n","import { Directive, Input, forwardRef } from '@angular/core';\nimport {\n AbstractControl,\n NG_VALIDATORS,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\n\nimport { ValueHook } from '../../utils';\n\nexport type NotBeValue = string | RegExp;\n\n@Directive({\n standalone: true,\n selector:\n '[aclNotBe][ngModel],[aclNotBe][formControl],[aclNotBe][formControlName]',\n providers: [\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => NotBeValidatorDirective),\n multi: true,\n },\n ],\n})\nexport class NotBeValidatorDirective implements Validator {\n @ValueHook(\n null,\n null,\n function (this: NotBeValidatorDirective, notBe: NotBeValue | NotBeValue[]) {\n this.notBeValues = notBe\n ? Array.isArray(notBe)\n ? notBe\n : [notBe]\n : null;\n this.onValidatorChange?.();\n },\n )\n @Input()\n aclNotBe: NotBeValue | NotBeValue[];\n\n notBeValues: NotBeValue[];\n\n onValidatorChange: () => void;\n\n validate(control: AbstractControl): ValidationErrors {\n const value: string = control.value;\n if (\n this.notBeValues?.some(notBeValue =>\n typeof notBeValue === 'string'\n ? notBeValue === value\n : notBeValue?.test(value),\n )\n ) {\n return {\n notBe: control.value,\n };\n }\n }\n\n registerOnValidatorChange(fn: () => void) {\n this.onValidatorChange = fn;\n }\n}\n","import { Directive, Input, forwardRef } from '@angular/core';\nimport {\n AbstractControl,\n NG_VALIDATORS,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\n\nimport { ValueHook } from '../../utils';\n\nexport type OneOfValue = string | RegExp;\n\n@Directive({\n standalone: true,\n selector:\n '[aclOneOf][ngModel],[aclOneOf][formControl],[aclOneOf][formControlName]',\n providers: [\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => OneOfValidatorDirective),\n multi: true,\n },\n ],\n})\nexport class OneOfValidatorDirective implements Validator {\n @ValueHook(\n null,\n null,\n function (this: OneOfValidatorDirective, oneOf: OneOfValue | OneOfValue[]) {\n this.oneOfValues = oneOf\n ? Array.isArray(oneOf)\n ? oneOf\n : [oneOf]\n : null;\n this.onValidatorChange?.();\n },\n )\n @Input()\n aclOneOf: OneOfValue | OneOfValue[];\n\n oneOfValues: OneOfValue[];\n\n onValidatorChange: () => void;\n\n validate(control: AbstractControl): ValidationErrors {\n const value: string = control.value;\n if (\n this.oneOfValues &&\n !this.oneOfValues?.some(oneOfValue =>\n typeof oneOfValue === 'string'\n ? oneOfValue === value\n : oneOfValue?.test(value),\n )\n ) {\n return {\n oneOf: control.value,\n };\n }\n }\n\n registerOnValidatorChange(fn: () => void) {\n this.onValidatorChange = fn;\n }\n}\n","import { Directive, Input, forwardRef } from '@angular/core';\nimport {\n AbstractControl,\n NG_VALIDATORS,\n Validator,\n ValidatorFn,\n Validators,\n} from '@angular/forms';\n\nimport { ValueHook } from '../../utils';\n\n@Directive({\n standalone: true,\n selector:\n '[aclValidateFn][ngModel],[aclValidateFn][formControl],[aclValidateFn][formControlName]',\n providers: [\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => FunctionValidatorDirective),\n multi: true,\n },\n ],\n})\nexport class FunctionValidatorDirective implements Validator {\n @ValueHook(null, null, function () {\n this.onValidatorChange?.();\n })\n @Input()\n aclValidateFn: ValidatorFn | ValidatorFn[];\n\n get validateFn() {\n return Array.isArray(this.aclValidateFn)\n ? Validators.compose(this.aclValidateFn)\n : this.aclValidateFn;\n }\n\n declare onValidatorChange: () => void;\n\n validate(control: AbstractControl) {\n return this.validateFn?.(control);\n }\n\n registerOnValidatorChange(fn: () => void) {\n this.onValidatorChange = fn;\n }\n}\n","import { Directive, Input, forwardRef } from '@angular/core';\nimport {\n AbstractControl,\n AsyncValidator,\n AsyncValidatorFn,\n NG_ASYNC_VALIDATORS,\n Validators,\n} from '@angular/forms';\n\nimport { ValueHook } from '../../utils';\n\n@Directive({\n standalone: true,\n selector:\n '[aclAsyncValidateFn][ngModel],[aclAsyncValidateFn][formControl],[aclAsyncValidateFn][formControlName]',\n providers: [\n {\n provide: NG_ASYNC_VALIDATORS,\n useExisting: forwardRef(() => AsyncFunctionValidatorDirective),\n multi: true,\n },\n ],\n})\nexport class AsyncFunctionValidatorDirective implements AsyncValidator {\n @ValueHook(null, null, function () {\n this.onValidatorChange?.();\n })\n @Input()\n aclAsyncValidateFn: AsyncValidatorFn | AsyncValidatorFn[];\n\n get asyncValidateFn() {\n return Array.isArray(this.aclAsyncValidateFn)\n ? Validators.composeAsync(this.aclAsyncValidateFn)\n : this.aclAsyncValidateFn;\n }\n\n declare onValidatorChange: () => void;\n\n validate(control: AbstractControl) {\n return this.asyncValidateFn?.(control);\n }\n\n registerOnValidatorChange(fn: () => void) {\n this.onValidatorChange = fn;\n }\n}\n","import { Directive, forwardRef, Input } from '@angular/core';\nimport {\n MaxLengthValidator,\n MinLengthValidator,\n NG_VALIDATORS,\n} from '@angular/forms';\n/**\n * 功能和 MaxLengthValidator 完全一样,唯一的区别就是不设置 host maxlength attribute\n * 使用场景:ngModel 的表单希望设置 maxlength validator 但不相限制输入框输入的字符。\n * 比如产品希望最长 20 个字符,超过 20 个字符红色提醒\n * https://github.com/angular/angular/blob/main/packages/forms/src/directives/validators.ts#L591\n */\n@Directive({\n standalone: true,\n selector:\n '[aclMaxlength][formControlName],[aclMaxlength][formControl],[aclMaxlength][ngModel]',\n providers: [\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MaxLengthValidatorDirective),\n multi: true,\n },\n ],\n})\nexport class MaxLengthValidatorDirective extends MaxLengthValidator {\n @Input()\n aclMaxlength: string | number;\n\n inputName = 'aclMaxlength';\n}\n\n// 同上\n@Directive({\n standalone: true,\n selector:\n '[aclMinlength][formControlName],[aclMinlength][formControl],[aclMinlength][ngModel]',\n providers: [\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MinLengthValidatorDirective),\n multi: true,\n },\n ],\n})\nexport class MinLengthValidatorDirective extends MinLengthValidator {\n @Input()\n aclMinlength: string | number;\n\n inputName = 'aclMinlength';\n}\n","import { TranslateService } from '@alauda-fe/dynamic-plugin-sdk';\nimport { Injectable } from '@angular/core';\n\nimport { ErrorMapperInterface } from './types';\n\n@Injectable({ providedIn: 'root' })\nexport class DefaultErrorsMapperService implements ErrorMapperInterface {\n constructor(private readonly translate: TranslateService) {}\n\n map(key: string, error: any): string {\n switch (key) {\n case 'required': {\n return this.translate.get('field_required');\n }\n case 'pattern': {\n return this.translate.get('invalid_pattern');\n }\n case 'minlength': {\n return this.translate.get('warning_min_length', {\n length: error.requiredLength,\n });\n }\n case 'maxlength': {\n return this.translate.get('warning_max_length', {\n length: error.requiredLength,\n });\n }\n case 'min': {\n return this.translate.get('warning_min', {\n value: error.min,\n });\n }\n case 'max': {\n return this.translate.get('warning_max', {\n value: error.max,\n });\n }\n case 'number': {\n return this.translate.get('invalid_number');\n }\n case 'includes': {\n return this.translate.get('option_has_expired');\n }\n case 'dropdown_min_length': {\n return this.translate.get('dropdown_min_length', {\n length: error.minLength,\n });\n }\n case 'dropdown_max_length': {\n return this.translate.get('dropdown_max_length', {\n length: error.maxLength,\n });\n }\n default: {\n return '';\n }\n }\n }\n}\n","import { TranslateService } from '@alauda-fe/dynamic-plugin-sdk';\nimport { Directive, Injector } from '@angular/core';\n\nimport { StringMap } from '../../types';\n\nimport { DefaultErrorsMapperService } from './default-errors-mapper.service';\nimport { ErrorMapperInterface, ErrorsMapperFn } from './types';\n\n@Directive()\nexport abstract class BaseErrorsMapper {\n translate: TranslateService;\n mapperService: ErrorMapperInterface;\n\n protected getErrorMessage(\n errors: Record<string, any>,\n errorsMapper?: StringMap,\n errorsMapperFn?: ErrorsMapperFn,\n namePrefix?: string,\n ignoreUnknownError = false,\n ) {\n const firstError = Object.keys(errors || {})[0];\n if (!firstError) {\n return;\n }\n if (errorsMapper?.[firstError]) {\n return errorsMapper[firstError];\n }\n if (errorsMapperFn) {\n const res = errorsMapperFn(errors);\n if (res) {\n return res;\n }\n }\n // only required error should be modified\n if (namePrefix && firstError === 'required') {\n return this.translate.get('required_item', { name: namePrefix });\n }\n\n const definedError = this.mapperService.map(firstError, errors[firstError]);\n\n return definedError\n ? (namePrefix || '') + definedError\n : ignoreUnknownError\n ? ''\n : this.translate.get('the_value_is_invalid');\n }\n\n constructor(injector: Injector) {\n this.translate = injector.get(TranslateService);\n this.mapperService = injector.get(DefaultErrorsMapperService);\n }\n}\n","import { AsyncPipe, NgIf } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Input,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n Observable,\n combineLatest,\n distinctUntilChanged,\n map,\n startWith,\n} from 'rxjs';\n\nimport { StringMap } from '../../../types';\nimport { ObservableInput, publishRef } from '../../../utils';\nimport { BaseErrorsMapper } from '../base-errors-mapper';\nimport { ErrorsMapperFn } from '../types';\n\n@Component({\n selector: 'acl-errors-mapper',\n templateUrl: './template.html',\n styleUrls: ['./style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n standalone: true,\n imports: [AsyncPipe, NgIf],\n})\nexport class ErrorsMapperComponent extends BaseErrorsMapper {\n @Input()\n errors: Record<string, boolean>;\n\n @ObservableInput()\n readonly errors$!: Observable<Record<string, boolean>>;\n\n @Input()\n errorsMapper: StringMap;\n\n @ObservableInput()\n readonly errorsMapper$!: Observable<StringMap>;\n\n @Input()\n errorsMapperFn: ErrorsMapperFn;\n\n @ObservableInput()\n readonly errorsMapperFn$!: Observable<ErrorsMapperFn>;\n\n // used to add name prefix for most validation text\n @Input()\n controlName: string;\n\n @ObservableInput()\n readonly controlName$!: Observable<string>;\n\n @Input()\n ignoreUnknownError = false;\n\n readonly errorMessage$ = combineLatest([\n this.errors$,\n this.errorsMapper$,\n this.errorsMapperFn$,\n this.controlName$.pipe(startWith('')),\n this.translate.locale$,\n ]).pipe(\n map(([errors, errorsMapper, errorsMapperFn, name]) =>\n this.getErrorMessage(\n errors,\n errorsMapper,\n errorsMapperFn,\n name,\n this.ignoreUnknownError,\n ),\n ),\n distinctUntilChanged(),\n publishRef(),\n );\n}\n","<span\n *ngIf=\"errors$ | async\"\n class=\"acl-error-hint\"\n>\n {{ errorMessage$ | async }}\n <ng-content></ng-content>\n</span>\n","import { ComponentPortal, DomPortalOutlet, Portal } from '@angular/cdk/portal';\nimport {\n AfterViewInit,\n ApplicationRef,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentFactoryResolver,\n Directive,\n Injector,\n Input,\n OnDestroy,\n Optional,\n Self,\n} from '@angular/core';\nimport { FormGroupDirective, NgControl, NgForm } from '@angular/forms';\nimport {\n Observable,\n Subject,\n merge,\n of,\n debounceTime,\n map,\n switchMap,\n takeUntil,\n} from 'rxjs';\n\nimport { StringMap } from '../../types';\nimport { ObservableInput } from '../../utils';\n\nimport { BaseErrorsMapper } from './base-errors-mapper';\nimport { ErrorsMapperFn } from './types';\n\n@Directive({\n selector: '[aclErrorsMapper]',\n standalone: true,\n})\nexport class ErrorsMapperDirective\n extends BaseErrorsMapper\n implements AfterViewInit, OnDestroy\n{\n @Input()\n aclErrorsMapper: StringMap | '';\n\n @Input()\n aclErrorsMapperFn: ErrorsMapperFn;\n\n @Input()\n aclErrorsMapperDisabled: boolean;\n\n /**\n * disable errors mapper\n */\n @ObservableInput()\n aclErrorsMapperDisabled$: Observable<boolean>;\n\n /**\n * specify outlet, consider this other than specific control entity to make sure di can always get ngForm\n */\n @Input()\n aclErrorsMapperOutlet: Element;\n\n @Input()\n aclErrorsMapperControlName: string;\n\n private portal: Portal<any>;\n private portalHost: DomPortalOutlet;\n private portalAttach: TextComponent;\n private readonly destroy$ = new Subject<void>();\n\n constructor(\n public injector: Injector,\n private readonly cdr: ChangeDetectorRef,\n private readonly cfr: ComponentFactoryResolver,\n private readonly appRef: ApplicationRef,\n @Self() private readonly control: NgControl,\n @Optional() private readonly ngForm: NgForm,\n @Optional()\n private readonly formGroup: FormGroupDirective,\n ) {\n super(injector);\n }\n\n ngAfterViewInit() {\n if (!this.control) {\n throw new Error(\n 'Errors mapper is not properly configured. No valid control is found.',\n );\n }\n this.initPortal();\n const statusChange = [this.control.statusChanges];\n\n if (this.ngForm) {\n statusChange.push(this.ngForm.ngSubmit);\n }\n if (this.formGroup) {\n statusChange.push(this.formGroup.ngSubmit);\n }\n\n this.aclErrorsMapperDisabled$\n .pipe(\n switchMap(isDisable =>\n isDisable\n ? of(null)\n : merge(...statusChange, this.translate.locale$).pipe(\n debounceTime(50),\n map(() =>\n this.getErrorMessage(\n this.control.errors,\n this.aclErrorsMapper || {},\n this.aclErrorsMapperFn,\n this.aclErrorsMapperControlName,\n ),\n ),\n ),\n ),\n takeUntil(this.destroy$),\n )\n .subscribe(content => {\n this.updateContent(content);\n this.cdr.markForCheck();\n });\n }\n\n updateContent(content: string) {\n if (!content) {\n if (this.portalHost.hasAttached()) {\n this.portalHost.detach();\n }\n return;\n }\n if (!this.portalHost.hasAttached()) {\n this.portalAttach = this.portalHost.attach(this.portal).instance;\n }\n this.portalAttach.data = content;\n this.portalAttach.cdr.markForCheck();\n }\n\n initPortal() {\n this.portalHost = new DomPortalOutlet(\n this.aclErrorsMapperOutlet,\n this.cfr,\n this.appRef,\n this.injector,\n );\n this.portal = new ComponentPortal(TextComponent);\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.portalHost.dispose();\n }\n}\n\n@Component({\n template: ` {{ data }} `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nclass TextComponent {\n data: string;\n constructor(public cdr: ChangeDetectorRef) {}\n}\n","import { ErrorsMapperComponent } from './errors-mapper-component/component';\nimport { ErrorsMapperDirective } from './errors-mapper.directive';\n\nexport * from './errors-mapper-component/component';\nexport * from './errors-mapper.directive';\nexport * from './types';\n\nexport const ERRORS_MAPPER_MODULE = [\n ErrorsMapperComponent,\n ErrorsMapperDirective,\n] as const;\n","import { FormGroup } from '@angular/forms';\nimport { uniq } from 'lodash-es';\nimport {\n distinctUntilChanged,\n map,\n merge,\n Observable,\n startWith,\n takeUntil,\n} from 'rxjs';\n\ninterface Rule<T> {\n source: T;\n deps: string[];\n isEnable: (...deps: unknown[]) => boolean;\n}\n\n/**\n * @description\n * 创建集群中存在大量的 control 依赖的情形,同时,由于业务特殊性,在 ipv4,ipv6 时要对表单控件进行不同外观的展示,因此控件的 disabled 变得很复杂\n * 如果是在 ts 里通过 valueChanges 写:每个影响源都要写自己的 subscription,且某个 control 可能会收到多个其他 control 影响,届时逻辑组织会复杂很多,\n * 如果是在模板里通过 aluControlDisabled 去写,可能会存在多个 control 要重复同一套逻辑,这点在创建集群中很常见,因此提供了如下方案,可以以声明式写法去描述依赖关系\n *\n * @usageNotes\n * For example, for the following `FormGroup`:\n * ```\n * [\n {\n source: 'joinCIDR',\n deps: ['networkType'],\n isEnable: networkType => networkType === 'kube-ovn',\n },\n {\n source: 'gatewayIPv6',\n deps: ['networkType', 'transmitType', 'ipv6DualStack'],\n isEnable: (networkType, transmitType, ipv6DualStack: boolean) =>\n networkType === 'kube-ovn' &&\n transmitType === 'underlay' &&\n ipv6DualStack,\n },\n {\n source: ['clusterCIDRIPv6', 'serviceCIDRIPv6'],\n deps: ['ipv6DualStack'],\n isEnable: (ipv6DualStack: boolean) => ipv6DualStack,\n },\n ]\n * ```\n */\nexport function genControlDepsMap(\n context: FormGroup,\n rules: Array<Rule<string | string[]>>,\n destroy$: Observable<unknown>,\n) {\n const normRules = rules.flatMap(r =>\n Array.isArray(r.source) ? r.source.map(s => ({ ...r, source: s })) : r,\n ) as Array<Rule<string>>;\n const depPaths = uniq(normRules.flatMap(r => r.deps));\n const depRuleMap = normRules.reduce(\n (acc, rule) => {\n for (const dep of rule.deps) {\n if (!acc[dep]) {\n acc[dep] = new Set();\n }\n acc[dep].add(rule.source);\n }\n return acc;\n },\n {} as { [x: string]: Set<string> },\n );\n // 每一次 deps 中的 valueChange 都有可能是一次 trigger\n merge(\n ...depPaths.map(p =>\n context.get(p).valueChanges.pipe(\n startWith(context.get(p).value),\n distinctUntilChanged(),\n map(value => ({\n key: p,\n value,\n })),\n ),\n ),\n )\n .pipe(takeUntil(destroy$))\n .subscribe(result => {\n depRuleMap[result.key].forEach(source => {\n const rules = normRules.filter(r => r.source === source);\n const enable = rules.every(rule =>\n rule.isEnable(...rule.deps.map(dep => context.get(dep).value)),\n );\n context\n .get(source)\n [enable ? 'enable' : 'disable']({ emitEvent: false }); // emitEvent: false 会防止主动将本控件设为dirty\n });\n });\n}\n","/**\n * @packageDocumentation\n * @module code\n */\n\nimport { CodeEditorActionsConfig } from '@alauda/code-editor';\n\nexport type IEditorConstructionOptions =\n import('monaco-editor/esm/vs/editor/editor.api').editor.IEditorConstructionOptions & {\n language?: string;\n tabSize?: number;\n };\n\nconst commonActions: CodeEditorActionsConfig = {\n copy: true,\n find: true,\n export: true,\n};\n\nexport const createActions: CodeEditorActionsConfig = {\n diffMode: false,\n clear: true,\n recover: false,\n import: true,\n ...commonActions,\n};\n\nexport const viewActions: CodeEditorActionsConfig = {\n diffMode: false,\n clear: false,\n recover: false,\n import: false,\n ...commonActions,\n};\n\nexport const updateActions: CodeEditorActionsConfig = {\n diffMode: true, // if true, you should also set 'originalValue' attribute, eg: <aui-code-editor [originalValue]=\"originalFile\"></aui-code-editor>\n clear: true,\n recover: true,\n import: true,\n ...commonActions,\n};\n\nexport const logsActions: CodeEditorActionsConfig = {\n ...viewActions,\n theme: true,\n};\n\nexport const commonOptions: IEditorConstructionOptions = {\n folding: true,\n minimap: { enabled: false },\n wordWrap: 'on',\n tabSize: 2,\n scrollbar: {\n alwaysConsumeMouseWheel: false,\n },\n};\n\nexport const readonlyOptions: IEditorConstructionOptions = {\n ...commonOptions,\n readOnly: true,\n};\n\nexport const yamlReadOptions: IEditorConstructionOptions = {\n language: 'yaml',\n ...readonlyOptions,\n};\n\nexport const yamlWriteOptions: IEditorConstructionOptions = {\n language: 'yaml',\n ...commonOptions,\n};\n\nexport const textWriteOptions: IEditorConstructionOptions = {\n language: 'text',\n ...commonOptions,\n};\n\n// for logs\nexport const logsReadOptions: IEditorConstructionOptions = {\n wordWrap: 'on',\n readOnly: true,\n renderLineHighlight: 'none',\n};\n","import { DialogService } from '@alauda/ui';\nimport { TranslateService } from '@alauda-fe/dynamic-plugin-sdk';\nimport { Location } from '@angular/common';\nimport { Injectable, OnDestroy } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { Subject, filter, takeUntil, from, map } from 'rxjs';\n\nimport { skipError } from '../utils';\n\nimport {\n CURR_ESCAPE_DEACTIVATE_GUARD,\n ESCAPE_DEACTIVATE_GUARD,\n} from './deactivate.guard';\n\n@Injectable({ providedIn: 'root' })\nexport class InterceptDeactivateService implements OnDestroy {\n destroy$$ = new Subject<void>();\n\n constructor(\n private readonly location: Location,\n private readonly router: Router,\n private readonly dialog: DialogService,\n private readonly translate: TranslateService,\n ) {\n this.router.events\n .pipe(\n filter(ev => ev instanceof NavigationEnd),\n takeUntil(this.destroy$$),\n )\n .subscribe(() => {\n const url = new URL(this.location.path(true), window.location.href);\n if (\n url.hash === '#' + ESCAPE_DEACTIVATE_GUARD ||\n url.hash === '#' + CURR_ESCAPE_DEACTIVATE_GUARD\n ) {\n this.location.replaceState(url.pathname, url.search.slice(1));\n }\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$$.next();\n this.destroy$$.complete();\n }\n\n intercept({\n title,\n content,\n context,\n errorFallback,\n }: {\n title?: string;\n content?: string;\n context?: unknown;\n errorFallback?: boolean;\n } = {}) {\n return from(\n this.dialog.confirm({\n title: this.translate.get(\n title || 'intercept_deactivate_title',\n context,\n ),\n content: this.translate.get(\n content || 'intercept_deactivate_content',\n context,\n ),\n confirmText: this.translate.get('confirm'),\n cancelText: this.translate.get('cancel'),\n }),\n ).pipe(\n map(() => true),\n skipError(errorFallback),\n );\n }\n\n async back(escape?: boolean) {\n if (escape) {\n await this.escape();\n }\n\n this.location.back();\n }\n\n async forward(escape?: boolean) {\n if (escape) {\n await this.escape();\n }\n\n this.location.forward();\n }\n\n searchParamsToQueryParams(searchParams: URLSearchParams) {\n const queryParams: Record<string, string | string[]> = {};\n searchParams.forEach((_value, key) => {\n const values = searchParams.getAll(key);\n queryParams[key] = values.length <= 1 ? values[0] : values;\n });\n return queryParams;\n }\n\n async escape() {\n const url = new URL(this.location.path(), location.href);\n\n await this.router.navigate([url.pathname], {\n replaceUrl: true,\n fragment: CURR_ESCAPE_DEACTIVATE_GUARD,\n queryParams: this.searchParamsToQueryParams(url.searchParams),\n });\n }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport {\n ActivatedRouteSnapshot,\n CanDeactivate,\n RouterStateSnapshot,\n} from '@angular/router';\nimport { from, Observable, of, switchMap } from 'rxjs';\n\nimport { InterceptDeactivateService } from './deactivate.service';\n\nexport const ESCAPE_DEACTIVATE_GUARD = '__ESCAPE_DEACTIVATE_GUARD__';\nexport const CURR_ESCAPE_DEACTIVATE_GUARD = '__CURR_ESCAPE_DEACTIVATE_GUARD__';\n\n@Injectable({ providedIn: 'root' })\nexport class InterceptDeactivateGuard implements CanDeactivate<unknown> {\n constructor(private readonly injector: Injector) {}\n\n canDeactivate(\n component: object,\n currentRoute: ActivatedRouteSnapshot,\n currentState: RouterStateSnapshot,\n nextState: RouterStateSnapshot,\n ) {\n let { canDeactivate } = component as { canDeactivate?: unknown };\n\n if (typeof canDeactivate === 'function') {\n canDeactivate = canDeactivate();\n }\n\n const result$ =\n canDeactivate instanceof Observable || canDeactivate instanceof Promise\n ? from(canDeactivate)\n : of(!!canDeactivate);\n\n return result$.pipe(\n switchMap(canDeactivate => {\n if (\n canDeactivate ||\n CURR_ESCAPE_DEACTIVATE_GUARD === currentState.root.fragment ||\n CURR_ESCAPE_DEACTIVATE_GUARD === nextState.root.fragment ||\n ESCAPE_DEACTIVATE_GUARD === nextState.root.fragment\n ) {\n return of(true);\n }\n\n return this.injector.get(InterceptDeactivateService).intercept({\n title: currentRoute.data.interceptDeactivateTitle,\n content: currentRoute.data.interceptDeactivateContent,\n context: component,\n errorFallback: false,\n });\n }),\n );\n }\n}\n","import { coerceAttrBoolean } from '@alauda/ui';\nimport {\n AfterViewInit,\n Directive,\n ElementRef,\n HostListener,\n Input,\n isDevMode,\n OnDestroy,\n} from '@angular/core';\nimport {\n fromEvent,\n map,\n Observable,\n Subject,\n takeUntil,\n withLatestFrom,\n} from 'rxjs';\n\nimport { ObservableInput } from '../utils';\n\nimport { InterceptDeactivateService } from './deactivate.service';\n\n@Directive({\n selector: '[aclInterceptDeactivate]',\n standalone: true,\n})\nexport class InterceptDeactivateDirective implements AfterViewInit, OnDestroy {\n @Input('aclInterceptDeactivate')\n enabled: boolean | '';\n\n @ObservableInput()\n enabled$$!: Observable<boolean | ''>;\n\n enabled$ = this.enabled$$.pipe(map(coerceAttrBoolean));\n\n destroy$$ = new Subject<void>();\n\n constructor(\n private readonly elRef: ElementRef<HTMLElement>,\n private readonly interceptDeactivate: InterceptDeactivateService,\n ) {}\n\n ngAfterViewInit(): void {\n fromEvent(this.elRef.nativeElement, 'click')\n .pipe(withLatestFrom(this.enabled$), takeUntil(this.destroy$$))\n .subscribe(([, enabled]) => {\n this.interceptDeactivate.back(!enabled);\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$$.next();\n this.destroy$$.complete();\n }\n\n @HostListener('window:beforeunload')\n onBeforeUnload() {\n return isDevMode() || !this.enabled;\n }\n}\n","import { NotificationService } from '@alauda/ui';\nimport { Location } from '@angular/common';\nimport { Directive, Injector, Input, OnInit, ViewChild } from '@angular/core';\nimport { FormBuilder, FormGroup, NgForm } from '@angular/forms';\nimport { identity } from 'lodash-es';\nimport { Observable } from 'rxjs';\n\nimport {\n createActions,\n yamlWriteOptions,\n} from '../code-editor/code-editor-configs';\nimport { InterceptDeactivateService } from '../page-deactivate';\nimport { isErrorMessage } from '../types';\nimport { ObservableInput } from '../utils';\nimport { parseAll, stringify } from '../utils/yaml';\n\n/**\n * http://confluence.alauda.cn/display/FRON/Issue-Angular+related\n * 由于formControl存在内存泄漏问题,内部 form 展示-隐藏切换应当采用 hidden 进行控制\n */\n@Directive()\nexport abstract class BaseFormContainer<T = any> implements OnInit {\n @Input()\n isUpdate = false;\n\n @Input()\n initResource: T;\n\n @ObservableInput()\n initResource$: Observable<T>;\n\n @ViewChild('resourceForm', { static: false })\n private readonly ngForm: NgForm;\n\n codeEditorOptions = yamlWriteOptions;\n actionsConfig = createActions;\n formView: 'UI' | 'YAML' = 'UI';\n submitting = false;\n\n resource: T;\n yaml: string;\n // 支持带 '恢复' 的 codeEditor\n originalYaml: string;\n fb: FormBuilder;\n interceptDeactivate: InterceptDeactivateService;\n\n form: FormGroup;\n\n protected notification: NotificationService;\n protected location: Location;\n protected fillResource: (resource: T) => T = identity;\n\n abstract submit(params?: unknown): void;\n\n constructor(injector: Injector) {\n this.notification = injector.get(NotificationService);\n this.location = injector.get(Location);\n this.fb = injector.get(FormBuilder);\n this.interceptDeactivate = injector.get(InterceptDeactivateService);\n this.form = this.fb.group({ resource: this.fb.control('') });\n }\n\n ngOnInit() {\n this.resource = this.initResource;\n this.form.patchValue({\n resource: this.initResource,\n });\n }\n\n switchFormView(view: 'YAML' | 'UI') {\n let resource: T;\n if (view === 'UI') {\n try {\n resource = this.yamlToResource(this.yaml);\n this.form.patchValue({\n resource,\n });\n } catch (err) {\n console.error(err);\n }\n } else {\n resource = this.form.get('resource').value;\n this.originalYaml = this.yaml = this.resourceToYaml(resource);\n }\n this.resource = resource;\n this.formView = view;\n }\n\n cancel(escape?: boolean) {\n this.interceptDeactivate.back(escape);\n }\n\n protected checkForm() {\n this.ngForm.onSubmit(null);\n if (this.formView === 'UI' && this.ngForm.invalid) {\n return false;\n }\n if (this.formView === 'YAML') {\n try {\n this.resource = this.yamlToResource(this.yaml);\n return true;\n } catch {\n return false;\n }\n }\n const resource = this.form.get('resource').value as T;\n this.resource = this.fillResource(resource);\n\n return true;\n }\n\n protected yamlToResource(yaml: string): T {\n try {\n const all = parseAll(yaml);\n return (Array.isArray(this.resource) ? all : all[0]) as T;\n } catch (e) {\n if (isErrorMessage(e)) {\n this.notification.error(e.message);\n }\n throw e;\n }\n }\n\n protected resourceToYaml(resource: T) {\n try {\n if (Array.isArray(resource)) {\n return resource\n .map(r => stringify(r, { blockQuote: 'literal' }))\n .join('\\n---\\r\\n\\n');\n }\n return stringify(resource, { blockQuote: 'literal' });\n } catch (error) {\n console.error(error);\n return '{}';\n }\n }\n\n protected updateResource(resource: T) {\n this.form.patchValue({ resource });\n this.resource = resource;\n }\n}\n","import { coerceAttrBoolean } from '@alauda/ui';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Directive,\n inject,\n Input,\n OnDestroy,\n QueryList,\n ViewChildren,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormGroupDirective,\n NgControl,\n NgForm,\n ValidationErrors,\n} from '@angular/forms';\nimport { assocPath, identity, mergeDeepRight, path } from 'ramda';\nimport {\n ReplaySubject,\n startWith,\n switchMap,\n Subject,\n takeUntil,\n debounceTime,\n merge,\n Observable,\n combineLatest,\n filter,\n map,\n tap,\n take,\n of,\n} from 'rxjs';\n\nexport function createNestedFormControl<V, M = V>({\n autoEmitChange = false,\n asyncValidator = false,\n}: {\n autoEmitChange?: boolean;\n asyncValidator?: boolean;\n} = {}): // workaround: https://github.com/microsoft/TypeScript/issues/30355\nnew () => BaseNestedFormControl<V, M> {\n return class NestedFormControl extends BaseNestedFormControl<V, M> {\n protected override autoEmitChange = autoEmitChange;\n protected override asyncValidator = asyncValidator;\n };\n}\n\n@Directive()\nexport class BaseNestedFormControl<V, M = V>\n implements AfterViewInit, OnDestroy, ControlValueAccessor\n{\n @ViewChildren(NgControl)\n protected controls: QueryList<NgControl>;\n\n @Input()\n get disabled() {\n return this._disabled;\n }\n\n set disabled(val: boolean | '') {\n this._disabled = coerceAttrBoolean(val);\n }\n\n private _disabled = false;\n\n onValidatorChange: () => void;\n onChange: (_: V) => void;\n onTouched: () => void;\n onSubmitted: () => void;\n\n model: M = null;\n submitted = false;\n\n protected autoEmitChange = false;\n protected asyncValidator = false;\n protected cdr = inject(ChangeDetectorRef);\n protected destroy$$ = new Subject<void>();\n protected hostForm =\n inject(NgForm, { optional: true }) ??\n inject(FormGroupDirective, { optional: true });\n\n constructor() {\n if (this.hostForm) {\n this.hostForm.ngSubmit.pipe(takeUntil(this.destroy$$)).subscribe(() => {\n this.submitted = this.hostForm.submitted;\n this.onSubmitted?.();\n this.cdr.markForCheck();\n });\n }\n }\n\n ngAfterViewInit() {\n this.controls.changes\n .pipe(\n startWith(this.controls),\n switchMap((controls: QueryList<NgControl>) =>\n controls.length\n ? merge(\n ...controls.toArray().map(control => control.statusChanges),\n ).pipe(startWith(null))\n : of(null),\n ),\n debounceTime(0),\n )\n .subscribe(() => {\n this.onValidatorChange?.();\n });\n\n if (this.autoEmitChange) {\n this.controls.changes\n .pipe(\n startWith(this.controls),\n switchMap((controls: QueryList<NgControl>) =>\n merge(...controls.toArray().map(control => control.valueChanges)),\n ),\n )\n .pipe(debounceTime(0))\n .subscribe(() => {\n this.emitModel(this.model);\n });\n }\n }\n\n ngOnDestroy() {\n this.destroy$$.next();\n this.destroy$$.complete();\n }\n\n registerOnValidatorChange(fn: () => void) {\n this.onValidatorChange = fn;\n }\n\n registerOnChange(fn: (_: V) => void) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n writeValue(value: V) {\n this.model = this.valueIn(value);\n this.cdr.markForCheck();\n }\n\n validate(\n _control?: AbstractControl,\n ): ValidationErrors | null | Observable<ValidationErrors | null> {\n const getErrors = () =>\n this.controls?.reduce((acc, control) => {\n if (control.errors) {\n return mergeDeepRight(\n acc,\n control.name ? { [control.name]: control.errors } : control.errors,\n );\n }\n return acc;\n }, {} as ValidationErrors);\n\n return this.asyncValidator\n ? combineLatest(\n (this.controls?.toArray() ?? []).map(control =>\n control.statusChanges.pipe(startWith(control.status)),\n ),\n ).pipe(\n debounceTime(0),\n filter(\n statuses =>\n statuses.includes('INVALID') || !statuses.includes('PENDING'),\n ),\n take(1),\n map(() => getErrors()),\n tap(() => {\n this.cdr.markForCheck();\n }),\n )\n : getErrors();\n }\n\n emitModel(model: M = this.model) {\n this.model = model;\n this.emitValue(this.modelOut(this.model));\n }\n\n emitValue(value: V) {\n if (this.onChange) {\n this.onChange(value);\n }\n }\n\n protected valueIn(value: V): M {\n return value as any;\n }\n\n protected modelOut(model: M): V {\n return model as any;\n }\n}\n\n/**\n * @deprecated use {@link BaseNestedFormControl} instead.\n */\n@Directive()\nexport class BaseNestedFormControlPure<V, M = V> extends BaseNestedFormControl<\n V,\n M\n> {\n model$ = new ReplaySubject<M>(1);\n\n constructor() {\n super();\n\n this.model$.subscribe(model => {\n this.model = model;\n this.cdr.markForCheck();\n });\n }\n\n override writeValue(value: V) {\n this.model$.next(this.valueIn(value));\n }\n\n override emitValue(value: V) {\n if (this.onChange) {\n this.onChange(value);\n this.writeValue(value);\n }\n }\n}\n\ntype Path = string | Array<string | number>;\n\ninterface Mapper {\n [x: string]: Mapper | Path;\n}\n\ntype PathTuple = [string[], string[]];\n\nfunction collectPaths(mapper: Mapper, parent: string[]): PathTuple[] {\n return Object.entries(mapper).reduce((acc, [key, value]) => {\n const path = typeof value === 'string' ? value.split('.') : value;\n if (Array.isArray(path)) {\n acc.push([parent.concat(key), path]);\n return acc;\n }\n return acc.concat(collectPaths(path, parent.concat(key)));\n }, []);\n}\n\nexport function dataTransfer<\n S extends object,\n T extends object,\n M extends Record<keyof T, Path | Mapper> = Record<keyof T, Path | Mapper>,\n>(mapper: M): [(source: S) => T, (target: T) => S] {\n const tuples = collectPaths(mapper, []);\n let _source: S;\n let _target: T = {} as T;\n return [\n source => {\n _source = source;\n return tuples.reduce((acc, [left, right]) => {\n const newValue = path<unknown>(right, source);\n\n if (path(left, acc) === newValue) {\n return acc;\n }\n\n return (_target = assocPath<unknown, T>(left, newValue, acc));\n }, _target);\n },\n target => {\n _target = target;\n return tuples.reduce((acc, [left, right]) => {\n const newValue = path<unknown>(left, target);\n\n if (path(right, acc) === newValue) {\n return acc;\n }\n\n return (_source = assocPath<unknown, S>(right, newValue, acc));\n }, _source);\n },\n ];\n}\n\nfunction parsePath(path: Path): Array<string | number> {\n return typeof path === 'string' ? path.split('.') : path;\n}\n\nexport function copyValue<T extends object>(\n from: Path,\n to: Path,\n mapper: (v: any) => any = identity,\n) {\n const fromPath = parsePath(from);\n const toPath = parsePath(to);\n return (object: T) =>\n assocPath(toPath, mapper(path(fromPath, object)), object);\n}\n","import {\n coerceAttrBoolean,\n FormItemWidth,\n FormModule,\n IconComponent,\n INPUT_GROUP_MODULE,\n InputComponent,\n isTemplateRef,\n} from '@alauda/ui';\nimport { TranslatePipe } from '@alauda-fe/dynamic-plugin-sdk';\nimport { NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnInit,\n forwardRef,\n TemplateRef,\n} from '@angular/core';\nimport {\n AbstractControl,\n FormsModule,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n} from '@angular/forms';\nimport { decode, encode } from 'ab64';\nimport { assocPath } from 'ramda';\n\nimport { BaseNestedFormControlPure } from '../../form';\nimport { ERRORS_MAPPER_MODULE } from '../../form/errors-mapper';\nimport {\n FunctionValidatorDirective,\n STRONG_PASSWORD_SPECIAL_CHARS,\n StrongPasswordValidatorModule,\n} from '../../form/validators';\nimport { PurePipe } from '../../pipes';\n\nexport interface Encoding {\n decode: (v: string) => string;\n encode: (v: string) => string;\n}\n\n@Component({\n selector: 'acl-password-input',\n templateUrl: 'template.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n FormModule,\n NgIf,\n InputComponent,\n INPUT_GROUP_MODULE,\n FormsModule,\n IconComponent,\n ERRORS_MAPPER_MODULE,\n TranslatePipe,\n PurePipe,\n NgTemplateOutlet,\n StrongPasswordValidatorModule,\n FunctionValidatorDirective,\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PasswordInputComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => PasswordInputComponent),\n multi: true,\n },\n ],\n})\nexport class PasswordInputComponent\n extends BaseNestedFormControlPure<string>\n implements OnInit\n{\n @Input()\n initPassword: string;\n\n @Input()\n label: string;\n\n @Input()\n hint: string | TemplateRef<any>;\n\n @Input()\n specialChars = STRONG_PASSWORD_SPECIAL_CHARS;\n\n @Input()\n strongPassword: boolean | '' = true;\n\n @Input()\n enableConfirm: boolean | '' = true;\n\n @Input()\n width: FormItemWidth = 'medium';\n\n @Input()\n toggleable = true;\n\n @Input()\n pattern: string;\n\n @Input()\n encoding: Encoding = {\n encode,\n decode,\n };\n\n @Input()\n placeholder = '';\n\n @Input()\n readonly: boolean;\n\n @Input()\n isUpdate: boolean;\n\n @Input()\n set required(required: boolean | '') {\n this._required = coerceAttrBoolean(required);\n }\n\n get required(): boolean {\n return this._required;\n }\n\n showPassword = false;\n showInput = true;\n confirmPassword = '';\n isTemplateRef = isTemplateRef;\n\n private _required = true;\n\n ngOnInit() {\n this.confirmPassword = this.encoding.decode(this.initPassword ?? '');\n this.showInput = !this.isUpdate;\n }\n\n override valueIn(v: string) {\n return this.encoding.decode(v ?? '');\n }\n\n override modelOut(v: string) {\n return this.encoding.encode(v);\n }\n\n override validate(): ValidationErrors {\n let errors = super.validate();\n if (\n coerceAttrBoolean(this.enableConfirm) &&\n this.confirmPassword !== this.model\n ) {\n errors = assocPath(['confirmPassword', 'notMatch'], true, errors);\n }\n return errors;\n }\n\n validateConfirmPassword(password: string) {\n return (control: AbstractControl): ValidationErrors => {\n if (!password) {\n return null;\n }\n\n return password === control.value ? null : { notMatch: true };\n };\n }\n\n updatePasswd() {\n this.emitModel('');\n this.showInput = true;\n }\n}\n","<aui-form-item [width]=\"width\">\n <label auiFormItemLabel>{{ label || ('password' | translate) }}</label>\n <aui-input-group\n *ngIf=\"showInput\"\n class=\"tw-flex-1\"\n auiFormItemControl\n [required]=\"required\"\n >\n <input\n aui-input\n [type]=\"showPassword ? 'text' : 'password'\"\n name=\"password\"\n #password=\"ngModel\"\n [ngModel]=\"model\"\n (ngModelChange)=\"emitModel($event)\"\n autocomplete=\"new-password\"\n [required]=\"required\"\n [aclStrongPassword]=\"strongPassword\"\n [specialChars]=\"specialChars\"\n [pattern]=\"strongPassword ? null : pattern\"\n [placeholder]=\"placeholder\"\n [aclErrorsMapperOutlet]=\"passwordError\"\n [aclErrorsMapper]=\"{\n pattern: strongPassword\n ? ('strong_password_pattern_tip'\n | translate\n : {\n chars: specialChars.split('').join(', '),\n })\n : ('invalid_pattern' | translate),\n }\"\n />\n <aui-icon\n *ngIf=\"toggleable\"\n auiInputSuffix\n class=\"tw-icon-m tw-cursor-pointer hover:tw-text-primary\"\n [icon]=\"showPassword ? 'eye_s' : 'eye_slash_s'\"\n (click)=\"showPassword = !showPassword\"\n ></aui-icon>\n </aui-input-group>\n <div\n *ngIf=\"hint\"\n auiFormItemHint\n >\n <ng-container *ngIf=\"isTemplateRef(hint); else defaultDescription\">\n <ng-container *ngTemplateOutlet=\"hint\"></ng-container>\n </ng-container>\n <ng-template #defaultDescription>\n {{ hint }}\n </ng-template>\n </div>\n <div\n #passwordError\n auiFormItemError\n ></div>\n <ng-container *ngIf=\"!showInput\">\n <span>******</span>\n <button\n *ngIf=\"!readonly\"\n aui-button=\"text\"\n (click)=\"updatePasswd()\"\n >\n <aui-icon icon=\"pencil\"></aui-icon>\n </button>\n </ng-container>\n</aui-form-item>\n<aui-form-item\n *ngIf=\"showInput && enableConfirm\"\n [width]=\"width\"\n>\n <label auiFormItemLabel>{{ 'confirm_password' | translate }}</label>\n <aui-input-group\n class=\"tw-flex-1\"\n auiFormItemControl\n [required]=\"required\"\n >\n <input\n aui-input\n [type]=\"showPassword ? 'text' : 'password'\"\n name=\"confirmPassword\"\n #confirm=\"ngModel\"\n [(ngModel)]=\"confirmPassword\"\n autocomplete=\"new-password\"\n [required]=\"required\"\n [aclValidateFn]=\"model | pure: validateConfirmPassword\"\n />\n <aui-icon\n *ngIf=\"toggleable\"\n auiInputSuffix\n class=\"tw-icon-m tw-cursor-pointer hover:tw-text-primary\"\n [icon]=\"showPassword ? 'eye_s' : 'eye_slash_s'\"\n (click)=\"showPassword = !showPassword\"\n ></aui-icon>\n </aui-input-group>\n <acl-errors-mapper\n auiFormItemError\n [errors]=\"confirm?.errors\"\n [errorsMapper]=\"{\n notMatch: 'confirm_password_not_match' | translate,\n }\"\n ></acl-errors-mapper>\n</aui-form-item>\n","import { IconComponent, TooltipModule } from '@alauda/ui';\nimport { TranslatePipe, TranslateService } from '@alauda-fe/dynamic-plugin-sdk';\nimport { NgIf, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nimport { FIELD_NOT_AVAILABLE_PLACEHOLDER, PurePipe } from '../../pipes';\nimport { formatNumber } from '../../utils';\n\ntype ResourceType = 'cpu' | 'memory';\n\ninterface ResourceInfo {\n icon: string;\n formatter: (rawData: number | string, locale?: string) => string;\n}\n\n@Component({\n selector: 'acl-resource-label',\n templateUrl: './template.html',\n styleUrls: ['./style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n NgTemplateOutlet,\n IconComponent,\n NgIf,\n TranslatePipe,\n TooltipModule,\n PurePipe,\n ],\n})\nexport class ResourceLabelComponent {\n // 各资源的原始值\n @Input()\n rawValue: string | number;\n\n @Input()\n default = 'unlimited';\n\n // 新增类型需要进行扩充\n @Input()\n type: ResourceType;\n\n @Input()\n noIcon = false;\n\n get formattedDefault() {\n return this.default === FIELD_NOT_AVAILABLE_PLACEHOLDER\n ? this.default\n : this.translate.get(this.default);\n }\n\n labelIconMapper: Record<ResourceType, ResourceInfo> = {\n cpu: {\n icon: 'prod:cpu',\n formatter: this.formatCPU.bind(this),\n },\n memory: {\n icon: 'prod:memory',\n formatter: this.formatMemory.bind(this),\n },\n };\n\n constructor(public readonly translate: TranslateService) {}\n\n formatCPU(rawData: number | string) {\n const cpuUnit = this.getResourceUnit(rawData, this.formatCpuUnit);\n if (!cpuUnit) {\n return this.formattedDefault;\n }\n return cpuUnit.endsWith('m')\n ? cpuUnit\n : cpuUnit + ' ' + this.translate.get('unit_core');\n }\n\n formatMemory(rawData: number | string) {\n const memoryUnit = this.getResourceUnit(rawData, this.formatMemoryUnit);\n\n if (!memoryUnit) {\n return this.formattedDefault;\n }\n return memoryUnit?.match(/[a-z]+/i) ? memoryUnit : memoryUnit + ' Bytes';\n }\n\n private getResourceUnit(\n rawData: number | string,\n converter?: (_: number) => string,\n ) {\n if (typeof rawData === 'string') {\n const matched = rawData.match(/([\\d.]+)([a-z]+)/i);\n if (matched) {\n return matched[1] + ' ' + matched[2];\n }\n return rawData;\n }\n return converter(rawData);\n }\n\n private formatCpuUnit(cpu: number) {\n let cpuUnit = 'm';\n if (cpu >= 1000) {\n cpu /= 1000;\n cpuUnit = '';\n }\n return isNaN(cpu)\n ? ''\n : formatNumber(cpu, [1, 0, 2]) + (cpuUnit ? ' ' + cpuUnit : '');\n }\n\n private formatMemoryUnit(memory: number) {\n let memoryUnit = 'Mi';\n memory /= 1024 ** 2;\n if (memory >= 1024) {\n memory /= 1024;\n memoryUnit = 'Gi';\n }\n return isNaN(memory)\n ? ''\n : formatNumber(memory, [1, 0, 2]) + (memoryUnit ? ' ' + memoryUnit : '');\n }\n}\n","<ng-container\n [ngTemplateOutlet]=\"infoTmpl\"\n [ngTemplateOutletContext]=\"{ $implicit: labelIconMapper[type] }\"\n></ng-container>\n<ng-template\n #infoTmpl\n let-info\n>\n <aui-icon\n size=\"16\"\n *ngIf=\"!noIcon\"\n [icon]=\"info.icon\"\n [class]=\"'icon__' + type\"\n [auiTooltip]=\"type | translate\"\n auiTooltipType=\"info\"\n ></aui-icon>\n {{ rawValue | pure: info.formatter : translate.locale }}\n</ng-template>\n","import { first, isString } from 'lodash-es';\n\nimport { KubernetesResource } from '../../types';\n\nexport const DEFAULT_LIMIT_COUNT = 30;\n\nexport const ALL_VALUE = 'All';\n\nexport enum OptionAction {\n Active = 'active',\n Disabled = 'disabled',\n Partial = 'partial',\n}\n\nexport const checkValueExit = <T extends string | KubernetesResource>(\n checkedValue: T,\n values: T[],\n) => {\n if (typeof checkedValue === 'string') {\n return values?.some(value => (value as string) === checkedValue);\n }\n\n return values?.some(\n value =>\n (value as KubernetesResource).metadata.name ===\n checkedValue.metadata.name,\n );\n};\n\nexport const isSelectAll = <T extends string | KubernetesResource>(\n values: T[],\n allVal = ALL_VALUE,\n) => {\n if (values?.length === 1) {\n const value = first(values);\n return isString(value) && value === allVal;\n }\n return false;\n};\n","import {\n FORM_MODULE,\n OptionFilterFn,\n SelectFilterOption,\n SelectModule,\n TooltipDirective,\n TrackFn,\n} from '@alauda/ui';\nimport { TranslatePipe } from '@alauda-fe/dynamic-plugin-sdk';\nimport { AsyncPipe, NgForOf, NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n Component,\n ChangeDetectionStrategy,\n Input,\n Output,\n EventEmitter,\n forwardRef,\n TemplateRef,\n ChangeDetectorRef,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n FormsModule,\n NG_VALUE_ACCESSOR,\n} from '@angular/forms';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { EFFECT_DIRECTIVE_MODULE } from '../../directives';\nimport { PurePipe } from '../../pipes';\nimport { StringMap } from '../../types';\nimport { noop } from '../../utils';\nimport { SelectPrefixLabelDirective } from '../select-prefix-label/directive';\n\nimport { DEFAULT_LIMIT_COUNT, ALL_VALUE, checkValueExit } from './util';\n\n@Component({\n selector: 'acl-resource-multi-select',\n templateUrl: './template.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ResourceMultiSelectComponent),\n multi: true,\n },\n ],\n standalone: true,\n imports: [\n FormsModule,\n AsyncPipe,\n NgIf,\n TranslatePipe,\n SelectModule,\n NgForOf,\n NgTemplateOutlet,\n PurePipe,\n TooltipDirective,\n ...FORM_MODULE,\n SelectPrefixLabelDirective,\n EFFECT_DIRECTIVE_MODULE,\n ],\n})\nexport class ResourceMultiSelectComponent implements ControlValueAccessor {\n @Input()\n list: string[];\n\n @Input()\n limit: number = DEFAULT_LIMIT_COUNT;\n\n @Input()\n prefixLabel: string;\n\n @Input()\n disabled = false;\n\n @Input()\n required = false;\n\n @Input()\n readonly = false;\n\n @Input()\n allOptionTemplate: TemplateRef<any>;\n\n @Input()\n allOptionTemplateContext: StringMap;\n\n @Input()\n optionTemplate: TemplateRef<any>;\n\n @Input()\n placeholder = '';\n\n @Input()\n countLimited = true;\n\n @Input()\n filter: OptionFilterFn<string> = (\n filter: string,\n option: SelectFilterOption<string>,\n ) => option.value?.includes(filter);\n\n @Input()\n trackBy: TrackFn<string> = (val: string) => val;\n\n @Input()\n allowEmpty = false;\n\n @Output()\n valueChange = new EventEmitter<string[]>();\n\n values$$ = new BehaviorSubject<string[]>([]);\n values: string[] = [];\n isSelectAllOption = false;\n isPartial = false;\n ALL_VALUE = ALL_VALUE;\n\n constructor(private readonly cdr: ChangeDetectorRef) {}\n\n writeValue(values: string[]) {\n this.values$$.next(values);\n this.isSelectAllOption = checkValueExit(ALL_VALUE as string, values);\n this.cdr.markForCheck();\n }\n\n onChange = noop;\n\n onTouched = noop;\n\n registerOnChange(fn: () => void) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouched = fn;\n }\n\n disableOption = (checkedValue: string, values: string[]) => {\n this.isPartial = false;\n if (!checkedValue) {\n return false;\n }\n\n if (this.isSelectAllOption) {\n return true;\n }\n // 如果不限制个数直接返回 false\n if (!this.countLimited) {\n return false;\n }\n if (values?.length === this.limit && values?.length < this.list?.length) {\n this.isPartial = true;\n return !checkValueExit(checkedValue, values);\n }\n return false;\n };\n\n onValueChange(values: string[]) {\n this.isSelectAllOption = checkValueExit(ALL_VALUE as string, values);\n const currentValue = this.isSelectAllOption\n ? [ALL_VALUE as string]\n : values;\n this.values$$.next(currentValue);\n this.valueChange.emit(currentValue);\n this.onChange(currentValue);\n this.onTouched();\n }\n\n filterFn = (filter: string, option: SelectFilterOption<string>) => {\n const value = option.value;\n if (value === ALL_VALUE) {\n return true;\n }\n return this.filter?.(filter, option);\n };\n\n trackByFn = (value: string) => {\n if (value === ALL_VALUE) {\n return ALL_VALUE;\n }\n return this.trackBy?.(value);\n };\n}\n","<aui-multi-select\n [ngModel]=\"values$$ | async\"\n auiFormItemControl\n [filterFn]=\"filterFn\"\n [trackFn]=\"trackByFn\"\n (ngModelChange)=\"onValueChange($event)\"\n [aclPrefixLabel]=\"prefixLabel\"\n [placeholder]=\"\n placeholder || countLimited\n ? ('multi_select_limit' | translate: { count: limit })\n : ''\n \"\n [maxRowCount]=\"6\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [filterable]=\"true\"\n [clearable]=\"true\"\n>\n <aui-option-group *ngIf=\"(allOptionTemplate && list?.length) || allowEmpty\">\n <aui-option\n [value]=\"ALL_VALUE\"\n [label]=\"allOptionTemplate\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n allOptionTemplate;\n context: { $implicit: allOptionTemplateContext }\n \"\n ></ng-container>\n </aui-option>\n </aui-option-group>\n\n <aui-option-group>\n <aui-option\n *ngFor=\"let option of list\"\n [value]=\"option\"\n [label]=\"optionTemplate\"\n [disabled]=\"option | pure: disableOption : (values$$ | async)\"\n [auiTooltip]=\"'multi_select_limit' | translate: { count: limit }\"\n [auiTooltipDisabled]=\"!countLimited ? true : !isPartial\"\n [labelContext]=\"{ resource: option }\"\n >\n <ng-container\n [ngTemplateOutlet]=\"optionTemplate\"\n [ngTemplateOutletContext]=\"{ resource: option, inOption: true }\"\n ></ng-container>\n </aui-option>\n </aui-option-group>\n <aui-option-placeholder>\n {{ 'no_data' | translate }}\n </aui-option-placeholder>\n</aui-multi-select>\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: 'label[aclSearchItemLabel]',\n standalone: true,\n})\nexport class SearchItemLabelDirective {}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n} from '@angular/core';\n\nimport { SearchItemLabelDirective } from '../helper.directive';\n\n@Component({\n selector: 'acl-search-item',\n templateUrl: './template.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n standalone: true,\n})\nexport class SearchItemComponent {\n @ContentChild(SearchItemLabelDirective, { static: false })\n itemLabel: SearchItemLabelDirective;\n}\n","<div class=\"search-panel__item\">\n <ng-content select=\"label[aclSearchItemLabel]\"></ng-content>\n <ng-content></ng-content>\n</div>\n","import { ButtonComponent, coerceAttrBoolean } from '@alauda/ui';\nimport { TranslatePipe } from '@alauda-fe/dynamic-plugin-sdk';\nimport { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Output,\n EventEmitter,\n ContentChildren,\n QueryList,\n AfterViewInit,\n Input,\n HostListener,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\n\nimport { SearchItemComponent } from './search-item/component';\n\n@Component({\n selector: 'acl-search-panel',\n templateUrl: './template.html',\n styleUrls: ['./style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SearchItemComponent, ButtonComponent, TranslatePipe, AsyncPipe],\n standalone: true,\n})\nexport class SearchPanelComponent implements AfterViewInit {\n @Input()\n enableEnterHandler: boolean | '' = true;\n\n @Output()\n search = new EventEmitter<void>();\n\n @Output()\n resetSearch = new EventEmitter<void>();\n\n @ContentChildren(SearchItemComponent, {\n descendants: true,\n })\n items: QueryList<SearchItemComponent>;\n\n @HostListener('document:keydown.enter', ['$event'])\n enter() {\n if (coerceAttrBoolean(this.enableEnterHandler)) {\n this.search.next();\n }\n }\n\n isFulWidth$$ = new Subject<boolean>();\n\n ngAfterViewInit(): void {\n this.items.changes.subscribe(panels => {\n this.isFulWidth$$.next(this.checkItemLength(panels));\n });\n\n this.isFulWidth$$.next(this.checkItemLength(this.items));\n }\n\n // 当一排放不下 3 个选项的时候,操作按钮自动放置最后\n private checkItemLength(panels: QueryList<SearchItemComponent>) {\n return panels?.length % 3 === 0;\n }\n}\n","<div class=\"search-panel\">\n <ng-content></ng-content>\n <acl-search-item [style.width]=\"(isFulWidth$$ | async) ? '100%' : ''\">\n <div class=\"tw-justify-end tw-w-full search\">\n <button\n type=\"button\"\n aui-button=\"primary\"\n (click)=\"search.emit()\"\n >\n {{ 'search' | translate }}\n </button>\n <button\n type=\"button\"\n aui-button\n (click)=\"resetSearch.emit()\"\n >\n {{ 'reset' | translate }}\n </button>\n\n <ng-content select=\"[additional]\"></ng-content>\n </div>\n </acl-search-item>\n</div>\n","import {\n ButtonModule,\n CheckboxModule,\n DropdownModule,\n IconModule,\n} from '@alauda/ui';\nimport { TranslatePipe } from '@alauda-fe/dynamic-plugin-sdk';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { EFFECT_DIRECTIVE_MODULE } from '../../directives';\nimport { StringMap } from '../../types';\n\nconst TABLE_CUSTOM_COLUMNS_SETTING_KEY = '__TABLE_CUSTOM_COLUMNS_SETTING_KEY__';\n\n@Component({\n selector: 'acl-table-column-setting',\n templateUrl: 'template.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n DropdownModule,\n ButtonModule,\n IconModule,\n CheckboxModule,\n TranslatePipe,\n EFFECT_DIRECTIVE_MODULE,\n ],\n})\nexport class TableCustomColumnsComponent implements OnInit {\n @Input() options: string[];\n\n @Input() ignoreOptions = ['action'];\n\n @Input()\n columns?: string[];\n\n @Input()\n marginLeft = '8px';\n\n @Input()\n id: string;\n\n @Output()\n columnsChange = new EventEmitter<string[]>();\n\n storage: StringMap;\n\n ngOnInit(): void {\n this.storage = JSON.parse(\n localStorage.getItem(TABLE_CUSTOM_COLUMNS_SETTING_KEY) || '{}',\n );\n if (this.id && this.storage[this.id]) {\n const storageColumns = this.storage[this.id].split(',');\n const filteredItems = storageColumns.filter(item =>\n this.options.includes(item),\n );\n this.columns = filteredItems;\n this.columnsChange.emit(filteredItems);\n return;\n }\n\n if (this.columns?.length) {\n const filteredItems = this.columns.filter(item =>\n this.options.includes(item),\n );\n this.columns = filteredItems;\n this.columnsChange.emit(filteredItems);\n return;\n }\n\n if (!this.columns) {\n this.columns = [...this.options];\n }\n }\n\n selectedChanged(event: string[]) {\n this.columnsChange.emit(event);\n if (this.id) {\n localStorage.setItem(\n TABLE_CUSTOM_COLUMNS_SETTING_KEY,\n JSON.stringify({\n ...this.storage,\n [this.id]: event.join(','),\n }),\n );\n }\n }\n}\n","<div [ngStyle]=\"{ 'margin-left': marginLeft }\">\n <button\n aui-button\n [square]=\"true\"\n [auiDropdown]=\"setting\"\n [auiDropdownHideOnClick]=\"false\"\n >\n <aui-icon icon=\"gear\"></aui-icon>\n </button>\n</div>\n<ng-template #setting\n ><aui-menu size=\"small\">\n <aui-checkbox-group\n [(ngModel)]=\"columns\"\n direction=\"column\"\n (ngModelChange)=\"selectedChanged($event)\"\n >\n <aui-checkbox\n *ngFor=\"let item of options\"\n [label]=\"item\"\n [hidden]=\"ignoreOptions.includes(item)\"\n >\n {{ item | translate }}\n </aui-checkbox>\n </aui-checkbox-group>\n </aui-menu></ng-template\n>\n","import { GenericStatusColor, GenericStatusIcon } from '../../constants';\n\n// http://confluence.alaudatech.com/pages/viewpage.action?pageId=50824334\nexport enum PodStatusEnum {\n running = 'running',\n pending = 'pending',\n completed = 'completed',\n error = 'error',\n}\n\nexport const PodStatusColorMapper = {\n [PodStatusEnum.running]: GenericStatusColor.Running,\n [PodStatusEnum.completed]: GenericStatusColor.Stopped,\n [PodStatusEnum.error]: GenericStatusColor.Failed,\n};\n\nexport const PodStatusIconMapper = {\n [PodStatusEnum.completed]: GenericStatusIcon.Check,\n [PodStatusEnum.error]: GenericStatusIcon.Error,\n};\n","import { get } from 'lodash-es';\n\nimport { ContainerStatus, Pod } from '../../types';\n\nimport { PodStatusEnum } from './typings';\n\n// reference: https://bitbucket.org/mathildetech/link/src/c81161f02f981904b716462a305e09414e5617d3/src/backend/resource/common/pod.go#lines-179\nexport function getPodStatus(pod: Pod): string {\n let reason = pod.status.phase || pod.status.reason;\n const { initializing, reason: initReason } = getPodInitStatus(pod, reason);\n reason = initializing ? initReason : getPodContainerStatus(pod, reason);\n\n if (pod.metadata.deletionTimestamp && pod.status.reason === 'NodeLost') {\n reason = 'Unknown';\n } else if (pod.metadata.deletionTimestamp) {\n reason = 'Terminating';\n }\n return reason;\n}\n\nfunction getPodContainerStatus(pod: Pod, reason: string): string {\n const containerStatuses: ContainerStatus[] = get(\n pod,\n ['status', 'containerStatuses'],\n [],\n );\n for (let i = 0, len = containerStatuses.length; i < len; i++) {\n const container = containerStatuses[i];\n let waitingReason, terminatedReason;\n if ((waitingReason = get(container, ['state', 'waiting', 'reason']))) {\n return waitingReason;\n }\n if (\n (terminatedReason = get(container, ['state', 'terminated', 'reason']))\n ) {\n return terminatedReason;\n }\n if (get(container, ['state', 'terminated'])) {\n const { signal, exitCode } = container.state.terminated;\n return signal === 0 ? `ExitCode:${exitCode}` : `Signal:${signal}`;\n }\n }\n return reason;\n}\n\nfunction getPodInitStatus(pod: Pod, reason: string) {\n let initializing = false;\n const initContainerStatuses = get(\n pod,\n ['status', 'initContainerStatuses'],\n [] as ContainerStatus[],\n );\n for (let i = initContainerStatuses.length - 1; i >= 0; i--) {\n const status = initContainerStatuses[i];\n if (get(status, ['state', 'terminated', 'exitCode']) === 0) {\n continue;\n }\n let waitingReason: string;\n const terminated = get(status, ['state', 'terminated']);\n if (terminated) {\n reason = terminated.reason\n ? `Init:${terminated.reason}`\n : terminated.signal === 0\n ? `Init:ExitCode:${terminated.exitCode}`\n : `Init:Signal:${terminated.signal}`;\n } else if (\n (waitingReason = get(status, ['state', 'waiting', reason])) &&\n waitingReason !== 'PodInitializing'\n ) {\n reason = `Initing:${waitingReason}`;\n } else {\n reason = `Initing:${i}/${pod.spec.initContainers.length}`;\n }\n initializing = true;\n break;\n }\n return { initializing, reason };\n}\n\n// 将 getPodStatus 得到的多种状态映射到标签类型\n// reference: https://bitbucket.org/mathildetech/link/src/c81161f02f981904b716462a305e09414e5617d3/src/backend/resource/common/podinfo.go#lines-68\nexport function getPodAggregatedStatus(status: string): PodStatusEnum {\n if (\n status.split(':')[0] === 'Initing' ||\n [\n 'Initing',\n 'Pending',\n 'PodInitializing',\n 'ContainerCreating',\n 'Terminating',\n ].includes(status)\n ) {\n return PodStatusEnum.pending;\n }\n\n if (status === 'Completed') {\n return PodStatusEnum.completed;\n }\n if (status === 'Running') {\n return PodStatusEnum.running;\n }\n\n return PodStatusEnum.error;\n}\n","import { IconModule, TooltipModule } from '@alauda/ui';\nimport { NgFor, NgIf, NgStyle, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nimport { PurePipe } from '../../pipes';\nimport { Pod } from '../../types';\nimport { StatusIconComponent } from '../status-icon/status-icon.component';\n\nimport { getPodAggregatedStatus, getPodStatus } from './status';\nimport { PodStatusColorMapper, PodStatusIconMapper } from './typings';\n\n@Component({\n selector: 'acl-pod-status',\n templateUrl: 'template.html',\n styleUrls: ['style.scss'],\n standalone: true,\n imports: [\n StatusIconComponent,\n NgIf,\n IconModule,\n TooltipModule,\n NgStyle,\n NgTemplateOutlet,\n PurePipe,\n NgFor,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PodStatusComponent {\n @Input()\n pod: Pod;\n\n @Input()\n disableMessageOverview: boolean;\n\n getReadyContainer(pod: Pod) {\n return {\n ready: (pod.status.containerStatuses || []).filter(i => i.ready).length,\n all: pod.spec.containers.length,\n };\n }\n\n getPodErrorMessages = (pod: Pod) =>\n getPodStatus(pod).includes('Pending')\n ? pod.status.conditions?.map(item => item.message).filter(msg => !!msg)\n : pod.status.containerStatuses\n ?.filter(c => !c.ready)\n .map(c => c.state?.waiting?.message)\n .filter(msg => !!msg);\n\n getPodAggregatedStatus = getPodAggregatedStatus;\n getPodStatus = getPodStatus;\n PodStatusColorMapper = PodStatusColorMapper;\n PodStatusIconMapper = PodStatusIconMapper;\n}\n","<ng-container *ngIf=\"pod | pure: getPodStatus as status; else nodata\">\n <div class=\"status-wrapper\">\n <acl-status-icon\n [status]=\"status | pure: getPodAggregatedStatus\"\n [colorMapper]=\"PodStatusColorMapper\"\n [iconMapper]=\"PodStatusIconMapper\"\n [withText]=\"false\"\n [ngStyle]=\"{ 'margin-right': 0 }\"\n ></acl-status-icon>\n <div class=\"tw-flex\">\n {{ status }}\n <ng-container\n [ngTemplateOutlet]=\"readyContainerTmpl\"\n [ngTemplateOutletContext]=\"{\n $implicit: pod | pure: getReadyContainer,\n }\"\n ></ng-container>\n <ng-template\n #readyContainerTmpl\n let-data\n >\n ({{ data.ready }}/{{ data.all }})\n </ng-template>\n <ng-container *ngIf=\"pod | pure: getPodErrorMessages as messages\">\n <aui-icon\n icon=\"file_magnifier\"\n *ngIf=\"messages?.length && !disableMessageOverview\"\n class=\"message-tip-icon\"\n [auiTooltip]=\"messages.length === 1 ? onlyOnePodMessage : podMessages\"\n [auiTooltipContext]=\"{ messages: messages }\"\n size=\"14\"\n auiTooltipClass=\"condition-message-tip\"\n ></aui-icon>\n </ng-container>\n </div>\n </div>\n</ng-container>\n<ng-template #nodata>-</ng-template>\n<ng-template\n #podMessages\n let-messages=\"messages\"\n>\n <ul class=\"pod-messages\">\n <li *ngFor=\"let msg of messages\"><em>&bull;</em>{{ msg }}</li>\n </ul>\n</ng-template>\n<ng-template\n #onlyOnePodMessage\n let-messages=\"messages\"\n>\n {{ messages[0] }}\n</ng-template>\n","import { NotificationService, coerceAttrBoolean } from '@alauda/ui';\nimport { TranslateService } from '@alauda-fe/dynamic-plugin-sdk';\nimport {\n ChangeDetectionStrategy,\n Component,\n Input,\n forwardRef,\n HostListener,\n ViewChild,\n ElementRef,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { EFFECT_DIRECTIVE_MODULE } from '../../directives';\nimport { isErrorMessage, ValueOf } from '../../types';\n\nexport const FileResultType = {\n ARRAY_BUFFER: 'ArrayBuffer',\n BINARY_STRING: 'BinaryString',\n DATA_URL: 'DataURL',\n TEXT: 'Text',\n} as const;\n\nexport type FileResultType = ValueOf<typeof FileResultType>;\n\nexport type FileResult = string | ArrayBuffer;\n\n@Component({\n selector: 'acl-upload-file',\n templateUrl: 'template.html',\n styleUrls: ['styles.scss'],\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => UploadFileComponent),\n multi: true,\n },\n ],\n standalone: true,\n imports: [EFFECT_DIRECTIVE_MODULE],\n})\nexport class UploadFileComponent implements ControlValueAccessor {\n @Input()\n disabled: boolean;\n\n @Input()\n accept: string;\n\n @Input()\n multiple: boolean;\n\n @Input()\n resultType: FileResultType = FileResultType.TEXT;\n\n @ViewChild('fileInput')\n fileInput: ElementRef<HTMLInputElement>;\n\n valueChange: (ev: FileResult | FileResult[]) => void;\n\n constructor(\n private readonly notification: NotificationService,\n private readonly translate: TranslateService,\n ) {}\n\n @HostListener('click')\n onClick() {\n if (coerceAttrBoolean(this.disabled)) {\n return;\n }\n this.fileInput.nativeElement.click();\n }\n\n async onChange(e: Event) {\n const el = e.target as HTMLInputElement;\n\n try {\n const results = await Promise.all(\n Array.from(el.files).map(\n file =>\n new Promise<FileResult>((resolve, reject) => {\n const fileReader = new FileReader();\n fileReader.addEventListener('load', () => {\n const { result } = fileReader;\n\n if (\n this.resultType === FileResultType.TEXT &&\n (result as string).includes('\\uFFFD')\n ) {\n reject(new Error(this.translate.get('text_file_type_error')));\n return;\n }\n\n resolve(result);\n });\n fileReader[`readAs${this.resultType}`](file);\n }),\n ),\n );\n this.valueChange(this.multiple ? results : results[0]);\n } catch (e) {\n if (isErrorMessage(e)) {\n this.notification.error(e.message);\n }\n }\n\n el.value = null;\n }\n\n writeValue() {\n //\n }\n\n registerOnChange(fn: any) {\n this.valueChange = fn;\n }\n\n registerOnTouched() {\n //\n }\n}\n","<ng-content></ng-content>\n<input\n #fileInput\n class=\"file-input\"\n type=\"file\"\n [attr.accept]=\"accept\"\n [multiple]=\"multiple\"\n (change)=\"onChange($event)\"\n/>\n","import { IconComponent } from '@alauda/ui';\nimport { TranslatePipe } from '@alauda-fe/dynamic-plugin-sdk';\nimport { NgClass, NgIf } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Inject,\n InjectionToken,\n OnDestroy,\n ViewChild,\n} from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { Subject, filter, fromEvent, map, takeUntil } from 'rxjs';\n\nimport { ResizeDirective, ResizeEvent } from '../../directives';\nimport { SafePipe } from '../../pipes';\n\nexport const TOKEN_HELP_DOC_DATA = new InjectionToken<unknown>(\n 'help document data context',\n);\n\nconst DOC_WINDOW_SMALL_SIZE_THRESHOLD = 770;\n\n@Component({\n templateUrl: './template.html',\n styleUrls: ['./style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n IconComponent,\n TranslatePipe,\n NgClass,\n SafePipe,\n ResizeDirective,\n NgIf,\n ],\n})\nexport class HelpDocumentComponent implements OnDestroy {\n @ViewChild('iframe')\n frame: ElementRef<HTMLFrameElement>;\n\n overlay = false;\n\n currentHref = this.data.rawUrl;\n small = true;\n destroy$$ = new Subject<void>();\n close = new EventEmitter<void>();\n\n constructor(\n @Inject(TOKEN_HELP_DOC_DATA)\n public data: {\n rawUrl: string;\n title: string;\n },\n public readonly cdr: ChangeDetectorRef,\n public readonly sanitizer: DomSanitizer,\n ) {\n fromEvent(window, 'message')\n .pipe(\n map((evt: MessageEvent) => {\n try {\n return JSON.parse((evt as { data: string }).data) as {\n href: string;\n };\n } catch {\n return null;\n }\n }),\n takeUntil(this.destroy$$),\n filter(i => !!i),\n )\n .subscribe(data => {\n this.currentHref = data.href;\n this.cdr.markForCheck();\n });\n }\n\n onResized({ width }: ResizeEvent) {\n this.small = width < DOC_WINDOW_SMALL_SIZE_THRESHOLD;\n this.cdr.markForCheck();\n }\n\n back() {\n if (this.currentHref !== this.data.rawUrl) {\n this.frame.nativeElement.setAttribute('src', this.data.rawUrl);\n }\n }\n\n ngOnDestroy() {\n this.destroy$$.next();\n }\n}\n","<div\n aclMutable\n aclDragBoundary=\"html\"\n (aclDragStarted)=\"overlay = true\"\n (aclDragEnded)=\"overlay = false\"\n (aclResizeStarted)=\"overlay = true\"\n (aclResizeEnded)=\"overlay = false\"\n class=\"resize-wrapper wrapper\"\n #container\n>\n <div\n class=\"header\"\n aclDragHandle\n >\n <aui-icon\n icon=\"arrow_left\"\n size=\"16px\"\n (click)=\"back()\"\n class=\"icon-btn mr-4\"\n ></aui-icon>\n {{ data.title | translate }}\n <div style=\"flex: 1\"></div>\n <aui-icon\n icon=\"xmark\"\n size=\"16px\"\n (click)=\"close.next()\"\n class=\"icon-btn\"\n ></aui-icon>\n </div>\n <div class=\"content\">\n <iframe\n #iframe\n aclResize\n (resized)=\"onResized($event)\"\n [src]=\"data.rawUrl | aclSafe: 'resourceUrl'\"\n [ngClass]=\"{\n is_small: small,\n 'frame-body': true,\n }\"\n ></iframe>\n\n <div class=\"bar_open-new\">\n <a\n [href]=\"currentHref\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {{ 'open_in_doc_center' | translate\n }}<aui-icon\n icon=\"jump\"\n margin=\"left\"\n ></aui-icon>\n </a>\n </div>\n </div>\n\n <div\n class=\"mask\"\n *ngIf=\"overlay\"\n ></div>\n</div>\n","import { ComponentPortal, DomPortalOutlet } from '@angular/cdk/portal';\nimport {\n ApplicationRef,\n ComponentFactoryResolver,\n Injectable,\n Injector,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { HelpDocumentComponent, TOKEN_HELP_DOC_DATA } from './component';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class HelpDocumentService {\n constructor(\n private readonly rootInjector: Injector,\n private readonly cfr: ComponentFactoryResolver,\n private readonly appRef: ApplicationRef,\n ) {}\n\n portalHost = new DomPortalOutlet(\n document.body,\n this.cfr,\n this.appRef,\n this.rootInjector,\n );\n\n subscription: Subscription;\n portal: ComponentPortal<HelpDocumentComponent>;\n\n open(context?: { title: string; rawUrl: string }) {\n if (this.portalHost.hasAttached) {\n this.portalHost.detach();\n this.portal = null;\n }\n\n const injector = Injector.create({\n providers: [\n {\n provide: TOKEN_HELP_DOC_DATA,\n useValue: context,\n },\n ],\n parent: this.rootInjector,\n });\n this.portal = new ComponentPortal(HelpDocumentComponent, null, injector);\n const ref = this.portalHost.attach(this.portal);\n this.subscription = ref.instance.close.subscribe(() => {\n this.portalHost.detach();\n this.portal = null;\n this.subscription.unsubscribe();\n });\n }\n}\n","import { TranslateService } from '@alauda-fe/dynamic-plugin-sdk';\nimport {\n ChangeDetectorRef,\n Directive,\n HostListener,\n inject,\n input,\n Pipe,\n PipeTransform,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { HelpDocumentService } from './service';\n\n@Directive({\n selector: '[aclHelpDoc]',\n standalone: true,\n})\nexport class HelpDocDirective {\n doc = input.required<string>({\n alias: 'aclHelpDoc',\n });\n\n target = input<'popover' | 'blank'>('popover', { alias: 'aclHelpDocTarget' });\n\n private helpDoc = inject(HelpDocumentService);\n private translate = inject(TranslateService);\n\n @HostListener('click')\n onClick() {\n const url = getHelpDocUrl(this.doc(), this.translate.locale);\n if (this.target() === 'popover') {\n this.helpDoc.open({ title: this.translate.get('help_doc'), rawUrl: url });\n } else {\n window.open(url, '_blank');\n }\n }\n}\n\n@Pipe({\n name: 'aclHelpDocUrl',\n pure: false,\n})\nexport class HelpDocUrlPipe implements PipeTransform {\n private translate = inject(TranslateService);\n private cdr = inject(ChangeDetectorRef);\n\n constructor() {\n this.translate.locale$.pipe(takeUntilDestroyed()).subscribe(() => {\n this.cdr.markForCheck();\n });\n }\n\n transform(value: string) {\n return getHelpDocUrl(value, this.translate.locale);\n }\n}\n\nexport function getHelpDocUrl(path: string, lang: string) {\n if (!path || path === '/') {\n return '/docs/';\n }\n\n const pathArr = path.slice(path.startsWith('/') ? 1 : 0).split('/');\n const [entry, ...rest] = pathArr;\n const subPath = rest.join('/');\n\n if (lang === 'en') {\n return `/docs/${entry}/${subPath}`;\n }\n\n return `/docs/${entry}/${lang}/${subPath}`;\n}\n","/**\n * @packageDocumentation\n * @module help-document\n * @preferred\n */\n\nexport * from './component';\nexport * from './service';\nexport * from './directive';\n","/**\n * @packageDocumentation\n * @module page-guard\n */\n\nimport { Directive } from '@angular/core';\n\n@Directive({\n selector: '[aclPageGuardOperation]',\n standalone: true,\n})\nexport class PageGuardOperationDirective {}\n\n@Directive({\n selector: '[aclPageGuardDescription]',\n standalone: true,\n})\nexport class PageGuardDescriptionDirective {}\n\n@Directive({\n selector: '[aclPageGuardImage]',\n standalone: true,\n})\nexport class PageGuardImageDirective {}\n\n@Directive({\n selector: '[aclPageGuardContent]',\n standalone: true,\n})\nexport class PageGuardContentDirective {}\n","/**\n * @packageDocumentation\n * @module page-guard\n */\n\nimport { ValueOf } from 'ts-essentials';\n\nexport enum GuardStatus {\n Pending = 'pending',\n Available = 'available',\n Unavailable = 'unavailable',\n}\n\nexport const Reason = {\n NotSupported: 'notSupported',\n NoPermission: 'noPermission',\n NotDeployed: 'notDeployed',\n Abnormal: 'abnormal',\n NoData: 'noData',\n NoMessage: 'noMessage',\n Disconnected: 'disconnected',\n LicenseAbnormal: 'licenseAbnormal',\n NetworkAbnormal: 'networkAbnormal',\n NotFound: 'notFound',\n NoAlarm: 'noAlarm',\n} as const;\n\nexport type Reason = ValueOf<typeof Reason>;\n\nexport const REASON_MAP = {\n [Reason.NotSupported]: {\n src: 'not-supported.svg',\n title: 'not_support',\n description: 'not_support_description',\n },\n [Reason.NoPermission]: {\n src: 'no-permission.svg',\n title: 'inaccessible',\n description: 'no_permission_description',\n },\n [Reason.NotDeployed]: {\n src: 'not-deployed.svg',\n title: 'inaccessible',\n description: 'not_deployed_description',\n },\n [Reason.Abnormal]: {\n src: 'system-abnormal.svg',\n title: 'system_abnormal_title',\n description: 'system_abnormal_description',\n },\n [Reason.NoData]: {\n src: 'no-data.svg',\n title: 'no_data',\n description: 'no_data',\n },\n [Reason.NoMessage]: {\n src: 'no-message.svg',\n title: 'no_message',\n description: 'no_message',\n },\n [Reason.Disconnected]: {\n src: 'disconnected.svg',\n title: 'inaccessible',\n description: 'disconnected_description',\n },\n [Reason.LicenseAbnormal]: {\n src: 'license-abnormal.svg',\n title: 'inaccessible',\n description: 'license_abnormal_description',\n },\n [Reason.NetworkAbnormal]: {\n src: 'network-abnormal.svg',\n title: 'inaccessible',\n description: 'network_abnormal_description',\n },\n [Reason.NotFound]: {\n src: 'not-found.svg',\n title: 'not_found_title',\n description: 'not_found_description',\n },\n [Reason.NoAlarm]: {\n src: 'no_realtime_alarm.svg',\n title: 'no_alarm_title',\n description: 'no_alarm_description',\n },\n};\n\nexport const DEFAULT_REASON = REASON_MAP[Reason.NotSupported];\n","/**\n * @packageDocumentation\n * @module page-guard\n */\n\nimport { CardComponent, handlePixel, ThemeService } from '@alauda/ui';\nimport { TranslatePipe } from '@alauda-fe/dynamic-plugin-sdk';\nimport { AsyncPipe, NgClass, NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n Input,\n TemplateRef,\n} from '@angular/core';\nimport { isBoolean } from 'lodash-es';\nimport { combineLatest, map, Observable } from 'rxjs';\n\nimport { ObservableInput, publishRef } from '../../../utils';\nimport { LoadingMaskComponent } from '../../loading-mask/loading-mask.component';\n\nimport {\n PageGuardContentDirective,\n PageGuardDescriptionDirective,\n PageGuardImageDirective,\n PageGuardOperationDirective,\n} from './helper-directives';\nimport {\n DEFAULT_REASON,\n GuardStatus,\n REASON_MAP,\n Reason,\n} from './page-guard.type';\n\n@Component({\n selector: 'acl-page-guard',\n templateUrl: 'template.html',\n styleUrls: ['style.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgIf,\n NgTemplateOutlet,\n AsyncPipe,\n TranslatePipe,\n LoadingMaskComponent,\n CardComponent,\n NgClass,\n ],\n standalone: true,\n})\nexport class PageGuardComponent {\n @Input()\n top: number | string;\n\n @Input()\n isFull: boolean;\n\n @Input()\n noShadow = false;\n\n @Input()\n get allowed() {\n return this.status === GuardStatus.Available;\n }\n\n set allowed(allowed: boolean) {\n if (isBoolean(allowed)) {\n this.status = allowed ? GuardStatus.Available : GuardStatus.Unavailable;\n } else {\n this.status = GuardStatus.Pending;\n }\n }\n\n @Input()\n status: GuardStatus = GuardStatus.Pending;\n\n @Input()\n reason: Reason;\n\n @ObservableInput()\n reason$!: Observable<Reason>;\n\n @Input()\n title = '';\n\n @Input()\n description: string;\n\n @Input()\n context: 'page' | 'card' = 'page';\n\n @ContentChild(PageGuardImageDirective, { read: TemplateRef })\n imageTpl: TemplateRef<unknown>;\n\n @ContentChild(PageGuardDescriptionDirective, { read: TemplateRef })\n descriptionTpl: TemplateRef<unknown>;\n\n @ContentChild(PageGuardOperationDirective, { read: TemplateRef })\n operation: TemplateRef<unknown>;\n\n @ContentChild(PageGuardContentDirective, { read: TemplateRef })\n template: TemplateRef<unknown>;\n\n handlePixel = handlePixel;\n\n constructor(private readonly theme: ThemeService) {}\n\n reasonModel$ = this.reason$.pipe(\n map(reason => (reason ? REASON_MAP[reason] : DEFAULT_REASON)),\n );\n\n reasonSrc$ = combineLatest([\n this.theme.currentTheme$,\n this.reasonModel$,\n ]).pipe(\n map(([theme, reasonModel]) => `/images/${theme}/${reasonModel.src}`),\n publishRef(),\n );\n\n isNonEmptyString(value: unknown): boolean {\n return typeof value === 'string' && value !== '';\n }\n\n isUndefined(value: string): boolean {\n return value === undefined;\n }\n\n isTemplateRef(value: unknown): boolean {\n return value instanceof TemplateRef;\n }\n}\n","<ng-container *ngIf=\"status === 'available'\">\n <ng-container\n *ngIf=\"template\"\n [ngTemplateOutlet]=\"template\"\n ></ng-container>\n</ng-container>\n\n<ng-container *ngIf=\"status === 'unavailable'\">\n <aui-card\n [divider]=\"false\"\n class=\"unavailable\"\n [ngClass]=\"{ isFull: isFull, noShadow: noShadow }\"\n *ngIf=\"context === 'page'\"\n >\n <ng-container [ngTemplateOutlet]=\"unavailable\"></ng-container>\n </aui-card>\n <ng-container\n *ngIf=\"context !== 'page'\"\n [ngTemplateOutlet]=\"unavailable\"\n ></ng-container>\n</ng-container>\n<ng-container *ngIf=\"status !== 'available' && status !== 'unavailable'\">\n <div class=\"acl-page-guard--pending\">\n <acl-loading-mask\n [loading]=\"true\"\n type=\"module\"\n ></acl-loading-mask>\n </div>\n</ng-container>\n\n<ng-template #unavailable>\n <div\n class=\"acl-page-guard--unavailable\"\n [style.margin-top]=\"handlePixel(top)\"\n >\n <div class=\"container\">\n <div\n class=\"img\"\n *ngIf=\"imageTpl\"\n >\n <ng-container [ngTemplateOutlet]=\"imageTpl\"></ng-container>\n </div>\n <img\n *ngIf=\"!imageTpl\"\n [attr.src]=\"reasonSrc$ | async\"\n />\n <h3\n *ngIf=\"title || (reasonModel$ | async)?.title\"\n class=\"title\"\n >\n {{ title || ((reasonModel$ | async)?.title | translate) }}\n </h3>\n <div\n class=\"description\"\n *ngIf=\"descriptionTpl\"\n >\n <ng-container [ngTemplateOutlet]=\"descriptionTpl\"></ng-container>\n </div>\n <ng-container *ngIf=\"!descriptionTpl\">\n <ng-container *ngIf=\"isNonEmptyString(description)\">\n <p class=\"description\">{{ description }}</p>\n </ng-container>\n <ng-container *ngIf=\"isUndefined(description)\">\n <p class=\"description\">\n {{ (reasonModel$ | async)?.description | translate }}\n </p>\n </ng-container>\n </ng-container>\n\n <div\n class=\"operation\"\n *ngIf=\"isTemplateRef(operation)\"\n >\n <ng-container [ngTemplateOutlet]=\"operation\"></ng-container>\n </div>\n </div>\n </div>\n</ng-template>\n","/**\n * [[include:page-guard/README.md]]\n * @module page-guard\n * @preferred\n */\n\n/** imports */\nimport { PageGuardComponent } from './component/component';\nimport {\n PageGuardContentDirective,\n PageGuardDescriptionDirective,\n PageGuardOperationDirective,\n PageGuardImageDirective,\n} from './component/helper-directives';\nexport * from './component/component';\nexport * from './component/helper-directives';\nexport * from './component/page-guard.type';\n\nexport const PAGE_GUARD_MODULE = [\n PageGuardComponent,\n PageGuardContentDirective,\n PageGuardDescriptionDirective,\n PageGuardOperationDirective,\n PageGuardImageDirective,\n] as const;\n","/**\n * @packageDocumentation\n * @module k8s-resource-list\n */\n\nimport { WatchAPIResponse } from '@alauda-fe/dynamic-plugin-sdk';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { ActivatedRoute } from '@angular/router';\nimport { Observable } from 'rxjs';\n\nimport {\n KubernetesResource,\n KubernetesResourceList,\n Status,\n StringMap,\n} from '../types';\n\nimport { K8SResourceList } from './k8s-resource-list';\n\nexport type Watcher<R extends KubernetesResource, Q> = (\n seedVersion: string,\n params?: Q,\n) => Observable<WatchAPIResponse<R>>;\nexport type InsertFn<R> = (items: R[], res: R, hasMore: boolean) => R[];\n\nexport interface WatcherParams<R extends KubernetesResource, Q> {\n list: K8SResourceList<R>;\n watcher: Watcher<R, Q>;\n insertFn?: InsertFn<R>;\n}\n\ninterface BaseConfig<R extends KubernetesResource, Q> {\n watcher?: Watcher<R, Q>;\n insertFn?: InsertFn<R>;\n limit?: number;\n polling?: number;\n}\n\nexport type ItemsScanner<R> = (items: R[]) => R[];\n\nexport interface ConfigWithRoute<R, Q, P> extends BaseConfig<R, Q> {\n fetcher: (params: P) => Observable<KubernetesResourceList<R>>;\n activatedRoute?: ActivatedRoute;\n}\n\nexport interface ConfigWithParams<R, Q, P> extends BaseConfig<R, Q> {\n fetcher: (params: P) => Observable<KubernetesResourceList<R>>;\n fetchParams$?: Observable<Q>;\n}\n\nexport enum LoadAction {\n Reload = 'Reload',\n SilentReload = 'SilentReload',\n LoadMore = 'LoadMore',\n}\n\nexport interface LoadState<R> {\n action?: LoadAction;\n rawResponse?: R;\n loading?: boolean;\n loadingError?: HttpErrorResponse | Status;\n}\n\nexport interface ListParams extends StringMap {\n limit: string;\n continue: string;\n}\n\nexport interface StreamListLoader<R, T> {\n loadState$: Observable<LoadState<R>>;\n loading$: Observable<boolean>;\n loadingError$: Observable<HttpErrorResponse | Status>;\n hasMore$: Observable<boolean>;\n rawResponse$: Observable<R>;\n items$: Observable<T[]>;\n snapshot: StreamListLoaderSnapshot<R, T>;\n\n loadMore(): void;\n reload(): void;\n}\n\nexport interface StreamListLoaderSnapshot<R, T> {\n rawResponse?: R;\n loading?: boolean;\n loadingError?: HttpErrorResponse | Status;\n hasMore?: boolean;\n continueToken?: string;\n items?: T[];\n}\n\nexport interface LoadSnapshot<R, T, Q> extends StreamListLoaderSnapshot<R, T> {\n queryParams?: Q;\n}\n","/**\n * @packageDocumentation\n * @module k8s-resource-list\n */\n\nimport { BackTopComponent, IconComponent } from '@alauda/ui';\nimport { TranslatePipe, TranslateService } from '@alauda-fe/dynamic-plugin-sdk';\nimport { AsyncPipe, NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n Directive,\n Input,\n OnDestroy,\n OnInit,\n TemplateRef,\n Injector,\n} from '@angular/core';\nimport {\n Observable,\n combineLatest,\n concat,\n debounceTime,\n distinctUntilChanged,\n filter,\n map,\n startWith,\n switchMap,\n take,\n takeUntil,\n takeWhile,\n} from 'rxjs';\n\nimport { ScrollBorderObserverDirective } from '../../directives';\nimport { KubernetesResource, KubernetesResourceList } from '../../types';\nimport { ObservableInput, publishRef } from '../../utils';\nimport { LoadAction, StreamListLoader } from '../types';\n\n@Directive({\n selector: '[aclK8sListFooterNoData]',\n standalone: true,\n})\nexport class K8sListFooterNoDataDirective {\n constructor(public templateRef: TemplateRef<any>) {}\n}\n\n@Directive({\n selector: '[aclK8sListFooterLoadingError]',\n standalone: true,\n})\nexport class K8sListFooterLoadingErrorDirective {\n constructor(public templateRef: TemplateRef<any>) {}\n}\n\n@Component({\n selector: 'acl-k8s-resource-list-footer',\n templateUrl: 'template.html',\n styleUrls: ['styles.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgIf,\n NgTemplateOutlet,\n AsyncPipe,\n TranslatePipe,\n IconComponent,\n BackTopComponent,\n ],\n})\nexport class K8SResourceListFooterComponent\n extends ScrollBorderObserverDirective\n implements OnInit, OnDestroy\n{\n @Input() list: StreamListLoader<KubernetesResourceList, KubernetesResource>;\n\n @Input() autoLoad = true;\n @Input() backTop = true;\n @Input() bottomDistance = 60;\n @Input() resourceNameTranslated: string;\n @Input() firstScrollLoad: number;\n\n @ObservableInput()\n resourceNameTranslated$: Observable<string>;\n\n @Input() resourceName: string;\n\n @ObservableInput()\n resourceName$: Observable<string>;\n\n @ContentChild(K8sListFooterNoDataDirective, {\n read: TemplateRef,\n })\n noDataTemplate: TemplateRef<any>;\n\n @ContentChild(K8sListFooterLoadingErrorDirective, {\n read: TemplateRef,\n })\n loadingErrorTemplate: TemplateRef<any>;\n\n isEmptyList$: Observable<boolean>;\n noDataHint$: Observable<string>;\n loadingErrorCode$: Observable<number>;\n\n window = window;\n\n constructor(\n injector: Injector,\n private readonly translate: TranslateService,\n ) {\n super(injector);\n this.option = this.autoLoad ? '' : false;\n }\n\n override ngOnInit() {\n super.ngOnInit();\n\n this.loadingErrorCode$ = this.list.loadingError$.pipe(\n map(\n loadingError =>\n loadingError && 'code' in loadingError && loadingError.code,\n ),\n distinctUntilChanged(),\n publishRef(),\n );\n\n this.isEmptyList$ = combineLatest([\n this.list.items$.pipe(map(items => items.length)),\n this.list.hasMore$,\n this.list.loading$,\n this.list.loadingError$,\n ]).pipe(\n map(\n ([length, hasMore, loading, loadingError]) =>\n !(length || hasMore || loading || loadingError),\n ),\n distinctUntilChanged(),\n publishRef(),\n );\n\n this.noDataHint$ = combineLatest([\n this.list.rawResponse$,\n this.resourceName$,\n this.resourceNameTranslated$,\n this.translate.locale$,\n ]).pipe(\n filter(([res]) => !!res),\n map(([{ kind }, resourceName, resourceNameTranslated]) => {\n if (resourceNameTranslated) {\n return this.translate.get('no_named_data_hint', {\n name: resourceNameTranslated,\n });\n }\n\n if (resourceName || (kind?.endsWith('List') && kind.length > 4)) {\n return this.translate.get('no_named_data_hint', {\n name: this.translate.get(\n resourceName ||\n kind.slice(0, kind.lastIndexOf('List')).toLowerCase(),\n ),\n });\n }\n return this.translate.get('no_data');\n }),\n );\n\n const viewEl =\n this.scrollEl === window\n ? document.documentElement\n : (this.scrollEl as HTMLElement);\n\n // 当数据不够一屏时自动加载更多\n const autoLoadOneScreen$ = this.list.loadState$.pipe(\n map(state => state.rawResponse),\n filter(res => !!res),\n debounceTime(50),\n takeWhile(res => {\n return (\n (!!res.metadata?.continue &&\n viewEl.scrollHeight - viewEl.clientHeight < this.bottomDistance) ||\n (this.firstScrollLoad &&\n (this.list.snapshot.items?.length || 0) < this.firstScrollLoad)\n );\n }),\n );\n this.list.loadState$\n .pipe(\n filter(state => state.action === LoadAction.Reload),\n startWith(null as void),\n switchMap(() => concat(autoLoadOneScreen$, this.scrollBottomBorder)),\n // list.rawResponse$ 会处理好 loading 等状态时的 loadMore 请求,但有错误时主要主动停止\n filter(() => !this.list.snapshot.loadingError),\n takeUntil(this.destroy$$),\n )\n .subscribe(() => {\n this.list.loadMore();\n });\n }\n\n retry() {\n this.list.items$.pipe(take(1)).subscribe(items => {\n if (items.length > 0) {\n this.list.loadMore();\n } else {\n this.list.reload();\n }\n });\n }\n}\n","<div\n *ngIf=\"isEmptyList$ | async\"\n class=\"empty-placeholder\"\n>\n <ng-container *ngIf=\"noDataTemplate\">\n <ng-template *ngTemplateOutlet=\"noDataTemplate\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"!noDataTemplate\">\n {{ noDataHint$ | async }}\n </ng-container>\n</div>\n\n<ng-container *ngIf=\"!(isEmptyList$ | async)\">\n <div\n class=\"table-placeholder\"\n *ngIf=\"list.loadingError$ | async\"\n >\n @if (loadingErrorTemplate) {\n <ng-template *ngTemplateOutlet=\"loadingErrorTemplate\"></ng-template>\n } @else {\n <ng-container *ngIf=\"![410, 403].includes(loadingErrorCode$ | async)\">\n <span\n >{{ 'error_loading_data' | translate }},{{\n 'please' | translate\n }}</span\n >\n <button\n aui-button=\"text\"\n size=\"small\"\n (click)=\"retry()\"\n >\n {{ ('retry' | translate).toLowerCase() }}\n </button>\n </ng-container>\n\n <ng-container *ngIf=\"(loadingErrorCode$ | async) === 410\">\n <span>\n {{ 'list_data_has_expired' | translate }}, {{ 'please' | translate }}\n </span>\n <button\n aui-button=\"text\"\n size=\"small\"\n (click)=\"list.reload()\"\n >\n {{ 'refresh' | translate }}\n </button>\n <span>{{ 'or' | translate }}</span>\n <button\n aui-button=\"text\"\n size=\"small\"\n (click)=\"list.loadMore()\"\n >\n {{ 'continue_load' | translate }}\n </button>\n </ng-container>\n\n <ng-container *ngIf=\"(loadingErrorCode$ | async) === 403\">\n <span>\n {{ 'no_permission_description' | translate }}\n </span>\n </ng-container>\n }\n </div>\n\n <ng-container *ngIf=\"!(list.loadingError$ | async)\">\n <ng-container\n *ngIf=\"{\n loading: list.loading$ | async,\n loadMore:\n !autoLoad && !(list.loading$ | async) && list.hasMore$ | async,\n } as meta\"\n >\n <div\n class=\"table-placeholder\"\n *ngIf=\"meta.loading\"\n >\n <aui-icon icon=\"spinner\"></aui-icon>\n <span>{{ 'loading_please_wait' | translate }}</span>\n </div>\n <div\n class=\"table-placeholder\"\n *ngIf=\"meta.loadMore\"\n >\n <button\n aui-button=\"text\"\n size=\"small\"\n (click)=\"list.loadMore()\"\n >\n {{ 'load_more' | translate }}\n </button>\n </div>\n <div\n class=\"table-last-row--empty\"\n *ngIf=\"!meta.loadMore && !meta.loading\"\n >\n <div class=\"table-last-row--empty-inner\"></div>\n </div>\n </ng-container>\n </ng-container>\n</ng-container>\n\n<aui-back-top\n *ngIf=\"backTop\"\n [target]=\"window\"\n></aui-back-top>\n","/**\n * @packageDocumentation\n * @module k8s-resource-list\n */\n\nimport { ActivatedRoute } from '@angular/router';\nimport { equals } from 'ramda';\nimport { Observable, distinctUntilChanged, map } from 'rxjs';\n\nimport {\n LabelSelectorRequirement,\n ResourceListParams,\n StringMap,\n} from '../types';\n\n/**\n * convert selector.matchLabels to string\n * refers to: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api\n */\nexport function matchLabelsToString(params: StringMap = {}) {\n return Object.keys(params)\n .map(key => `${key}=${params[key] || ''}`)\n .join(',');\n}\n\n/**\n * convert string to selector.matchLabels\n */\nexport function stringToMatchLabels(str?: string): Record<string, string> {\n const labels: Record<string, string> = {};\n if (str) {\n return str.split(',').reduce((acc, item) => {\n const [key, value] = item.split('=');\n if (key && value) {\n acc[key] = value;\n }\n return acc;\n }, labels);\n }\n return labels;\n}\n\nexport function matchExpressionsToString(params: LabelSelectorRequirement[]) {\n return params\n .map(param => {\n switch (param.operator.toLowerCase()) {\n case '=':\n case '==': {\n return `${param.key}${param.operator}${param.values[0]}`;\n }\n case '!': {\n return `!${param.key}`;\n }\n case '!=': {\n return param.values\n .map(value => `${param.key}${param.operator}${value}`)\n .join(',');\n }\n case 'in':\n case 'notin': {\n return `${param.key} ${param.operator} (${param.values\n .filter(Boolean)\n .join(',')})`;\n }\n case 'exists': {\n return `${param.key}`;\n }\n case 'doesnotexist': {\n return `!${param.key}`;\n }\n default: {\n return param.key;\n }\n }\n })\n .join(',');\n}\n\nexport function extractListParamsFromRoute(\n route: ActivatedRoute,\n): Observable<ResourceListParams> {\n return route.queryParamMap.pipe(\n map(paramMap => ({\n labelSelector: paramMap.get('labelSelector'),\n fieldSelector: paramMap.get('fieldSelector'),\n keyword: paramMap.get('keyword'),\n field: paramMap.get('field'),\n })),\n distinctUntilChanged<ResourceListParams>(equals),\n );\n}\n\nexport function normalizeParams<P extends object>(params: P): P {\n return Object.entries(params).reduce((acc, [key, value]) => {\n value = typeof value === 'string' ? value.trim() : value;\n if (value) {\n acc[key as keyof P] = value;\n }\n return acc;\n }, {} as P);\n}\n","/**\n * @packageDocumentation\n * @module k8s-resource-list\n */\n\nimport { WatchEvent } from '@alauda-fe/dynamic-plugin-sdk';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport {\n EMPTY,\n Observable,\n Subject,\n merge,\n of,\n catchError,\n distinctUntilChanged,\n exhaustMap,\n filter,\n map,\n scan,\n startWith,\n switchMap,\n takeUntil,\n tap,\n finalize,\n ReplaySubject,\n} from 'rxjs';\n\nimport { DOWNGRADE_WATCH_ENABLED } from '../constants';\nimport {\n KubernetesResource,\n KubernetesResourceList,\n ResourceListParams,\n Status,\n StringMap,\n} from '../types';\nimport { publishRef } from '../utils';\n\nimport {\n ConfigWithParams,\n ConfigWithRoute,\n InsertFn,\n ItemsScanner,\n ListParams,\n LoadAction,\n LoadSnapshot,\n LoadState,\n StreamListLoader,\n Watcher,\n} from './types';\nimport { extractListParamsFromRoute, normalizeParams } from './utils';\n\nexport class K8SResourceList<\n R extends KubernetesResource = KubernetesResource,\n Q extends object = ResourceListParams,\n P extends Q & ListParams = Q & ListParams,\n> implements StreamListLoader<KubernetesResourceList<R>, R>\n{\n private readonly reloadAction$$ = new Subject<boolean>();\n private readonly loadMoreAction$$ = new Subject<void>();\n private readonly itemsScanner$$ = new Subject<ItemsScanner<R>>();\n private readonly destroy$$ = new Subject<void>();\n private readonly insertFn: InsertFn<R>;\n\n loadState$: Observable<LoadState<KubernetesResourceList<R>>>;\n\n queryParams$: Observable<Q>;\n rawResponse$: Observable<KubernetesResourceList<R>>;\n loading$: Observable<boolean>;\n loadingError$: Observable<HttpErrorResponse | Status>;\n hasMore$: Observable<boolean>;\n continueToken$: Observable<string>;\n items$: Observable<R[]>;\n bypassItems$ = new ReplaySubject<R[]>(1);\n\n timer: number;\n\n snapshot: LoadSnapshot<KubernetesResourceList<R>, R, Q> = {};\n\n constructor({ fetcher, activatedRoute }: ConfigWithRoute<R, Q, P>);\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n constructor({ fetcher, fetchParams$ }: ConfigWithParams<R, Q, P>);\n constructor({\n fetcher,\n fetchParams$,\n activatedRoute,\n limit = 20,\n polling = 0,\n watcher,\n insertFn = defaultInsert,\n }: ConfigWithRoute<R, Q, P> & ConfigWithParams<R, Q, P>) {\n this.insertFn = insertFn;\n\n this.queryParams$ = (\n (fetchParams$ ||\n (activatedRoute\n ? extractListParamsFromRoute(activatedRoute)\n : of(null))) as Observable<Q>\n ).pipe(publishRef());\n\n const validPolling =\n (polling && watcher && DOWNGRADE_WATCH_ENABLED) || (polling && !watcher)\n ? polling\n : 0;\n\n this.loadState$ = this.buildLoadStateStream({\n queryParams$: this.queryParams$,\n fetcher,\n limit,\n polling: validPolling,\n });\n\n this.insertFn = insertFn;\n\n this.initStreams(validPolling ? null : watcher);\n }\n\n reload(silent = false) {\n this.reloadAction$$.next(silent);\n }\n\n loadMore() {\n this.loadMoreAction$$.next();\n }\n\n scanItems(scanner: ItemsScanner<R>) {\n this.itemsScanner$$.next(scanner);\n }\n\n destroy() {\n this.destroy$$.next();\n this.destroy$$.complete();\n }\n\n create(resource: R) {\n this.scanItems(this._create(resource));\n }\n\n update(resource: R) {\n this.scanItems(this._update(resource));\n }\n\n delete(resource?: R) {\n if (!resource) {\n return;\n }\n this.scanItems(this._delete(resource));\n }\n\n private _create(resource: R) {\n return (items: R[]) => {\n if (\n !resource.metadata.name\n .toLowerCase()\n .includes(\n (this.snapshot.queryParams as StringMap)?.keyword?.toLowerCase() ??\n '',\n )\n ) {\n return items;\n }\n return this.insertFn(items, resource, this.snapshot.hasMore);\n };\n }\n\n private _update(resource: R) {\n return (items: R[]) =>\n items.map(item =>\n item.metadata.uid === resource.metadata.uid ? resource : item,\n );\n }\n\n private _delete({ metadata: { uid } }: R) {\n return (items: R[]) => items.filter(item => item.metadata.uid !== uid);\n }\n\n private buildLoadStateStream({\n queryParams$,\n fetcher,\n polling,\n limit,\n }: {\n queryParams$: Observable<Q>;\n fetcher: (p: P) => Observable<KubernetesResourceList<R>>;\n polling: number;\n limit: number;\n }) {\n const load$ = merge(\n queryParams$.pipe(\n map(queryParams => () => ({ queryParams, action: LoadAction.Reload })),\n ),\n this.reloadAction$$.pipe(\n map(silent => (prev: { queryParams?: P; action?: LoadAction }) => ({\n ...prev,\n action: silent ? LoadAction.SilentReload : LoadAction.Reload,\n })),\n ),\n ).pipe(\n scan(\n (acc, scanner) => scanner(acc),\n {} as { queryParams?: P; action?: LoadAction },\n ),\n tap(({ action, queryParams }) => {\n if (action === LoadAction.Reload) {\n this.snapshot = {\n queryParams,\n };\n this.bypassItems$.next(null);\n }\n }),\n );\n\n return load$.pipe(\n switchMap(({ action: leadAction, queryParams }) =>\n this.loadMoreAction$$.pipe(\n filter(() => this.snapshot.hasMore),\n map(() => true),\n startWith(false),\n exhaustMap(loadMore => {\n if (this.timer) {\n window.clearTimeout(this.timer);\n }\n const token = this.snapshot.continueToken;\n const hasMore = this.snapshot.hasMore;\n const currLength = this.snapshot.items?.length ?? limit;\n const action = loadMore ? LoadAction.LoadMore : leadAction;\n return fetcher(\n normalizeParams({\n limit: `${\n action === LoadAction.SilentReload\n ? hasMore\n ? currLength\n : 0\n : limit\n }`,\n continue: action === LoadAction.LoadMore ? token : '',\n ...queryParams,\n }) as P,\n ).pipe(\n map(rawResponse => ({ rawResponse, loadingError: null as any })),\n catchError((err: Status | HttpErrorResponse) =>\n of({\n loadingError: action === LoadAction.SilentReload ? null : err,\n }),\n ),\n tap(res => {\n if (polling && !res.loadingError) {\n this.timer = window.setTimeout(() => {\n this.reload(true);\n }, polling);\n }\n }),\n map(state => ({\n ...state,\n action,\n })),\n startWith({\n action,\n loading: true,\n }),\n );\n }),\n ),\n ),\n map(state => ({\n action: LoadAction.LoadMore,\n rawResponse: null,\n loading: false,\n loadingError: null,\n ...state,\n })),\n tap(state => {\n this.snapshot.rawResponse = state.rawResponse;\n this.snapshot.loadingError = state.loadingError;\n this.snapshot.loading =\n state.loading && state.action !== LoadAction.SilentReload;\n this.snapshot.continueToken = this.extractContinueTokenFromState(state);\n this.snapshot.hasMore = !!this.snapshot.continueToken;\n }),\n finalize(() => {\n this.snapshot = {};\n this.bypassItems$.next(null);\n if (this.timer) {\n window.clearTimeout(this.timer);\n }\n }),\n takeUntil(this.destroy$$),\n publishRef(),\n );\n }\n\n private extractContinueTokenFromState({\n rawResponse,\n loadingError,\n }: LoadState<KubernetesResourceList<R>>) {\n if (rawResponse) {\n return rawResponse.metadata?.continue ?? '';\n }\n\n if (loadingError && 'code' in loadingError && loadingError.code === 410) {\n return loadingError.metadata?.continue;\n }\n\n return this.snapshot.continueToken;\n }\n\n private initStreams(watcher: Watcher<R, Q>) {\n this.rawResponse$ = this.loadState$.pipe(\n map(data => data.rawResponse),\n distinctUntilChanged(),\n publishRef(),\n );\n\n this.loading$ = this.loadState$.pipe(\n map(\n ({ loading, action }) => loading && action !== LoadAction.SilentReload,\n ),\n distinctUntilChanged(),\n publishRef(),\n );\n\n this.loadingError$ = this.loadState$.pipe(\n map(state => state.loadingError),\n distinctUntilChanged(),\n publishRef(),\n );\n\n this.continueToken$ = this.loadState$.pipe(\n filter(({ loading }) => !loading),\n switchMap(({ rawResponse, loadingError: err }) => {\n if (rawResponse) {\n return of(rawResponse.metadata?.continue ?? '');\n }\n if (err && 'code' in err && err.code === 410) {\n return of(err.metadata?.continue);\n }\n return EMPTY;\n }),\n distinctUntilChanged(),\n publishRef(),\n );\n\n this.hasMore$ = this.continueToken$.pipe(\n map(token => !!token),\n distinctUntilChanged(),\n publishRef(),\n );\n\n this.items$ = merge(\n this.loadState$.pipe(\n map(state => (items: R[]) => {\n const newItems = state.rawResponse\n ? (state.rawResponse.items ?? [])\n : null;\n if (state.action === LoadAction.Reload) {\n return newItems ?? [];\n }\n if (state.action === LoadAction.SilentReload) {\n return newItems ?? items;\n }\n if (state.action === LoadAction.LoadMore) {\n return newItems ? [...items, ...newItems] : items;\n }\n return items;\n }),\n ),\n this.itemsScanner$$,\n watcher ? this.buildWatcher(watcher) : EMPTY,\n ).pipe(\n scan<ItemsScanner<R>, R[]>((acc, scanner) => scanner(acc), []),\n tap(items => {\n this.snapshot.items = items;\n this.bypassItems$.next(items);\n }),\n takeUntil(this.destroy$$),\n publishRef(),\n );\n }\n\n private buildWatcher(watcher: Watcher<R, Q>) {\n return this.rawResponse$.pipe(\n filter(res => !!res),\n distinctUntilChanged(\n (a, b) => a.metadata?.resourceVersion === b.metadata?.resourceVersion,\n ),\n switchMap(list =>\n watcher(list.metadata?.resourceVersion, this.snapshot.queryParams).pipe(\n catchError(() => {\n this.reload(true);\n return EMPTY;\n }),\n ),\n ),\n switchMap(({ type, object: resource }) => {\n switch (type) {\n case WatchEvent.Added: {\n return of(this._create(resource));\n }\n case WatchEvent.Modified: {\n return of(this._update(resource));\n }\n case WatchEvent.Deleted: {\n return of(this._delete(resource));\n }\n default: {\n return EMPTY;\n }\n }\n }),\n );\n }\n}\n\nfunction defaultInsert<T extends KubernetesResource>(\n items: T[],\n res: T,\n hasMore: boolean,\n) {\n for (let i = 0; i < items.length; i++) {\n const compare = resourceCompare(res, items[i]);\n if (compare === 0) {\n return items.map((item, index) => (index === i ? res : item));\n }\n if (compare < 0) {\n return [...items.slice(0, i), res, ...items.slice(i)];\n }\n }\n\n return hasMore ? items : [...items, res];\n}\n\nfunction resourceCompare(a: KubernetesResource, b: KubernetesResource) {\n const nsCompare =\n a.metadata.namespace?.localeCompare(b.metadata.namespace) ?? 0;\n return nsCompare === 0\n ? a.metadata.name.localeCompare(b.metadata.name)\n : nsCompare;\n}\n","import { WatchAPIResponse, WatchEvent } from '@alauda-fe/dynamic-plugin-sdk';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { Signal, inject } from '@angular/core';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { ActivatedRoute, Params, Router } from '@angular/router';\nimport {\n NEVER,\n Observable,\n Subject,\n catchError,\n filter,\n interval,\n isObservable,\n map,\n of,\n startWith,\n switchMap,\n switchScan,\n take,\n withLatestFrom,\n} from 'rxjs';\n\nimport { DOWNGRADE_WATCH_ENABLED, DOWNGRADE_WATCH_POLLING } from '../constants';\nimport { KubernetesResource, KubernetesResourceList, Status } from '../types';\nimport { publishRef } from '../utils';\n\nexport class K8SResourcePagedList<\n R extends KubernetesResource = KubernetesResource,\n P = unknown,\n> {\n private readonly reload$$ = new Subject<void>();\n private readonly addedUid = new Set<string>();\n private readonly deletedUid = new Set<string>();\n\n params$ = isObservable(this.config.params)\n ? this.config.params\n : toObservable(this.config.params);\n\n loadState$ =\n this.config.watcher && !DOWNGRADE_WATCH_ENABLED\n ? this.loadStateWithWatcher()\n : this.config.watcher || this.config.polling\n ? this.loadStateWithPolling()\n : this.sourceLoadState();\n\n loading$ = this.loadState$.pipe(map(state => state.loading));\n items$ = this.loadState$.pipe(map(state => state.items));\n totalItems$ = this.loadState$.pipe(map(state => state.totalItems));\n loadError$ = this.loadState$.pipe(map(state => state.loadError));\n\n $loading = toSignal(this.loading$);\n $items = toSignal(this.items$);\n $totalItems = toSignal(this.totalItems$);\n $loadError = toSignal(this.loadError$);\n\n constructor(private readonly config: PagedListConfig<R, P>) {}\n\n reload() {\n this.reload$$.next();\n }\n\n private sourceLoadState() {\n return this.params$.pipe(\n map(parseListParams),\n switchMap(({ listParams, extraParams }) => {\n return this.reload$$.pipe(\n startWith(null),\n switchMap((): Observable<LoadState<R>> => {\n return this.config.fetcher(listParams, extraParams).pipe(\n map(list => ({\n loading: false,\n loadSuccess: true,\n items: list.items ?? [],\n totalItems: list.metadata.totalItems ?? 0,\n })),\n startWith({\n loading: true,\n loadSuccess: false,\n items: [],\n totalItems: 0,\n }),\n catchError((err: Status | HttpErrorResponse) =>\n of({\n loading: false,\n loadSuccess: false,\n loadError: err,\n items: [],\n totalItems: 0,\n }),\n ),\n );\n }),\n );\n }),\n publishRef(),\n );\n }\n\n private loadStateWithPolling(): Observable<LoadState<R>> {\n return this.sourceLoadState().pipe(\n switchMap(sourceState =>\n sourceState.loadSuccess\n ? interval(this.config.polling || DOWNGRADE_WATCH_POLLING).pipe(\n withLatestFrom(this.params$),\n map(([_, params]) => parseListParams(params)),\n switchMap(({ listParams, extraParams }) =>\n this.config.fetcher(listParams, extraParams).pipe(\n map(list => ({\n ...sourceState,\n items: list.items,\n totalItems: list.metadata.totalItems,\n })),\n catchError(() => NEVER),\n ),\n ),\n startWith(sourceState),\n )\n : of(sourceState),\n ),\n publishRef(),\n );\n }\n\n private loadStateWithWatcher(): Observable<LoadState<R>> {\n return this.sourceLoadState().pipe(\n switchMap(sourceState =>\n sourceState.loadSuccess\n ? this.params$.pipe(\n take(1),\n switchMap(params => {\n const watchParams = parseListParams({\n keyword: params.keyword,\n extra: params.extra,\n });\n const fetchParams = parseListParams(params);\n return this.config\n .watcher(watchParams.listParams, watchParams.extraParams)\n .pipe(\n filter(({ type, object }) => {\n switch (type) {\n case WatchEvent.Added: {\n if (this.addedUid.has(object.metadata.uid)) {\n return false;\n }\n this.addedUid.add(object.metadata.uid);\n return true;\n }\n case WatchEvent.Deleted: {\n if (this.deletedUid.has(object.metadata.uid)) {\n return false;\n }\n this.deletedUid.add(object.metadata.uid);\n return true;\n }\n default: {\n return true;\n }\n }\n }),\n switchScan((state, { type, object }) => {\n switch (type) {\n case WatchEvent.Modified: {\n return of({\n ...state,\n items: state.items.map(item =>\n item.metadata.uid === object.metadata.uid\n ? object\n : item,\n ),\n });\n }\n case WatchEvent.Added:\n case WatchEvent.Deleted: {\n return this.config\n .fetcher(\n fetchParams.listParams,\n fetchParams.extraParams,\n )\n .pipe(\n map(list => ({\n ...state,\n items: list.items,\n totalItems: list.metadata.totalItems,\n })),\n catchError(() => NEVER),\n );\n }\n default: {\n return NEVER;\n }\n }\n }, sourceState),\n );\n }),\n startWith(sourceState),\n )\n : of(sourceState),\n ),\n publishRef(),\n );\n }\n}\n\nexport interface PagedListConfig<R, P> {\n params: Signal<ListFetchParams<P>> | Observable<ListFetchParams<P>>;\n fetcher: (\n listParams: FetchSeed,\n extraParams: P,\n ) => Observable<KubernetesResourceList<R>>;\n watcher?: (\n listParams: FetchSeed,\n extraParams: P,\n ) => Observable<WatchAPIResponse<R>>;\n polling?: number;\n}\n\nexport interface ListFetchParams<P = never> {\n pageIndex?: number | string;\n pageSize?: number | string;\n sortField?: string;\n sortOrder?: 'asc' | 'desc';\n keyword?: string;\n fieldSelector?: string;\n labelSelector?: string;\n extra?: P;\n}\n\nexport interface FetchSeed extends Record<string, string> {\n limit?: string;\n continue?: string;\n fieldSelector?: string;\n}\n\ninterface LoadState<R> {\n items: R[];\n totalItems: number;\n loading: boolean;\n loadSuccess: boolean;\n loadError?: HttpErrorResponse | Status;\n}\n\nexport function extractPagedListParams<P>(\n defaultParams: ListFetchParams = {},\n extraParams?: (queryParams: Params) => P,\n): Readonly<{\n stream: () => Observable<ListFetchParams<P>>;\n signal: () => Signal<ListFetchParams<P>>;\n}> {\n const route = inject(ActivatedRoute);\n const params$ = route.queryParams.pipe(\n map(params => ({\n pageIndex: 0,\n pageSize: 20,\n ...defaultParams,\n ...(params.pageIndex ? { pageIndex: params.pageIndex } : {}),\n ...(params.pageSize ? { pageSize: params.pageSize } : {}),\n ...(params.keyword ? { keyword: params.keyword } : {}),\n ...(params.sortField ? { sortField: params.sortField } : {}),\n ...(params.sortOrder ? { sortOrder: params.sortOrder } : {}),\n ...(params.fieldSelector ? { fieldSelector: params.fieldSelector } : {}),\n ...(params.labelSelector ? { labelSelector: params.labelSelector } : {}),\n ...(extraParams ? { extra: extraParams(params) } : {}),\n })),\n );\n\n return {\n stream: () => params$,\n signal: () => toSignal(params$),\n };\n}\n\nexport function queryListParams() {\n const router = inject(Router);\n const route = inject(ActivatedRoute);\n\n return (queryParams: Params) => {\n router.navigate(['./'], {\n relativeTo: route,\n queryParamsHandling: 'merge',\n queryParams,\n });\n };\n}\n\nfunction parseListParams<P>({\n pageIndex,\n pageSize,\n sortField,\n sortOrder,\n keyword,\n fieldSelector: originFieldSelector,\n labelSelector,\n extra: extraParams,\n}: ListFetchParams<P>) {\n const search = keyword ? `search=${keyword}` : '';\n const sortBy = sortField\n ? `sortby=${sortOrder === 'desc' ? '-' : ''}${sortField}`\n : '';\n const fieldSelector = [search, sortBy, originFieldSelector]\n .filter(v => !!v)\n .join(',');\n return {\n listParams: {\n limit: (pageSize || 20) + '',\n continue: +(pageIndex || 0) * +(pageSize || 20) + '',\n ...(labelSelector ? { labelSelector } : {}),\n ...(fieldSelector ? { fieldSelector } : {}),\n } as FetchSeed,\n extraParams,\n };\n}\n","/**\n * [[include:k8s-resource-list/README.md]]\n * @module k8s-resource-list\n * @preferred\n */\n/** imports */\nimport {\n K8SResourceListFooterComponent,\n K8sListFooterNoDataDirective,\n K8sListFooterLoadingErrorDirective,\n} from './footer/component';\n\nexport * from './footer/component';\nexport * from './k8s-resource-list';\nexport * from './types';\nexport * from './utils';\n\nexport * from './k8s-resource-paged-list';\n\nexport const K8S_RESOURCE_LIST_MODULE = [\n K8SResourceListFooterComponent,\n K8sListFooterNoDataDirective,\n K8sListFooterLoadingErrorDirective,\n] as const;\n","import {\n DialogRef,\n DIALOG_DATA,\n DialogModule,\n FormModule,\n ButtonModule,\n InputModule,\n} from '@alauda/ui';\nimport {\n K8sApiService,\n TranslatePipe,\n K8sResourceDefinition,\n K8S_UTIL_PIPES_MODULE,\n K8sUtilService,\n ResourceType,\n} from '@alauda-fe/dynamic-plugin-sdk';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Inject } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { snakeCase } from 'lodash-es';\nimport { BehaviorSubject, finalize } from 'rxjs';\nimport { DeepPartial } from 'ts-essentials/dist/deep-partial';\n\nimport { DESCRIPTION } from '../../constants';\nimport { KubernetesResource } from '../../types';\n\n@Component({\n standalone: true,\n templateUrl: 'template.html',\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n AsyncPipe,\n ButtonModule,\n DialogModule,\n InputModule,\n FormModule,\n FormsModule,\n TranslatePipe,\n K8S_UTIL_PIPES_MODULE,\n ],\n})\nexport class UpdateDescriptionDialogComponent<T extends KubernetesResource> {\n description = this.k8sUtil.getDescription(this.data.resource);\n\n confirming$$ = new BehaviorSubject(false);\n\n constructor(\n private readonly dialogRef: DialogRef,\n private readonly k8sApi: K8sApiService,\n private readonly k8sUtil: K8sUtilService,\n @Inject(DIALOG_DATA)\n public data: {\n definition?: K8sResourceDefinition;\n /**\n * @deprecated use `definition` instead\n */\n type?: ResourceType;\n cluster?: string;\n resource: T;\n },\n ) {}\n\n confirm() {\n this.confirming$$.next(true);\n this.k8sApi\n .patchResource<T>({\n ...(this.data.definition\n ? {\n definition: this.data.definition,\n }\n : {\n type:\n this.data.type ||\n (snakeCase(\n this.data.resource.kind,\n ).toUpperCase() as ResourceType),\n }),\n cluster: this.data.cluster,\n resource: this.data.resource,\n part: {\n metadata: {\n annotations: {\n [this.k8sUtil.normalizeType(DESCRIPTION)]: this.description,\n },\n },\n } as DeepPartial<T>,\n })\n .pipe(finalize(() => this.confirming$$.next(false)))\n .subscribe(resource => this.dialogRef.close(resource));\n }\n}\n","<aui-dialog-header>\n {{ 'update_description' | translate }}\n</aui-dialog-header>\n<aui-dialog-content>\n <aui-form-item>\n <label auiFormItemLabel>\n {{ 'name' | translate }}\n </label>\n {{ data.resource | aclName }}\n </aui-form-item>\n <aui-form-item class=\"last-form-item-no-margin\">\n <label auiFormItemLabel>\n {{ 'description' | translate }}\n </label>\n <textarea\n aui-input\n name=\"description\"\n [(ngModel)]=\"description\"\n ></textarea>\n </aui-form-item>\n</aui-dialog-content>\n<aui-dialog-footer>\n <button\n aui-button=\"primary\"\n [loading]=\"confirming$$ | async\"\n [disabled]=\"confirming$$ | async\"\n (click)=\"confirm()\"\n >\n {{ 'update' | translate }}\n </button>\n <button\n aui-button\n auiDialogClose\n >\n {{ 'cancel' | translate }}\n </button>\n</aui-dialog-footer>\n","import {\n DialogRef,\n DIALOG_DATA,\n ButtonModule,\n DialogModule,\n InputModule,\n FormModule,\n} from '@alauda/ui';\nimport {\n K8sApiService,\n K8sResourceDefinition,\n K8sUtilService,\n K8S_UTIL_PIPES_MODULE,\n TRANSLATE_MODULE,\n} from '@alauda-fe/dynamic-plugin-sdk';\nimport { AsyncPipe, NgIf } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Inject } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { BehaviorSubject, finalize } from 'rxjs';\nimport { DeepPartial } from 'ts-essentials/dist/deep-partial';\n\nimport { DISPLAY_NAME } from '../../constants';\nimport { KubernetesResource } from '../../types';\n\n@Component({\n standalone: true,\n templateUrl: 'template.html',\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n AsyncPipe,\n ButtonModule,\n DialogModule,\n NgIf,\n InputModule,\n FormModule,\n FormsModule,\n TRANSLATE_MODULE,\n K8S_UTIL_PIPES_MODULE,\n ],\n})\nexport class UpdateDisplayNameDialogComponent<T extends KubernetesResource> {\n displayName = this.k8sUtil.getDisplayName(this.data.resource);\n\n confirming$$ = new BehaviorSubject(false);\n\n constructor(\n private readonly dialogRef: DialogRef,\n private readonly k8sApi: K8sApiService,\n private readonly k8sUtil: K8sUtilService,\n @Inject(DIALOG_DATA)\n public data: {\n definition?: K8sResourceDefinition;\n cluster?: string;\n resource: T;\n validateMaxLength?: boolean;\n },\n ) {}\n\n confirm() {\n this.confirming$$.next(true);\n this.k8sApi\n .patchResource<T>({\n definition: this.data.definition,\n cluster: this.data.cluster,\n resource: this.data.resource,\n part: {\n metadata: {\n annotations: {\n [this.k8sUtil.normalizeType(DISPLAY_NAME)]: this.displayName,\n },\n },\n } as DeepPartial<T>,\n })\n .pipe(finalize(() => this.confirming$$.next(false)))\n .subscribe(resource => this.dialogRef.close(resource));\n }\n}\n","<aui-dialog-header>\n {{ 'update_display_name' | translate }}\n</aui-dialog-header>\n<aui-dialog-content>\n <aui-form-item>\n <label auiFormItemLabel>\n {{ 'name' | translate }}\n </label>\n {{ data.resource | aclName }}\n </aui-form-item>\n <aui-form-item class=\"last-form-item-no-margin\">\n <label auiFormItemLabel>\n {{ 'display_name' | translate }}\n </label>\n <input\n *ngIf=\"!data.validateMaxLength; else validateMaxLength\"\n aui-input\n name=\"displayName\"\n autocomplete=\"off\"\n [(ngModel)]=\"displayName\"\n />\n <ng-template #validateMaxLength>\n <input\n aui-input\n name=\"displayName\"\n autocomplete=\"off\"\n [(ngModel)]=\"displayName\"\n [maxlength]=\"64\"\n />\n </ng-template>\n </aui-form-item>\n</aui-dialog-content>\n<aui-dialog-footer>\n <button\n aui-button=\"primary\"\n [loading]=\"confirming$$ | async\"\n [disabled]=\"confirming$$ | async\"\n (click)=\"confirm()\"\n >\n {{ 'update' | translate }}\n </button>\n <button\n aui-button\n auiDialogClose\n >\n {{ 'cancel' | translate }}\n </button>\n</aui-dialog-footer>\n","import { Directive, inject } from '@angular/core';\nimport { FormArray, ValidatorFn } from '@angular/forms';\nimport { BaseResourceFormComponent } from 'ng-resource-form-util';\n\nimport { ValidateRowDuplicateService } from '../services/form-row-duplicate/form-row-duplicate.service';\nimport { StringMap } from '../types';\n\nexport type KeyValueTuple = [string, string];\n\nconst missingKeyValidator: ValidatorFn = control => {\n const [key, value] = control.value;\n return value && !key ? { keyIsMissing: true } : null;\n};\n\n// 用以Form级别的键值映射对象的修改.\n// 这个表单有些特别. 内部实现是以FormArray实现, 但对外暴露的是一个key->value对象.\n@Directive({\n standalone: true,\n})\nexport class BaseStringMapFormComponent extends BaseResourceFormComponent<\n StringMap,\n KeyValueTuple[],\n FormArray\n> {\n rowDupService = inject(ValidateRowDuplicateService);\n\n createForm() {\n return this.fb.array([]);\n }\n\n override getDefaultFormModel(): KeyValueTuple[] {\n return [];\n }\n\n override adaptResourceModel(resource: StringMap) {\n let newFormModel = Object.entries(resource || {});\n if (newFormModel.length === 0) {\n newFormModel = this.getDefaultFormModel();\n }\n return newFormModel;\n }\n\n override adaptFormModel(formModel: KeyValueTuple[]) {\n return formModel\n .filter(row => !!row[0])\n .reduce((obj, [k, v]) => ({ ...obj, [k]: v }), {});\n }\n\n override getOnFormArrayResizeFn() {\n return () => this.createNewControl();\n }\n\n add(index = this.form.length) {\n this.form.insert(index, this.getOnFormArrayResizeFn()());\n this.cdr.markForCheck();\n }\n\n remove(index: number) {\n this.form.removeAt(index);\n this.cdr.markForCheck();\n this.form.controls.forEach(c => c.updateValueAndValidity());\n }\n\n protected getPreviousKeys(index: number) {\n return this.formModel\n .slice(0, index)\n .map(([key]) => key)\n .filter(key => !!key);\n }\n\n protected getKeyValidators(): ValidatorFn | ValidatorFn[] {\n return [];\n }\n\n protected getValueValidators(): ValidatorFn | ValidatorFn[] {\n return [];\n }\n\n protected createNewControl() {\n return this.fb.array(\n [\n ['', this.getKeyValidators()],\n ['', this.getValueValidators()],\n ],\n [\n missingKeyValidator,\n (control: FormArray) => {\n if (control.controls[0].errors) {\n return {\n key: control.controls[0].errors,\n };\n }\n if (control.controls[1].errors) {\n return {\n value: control.controls[1].errors,\n };\n }\n return null;\n },\n this.rowDupService.createFormArrayValidator({\n rowKeys: [{ key: ['0'] }],\n formArray: this.form,\n }),\n ],\n );\n }\n}\n","import { ButtonModule, IconModule, rgbColor, TooltipModule } from '@alauda/ui';\nimport { TranslatePipe } from '@alauda-fe/dynamic-plugin-sdk';\nimport { AsyncPipe, NgForOf, NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n Directive,\n EventEmitter,\n Injector,\n Input,\n OnDestroy,\n Output,\n QueryList,\n TemplateRef,\n} from '@angular/core';\nimport {\n AbstractControl,\n FormArray,\n FormGroup,\n FormGroupDirective,\n NgForm,\n} from '@angular/forms';\nimport { debounceTime, EMPTY, map, merge, startWith, Subject } from 'rxjs';\n\nimport { ZeroStateComponent } from '../../components';\nimport { EFFECT_DIRECTIVE_MODULE } from '../../directives';\nimport { PurePipe } from '../../pipes/pure.pipe';\n\nexport const ARRAY_TABLE_FORM_ERROR_BG = rgbColor('r-6');\n\nexport const rowBackgroundColorFn = <T extends AbstractControl>({\n invalid,\n}: T): string => (invalid ? ARRAY_TABLE_FORM_ERROR_BG : '');\n\nexport const noShowRowError = () => false;\n\n@Directive({\n selector: '[aclArrayFormTableHeader]',\n standalone: true,\n})\nexport class ArrayFormTableHeaderDirective {\n constructor(public templateRef: TemplateRef<any>) {}\n}\n\n@Directive({\n selector: '[aclArrayFormTableRowError]',\n standalone: true,\n})\nexport class ArrayFormTableRowErrorDirective {\n constructor(public templateRef: TemplateRef<any>) {}\n}\n\n@Directive({\n selector: '[aclArrayFormTableRow]',\n standalone: true,\n})\nexport class ArrayFormTableRowDirective {\n constructor(public templateRef: TemplateRef<any>) {}\n}\n\n@Directive({\n selector: '[aclArrayFormTableZeroState]',\n standalone: true,\n})\nexport class ArrayFormTableZeroStateDirective {\n constructor(public templateRef: TemplateRef<any>) {}\n}\n\n@Directive({\n selector: '[aclArrayFormTableRowControl]',\n standalone: true,\n})\nexport class ArrayFormTableRowControlDirective {\n constructor(public templateRef: TemplateRef<any>) {}\n}\n\n@Directive({\n selector: '[aclArrayFormTableRowSeparator]',\n standalone: true,\n})\nexport class ArrayFormTableRowSeparatorDirective {\n constructor(public templateRef: TemplateRef<any>) {}\n}\n\n@Directive({\n selector: '[aclArrayFormTableFooter]',\n standalone: true,\n})\nexport class ArrayFormTableFooterDirective {\n constructor(public templateRef: TemplateRef<any>) {}\n}\n\n// 递归验证 control 是否有问题,group 内部可能会有嵌套的情况\nfunction _isFormControlInvalid(control: AbstractControl) {\n if (control instanceof FormGroup || control instanceof FormArray) {\n return (\n (control.dirty && !!control.errors) ||\n Object.values(control.controls).some(_isFormControlInvalid)\n );\n }\n return control.dirty && control.invalid;\n}\n\n@Component({\n selector: 'acl-array-form-table',\n templateUrl: './template.html',\n // Since rows maybe updated without changing reference, we use Default here:\n // eslint-disable-next-line @angular-eslint/prefer-on-push-component-change-detection\n changeDetection: ChangeDetectionStrategy.Default,\n imports: [\n NgTemplateOutlet,\n TooltipModule,\n ZeroStateComponent,\n ButtonModule,\n IconModule,\n NgIf,\n NgForOf,\n PurePipe,\n AsyncPipe,\n TranslatePipe,\n EFFECT_DIRECTIVE_MODULE,\n ],\n standalone: true,\n})\nexport class ArrayFormTableComponent implements OnDestroy {\n @ContentChild(ArrayFormTableHeaderDirective, {\n read: TemplateRef,\n static: true,\n })\n headerTemplate: TemplateRef<any>;\n\n // 用户可以提供多行模板, 但只有第一行有控制按键.\n @ContentChildren(ArrayFormTableRowDirective, { read: TemplateRef })\n rowTemplates: QueryList<TemplateRef<any>>;\n\n @ContentChild(ArrayFormTableRowErrorDirective, { read: TemplateRef })\n rowErrorTemplate: TemplateRef<any>;\n\n /**\n * 表单默认提供删除按键; 假如用户提供模板, 将使用用户的模板\n */\n @ContentChild(ArrayFormTableRowControlDirective, {\n read: TemplateRef,\n static: true,\n })\n rowControlTemplate: TemplateRef<any>;\n\n /**\n * 表单默认提供添加按键; 假如用户提供模板, 将使用用户的模板\n */\n @ContentChild(ArrayFormTableFooterDirective, {\n read: TemplateRef,\n static: true,\n })\n footerTemplate: TemplateRef<any>;\n\n /**\n * 表单默认为空数据提供无xxx的模板; 假如用户提供模板, 将使用用户的模板\n */\n @ContentChild(ArrayFormTableZeroStateDirective, {\n read: TemplateRef,\n static: false,\n })\n zeroStateTemplate: TemplateRef<any>;\n\n /**\n * 行之间的分隔区域自定义模板\n */\n @ContentChild(ArrayFormTableRowSeparatorDirective, {\n read: TemplateRef,\n static: false,\n })\n separatorTemplate: TemplateRef<any>;\n\n /**\n * 行之间的分隔区域,默认关闭\n */\n @Input()\n rowSeparator = false;\n\n @ContentChild(FormGroupDirective, { static: false })\n ngFormGroupDirective: FormGroupDirective;\n\n // Data context for rows.\n @Input()\n rows: any[];\n\n @Input()\n resourceName = null as string;\n\n @Input()\n resourceNameTranslated: string;\n\n @Output()\n add = new EventEmitter<void>();\n\n @Output()\n remove = new EventEmitter<number>(); // Returns the index to be removed\n\n @Input()\n readonly: boolean | '' = false;\n\n @Input()\n addDisabled: boolean | '' = false;\n\n @Input()\n actionColumnDivider: boolean | '' = false;\n\n @Input()\n showZeroState = true;\n\n get formDirective() {\n return (\n this.injector.get(FormGroupDirective, null) ||\n this.injector.get(NgForm, null)\n );\n }\n\n /**\n * 自定义是否展示错误内容\n * 例如 control 是 FormGroup,只有在内部子 control 错误时才需要展示错误内容\n */\n @Input()\n showRowError<T extends AbstractControl>(\n control: T,\n formDirective?: NgForm | FormGroupDirective,\n ): boolean {\n if (formDirective) {\n return (\n control.invalid &&\n (formDirective.submitted || _isFormControlInvalid(control))\n );\n }\n\n return false;\n }\n\n /**\n * @deprecated use {@link showRowError} instead\n */\n @Input()\n rowBackgroundColorFn<T extends AbstractControl>(\n control: T,\n formDirective?: NgForm | FormGroupDirective,\n ): string {\n return this.showRowError(control, formDirective)\n ? ARRAY_TABLE_FORM_ERROR_BG\n : null;\n }\n\n @Input()\n minRow = 0;\n\n @Input()\n minRowTooltip = '';\n\n @Input()\n maxRow = Infinity;\n\n @Input()\n maxRowTooltip = '';\n\n destroy$$ = new Subject<void>();\n\n cdr = this.injector.get(ChangeDetectorRef);\n\n constructor(public injector: Injector) {}\n\n ngOnDestroy(): void {\n this.destroy$$.next();\n this.destroy$$.complete();\n }\n\n shouldShowRowError = (control: AbstractControl) => {\n const { statusChanges = EMPTY, status } = control;\n\n return (\n this.formDirective\n ? merge(statusChanges, this.formDirective.ngSubmit)\n : statusChanges\n ).pipe(\n startWith(status),\n debounceTime(0),\n map(() => this.showRowError(control, this.formDirective)),\n );\n };\n}\n","<table\n class=\"acl-array-form-table\"\n [class.acl-array-form-table__readonly-mode]=\"readonly\"\n>\n <thead *ngIf=\"headerTemplate\">\n <tr>\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n <th\n *ngIf=\"!readonly && minRow !== maxRow\"\n class=\"acl-array-form-table__action-col\"\n ></th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let row of rows; let index = index\">\n <tr\n *ngFor=\"let rowTemplate of rowTemplates; let templateIndex = index\"\n [class.acl-array-form-table__row-error]=\"\n row | pure: shouldShowRowError | async\n \"\n [attr.rowtemplateindex]=\"templateIndex\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n rowTemplate;\n context: { $implicit: row, index: index }\n \"\n ></ng-container>\n <td\n *ngIf=\"templateIndex === 0 && !readonly && minRow !== maxRow\"\n class=\"acl-array-form-table__action-col\"\n [class.acl-array-form-table__action-col-divider]=\"actionColumnDivider\"\n >\n <ng-container *ngIf=\"rowControlTemplate\">\n <ng-container\n *ngTemplateOutlet=\"\n rowControlTemplate;\n context: { $implicit: row, index: index }\n \"\n ></ng-container>\n </ng-container>\n <div\n [auiTooltip]=\"minRowTooltip\"\n [auiTooltipDisabled]=\"rows?.length > minRow || !minRowTooltip\"\n >\n <button\n *ngIf=\"!rowControlTemplate\"\n aui-button=\"text\"\n type=\"button\"\n [disabled]=\"rows?.length <= minRow\"\n [square]=\"true\"\n [plain]=\"true\"\n (click)=\"remove.emit(index)\"\n >\n <aui-icon icon=\"minus_circle\"></aui-icon>\n </button>\n </div>\n </td>\n </tr>\n\n <tr\n *ngIf=\"rowErrorTemplate && !readonly\"\n [class.acl-array-form-table__row-error]=\"\n row | pure: shouldShowRowError | async\n \"\n [hidden]=\"!(row | pure: shouldShowRowError | async)\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n rowErrorTemplate;\n context: { $implicit: row, index: index }\n \"\n ></ng-container>\n </tr>\n <ng-container\n *ngIf=\"\n (rowSeparator || separatorTemplate) &&\n rows?.length > 1 &&\n index !== rows?.length - 1\n \"\n >\n <tr class=\"acl-array-form-table__separator\">\n <td colspan=\"100\">\n @if (separatorTemplate) {\n <ng-container\n *ngTemplateOutlet=\"separatorTemplate\"\n ></ng-container>\n } @else {\n <div class=\"tw-h-[8px]\"></div>\n }\n </td>\n </tr>\n </ng-container>\n </ng-container>\n\n <tr *ngIf=\"(!rows || rows.length === 0) && showZeroState\">\n <td\n colspan=\"100\"\n style=\"padding: unset\"\n >\n <acl-zero-state\n *ngIf=\"!zeroStateTemplate\"\n [zeroState]=\"true\"\n [resourceName]=\"resourceName\"\n [resourceNameTranslated]=\"resourceNameTranslated\"\n [minHeight]=\"48\"\n ></acl-zero-state>\n\n <ng-container *ngIf=\"zeroStateTemplate\">\n <ng-container *ngTemplateOutlet=\"zeroStateTemplate\"></ng-container>\n </ng-container>\n </td>\n </tr>\n\n <tr\n *ngIf=\"!readonly && minRow !== maxRow\"\n class=\"acl-array-form-table--row-action\"\n >\n <td colspan=\"100\">\n <div class=\"acl-array-form-table__bottom-control-buttons\">\n <ng-container *ngIf=\"footerTemplate\">\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n </ng-container>\n <div\n *ngIf=\"!footerTemplate\"\n class=\"tw-flex tw-w-full\"\n [auiTooltip]=\"maxRowTooltip\"\n [auiTooltipDisabled]=\"rows?.length < maxRow || !maxRowTooltip\"\n >\n <button\n aui-button=\"primary\"\n type=\"button\"\n [plain]=\"true\"\n size=\"mini\"\n (click)=\"add.emit()\"\n [disabled]=\"rows?.length >= maxRow || addDisabled\"\n >\n <aui-icon icon=\"plus_circle\"></aui-icon>\n {{ 'add' | translate }}\n </button>\n </div>\n </div>\n </td>\n </tr>\n </tbody>\n</table>\n","import {\n ArrayFormTableComponent,\n ArrayFormTableFooterDirective,\n ArrayFormTableHeaderDirective,\n ArrayFormTableRowControlDirective,\n ArrayFormTableRowDirective,\n ArrayFormTableRowErrorDirective,\n ArrayFormTableZeroStateDirective,\n ArrayFormTableRowSeparatorDirective,\n} from './component';\n\nexport const ARRAY_FORM_TABLE_MODULE = [\n ArrayFormTableComponent,\n ArrayFormTableFooterDirective,\n ArrayFormTableHeaderDirective,\n ArrayFormTableRowControlDirective,\n ArrayFormTableRowDirective,\n ArrayFormTableRowErrorDirective,\n ArrayFormTableZeroStateDirective,\n ArrayFormTableRowSeparatorDirective,\n];\n","import { ButtonModule, FormModule, IconModule, InputModule } from '@alauda/ui';\nimport { TranslatePipe } from '@alauda-fe/dynamic-plugin-sdk';\nimport { NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnInit,\n TemplateRef,\n} from '@angular/core';\nimport { FormArray, ReactiveFormsModule, ValidatorFn } from '@angular/forms';\nimport { sortBy } from 'lodash-es';\n\nimport { EFFECT_DIRECTIVE_MODULE } from '../../directives';\nimport { ERRORS_MAPPER_MODULE } from '../../form/errors-mapper';\nimport { ValidateRowDuplicateService } from '../../services/form-row-duplicate/form-row-duplicate.service';\nimport { StringMap } from '../../types';\nimport { ValueHook } from '../../utils';\nimport { BaseStringMapFormComponent } from '../base-string-map-form.component';\nimport { ARRAY_FORM_TABLE_MODULE } from '../form';\nimport { ArrayFormTableComponent } from '../form/component';\n\n@Component({\n selector: 'acl-key-value-form-table',\n templateUrl: 'template.html',\n styleUrls: ['styles.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ARRAY_FORM_TABLE_MODULE,\n ReactiveFormsModule,\n ArrayFormTableComponent,\n InputModule,\n NgIf,\n NgTemplateOutlet,\n TranslatePipe,\n ERRORS_MAPPER_MODULE,\n ButtonModule,\n IconModule,\n FormModule,\n EFFECT_DIRECTIVE_MODULE,\n ],\n standalone: true,\n providers: [ValidateRowDuplicateService],\n})\nexport class KeyValueFormTableComponent\n extends BaseStringMapFormComponent\n implements OnInit\n{\n @Input()\n resourceName: string;\n\n @Input()\n resourceNameTranslated: string;\n\n @Input()\n multiLineValue: boolean;\n\n @ValueHook(null, null, function (this: KeyValueFormTableComponent) {\n this.form?.controls.forEach((formArray: FormArray) => {\n const [key, value] = formArray.controls;\n key.setValidators(this.getKeyValidators());\n value.setValidators(this.getValueValidators());\n });\n })\n @Input()\n validator: {\n key?: ValidatorFn | ValidatorFn[];\n value?: ValidatorFn | ValidatorFn[];\n } = {\n key: [],\n value: [],\n };\n\n @Input()\n errorMapper: {\n key?: StringMap;\n value?: StringMap;\n } = {\n key: {},\n value: {},\n };\n\n @Input()\n placeholder: {\n key?: string;\n value?: string;\n };\n\n @Input()\n readonly: boolean;\n\n @Input()\n textKey: boolean;\n\n @Input()\n maxRow = Infinity;\n\n @Input()\n minRow = 0;\n\n @ValueHook<KeyValueFormTableComponent, 'readonlyKeys'>(Boolean)\n @Input()\n readonlyKeys: Array<string | RegExp> = [];\n\n @Input()\n zeroStateTemplate: TemplateRef<any>;\n\n isReadonly(key: string) {\n return this.readonlyKeys.some(toCheckKey => {\n if (!toCheckKey) {\n return false;\n }\n if (typeof toCheckKey === 'string') {\n return toCheckKey === key;\n }\n\n return toCheckKey.test(key);\n });\n }\n\n getDataValueByIndex(index: number) {\n return (this.form.at(index) as FormArray).at(1).value;\n }\n\n override adaptResourceModel(resource: { [key: string]: string }) {\n let newFormModel = Object.entries(resource || {});\n // 排序,先按字母排序,再把 readonly 的放前面\n newFormModel = sortBy(newFormModel, (arr: [string, string]) => arr[0]);\n newFormModel.sort((arr1: [string, string], arr2: [string, string]) => {\n const flag1 = this.isReadonly(arr1[0]);\n const flag2 = this.isReadonly(arr2[0]);\n if ((flag1 && flag2) || (!flag1 && !flag2)) {\n return 0;\n }\n return flag1 ? -1 : 1;\n });\n if (newFormModel.length === 0) {\n newFormModel = this.getDefaultFormModel();\n }\n\n return newFormModel;\n }\n\n override getKeyValidators() {\n return this.validator?.key;\n }\n\n override getValueValidators() {\n return this.validator?.value;\n }\n\n isLabelReadonly(index: number) {\n const formArray = this.form.controls[index] as FormArray;\n return formArray.valid && this.isReadonly(formArray.controls[0].value);\n }\n}\n","<acl-array-form-table\n [resourceName]=\"resourceName\"\n [resourceNameTranslated]=\"resourceNameTranslated\"\n (add)=\"add(form.length)\"\n (remove)=\"remove($event)\"\n [rows]=\"form.controls\"\n [formGroup]=\"$any(form)\"\n [readonly]=\"readonly\"\n [maxRow]=\"maxRow\"\n [minRow]=\"minRow\"\n>\n <ng-container *aclArrayFormTableHeader>\n <th style=\"width: 33%\">{{ 'key' | translate }}</th>\n <th style=\"width: 66%\">{{ 'value' | translate }}</th>\n </ng-container>\n\n <!-- Input row -->\n <ng-container\n *aclArrayFormTableRow=\"let control; let index = index\"\n [formGroupName]=\"index\"\n >\n <td>\n <input\n [hidden]=\"textKey\"\n (blur)=\"onBlur()\"\n aui-input\n [readonly]=\"readonly || isLabelReadonly(index)\"\n formControlName=\"0\"\n [placeholder]=\"placeholder?.key || ('key' | translate)\"\n />\n <ng-container *ngIf=\"textKey\">\n {{ control.get('0').value }}\n </ng-container>\n </td>\n\n <td>\n <input\n *ngIf=\"!multiLineValue\"\n (blur)=\"onBlur()\"\n aui-input\n [readonly]=\"readonly || isLabelReadonly(index)\"\n formControlName=\"1\"\n [placeholder]=\"placeholder?.value || ('value' | translate)\"\n />\n <div\n *ngIf=\"multiLineValue\"\n class=\"textarea-wrapper\"\n [attr.data-value]=\"getDataValueByIndex(index)\"\n >\n <textarea\n (blur)=\"onBlur()\"\n [readonly]=\"readonly || isLabelReadonly(index)\"\n aui-input\n formControlName=\"1\"\n rows=\"1\"\n [placeholder]=\"placeholder?.value || ('value' | translate)\"\n ></textarea>\n </div>\n </td>\n </ng-container>\n\n <!-- Input error row -->\n <ng-container *aclArrayFormTableRowError=\"let control\">\n <td\n *ngIf=\"control.invalid\"\n colspan=\"3\"\n class=\"acl-table-form-error-hint\"\n >\n <ng-container *ngIf=\"control.errors?.keyIsMissing\">\n {{ 'k8s_resource_label_key_required' | translate }}\n </ng-container>\n\n <ng-container *ngIf=\"control.errors?.duplicateError\">\n {{ 'k8s_resource_label_key_duplicated' | translate }}\n </ng-container>\n\n <acl-errors-mapper\n auiFormItemError\n [errors]=\"control.errors?.key\"\n [errorsMapper]=\"errorMapper?.key\"\n ></acl-errors-mapper>\n <acl-errors-mapper\n auiFormItemError\n [errors]=\"control.errors?.value\"\n [errorsMapper]=\"errorMapper?.value\"\n ></acl-errors-mapper>\n </td>\n </ng-container>\n\n <ng-container *aclArrayFormTableRowControl=\"let item; let index = index\">\n <button\n [hidden]=\"readonly || isLabelReadonly(index)\"\n aui-button=\"text\"\n type=\"button\"\n [square]=\"true\"\n [plain]=\"true\"\n (click)=\"remove(index)\"\n >\n <aui-icon icon=\"minus_circle\"></aui-icon>\n </button>\n </ng-container>\n\n <ng-container *ngIf=\"zeroStateTemplate\">\n <ng-container *aclArrayFormTableZeroState>\n <ng-template [ngTemplateOutlet]=\"zeroStateTemplate\"></ng-template>\n </ng-container>\n </ng-container>\n</acl-array-form-table>\n","import {\n ButtonComponent,\n DIALOG_DATA,\n DialogModule,\n DialogRef,\n MessageService,\n} from '@alauda/ui';\nimport {\n isEqual,\n StringMap,\n TranslatePipe,\n TranslateService,\n} from '@alauda-fe/dynamic-plugin-sdk';\nimport { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Inject,\n OnDestroy,\n OnInit,\n Optional,\n} from '@angular/core';\nimport { FormsModule, ValidatorFn } from '@angular/forms';\nimport { cloneDeep } from 'lodash-es';\nimport {\n BehaviorSubject,\n EMPTY,\n Observable,\n Subject,\n from,\n catchError,\n switchMap,\n takeUntil,\n tap,\n} from 'rxjs';\n\nimport { KeyValueFormTableComponent } from '../../array-form-table/key-value-form/component';\n\nexport interface UpdateKeyValueDialogData<\n R = unknown,\n Context = unknown,\n T = StringMap,\n> {\n title?: string;\n keyValues?: T;\n confirmButton?: string;\n readonlyKeys?: Array<string | RegExp>;\n onUpdate?: (keyValues: T) => Promise<R> | Observable<R>;\n context?: Context;\n updateSuccessMsg?: string;\n updateFailMsg?: string;\n validator?: {\n key: ValidatorFn | ValidatorFn[];\n value?: ValidatorFn | ValidatorFn[];\n };\n errorMapper?: Record<string, unknown>;\n showMessage?: boolean;\n}\n\n@Component({\n standalone: true,\n templateUrl: './template.html',\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n DialogModule,\n KeyValueFormTableComponent,\n FormsModule,\n TranslatePipe,\n ButtonComponent,\n AsyncPipe,\n ],\n})\nexport class UpdateKeyValueDialogComponent<\n R = unknown,\n Context = unknown,\n T = StringMap,\n >\n implements OnInit, OnDestroy\n{\n readonly onUpdate$$ = new Subject<void>();\n\n readonly submitting$$ = new BehaviorSubject(false);\n\n private readonly originalKeyValues: T;\n\n keyValues: T;\n\n private readonly destroy$$ = new Subject<void>();\n\n constructor(\n private readonly dialogRef: DialogRef<\n UpdateKeyValueDialogComponent<R, Context, T>,\n UpdateKeyValueDialogData<R, Context, T>\n >,\n private readonly message: MessageService,\n private readonly translate: TranslateService,\n @Optional()\n @Inject(DIALOG_DATA)\n public data: UpdateKeyValueDialogData<R, Context, T> = {},\n ) {\n this.originalKeyValues = this.data.keyValues || ({} as T);\n this.keyValues = cloneDeep(this.originalKeyValues);\n }\n\n ngOnInit() {\n const { context, onUpdate, updateSuccessMsg, updateFailMsg, showMessage } =\n this.data;\n if (!onUpdate) {\n return;\n }\n this.onUpdate$$\n .pipe(\n takeUntil(this.destroy$$),\n tap(() => this.submitting$$.next(true)),\n switchMap(() => {\n // nothing changed\n if (isEqual(this.originalKeyValues, this.keyValues)) {\n this.dialogRef.close();\n return EMPTY;\n }\n return from(onUpdate.call(context, this.keyValues)).pipe(\n tap(() => {\n if (showMessage ?? true) {\n this.message.success(\n this.translate.get(updateSuccessMsg || 'update_succeeded'),\n );\n }\n this.submitting$$.next(false);\n this.dialogRef.close();\n }),\n catchError(() => {\n if (showMessage ?? true) {\n this.message.error(\n this.translate.get(updateFailMsg || 'update_failed'),\n );\n }\n this.submitting$$.next(false);\n return EMPTY;\n }),\n );\n }),\n )\n .subscribe();\n }\n\n ngOnDestroy() {\n this.destroy$$.next();\n this.destroy$$.complete();\n }\n}\n","<aui-dialog-header>\n {{ data.title || 'update' | translate }}\n</aui-dialog-header>\n<aui-dialog-content>\n <form\n #ngForm=\"ngForm\"\n (ngSubmit)=\"ngForm.valid && onUpdate$$.next()\"\n >\n <acl-key-value-form-table\n [(ngModel)]=\"keyValues\"\n [readonlyKeys]=\"data.readonlyKeys\"\n [validator]=\"data.validator\"\n [errorMapper]=\"data.errorMapper\"\n name=\"key-values\"\n ></acl-key-value-form-table>\n </form>\n</aui-dialog-content>\n<aui-dialog-footer>\n <button\n aui-button=\"primary\"\n [loading]=\"submitting$$ | async\"\n [disabled]=\"submitting$$ | async\"\n (click)=\"ngForm.onSubmit(null)\"\n >\n {{ data.confirmButton || 'update' | translate }}\n </button>\n <button\n aui-button\n type=\"button\"\n auiDialogClose\n >\n {{ 'cancel' | translate }}\n </button>\n</aui-dialog-footer>\n","import {\n K8sResourceDefinition,\n ResourceWriteParams,\n K8sUtilService,\n} from '@alauda-fe/dynamic-plugin-sdk';\nimport { Injectable, Injector } from '@angular/core';\nimport { cloneDeep, get } from 'lodash-es';\nimport { Observable, Subject, tap } from 'rxjs';\n\nimport {\n ANNOTATIONS,\n NAME,\n TRUE,\n LABELS,\n METADATA,\n PROJECT,\n} from '../constants';\nimport {\n getK8sResourceAnnotationErrorMapper,\n getK8sResourceLabelErrorMapper,\n k8sResourceAnnotationValidator,\n k8sResourceLabelValidator,\n} from '../form/validators/utils';\nimport { KubernetesResource, StringMap } from '../types';\n\nimport { UpdateDescriptionDialogComponent } from './update-description-dialog/component';\nimport { UpdateDisplayNameDialogComponent } from './update-display-name-dialog/component';\nimport {\n UpdateKeyValueDialogComponent,\n UpdateKeyValueDialogData,\n} from './update-key-value-dialog/component';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class K8sSharedUtilService<\n R extends string = string,\n> extends K8sUtilService<R> {\n constructor(injector: Injector) {\n super(injector);\n this.getProjectNames = this.getProjectNames.bind(this);\n }\n\n /**\n * 更新 Annotation 或 Label\n */\n updatePart<T extends KubernetesResource>(\n params: ResourceWriteParams<R, T> & {\n readonlyKeys?: Array<string | RegExp>;\n part: typeof ANNOTATIONS | typeof LABELS;\n getResourceSpec?: (stringMap: StringMap) => Record<string, unknown>;\n dialogClass?: string;\n },\n ) {\n const { part, resource, readonlyKeys, getResourceSpec, dialogClass } =\n params;\n const keyValues: StringMap = get(resource, `${METADATA}.${part}`, {});\n const updated$$ = new Subject<T>();\n this.dialog.open<\n UpdateKeyValueDialogComponent<T>,\n UpdateKeyValueDialogData<T>\n >(UpdateKeyValueDialogComponent, {\n data: {\n title: `update_${part}`,\n keyValues,\n readonlyKeys,\n validator:\n part === 'labels'\n ? k8sResourceLabelValidator\n : k8sResourceAnnotationValidator,\n errorMapper:\n part === 'labels'\n ? getK8sResourceLabelErrorMapper(this.translate)\n : getK8sResourceAnnotationErrorMapper(this.translate),\n updateSuccessMsg: `update_${part}_succeeded`,\n updateFailMsg: `update_${part}_failed`,\n onUpdate: results => {\n const checkedResults = cloneDeep(results);\n for (const key of Object.keys(keyValues)) {\n if (!(key in checkedResults)) {\n checkedResults[key] = null;\n }\n }\n return this.k8sApi[\n 'cluster' in params && params.cluster\n ? 'patchResource'\n : 'patchGlobalResource'\n ]({\n ...params,\n part: {\n // @ts-expect-error\n metadata: {\n [part]: checkedResults,\n },\n ...(getResourceSpec\n ? { spec: getResourceSpec(checkedResults) }\n : {}),\n },\n }).pipe(tap((_resource: T) => updated$$.next(_resource)));\n },\n },\n fitViewport: true,\n customClass: dialogClass,\n });\n return updated$$.asObservable();\n }\n\n updateDisplayName<T extends KubernetesResource>(\n {\n type,\n cluster,\n resource,\n definition,\n }: {\n definition?: K8sResourceDefinition;\n /**\n * @deprecated use `definition` instead\n */\n type?: R;\n cluster?: string;\n resource: T;\n },\n validateMaxLength = false,\n ) {\n return new Observable<T>(observer => {\n const dialogRef = this.dialog.open<UpdateDisplayNameDialogComponent<T>>(\n UpdateDisplayNameDialogComponent,\n {\n data: {\n definition,\n resource,\n cluster,\n type,\n validateMaxLength,\n },\n },\n );\n\n dialogRef.afterClosed().subscribe(updated => {\n if (updated) {\n observer.next(updated);\n }\n\n observer.complete();\n });\n });\n }\n\n updateDescription<T extends KubernetesResource>({\n type,\n cluster,\n resource,\n definition,\n }: {\n /**\n * @deprecated use `definition` instead\n */\n type?: R;\n definition?: K8sResourceDefinition;\n cluster?: string;\n resource: T;\n }) {\n return new Observable<T>(observer => {\n const dialogRef = this.dialog.open<UpdateDescriptionDialogComponent<T>>(\n UpdateDescriptionDialogComponent,\n {\n data: {\n resource,\n cluster,\n type,\n definition,\n },\n },\n );\n dialogRef.afterClosed().subscribe(updated => {\n if (updated) {\n observer.next(updated);\n }\n\n observer.complete();\n });\n });\n }\n\n /**\n * 单项目绑定切换至多项目绑定时,兼容之前的 project name 形式\n * 老格式 cpaas.io/project: \"ALL_ALL\" 或者 project.cpaas.io/name: \"ALL_ALL\"\n * 新格式 project.cpaas.io/ALL_ALL: \"true\"\n * @param {(KubernetesResource | string[])} resource\n * @returns\n * @memberof K8sUtilService\n */\n getProjectNames(resource: KubernetesResource | string[]) {\n if (Array.isArray(resource)) {\n return resource;\n }\n const projectLabelPrefix = `${PROJECT}.${this.baseDomain}/`;\n const labels = get(resource, [METADATA, LABELS], {});\n return Object.entries(labels)\n .reduce<string[]>((acc, [key, value]) => {\n if (key.startsWith(projectLabelPrefix)) {\n const projectName = key.slice(projectLabelPrefix.length);\n if (value === TRUE) {\n acc.push(projectName);\n } else if (projectName === NAME) {\n acc.push(value);\n }\n } else if (key === this.normalizeType(PROJECT)) {\n acc.push(value);\n }\n return acc;\n }, [])\n .filter(Boolean);\n }\n\n getProjectLabels(projects: string[], value = TRUE) {\n return projects?.reduce<StringMap>((acc, project) => {\n if (project) {\n Object.assign(acc, {\n [this.normalizeType(project, PROJECT)]: value,\n });\n }\n return acc;\n }, {});\n }\n}\n","import { K8sResourceDefinition } from '@alauda-fe/dynamic-plugin-sdk';\n\nimport { AIT_API_GROUP, COMMON_RESOURCE_DEFINITIONS } from '../constants';\n\nexport interface ManageResourceType {\n kind: string;\n definition: K8sResourceDefinition;\n kindAlias?: string;\n}\n\nexport const CONTROLLED_RESOURCE_TRANSLATIONS: ManageResourceType[] = [\n {\n kind: 'Application',\n definition: COMMON_RESOURCE_DEFINITIONS.OAM_APPLICATION,\n kindAlias: 'oam_application',\n },\n { kind: 'Application', definition: COMMON_RESOURCE_DEFINITIONS.APPLICATION },\n { kind: 'Deployment', definition: COMMON_RESOURCE_DEFINITIONS.DEPLOYMENT },\n { kind: 'DaemonSet', definition: COMMON_RESOURCE_DEFINITIONS.DAEMON_SET },\n { kind: 'StatefulSet', definition: COMMON_RESOURCE_DEFINITIONS.STATEFUL_SET },\n { kind: 'Job', definition: COMMON_RESOURCE_DEFINITIONS.JOB },\n { kind: 'CronJob', definition: COMMON_RESOURCE_DEFINITIONS.CRON_JOB },\n { kind: 'Service', definition: COMMON_RESOURCE_DEFINITIONS.SERVICE },\n { kind: 'Ingress', definition: COMMON_RESOURCE_DEFINITIONS.INGRESS },\n {\n kind: 'PersistentVolumeClaim',\n definition: COMMON_RESOURCE_DEFINITIONS.PERSISTENT_VOLUME_CLAIM,\n },\n { kind: 'ConfigMap', definition: COMMON_RESOURCE_DEFINITIONS.CONFIG_MAP },\n { kind: 'Secret', definition: COMMON_RESOURCE_DEFINITIONS.SECRET },\n {\n kind: 'HorizontalPodAutoscaler',\n definition: COMMON_RESOURCE_DEFINITIONS.HORIZONTAL_POD_AUTOSCALER,\n },\n {\n kind: 'PrometheusRule',\n definition: COMMON_RESOURCE_DEFINITIONS.PROMETHEUS_RULE,\n kindAlias: 'alarm',\n },\n {\n kind: 'MonitorDashboard',\n kindAlias: 'Monitor_Dashboard_New',\n definition: {\n apiGroup: 'ait.alauda.io',\n type: 'dashboards',\n apiVersion: 'v1alpha1',\n },\n },\n {\n kind: 'Dashboard',\n definition: {\n type: 'monitordashboards',\n apiVersion: 'v1alpha2',\n apiGroup: AIT_API_GROUP,\n },\n },\n {\n kind: 'ServiceMonitor',\n definition: COMMON_RESOURCE_DEFINITIONS.SERVICE_MONITOR,\n },\n];\n","import { inject, InjectionToken, Pipe, PipeTransform } from '@angular/core';\n\nimport { CONTROLLED_RESOURCE_TRANSLATIONS } from './constants';\n\nexport const K8S_RESOURCE_TRANSLATE_KEY = new InjectionToken<\n (type: string, apiGroup: string) => string\n>('K8S_RESOURCE_TRANSLATE_KEY', {\n providedIn: 'root',\n factory: () => defaultTransform,\n});\n\n@Pipe({\n name: 'aclK8sResourceTranslateKey',\n standalone: true,\n})\nexport class K8sResourceTranslateKeyPipe implements PipeTransform {\n private getKey = inject(K8S_RESOURCE_TRANSLATE_KEY);\n\n transform(type: string, apiGroup?: string): string {\n return this.getKey(type, apiGroup);\n }\n}\n\nfunction defaultTransform(type: string, group?: string) {\n const { kind, kindAlias } =\n CONTROLLED_RESOURCE_TRANSLATIONS.find(\n meta =>\n meta.definition.type === type &&\n (group === meta.definition.apiGroup ||\n (!group && !meta.definition.apiGroup)),\n ) || {};\n return kindAlias ?? kind?.toLocaleLowerCase() ?? '';\n}\n","interface ResourceMarkConfig {\n abbr: string;\n colors: {\n light: string;\n dark: string;\n };\n}\n\nconst RESOURCE_MARKS: Record<string, ResourceMarkConfig> = {\n Namespace: {\n abbr: 'NS',\n colors: { light: '#CFAF0F', dark: '#B59618' },\n },\n Project: {\n abbr: 'PR',\n colors: { light: '#2A5ADF', dark: '#2D54D3' },\n },\n Service: {\n abbr: 'SVC',\n colors: { light: '#CC9213', dark: '#CC9827' },\n },\n Prometheus: {\n abbr: 'PROM',\n colors: { light: '#8D4EDA', dark: '#9257DA' },\n },\n PrometheusRule: {\n abbr: 'PROR',\n colors: { light: '#722ED1', dark: '#6229BF' },\n },\n Dashboard: {\n abbr: 'DASH',\n colors: { light: '#3C4DC3', dark: '#4656C3' },\n },\n ServiceMonitor: {\n abbr: 'SVCM',\n colors: { light: '#C98612', dark: '#B77B22' },\n },\n Container: {\n abbr: 'C',\n colors: { light: '#0ABD78', dark: '#19AD74' },\n },\n 'app.k8s.io/Application': {\n abbr: 'APP',\n colors: { light: '#00AB28', dark: '#1BAB3D' },\n },\n 'core.oam.dev/Application': {\n abbr: 'OAM',\n colors: { light: '#009A29', dark: '#129334' },\n },\n 'argoproj.io/Application': {\n abbr: 'GOPS',\n colors: { light: '#008026', dark: '#0A7C2C' },\n },\n Deployment: {\n abbr: 'D',\n colors: { light: '#3170FF', dark: '#325FD9' },\n },\n DaemonSet: {\n abbr: 'DS',\n colors: { light: '#54B38D', dark: '#3C9977' },\n },\n StatefulSet: {\n abbr: 'SS',\n colors: { light: '#EF7A0A', dark: '#D67517' },\n },\n Job: {\n abbr: 'J',\n colors: { light: '#4661C1', dark: '#3D56B3' },\n },\n CronJob: {\n abbr: 'CJ',\n colors: { light: '#5A7BDC', dark: '#5475D5' },\n },\n Ingress: {\n abbr: 'I',\n colors: { light: '#14C9C9', dark: '#2CC1C1' },\n },\n ConfigMap: {\n abbr: 'CM',\n colors: { light: '#8E4AA9', dark: '#7D4095' },\n },\n Secret: {\n abbr: 'S',\n colors: { light: '#31BFFF', dark: '#2FB4F1' },\n },\n HorizontalPodAutoscaler: {\n abbr: 'HPA',\n colors: { light: '#3491FA', dark: '#358CEE' },\n },\n MonitorDashboard: {\n abbr: 'MD',\n colors: { light: '#AE6F83', dark: '#AE6D82' },\n },\n ReplicaSet: {\n abbr: 'RS',\n colors: { light: '#9A6632', dark: '#9A6A3A' },\n },\n Node: {\n abbr: 'N',\n colors: { light: '#8D4EDA', dark: '#9257DA' },\n },\n Group: {\n abbr: 'G',\n colors: { light: '#429456', dark: '#328248' },\n },\n Operator: {\n abbr: 'O',\n colors: { light: '#0DA5AA', dark: '#25A6AA' },\n },\n PersistentVolumeClaim: {\n abbr: 'PVC',\n colors: { light: '#F5B433', dark: '#E1A938' },\n },\n Pod: {\n abbr: 'P',\n colors: { light: '#437802', dark: '#4B7814' },\n },\n};\n\n// 获取资源的缩写标记\nexport function getResourceMark(kind: string, apiGroup?: string): string {\n if (!kind) {\n return '';\n }\n\n // 检查是否有预定义的缩写\n const matchKey = apiGroup ? `${apiGroup}/${kind}` : kind;\n const config = RESOURCE_MARKS[matchKey];\n if (config) {\n return config.abbr;\n }\n\n // 处理全小写的情况\n if (kind === kind.toLowerCase()) {\n return kind.slice(0, 4);\n }\n\n // 获取大写字母组成缩写\n const upperChars = kind.match(/[A-Z]/g) || [];\n return upperChars.slice(0, 4).join('');\n}\n\nexport function getResourceColor(kind: string, theme: string): string {\n const config = RESOURCE_MARKS[kind];\n if (!config) {\n return theme === 'light' ? '#0067D0' : '#1974D0';\n }\n return config.colors[theme as keyof typeof config.colors];\n}\n","import { TagModule, ThemeService, TooltipModule } from '@alauda/ui';\nimport { CommonModule } from '@angular/common';\nimport {\n Component,\n ChangeDetectionStrategy,\n input,\n computed,\n Input,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\n\nimport { KubernetesResource } from '../../types/k8s/core';\n\nimport { getResourceMark, getResourceColor } from './util';\n\n@Component({\n selector: 'acl-k8s-mark',\n standalone: true,\n imports: [CommonModule, TagModule, TooltipModule],\n template: `\n <aui-tag\n [size]=\"size\"\n [solid]=\"true\"\n [color]=\"color()\"\n [auiTooltip]=\"resource()?.kind || kind()\"\n >\n {{ mark() }}\n </aui-tag>\n `,\n styles: `\n :host {\n aui-tag {\n margin-right: 8px;\n ::ng-deep {\n .aui-tag {\n min-width: 24px;\n justify-content: center;\n }\n }\n }\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class K8sResourceMarkComponent {\n @Input()\n size: 'small' | 'mini' = 'mini';\n\n currentTheme = toSignal(this.theme.currentTheme$);\n\n constructor(private theme: ThemeService) {}\n\n kind = input<string>();\n apiVersion = input<string>();\n resource = input<KubernetesResource>();\n\n mark = computed(() => {\n const apiGroup = (this.resource()?.apiVersion || this.apiVersion())?.split(\n '/',\n )?.[0];\n return this.resource()\n ? getResourceMark(this.resource()?.kind, apiGroup)\n : getResourceMark(this.kind(), apiGroup);\n });\n\n color = computed(() => {\n const kind = this.resource()?.kind || this.kind();\n return `#fff,${getResourceColor(kind, this.currentTheme())}`;\n });\n}\n","/**\n * @packageDocumentation\n * @module k8s-shared\n * @preferred\n */\nexport * from './update-description-dialog/component';\nexport * from './update-display-name-dialog/component';\nexport * from './update-key-value-dialog/component';\nexport * from './k8s-shared-util.service';\nexport * from './k8s-resource-translate-key.pipe';\nexport * from './resource-mark/component';\n","/**\n * @packageDocumentation\n * @module code\n */\n\nimport { CodeEditorModule } from '@alauda/code-editor';\nimport { DIALOG_DATA, DIALOG_MODULE } from '@alauda/ui';\nimport { TranslatePipe } from '@alauda-fe/dynamic-plugin-sdk';\nimport { NgIf } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Inject } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport {\n IEditorConstructionOptions,\n readonlyOptions,\n viewActions,\n} from '../code-editor-configs';\n\nexport interface CodeDisplayDialogData {\n language?: string;\n title?: string;\n ellipsis?: boolean;\n extra?: string;\n code: string;\n}\n\n@Component({\n templateUrl: 'template.html',\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf, DIALOG_MODULE, CodeEditorModule, FormsModule, TranslatePipe],\n})\nexport class CodeDisplayDialogComponent {\n codeEditorOptions: IEditorConstructionOptions;\n\n editorActions = viewActions;\n\n constructor(\n @Inject(DIALOG_DATA)\n public data: CodeDisplayDialogData,\n ) {\n this.codeEditorOptions = {\n ...readonlyOptions,\n language: data.language || 'yaml',\n };\n }\n}\n","<aui-dialog-header [divider]=\"false\">\n <div [class.ellipsis-dialog-header]=\"data.ellipsis\">\n <span [class.text-ellipsis]=\"data.ellipsis\">\n {{ data.title || ('view_yaml' | translate) }}\n </span>\n <span\n *ngIf=\"data.extra\"\n class=\"extra\"\n >{{ data.extra }}</span\n >\n </div>\n</aui-dialog-header>\n<aui-dialog-content>\n <aui-code-editor\n style=\"display: block; height: 65vh\"\n [ngModel]=\"data.code || ''\"\n [options]=\"codeEditorOptions\"\n [actionsConfig]=\"editorActions\"\n ></aui-code-editor>\n</aui-dialog-content>\n","import { CodeEditorModule } from '@alauda/code-editor';\nimport { CARD_MODULE, CHECKBOX_MODULE } from '@alauda/ui';\nimport { TranslatePipe } from '@alauda-fe/dynamic-plugin-sdk';\nimport { AsyncPipe, NgIf, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n BehaviorSubject,\n combineLatest,\n Observable,\n map,\n distinctUntilChanged,\n} from 'rxjs';\n\nimport { YamlUtilService } from '../../services';\nimport { Arrayable, KubernetesResource } from '../../types';\nimport { ObservableInput } from '../../utils';\nimport { viewActions, yamlReadOptions } from '../code-editor-configs';\n\n@Component({\n selector: 'acl-resource-yaml-display',\n templateUrl: 'template.html',\n styleUrls: ['styles.scss'],\n preserveWhitespaces: false,\n standalone: true,\n imports: [\n CARD_MODULE,\n NgIf,\n FormsModule,\n CHECKBOX_MODULE,\n CodeEditorModule,\n TranslatePipe,\n AsyncPipe,\n NgTemplateOutlet,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ResourceYamlDisplayComponent<T extends KubernetesResource> {\n concise$$ = new BehaviorSubject(false);\n\n reduce$$ = new BehaviorSubject(true);\n\n @Input()\n hasWrapper = true;\n\n @Input()\n conciseEnable = true;\n\n @Input()\n manageFieldActionEnable = true;\n\n @Input()\n resource: Arrayable<T>;\n\n @ObservableInput()\n readonly resource$!: Observable<Arrayable<T>>;\n\n constructor(private readonly yamlUtil: YamlUtilService) {}\n\n yaml$ = combineLatest([\n this.resource$,\n this.concise$$,\n this.reduce$$.pipe(distinctUntilChanged()),\n ]).pipe(\n map(([resource, concise, reduce]) =>\n this.yamlUtil.generateFilteredYamlResource(resource, concise, reduce),\n ),\n );\n\n editorOptions = yamlReadOptions;\n viewActions = viewActions;\n\n conciseChange(value: boolean) {\n this.concise$$.next(value);\n if (value) {\n this.reduce$$.next(true);\n }\n }\n}\n","<aui-card *ngIf=\"hasWrapper; else content\">\n <ng-container *ngTemplateOutlet=\"content\" />\n</aui-card>\n<ng-template #content>\n <aui-code-editor\n name=\"yaml\"\n [ngModel]=\"yaml$ | async\"\n [options]=\"editorOptions\"\n [actionsConfig]=\"viewActions\"\n >\n <ng-container auiCodeEditorToolbarLeft>\n <aui-checkbox\n *ngIf=\"conciseEnable\"\n class=\"aui-code-editor-toolbar__control-button\"\n [ngModel]=\"concise$$ | async\"\n (ngModelChange)=\"conciseChange($event)\"\n >\n {{ 'preview_concise_yaml' | translate }}\n </aui-checkbox>\n <aui-checkbox\n *ngIf=\"manageFieldActionEnable\"\n [hidden]=\"concise$$ | async\"\n class=\"aui-code-editor-toolbar__control-button\"\n [ngModel]=\"reduce$$ | async\"\n (ngModelChange)=\"reduce$$.next($event)\"\n >\n {{ 'hide_manage_fields_field' | translate }}\n </aui-checkbox>\n </ng-container>\n </aui-code-editor>\n</ng-template>\n","/**\n * @packageDocumentation\n * @module code\n */\n\nimport { DIALOG_DATA, DIALOG_MODULE } from '@alauda/ui';\nimport { TranslatePipe } from '@alauda-fe/dynamic-plugin-sdk';\nimport { NgIf } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Inject } from '@angular/core';\n\nimport { KubernetesResource } from '../../types';\nimport { IEditorConstructionOptions } from '../code-editor-configs';\nimport { ResourceYamlDisplayComponent } from '../resource-yaml-display/component';\n\nexport interface K8sYamlDisplayDialogData {\n title?: string;\n ellipsis?: boolean;\n extra?: string;\n resource: KubernetesResource;\n}\n\n@Component({\n templateUrl: 'template.html',\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [DIALOG_MODULE, TranslatePipe, ResourceYamlDisplayComponent, NgIf],\n})\nexport class K8sYamlDisplayDialogComponent {\n codeEditorOptions: IEditorConstructionOptions;\n\n constructor(\n @Inject(DIALOG_DATA)\n public data: K8sYamlDisplayDialogData,\n ) {}\n}\n","<aui-dialog-header [divider]=\"false\">\n <div [class.ellipsis-dialog-header]=\"data.ellipsis\">\n <span [class.text-ellipsis]=\"data.ellipsis\">\n {{ data.title || ('view_yaml' | translate) }}\n </span>\n <span\n *ngIf=\"data.extra\"\n class=\"extra\"\n >{{ data.extra }}</span\n >\n </div>\n</aui-dialog-header>\n<aui-dialog-content>\n <acl-resource-yaml-display\n [resource]=\"data.resource\"\n [hasWrapper]=\"false\"\n class=\"dialog-content\"\n ></acl-resource-yaml-display>\n</aui-dialog-content>\n","/**\n * [[include:code/README.md]]\n * @module code\n * @preferred\n */\n/** imports */\nexport * from './code-display-dialog/component';\nexport * from './code-editor-configs';\nexport * from './k8s-yaml-display-dialog/component';\nexport * from './resource-yaml-display/component';\n","import { TranslatePipe } from '@alauda-fe/dynamic-plugin-sdk';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nimport { PurePipe } from '../../pipes/pure.pipe';\nimport { ARRAY_FORM_TABLE_MODULE } from '../form';\n\n@Component({\n selector: 'acl-key-value-table',\n templateUrl: 'template.html',\n styles: [\n `\n :host {\n width: 100%;\n }\n `,\n ],\n standalone: true,\n imports: [ARRAY_FORM_TABLE_MODULE, PurePipe, TranslatePipe],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class KeyValueTableComponent<T> {\n @Input()\n value: T;\n\n @Input()\n resourceName: string;\n\n @Input()\n resourceNameTranslated: string;\n\n entries = (value: T) => value != null && Object.entries(value);\n}\n","<acl-array-form-table\n [rows]=\"value | pure: entries\"\n [resourceName]=\"resourceName\"\n [resourceNameTranslated]=\"resourceNameTranslated\"\n [readonly]=\"true\"\n>\n <ng-container *aclArrayFormTableHeader>\n <th>{{ 'key' | translate }}</th>\n <th>{{ 'value' | translate }}</th>\n </ng-container>\n <ng-container *aclArrayFormTableRow=\"let item\">\n <td>{{ item[0] }}</td>\n <td>{{ item[1] }}</td>\n </ng-container>\n</acl-array-form-table>\n","import {\n ButtonModule,\n IconModule,\n InputModule,\n TooltipModule,\n} from '@alauda/ui';\nimport { TranslatePipe, TranslateService } from '@alauda-fe/dynamic-plugin-sdk';\nimport { NgIf } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Injector,\n Input,\n OnChanges,\n OnInit,\n Optional,\n SimpleChanges,\n} from '@angular/core';\nimport {\n ControlContainer,\n FormArray,\n ReactiveFormsModule,\n ValidatorFn,\n} from '@angular/forms';\nimport { BaseResourceFormComponent } from 'ng-resource-form-util';\n\nimport { DisabledContainerComponent } from '../../components/disabled-container';\nimport { EFFECT_DIRECTIVE_MODULE } from '../../directives';\nimport { ERRORS_MAPPER_MODULE } from '../../form';\nimport {\n DUPLICATE_ERROR_KEY,\n DUPLICATION_JUSTIFY_STRATEGY,\n ValidateRowDuplicateService,\n} from '../../services';\nimport { StringMap } from '../../types';\nimport { ARRAY_FORM_TABLE_MODULE } from '../form';\n\n@Component({\n selector: 'acl-string-array-form-table',\n templateUrl: './template.html',\n styleUrls: ['./styles.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n ARRAY_FORM_TABLE_MODULE,\n NgIf,\n InputModule,\n ReactiveFormsModule,\n ButtonModule,\n IconModule,\n TooltipModule,\n DisabledContainerComponent,\n EFFECT_DIRECTIVE_MODULE,\n ERRORS_MAPPER_MODULE,\n TranslatePipe,\n ],\n providers: [ValidateRowDuplicateService],\n})\nexport class StringArrayFormTableComponent\n extends BaseResourceFormComponent<string[], string[], FormArray>\n implements OnInit, OnChanges\n{\n @Input()\n multiLineValue: boolean;\n\n @Input()\n resourceName: string;\n\n @Input()\n resourceNameTranslated: string;\n\n @Input()\n placeholder = '';\n\n @Input()\n validators: ValidatorFn[] = [];\n\n @Input()\n enableDuplicateCheck = false;\n\n @Input()\n set errorMapper(errorMapper: StringMap) {\n this._errorMapper = {\n ...this._errorMapper,\n ...errorMapper,\n };\n }\n\n get errorMapper() {\n return this._errorMapper;\n }\n\n @Input() maxLines = 0;\n\n @Input() maxLinesTooltip = '';\n\n @Input() minLines = 0;\n\n @Input()\n readonlyItems: Array<string | RegExp> = [];\n\n @Input()\n readonlyTooltip: string;\n\n private _errorMapper: StringMap = {\n [DUPLICATE_ERROR_KEY]: this.translate.get('value_duplication'),\n };\n\n private duplicateValidator: ValidatorFn;\n\n constructor(\n public override injector: Injector,\n @Optional() public readonly controlContainer: ControlContainer,\n private readonly rowDup: ValidateRowDuplicateService,\n private readonly translate: TranslateService,\n ) {\n super(injector);\n }\n\n get length() {\n return this.form.length;\n }\n\n ngOnChanges({ validators, enableDuplicateCheck }: SimpleChanges): void {\n if (validators?.currentValue && this.form) {\n this.form.controls.forEach(formControl => {\n formControl.setValidators(validators.currentValue);\n // 避免动态增加或者移除 validators 的时候表单校验不生效\n formControl.updateValueAndValidity();\n });\n }\n if (\n enableDuplicateCheck?.currentValue !==\n enableDuplicateCheck?.previousValue &&\n this.form\n ) {\n this.form.controls.forEach(formControl => {\n formControl[\n enableDuplicateCheck?.currentValue\n ? 'addValidators'\n : 'removeValidators'\n ](this.duplicateValidator);\n formControl.updateValueAndValidity();\n });\n }\n }\n\n createForm() {\n return this.fb.array([]);\n }\n\n override adaptResourceModel(resource: string[]) {\n if (!resource) {\n return [];\n }\n\n return resource.sort((v1: string, v2: string) => {\n const isReadonly1 = this.isReadonly(v1);\n const isReadonly2 = this.isReadonly(v2);\n\n if (isReadonly1 === isReadonly2) {\n return 0;\n }\n return isReadonly1 ? -1 : 1;\n });\n }\n\n override getDefaultFormModel(): string[] {\n return [];\n }\n\n add(index = this.form.length) {\n this.form.insert(index, this.getOnFormArrayResizeFn()());\n this.cdr.markForCheck();\n }\n\n remove(index: number) {\n this.form.removeAt(index);\n this.cdr.markForCheck();\n }\n\n override getOnFormArrayResizeFn() {\n this.duplicateValidator =\n this.duplicateValidator ||\n (this.enableDuplicateCheck &&\n this.rowDup.createFormArrayValidator({\n rowKeys: ['0'],\n valueMapFn: (value: string) => value,\n formArray: this.form,\n strategy: DUPLICATION_JUSTIFY_STRATEGY.FULL,\n }));\n\n return () =>\n this.fb.control(\n '',\n [...(this.validators ?? []), this.duplicateValidator].filter(Boolean),\n );\n }\n\n isItemReadonly(index: number) {\n const control = this.form.controls[index];\n return control.valid && this.isReadonly(control.value);\n }\n\n private isReadonly(item: string) {\n return this.readonlyItems.some(checkedItem => {\n if (!checkedItem) {\n return false;\n }\n if (typeof checkedItem === 'string') {\n return checkedItem === item;\n }\n\n return checkedItem.test(item);\n });\n }\n}\n","<acl-array-form-table\n [resourceName]=\"resourceName\"\n [resourceNameTranslated]=\"resourceNameTranslated\"\n (add)=\"add(form.length)\"\n (remove)=\"remove($event)\"\n [rows]=\"form.controls\"\n>\n <!-- Input row -->\n <ng-container *aclArrayFormTableRow=\"let control; let index = index\">\n <td>\n <input\n *ngIf=\"!multiLineValue\"\n (blur)=\"onBlur()\"\n aui-input\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [readonly]=\"isItemReadonly(index)\"\n />\n\n <div\n *ngIf=\"multiLineValue\"\n class=\"textarea-wrapper\"\n [attr.data-value]=\"control.value\"\n >\n <textarea\n (blur)=\"onBlur()\"\n [placeholder]=\"placeholder\"\n aui-input\n [formControl]=\"control\"\n [readonly]=\"isItemReadonly(index)\"\n rows=\"1\"\n ></textarea>\n </div>\n </td>\n </ng-container>\n\n <ng-container *aclArrayFormTableRowControl=\"let control; let index = index\">\n <button\n aui-button=\"text\"\n type=\"button\"\n [square]=\"true\"\n [plain]=\"true\"\n [disabled]=\"(minLines && minLines >= length) || isItemReadonly(index)\"\n (click)=\"remove(index)\"\n >\n <aui-icon\n icon=\"minus_circle\"\n [auiTooltip]=\"isItemReadonly(index) && readonlyTooltip\"\n [auiTooltipDisabled]=\"!isItemReadonly(index)\"\n ></aui-icon>\n </button>\n </ng-container>\n\n <!-- Input error row -->\n <ng-container *aclArrayFormTableRowError=\"let control\">\n <td\n class=\"acl-table-form-error-hint\"\n colspan=\"2\"\n *ngIf=\"control.dirty || $any(controlContainer?.formDirective)?.submitted\"\n >\n <acl-errors-mapper\n [errors]=\"control.errors\"\n [errorsMapper]=\"errorMapper\"\n ></acl-errors-mapper>\n </td>\n </ng-container>\n\n <ng-container *aclArrayFormTableFooter>\n <acl-disabled-container\n [isAllowed]=\"true\"\n [isDisabled]=\"maxLines && length >= maxLines\"\n [tooltip]=\"maxLinesTooltip\"\n >\n <button\n aui-button=\"primary\"\n type=\"button\"\n size=\"mini\"\n [plain]=\"true\"\n (click)=\"add(length)\"\n >\n <aui-icon icon=\"plus_circle\"></aui-icon>\n {{ 'add' | translate }}\n </button>\n </acl-disabled-container>\n </ng-container>\n</acl-array-form-table>\n","/**\n * @packageDocumentation\n * @module array-form-table\n * @preferred\n */\n\nexport * from './form/component';\nexport * from './key-value-form/component';\nexport * from './key-value-table/component';\nexport * from './string-array-form/component';\nexport * from './base-string-map-form.component';\n","/**\n * @packageDocumentation\n * @module async-data\n */\n\nimport { ButtonComponent } from '@alauda/ui';\nimport { TranslatePipe } from '@alauda-fe/dynamic-plugin-sdk';\nimport { NgIf } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport {\n PageGuardComponent,\n PageGuardOperationDirective,\n Reason,\n} from '../../components';\n\n@Component({\n selector: 'acl-error-state',\n templateUrl: 'template.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n PageGuardComponent,\n NgIf,\n PageGuardOperationDirective,\n ButtonComponent,\n TranslatePipe,\n ],\n standalone: true,\n})\nexport class ErrorStateComponent {\n @Input() errorCode: number;\n @Input() autoRedirect: boolean;\n @Input() showBackButton: boolean;\n @Input() backLink: string;\n\n @Output()\n reload = new EventEmitter<void>();\n\n @Output()\n redirect = new EventEmitter<void>();\n\n reason = Reason;\n\n constructor(\n private readonly router: Router,\n private readonly route: ActivatedRoute,\n ) {}\n\n backToList() {\n this.redirect.emit();\n if (this.autoRedirect && this.showBackButton) {\n this.router.navigate([this.backLink || '../..'], {\n relativeTo: this.route,\n });\n }\n }\n}\n","<div *ngIf=\"errorCode === 403\">\n <acl-page-guard\n [allowed]=\"false\"\n [reason]=\"reason.NoPermission\"\n [title]=\"'no_view_permission' | translate\"\n [description]=\"''\"\n >\n <ng-container *ngIf=\"showBackButton\">\n <ng-container *aclPageGuardOperation>\n <button\n aui-button=\"primary\"\n (click)=\"backToList()\"\n >\n {{ 'return_resource_list' | translate }}\n </button>\n </ng-container>\n </ng-container>\n </acl-page-guard>\n</div>\n<div *ngIf=\"errorCode === 404\">\n <acl-page-guard\n [allowed]=\"false\"\n [reason]=\"reason.NotFound\"\n [title]=\"'resource_not_exist' | translate\"\n [description]=\"''\"\n >\n <ng-container *ngIf=\"showBackButton\">\n <ng-container *aclPageGuardOperation>\n <button\n aui-button=\"primary\"\n (click)=\"backToList()\"\n >\n {{ 'return_resource_list' | translate }}\n </button>\n </ng-container>\n </ng-container>\n </acl-page-guard>\n</div>\n<div *ngIf=\"errorCode !== 403 && errorCode !== 404\">\n <acl-page-guard\n [allowed]=\"false\"\n [reason]=\"reason.Disconnected\"\n [title]=\"'error_loading_data' | translate\"\n [description]=\"''\"\n >\n <ng-container *aclPageGuardOperation>\n <button\n aui-button=\"primary\"\n (click)=\"reload.emit()\"\n >\n {{ 'reload' | translate }}\n </button>\n </ng-container>\n </acl-page-guard>\n</div>\n","/**\n * @packageDocumentation\n * @module async-data\n */\n\nimport { handlePixel } from '@alauda/ui';\nimport { AsyncPipe, NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n EventEmitter,\n Input,\n OnInit,\n Output,\n TemplateRef,\n} from '@angular/core';\nimport { Observable, combineLatest, merge, filter, map, mapTo } from 'rxjs';\n\nimport { LoadingMaskComponent } from '../../components';\nimport { publishRef } from '../../utils';\nimport { ErrorStateComponent } from '../error-page/component';\nimport { DataStateAdapter } from '../types';\n\n@Component({\n selector: 'acl-page-state',\n templateUrl: 'template.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n NgTemplateOutlet,\n NgIf,\n LoadingMaskComponent,\n AsyncPipe,\n ErrorStateComponent,\n ],\n})\nexport class PageStateComponent<T = unknown> implements OnInit {\n @Input()\n adapter: DataStateAdapter<T>;\n\n @Input()\n autoRedirect = true;\n\n @Input()\n showBackButton = true;\n\n @Input()\n backLink: string;\n\n @Input()\n set top(top: number | string) {\n this.marginTop = handlePixel(top ?? 120);\n }\n\n @Output()\n redirect = new EventEmitter<void>();\n\n @ContentChild(TemplateRef, { static: true })\n template: TemplateRef<unknown>;\n\n marginTop: string;\n\n context$: Observable<\n {\n $implicit: T;\n } & T\n >;\n\n errorCode$: Observable<number>;\n\n ngOnInit() {\n this.context$ = this.adapter.rawData$.pipe(\n map(data => ({ $implicit: data, ...data })),\n publishRef(),\n );\n\n this.errorCode$ = merge(\n combineLatest([this.adapter.rawData$, this.adapter.loading$]).pipe(\n filter(([data, loading]) => !data && !loading),\n mapTo(404),\n ),\n this.adapter.error$.pipe(\n filter(error => !!error),\n map(error => {\n if (error.code && typeof error.code === 'number') {\n return error.code;\n }\n if (error.status && typeof error.status === 'number') {\n return error.status;\n }\n return 1;\n }),\n ),\n ).pipe(publishRef());\n }\n}\n","<ng-container *ngIf=\"(context$ | async)?.$implicit\">\n <ng-container\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"context$ | async\"\n ></ng-container>\n</ng-container>\n\n<div\n *ngIf=\"!(context$ | async)?.$implicit\"\n class=\"acl-data-state\"\n [style.marginTop]=\"marginTop\"\n>\n <ng-container *ngIf=\"adapter.loading$ | async\">\n <acl-loading-mask\n [loading]=\"true\"\n type=\"module\"\n ></acl-loading-mask>\n </ng-container>\n <ng-container *ngIf=\"!(adapter.loading$ | async) && !!(errorCode$ | async)\">\n <acl-error-state\n [errorCode]=\"errorCode$ | async\"\n [autoRedirect]=\"autoRedirect\"\n [showBackButton]=\"showBackButton\"\n [backLink]=\"backLink\"\n (reload)=\"adapter.reload()\"\n (redirect)=\"redirect.emit()\"\n ></acl-error-state>\n </ng-container>\n</div>\n","/**\n * @packageDocumentation\n * @module async-data\n */\n\nimport { get } from 'lodash-es';\nimport {\n Observable,\n Subject,\n combineLatest,\n interval,\n merge,\n of,\n catchError,\n distinctUntilChanged,\n filter,\n map,\n scan,\n startWith,\n switchMap,\n tap,\n} from 'rxjs';\n\nimport { StringMap } from '../types';\nimport { isEqual, publishRef } from '../utils';\n\nimport {\n DataError,\n DataMapper,\n DataStateAdapter,\n Fetcher,\n LoaderConfig,\n LoaderConfigWithInterval,\n} from './types';\n\nexport interface AsyncLoadState<D> {\n data?: D;\n loading?: boolean;\n error?: DataError;\n}\n\nexport class AsyncDataLoader<D = unknown, P = StringMap>\n implements DataStateAdapter<D>\n{\n private readonly reloadAction$$ = new Subject<void | D>();\n private readonly dataMapper$$ = new Subject<DataMapper<D>>();\n\n snapshot: { data: D; params: P; loading: boolean; error: DataError } = {\n params: null,\n data: null,\n loading: false,\n error: null,\n };\n\n loadState$: Observable<AsyncLoadState<D>>;\n\n rawData$: Observable<D>;\n data$: Observable<D>;\n loading$: Observable<boolean>;\n error$: Observable<DataError>;\n\n constructor(config: LoaderConfig<D, P> | LoaderConfigWithInterval<D, P>) {\n const { params$, params, dataFilter, silent } = config;\n\n const queryParams$ = params$ || of(params || null);\n\n this.loadState$ = combineLatest([\n queryParams$,\n this.reloadAction$$.pipe(startWith(null as D)),\n ]).pipe(\n switchMap(([queryParams, startData]) => {\n this.snapshot.params = queryParams;\n return this.buildFetcher(config)(queryParams).pipe(\n map(data => ({ data })),\n catchError((error: DataError) => of({ error })),\n startWith({\n data: startData || null,\n loading: !startData,\n }),\n );\n }),\n map(state => ({\n data: null,\n loading: false,\n error: null,\n ...state,\n })),\n publishRef(),\n );\n\n this.rawData$ = merge(\n this.loadState$.pipe(\n map(\n state => (prev: D) => (state.loading && silent ? prev : state.data),\n ),\n ),\n this.dataMapper$$,\n ).pipe(\n scan<DataMapper<D>, D>((acc, mapper) => mapper(acc), null),\n tap(data => {\n this.snapshot.data = data;\n }),\n publishRef(),\n );\n\n this.data$ = this.rawData$.pipe(\n filter(dataFilter ?? (data => !!data)),\n publishRef(),\n );\n\n this.loading$ = this.loadState$.pipe(\n map(state => state.loading),\n distinctUntilChanged(),\n tap(loading => {\n this.snapshot.loading = loading;\n }),\n publishRef(),\n );\n\n this.error$ = this.loadState$.pipe(\n map(state => state.error),\n distinctUntilChanged(),\n tap(error => {\n this.snapshot.error = error;\n }),\n publishRef(),\n );\n }\n\n reload(data?: D) {\n this.reloadAction$$.next(data);\n }\n\n mapData(mapper: DataMapper<D>) {\n this.dataMapper$$.next(mapper);\n }\n\n private buildFetcher(\n config: LoaderConfig<D, P> | LoaderConfigWithInterval<D, P>,\n ): Fetcher<D, P> {\n const {\n fetcher,\n interval: period,\n intervalFilter,\n compare,\n } = config as LoaderConfigWithInterval<D, P>;\n\n if (!period) {\n return fetcher;\n }\n\n const compareFn = Array.isArray(compare)\n ? (a: D, b: D) => isEqual(get(a, compare), get(b, compare))\n : compare;\n\n return params =>\n interval(period).pipe(\n filter(intervalFilter ?? (() => true)),\n startWith(0),\n switchMap(() => fetcher(params)),\n distinctUntilChanged(compareFn),\n );\n }\n}\n","/**\n * @packageDocumentation\n * @module async-data\n */\n\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\nimport { Status } from '../types';\n\nexport interface DataStateAdapter<D> {\n rawData$: Observable<D>;\n data$: Observable<D>;\n loading$: Observable<boolean>;\n error$: Observable<DataError>;\n reload: () => void;\n}\n\nexport type Fetcher<D, P> = (params: P) => Observable<D>;\n\nexport interface LoaderConfig<D, P> {\n fetcher: Fetcher<D, P>;\n params$?: Observable<P>;\n params?: P;\n dataFilter?: (data: D, index: number) => boolean;\n silent?: boolean;\n}\n\nexport interface LoaderConfigWithInterval<D, P> extends LoaderConfig<D, P> {\n interval: number;\n intervalFilter?: (index: number) => boolean;\n compare: string[] | ((a: D, b: D) => boolean);\n}\n\nexport type DataError = Partial<HttpErrorResponse & Status>;\n\nexport type DataMapper<D> = (data: D) => D;\n","/**\n * [[include:async-data/README.md]]\n * @module async-data\n * @preferred\n */\n\n/** imports */\nimport { ErrorStateComponent } from './error-page/component';\nimport { PageStateComponent } from './page-state/component';\nexport * from './async-data-loader';\nexport * from './page-state/component';\nexport * from './types';\nexport { ErrorStateComponent } from './error-page/component';\n\nexport const ASYNC_DATA_MODULE = [\n PageStateComponent,\n ErrorStateComponent,\n ErrorStateComponent,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["EMPTY","delay","_isEqual","parseYaml","RESIZE_SCHEDULER","stringify","i1","_KeyValuePipe","i2","i3.E2eAttributeBindingDirective","i3","i4","i1.InterceptDeactivateService","identity","i3.ErrorsMapperComponent","i4.ErrorsMapperDirective","i4.ValidatorsDirective","i4.E2eAttributeBindingDirective","i2.E2eAttributeBindingDirective","i1.ArrayFormTableComponent","i1.ArrayFormTableHeaderDirective","i1.ArrayFormTableRowControlDirective","i1.ArrayFormTableRowDirective","i1.ArrayFormTableRowErrorDirective","i1.ArrayFormTableZeroStateDirective","i5.E2eAttributeBindingDirective","isEqual","i1.YamlUtilService","i2.ValidateRowDuplicateService","i4.ArrayFormTableComponent","i4.ArrayFormTableFooterDirective","i4.ArrayFormTableRowControlDirective","i4.ArrayFormTableRowDirective","i4.ArrayFormTableRowErrorDirective","i5","i6.E2eAttributeBindingDirective","i7.ErrorsMapperComponent"],"mappings":"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"}