typekro 0.5.0 → 0.7.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.
- package/dist/.tsbuildinfo +1 -1
- package/dist/core/composition/context.d.ts +14 -0
- package/dist/core/composition/context.d.ts.map +1 -1
- package/dist/core/composition/context.js.map +1 -1
- package/dist/core/composition/imperative.d.ts.map +1 -1
- package/dist/core/composition/imperative.js +59 -30
- package/dist/core/composition/imperative.js.map +1 -1
- package/dist/core/composition/nested-status-cel.d.ts +50 -0
- package/dist/core/composition/nested-status-cel.d.ts.map +1 -0
- package/dist/core/composition/nested-status-cel.js +169 -0
- package/dist/core/composition/nested-status-cel.js.map +1 -0
- package/dist/core/constants/brands.d.ts +1 -1
- package/dist/core/constants/brands.d.ts.map +1 -1
- package/dist/core/constants/brands.js +1 -1
- package/dist/core/constants/brands.js.map +1 -1
- package/dist/core/containers/build.d.ts +50 -0
- package/dist/core/containers/build.d.ts.map +1 -0
- package/dist/core/containers/build.js +146 -0
- package/dist/core/containers/build.js.map +1 -0
- package/dist/core/containers/errors.d.ts +14 -0
- package/dist/core/containers/errors.d.ts.map +1 -0
- package/dist/core/containers/errors.js +48 -0
- package/dist/core/containers/errors.js.map +1 -0
- package/dist/core/containers/exec.d.ts +36 -0
- package/dist/core/containers/exec.d.ts.map +1 -0
- package/dist/core/containers/exec.js +110 -0
- package/dist/core/containers/exec.js.map +1 -0
- package/dist/core/containers/index.d.ts +21 -0
- package/dist/core/containers/index.d.ts.map +1 -0
- package/dist/core/containers/index.js +20 -0
- package/dist/core/containers/index.js.map +1 -0
- package/dist/core/containers/registries/ecr.d.ts +22 -0
- package/dist/core/containers/registries/ecr.d.ts.map +1 -0
- package/dist/core/containers/registries/ecr.js +118 -0
- package/dist/core/containers/registries/ecr.js.map +1 -0
- package/dist/core/containers/registries/index.d.ts +9 -0
- package/dist/core/containers/registries/index.d.ts.map +1 -0
- package/dist/core/containers/registries/index.js +23 -0
- package/dist/core/containers/registries/index.js.map +1 -0
- package/dist/core/containers/registries/orbstack.d.ts +14 -0
- package/dist/core/containers/registries/orbstack.d.ts.map +1 -0
- package/dist/core/containers/registries/orbstack.js +24 -0
- package/dist/core/containers/registries/orbstack.js.map +1 -0
- package/dist/core/containers/registries/types.d.ts +94 -0
- package/dist/core/containers/registries/types.d.ts.map +1 -0
- package/dist/core/containers/registries/types.js +11 -0
- package/dist/core/containers/registries/types.js.map +1 -0
- package/dist/core/dependencies/graph.d.ts +4 -0
- package/dist/core/dependencies/graph.d.ts.map +1 -1
- package/dist/core/dependencies/graph.js +6 -0
- package/dist/core/dependencies/graph.js.map +1 -1
- package/dist/core/dependencies/resolver.d.ts +28 -0
- package/dist/core/dependencies/resolver.d.ts.map +1 -1
- package/dist/core/dependencies/resolver.js +138 -5
- package/dist/core/dependencies/resolver.js.map +1 -1
- package/dist/core/deployment/direct-factory.d.ts +13 -0
- package/dist/core/deployment/direct-factory.d.ts.map +1 -1
- package/dist/core/deployment/direct-factory.js +99 -0
- package/dist/core/deployment/direct-factory.js.map +1 -1
- package/dist/core/deployment/engine.d.ts.map +1 -1
- package/dist/core/deployment/engine.js +45 -2
- package/dist/core/deployment/engine.js.map +1 -1
- package/dist/core/deployment/kro-factory.d.ts +7 -0
- package/dist/core/deployment/kro-factory.d.ts.map +1 -1
- package/dist/core/deployment/kro-factory.js +203 -9
- package/dist/core/deployment/kro-factory.js.map +1 -1
- package/dist/core/deployment/kro-readiness.d.ts.map +1 -1
- package/dist/core/deployment/kro-readiness.js +10 -1
- package/dist/core/deployment/kro-readiness.js.map +1 -1
- package/dist/core/deployment/nested-composition-status.d.ts +33 -0
- package/dist/core/deployment/nested-composition-status.d.ts.map +1 -0
- package/dist/core/deployment/nested-composition-status.js +101 -0
- package/dist/core/deployment/nested-composition-status.js.map +1 -0
- package/dist/core/deployment/readiness-waiter.d.ts.map +1 -1
- package/dist/core/deployment/readiness-waiter.js +23 -6
- package/dist/core/deployment/readiness-waiter.js.map +1 -1
- package/dist/core/deployment/rollback-manager.d.ts.map +1 -1
- package/dist/core/deployment/rollback-manager.js +19 -0
- package/dist/core/deployment/rollback-manager.js.map +1 -1
- package/dist/core/deployment/strategies/direct-strategy.d.ts +6 -0
- package/dist/core/deployment/strategies/direct-strategy.d.ts.map +1 -1
- package/dist/core/deployment/strategies/direct-strategy.js +133 -35
- package/dist/core/deployment/strategies/direct-strategy.js.map +1 -1
- package/dist/core/expressions/composition/imperative-analyzer.d.ts +8 -0
- package/dist/core/expressions/composition/imperative-analyzer.d.ts.map +1 -1
- package/dist/core/expressions/composition/imperative-analyzer.js +111 -16
- package/dist/core/expressions/composition/imperative-analyzer.js.map +1 -1
- package/dist/core/metadata/resource-metadata.d.ts +4 -0
- package/dist/core/metadata/resource-metadata.d.ts.map +1 -1
- package/dist/core/metadata/resource-metadata.js.map +1 -1
- package/dist/core/proxy/create-resource.d.ts.map +1 -1
- package/dist/core/proxy/create-resource.js +63 -21
- package/dist/core/proxy/create-resource.js.map +1 -1
- package/dist/core/references/external-refs.d.ts +2 -0
- package/dist/core/references/external-refs.d.ts.map +1 -1
- package/dist/core/references/external-refs.js +3 -0
- package/dist/core/references/external-refs.js.map +1 -1
- package/dist/core/references/resolver.d.ts +12 -4
- package/dist/core/references/resolver.d.ts.map +1 -1
- package/dist/core/references/resolver.js +152 -69
- package/dist/core/references/resolver.js.map +1 -1
- package/dist/core/references/schema-proxy.d.ts.map +1 -1
- package/dist/core/references/schema-proxy.js +5 -4
- package/dist/core/references/schema-proxy.js.map +1 -1
- package/dist/core/serialization/cel-references.d.ts +1 -1
- package/dist/core/serialization/cel-references.d.ts.map +1 -1
- package/dist/core/serialization/cel-references.js +133 -8
- package/dist/core/serialization/cel-references.js.map +1 -1
- package/dist/core/serialization/core.d.ts +2 -0
- package/dist/core/serialization/core.d.ts.map +1 -1
- package/dist/core/serialization/core.js +16 -2
- package/dist/core/serialization/core.js.map +1 -1
- package/dist/core/serialization/schema.d.ts +2 -2
- package/dist/core/serialization/schema.d.ts.map +1 -1
- package/dist/core/serialization/schema.js +34 -17
- package/dist/core/serialization/schema.js.map +1 -1
- package/dist/core/serialization/status-analysis-pipeline.d.ts +4 -0
- package/dist/core/serialization/status-analysis-pipeline.d.ts.map +1 -1
- package/dist/core/serialization/status-analysis-pipeline.js +127 -10
- package/dist/core/serialization/status-analysis-pipeline.js.map +1 -1
- package/dist/core/serialization/yaml.d.ts.map +1 -1
- package/dist/core/serialization/yaml.js +7 -2
- package/dist/core/serialization/yaml.js.map +1 -1
- package/dist/core/types/composable.d.ts +62 -0
- package/dist/core/types/composable.d.ts.map +1 -0
- package/dist/core/types/composable.js +51 -0
- package/dist/core/types/composable.js.map +1 -0
- package/dist/core/types/deployment.d.ts +2 -1
- package/dist/core/types/deployment.d.ts.map +1 -1
- package/dist/core/types/index.d.ts +1 -0
- package/dist/core/types/index.d.ts.map +1 -1
- package/dist/core/types/index.js +1 -0
- package/dist/core/types/index.js.map +1 -1
- package/dist/core/types/serialization.d.ts +2 -1
- package/dist/core/types/serialization.d.ts.map +1 -1
- package/dist/core/validation/cel-validator.d.ts.map +1 -1
- package/dist/core/validation/cel-validator.js +55 -31
- package/dist/core/validation/cel-validator.js.map +1 -1
- package/dist/factories/cnpg/compositions/cnpg-bootstrap.d.ts +55 -0
- package/dist/factories/cnpg/compositions/cnpg-bootstrap.d.ts.map +1 -0
- package/dist/factories/cnpg/compositions/cnpg-bootstrap.js +92 -0
- package/dist/factories/cnpg/compositions/cnpg-bootstrap.js.map +1 -0
- package/dist/factories/cnpg/compositions/index.d.ts +2 -0
- package/dist/factories/cnpg/compositions/index.d.ts.map +1 -0
- package/dist/factories/cnpg/compositions/index.js +2 -0
- package/dist/factories/cnpg/compositions/index.js.map +1 -0
- package/dist/factories/cnpg/index.d.ts +42 -0
- package/dist/factories/cnpg/index.d.ts.map +1 -0
- package/dist/factories/cnpg/index.js +42 -0
- package/dist/factories/cnpg/index.js.map +1 -0
- package/dist/factories/cnpg/resources/backup.d.ts +34 -0
- package/dist/factories/cnpg/resources/backup.d.ts.map +1 -0
- package/dist/factories/cnpg/resources/backup.js +87 -0
- package/dist/factories/cnpg/resources/backup.js.map +1 -0
- package/dist/factories/cnpg/resources/cluster.d.ts +55 -0
- package/dist/factories/cnpg/resources/cluster.d.ts.map +1 -0
- package/dist/factories/cnpg/resources/cluster.js +123 -0
- package/dist/factories/cnpg/resources/cluster.js.map +1 -0
- package/dist/factories/cnpg/resources/helm.d.ts +45 -0
- package/dist/factories/cnpg/resources/helm.d.ts.map +1 -0
- package/dist/factories/cnpg/resources/helm.js +78 -0
- package/dist/factories/cnpg/resources/helm.js.map +1 -0
- package/dist/factories/cnpg/resources/index.d.ts +6 -0
- package/dist/factories/cnpg/resources/index.d.ts.map +1 -0
- package/dist/factories/cnpg/resources/index.js +6 -0
- package/dist/factories/cnpg/resources/index.js.map +1 -0
- package/dist/factories/cnpg/resources/pooler.d.ts +38 -0
- package/dist/factories/cnpg/resources/pooler.d.ts.map +1 -0
- package/dist/factories/cnpg/resources/pooler.js +97 -0
- package/dist/factories/cnpg/resources/pooler.js.map +1 -0
- package/dist/factories/cnpg/resources/scheduled-backup.d.ts +35 -0
- package/dist/factories/cnpg/resources/scheduled-backup.d.ts.map +1 -0
- package/dist/factories/cnpg/resources/scheduled-backup.js +68 -0
- package/dist/factories/cnpg/resources/scheduled-backup.js.map +1 -0
- package/dist/factories/cnpg/types.d.ts +507 -0
- package/dist/factories/cnpg/types.d.ts.map +1 -0
- package/dist/factories/cnpg/types.js +398 -0
- package/dist/factories/cnpg/types.js.map +1 -0
- package/dist/factories/cnpg/utils/helm-values-mapper.d.ts +70 -0
- package/dist/factories/cnpg/utils/helm-values-mapper.d.ts.map +1 -0
- package/dist/factories/cnpg/utils/helm-values-mapper.js +79 -0
- package/dist/factories/cnpg/utils/helm-values-mapper.js.map +1 -0
- package/dist/factories/cnpg/utils/index.d.ts +2 -0
- package/dist/factories/cnpg/utils/index.d.ts.map +1 -0
- package/dist/factories/cnpg/utils/index.js +2 -0
- package/dist/factories/cnpg/utils/index.js.map +1 -0
- package/dist/factories/helm/helm-release.d.ts.map +1 -1
- package/dist/factories/helm/helm-release.js +4 -0
- package/dist/factories/helm/helm-release.js.map +1 -1
- package/dist/factories/helm/types.d.ts +2 -0
- package/dist/factories/helm/types.d.ts.map +1 -1
- package/dist/factories/inngest/compositions/index.d.ts +2 -0
- package/dist/factories/inngest/compositions/index.d.ts.map +1 -0
- package/dist/factories/inngest/compositions/index.js +2 -0
- package/dist/factories/inngest/compositions/index.js.map +1 -0
- package/dist/factories/inngest/compositions/inngest-bootstrap.d.ts +150 -0
- package/dist/factories/inngest/compositions/inngest-bootstrap.d.ts.map +1 -0
- package/dist/factories/inngest/compositions/inngest-bootstrap.js +90 -0
- package/dist/factories/inngest/compositions/inngest-bootstrap.js.map +1 -0
- package/dist/factories/inngest/index.d.ts +45 -0
- package/dist/factories/inngest/index.d.ts.map +1 -0
- package/dist/factories/inngest/index.js +45 -0
- package/dist/factories/inngest/index.js.map +1 -0
- package/dist/factories/inngest/resources/helm.d.ts +53 -0
- package/dist/factories/inngest/resources/helm.d.ts.map +1 -0
- package/dist/factories/inngest/resources/helm.js +88 -0
- package/dist/factories/inngest/resources/helm.js.map +1 -0
- package/dist/factories/inngest/resources/index.d.ts +2 -0
- package/dist/factories/inngest/resources/index.d.ts.map +1 -0
- package/dist/factories/inngest/resources/index.js +2 -0
- package/dist/factories/inngest/resources/index.js.map +1 -0
- package/dist/factories/inngest/types.d.ts +177 -0
- package/dist/factories/inngest/types.d.ts.map +1 -0
- package/dist/factories/inngest/types.js +189 -0
- package/dist/factories/inngest/types.js.map +1 -0
- package/dist/factories/inngest/utils/helm-values-mapper.d.ts +127 -0
- package/dist/factories/inngest/utils/helm-values-mapper.d.ts.map +1 -0
- package/dist/factories/inngest/utils/helm-values-mapper.js +116 -0
- package/dist/factories/inngest/utils/helm-values-mapper.js.map +1 -0
- package/dist/factories/inngest/utils/index.d.ts +2 -0
- package/dist/factories/inngest/utils/index.d.ts.map +1 -0
- package/dist/factories/inngest/utils/index.js +2 -0
- package/dist/factories/inngest/utils/index.js.map +1 -0
- package/dist/factories/kubernetes/core/namespace.d.ts.map +1 -1
- package/dist/factories/kubernetes/core/namespace.js +1 -1
- package/dist/factories/kubernetes/core/namespace.js.map +1 -1
- package/dist/factories/valkey/compositions/index.d.ts +2 -0
- package/dist/factories/valkey/compositions/index.d.ts.map +1 -0
- package/dist/factories/valkey/compositions/index.js +2 -0
- package/dist/factories/valkey/compositions/index.js.map +1 -0
- package/dist/factories/valkey/compositions/valkey-bootstrap.d.ts +41 -0
- package/dist/factories/valkey/compositions/valkey-bootstrap.d.ts.map +1 -0
- package/dist/factories/valkey/compositions/valkey-bootstrap.js +105 -0
- package/dist/factories/valkey/compositions/valkey-bootstrap.js.map +1 -0
- package/dist/factories/valkey/index.d.ts +50 -0
- package/dist/factories/valkey/index.d.ts.map +1 -0
- package/dist/factories/valkey/index.js +50 -0
- package/dist/factories/valkey/index.js.map +1 -0
- package/dist/factories/valkey/resources/helm.d.ts +53 -0
- package/dist/factories/valkey/resources/helm.d.ts.map +1 -0
- package/dist/factories/valkey/resources/helm.js +82 -0
- package/dist/factories/valkey/resources/helm.js.map +1 -0
- package/dist/factories/valkey/resources/index.d.ts +3 -0
- package/dist/factories/valkey/resources/index.d.ts.map +1 -0
- package/dist/factories/valkey/resources/index.js +3 -0
- package/dist/factories/valkey/resources/index.js.map +1 -0
- package/dist/factories/valkey/resources/valkey.d.ts +46 -0
- package/dist/factories/valkey/resources/valkey.d.ts.map +1 -0
- package/dist/factories/valkey/resources/valkey.js +123 -0
- package/dist/factories/valkey/resources/valkey.js.map +1 -0
- package/dist/factories/valkey/types.d.ts +185 -0
- package/dist/factories/valkey/types.d.ts.map +1 -0
- package/dist/factories/valkey/types.js +204 -0
- package/dist/factories/valkey/types.js.map +1 -0
- package/dist/factories/valkey/utils/helm-values-mapper.d.ts +32 -0
- package/dist/factories/valkey/utils/helm-values-mapper.d.ts.map +1 -0
- package/dist/factories/valkey/utils/helm-values-mapper.js +58 -0
- package/dist/factories/valkey/utils/helm-values-mapper.js.map +1 -0
- package/dist/factories/valkey/utils/index.d.ts +2 -0
- package/dist/factories/valkey/utils/index.d.ts.map +1 -0
- package/dist/factories/valkey/utils/index.js +2 -0
- package/dist/factories/valkey/utils/index.js.map +1 -0
- package/dist/factories/webapp/compositions/index.d.ts +2 -0
- package/dist/factories/webapp/compositions/index.d.ts.map +1 -0
- package/dist/factories/webapp/compositions/index.js +2 -0
- package/dist/factories/webapp/compositions/index.js.map +1 -0
- package/dist/factories/webapp/compositions/web-app-with-processing.d.ts +98 -0
- package/dist/factories/webapp/compositions/web-app-with-processing.d.ts.map +1 -0
- package/dist/factories/webapp/compositions/web-app-with-processing.js +221 -0
- package/dist/factories/webapp/compositions/web-app-with-processing.js.map +1 -0
- package/dist/factories/webapp/index.d.ts +53 -0
- package/dist/factories/webapp/index.d.ts.map +1 -0
- package/dist/factories/webapp/index.js +53 -0
- package/dist/factories/webapp/index.js.map +1 -0
- package/dist/factories/webapp/types.d.ts +69 -0
- package/dist/factories/webapp/types.d.ts.map +1 -0
- package/dist/factories/webapp/types.js +92 -0
- package/dist/factories/webapp/types.js.map +1 -0
- package/dist/shared/brands.d.ts +16 -0
- package/dist/shared/brands.d.ts.map +1 -1
- package/dist/shared/brands.js +16 -0
- package/dist/shared/brands.js.map +1 -1
- package/package.json +25 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"namespace.js","sourceRoot":"","sources":["../../../../src/factories/kubernetes/core/namespace.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AASjD;;;;;;;;;GASG;AACH,MAAM,UAAU,SAAS,CAAC,QAAyB;IACjD,OAAO,cAAc,
|
|
1
|
+
{"version":3,"file":"namespace.js","sourceRoot":"","sources":["../../../../src/factories/kubernetes/core/namespace.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AASjD;;;;;;;;;GASG;AACH,MAAM,UAAU,SAAS,CAAC,QAAyB;IACjD,OAAO,cAAc,CACnB;QACE,GAAG,QAAQ;QACX,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC;QACvC,UAAU,EAAE,IAAI;QAChB,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,EAAE,IAAI,EAAE,mBAAmB,EAAE;KAC7D,EACD,EAAE,KAAK,EAAE,SAAS,EAAE,CACrB,CAAC,sBAAsB,CAAC,CAAC,YAAyB,EAAE,EAAE;QACrD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;YAEnC,mCAAmC;YACnC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO;oBACL,KAAK,EAAE,KAAK;oBACZ,MAAM,EAAE,eAAe;oBACvB,OAAO,EAAE,oCAAoC;iBAC9C,CAAC;YACJ,CAAC;YAED,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;YAE3B,0CAA0C;YAC1C,MAAM,KAAK,GAAG,KAAK,KAAK,QAAQ,CAAC;YAEjC,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO;oBACL,KAAK,EAAE,IAAI;oBACX,OAAO,EAAE,+BAA+B;iBACzC,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,OAAO;oBACL,KAAK,EAAE,KAAK;oBACZ,MAAM,EAAE,WAAW;oBACnB,OAAO,EAAE,sBAAsB,KAAK,IAAI,SAAS,4BAA4B;oBAC7E,OAAO,EAAE,EAAE,KAAK,EAAE;iBACnB,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,iBAAiB;gBACzB,OAAO,EAAE,yCAAyC,WAAW,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE;gBAC9E,OAAO,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE;aAC/C,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/factories/valkey/compositions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/factories/valkey/compositions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hyperspike Valkey Operator Bootstrap Composition
|
|
3
|
+
*
|
|
4
|
+
* Deploys the Hyperspike Valkey operator via HelmRepository and HelmRelease.
|
|
5
|
+
* The operator manages Valkey clusters as Kubernetes-native resources.
|
|
6
|
+
*
|
|
7
|
+
* This composition:
|
|
8
|
+
* 1. Creates the target namespace
|
|
9
|
+
* 2. Creates a HelmRepository pointing to the Hyperspike OCI registry
|
|
10
|
+
* 3. Creates a HelmRelease that installs the operator
|
|
11
|
+
*
|
|
12
|
+
* After the operator is running, use the `valkey()` factory to create
|
|
13
|
+
* Valkey cluster resources.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* // 'kro' = KRO mode (continuous reconciliation via ResourceGraphDefinition)
|
|
18
|
+
* // 'direct' = Direct mode (immediate apply, no KRO controller needed)
|
|
19
|
+
* const factory = valkeyBootstrap.factory('kro', {
|
|
20
|
+
* namespace: 'valkey-operator-system',
|
|
21
|
+
* waitForReady: true,
|
|
22
|
+
* });
|
|
23
|
+
*
|
|
24
|
+
* await factory.deploy({
|
|
25
|
+
* name: 'valkey-operator',
|
|
26
|
+
* namespace: 'valkey-operator-system',
|
|
27
|
+
* });
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export declare const valkeyBootstrap: import("../../../index.js").CallableComposition<{
|
|
31
|
+
name: string;
|
|
32
|
+
namespace?: string;
|
|
33
|
+
version?: string;
|
|
34
|
+
customValues?: Record<string, unknown>;
|
|
35
|
+
}, {
|
|
36
|
+
phase: "Ready" | "Installing";
|
|
37
|
+
ready: boolean;
|
|
38
|
+
failed: boolean;
|
|
39
|
+
version?: string;
|
|
40
|
+
}>;
|
|
41
|
+
//# sourceMappingURL=valkey-bootstrap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"valkey-bootstrap.d.ts","sourceRoot":"","sources":["../../../../src/factories/valkey/compositions/valkey-bootstrap.ts"],"names":[],"mappings":"AA0BA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;EA4E3B,CAAC"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { kubernetesComposition } from '../../../core/composition/imperative.js';
|
|
2
|
+
import { DEFAULT_FLUX_NAMESPACE } from '../../../core/config/defaults.js';
|
|
3
|
+
import { Cel } from '../../../core/references/cel.js';
|
|
4
|
+
import { namespace } from '../../kubernetes/core/namespace.js';
|
|
5
|
+
import { DEFAULT_VALKEY_REPO_NAME, DEFAULT_VALKEY_VERSION, valkeyHelmRelease, valkeyHelmRepository, } from '../resources/helm.js';
|
|
6
|
+
import { ValkeyBootstrapConfigSchema, ValkeyBootstrapStatusSchema, } from '../types.js';
|
|
7
|
+
import { mapValkeyConfigToHelmValues } from '../utils/helm-values-mapper.js';
|
|
8
|
+
/**
|
|
9
|
+
* Strips the '-chart' suffix from a Hyperspike version tag for labeling.
|
|
10
|
+
* The Helm chart version (e.g. 'v0.0.61-chart') differs from the app version
|
|
11
|
+
* ('v0.0.61'). Labels should use the app version per k8s well-known labels spec.
|
|
12
|
+
*/
|
|
13
|
+
function stripChartSuffix(version) {
|
|
14
|
+
return version.replace(/-chart$/, '');
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Hyperspike Valkey Operator Bootstrap Composition
|
|
18
|
+
*
|
|
19
|
+
* Deploys the Hyperspike Valkey operator via HelmRepository and HelmRelease.
|
|
20
|
+
* The operator manages Valkey clusters as Kubernetes-native resources.
|
|
21
|
+
*
|
|
22
|
+
* This composition:
|
|
23
|
+
* 1. Creates the target namespace
|
|
24
|
+
* 2. Creates a HelmRepository pointing to the Hyperspike OCI registry
|
|
25
|
+
* 3. Creates a HelmRelease that installs the operator
|
|
26
|
+
*
|
|
27
|
+
* After the operator is running, use the `valkey()` factory to create
|
|
28
|
+
* Valkey cluster resources.
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```typescript
|
|
32
|
+
* // 'kro' = KRO mode (continuous reconciliation via ResourceGraphDefinition)
|
|
33
|
+
* // 'direct' = Direct mode (immediate apply, no KRO controller needed)
|
|
34
|
+
* const factory = valkeyBootstrap.factory('kro', {
|
|
35
|
+
* namespace: 'valkey-operator-system',
|
|
36
|
+
* waitForReady: true,
|
|
37
|
+
* });
|
|
38
|
+
*
|
|
39
|
+
* await factory.deploy({
|
|
40
|
+
* name: 'valkey-operator',
|
|
41
|
+
* namespace: 'valkey-operator-system',
|
|
42
|
+
* });
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
export const valkeyBootstrap = kubernetesComposition({
|
|
46
|
+
name: 'valkey-bootstrap',
|
|
47
|
+
kind: 'ValkeyBootstrap',
|
|
48
|
+
spec: ValkeyBootstrapConfigSchema,
|
|
49
|
+
status: ValkeyBootstrapStatusSchema,
|
|
50
|
+
}, (spec) => {
|
|
51
|
+
const resolvedNamespace = spec.namespace || 'valkey-operator-system';
|
|
52
|
+
const resolvedVersion = spec.version || DEFAULT_VALKEY_VERSION;
|
|
53
|
+
const appVersion = stripChartSuffix(resolvedVersion);
|
|
54
|
+
const helmValues = mapValkeyConfigToHelmValues({
|
|
55
|
+
...spec,
|
|
56
|
+
namespace: resolvedNamespace,
|
|
57
|
+
version: resolvedVersion,
|
|
58
|
+
});
|
|
59
|
+
// Resources are _-prefixed because they're registered via side effects in the
|
|
60
|
+
// kubernetesComposition callback — the composition captures them automatically.
|
|
61
|
+
// They're referenced in the status return via their `id`.
|
|
62
|
+
const _valkeyNamespace = namespace({
|
|
63
|
+
metadata: {
|
|
64
|
+
name: resolvedNamespace,
|
|
65
|
+
labels: {
|
|
66
|
+
'app.kubernetes.io/name': 'valkey-operator',
|
|
67
|
+
'app.kubernetes.io/instance': spec.name,
|
|
68
|
+
'app.kubernetes.io/version': appVersion,
|
|
69
|
+
'app.kubernetes.io/managed-by': 'typekro',
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
id: 'valkeyNamespace',
|
|
73
|
+
});
|
|
74
|
+
// OCI HelmRepositories don't have status in Flux, which can cause the deploy
|
|
75
|
+
// engine to block waiting for readiness. Create both resources but don't depend
|
|
76
|
+
// on the repository readiness — Flux handles the OCI → chart resolution internally.
|
|
77
|
+
const _helmRepository = valkeyHelmRepository({
|
|
78
|
+
name: DEFAULT_VALKEY_REPO_NAME,
|
|
79
|
+
namespace: DEFAULT_FLUX_NAMESPACE,
|
|
80
|
+
id: 'valkeyHelmRepository',
|
|
81
|
+
});
|
|
82
|
+
const _helmRelease = valkeyHelmRelease({
|
|
83
|
+
name: spec.name,
|
|
84
|
+
namespace: resolvedNamespace,
|
|
85
|
+
version: resolvedVersion,
|
|
86
|
+
values: helmValues,
|
|
87
|
+
repositoryName: DEFAULT_VALKEY_REPO_NAME,
|
|
88
|
+
id: 'valkeyHelmRelease',
|
|
89
|
+
});
|
|
90
|
+
// Status derived from HelmRelease conditions.
|
|
91
|
+
return {
|
|
92
|
+
ready: Cel.expr(_helmRelease.status.conditions, '.exists(c, c.type == "Ready" && c.status == "True")'),
|
|
93
|
+
// Phase cannot distinguish Failed from Installing due to a CEL evaluator
|
|
94
|
+
// limitation (#48). Use the `failed` field for failure detection.
|
|
95
|
+
phase: Cel.expr(_helmRelease.status.conditions, '.exists(c, c.type == "Ready" && c.status == "True") ? "Ready" : "Installing"'),
|
|
96
|
+
// Separate failed boolean — workaround for the nested CEL ternary limitation.
|
|
97
|
+
// True when the Ready condition is explicitly False (not just absent/Unknown).
|
|
98
|
+
failed: Cel.expr(_helmRelease.status.conditions, '.exists(c, c.type == "Ready" && c.status == "False")'),
|
|
99
|
+
// Static version from deploy-time config, not derived from live HelmRelease
|
|
100
|
+
// status. If the operator is upgraded out-of-band (e.g. Flux automation),
|
|
101
|
+
// this value will not reflect the running version.
|
|
102
|
+
version: appVersion,
|
|
103
|
+
};
|
|
104
|
+
});
|
|
105
|
+
//# sourceMappingURL=valkey-bootstrap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"valkey-bootstrap.js","sourceRoot":"","sources":["../../../../src/factories/valkey/compositions/valkey-bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAE,GAAG,EAAE,MAAM,iCAAiC,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,2BAA2B,EAC3B,2BAA2B,GAC5B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAC;AAE7E;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,OAAe;IACvC,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;AACxC,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,qBAAqB,CAClD;IACE,IAAI,EAAE,kBAAkB;IACxB,IAAI,EAAE,iBAAiB;IACvB,IAAI,EAAE,2BAA2B;IACjC,MAAM,EAAE,2BAA2B;CACpC,EACD,CAAC,IAA2B,EAAE,EAAE;IAC9B,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,IAAI,wBAAwB,CAAC;IACrE,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,IAAI,sBAAsB,CAAC;IAC/D,MAAM,UAAU,GAAG,gBAAgB,CAAC,eAAe,CAAC,CAAC;IAErD,MAAM,UAAU,GAAG,2BAA2B,CAAC;QAC7C,GAAG,IAAI;QACP,SAAS,EAAE,iBAAiB;QAC5B,OAAO,EAAE,eAAe;KACzB,CAAC,CAAC;IAEH,8EAA8E;IAC9E,gFAAgF;IAChF,0DAA0D;IAC1D,MAAM,gBAAgB,GAAG,SAAS,CAAC;QACjC,QAAQ,EAAE;YACR,IAAI,EAAE,iBAAiB;YACvB,MAAM,EAAE;gBACN,wBAAwB,EAAE,iBAAiB;gBAC3C,4BAA4B,EAAE,IAAI,CAAC,IAAI;gBACvC,2BAA2B,EAAE,UAAU;gBACvC,8BAA8B,EAAE,SAAS;aAC1C;SACF;QACD,EAAE,EAAE,iBAAiB;KACtB,CAAC,CAAC;IAEH,6EAA6E;IAC7E,gFAAgF;IAChF,oFAAoF;IACpF,MAAM,eAAe,GAAG,oBAAoB,CAAC;QAC3C,IAAI,EAAE,wBAAwB;QAC9B,SAAS,EAAE,sBAAsB;QACjC,EAAE,EAAE,sBAAsB;KAC3B,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,iBAAiB,CAAC;QACrC,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,SAAS,EAAE,iBAAiB;QAC5B,OAAO,EAAE,eAAe;QACxB,MAAM,EAAE,UAAU;QAClB,cAAc,EAAE,wBAAwB;QACxC,EAAE,EAAE,mBAAmB;KACxB,CAAC,CAAC;IAEH,8CAA8C;IAC9C,OAAO;QACL,KAAK,EAAE,GAAG,CAAC,IAAI,CACb,YAAY,CAAC,MAAM,CAAC,UAAU,EAC9B,qDAAqD,CACtD;QACD,yEAAyE;QACzE,kEAAkE;QAClE,KAAK,EAAE,GAAG,CAAC,IAAI,CACb,YAAY,CAAC,MAAM,CAAC,UAAU,EAC9B,8EAA8E,CAC/E;QACD,8EAA8E;QAC9E,+EAA+E;QAC/E,MAAM,EAAE,GAAG,CAAC,IAAI,CACd,YAAY,CAAC,MAAM,CAAC,UAAU,EAC9B,sDAAsD,CACvD;QACD,4EAA4E;QAC5E,0EAA0E;QAC1E,mDAAmD;QACnD,OAAO,EAAE,UAAU;KACpB,CAAC;AACJ,CAAC,CACF,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hyperspike Valkey Operator Integration for TypeKro
|
|
3
|
+
*
|
|
4
|
+
* Provides type-safe factories for managing Valkey clusters on Kubernetes
|
|
5
|
+
* using the Hyperspike Valkey operator.
|
|
6
|
+
*
|
|
7
|
+
* ## Resources
|
|
8
|
+
* - `valkey()` — Valkey cluster (sharded with optional replicas)
|
|
9
|
+
* - `valkeyHelmRepository()` — Helm chart repository (OCI)
|
|
10
|
+
* - `valkeyHelmRelease()` — Operator installation via Helm
|
|
11
|
+
*
|
|
12
|
+
* ## Compositions
|
|
13
|
+
* - `valkeyBootstrap` — Complete operator deployment (namespace + Helm repo + release)
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* import { valkeyBootstrap, valkey } from 'typekro/valkey';
|
|
18
|
+
*
|
|
19
|
+
* // Install the operator
|
|
20
|
+
* const operatorFactory = valkeyBootstrap.factory('kro', {
|
|
21
|
+
* namespace: 'valkey-operator-system',
|
|
22
|
+
* });
|
|
23
|
+
* await operatorFactory.deploy({
|
|
24
|
+
* name: 'valkey-operator',
|
|
25
|
+
* namespace: 'valkey-operator-system',
|
|
26
|
+
* });
|
|
27
|
+
*
|
|
28
|
+
* // Create a Valkey cluster
|
|
29
|
+
* const cache = valkey({
|
|
30
|
+
* name: 'app-cache',
|
|
31
|
+
* namespace: 'default',
|
|
32
|
+
* spec: {
|
|
33
|
+
* shards: 3,
|
|
34
|
+
* replicas: 1,
|
|
35
|
+
* storage: {
|
|
36
|
+
* resources: { requests: { storage: '10Gi' } },
|
|
37
|
+
* },
|
|
38
|
+
* },
|
|
39
|
+
* id: 'appCache',
|
|
40
|
+
* });
|
|
41
|
+
* ```
|
|
42
|
+
*
|
|
43
|
+
* @see https://github.com/hyperspike/valkey-operator
|
|
44
|
+
* @module
|
|
45
|
+
*/
|
|
46
|
+
export * from './compositions/index.js';
|
|
47
|
+
export * from './resources/index.js';
|
|
48
|
+
export * from './types.js';
|
|
49
|
+
export * from './utils/index.js';
|
|
50
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/factories/valkey/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hyperspike Valkey Operator Integration for TypeKro
|
|
3
|
+
*
|
|
4
|
+
* Provides type-safe factories for managing Valkey clusters on Kubernetes
|
|
5
|
+
* using the Hyperspike Valkey operator.
|
|
6
|
+
*
|
|
7
|
+
* ## Resources
|
|
8
|
+
* - `valkey()` — Valkey cluster (sharded with optional replicas)
|
|
9
|
+
* - `valkeyHelmRepository()` — Helm chart repository (OCI)
|
|
10
|
+
* - `valkeyHelmRelease()` — Operator installation via Helm
|
|
11
|
+
*
|
|
12
|
+
* ## Compositions
|
|
13
|
+
* - `valkeyBootstrap` — Complete operator deployment (namespace + Helm repo + release)
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* import { valkeyBootstrap, valkey } from 'typekro/valkey';
|
|
18
|
+
*
|
|
19
|
+
* // Install the operator
|
|
20
|
+
* const operatorFactory = valkeyBootstrap.factory('kro', {
|
|
21
|
+
* namespace: 'valkey-operator-system',
|
|
22
|
+
* });
|
|
23
|
+
* await operatorFactory.deploy({
|
|
24
|
+
* name: 'valkey-operator',
|
|
25
|
+
* namespace: 'valkey-operator-system',
|
|
26
|
+
* });
|
|
27
|
+
*
|
|
28
|
+
* // Create a Valkey cluster
|
|
29
|
+
* const cache = valkey({
|
|
30
|
+
* name: 'app-cache',
|
|
31
|
+
* namespace: 'default',
|
|
32
|
+
* spec: {
|
|
33
|
+
* shards: 3,
|
|
34
|
+
* replicas: 1,
|
|
35
|
+
* storage: {
|
|
36
|
+
* resources: { requests: { storage: '10Gi' } },
|
|
37
|
+
* },
|
|
38
|
+
* },
|
|
39
|
+
* id: 'appCache',
|
|
40
|
+
* });
|
|
41
|
+
* ```
|
|
42
|
+
*
|
|
43
|
+
* @see https://github.com/hyperspike/valkey-operator
|
|
44
|
+
* @module
|
|
45
|
+
*/
|
|
46
|
+
export * from './compositions/index.js';
|
|
47
|
+
export * from './resources/index.js';
|
|
48
|
+
export * from './types.js';
|
|
49
|
+
export * from './utils/index.js';
|
|
50
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/factories/valkey/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hyperspike Valkey Operator Helm Resource Factories
|
|
3
|
+
*
|
|
4
|
+
* Wrappers around the generic Helm factories with Valkey-specific defaults.
|
|
5
|
+
* Used by the valkeyBootstrap composition to install the operator.
|
|
6
|
+
*
|
|
7
|
+
* Note: The Hyperspike operator uses an OCI registry (ghcr.io), not a
|
|
8
|
+
* traditional Helm chart repository. Flux HelmRepository supports OCI
|
|
9
|
+
* via `type: oci` in the spec.
|
|
10
|
+
*/
|
|
11
|
+
import type { Composable, Enhanced } from '../../../core/types/index.js';
|
|
12
|
+
import { type HelmRepositorySpec, type HelmRepositoryStatus } from '../../helm/helm-repository.js';
|
|
13
|
+
import type { HelmReleaseSpec, HelmReleaseStatus } from '../../helm/types.js';
|
|
14
|
+
import type { ValkeyHelmReleaseConfig, ValkeyHelmRepositoryConfig } from '../types.js';
|
|
15
|
+
/** Default OCI registry URL for the Hyperspike charts. */
|
|
16
|
+
export declare const DEFAULT_VALKEY_REPO_URL = "oci://ghcr.io/hyperspike";
|
|
17
|
+
/** Default chart version (Hyperspike uses 'v{version}-chart' tag format). */
|
|
18
|
+
export declare const DEFAULT_VALKEY_VERSION = "v0.0.61-chart";
|
|
19
|
+
/** Default HelmRepository resource name. */
|
|
20
|
+
export declare const DEFAULT_VALKEY_REPO_NAME = "valkey-operator-repo";
|
|
21
|
+
/**
|
|
22
|
+
* Create a HelmRepository for the Hyperspike Valkey operator OCI registry.
|
|
23
|
+
*
|
|
24
|
+
* @param config - Repository configuration with Valkey-specific defaults
|
|
25
|
+
* @returns Enhanced HelmRepository resource
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```typescript
|
|
29
|
+
* const repo = valkeyHelmRepository({
|
|
30
|
+
* name: 'valkey-operator-repo',
|
|
31
|
+
* namespace: 'flux-system',
|
|
32
|
+
* id: 'valkeyHelmRepository',
|
|
33
|
+
* });
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export declare function valkeyHelmRepository(config: Composable<ValkeyHelmRepositoryConfig>): Enhanced<HelmRepositorySpec, HelmRepositoryStatus>;
|
|
37
|
+
/**
|
|
38
|
+
* Create a HelmRelease for the Hyperspike Valkey operator.
|
|
39
|
+
*
|
|
40
|
+
* @param config - Release configuration with Valkey-specific defaults
|
|
41
|
+
* @returns Enhanced HelmRelease resource
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```typescript
|
|
45
|
+
* const release = valkeyHelmRelease({
|
|
46
|
+
* name: 'valkey-operator',
|
|
47
|
+
* namespace: 'valkey-operator-system',
|
|
48
|
+
* id: 'valkeyHelmRelease',
|
|
49
|
+
* });
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
export declare function valkeyHelmRelease(config: Composable<ValkeyHelmReleaseConfig>): Enhanced<HelmReleaseSpec, HelmReleaseStatus>;
|
|
53
|
+
//# sourceMappingURL=helm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helm.d.ts","sourceRoot":"","sources":["../../../../src/factories/valkey/resources/helm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EAC1B,MAAM,+BAA+B,CAAC;AAEvC,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE9E,OAAO,KAAK,EAAE,uBAAuB,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAEvF,0DAA0D;AAC1D,eAAO,MAAM,uBAAuB,6BAA6B,CAAC;AAElE,6EAA6E;AAC7E,eAAO,MAAM,sBAAsB,kBAAkB,CAAC;AAEtD,4CAA4C;AAC5C,eAAO,MAAM,wBAAwB,yBAAyB,CAAC;AAE/D;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,UAAU,CAAC,0BAA0B,CAAC,GAC7C,QAAQ,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,CAWpD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,UAAU,CAAC,uBAAuB,CAAC,GAC1C,QAAQ,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAuB9C"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hyperspike Valkey Operator Helm Resource Factories
|
|
3
|
+
*
|
|
4
|
+
* Wrappers around the generic Helm factories with Valkey-specific defaults.
|
|
5
|
+
* Used by the valkeyBootstrap composition to install the operator.
|
|
6
|
+
*
|
|
7
|
+
* Note: The Hyperspike operator uses an OCI registry (ghcr.io), not a
|
|
8
|
+
* traditional Helm chart repository. Flux HelmRepository supports OCI
|
|
9
|
+
* via `type: oci` in the spec.
|
|
10
|
+
*/
|
|
11
|
+
import { DEFAULT_FLUX_NAMESPACE } from '../../../core/config/defaults.js';
|
|
12
|
+
import { createHelmRepositoryReadinessEvaluator, helmRepository, } from '../../helm/helm-repository.js';
|
|
13
|
+
import { createLabeledHelmReleaseEvaluator } from '../../helm/readiness-evaluators.js';
|
|
14
|
+
import { helmRelease } from '../../helm/helm-release.js';
|
|
15
|
+
/** Default OCI registry URL for the Hyperspike charts. */
|
|
16
|
+
export const DEFAULT_VALKEY_REPO_URL = 'oci://ghcr.io/hyperspike';
|
|
17
|
+
/** Default chart version (Hyperspike uses 'v{version}-chart' tag format). */
|
|
18
|
+
export const DEFAULT_VALKEY_VERSION = 'v0.0.61-chart';
|
|
19
|
+
/** Default HelmRepository resource name. */
|
|
20
|
+
export const DEFAULT_VALKEY_REPO_NAME = 'valkey-operator-repo';
|
|
21
|
+
/**
|
|
22
|
+
* Create a HelmRepository for the Hyperspike Valkey operator OCI registry.
|
|
23
|
+
*
|
|
24
|
+
* @param config - Repository configuration with Valkey-specific defaults
|
|
25
|
+
* @returns Enhanced HelmRepository resource
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```typescript
|
|
29
|
+
* const repo = valkeyHelmRepository({
|
|
30
|
+
* name: 'valkey-operator-repo',
|
|
31
|
+
* namespace: 'flux-system',
|
|
32
|
+
* id: 'valkeyHelmRepository',
|
|
33
|
+
* });
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export function valkeyHelmRepository(config) {
|
|
37
|
+
return helmRepository({
|
|
38
|
+
name: config.name || DEFAULT_VALKEY_REPO_NAME,
|
|
39
|
+
namespace: config.namespace || DEFAULT_FLUX_NAMESPACE,
|
|
40
|
+
url: config.url || DEFAULT_VALKEY_REPO_URL,
|
|
41
|
+
type: 'oci',
|
|
42
|
+
interval: config.interval || '5m',
|
|
43
|
+
...(config.id && { id: config.id }),
|
|
44
|
+
}).withReadinessEvaluator(createHelmRepositoryReadinessEvaluator('Valkey'));
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Create a HelmRelease for the Hyperspike Valkey operator.
|
|
48
|
+
*
|
|
49
|
+
* @param config - Release configuration with Valkey-specific defaults
|
|
50
|
+
* @returns Enhanced HelmRelease resource
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* ```typescript
|
|
54
|
+
* const release = valkeyHelmRelease({
|
|
55
|
+
* name: 'valkey-operator',
|
|
56
|
+
* namespace: 'valkey-operator-system',
|
|
57
|
+
* id: 'valkeyHelmRelease',
|
|
58
|
+
* });
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
export function valkeyHelmRelease(config) {
|
|
62
|
+
// Pass values directly — the core proxy system handles serialization.
|
|
63
|
+
// chart.repository is used for chart identification; sourceRef is what Flux
|
|
64
|
+
// actually uses to resolve the chart. Both are required by the helmRelease factory.
|
|
65
|
+
return helmRelease({
|
|
66
|
+
name: config.name,
|
|
67
|
+
namespace: config.namespace || 'valkey-operator-system',
|
|
68
|
+
chart: {
|
|
69
|
+
repository: DEFAULT_VALKEY_REPO_URL,
|
|
70
|
+
name: 'valkey-operator',
|
|
71
|
+
version: config.version || DEFAULT_VALKEY_VERSION,
|
|
72
|
+
},
|
|
73
|
+
sourceRef: {
|
|
74
|
+
name: config.repositoryName || DEFAULT_VALKEY_REPO_NAME,
|
|
75
|
+
namespace: DEFAULT_FLUX_NAMESPACE,
|
|
76
|
+
kind: 'HelmRepository',
|
|
77
|
+
},
|
|
78
|
+
values: config.values || {},
|
|
79
|
+
...(config.id && { id: config.id }),
|
|
80
|
+
}).withReadinessEvaluator(createLabeledHelmReleaseEvaluator('Valkey'));
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=helm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helm.js","sourceRoot":"","sources":["../../../../src/factories/valkey/resources/helm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAE1E,OAAO,EACL,sCAAsC,EACtC,cAAc,GAGf,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,iCAAiC,EAAE,MAAM,oCAAoC,CAAC;AAEvF,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAGzD,0DAA0D;AAC1D,MAAM,CAAC,MAAM,uBAAuB,GAAG,0BAA0B,CAAC;AAElE,6EAA6E;AAC7E,MAAM,CAAC,MAAM,sBAAsB,GAAG,eAAe,CAAC;AAEtD,4CAA4C;AAC5C,MAAM,CAAC,MAAM,wBAAwB,GAAG,sBAAsB,CAAC;AAE/D;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,oBAAoB,CAClC,MAA8C;IAE9C,OAAO,cAAc,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,wBAAwB;QAC7C,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,sBAAsB;QACrD,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,uBAAuB;QAC1C,IAAI,EAAE,KAAK;QACX,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,IAAI;QACjC,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;KACpC,CAAC,CAAC,sBAAsB,CACvB,sCAAsC,CAAC,QAAQ,CAAC,CACK,CAAC;AAC1D,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,iBAAiB,CAC/B,MAA2C;IAE3C,sEAAsE;IAEtE,4EAA4E;IAC5E,oFAAoF;IACpF,OAAO,WAAW,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,wBAAwB;QACvD,KAAK,EAAE;YACL,UAAU,EAAE,uBAAuB;YACnC,IAAI,EAAE,iBAAiB;YACvB,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,sBAAsB;SAClD;QACD,SAAS,EAAE;YACT,IAAI,EAAE,MAAM,CAAC,cAAc,IAAI,wBAAwB;YACvD,SAAS,EAAE,sBAAsB;YACjC,IAAI,EAAE,gBAAgB;SACvB;QACD,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;QAC3B,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;KACpC,CAAC,CAAC,sBAAsB,CACvB,iCAAiC,CAAC,QAAQ,CAAC,CACI,CAAC;AACpD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/factories/valkey/resources/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/factories/valkey/resources/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hyperspike Valkey Cluster Factory
|
|
3
|
+
*
|
|
4
|
+
* Creates a Valkey CRD resource representing a Valkey cluster
|
|
5
|
+
* managed by the Hyperspike operator.
|
|
6
|
+
*/
|
|
7
|
+
import type { Composable, Enhanced } from '../../../core/types/index.js';
|
|
8
|
+
import type { ValkeyConfig, ValkeyStatus } from '../types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Hyperspike Valkey Cluster Factory
|
|
11
|
+
*
|
|
12
|
+
* Creates a Valkey cluster managed by the Hyperspike operator. Supports
|
|
13
|
+
* sharded clusters with optional replication, TLS, external access via
|
|
14
|
+
* Envoy proxy or LoadBalancer, and Prometheus monitoring.
|
|
15
|
+
*
|
|
16
|
+
* @param config - Valkey cluster configuration following hyperspike.io/v1 API
|
|
17
|
+
* @returns Enhanced Valkey resource with readiness evaluation
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* const cache = valkey({
|
|
22
|
+
* name: 'app-cache',
|
|
23
|
+
* namespace: 'default',
|
|
24
|
+
* spec: {
|
|
25
|
+
* shards: 3,
|
|
26
|
+
* replicas: 1,
|
|
27
|
+
* storage: {
|
|
28
|
+
* spec: {
|
|
29
|
+
* storageClassName: 'gp3',
|
|
30
|
+
* resources: { requests: { storage: '10Gi' } },
|
|
31
|
+
* },
|
|
32
|
+
* },
|
|
33
|
+
* resources: {
|
|
34
|
+
* requests: { cpu: '250m', memory: '512Mi' },
|
|
35
|
+
* limits: { cpu: '1', memory: '2Gi' },
|
|
36
|
+
* },
|
|
37
|
+
* prometheus: true,
|
|
38
|
+
* },
|
|
39
|
+
* id: 'appCache',
|
|
40
|
+
* });
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
declare function createValkeyResource(config: Composable<ValkeyConfig>): Enhanced<ValkeyConfig['spec'], ValkeyStatus>;
|
|
44
|
+
export declare const valkey: typeof createValkeyResource;
|
|
45
|
+
export {};
|
|
46
|
+
//# sourceMappingURL=valkey.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"valkey.d.ts","sourceRoot":"","sources":["../../../../src/factories/valkey/resources/valkey.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAkB,MAAM,8BAA8B,CAAC;AAEzF,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAsD9D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,iBAAS,oBAAoB,CAC3B,MAAM,EAAE,UAAU,CAAC,YAAY,CAAC,GAC/B,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC,CAsC9C;AAED,eAAO,MAAM,MAAM,6BAAuB,CAAC"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hyperspike Valkey Cluster Factory
|
|
3
|
+
*
|
|
4
|
+
* Creates a Valkey CRD resource representing a Valkey cluster
|
|
5
|
+
* managed by the Hyperspike operator.
|
|
6
|
+
*/
|
|
7
|
+
import { createConditionBasedReadinessEvaluator } from '../../../core/readiness/index.js';
|
|
8
|
+
import { createResource } from '../../shared.js';
|
|
9
|
+
/** Base condition-based evaluator for Valkey Ready condition. */
|
|
10
|
+
const baseValkeyEvaluator = createConditionBasedReadinessEvaluator({ kind: 'Valkey' });
|
|
11
|
+
/**
|
|
12
|
+
* Valkey Readiness Evaluator
|
|
13
|
+
*
|
|
14
|
+
* Checks the standard Ready condition first. If status has a top-level
|
|
15
|
+
* `ready` boolean (Hyperspike pattern), uses that as a fast path.
|
|
16
|
+
* Falls back to condition-based evaluation for detailed state.
|
|
17
|
+
*/
|
|
18
|
+
function valkeyReadinessEvaluator(liveResource) {
|
|
19
|
+
const resource = liveResource;
|
|
20
|
+
const status = resource?.status;
|
|
21
|
+
if (!status) {
|
|
22
|
+
return {
|
|
23
|
+
ready: false,
|
|
24
|
+
message: 'Valkey cluster has no status yet',
|
|
25
|
+
reason: 'StatusMissing',
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
// Fast path: Hyperspike reports a top-level ready boolean
|
|
29
|
+
if (status.ready === true) {
|
|
30
|
+
return {
|
|
31
|
+
ready: true,
|
|
32
|
+
message: 'Valkey cluster is ready',
|
|
33
|
+
reason: 'Ready',
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
if (status.ready === false) {
|
|
37
|
+
// Check conditions for a more specific reason
|
|
38
|
+
const readyCondition = status.conditions?.find((c) => c.type === 'Ready');
|
|
39
|
+
if (readyCondition) {
|
|
40
|
+
return {
|
|
41
|
+
ready: false,
|
|
42
|
+
message: readyCondition.message || 'Valkey cluster is not ready',
|
|
43
|
+
reason: readyCondition.reason || 'NotReady',
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
return {
|
|
47
|
+
ready: false,
|
|
48
|
+
message: 'Valkey cluster is not ready',
|
|
49
|
+
reason: 'NotReady',
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
// Fall back to condition-based evaluation
|
|
53
|
+
return baseValkeyEvaluator(liveResource);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Hyperspike Valkey Cluster Factory
|
|
57
|
+
*
|
|
58
|
+
* Creates a Valkey cluster managed by the Hyperspike operator. Supports
|
|
59
|
+
* sharded clusters with optional replication, TLS, external access via
|
|
60
|
+
* Envoy proxy or LoadBalancer, and Prometheus monitoring.
|
|
61
|
+
*
|
|
62
|
+
* @param config - Valkey cluster configuration following hyperspike.io/v1 API
|
|
63
|
+
* @returns Enhanced Valkey resource with readiness evaluation
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* ```typescript
|
|
67
|
+
* const cache = valkey({
|
|
68
|
+
* name: 'app-cache',
|
|
69
|
+
* namespace: 'default',
|
|
70
|
+
* spec: {
|
|
71
|
+
* shards: 3,
|
|
72
|
+
* replicas: 1,
|
|
73
|
+
* storage: {
|
|
74
|
+
* spec: {
|
|
75
|
+
* storageClassName: 'gp3',
|
|
76
|
+
* resources: { requests: { storage: '10Gi' } },
|
|
77
|
+
* },
|
|
78
|
+
* },
|
|
79
|
+
* resources: {
|
|
80
|
+
* requests: { cpu: '250m', memory: '512Mi' },
|
|
81
|
+
* limits: { cpu: '1', memory: '2Gi' },
|
|
82
|
+
* },
|
|
83
|
+
* prometheus: true,
|
|
84
|
+
* },
|
|
85
|
+
* id: 'appCache',
|
|
86
|
+
* });
|
|
87
|
+
* ```
|
|
88
|
+
*/
|
|
89
|
+
function createValkeyResource(config) {
|
|
90
|
+
// Map the user-facing `shards` field to the CRD's `nodes` JSON tag.
|
|
91
|
+
// The Hyperspike CRD Go type uses `Nodes int32 \`json:"nodes"\``
|
|
92
|
+
// but we expose it as `shards` for clarity.
|
|
93
|
+
const spec = config.spec;
|
|
94
|
+
const crdSpec = {};
|
|
95
|
+
for (const [key, value] of Object.entries(spec)) {
|
|
96
|
+
if (key === 'shards') {
|
|
97
|
+
crdSpec.nodes = value;
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
crdSpec[key] = value;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return createResource({
|
|
104
|
+
apiVersion: 'hyperspike.io/v1',
|
|
105
|
+
kind: 'Valkey',
|
|
106
|
+
metadata: {
|
|
107
|
+
name: config.name,
|
|
108
|
+
...(config.namespace && { namespace: config.namespace }),
|
|
109
|
+
// Labels must be non-empty: the Hyperspike operator's labels() function
|
|
110
|
+
// panics on nil map assignment when metadata.labels is absent.
|
|
111
|
+
// https://github.com/hyperspike/valkey-operator/blob/v0.0.61/internal/controller/valkey_controller.go#L250
|
|
112
|
+
labels: {
|
|
113
|
+
'app.kubernetes.io/name': 'valkey',
|
|
114
|
+
'app.kubernetes.io/instance': config.name,
|
|
115
|
+
'app.kubernetes.io/managed-by': 'typekro',
|
|
116
|
+
},
|
|
117
|
+
},
|
|
118
|
+
spec: crdSpec,
|
|
119
|
+
...(config.id && { id: config.id }),
|
|
120
|
+
}, { scope: 'namespaced' }).withReadinessEvaluator(valkeyReadinessEvaluator);
|
|
121
|
+
}
|
|
122
|
+
export const valkey = createValkeyResource;
|
|
123
|
+
//# sourceMappingURL=valkey.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"valkey.js","sourceRoot":"","sources":["../../../../src/factories/valkey/resources/valkey.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,sCAAsC,EAAE,MAAM,kCAAkC,CAAC;AAE1F,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGjD,iEAAiE;AACjE,MAAM,mBAAmB,GAAG,sCAAsC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;AAEvF;;;;;;GAMG;AACH,SAAS,wBAAwB,CAAC,YAAqB;IACrD,MAAM,QAAQ,GAAG,YAA4D,CAAC;IAC9E,MAAM,MAAM,GAAG,QAAQ,EAAE,MAAM,CAAC;IAEhC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,OAAO,EAAE,kCAAkC;YAC3C,MAAM,EAAE,eAAe;SACxB,CAAC;IACJ,CAAC;IAED,0DAA0D;IAC1D,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1B,OAAO;YACL,KAAK,EAAE,IAAI;YACX,OAAO,EAAE,yBAAyB;YAClC,MAAM,EAAE,OAAO;SAChB,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;QAC3B,8CAA8C;QAC9C,MAAM,cAAc,GAAG,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;QAC1E,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,OAAO,EAAE,cAAc,CAAC,OAAO,IAAI,6BAA6B;gBAChE,MAAM,EAAE,cAAc,CAAC,MAAM,IAAI,UAAU;aAC5C,CAAC;QACJ,CAAC;QACD,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,OAAO,EAAE,6BAA6B;YACtC,MAAM,EAAE,UAAU;SACnB,CAAC;IACJ,CAAC;IAED,0CAA0C;IAC1C,OAAO,mBAAmB,CAAC,YAAY,CAAC,CAAC;AAC3C,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,SAAS,oBAAoB,CAC3B,MAAgC;IAEhC,oEAAoE;IACpE,iEAAiE;IACjE,4CAA4C;IAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACzB,MAAM,OAAO,GAA4B,EAAE,CAAC;IAC5C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAChD,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YACrB,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACvB,CAAC;IACH,CAAC;IAED,OAAO,cAAc,CACnB;QACE,UAAU,EAAE,kBAAkB;QAC9B,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE;YACR,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;YACxD,wEAAwE;YACxE,+DAA+D;YAC/D,2GAA2G;YAC3G,MAAM,EAAE;gBACN,wBAAwB,EAAE,QAAQ;gBAClC,4BAA4B,EAAE,MAAM,CAAC,IAAI;gBACzC,8BAA8B,EAAE,SAAS;aAC1C;SACF;QACD,IAAI,EAAE,OAAsB;QAC5B,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;KACpC,EACD,EAAE,KAAK,EAAE,YAAY,EAAE,CACxB,CAAC,sBAAsB,CAAC,wBAAwB,CAGhD,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,oBAAoB,CAAC"}
|