@alauda-fe/dynamic-plugin-shared 0.0.1-alpha.8 → 0.0.3-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 (395) hide show
  1. package/assets/i18n/en/dynamic-plugin-shared.json +3 -0
  2. package/assets/images/overview-banner.svg +1 -0
  3. package/fesm2022/alauda-fe-dynamic-plugin-shared.mjs +3038 -1828
  4. package/fesm2022/alauda-fe-dynamic-plugin-shared.mjs.map +1 -1
  5. package/package.json +15 -17
  6. package/styles/lib.scss +1 -1
  7. package/styles/mixins.scss +1 -210
  8. package/styles/var.scss +1 -26
  9. package/types/alauda-fe-dynamic-plugin-shared.d.ts +5692 -0
  10. package/array-form-table/base-string-map-form.component.d.ts +0 -22
  11. package/array-form-table/form/component.d.ts +0 -106
  12. package/array-form-table/form/index.d.ts +0 -3
  13. package/array-form-table/index.d.ts +0 -10
  14. package/array-form-table/key-value-form/component.d.ts +0 -38
  15. package/array-form-table/key-value-table/component.d.ts +0 -9
  16. package/array-form-table/string-array-form/component.d.ts +0 -41
  17. package/async-data/async-data-loader.d.ts +0 -31
  18. package/async-data/error-page/component.d.ts +0 -30
  19. package/async-data/index.d.ts +0 -13
  20. package/async-data/page-state/component.d.ts +0 -21
  21. package/async-data/types.d.ts +0 -29
  22. package/code-editor/code-display-dialog/component.d.ts +0 -17
  23. package/code-editor/code-editor-configs.d.ts +0 -19
  24. package/code-editor/index.d.ts +0 -10
  25. package/code-editor/k8s-yaml-display-dialog/component.d.ts +0 -16
  26. package/code-editor/resource-yaml-display/component.d.ts +0 -21
  27. package/components/card-section/card-section.component.d.ts +0 -9
  28. package/components/confirm-delete/confirm-delete.component.d.ts +0 -57
  29. package/components/confirm-delete/utils.d.ts +0 -25
  30. package/components/current-time/component.d.ts +0 -14
  31. package/components/custom-columns-setting/component.d.ts +0 -16
  32. package/components/custom-columns-setting/index.d.ts +0 -1
  33. package/components/date-range-picker/component.d.ts +0 -55
  34. package/components/date-range-picker/index.d.ts +0 -3
  35. package/components/date-range-picker/type.d.ts +0 -36
  36. package/components/date-range-picker/util.d.ts +0 -11
  37. package/components/disabled-container/disabled-container.component.d.ts +0 -21
  38. package/components/disabled-container/index.d.ts +0 -7
  39. package/components/field-set/column/component.d.ts +0 -10
  40. package/components/field-set/group/component.d.ts +0 -6
  41. package/components/field-set/index.d.ts +0 -7
  42. package/components/field-set/item/component.d.ts +0 -13
  43. package/components/foldable-block/component.d.ts +0 -17
  44. package/components/foldable-item-in-table/component.d.ts +0 -21
  45. package/components/help-document/component.d.ts +0 -29
  46. package/components/help-document/directive.d.ts +0 -20
  47. package/components/help-document/index.d.ts +0 -8
  48. package/components/help-document/service.d.ts +0 -20
  49. package/components/index.d.ts +0 -32
  50. package/components/loading-mask/loading-mask.component.d.ts +0 -13
  51. package/components/page-guard/component/component.d.ts +0 -40
  52. package/components/page-guard/component/helper-directives.d.ts +0 -17
  53. package/components/page-guard/component/page-guard.type.d.ts +0 -86
  54. package/components/page-guard/index.d.ts +0 -12
  55. package/components/password-input/component.d.ts +0 -39
  56. package/components/pod-status/component.d.ts +0 -25
  57. package/components/pod-status/index.d.ts +0 -3
  58. package/components/pod-status/status.d.ts +0 -4
  59. package/components/pod-status/typings.d.ts +0 -16
  60. package/components/relative-time/component.d.ts +0 -15
  61. package/components/resource-label/component.d.ts +0 -25
  62. package/components/resource-multi-select/component.d.ts +0 -41
  63. package/components/resource-multi-select/util.d.ts +0 -10
  64. package/components/search-panel/component.d.ts +0 -16
  65. package/components/search-panel/helper.directive.d.ts +0 -5
  66. package/components/search-panel/search-item/component.d.ts +0 -7
  67. package/components/select-prefix-label/directive.d.ts +0 -17
  68. package/components/status-icon/status-icon.component.d.ts +0 -16
  69. package/components/tags-label/component.d.ts +0 -56
  70. package/components/terminating-tag/component.d.ts +0 -7
  71. package/components/text-ellipsis/component.d.ts +0 -9
  72. package/components/text-tooltip/directive.d.ts +0 -21
  73. package/components/text-with-url/component.d.ts +0 -12
  74. package/components/upload-file/component.d.ts +0 -32
  75. package/components/workload-status/component.d.ts +0 -37
  76. package/components/workload-status/index.d.ts +0 -1
  77. package/components/zero-state/zero-state.component.d.ts +0 -17
  78. package/constants/common.d.ts +0 -64
  79. package/constants/index.d.ts +0 -6
  80. package/constants/k8s.d.ts +0 -12
  81. package/constants/patterns.d.ts +0 -124
  82. package/constants/resource-definitions.d.ts +0 -414
  83. package/constants/status-icons.d.ts +0 -34
  84. package/constants/timezones.d.ts +0 -6
  85. package/directives/aui-code-editor.directive.d.ts +0 -13
  86. package/directives/click-outside.directive.d.ts +0 -12
  87. package/directives/declare.directive.d.ts +0 -8
  88. package/directives/disabled.directive.d.ts +0 -28
  89. package/directives/effect-directive/coerce-number.directive.d.ts +0 -8
  90. package/directives/effect-directive/e2e-attribute-binding.directive.d.ts +0 -10
  91. package/directives/effect-directive/event.directive.d.ts +0 -47
  92. package/directives/effect-directive/index.d.ts +0 -12
  93. package/directives/effect-directive/min-max.directive.d.ts +0 -30
  94. package/directives/effect-directive/trim.directive.d.ts +0 -7
  95. package/directives/effect-directive/validators.directive.d.ts +0 -12
  96. package/directives/feature-gate.directive.d.ts +0 -31
  97. package/directives/index.d.ts +0 -12
  98. package/directives/last-form-item.directive.d.ts +0 -8
  99. package/directives/readonly-field.directive.d.ts +0 -39
  100. package/directives/resize.directive.d.ts +0 -17
  101. package/directives/scroll-border-observer.directive.d.ts +0 -23
  102. package/directives/scroll-to-first-invalid.directive.d.ts +0 -24
  103. package/directives/value-trace.directive.d.ts +0 -27
  104. package/esm2022/alauda-fe-dynamic-plugin-shared.mjs +0 -5
  105. package/esm2022/array-form-table/base-string-map-form.component.mjs +0 -92
  106. package/esm2022/array-form-table/form/component.mjs +0 -266
  107. package/esm2022/array-form-table/form/index.mjs +0 -13
  108. package/esm2022/array-form-table/index.mjs +0 -11
  109. package/esm2022/array-form-table/key-value-form/component.mjs +0 -135
  110. package/esm2022/array-form-table/key-value-table/component.mjs +0 -24
  111. package/esm2022/array-form-table/string-array-form/component.mjs +0 -168
  112. package/esm2022/async-data/async-data-loader.mjs +0 -63
  113. package/esm2022/async-data/error-page/component.mjs +0 -54
  114. package/esm2022/async-data/index.mjs +0 -18
  115. package/esm2022/async-data/page-state/component.mjs +0 -62
  116. package/esm2022/async-data/types.mjs +0 -6
  117. package/esm2022/code-editor/code-display-dialog/component.mjs +0 -35
  118. package/esm2022/code-editor/code-editor-configs.mjs +0 -66
  119. package/esm2022/code-editor/index.mjs +0 -11
  120. package/esm2022/code-editor/k8s-yaml-display-dialog/component.mjs +0 -26
  121. package/esm2022/code-editor/resource-yaml-display/component.mjs +0 -67
  122. package/esm2022/components/card-section/card-section.component.mjs +0 -24
  123. package/esm2022/components/confirm-delete/confirm-delete.component.mjs +0 -192
  124. package/esm2022/components/confirm-delete/utils.mjs +0 -8
  125. package/esm2022/components/current-time/component.mjs +0 -39
  126. package/esm2022/components/custom-columns-setting/component.mjs +0 -75
  127. package/esm2022/components/custom-columns-setting/index.mjs +0 -2
  128. package/esm2022/components/date-range-picker/component.mjs +0 -215
  129. package/esm2022/components/date-range-picker/index.mjs +0 -4
  130. package/esm2022/components/date-range-picker/type.mjs +0 -2
  131. package/esm2022/components/date-range-picker/util.mjs +0 -57
  132. package/esm2022/components/disabled-container/disabled-container.component.mjs +0 -81
  133. package/esm2022/components/disabled-container/index.mjs +0 -8
  134. package/esm2022/components/field-set/column/component.mjs +0 -25
  135. package/esm2022/components/field-set/group/component.mjs +0 -16
  136. package/esm2022/components/field-set/index.mjs +0 -14
  137. package/esm2022/components/field-set/item/component.mjs +0 -41
  138. package/esm2022/components/foldable-block/component.mjs +0 -60
  139. package/esm2022/components/foldable-item-in-table/component.mjs +0 -56
  140. package/esm2022/components/help-document/component.mjs +0 -69
  141. package/esm2022/components/help-document/directive.mjs +0 -70
  142. package/esm2022/components/help-document/index.mjs +0 -9
  143. package/esm2022/components/help-document/service.mjs +0 -43
  144. package/esm2022/components/index.mjs +0 -33
  145. package/esm2022/components/loading-mask/loading-mask.component.mjs +0 -35
  146. package/esm2022/components/page-guard/component/component.mjs +0 -101
  147. package/esm2022/components/page-guard/component/helper-directives.mjs +0 -51
  148. package/esm2022/components/page-guard/component/page-guard.type.mjs +0 -82
  149. package/esm2022/components/page-guard/index.mjs +0 -19
  150. package/esm2022/components/password-input/component.mjs +0 -143
  151. package/esm2022/components/pod-status/component.mjs +0 -49
  152. package/esm2022/components/pod-status/index.mjs +0 -4
  153. package/esm2022/components/pod-status/status.mjs +0 -84
  154. package/esm2022/components/pod-status/typings.mjs +0 -19
  155. package/esm2022/components/relative-time/component.mjs +0 -58
  156. package/esm2022/components/resource-label/component.mjs +0 -100
  157. package/esm2022/components/resource-multi-select/component.mjs +0 -152
  158. package/esm2022/components/resource-multi-select/util.mjs +0 -24
  159. package/esm2022/components/search-panel/component.mjs +0 -51
  160. package/esm2022/components/search-panel/helper.directive.mjs +0 -14
  161. package/esm2022/components/search-panel/search-item/component.mjs +0 -15
  162. package/esm2022/components/select-prefix-label/directive.mjs +0 -89
  163. package/esm2022/components/status-icon/status-icon.component.mjs +0 -56
  164. package/esm2022/components/tags-label/component.mjs +0 -224
  165. package/esm2022/components/terminating-tag/component.mjs +0 -16
  166. package/esm2022/components/text-ellipsis/component.mjs +0 -28
  167. package/esm2022/components/text-tooltip/directive.mjs +0 -71
  168. package/esm2022/components/text-with-url/component.mjs +0 -40
  169. package/esm2022/components/upload-file/component.mjs +0 -95
  170. package/esm2022/components/workload-status/component.mjs +0 -33
  171. package/esm2022/components/workload-status/index.mjs +0 -2
  172. package/esm2022/components/zero-state/zero-state.component.mjs +0 -56
  173. package/esm2022/constants/common.mjs +0 -86
  174. package/esm2022/constants/index.mjs +0 -7
  175. package/esm2022/constants/k8s.mjs +0 -13
  176. package/esm2022/constants/patterns.mjs +0 -142
  177. package/esm2022/constants/resource-definitions.mjs +0 -424
  178. package/esm2022/constants/status-icons.mjs +0 -65
  179. package/esm2022/constants/timezones.mjs +0 -234
  180. package/esm2022/directives/aui-code-editor.directive.mjs +0 -30
  181. package/esm2022/directives/click-outside.directive.mjs +0 -49
  182. package/esm2022/directives/declare.directive.mjs +0 -27
  183. package/esm2022/directives/disabled.directive.mjs +0 -76
  184. package/esm2022/directives/effect-directive/coerce-number.directive.mjs +0 -54
  185. package/esm2022/directives/effect-directive/e2e-attribute-binding.directive.mjs +0 -57
  186. package/esm2022/directives/effect-directive/event.directive.mjs +0 -129
  187. package/esm2022/directives/effect-directive/index.mjs +0 -21
  188. package/esm2022/directives/effect-directive/min-max.directive.mjs +0 -107
  189. package/esm2022/directives/effect-directive/trim.directive.mjs +0 -40
  190. package/esm2022/directives/effect-directive/validators.directive.mjs +0 -43
  191. package/esm2022/directives/feature-gate.directive.mjs +0 -90
  192. package/esm2022/directives/index.mjs +0 -13
  193. package/esm2022/directives/last-form-item.directive.mjs +0 -18
  194. package/esm2022/directives/readonly-field.directive.mjs +0 -145
  195. package/esm2022/directives/resize.directive.mjs +0 -39
  196. package/esm2022/directives/scroll-border-observer.directive.mjs +0 -77
  197. package/esm2022/directives/scroll-to-first-invalid.directive.mjs +0 -126
  198. package/esm2022/directives/value-trace.directive.mjs +0 -61
  199. package/esm2022/form/base-form-container.mjs +0 -126
  200. package/esm2022/form/base-nested-form-control.mjs +0 -190
  201. package/esm2022/form/errors-mapper/base-errors-mapper.mjs +0 -41
  202. package/esm2022/form/errors-mapper/default-errors-mapper.service.mjs +0 -65
  203. package/esm2022/form/errors-mapper/errors-mapper-component/component.mjs +0 -53
  204. package/esm2022/form/errors-mapper/errors-mapper.directive.mjs +0 -109
  205. package/esm2022/form/errors-mapper/index.mjs +0 -10
  206. package/esm2022/form/errors-mapper/types.mjs +0 -2
  207. package/esm2022/form/index.mjs +0 -6
  208. package/esm2022/form/utils.mjs +0 -61
  209. package/esm2022/form/validators/async-function-validator.directive.mjs +0 -49
  210. package/esm2022/form/validators/dns1123-subdomain.mjs +0 -42
  211. package/esm2022/form/validators/function-validator.directive.mjs +0 -49
  212. package/esm2022/form/validators/index.mjs +0 -10
  213. package/esm2022/form/validators/maxlength-minlength-validator.directive.mjs +0 -71
  214. package/esm2022/form/validators/not-be-validator.directive.mjs +0 -56
  215. package/esm2022/form/validators/one-of-validator.directive.mjs +0 -57
  216. package/esm2022/form/validators/resource-limit.mjs +0 -79
  217. package/esm2022/form/validators/strong-password/index.mjs +0 -4
  218. package/esm2022/form/validators/strong-password/strong-password-tooltip/component.mjs +0 -15
  219. package/esm2022/form/validators/strong-password/strong-password-validator.directive.mjs +0 -171
  220. package/esm2022/form/validators/strong-password/strong-password-validator.module.mjs +0 -36
  221. package/esm2022/form/validators/utils.mjs +0 -155
  222. package/esm2022/index.mjs +0 -15
  223. package/esm2022/k8s-resource-list/footer/component.mjs +0 -161
  224. package/esm2022/k8s-resource-list/index.mjs +0 -18
  225. package/esm2022/k8s-resource-list/k8s-resource-list.mjs +0 -224
  226. package/esm2022/k8s-resource-list/k8s-resource-paged-list.mjs +0 -174
  227. package/esm2022/k8s-resource-list/types.mjs +0 -11
  228. package/esm2022/k8s-resource-list/utils.mjs +0 -84
  229. package/esm2022/k8s-shared/constants.mjs +0 -53
  230. package/esm2022/k8s-shared/index.mjs +0 -12
  231. package/esm2022/k8s-shared/k8s-resource-translate-key.pipe.mjs +0 -31
  232. package/esm2022/k8s-shared/k8s-shared-util.service.mjs +0 -152
  233. package/esm2022/k8s-shared/resource-mark/component.mjs +0 -54
  234. package/esm2022/k8s-shared/resource-mark/util.mjs +0 -137
  235. package/esm2022/k8s-shared/update-description-dialog/component.mjs +0 -66
  236. package/esm2022/k8s-shared/update-display-name-dialog/component.mjs +0 -59
  237. package/esm2022/k8s-shared/update-key-value-dialog/component.mjs +0 -76
  238. package/esm2022/page-deactivate/deactivate.directive.mjs +0 -50
  239. package/esm2022/page-deactivate/deactivate.guard.mjs +0 -41
  240. package/esm2022/page-deactivate/deactivate.service.mjs +0 -78
  241. package/esm2022/page-deactivate/index.mjs +0 -4
  242. package/esm2022/pipes/calc.pipe.mjs +0 -21
  243. package/esm2022/pipes/cron-human-readable.pipe.mjs +0 -30
  244. package/esm2022/pipes/crontab-next.pipe.mjs +0 -67
  245. package/esm2022/pipes/duration.pipe.mjs +0 -51
  246. package/esm2022/pipes/field-not-available.pipe.mjs +0 -25
  247. package/esm2022/pipes/img-header.pipe.mjs +0 -18
  248. package/esm2022/pipes/img-theme.pipe.mjs +0 -38
  249. package/esm2022/pipes/index.mjs +0 -19
  250. package/esm2022/pipes/keyvalue.pipe.mjs +0 -20
  251. package/esm2022/pipes/marked.pipe.mjs +0 -18
  252. package/esm2022/pipes/minimum-format.pipe.mjs +0 -25
  253. package/esm2022/pipes/page-env.pipe.mjs +0 -69
  254. package/esm2022/pipes/parse-json-translate.pipe.mjs +0 -28
  255. package/esm2022/pipes/parse-json.pipe.mjs +0 -22
  256. package/esm2022/pipes/pure.pipe.mjs +0 -26
  257. package/esm2022/pipes/safe.pipe.mjs +0 -49
  258. package/esm2022/pipes/sanitize.pipe.mjs +0 -31
  259. package/esm2022/pipes/time.pipe.mjs +0 -113
  260. package/esm2022/pipes/timezone-display.pipe.mjs +0 -21
  261. package/esm2022/services/form-row-duplicate/form-row-duplicate.service.mjs +0 -280
  262. package/esm2022/services/index.mjs +0 -4
  263. package/esm2022/services/on-resize.service.mjs +0 -52
  264. package/esm2022/services/yaml-util.service.mjs +0 -99
  265. package/esm2022/types/common.mjs +0 -6
  266. package/esm2022/types/helpers.mjs +0 -12
  267. package/esm2022/types/index.mjs +0 -9
  268. package/esm2022/types/k8s/core.mjs +0 -2
  269. package/esm2022/types/k8s/crd.mjs +0 -57
  270. package/esm2022/types/k8s/index.mjs +0 -4
  271. package/esm2022/types/k8s/raw.mjs +0 -77
  272. package/esm2022/types/schema.mjs +0 -2
  273. package/esm2022/utils/browser.mjs +0 -21
  274. package/esm2022/utils/cache-store.mjs +0 -83
  275. package/esm2022/utils/color-helpers.mjs +0 -6
  276. package/esm2022/utils/common.mjs +0 -315
  277. package/esm2022/utils/cron-util.mjs +0 -44
  278. package/esm2022/utils/decorators.mjs +0 -137
  279. package/esm2022/utils/disabled-state.mjs +0 -47
  280. package/esm2022/utils/format-number.mjs +0 -227
  281. package/esm2022/utils/index.mjs +0 -24
  282. package/esm2022/utils/local-storage-constants.mjs +0 -2
  283. package/esm2022/utils/node.mjs +0 -18
  284. package/esm2022/utils/observable.mjs +0 -32
  285. package/esm2022/utils/operators.mjs +0 -38
  286. package/esm2022/utils/request-pool.mjs +0 -37
  287. package/esm2022/utils/resources.mjs +0 -66
  288. package/esm2022/utils/router.mjs +0 -20
  289. package/esm2022/utils/sort-fn.mjs +0 -7
  290. package/esm2022/utils/tree.mjs +0 -79
  291. package/esm2022/utils/unit.mjs +0 -191
  292. package/esm2022/utils/version.mjs +0 -76
  293. package/esm2022/utils/with-load-state.mjs +0 -21
  294. package/esm2022/utils/workload.mjs +0 -183
  295. package/esm2022/utils/workspace.mjs +0 -59
  296. package/esm2022/utils/yaml.mjs +0 -54
  297. package/form/base-form-container.d.ts +0 -41
  298. package/form/base-nested-form-control.d.ts +0 -58
  299. package/form/errors-mapper/base-errors-mapper.d.ts +0 -13
  300. package/form/errors-mapper/default-errors-mapper.service.d.ts +0 -10
  301. package/form/errors-mapper/errors-mapper-component/component.d.ts +0 -19
  302. package/form/errors-mapper/errors-mapper.directive.d.ts +0 -39
  303. package/form/errors-mapper/index.d.ts +0 -6
  304. package/form/errors-mapper/types.d.ts +0 -16
  305. package/form/index.d.ts +0 -5
  306. package/form/utils.d.ts +0 -40
  307. package/form/validators/async-function-validator.directive.d.ts +0 -11
  308. package/form/validators/dns1123-subdomain.d.ts +0 -28
  309. package/form/validators/function-validator.directive.d.ts +0 -11
  310. package/form/validators/index.d.ts +0 -9
  311. package/form/validators/maxlength-minlength-validator.directive.d.ts +0 -20
  312. package/form/validators/not-be-validator.directive.d.ts +0 -12
  313. package/form/validators/one-of-validator.directive.d.ts +0 -12
  314. package/form/validators/resource-limit.d.ts +0 -17
  315. package/form/validators/strong-password/index.d.ts +0 -3
  316. package/form/validators/strong-password/strong-password-tooltip/component.d.ts +0 -6
  317. package/form/validators/strong-password/strong-password-validator.directive.d.ts +0 -34
  318. package/form/validators/strong-password/strong-password-validator.module.d.ts +0 -12
  319. package/form/validators/utils.d.ts +0 -67
  320. package/index.d.ts +0 -14
  321. package/k8s-resource-list/footer/component.d.ts +0 -43
  322. package/k8s-resource-list/index.d.ts +0 -13
  323. package/k8s-resource-list/k8s-resource-list.d.ts +0 -42
  324. package/k8s-resource-list/k8s-resource-paged-list.d.ts +0 -61
  325. package/k8s-resource-list/types.d.ts +0 -70
  326. package/k8s-resource-list/utils.d.ts +0 -19
  327. package/k8s-shared/constants.d.ts +0 -7
  328. package/k8s-shared/index.d.ts +0 -11
  329. package/k8s-shared/k8s-resource-translate-key.pipe.d.ts +0 -9
  330. package/k8s-shared/k8s-shared-util.service.d.ts +0 -48
  331. package/k8s-shared/resource-mark/component.d.ts +0 -16
  332. package/k8s-shared/resource-mark/util.d.ts +0 -2
  333. package/k8s-shared/update-description-dialog/component.d.ts +0 -33
  334. package/k8s-shared/update-display-name-dialog/component.d.ts +0 -27
  335. package/k8s-shared/update-key-value-dialog/component.d.ts +0 -38
  336. package/page-deactivate/deactivate.directive.d.ts +0 -18
  337. package/page-deactivate/deactivate.guard.d.ts +0 -13
  338. package/page-deactivate/deactivate.service.d.ts +0 -28
  339. package/page-deactivate/index.d.ts +0 -3
  340. package/pipes/calc.pipe.d.ts +0 -11
  341. package/pipes/cron-human-readable.pipe.d.ts +0 -9
  342. package/pipes/crontab-next.pipe.d.ts +0 -18
  343. package/pipes/duration.pipe.d.ts +0 -10
  344. package/pipes/field-not-available.pipe.d.ts +0 -13
  345. package/pipes/img-header.pipe.d.ts +0 -7
  346. package/pipes/img-theme.pipe.d.ts +0 -13
  347. package/pipes/index.d.ts +0 -18
  348. package/pipes/keyvalue.pipe.d.ts +0 -9
  349. package/pipes/marked.pipe.d.ts +0 -8
  350. package/pipes/minimum-format.pipe.d.ts +0 -10
  351. package/pipes/page-env.pipe.d.ts +0 -34
  352. package/pipes/parse-json-translate.pipe.d.ts +0 -8
  353. package/pipes/parse-json.pipe.d.ts +0 -7
  354. package/pipes/pure.pipe.d.ts +0 -17
  355. package/pipes/safe.pipe.d.ts +0 -10
  356. package/pipes/sanitize.pipe.d.ts +0 -10
  357. package/pipes/time.pipe.d.ts +0 -40
  358. package/pipes/timezone-display.pipe.d.ts +0 -10
  359. package/services/form-row-duplicate/form-row-duplicate.service.d.ts +0 -45
  360. package/services/index.d.ts +0 -3
  361. package/services/on-resize.service.d.ts +0 -20
  362. package/services/yaml-util.service.d.ts +0 -20
  363. package/styles/global.scss +0 -904
  364. package/types/common.d.ts +0 -42
  365. package/types/helpers.d.ts +0 -35
  366. package/types/index.d.ts +0 -8
  367. package/types/k8s/core.d.ts +0 -100
  368. package/types/k8s/crd.d.ts +0 -497
  369. package/types/k8s/index.d.ts +0 -3
  370. package/types/k8s/raw.d.ts +0 -860
  371. package/types/schema.d.ts +0 -14
  372. package/utils/browser.d.ts +0 -4
  373. package/utils/cache-store.d.ts +0 -35
  374. package/utils/color-helpers.d.ts +0 -4
  375. package/utils/common.d.ts +0 -64
  376. package/utils/cron-util.d.ts +0 -8
  377. package/utils/decorators.d.ts +0 -14
  378. package/utils/disabled-state.d.ts +0 -20
  379. package/utils/format-number.d.ts +0 -11
  380. package/utils/index.d.ts +0 -23
  381. package/utils/local-storage-constants.d.ts +0 -1
  382. package/utils/node.d.ts +0 -8
  383. package/utils/observable.d.ts +0 -5
  384. package/utils/operators.d.ts +0 -22
  385. package/utils/request-pool.d.ts +0 -12
  386. package/utils/resources.d.ts +0 -19
  387. package/utils/router.d.ts +0 -3
  388. package/utils/sort-fn.d.ts +0 -2
  389. package/utils/tree.d.ts +0 -16
  390. package/utils/unit.d.ts +0 -21
  391. package/utils/version.d.ts +0 -39
  392. package/utils/with-load-state.d.ts +0 -11
  393. package/utils/workload.d.ts +0 -66
  394. package/utils/workspace.d.ts +0 -28
  395. package/utils/yaml.d.ts +0 -11
@@ -1,142 +0,0 @@
1
- export const DOMAIN_PATTERN_BASE = '^([\\da-z.-]+)\\.([a-z.]{2,6})$';
2
- export const IP_PATTERN_BASE = '^(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d{1,2})\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d{1,2})$';
3
- export const IPV6_PATTERN_BASE = '^(([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]))$';
4
- const PROTOCOL_PATTERN_BASE = 'https?://';
5
- const PORT_PATTERN_BASE = '(:(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]))';
6
- const addPortAndProtocol = (patternStr) => {
7
- const main = patternStr.replace(/(^\^)?/, '').replace(/(\$?)$/, '');
8
- return `^(${PROTOCOL_PATTERN_BASE})?${main}(${PORT_PATTERN_BASE})?$`;
9
- };
10
- const addPortAndProtocolForIpv6 = (patternStr) => {
11
- const main = patternStr.replace(/(^\^)?/, '').replace(/(\$?)$/, '');
12
- return `(${patternStr})|(^(${PROTOCOL_PATTERN_BASE})\\[${main}\\]$)|(^(${PROTOCOL_PATTERN_BASE})?\\[${main}\\](${PORT_PATTERN_BASE})$)`;
13
- };
14
- export const PORT_PATTERN = {
15
- pattern: /(^[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]$)/,
16
- tip: 'invalid_port',
17
- };
18
- // include ipv4, domain
19
- export const IP_ADDRESS_HOSTNAME_PATTERN = {
20
- pattern: new RegExp(`(${IP_PATTERN_BASE})|(${DOMAIN_PATTERN_BASE})`),
21
- tip: 'regexp_tip_ip_address_or_hostname',
22
- };
23
- // include ipv6, domain
24
- export const IPV6_ADDRESS_HOSTNAME_PATTERN = {
25
- pattern: new RegExp(`(${IPV6_PATTERN_BASE})|(${DOMAIN_PATTERN_BASE})`),
26
- tip: 'regexp_tip_ipv6_address_or_hostname',
27
- };
28
- // include ipv4, domain, and support port and protocol
29
- export const IP_ADDRESS_HOSTNAME_PORT_PATTERN = {
30
- pattern: new RegExp(`(${addPortAndProtocol(IP_PATTERN_BASE)})|(${addPortAndProtocol(DOMAIN_PATTERN_BASE)})`),
31
- tip: 'regexp_tip_ip_address_or_hostname',
32
- };
33
- // include ipv6, domain, and support port and protocol
34
- export const IPV6_ADDRESS_HOSTNAME_PORT_PATTERN = {
35
- pattern: new RegExp(`(${addPortAndProtocolForIpv6(IPV6_PATTERN_BASE)})|(${addPortAndProtocol(DOMAIN_PATTERN_BASE)})`),
36
- tip: 'regexp_tip_ipv6_address_or_hostname',
37
- };
38
- // include ipv4, ipv6, domain, and support port and protocol
39
- export const IPV4_IPV6_ADDRESS_HOSTNAME_PORT_PATTERN = {
40
- pattern: new RegExp(`(${addPortAndProtocol(IP_PATTERN_BASE)})|(${addPortAndProtocolForIpv6(IPV6_PATTERN_BASE)})|(${addPortAndProtocol(DOMAIN_PATTERN_BASE)})`),
41
- tip: 'regexp_tip_ipv4_ipv6_address_or_hostname',
42
- };
43
- // include ipv4, ipv6, domain
44
- export const IP_ADDRESS_HOSTNAME_PATTERN_EXTEND = {
45
- pattern: new RegExp(`(${IP_PATTERN_BASE})|(${DOMAIN_PATTERN_BASE})|(${IPV6_PATTERN_BASE})`),
46
- tip: 'regexp_tip_ip_address_or_hostname',
47
- };
48
- export const IP_ADDRESS_SUBNET_PATTERN = {
49
- pattern: /^((\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+$/,
50
- tip: 'regexp_tip_ip_address_with_subnet',
51
- };
52
- export const DOMAIN_PATTERN = {
53
- pattern: new RegExp(DOMAIN_PATTERN_BASE),
54
- placeholder: 'domain_regexp_placeholder',
55
- tip: 'domain_regexp_tip',
56
- };
57
- export const IP_ADDRESS_PATTERN = {
58
- pattern: /^(?:(?:25[0-5]|2[0-4]\d|[01]?\d{1,2})\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d{1,2})$/,
59
- placeholder: 'ip_address_placeholder',
60
- tip: 'regexp_tip_ip_address',
61
- };
62
- export const IP_PATTERN = {
63
- pattern: /^((2(5[0-5]|[0-4]\d))|[01]?\d{1,2})(\.((2(5[0-5]|[0-4]\d))|[01]?\d{1,2})){3}$/,
64
- tip: 'invalid_ip',
65
- };
66
- export const IP_V6_PATTERN = {
67
- pattern: new RegExp(`${IPV6_PATTERN_BASE}`),
68
- tip: 'invalid_ip',
69
- };
70
- export const IP_V6_ADDRESS_PATTERN = {
71
- pattern: new RegExp(IPV6_PATTERN_BASE),
72
- };
73
- export const IP_V4_OR_V6_PATTERN = {
74
- pattern: new RegExp(`(${IP_PATTERN_BASE})|(${IPV6_PATTERN_BASE})`),
75
- };
76
- export const IP_ADDRESS_PORT_PATTERN = {
77
- pattern: new RegExp(`${IP_PATTERN_BASE.slice(0, -1)}(?::\\d+)?$`),
78
- tip: 'regexp_tip_ip_address',
79
- };
80
- export const INT_ZERO_PATTERN = {
81
- pattern: /^(0|\+?[1-9]\d*)$/,
82
- tip: 'regexp_tip_positive_integer_pattern_zero',
83
- };
84
- export const POSITIVE_INT_PATTERN = {
85
- pattern: /^[1-9]\d*$/,
86
- tip: 'regexp_tip_positive_integer_pattern',
87
- };
88
- export const POSITIVE_NUMBER_PATTERN = {
89
- pattern: /^([1-9]\d*(?:\.\d*)?|0*\.0*[1-9]\d*)$/,
90
- tip: 'regexp_tip_positive_number_pattern',
91
- };
92
- export const K8S_RESOURCE_NAME_BASE = {
93
- pattern: /^[\da-z]([\da-z-]*[\da-z])?$/,
94
- tip: 'regexp_tip_k8s_resource_name_base',
95
- };
96
- export const K8S_RESOURCE_LABEL_KEY_PREFIX_PATTERN = {
97
- pattern: /^[\da-z]([\da-z-]*[\da-z])?(\.[\da-z]([\da-z-]*[\da-z])?)*$/,
98
- tip: 'regexp_tip_resource_label_key_prefix',
99
- };
100
- // 不能直接用来校验 label key,需要使用 `k8sResourceLabelKeyValidator`
101
- export const K8S_RESOURCE_LABEL_KEY_NAME_PATTERN = {
102
- pattern: /^(([\dA-Za-z][\w.-]*)?[\dA-Za-z])$/,
103
- tip: 'k8s_resource_label_key_invalid',
104
- };
105
- export const K8S_RESOURCE_LABEL_VALUE_PATTERN = {
106
- pattern: /^(([\dA-Za-z][\w.-]*)?[\dA-Za-z])?$/,
107
- tip: 'k8s_resource_label_value_invalid',
108
- };
109
- export const K8S_RESOURCE_NAME_START_WITH_CHARS_ONLY = {
110
- pattern: /^[a-z]([\da-z-]*[\da-z])?$/,
111
- tip: 'regexp_tip_k8s_resource_name_start_with_chars_only',
112
- };
113
- export const HTTP_IP_OR_DOMAIN_PATTERN = {
114
- pattern: /^((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*)*$/,
115
- tip: 'domain_ip_placeholder',
116
- };
117
- export const HTTP_DUAL_IP_OR_DOMAIN_PATTERN = {
118
- pattern: /^((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*)*$/,
119
- tip: 'domain_ip_placeholder',
120
- };
121
- export const HTTP_ADDRESS_PATTERN = {
122
- pattern: /^(http|https):\/\/([\w.])\S*$/,
123
- tip: 'http_address_format_limit',
124
- };
125
- export const EMAIL_PATTERN = {
126
- pattern: /^[\w.-]+@[\w-]+(\.[\w-]+)+$/,
127
- tip: 'invalid_email',
128
- };
129
- export const IMAGE_TAG_PATTERN = {
130
- pattern: /^((sha256:[\da-f]{6,64})|(\w[\w.-]{0,127}))$/,
131
- tip: 'regexp_tip_image_tag',
132
- placeholder: 'image_tag_input_placeholder',
133
- };
134
- export const INT_PATTERN = {
135
- pattern: /^-?\d+$/,
136
- tip: 'regexp_tip_integer_pattern',
137
- };
138
- export const NUMBER_PATTERN = {
139
- pattern: /^-?\d+(\.\d*)?$/,
140
- tip: 'invalid_number',
141
- };
142
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0dGVybnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2R5bmFtaWMtcGx1Z2luLXNoYXJlZC9zcmMvY29uc3RhbnRzL3BhdHRlcm5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLGlDQUFpQyxDQUFDO0FBRXJFLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FDMUIsb0ZBQW9GLENBQUM7QUFFdkYsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQzVCLG9tQkFBb21CLENBQUM7QUFFdm1CLE1BQU0scUJBQXFCLEdBQUcsV0FBVyxDQUFDO0FBQzFDLE1BQU0saUJBQWlCLEdBQ3JCLHNIQUFzSCxDQUFDO0FBRXpILE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxVQUFrQixFQUFFLEVBQUU7SUFDaEQsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNwRSxPQUFPLEtBQUsscUJBQXFCLEtBQUssSUFBSSxJQUFJLGlCQUFpQixLQUFLLENBQUM7QUFDdkUsQ0FBQyxDQUFDO0FBRUYsTUFBTSx5QkFBeUIsR0FBRyxDQUFDLFVBQWtCLEVBQUUsRUFBRTtJQUN2RCxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3BFLE9BQU8sSUFBSSxVQUFVLFFBQVEscUJBQXFCLE9BQU8sSUFBSSxZQUFZLHFCQUFxQixRQUFRLElBQUksT0FBTyxpQkFBaUIsS0FBSyxDQUFDO0FBQzFJLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRztJQUMxQixPQUFPLEVBQ0wsK0ZBQStGO0lBQ2pHLEdBQUcsRUFBRSxjQUFjO0NB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N0IsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHO0lBQzVDLE9BQU8sRUFDTCxpMENBQWkwQztJQUNuMEMsR0FBRyxFQUFFLHVCQUF1QjtDQUM3QixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUc7SUFDbEMsT0FBTyxFQUFFLCtCQUErQjtJQUN4QyxHQUFHLEVBQUUsMkJBQTJCO0NBQ2pDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUc7SUFDM0IsT0FBTyxFQUFFLDZCQUE2QjtJQUN0QyxHQUFHLEVBQUUsZUFBZTtDQUNyQixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUc7SUFDL0IsT0FBTyxFQUFFLDhDQUE4QztJQUN2RCxHQUFHLEVBQUUsc0JBQXNCO0lBQzNCLFdBQVcsRUFBRSw2QkFBNkI7Q0FDM0MsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRztJQUN6QixPQUFPLEVBQUUsU0FBUztJQUNsQixHQUFHLEVBQUUsNEJBQTRCO0NBQ2xDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDNUIsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixHQUFHLEVBQUUsZ0JBQWdCO0NBQ3RCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgRE9NQUlOX1BBVFRFUk5fQkFTRSA9ICdeKFtcXFxcZGEtei4tXSspXFxcXC4oW2Etei5dezIsNn0pJCc7XG5cbmV4cG9ydCBjb25zdCBJUF9QQVRURVJOX0JBU0UgPVxuICAnXig/Oig/OjI1WzAtNV18MlswLTRdXFxcXGR8WzAxXT9cXFxcZHsxLDJ9KVxcXFwuKXszfSg/OjI1WzAtNV18MlswLTRdXFxcXGR8WzAxXT9cXFxcZHsxLDJ9KSQnO1xuXG5leHBvcnQgY29uc3QgSVBWNl9QQVRURVJOX0JBU0UgPVxuICAnXigoWzAtOWEtZkEtRl17MSw0fTopezd9WzAtOWEtZkEtRl17MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsN306fChbMC05YS1mQS1GXXsxLDR9Oil7MSw2fTpbMC05YS1mQS1GXXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw1fSg6WzAtOWEtZkEtRl17MSw0fSl7MSwyfXwoWzAtOWEtZkEtRl17MSw0fTopezEsNH0oOlswLTlhLWZBLUZdezEsNH0pezEsM318KFswLTlhLWZBLUZdezEsNH06KXsxLDN9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSwyfSg6WzAtOWEtZkEtRl17MSw0fSl7MSw1fXxbMC05YS1mQS1GXXsxLDR9OigoOlswLTlhLWZBLUZdezEsNH0pezEsNn0pfDooKDpbMC05YS1mQS1GXXsxLDR9KXsxLDd9fDopfGZlODA6KDpbMC05YS1mQS1GXXswLDR9KXswLDR9JVswLTlhLXpBLVpdK3w6OihmZmZmKDowezEsNH0pPzopPygoMjVbMC01XXwoMlswLTRdfDE/WzAtOV0pP1swLTldKS4pezN9KDI1WzAtNV18KDJbMC00XXwxP1swLTldKT9bMC05XSl8KFswLTlhLWZBLUZdezEsNH06KXsxLDR9OigoMjVbMC01XXwoMlswLTRdfDE/WzAtOV0pP1swLTldKS4pezN9KDI1WzAtNV18KDJbMC00XXwxP1swLTldKT9bMC05XSkpJCc7XG5cbmNvbnN0IFBST1RPQ09MX1BBVFRFUk5fQkFTRSA9ICdodHRwcz86Ly8nO1xuY29uc3QgUE9SVF9QQVRURVJOX0JBU0UgPVxuICAnKDooNjU1M1swLTVdfDY1NVswLTJdXFxcXGR8NjVbMC00XVxcXFxkXFxcXGR8NlswLTRdXFxcXGRcXFxcZFxcXFxkfFsxLTVdXFxcXGRcXFxcZFxcXFxkXFxcXGR8WzEtOV1cXFxcZFxcXFxkXFxcXGR8WzEtOV1cXFxcZFxcXFxkfFsxLTldXFxcXGR8WzEtOV0pKSc7XG5cbmNvbnN0IGFkZFBvcnRBbmRQcm90b2NvbCA9IChwYXR0ZXJuU3RyOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgbWFpbiA9IHBhdHRlcm5TdHIucmVwbGFjZSgvKF5cXF4pPy8sICcnKS5yZXBsYWNlKC8oXFwkPykkLywgJycpO1xuICByZXR1cm4gYF4oJHtQUk9UT0NPTF9QQVRURVJOX0JBU0V9KT8ke21haW59KCR7UE9SVF9QQVRURVJOX0JBU0V9KT8kYDtcbn07XG5cbmNvbnN0IGFkZFBvcnRBbmRQcm90b2NvbEZvcklwdjYgPSAocGF0dGVyblN0cjogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IG1haW4gPSBwYXR0ZXJuU3RyLnJlcGxhY2UoLyheXFxeKT8vLCAnJykucmVwbGFjZSgvKFxcJD8pJC8sICcnKTtcbiAgcmV0dXJuIGAoJHtwYXR0ZXJuU3RyfSl8KF4oJHtQUk9UT0NPTF9QQVRURVJOX0JBU0V9KVxcXFxbJHttYWlufVxcXFxdJCl8KF4oJHtQUk9UT0NPTF9QQVRURVJOX0JBU0V9KT9cXFxcWyR7bWFpbn1cXFxcXSgke1BPUlRfUEFUVEVSTl9CQVNFfSkkKWA7XG59O1xuXG5leHBvcnQgY29uc3QgUE9SVF9QQVRURVJOID0ge1xuICBwYXR0ZXJuOlxuICAgIC8oXlsxLTldXFxkezAsM30kKXwoXlsxLTVdXFxkezR9JCl8Xig2WzAtNF1cXGR7M30kKXwoXjY1WzAtNF1cXGR7Mn0kKXwoXjY1NVswLTJdXFxkJCl8KF42NTUzWzAtNV0kKS8sXG4gIHRpcDogJ2ludmFsaWRfcG9ydCcsXG59O1xuXG4vLyBpbmNsdWRlIGlwdjQsIGRvbWFpblxuZXhwb3J0IGNvbnN0IElQX0FERFJFU1NfSE9TVE5BTUVfUEFUVEVSTiA9IHtcbiAgcGF0dGVybjogbmV3IFJlZ0V4cChgKCR7SVBfUEFUVEVSTl9CQVNFfSl8KCR7RE9NQUlOX1BBVFRFUk5fQkFTRX0pYCksXG4gIHRpcDogJ3JlZ2V4cF90aXBfaXBfYWRkcmVzc19vcl9ob3N0bmFtZScsXG59O1xuXG4vLyBpbmNsdWRlIGlwdjYsIGRvbWFpblxuZXhwb3J0IGNvbnN0IElQVjZfQUREUkVTU19IT1NUTkFNRV9QQVRURVJOID0ge1xuICBwYXR0ZXJuOiBuZXcgUmVnRXhwKGAoJHtJUFY2X1BBVFRFUk5fQkFTRX0pfCgke0RPTUFJTl9QQVRURVJOX0JBU0V9KWApLFxuICB0aXA6ICdyZWdleHBfdGlwX2lwdjZfYWRkcmVzc19vcl9ob3N0bmFtZScsXG59O1xuXG4vLyBpbmNsdWRlIGlwdjQsIGRvbWFpbiwgYW5kIHN1cHBvcnQgcG9ydCBhbmQgcHJvdG9jb2xcbmV4cG9ydCBjb25zdCBJUF9BRERSRVNTX0hPU1ROQU1FX1BPUlRfUEFUVEVSTiA9IHtcbiAgcGF0dGVybjogbmV3IFJlZ0V4cChcbiAgICBgKCR7YWRkUG9ydEFuZFByb3RvY29sKElQX1BBVFRFUk5fQkFTRSl9KXwoJHthZGRQb3J0QW5kUHJvdG9jb2woXG4gICAgICBET01BSU5fUEFUVEVSTl9CQVNFLFxuICAgICl9KWAsXG4gICksXG4gIHRpcDogJ3JlZ2V4cF90aXBfaXBfYWRkcmVzc19vcl9ob3N0bmFtZScsXG59O1xuXG4vLyBpbmNsdWRlIGlwdjYsIGRvbWFpbiwgYW5kIHN1cHBvcnQgcG9ydCBhbmQgcHJvdG9jb2xcbmV4cG9ydCBjb25zdCBJUFY2X0FERFJFU1NfSE9TVE5BTUVfUE9SVF9QQVRURVJOID0ge1xuICBwYXR0ZXJuOiBuZXcgUmVnRXhwKFxuICAgIGAoJHthZGRQb3J0QW5kUHJvdG9jb2xGb3JJcHY2KElQVjZfUEFUVEVSTl9CQVNFKX0pfCgke2FkZFBvcnRBbmRQcm90b2NvbChcbiAgICAgIERPTUFJTl9QQVRURVJOX0JBU0UsXG4gICAgKX0pYCxcbiAgKSxcbiAgdGlwOiAncmVnZXhwX3RpcF9pcHY2X2FkZHJlc3Nfb3JfaG9zdG5hbWUnLFxufTtcblxuLy8gaW5jbHVkZSAgaXB2NCwgaXB2NiwgZG9tYWluLCBhbmQgc3VwcG9ydCBwb3J0IGFuZCBwcm90b2NvbFxuZXhwb3J0IGNvbnN0IElQVjRfSVBWNl9BRERSRVNTX0hPU1ROQU1FX1BPUlRfUEFUVEVSTiA9IHtcbiAgcGF0dGVybjogbmV3IFJlZ0V4cChcbiAgICBgKCR7YWRkUG9ydEFuZFByb3RvY29sKElQX1BBVFRFUk5fQkFTRSl9KXwoJHthZGRQb3J0QW5kUHJvdG9jb2xGb3JJcHY2KFxuICAgICAgSVBWNl9QQVRURVJOX0JBU0UsXG4gICAgKX0pfCgke2FkZFBvcnRBbmRQcm90b2NvbChET01BSU5fUEFUVEVSTl9CQVNFKX0pYCxcbiAgKSxcbiAgdGlwOiAncmVnZXhwX3RpcF9pcHY0X2lwdjZfYWRkcmVzc19vcl9ob3N0bmFtZScsXG59O1xuXG4vLyBpbmNsdWRlIGlwdjQsIGlwdjYsIGRvbWFpblxuZXhwb3J0IGNvbnN0IElQX0FERFJFU1NfSE9TVE5BTUVfUEFUVEVSTl9FWFRFTkQgPSB7XG4gIHBhdHRlcm46IG5ldyBSZWdFeHAoXG4gICAgYCgke0lQX1BBVFRFUk5fQkFTRX0pfCgke0RPTUFJTl9QQVRURVJOX0JBU0V9KXwoJHtJUFY2X1BBVFRFUk5fQkFTRX0pYCxcbiAgKSxcbiAgdGlwOiAncmVnZXhwX3RpcF9pcF9hZGRyZXNzX29yX2hvc3RuYW1lJyxcbn07XG5cbmV4cG9ydCBjb25zdCBJUF9BRERSRVNTX1NVQk5FVF9QQVRURVJOID0ge1xuICBwYXR0ZXJuOlxuICAgIC9eKChcXGR8WzEtOV1cXGR8MVxcZHsyfXwyWzAtNF1cXGR8MjVbMC01XSlcXC4pezN9KFxcZHxbMS05XVxcZHwxXFxkezJ9fDJbMC00XVxcZHwyNVswLTVdKVxcL1xcZCskLyxcbiAgdGlwOiAncmVnZXhwX3RpcF9pcF9hZGRyZXNzX3dpdGhfc3VibmV0Jyxcbn07XG5cbmV4cG9ydCBjb25zdCBET01BSU5fUEFUVEVSTiA9IHtcbiAgcGF0dGVybjogbmV3IFJlZ0V4cChET01BSU5fUEFUVEVSTl9CQVNFKSxcbiAgcGxhY2Vob2xkZXI6ICdkb21haW5fcmVnZXhwX3BsYWNlaG9sZGVyJyxcbiAgdGlwOiAnZG9tYWluX3JlZ2V4cF90aXAnLFxufTtcblxuZXhwb3J0IGNvbnN0IElQX0FERFJFU1NfUEFUVEVSTiA9IHtcbiAgcGF0dGVybjpcbiAgICAvXig/Oig/OjI1WzAtNV18MlswLTRdXFxkfFswMV0/XFxkezEsMn0pXFwuKXszfSg/OjI1WzAtNV18MlswLTRdXFxkfFswMV0/XFxkezEsMn0pJC8sXG4gIHBsYWNlaG9sZGVyOiAnaXBfYWRkcmVzc19wbGFjZWhvbGRlcicsXG4gIHRpcDogJ3JlZ2V4cF90aXBfaXBfYWRkcmVzcycsXG59O1xuXG5leHBvcnQgY29uc3QgSVBfUEFUVEVSTiA9IHtcbiAgcGF0dGVybjpcbiAgICAvXigoMig1WzAtNV18WzAtNF1cXGQpKXxbMDFdP1xcZHsxLDJ9KShcXC4oKDIoNVswLTVdfFswLTRdXFxkKSl8WzAxXT9cXGR7MSwyfSkpezN9JC8sXG4gIHRpcDogJ2ludmFsaWRfaXAnLFxufTtcblxuZXhwb3J0IGNvbnN0IElQX1Y2X1BBVFRFUk4gPSB7XG4gIHBhdHRlcm46IG5ldyBSZWdFeHAoYCR7SVBWNl9QQVRURVJOX0JBU0V9YCksXG4gIHRpcDogJ2ludmFsaWRfaXAnLFxufTtcblxuZXhwb3J0IGNvbnN0IElQX1Y2X0FERFJFU1NfUEFUVEVSTiA9IHtcbiAgcGF0dGVybjogbmV3IFJlZ0V4cChJUFY2X1BBVFRFUk5fQkFTRSksXG59O1xuXG5leHBvcnQgY29uc3QgSVBfVjRfT1JfVjZfUEFUVEVSTiA9IHtcbiAgcGF0dGVybjogbmV3IFJlZ0V4cChgKCR7SVBfUEFUVEVSTl9CQVNFfSl8KCR7SVBWNl9QQVRURVJOX0JBU0V9KWApLFxufTtcblxuZXhwb3J0IGNvbnN0IElQX0FERFJFU1NfUE9SVF9QQVRURVJOID0ge1xuICBwYXR0ZXJuOiBuZXcgUmVnRXhwKGAke0lQX1BBVFRFUk5fQkFTRS5zbGljZSgwLCAtMSl9KD86OlxcXFxkKyk/JGApLFxuICB0aXA6ICdyZWdleHBfdGlwX2lwX2FkZHJlc3MnLFxufTtcblxuZXhwb3J0IGNvbnN0IElOVF9aRVJPX1BBVFRFUk4gPSB7XG4gIHBhdHRlcm46IC9eKDB8XFwrP1sxLTldXFxkKikkLyxcbiAgdGlwOiAncmVnZXhwX3RpcF9wb3NpdGl2ZV9pbnRlZ2VyX3BhdHRlcm5femVybycsXG59O1xuXG5leHBvcnQgY29uc3QgUE9TSVRJVkVfSU5UX1BBVFRFUk4gPSB7XG4gIHBhdHRlcm46IC9eWzEtOV1cXGQqJC8sXG4gIHRpcDogJ3JlZ2V4cF90aXBfcG9zaXRpdmVfaW50ZWdlcl9wYXR0ZXJuJyxcbn07XG5cbmV4cG9ydCBjb25zdCBQT1NJVElWRV9OVU1CRVJfUEFUVEVSTiA9IHtcbiAgcGF0dGVybjogL14oWzEtOV1cXGQqKD86XFwuXFxkKik/fDAqXFwuMCpbMS05XVxcZCopJC8sXG4gIHRpcDogJ3JlZ2V4cF90aXBfcG9zaXRpdmVfbnVtYmVyX3BhdHRlcm4nLFxufTtcblxuZXhwb3J0IGNvbnN0IEs4U19SRVNPVVJDRV9OQU1FX0JBU0UgPSB7XG4gIHBhdHRlcm46IC9eW1xcZGEtel0oW1xcZGEtei1dKltcXGRhLXpdKT8kLyxcbiAgdGlwOiAncmVnZXhwX3RpcF9rOHNfcmVzb3VyY2VfbmFtZV9iYXNlJyxcbn07XG5cbmV4cG9ydCBjb25zdCBLOFNfUkVTT1VSQ0VfTEFCRUxfS0VZX1BSRUZJWF9QQVRURVJOID0ge1xuICBwYXR0ZXJuOiAvXltcXGRhLXpdKFtcXGRhLXotXSpbXFxkYS16XSk/KFxcLltcXGRhLXpdKFtcXGRhLXotXSpbXFxkYS16XSk/KSokLyxcbiAgdGlwOiAncmVnZXhwX3RpcF9yZXNvdXJjZV9sYWJlbF9rZXlfcHJlZml4Jyxcbn07XG5cbi8vIOS4jeiDveebtOaOpeeUqOadpeagoemqjCBsYWJlbCBrZXnvvIzpnIDopoHkvb/nlKggYGs4c1Jlc291cmNlTGFiZWxLZXlWYWxpZGF0b3JgXG5leHBvcnQgY29uc3QgSzhTX1JFU09VUkNFX0xBQkVMX0tFWV9OQU1FX1BBVFRFUk4gPSB7XG4gIHBhdHRlcm46IC9eKChbXFxkQS1aYS16XVtcXHcuLV0qKT9bXFxkQS1aYS16XSkkLyxcbiAgdGlwOiAnazhzX3Jlc291cmNlX2xhYmVsX2tleV9pbnZhbGlkJyxcbn07XG5cbmV4cG9ydCBjb25zdCBLOFNfUkVTT1VSQ0VfTEFCRUxfVkFMVUVfUEFUVEVSTiA9IHtcbiAgcGF0dGVybjogL14oKFtcXGRBLVphLXpdW1xcdy4tXSopP1tcXGRBLVphLXpdKT8kLyxcbiAgdGlwOiAnazhzX3Jlc291cmNlX2xhYmVsX3ZhbHVlX2ludmFsaWQnLFxufTtcblxuZXhwb3J0IGNvbnN0IEs4U19SRVNPVVJDRV9OQU1FX1NUQVJUX1dJVEhfQ0hBUlNfT05MWSA9IHtcbiAgcGF0dGVybjogL15bYS16XShbXFxkYS16LV0qW1xcZGEtel0pPyQvLFxuICB0aXA6ICdyZWdleHBfdGlwX2s4c19yZXNvdXJjZV9uYW1lX3N0YXJ0X3dpdGhfY2hhcnNfb25seScsXG59O1xuXG5leHBvcnQgY29uc3QgSFRUUF9JUF9PUl9ET01BSU5fUEFUVEVSTiA9IHtcbiAgcGF0dGVybjpcbiAgICAvXigoaHR0cHxodHRwcyk6XFwvXFwvKSgoKCgyKDVbMC01XXxbMC00XVxcZCkpfFswMV0/XFxkezEsMn0pKFxcLigoMig1WzAtNV18WzAtNF1cXGQpKXxbMDFdP1xcZHsxLDJ9KSl7M30pfCgoKFtcXGRBLVphLXotXSpbXFxkQS1aYS16XSlcXC4pKihbQS1aYS16XXxbQS1aYS16XVtcXGRBLVphLXotXSpbXFxkQS1aYS16XSkpKSg6KChbMS05XVxcZHswLDN9KXwoWzEtNV1cXGR7NH0pfCg2WzAtNF1cXGR7M30pfCg2NVswLTRdXFxkezJ9KXwoNjU1WzAtMl1cXGQpfCg2NTUzWzAtNV0pKSk/KFxcL1xcUyopKiQvLFxuICB0aXA6ICdkb21haW5faXBfcGxhY2Vob2xkZXInLFxufTtcblxuZXhwb3J0IGNvbnN0IEhUVFBfRFVBTF9JUF9PUl9ET01BSU5fUEFUVEVSTiA9IHtcbiAgcGF0dGVybjpcbiAgICAvXigoaHR0cHxodHRwcyk6XFwvXFwvKSgoKCgyKDVbMC01XXxbMC00XVxcZCkpfFswMV0/XFxkezEsMn0pKFxcLigoMig1WzAtNV18WzAtNF1cXGQpKXxbMDFdP1xcZHsxLDJ9KSl7M30pfCgoKFtcXGRBLVphLXotXSpbXFxkQS1aYS16XSlcXC4pKihbQS1aYS16XXxbQS1aYS16XVtcXGRBLVphLXotXSpbXFxkQS1aYS16XSkpfChcXFsoKChbMC05QS1GYS1mXXsxLDR9Oil7N30oWzAtOUEtRmEtZl17MSw0fXw6KSl8KChbMC05QS1GYS1mXXsxLDR9Oil7Nn0oOlswLTlBLUZhLWZdezEsNH18KCgyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldP1xcZCkoXFwuKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKSl7M30pfDopKXwoKFswLTlBLUZhLWZdezEsNH06KXs1fSgoKDpbMC05QS1GYS1mXXsxLDR9KXsxLDJ9KXw6KCgyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldP1xcZCkoXFwuKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKSl7M30pfDopKXwoKFswLTlBLUZhLWZdezEsNH06KXs0fSgoKDpbMC05QS1GYS1mXXsxLDR9KXsxLDN9KXwoKDpbMC05QS1GYS1mXXsxLDR9KT86KCgyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldP1xcZCkoXFwuKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKSl7M30pKXw6KSl8KChbMC05QS1GYS1mXXsxLDR9Oil7M30oKCg6WzAtOUEtRmEtZl17MSw0fSl7MSw0fSl8KCg6WzAtOUEtRmEtZl17MSw0fSl7MCwyfTooKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKShcXC4oMjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKXszfSkpfDopKXwoKFswLTlBLUZhLWZdezEsNH06KXsyfSgoKDpbMC05QS1GYS1mXXsxLDR9KXsxLDV9KXwoKDpbMC05QS1GYS1mXXsxLDR9KXswLDN9OigoMjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKFxcLigyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldP1xcZCkpezN9KSl8OikpfCgoWzAtOUEtRmEtZl17MSw0fTopKCgoOlswLTlBLUZhLWZdezEsNH0pezEsNn0pfCgoOlswLTlBLUZhLWZdezEsNH0pezAsNH06KCgyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFsxLTldP1xcZCkoXFwuKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKSl7M30pKXw6KSl8KDooKCg6WzAtOUEtRmEtZl17MSw0fSl7MSw3fSl8KCg6WzAtOUEtRmEtZl17MSw0fSl7MCw1fTooKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8WzEtOV0/XFxkKShcXC4oMjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxbMS05XT9cXGQpKXszfSkpfDopKSkoJS4rKT9cXF0pKSg6KChbMS05XVxcZHswLDN9KXwoWzEtNV1cXGR7NH0pfCg2WzAtNF1cXGR7M30pfCg2NVswLTRdXFxkezJ9KXwoNjU1WzAtMl1cXGQpfCg2NTUzWzAtNV0pKSk/KFxcL1xcUyopKiQvLFxuICB0aXA6ICdkb21haW5faXBfcGxhY2Vob2xkZXInLFxufTtcblxuZXhwb3J0IGNvbnN0IEhUVFBfQUREUkVTU19QQVRURVJOID0ge1xuICBwYXR0ZXJuOiAvXihodHRwfGh0dHBzKTpcXC9cXC8oW1xcdy5dKVxcUyokLyxcbiAgdGlwOiAnaHR0cF9hZGRyZXNzX2Zvcm1hdF9saW1pdCcsXG59O1xuXG5leHBvcnQgY29uc3QgRU1BSUxfUEFUVEVSTiA9IHtcbiAgcGF0dGVybjogL15bXFx3Li1dK0BbXFx3LV0rKFxcLltcXHctXSspKyQvLFxuICB0aXA6ICdpbnZhbGlkX2VtYWlsJyxcbn07XG5cbmV4cG9ydCBjb25zdCBJTUFHRV9UQUdfUEFUVEVSTiA9IHtcbiAgcGF0dGVybjogL14oKHNoYTI1NjpbXFxkYS1mXXs2LDY0fSl8KFxcd1tcXHcuLV17MCwxMjd9KSkkLyxcbiAgdGlwOiAncmVnZXhwX3RpcF9pbWFnZV90YWcnLFxuICBwbGFjZWhvbGRlcjogJ2ltYWdlX3RhZ19pbnB1dF9wbGFjZWhvbGRlcicsXG59O1xuXG5leHBvcnQgY29uc3QgSU5UX1BBVFRFUk4gPSB7XG4gIHBhdHRlcm46IC9eLT9cXGQrJC8sXG4gIHRpcDogJ3JlZ2V4cF90aXBfaW50ZWdlcl9wYXR0ZXJuJyxcbn07XG5cbmV4cG9ydCBjb25zdCBOVU1CRVJfUEFUVEVSTiA9IHtcbiAgcGF0dGVybjogL14tP1xcZCsoXFwuXFxkKik/JC8sXG4gIHRpcDogJ2ludmFsaWRfbnVtYmVyJyxcbn07XG4iXX0=
@@ -1,424 +0,0 @@
1
- const CRD_GROUP = 'crd.alauda.io';
2
- const AIOPS_GROUP = 'aiops.alauda.io';
3
- const AUTH_GROUP = 'auth.alauda.io';
4
- const COREOS_OPERATOR_GROUP = 'operators.coreos.com';
5
- const APP_GROUP = 'app.alauda.io';
6
- const STORAGE_GROUP = 'storage.k8s.io';
7
- const TKE_PLATFORM_GROUP = 'platform.tkestack.io';
8
- const CLUSTER_API_GROUP = 'cluster.alauda.io';
9
- export const AIT_API_GROUP = 'ait.alauda.io';
10
- export const OAM_GROUP = 'core.oam.dev';
11
- export const ARGOCD_GROUP = 'argoproj.io';
12
- export const MACHINE_API_GROUP = 'machine.alauda.io';
13
- export const VOLUME_SNAPSHOT_GROUP = 'snapshot.storage.k8s.io';
14
- export const K8S_CORE_API_GROUP = 'core.kubernetes.io';
15
- export const K8S_APP_API_GROUP = 'app.k8s.io';
16
- export const COMMON_RESOURCE_DEFINITIONS = {
17
- ALAUDA_LOADBALANCER2: {
18
- apiGroup: CRD_GROUP,
19
- type: 'alaudaloadbalancer2',
20
- },
21
- ALB2: {
22
- apiGroup: CRD_GROUP,
23
- apiVersion: 'v2beta1',
24
- type: 'alaudaloadbalancer2',
25
- },
26
- HELM_REQUEST: {
27
- type: 'helmrequests',
28
- apiGroup: APP_GROUP,
29
- apiVersion: 'v1alpha1',
30
- },
31
- // TODO: 只提供云边使用,后续容器平台需要升级到 v1
32
- HELM_REQUEST_V1: {
33
- type: 'helmrequests',
34
- apiGroup: APP_GROUP,
35
- apiVersion: 'v1',
36
- },
37
- DEPLOYMENT: {
38
- apiGroup: 'apps',
39
- type: 'deployments',
40
- },
41
- DAEMONSET: {
42
- apiGroup: 'apps',
43
- type: 'daemonsets',
44
- },
45
- STATEFULSET: {
46
- apiGroup: 'apps',
47
- type: 'statefulsets',
48
- },
49
- FRONTEND: {
50
- apiGroup: CRD_GROUP,
51
- type: 'frontends',
52
- },
53
- RULE: {
54
- apiGroup: CRD_GROUP,
55
- type: 'rules',
56
- },
57
- POD: {
58
- type: 'pods',
59
- },
60
- PODS_EXEC: {
61
- type: 'pods/exec',
62
- },
63
- PODS_ROOT_EXEC: {
64
- type: 'pods/root-exec',
65
- },
66
- CONFIG_MAP: {
67
- type: 'configmaps',
68
- },
69
- ALERT_TEMPLATE: {
70
- apiGroup: AIOPS_GROUP,
71
- apiVersion: 'v1beta1',
72
- type: 'alerttemplates',
73
- },
74
- APPLICATION: {
75
- apiGroup: K8S_APP_API_GROUP,
76
- apiVersion: 'v1beta1',
77
- type: 'applications',
78
- },
79
- APPLICATION_HISTORY: {
80
- apiGroup: K8S_APP_API_GROUP,
81
- apiVersion: 'v1beta1',
82
- type: 'applicationhistories',
83
- },
84
- CLUSTER: {
85
- apiGroup: 'clusterregistry.k8s.io',
86
- apiVersion: 'v1alpha1',
87
- type: 'clusters',
88
- },
89
- CLUSTER_VIEW: {
90
- apiGroup: 'cluster.alauda.io',
91
- apiVersion: 'v1',
92
- type: 'clusterviews',
93
- },
94
- DAEMON_SET: {
95
- apiGroup: 'apps',
96
- type: 'daemonsets',
97
- },
98
- STATEFUL_SET: {
99
- apiGroup: 'apps',
100
- type: 'statefulsets',
101
- },
102
- DOMAIN: {
103
- apiGroup: CRD_GROUP,
104
- apiVersion: 'v2',
105
- type: 'domains',
106
- },
107
- FEATURE: {
108
- apiGroup: 'infrastructure.alauda.io',
109
- apiVersion: 'v1alpha1',
110
- type: 'features',
111
- },
112
- ALAUDA_FEATURE_GATE: {
113
- apiGroup: 'alauda.io',
114
- apiVersion: 'v1',
115
- type: 'alaudafeaturegates',
116
- },
117
- CLUSTER_ALAUDA_FEATURE_GATE: {
118
- apiGroup: 'alauda.io',
119
- apiVersion: 'v1',
120
- type: 'clusteralaudafeaturegates',
121
- },
122
- HORIZONTAL_POD_AUTOSCALER: {
123
- apiGroup: 'autoscaling',
124
- apiVersion: 'v2',
125
- type: 'horizontalpodautoscalers',
126
- },
127
- LOG: {
128
- apiGroup: AIOPS_GROUP,
129
- apiVersion: 'v1beta1',
130
- type: 'logs',
131
- },
132
- PROJECT: {
133
- apiGroup: AUTH_GROUP,
134
- type: 'projects',
135
- },
136
- PROMETHEUS_RULE: {
137
- apiGroup: 'monitoring.coreos.com',
138
- apiVersion: 'v1',
139
- type: 'prometheusrules',
140
- },
141
- ALERT_HISTORY: {
142
- apiGroup: AIOPS_GROUP,
143
- type: 'alerthistories',
144
- },
145
- SELF_SUBJECT_ACCESS_REVIEW: {
146
- apiGroup: 'authorization.k8s.io',
147
- type: 'selfsubjectaccessreviews',
148
- },
149
- VIEW: {
150
- apiGroup: AUTH_GROUP,
151
- type: 'views',
152
- },
153
- SERVICE: {
154
- type: 'services',
155
- },
156
- LIMIT_RANGE: {
157
- type: 'limitranges',
158
- },
159
- SECRET: {
160
- type: 'secrets',
161
- },
162
- CRON_JOB: {
163
- apiGroup: 'batch',
164
- apiVersion: 'v1',
165
- type: 'cronjobs',
166
- },
167
- ADVANCED_CRON_JOB: {
168
- type: 'advancedcronjobs',
169
- apiGroup: 'operator.alauda.io',
170
- apiVersion: 'v1alpha1',
171
- },
172
- JOB: {
173
- apiGroup: 'batch',
174
- type: 'jobs',
175
- },
176
- INGRESS: {
177
- apiGroup: 'networking.k8s.io',
178
- type: 'ingresses',
179
- },
180
- PERSISTENT_VOLUME_CLAIM: {
181
- type: 'persistentvolumeclaims',
182
- },
183
- NAMESPACE: {
184
- type: 'namespaces',
185
- },
186
- NODE: {
187
- type: 'nodes',
188
- },
189
- NODE_METRICS: {
190
- apiGroup: 'metrics.k8s.io',
191
- apiVersion: 'v1beta1',
192
- type: 'nodes',
193
- },
194
- PV: {
195
- type: 'persistentvolumes',
196
- },
197
- CRD: {
198
- apiGroup: 'apiextensions.k8s.io',
199
- type: 'customresourcedefinitions',
200
- },
201
- CHART_REPO: {
202
- type: 'chartrepos',
203
- apiGroup: APP_GROUP,
204
- apiVersion: 'v1beta1',
205
- },
206
- CHART: {
207
- type: 'charts',
208
- apiGroup: APP_GROUP,
209
- apiVersion: 'v1alpha1',
210
- },
211
- NETWORK_POLICY: {
212
- apiGroup: 'networking.k8s.io',
213
- type: 'networkpolicies',
214
- },
215
- SERVICE_ACCOUNT: {
216
- type: 'serviceaccounts',
217
- },
218
- REPLICA_SET: {
219
- apiGroup: 'apps',
220
- type: 'replicasets',
221
- },
222
- POD_SECURITY_POLICY: {
223
- apiGroup: 'policy',
224
- apiVersion: 'v1beta1',
225
- type: 'podsecuritypolicies',
226
- },
227
- NAMESPACE_OVERVIEW: {
228
- apiGroup: 'k8s.io',
229
- type: 'namespaceoverviews',
230
- },
231
- CSP: {
232
- apiGroup: 'product.alauda.io',
233
- type: 'csps',
234
- },
235
- RESOURCE_QUOTA: {
236
- type: 'resourcequotas',
237
- },
238
- CLUSTER_NETWORK_POLICY: {
239
- apiGroup: CRD_GROUP,
240
- type: 'clusternetworkpolicies',
241
- },
242
- PROJECT_QUOTA: {
243
- apiGroup: 'auth.alauda.io',
244
- apiVersion: 'v1',
245
- type: 'projectquotas',
246
- },
247
- TKE_CLUSTER: {
248
- apiGroup: TKE_PLATFORM_GROUP,
249
- type: 'clusters',
250
- },
251
- TKE_MACHINE: {
252
- apiGroup: TKE_PLATFORM_GROUP,
253
- type: 'machines',
254
- },
255
- MACHINE: {
256
- apiGroup: MACHINE_API_GROUP,
257
- apiVersion: 'v1beta1',
258
- type: 'machines',
259
- },
260
- NODE_GROUP: {
261
- apiGroup: 'security.alauda.io',
262
- apiVersion: 'v1beta1',
263
- type: 'nodegroups',
264
- },
265
- CLUSTERSERVICEVERSION: {
266
- apiGroup: COREOS_OPERATOR_GROUP,
267
- apiVersion: 'v1alpha1',
268
- type: 'clusterserviceversions',
269
- },
270
- TENANT: {
271
- apiGroup: 'minio.min.io',
272
- apiVersion: 'v2',
273
- type: 'tenants',
274
- },
275
- SUBSCRIPTION: {
276
- apiGroup: COREOS_OPERATOR_GROUP,
277
- apiVersion: 'v1alpha1',
278
- type: 'subscriptions',
279
- },
280
- PACKAGE_MANIFEST: {
281
- apiGroup: 'packages.operators.coreos.com',
282
- apiVersion: 'v1',
283
- type: 'packagemanifests',
284
- },
285
- BUCKET_CLASS: {
286
- apiGroup: 'objectstorage.k8s.io',
287
- apiVersion: 'v1alpha1',
288
- type: 'bucketclasses',
289
- },
290
- PRODUCT_CONFIG: {
291
- type: 'productconfigs',
292
- apiGroup: 'alauda.io',
293
- apiVersion: 'v1alpha1',
294
- },
295
- STORAGE_CLASS: {
296
- type: 'storageclasses',
297
- apiGroup: STORAGE_GROUP,
298
- },
299
- VOLUME_SNAPSHOT_CLASS: {
300
- type: 'volumesnapshotclasses',
301
- apiGroup: VOLUME_SNAPSHOT_GROUP,
302
- apiVersion: 'v1',
303
- },
304
- PRODUCT_BASE: {
305
- type: 'productbases',
306
- apiGroup: 'product.alauda.io',
307
- apiVersion: 'v1alpha1',
308
- },
309
- MODULE_INFO: {
310
- type: 'moduleinfoes',
311
- apiVersion: 'v1alpha1',
312
- apiGroup: CLUSTER_API_GROUP,
313
- },
314
- MODULE_CONFIG: {
315
- apiGroup: CLUSTER_API_GROUP,
316
- apiVersion: 'v1alpha1',
317
- type: 'moduleconfigs',
318
- },
319
- MODULE_PLUGIN: {
320
- apiGroup: CLUSTER_API_GROUP,
321
- apiVersion: 'v1alpha1',
322
- type: 'moduleplugins',
323
- },
324
- PRODUCT_ENTRY: {
325
- type: 'productentries',
326
- apiGroup: 'alauda.io',
327
- apiVersion: 'v1alpha1',
328
- },
329
- PRODUCT_DOCS_ENTRY: {
330
- type: 'productdocsentries',
331
- apiGroup: 'alauda.io',
332
- apiVersion: 'v1alpha1',
333
- },
334
- SERVICEMESH_GROUP: {
335
- apiGroup: 'asm.alauda.io',
336
- apiVersion: 'v1alpha1',
337
- type: 'servicemeshgroups',
338
- },
339
- CLUSTER_MODULE: {
340
- type: 'clustermodules',
341
- apiVersion: 'v1alpha1',
342
- apiGroup: CLUSTER_API_GROUP,
343
- },
344
- USER_SECURITY_POLICY: {
345
- type: 'userpolicies',
346
- apiGroup: 'security.alauda.io',
347
- apiVersion: 'v1alpha1',
348
- },
349
- CONNECTOR: {
350
- type: 'connectors',
351
- apiGroup: 'dex.coreos.com',
352
- },
353
- ACCESS_TOKEN_INFO: {
354
- type: 'accesstokeninfoes',
355
- apiGroup: AUTH_GROUP,
356
- },
357
- FUNCTION_RESOURCE: {
358
- type: 'functionresources',
359
- apiGroup: AUTH_GROUP,
360
- apiVersion: 'v1beta1',
361
- },
362
- USER_BINDING: {
363
- type: 'userbindings',
364
- apiGroup: AUTH_GROUP,
365
- apiVersion: 'v1',
366
- },
367
- USER: {
368
- type: 'users',
369
- apiGroup: AUTH_GROUP,
370
- },
371
- GROUP: {
372
- type: 'groups',
373
- apiGroup: AUTH_GROUP,
374
- },
375
- PROJECT_MEMBER: {
376
- type: 'projectmembers',
377
- apiGroup: AUTH_GROUP,
378
- },
379
- ROLE_TEMPLATE: {
380
- type: 'roletemplates',
381
- apiGroup: AUTH_GROUP,
382
- apiVersion: 'v1beta1',
383
- },
384
- BATCH_ACTION: {
385
- apiGroup: 'batch.alauda.io',
386
- apiVersion: 'v1alpha1',
387
- type: 'batchactions',
388
- },
389
- EVENT: {
390
- type: 'events',
391
- apiVersion: 'v1',
392
- },
393
- SERVICE_MONITOR: {
394
- apiGroup: 'monitoring.coreos.com',
395
- type: 'servicemonitors',
396
- apiVersion: 'v1',
397
- },
398
- OAM_APPLICATION: {
399
- apiGroup: OAM_GROUP,
400
- apiVersion: 'v1beta1',
401
- type: 'applications',
402
- },
403
- ARGOCD_APPLICATION_SET: {
404
- apiGroup: ARGOCD_GROUP,
405
- apiVersion: 'v1alpha1',
406
- type: 'applicationsets',
407
- },
408
- ARGOCD_APPLICATION: {
409
- apiGroup: ARGOCD_GROUP,
410
- apiVersion: 'v1alpha1',
411
- type: 'applications',
412
- },
413
- OPERATOR_VIEW: {
414
- type: 'operatorviews',
415
- apiGroup: APP_GROUP,
416
- apiVersion: 'v1beta2',
417
- },
418
- MODULE_PLUGIN_VIEW: {
419
- type: 'modulepluginview',
420
- apiGroup: APP_GROUP,
421
- apiVersion: 'v1beta2',
422
- },
423
- };
424
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UtZGVmaW5pdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2R5bmFtaWMtcGx1Z2luLXNoYXJlZC9zcmMvY29uc3RhbnRzL3Jlc291cmNlLWRlZmluaXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sU0FBUyxHQUFHLGVBQWUsQ0FBQztBQUNsQyxNQUFNLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQztBQUN0QyxNQUFNLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQztBQUNwQyxNQUFNLHFCQUFxQixHQUFHLHNCQUFzQixDQUFDO0FBQ3JELE1BQU0sU0FBUyxHQUFHLGVBQWUsQ0FBQztBQUNsQyxNQUFNLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQztBQUN2QyxNQUFNLGtCQUFrQixHQUFHLHNCQUFzQixDQUFDO0FBQ2xELE1BQU0saUJBQWlCLEdBQUcsbUJBQW1CLENBQUM7QUFDOUMsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLGVBQWUsQ0FBQztBQUU3QyxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsY0FBYyxDQUFDO0FBRXhDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxhQUFhLENBQUM7QUFDMUMsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsbUJBQW1CLENBQUM7QUFDckQsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcseUJBQXlCLENBQUM7QUFDL0QsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsb0JBQW9CLENBQUM7QUFDdkQsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsWUFBWSxDQUFDO0FBRTlDLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHO0lBQ3pDLG9CQUFvQixFQUFFO1FBQ3BCLFFBQVEsRUFBRSxTQUFTO1FBQ25CLElBQUksRUFBRSxxQkFBcUI7S0FDNUI7SUFDRCxJQUFJLEVBQUU7UUFDSixRQUFRLEVBQUUsU0FBUztRQUNuQixVQUFVLEVBQUUsU0FB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S0FDeEI7SUFDRCxrQkFBa0IsRUFBRTtRQUNsQixRQUFRLEVBQUUsWUFBWTtRQUN0QixVQUFVLEVBQUUsVUFBVTtRQUN0QixJQUFJLEVBQUUsY0FBYztLQUNyQjtJQUNELGFBQWEsRUFBRTtRQUNiLElBQUksRUFBRSxlQUFlO1FBQ3JCLFFBQVEsRUFBRSxTQUFTO1FBQ25CLFVBQVUsRUFBRSxTQUFTO0tBQ3RCO0lBQ0Qsa0JBQWtCLEVBQUU7UUFDbEIsSUFBSSxFQUFFLGtCQUFrQjtRQUN4QixRQUFRLEVBQUUsU0FBUztRQUNuQixVQUFVLEVBQUUsU0FBUztLQUN0QjtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBDUkRfR1JPVVAgPSAnY3JkLmFsYXVkYS5pbyc7XG5jb25zdCBBSU9QU19HUk9VUCA9ICdhaW9wcy5hbGF1ZGEuaW8nO1xuY29uc3QgQVVUSF9HUk9VUCA9ICdhdXRoLmFsYXVkYS5pbyc7XG5jb25zdCBDT1JFT1NfT1BFUkFUT1JfR1JPVVAgPSAnb3BlcmF0b3JzLmNvcmVvcy5jb20nO1xuY29uc3QgQVBQX0dST1VQID0gJ2FwcC5hbGF1ZGEuaW8nO1xuY29uc3QgU1RPUkFHRV9HUk9VUCA9ICdzdG9yYWdlLms4cy5pbyc7XG5jb25zdCBUS0VfUExBVEZPUk1fR1JPVVAgPSAncGxhdGZvcm0udGtlc3RhY2suaW8nO1xuY29uc3QgQ0xVU1RFUl9BUElfR1JPVVAgPSAnY2x1c3Rlci5hbGF1ZGEuaW8nO1xuZXhwb3J0IGNvbnN0IEFJVF9BUElfR1JPVVAgPSAnYWl0LmFsYXVkYS5pbyc7XG5cbmV4cG9ydCBjb25zdCBPQU1fR1JPVVAgPSAnY29yZS5vYW0uZGV2JztcblxuZXhwb3J0IGNvbnN0IEFSR09DRF9HUk9VUCA9ICdhcmdvcHJvai5pbyc7XG5leHBvcnQgY29uc3QgTUFDSElORV9BUElfR1JPVVAgPSAnbWFjaGluZS5hbGF1ZGEuaW8nO1xuZXhwb3J0IGNvbnN0IFZPTFVNRV9TTkFQU0hPVF9HUk9VUCA9ICdzbmFwc2hvdC5zdG9yYWdlLms4cy5pbyc7XG5leHBvcnQgY29uc3QgSzhTX0NPUkVfQVBJX0dST1VQID0gJ2NvcmUua3ViZXJuZXRlcy5pbyc7XG5leHBvcnQgY29uc3QgSzhTX0FQUF9BUElfR1JPVVAgPSAnYXBwLms4cy5pbyc7XG5cbmV4cG9ydCBjb25zdCBDT01NT05fUkVTT1VSQ0VfREVGSU5JVElPTlMgPSB7XG4gIEFMQVVEQV9MT0FEQkFMQU5DRVIyOiB7XG4gICAgYXBpR3JvdXA6IENSRF9HUk9VUCxcbiAgICB0eXBlOiAnYWxhdWRhbG9hZGJhbGFuY2VyMicsXG4gIH0sXG4gIEFMQjI6IHtcbiAgICBhcGlHcm91cDogQ1JEX0dST1VQLFxuICAgIGFwaVZlcnNpb246ICd2MmJldGExJyxcbiAgICB0eXBlOiAnYWxhdWRhbG9hZGJhbGFuY2VyMicsXG4gIH0sXG4gIEhFTE1fUkVRVUVTVDoge1xuICAgIHR5cGU6ICdoZWxtcmVxdWVzdHMnLFxuICAgIGFwaUdyb3VwOiBBUFBfR1JPVVAsXG4gICAgYXBpVmVyc2lvbjogJ3YxYWxwaGExJyxcbiAgfSxcbiAgLy8gVE9ETzog5Y+q5o+Q5L6b5LqR6L655L2/55So77yM5ZCO57ut5a655Zmo5bmz5Y+w6ZyA6KaB5Y2H57qn5YiwIHYxXG4gIEhFTE1fUkVRVUVTVF9WMToge1xuICAgIHR5cGU6ICdoZWxtcmVxdWVzdHMnLFxuICAgIGFwaUdyb3VwOiBBUFBfR1JPVVAsXG4gICAgYXBpVmVyc2lvbjogJ3YxJyxcbiAgfSxcbiAgREVQTE9ZTUVOVDoge1xuICAgIGFwaUdyb3VwOiAnYXBwcycsXG4gICAgdHlwZTogJ2RlcGxveW1lbnRzJyxcbiAgfSxcbiAgREFFTU9OU0VUOiB7XG4gICAgYXBpR3JvdXA6ICdhcHBzJyxcbiAgICB0eXBlOiAnZGFlbW9uc2V0cycsXG4gIH0sXG4gIFNUQVRFRlVMU0VUOiB7XG4gICAgYXBpR3JvdXA6ICdhcHBzJyxcbiAgICB0eXBlOiAnc3RhdGVmdWxzZXRzJyxcbiAgfSxcbiAgRlJPTlRFTkQ6IHtcbiAgICBhcGlHcm91cDogQ1JEX0dST1VQLFxuICAgIHR5cGU6ICdmcm9udGVuZHMnLFxuICB9LFxuICBSVUxFOiB7XG4gICAgYXBpR3JvdXA6IENSRF9HUk9VUCxcbiAgICB0eXBlOiAncnVsZXMnLFxuICB9LFxuICBQT0Q6IHtcbiAgICB0eXBlOiAncG9kcycsXG4gIH0sXG4gIFBPRFNfRVhFQzoge1xuICAgIHR5cGU6ICdwb2RzL2V4ZWMnLFxuICB9LFxuICBQT0RTX1JPT1RfRVhFQzoge1xuICAgIHR5cGU6ICdwb2RzL3Jvb3QtZXhlYycsXG4gIH0sXG4gIENPTkZJR19NQVA6IHtcbiAgICB0eXBlOiAnY29uZmlnbWFwcycsXG4gIH0sXG4gIEFMRVJUX1RFTVBMQVRFOiB7XG4gICAgYXBpR3JvdXA6IEFJT1BTX0dST1VQLFxuICAgIGFwaVZlcnNpb246ICd2MWJldGExJyxcbiAgICB0eXBlOiAnYWxlcnR0ZW1wbGF0ZXMnLFxuICB9LFxuICBBUFBMSUNBVElPTjoge1xuICAgIGFwaUdyb3VwOiBLOFNfQVBQX0FQSV9HUk9VUCxcbiAgICBhcGlWZXJzaW9uOiAndjFiZXRhMScsXG4gICAgdHlwZTogJ2FwcGxpY2F0aW9ucycsXG4gIH0sXG4gIEFQUExJQ0FUSU9OX0hJU1RPUlk6IHtcbiAgICBhcGlHcm91cDogSzhTX0FQUF9BUElfR1JPVVAsXG4gICAgYXBpVmVyc2lvbjogJ3YxYmV0YTEnLFxuICAgIHR5cGU6ICdhcHBsaWNhdGlvbmhpc3RvcmllcycsXG4gIH0sXG4gIENMVVNURVI6IHtcbiAgICBhcGlHcm91cDogJ2NsdXN0ZXJyZWdpc3RyeS5rOHMuaW8nLFxuICAgIGFwaVZlcnNpb246ICd2MWFscGhhMScsXG4gICAgdHlwZTogJ2NsdXN0ZXJzJyxcbiAgfSxcbiAgQ0xVU1RFUl9WSUVXOiB7XG4gICAgYXBpR3JvdXA6ICdjbHVzdGVyLmFsYXVkYS5pbycsXG4gICAgYXBpVmVyc2lvbjogJ3YxJyxcbiAgICB0eXBlOiAnY2x1c3RlcnZpZXdzJyxcbiAgfSxcbiAgREFFTU9OX1NFVDoge1xuICAgIGFwaUdyb3VwOiAnYXBwcycsXG4gICAgdHlwZTogJ2RhZW1vbnNldHMnLFxuICB9LFxuICBTVEFURUZVTF9TRVQ6IHtcbiAgICBhcGlHcm91cDogJ2FwcHMnLFxuICAgIHR5cGU6ICdzdGF0ZWZ1bHNldHMnLFxuICB9LFxuICBET01BSU46IHtcbiAgICBhcGlHcm91cDogQ1JEX0dST1VQLFxuICAgIGFwaVZlcnNpb246ICd2MicsXG4gICAgdHlwZTogJ2RvbWFpbnMnLFxuICB9LFxuICBGRUFUVVJFOiB7XG4gICAgYXBpR3JvdXA6ICdpbmZyYXN0cnVjdHVyZS5hbGF1ZGEuaW8nLFxuICAgIGFwaVZlcnNpb246ICd2MWFscGhhMScsXG4gICAgdHlwZTogJ2ZlYXR1cmVzJyxcbiAgfSxcbiAgQUxBVURBX0ZFQVRVUkVfR0FURToge1xuICAgIGFwaUdyb3VwOiAnYWxhdWRhLmlvJyxcbiAgICBhcGlWZXJzaW9uOiAndjEnLFxuICAgIHR5cGU6ICdhbGF1ZGFmZWF0dXJlZ2F0ZXMnLFxuICB9LFxuICBDTFVTVEVSX0FMQVVEQV9GRUFUVVJFX0dBVEU6IHtcbiAgICBhcGlHcm91cDogJ2FsYXVkYS5pbycsXG4gICAgYXBpVmVyc2lvbjogJ3YxJyxcbiAgICB0eXBlOiAnY2x1c3RlcmFsYXVkYWZlYXR1cmVnYXRlcycsXG4gIH0sXG4gIEhPUklaT05UQUxfUE9EX0FVVE9TQ0FMRVI6IHtcbiAgICBhcGlHcm91cDogJ2F1dG9zY2FsaW5nJyxcbiAgICBhcGlWZXJzaW9uOiAndjInLFxuICAgIHR5cGU6ICdob3Jpem9udGFscG9kYXV0b3NjYWxlcnMnLFxuICB9LFxuICBMT0c6IHtcbiAgICBhcGlHcm91cDogQUlPUFNfR1JPVVAsXG4gICAgYXBpVmVyc2lvbjogJ3YxYmV0YTEnLFxuICAgIHR5cGU6ICdsb2dzJyxcbiAgfSxcbiAgUFJPSkVDVDoge1xuICAgIGFwaUdyb3VwOiBBVVRIX0dST1VQLFxuICAgIHR5cGU6ICdwcm9qZWN0cycsXG4gIH0sXG4gIFBST01FVEhFVVNfUlVMRToge1xuICAgIGFwaUdyb3VwOiAnbW9uaXRvcmluZy5jb3Jlb3MuY29tJyxcbiAgICBhcGlWZXJzaW9uOiAndjEnLFxuICAgIHR5cGU6ICdwcm9tZXRoZXVzcnVsZXMnLFxuICB9LFxuICBBTEVSVF9ISVNUT1JZOiB7XG4gICAgYXBpR3JvdXA6IEFJT1BTX0dST1VQLFxuICAgIHR5cGU6ICdhbGVydGhpc3RvcmllcycsXG4gIH0sXG4gIFNFTEZfU1VCSkVDVF9BQ0NFU1NfUkVWSUVXOiB7XG4gICAgYXBpR3JvdXA6ICdhdXRob3JpemF0aW9uLms4cy5pbycsXG4gICAgdHlwZTogJ3NlbGZzdWJqZWN0YWNjZXNzcmV2aWV3cycsXG4gIH0sXG4gIFZJRVc6IHtcbiAgICBhcGlHcm91cDogQVVUSF9HUk9VUCxcbiAgICB0eXBlOiAndmlld3MnLFxuICB9LFxuICBTRVJWSUNFOiB7XG4gICAgdHlwZTogJ3NlcnZpY2VzJyxcbiAgfSxcbiAgTElNSVRfUkFOR0U6IHtcbiAgICB0eXBlOiAnbGltaXRyYW5nZXMnLFxuICB9LFxuICBTRUNSRVQ6IHtcbiAgICB0eXBlOiAnc2VjcmV0cycsXG4gIH0sXG4gIENST05fSk9COiB7XG4gICAgYXBpR3JvdXA6ICdiYXRjaCcsXG4gICAgYXBpVmVyc2lvbjogJ3YxJyxcbiAgICB0eXBlOiAnY3JvbmpvYnMnLFxuICB9LFxuICBBRFZBTkNFRF9DUk9OX0pPQjoge1xuICAgIHR5cGU6ICdhZHZhbmNlZGNyb25qb2JzJyxcbiAgICBhcGlHcm91cDogJ29wZXJhdG9yLmFsYXVkYS5pbycsXG4gICAgYXBpVmVyc2lvbjogJ3YxYWxwaGExJyxcbiAgfSxcbiAgSk9COiB7XG4gICAgYXBpR3JvdXA6ICdiYXRjaCcsXG4gICAgdHlwZTogJ2pvYnMnLFxuICB9LFxuICBJTkdSRVNTOiB7XG4gICAgYXBpR3JvdXA6ICduZXR3b3JraW5nLms4cy5pbycsXG4gICAgdHlwZTogJ2luZ3Jlc3NlcycsXG4gIH0sXG4gIFBFUlNJU1RFTlRfVk9MVU1FX0NMQUlNOiB7XG4gICAgdHlwZTogJ3BlcnNpc3RlbnR2b2x1bWVjbGFpbXMnLFxuICB9LFxuICBOQU1FU1BBQ0U6IHtcbiAgICB0eXBlOiAnbmFtZXNwYWNlcycsXG4gIH0sXG4gIE5PREU6IHtcbiAgICB0eXBlOiAnbm9kZXMnLFxuICB9LFxuICBOT0RFX01FVFJJQ1M6IHtcbiAgICBhcGlHcm91cDogJ21ldHJpY3MuazhzLmlvJyxcbiAgICBhcGlWZXJzaW9uOiAndjFiZXRhMScsXG4gICAgdHlwZTogJ25vZGVzJyxcbiAgfSxcbiAgUFY6IHtcbiAgICB0eXBlOiAncGVyc2lzdGVudHZvbHVtZXMnLFxuICB9LFxuICBDUkQ6IHtcbiAgICBhcGlHcm91cDogJ2FwaWV4dGVuc2lvbnMuazhzLmlvJyxcbiAgICB0eXBlOiAnY3VzdG9tcmVzb3VyY2VkZWZpbml0aW9ucycsXG4gIH0sXG4gIENIQVJUX1JFUE86IHtcbiAgICB0eXBlOiAnY2hhcnRyZXBvcycsXG4gICAgYXBpR3JvdXA6IEFQUF9HUk9VUCxcbiAgICBhcGlWZXJzaW9uOiAndjFiZXRhMScsXG4gIH0sXG4gIENIQVJUOiB7XG4gICAgdHlwZTogJ2NoYXJ0cycsXG4gICAgYXBpR3JvdXA6IEFQUF9HUk9VUCxcbiAgICBhcGlWZXJzaW9uOiAndjFhbHBoYTEnLFxuICB9LFxuICBORVRXT1JLX1BPTElDWToge1xuICAgIGFwaUdyb3VwOiAnbmV0d29ya2luZy5rOHMuaW8nLFxuICAgIHR5cGU6ICduZXR3b3JrcG9saWNpZXMnLFxuICB9LFxuICBTRVJWSUNFX0FDQ09VTlQ6IHtcbiAgICB0eXBlOiAnc2VydmljZWFjY291bnRzJyxcbiAgfSxcbiAgUkVQTElDQV9TRVQ6IHtcbiAgICBhcGlHcm91cDogJ2FwcHMnLFxuICAgIHR5cGU6ICdyZXBsaWNhc2V0cycsXG4gIH0sXG4gIFBPRF9TRUNVUklUWV9QT0xJQ1k6IHtcbiAgICBhcGlHcm91cDogJ3BvbGljeScsXG4gICAgYXBpVmVyc2lvbjogJ3YxYmV0YTEnLFxuICAgIHR5cGU6ICdwb2RzZWN1cml0eXBvbGljaWVzJyxcbiAgfSxcbiAgTkFNRVNQQUNFX09WRVJWSUVXOiB7XG4gICAgYXBpR3JvdXA6ICdrOHMuaW8nLFxuICAgIHR5cGU6ICduYW1lc3BhY2VvdmVydmlld3MnLFxuICB9LFxuICBDU1A6IHtcbiAgICBhcGlHcm91cDogJ3Byb2R1Y3QuYWxhdWRhLmlvJyxcbiAgICB0eXBlOiAnY3NwcycsXG4gIH0sXG4gIFJFU09VUkNFX1FVT1RBOiB7XG4gICAgdHlwZTogJ3Jlc291cmNlcXVvdGFzJyxcbiAgfSxcbiAgQ0xVU1RFUl9ORVRXT1JLX1BPTElDWToge1xuICAgIGFwaUdyb3VwOiBDUkRfR1JPVVAsXG4gICAgdHlwZTogJ2NsdXN0ZXJuZXR3b3JrcG9saWNpZXMnLFxuICB9LFxuICBQUk9KRUNUX1FVT1RBOiB7XG4gICAgYXBpR3JvdXA6ICdhdXRoLmFsYXVkYS5pbycsXG4gICAgYXBpVmVyc2lvbjogJ3YxJyxcbiAgICB0eXBlOiAncHJvamVjdHF1b3RhcycsXG4gIH0sXG4gIFRLRV9DTFVTVEVSOiB7XG4gICAgYXBpR3JvdXA6IFRLRV9QTEFURk9STV9HUk9VUCxcbiAgICB0eXBlOiAnY2x1c3RlcnMnLFxuICB9LFxuICBUS0VfTUFDSElORToge1xuICAgIGFwaUdyb3VwOiBUS0VfUExBVEZPUk1fR1JPVVAsXG4gICAgdHlwZTogJ21hY2hpbmVzJyxcbiAgfSxcbiAgTUFDSElORToge1xuICAgIGFwaUdyb3VwOiBNQUNISU5FX0FQSV9HUk9VUCxcbiAgICBhcGlWZXJzaW9uOiAndjFiZXRhMScsXG4gICAgdHlwZTogJ21hY2hpbmVzJyxcbiAgfSxcbiAgTk9ERV9HUk9VUDoge1xuICAgIGFwaUdyb3VwOiAnc2VjdXJpdHkuYWxhdWRhLmlvJyxcbiAgICBhcGlWZXJzaW9uOiAndjFiZXRhMScsXG4gICAgdHlwZTogJ25vZGVncm91cHMnLFxuICB9LFxuICBDTFVTVEVSU0VSVklDRVZFUlNJT046IHtcbiAgICBhcGlHcm91cDogQ09SRU9TX09QRVJBVE9SX0dST1VQLFxuICAgIGFwaVZlcnNpb246ICd2MWFscGhhMScsXG4gICAgdHlwZTogJ2NsdXN0ZXJzZXJ2aWNldmVyc2lvbnMnLFxuICB9LFxuICBURU5BTlQ6IHtcbiAgICBhcGlHcm91cDogJ21pbmlvLm1pbi5pbycsXG4gICAgYXBpVmVyc2lvbjogJ3YyJyxcbiAgICB0eXBlOiAndGVuYW50cycsXG4gIH0sXG4gIFNVQlNDUklQVElPTjoge1xuICAgIGFwaUdyb3VwOiBDT1JFT1NfT1BFUkFUT1JfR1JPVVAsXG4gICAgYXBpVmVyc2lvbjogJ3YxYWxwaGExJyxcbiAgICB0eXBlOiAnc3Vic2NyaXB0aW9ucycsXG4gIH0sXG4gIFBBQ0tBR0VfTUFOSUZFU1Q6IHtcbiAgICBhcGlHcm91cDogJ3BhY2thZ2VzLm9wZXJhdG9ycy5jb3Jlb3MuY29tJyxcbiAgICBhcGlWZXJzaW9uOiAndjEnLFxuICAgIHR5cGU6ICdwYWNrYWdlbWFuaWZlc3RzJyxcbiAgfSxcbiAgQlVDS0VUX0NMQVNTOiB7XG4gICAgYXBpR3JvdXA6ICdvYmplY3RzdG9yYWdlLms4cy5pbycsXG4gICAgYXBpVmVyc2lvbjogJ3YxYWxwaGExJyxcbiAgICB0eXBlOiAnYnVja2V0Y2xhc3NlcycsXG4gIH0sXG4gIFBST0RVQ1RfQ09ORklHOiB7XG4gICAgdHlwZTogJ3Byb2R1Y3Rjb25maWdzJyxcbiAgICBhcGlHcm91cDogJ2FsYXVkYS5pbycsXG4gICAgYXBpVmVyc2lvbjogJ3YxYWxwaGExJyxcbiAgfSxcbiAgU1RPUkFHRV9DTEFTUzoge1xuICAgIHR5cGU6ICdzdG9yYWdlY2xhc3NlcycsXG4gICAgYXBpR3JvdXA6IFNUT1JBR0VfR1JPVVAsXG4gIH0sXG4gIFZPTFVNRV9TTkFQU0hPVF9DTEFTUzoge1xuICAgIHR5cGU6ICd2b2x1bWVzbmFwc2hvdGNsYXNzZXMnLFxuICAgIGFwaUdyb3VwOiBWT0xVTUVfU05BUFNIT1RfR1JPVVAsXG4gICAgYXBpVmVyc2lvbjogJ3YxJyxcbiAgfSxcbiAgUFJPRFVDVF9CQVNFOiB7XG4gICAgdHlwZTogJ3Byb2R1Y3RiYXNlcycsXG4gICAgYXBpR3JvdXA6ICdwcm9kdWN0LmFsYXVkYS5pbycsXG4gICAgYXBpVmVyc2lvbjogJ3YxYWxwaGExJyxcbiAgfSxcbiAgTU9EVUxFX0lORk86IHtcbiAgICB0eXBlOiAnbW9kdWxlaW5mb2VzJyxcbiAgICBhcGlWZXJzaW9uOiAndjFhbHBoYTEnLFxuICAgIGFwaUdyb3VwOiBDTFVTVEVSX0FQSV9HUk9VUCxcbiAgfSxcbiAgTU9EVUxFX0NPTkZJRzoge1xuICAgIGFwaUdyb3VwOiBDTFVTVEVSX0FQSV9HUk9VUCxcbiAgICBhcGlWZXJzaW9uOiAndjFhbHBoYTEnLFxuICAgIHR5cGU6ICdtb2R1bGVjb25maWdzJyxcbiAgfSxcbiAgTU9EVUxFX1BMVUdJTjoge1xuICAgIGFwaUdyb3VwOiBDTFVTVEVSX0FQSV9HUk9VUCxcbiAgICBhcGlWZXJzaW9uOiAndjFhbHBoYTEnLFxuICAgIHR5cGU6ICdtb2R1bGVwbHVnaW5zJyxcbiAgfSxcbiAgUFJPRFVDVF9FTlRSWToge1xuICAgIHR5cGU6ICdwcm9kdWN0ZW50cmllcycsXG4gICAgYXBpR3JvdXA6ICdhbGF1ZGEuaW8nLFxuICAgIGFwaVZlcnNpb246ICd2MWFscGhhMScsXG4gIH0sXG4gIFBST0RVQ1RfRE9DU19FTlRSWToge1xuICAgIHR5cGU6ICdwcm9kdWN0ZG9jc2VudHJpZXMnLFxuICAgIGFwaUdyb3VwOiAnYWxhdWRhLmlvJyxcbiAgICBhcGlWZXJzaW9uOiAndjFhbHBoYTEnLFxuICB9LFxuICBTRVJWSUNFTUVTSF9HUk9VUDoge1xuICAgIGFwaUdyb3VwOiAnYXNtLmFsYXVkYS5pbycsXG4gICAgYXBpVmVyc2lvbjogJ3YxYWxwaGExJyxcbiAgICB0eXBlOiAnc2VydmljZW1lc2hncm91cHMnLFxuICB9LFxuICBDTFVTVEVSX01PRFVMRToge1xuICAgIHR5cGU6ICdjbHVzdGVybW9kdWxlcycsXG4gICAgYXBpVmVyc2lvbjogJ3YxYWxwaGExJyxcbiAgICBhcGlHcm91cDogQ0xVU1RFUl9BUElfR1JPVVAsXG4gIH0sXG4gIFVTRVJfU0VDVVJJVFlfUE9MSUNZOiB7XG4gICAgdHlwZTogJ3VzZXJwb2xpY2llcycsXG4gICAgYXBpR3JvdXA6ICdzZWN1cml0eS5hbGF1ZGEuaW8nLFxuICAgIGFwaVZlcnNpb246ICd2MWFscGhhMScsXG4gIH0sXG4gIENPTk5FQ1RPUjoge1xuICAgIHR5cGU6ICdjb25uZWN0b3JzJyxcbiAgICBhcGlHcm91cDogJ2RleC5jb3Jlb3MuY29tJyxcbiAgfSxcbiAgQUNDRVNTX1RPS0VOX0lORk86IHtcbiAgICB0eXBlOiAnYWNjZXNzdG9rZW5pbmZvZXMnLFxuICAgIGFwaUdyb3VwOiBBVVRIX0dST1VQLFxuICB9LFxuICBGVU5DVElPTl9SRVNPVVJDRToge1xuICAgIHR5cGU6ICdmdW5jdGlvbnJlc291cmNlcycsXG4gICAgYXBpR3JvdXA6IEFVVEhfR1JPVVAsXG4gICAgYXBpVmVyc2lvbjogJ3YxYmV0YTEnLFxuICB9LFxuICBVU0VSX0JJTkRJTkc6IHtcbiAgICB0eXBlOiAndXNlcmJpbmRpbmdzJyxcbiAgICBhcGlHcm91cDogQVVUSF9HUk9VUCxcbiAgICBhcGlWZXJzaW9uOiAndjEnLFxuICB9LFxuICBVU0VSOiB7XG4gICAgdHlwZTogJ3VzZXJzJyxcbiAgICBhcGlHcm91cDogQVVUSF9HUk9VUCxcbiAgfSxcbiAgR1JPVVA6IHtcbiAgICB0eXBlOiAnZ3JvdXBzJyxcbiAgICBhcGlHcm91cDogQVVUSF9HUk9VUCxcbiAgfSxcbiAgUFJPSkVDVF9NRU1CRVI6IHtcbiAgICB0eXBlOiAncHJvamVjdG1lbWJlcnMnLFxuICAgIGFwaUdyb3VwOiBBVVRIX0dST1VQLFxuICB9LFxuICBST0xFX1RFTVBMQVRFOiB7XG4gICAgdHlwZTogJ3JvbGV0ZW1wbGF0ZXMnLFxuICAgIGFwaUdyb3VwOiBBVVRIX0dST1VQLFxuICAgIGFwaVZlcnNpb246ICd2MWJldGExJyxcbiAgfSxcbiAgQkFUQ0hfQUNUSU9OOiB7XG4gICAgYXBpR3JvdXA6ICdiYXRjaC5hbGF1ZGEuaW8nLFxuICAgIGFwaVZlcnNpb246ICd2MWFscGhhMScsXG4gICAgdHlwZTogJ2JhdGNoYWN0aW9ucycsXG4gIH0sXG4gIEVWRU5UOiB7XG4gICAgdHlwZTogJ2V2ZW50cycsXG4gICAgYXBpVmVyc2lvbjogJ3YxJyxcbiAgfSxcbiAgU0VSVklDRV9NT05JVE9SOiB7XG4gICAgYXBpR3JvdXA6ICdtb25pdG9yaW5nLmNvcmVvcy5jb20nLFxuICAgIHR5cGU6ICdzZXJ2aWNlbW9uaXRvcnMnLFxuICAgIGFwaVZlcnNpb246ICd2MScsXG4gIH0sXG4gIE9BTV9BUFBMSUNBVElPTjoge1xuICAgIGFwaUdyb3VwOiBPQU1fR1JPVVAsXG4gICAgYXBpVmVyc2lvbjogJ3YxYmV0YTEnLFxuICAgIHR5cGU6ICdhcHBsaWNhdGlvbnMnLFxuICB9LFxuICBBUkdPQ0RfQVBQTElDQVRJT05fU0VUOiB7XG4gICAgYXBpR3JvdXA6IEFSR09DRF9HUk9VUCxcbiAgICBhcGlWZXJzaW9uOiAndjFhbHBoYTEnLFxuICAgIHR5cGU6ICdhcHBsaWNhdGlvbnNldHMnLFxuICB9LFxuICBBUkdPQ0RfQVBQTElDQVRJT046IHtcbiAgICBhcGlHcm91cDogQVJHT0NEX0dST1VQLFxuICAgIGFwaVZlcnNpb246ICd2MWFscGhhMScsXG4gICAgdHlwZTogJ2FwcGxpY2F0aW9ucycsXG4gIH0sXG4gIE9QRVJBVE9SX1ZJRVc6IHtcbiAgICB0eXBlOiAnb3BlcmF0b3J2aWV3cycsXG4gICAgYXBpR3JvdXA6IEFQUF9HUk9VUCxcbiAgICBhcGlWZXJzaW9uOiAndjFiZXRhMicsXG4gIH0sXG4gIE1PRFVMRV9QTFVHSU5fVklFVzoge1xuICAgIHR5cGU6ICdtb2R1bGVwbHVnaW52aWV3JyxcbiAgICBhcGlHcm91cDogQVBQX0dST1VQLFxuICAgIGFwaVZlcnNpb246ICd2MWJldGEyJyxcbiAgfSxcbn07XG4iXX0=