@highstate/k8s 0.9.20 → 0.9.21
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/{chunk-A3XGSDIW.js → chunk-5BNGVYWY.js} +3 -3
- package/dist/{chunk-A3XGSDIW.js.map → chunk-5BNGVYWY.js.map} +1 -1
- package/dist/{chunk-4JGXGN2L.js → chunk-7CAKYZQ4.js} +5 -5
- package/dist/{chunk-4JGXGN2L.js.map → chunk-7CAKYZQ4.js.map} +1 -1
- package/dist/{chunk-2EEHJZPD.js → chunk-HH2JJELM.js} +2 -2
- package/dist/chunk-HH2JJELM.js.map +1 -0
- package/dist/{chunk-IMTXUK2U.js → chunk-KHNUUVL4.js} +2 -2
- package/dist/{chunk-IMTXUK2U.js.map → chunk-KHNUUVL4.js.map} +1 -1
- package/dist/{chunk-KDD6XUWM.js → chunk-O3ZNJMTN.js} +2 -2
- package/dist/{chunk-KDD6XUWM.js.map → chunk-O3ZNJMTN.js.map} +1 -1
- package/dist/{chunk-SBC3TUIN.js → chunk-OEGSMSYV.js} +7 -7
- package/dist/chunk-OEGSMSYV.js.map +1 -0
- package/dist/{chunk-JYNXQ3I3.js → chunk-PODFA5KM.js} +3 -3
- package/dist/{chunk-JYNXQ3I3.js.map → chunk-PODFA5KM.js.map} +1 -1
- package/dist/{chunk-NXSYCA3V.js → chunk-UF3ADZGM.js} +54 -54
- package/dist/chunk-UF3ADZGM.js.map +1 -0
- package/dist/{chunk-NOFJC3EM.js → chunk-VI4JGEVG.js} +3 -3
- package/dist/{chunk-NOFJC3EM.js.map → chunk-VI4JGEVG.js.map} +1 -1
- package/dist/deployment-NTLQBNXM.js +8 -0
- package/dist/{deployment-752P6JIT.js.map → deployment-NTLQBNXM.js.map} +1 -1
- package/dist/highstate.manifest.json +2 -2
- package/dist/impl/gateway-route.js +3 -3
- package/dist/impl/tls-certificate.js +2 -2
- package/dist/impl/tls-certificate.js.map +1 -1
- package/dist/index.js +12 -12
- package/dist/index.js.map +1 -1
- package/dist/stateful-set-KBJ3EAMW.js +8 -0
- package/dist/{stateful-set-N64YVKR7.js.map → stateful-set-KBJ3EAMW.js.map} +1 -1
- package/dist/units/cert-manager/index.js +5 -5
- package/dist/units/cert-manager/index.js.map +1 -1
- package/dist/units/dns01-issuer/index.js +2 -2
- package/dist/units/dns01-issuer/index.js.map +1 -1
- package/dist/units/existing-cluster/index.js +3 -3
- package/dist/units/existing-cluster/index.js.map +1 -1
- package/package.json +15 -10
- package/src/cluster.ts +1 -1
- package/src/dns01-solver.ts +1 -1
- package/src/gateway/backend.ts +1 -1
- package/src/gateway/http-route.ts +6 -6
- package/src/gateway/index.ts +1 -1
- package/src/impl/tls-certificate.ts +1 -1
- package/src/network-policy.ts +18 -18
- package/src/pvc.ts +8 -8
- package/src/scripting/bundle.ts +8 -8
- package/src/scripting/container.ts +1 -1
- package/src/scripting/environment.ts +1 -1
- package/src/secret.ts +1 -1
- package/src/units/cert-manager/index.ts +1 -1
- package/src/units/dns01-issuer/index.ts +2 -2
- package/src/units/existing-cluster/index.ts +4 -4
- package/dist/chunk-2EEHJZPD.js.map +0 -1
- package/dist/chunk-NXSYCA3V.js.map +0 -1
- package/dist/chunk-SBC3TUIN.js.map +0 -1
- package/dist/deployment-752P6JIT.js +0 -8
- package/dist/stateful-set-N64YVKR7.js +0 -8
@@ -1,9 +1,9 @@
|
|
1
|
-
import { dns01SolverMediator } from '../../chunk-
|
1
|
+
import { dns01SolverMediator } from '../../chunk-HH2JJELM.js';
|
2
2
|
import { getProviderAsync, Namespace } from '../../chunk-WGMJCZSK.js';
|
3
3
|
import '../../chunk-PZ5AY32C.js';
|
4
|
+
import { cert_manager } from '@highstate/cert-manager';
|
4
5
|
import { k8s } from '@highstate/library';
|
5
6
|
import { forUnit } from '@highstate/pulumi';
|
6
|
-
import { cert_manager } from '@highstate/cert-manager';
|
7
7
|
|
8
8
|
var { name, inputs, outputs } = forUnit(k8s.dns01TlsIssuer);
|
9
9
|
var provider = await getProviderAsync(inputs.k8sCluster);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/units/dns01-issuer/index.ts"],"names":[],"mappings":";;;;;;;AAOA,IAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAQ,GAAI,OAAA,CAAQ,IAAI,cAAc,CAAA;AAE5D,IAAM,QAAA,GAAW,MAAM,gBAAA,CAAiB,MAAA,CAAO,UAAU,CAAA;AAEzD,IAAM,aAAA,GAAgB,SAAA,CAAU,GAAA,CAAI,cAAA,EAAgB;AAAA,EAClD,IAAA,EAAM,cAAA;AAAA,EACN,SAAS,MAAA,CAAO;AAClB,CAAC,CAAA;AAED,IAAI,aAAa,EAAA,CAAG,aAAA;AAAA,EAClB,IAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR;AAAA,KACF;AAAA,IACA,IAAA,EAAM;AAAA,MACJ,IAAA,EAAM;AAAA,QACJ,MAAA,EAAQ,gDAAA;AAAA,QACR,OAAA,EAAS;AAAA,UACP;AAAA,YACE,KAAA,EAAO,mBAAA,CAAoB,UAAA,CAAW,MAAA,CAAO,YAAY,OAAA,EAAS;AAAA,cAChE,SAAA,EAAW;AAAA,aACZ,CAAA;AAAA,YACD,UAAU,EAAE,QAAA,EAAU,CAAC,MAAA,CAAO,WAAA,CAAY,MAAM,CAAA;AAAE;AACpD,SACF;AAAA,QACA,mBAAA,EAAqB;AAAA,UACnB;AAAA;AACF;AACF;AACF,GACF;AAAA,EACA,EAAE,QAAA;AACJ,CAAA;AAEA,IAAO,uBAAQ,OAAA,CAAQ;AAAA,EACrB,aAAA,EAAe;AAAA,IACb,MAAA,EAAQ,OAAO,WAAA,CAAY;AAAA,GAC7B;AAAA,EAEA,SAAA,EAAW;AAAA,IACT,MAAA,EAAQ,OAAO,WAAA,CAAY,MAAA;AAAA,IAC3B,OAAA,EAAS;AAAA,MACP,OAAA,EAAS,gBAAA;AAAA,MACT,IAAA,EAAM;AAAA,QACJ,iBAAA,EAAmB,IAAA;AAAA,QACnB,SAAS,MAAA,CAAO;AAAA;AAClB;AACF;AAEJ,CAAC","file":"index.js","sourcesContent":["import {
|
1
|
+
{"version":3,"sources":["../../../src/units/dns01-issuer/index.ts"],"names":[],"mappings":";;;;;;;AAOA,IAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAQ,GAAI,OAAA,CAAQ,IAAI,cAAc,CAAA;AAE5D,IAAM,QAAA,GAAW,MAAM,gBAAA,CAAiB,MAAA,CAAO,UAAU,CAAA;AAEzD,IAAM,aAAA,GAAgB,SAAA,CAAU,GAAA,CAAI,cAAA,EAAgB;AAAA,EAClD,IAAA,EAAM,cAAA;AAAA,EACN,SAAS,MAAA,CAAO;AAClB,CAAC,CAAA;AAED,IAAI,aAAa,EAAA,CAAG,aAAA;AAAA,EAClB,IAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR;AAAA,KACF;AAAA,IACA,IAAA,EAAM;AAAA,MACJ,IAAA,EAAM;AAAA,QACJ,MAAA,EAAQ,gDAAA;AAAA,QACR,OAAA,EAAS;AAAA,UACP;AAAA,YACE,KAAA,EAAO,mBAAA,CAAoB,UAAA,CAAW,MAAA,CAAO,YAAY,OAAA,EAAS;AAAA,cAChE,SAAA,EAAW;AAAA,aACZ,CAAA;AAAA,YACD,UAAU,EAAE,QAAA,EAAU,CAAC,MAAA,CAAO,WAAA,CAAY,MAAM,CAAA;AAAE;AACpD,SACF;AAAA,QACA,mBAAA,EAAqB;AAAA,UACnB;AAAA;AACF;AACF;AACF,GACF;AAAA,EACA,EAAE,QAAA;AACJ,CAAA;AAEA,IAAO,uBAAQ,OAAA,CAAQ;AAAA,EACrB,aAAA,EAAe;AAAA,IACb,MAAA,EAAQ,OAAO,WAAA,CAAY;AAAA,GAC7B;AAAA,EAEA,SAAA,EAAW;AAAA,IACT,MAAA,EAAQ,OAAO,WAAA,CAAY,MAAA;AAAA,IAC3B,OAAA,EAAS;AAAA,MACP,OAAA,EAAS,gBAAA;AAAA,MACT,IAAA,EAAM;AAAA,QACJ,iBAAA,EAAmB,IAAA;AAAA,QACnB,SAAS,MAAA,CAAO;AAAA;AAClB;AACF;AAEJ,CAAC","file":"index.js","sourcesContent":["import { cert_manager } from \"@highstate/cert-manager\"\nimport { k8s } from \"@highstate/library\"\nimport { forUnit } from \"@highstate/pulumi\"\nimport { dns01SolverMediator } from \"../../dns01-solver\"\nimport { Namespace } from \"../../namespace\"\nimport { getProviderAsync } from \"../../shared\"\n\nconst { name, inputs, outputs } = forUnit(k8s.dns01TlsIssuer)\n\nconst provider = await getProviderAsync(inputs.k8sCluster)\n\nconst certManagerNs = Namespace.get(\"cert-manager\", {\n name: \"cert-manager\",\n cluster: inputs.k8sCluster,\n})\n\nnew cert_manager.v1.ClusterIssuer(\n name,\n {\n metadata: {\n name,\n },\n spec: {\n acme: {\n server: \"https://acme-v02.api.letsencrypt.org/directory\",\n solvers: [\n {\n dns01: dns01SolverMediator.callOutput(inputs.dnsProvider.implRef, {\n namespace: certManagerNs,\n }),\n selector: { dnsZones: [inputs.dnsProvider.domain] },\n },\n ],\n privateKeySecretRef: {\n name,\n },\n },\n },\n },\n { provider },\n)\n\nexport default outputs({\n $statusFields: {\n domain: inputs.dnsProvider.domain,\n },\n\n tlsIssuer: {\n domain: inputs.dnsProvider.domain,\n implRef: {\n package: \"@highstate/k8s\",\n data: {\n clusterIssuerName: name,\n cluster: inputs.k8sCluster,\n },\n },\n },\n})\n"]}
|
@@ -1,11 +1,11 @@
|
|
1
|
-
import { detectExternalIps, createK8sTerminal } from '../../chunk-
|
1
|
+
import { detectExternalIps, createK8sTerminal } from '../../chunk-O3ZNJMTN.js';
|
2
2
|
import '../../chunk-WGMJCZSK.js';
|
3
3
|
import '../../chunk-PZ5AY32C.js';
|
4
|
+
import { parseL3Endpoint, parseL4Endpoint, l4EndpointToString, l3EndpointToString } from '@highstate/common';
|
4
5
|
import { k8s } from '@highstate/library';
|
5
6
|
import { forUnit, toPromise, secret } from '@highstate/pulumi';
|
6
|
-
import { Provider, core } from '@pulumi/kubernetes';
|
7
7
|
import { KubeConfig, AppsV1Api } from '@kubernetes/client-node';
|
8
|
-
import {
|
8
|
+
import { Provider, core } from '@pulumi/kubernetes';
|
9
9
|
|
10
10
|
var { name, args, secrets, outputs } = forUnit(k8s.existingCluster);
|
11
11
|
var kubeconfigContent = await toPromise(secrets.kubeconfig.apply(JSON.stringify));
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/units/existing-cluster/index.ts"],"names":[],"mappings":";;;;;;;;;AAYA,IAAM,EAAE,MAAM,IAAA,EAAM,OAAA,EAAS,SAAQ,GAAI,OAAA,CAAQ,IAAI,eAAe,CAAA;AAEpE,IAAM,iBAAA,GAAoB,MAAM,SAAA,CAAU,OAAA,CAAQ,WAAW,KAAA,CAAM,IAAA,CAAK,SAAS,CAAC,CAAA;AAElF,IAAM,WAAW,IAAI,QAAA,CAAS,MAAM,EAAE,UAAA,EAAY,mBAAmB,CAAA;AAErE,IAAI,oBAAA;AAEJ,IAAM,UAAA,GAAa,IAAI,UAAA,EAAW;AAClC,UAAA,CAAW,eAAe,iBAAiB,CAAA;AAE3C,IAAM,OAAA,GAAU,UAAA,CAAW,aAAA,CAAc,SAAS,CAAA;AAElD,IAAM,YAAY,MAAM,OAAA,CACrB,uBAAA,CAAwB,EAAE,MAAM,QAAA,EAAU,SAAA,EAAW,aAAA,EAAe,EACpE,IAAA,CAAK,MAAM,IAAI,CAAA,CACf,KAAA,CAAM,MAAM,KAAK,CAAA;AAEpB,IAAI,SAAA,EAAW;AACb,EAAA,oBAAA,GAAuB;AAAA,IACrB,OAAA,EAAS,mBAAA;AAAA,IACT,MAAM;AAAC,GACT;AACF;AAEA,IAAM,cACJ,IAAA,CAAK,WAAA,IAAgB,MAAM,iBAAA,CAAkB,UAAA,EAAY,KAAK,iBAAiB,CAAA;AAEjF,IAAM,SAAA,GAAY,WAAA,CAAY,GAAA,CAAI,eAAe,CAAA;AACjD,IAAM,YAAA,GAAe,CAAC,eAAA,CAAgB,UAAA,CAAW,QAAA,CAAS,CAAC,CAAA,CAAE,MAAA,CAAO,OAAA,CAAQ,UAAA,EAAY,EAAE,CAAC,CAAC,CAAA;AAE5F,IAAM,UAAA,GAAa,KAAK,EAAA,CAAG,SAAA,CAAU,IAAI,aAAA,EAAe,aAAA,EAAe,EAAE,QAAA,EAAU,CAAA;AAEnF,IAAO,2BAAQ,OAAA,CAAQ;AAAA,EACrB,UAAA,EAAY;AAAA,IACV,EAAA,EAAI,WAAW,QAAA,CAAS,GAAA;AAAA,IACxB,YAAA,EAAc,WAAW,QAAA,CAAS,GAAA;AAAA,IAClC,IAAA;AAAA,IACA,oBAAA;AAAA,IACA,WAAA;AAAA,IACA,SAAA;AAAA,IACA,YAAA;AAAA,IACA,QAAQ,IAAA,CAAK,MAAA;AAAA,IACb,UAAA,EAAY,OAAO,iBAAiB;AAAA,GACtC;AAAA,EAEA,SAAA;AAAA,EACA,YAAA;AAAA,EAEA,UAAA,EAAY,CAAC,iBAAA,CAAkB,iBAAiB,CAAC,CAAA;AAAA,EAEjD,aAAA,EAAe;AAAA,IACb,SAAA,EAAW,WAAW,QAAA,CAAS,GAAA;AAAA,IAC/B,SAAA,EAAW,SAAA,CAAU,GAAA,CAAI,kBAAkB,CAAA;AAAA,IAC3C,YAAA,EAAc,YAAA,CAAa,GAAA,CAAI,kBAAkB;AAAA;AAErD,CAAC","file":"index.js","sourcesContent":["import {
|
1
|
+
{"version":3,"sources":["../../../src/units/existing-cluster/index.ts"],"names":[],"mappings":";;;;;;;;;AAYA,IAAM,EAAE,MAAM,IAAA,EAAM,OAAA,EAAS,SAAQ,GAAI,OAAA,CAAQ,IAAI,eAAe,CAAA;AAEpE,IAAM,iBAAA,GAAoB,MAAM,SAAA,CAAU,OAAA,CAAQ,WAAW,KAAA,CAAM,IAAA,CAAK,SAAS,CAAC,CAAA;AAElF,IAAM,WAAW,IAAI,QAAA,CAAS,MAAM,EAAE,UAAA,EAAY,mBAAmB,CAAA;AAErE,IAAI,oBAAA;AAEJ,IAAM,UAAA,GAAa,IAAI,UAAA,EAAW;AAClC,UAAA,CAAW,eAAe,iBAAiB,CAAA;AAE3C,IAAM,OAAA,GAAU,UAAA,CAAW,aAAA,CAAc,SAAS,CAAA;AAElD,IAAM,YAAY,MAAM,OAAA,CACrB,uBAAA,CAAwB,EAAE,MAAM,QAAA,EAAU,SAAA,EAAW,aAAA,EAAe,EACpE,IAAA,CAAK,MAAM,IAAI,CAAA,CACf,KAAA,CAAM,MAAM,KAAK,CAAA;AAEpB,IAAI,SAAA,EAAW;AACb,EAAA,oBAAA,GAAuB;AAAA,IACrB,OAAA,EAAS,mBAAA;AAAA,IACT,MAAM;AAAC,GACT;AACF;AAEA,IAAM,cACJ,IAAA,CAAK,WAAA,IAAgB,MAAM,iBAAA,CAAkB,UAAA,EAAY,KAAK,iBAAiB,CAAA;AAEjF,IAAM,SAAA,GAAY,WAAA,CAAY,GAAA,CAAI,eAAe,CAAA;AACjD,IAAM,YAAA,GAAe,CAAC,eAAA,CAAgB,UAAA,CAAW,QAAA,CAAS,CAAC,CAAA,CAAE,MAAA,CAAO,OAAA,CAAQ,UAAA,EAAY,EAAE,CAAC,CAAC,CAAA;AAE5F,IAAM,UAAA,GAAa,KAAK,EAAA,CAAG,SAAA,CAAU,IAAI,aAAA,EAAe,aAAA,EAAe,EAAE,QAAA,EAAU,CAAA;AAEnF,IAAO,2BAAQ,OAAA,CAAQ;AAAA,EACrB,UAAA,EAAY;AAAA,IACV,EAAA,EAAI,WAAW,QAAA,CAAS,GAAA;AAAA,IACxB,YAAA,EAAc,WAAW,QAAA,CAAS,GAAA;AAAA,IAClC,IAAA;AAAA,IACA,oBAAA;AAAA,IACA,WAAA;AAAA,IACA,SAAA;AAAA,IACA,YAAA;AAAA,IACA,QAAQ,IAAA,CAAK,MAAA;AAAA,IACb,UAAA,EAAY,OAAO,iBAAiB;AAAA,GACtC;AAAA,EAEA,SAAA;AAAA,EACA,YAAA;AAAA,EAEA,UAAA,EAAY,CAAC,iBAAA,CAAkB,iBAAiB,CAAC,CAAA;AAAA,EAEjD,aAAA,EAAe;AAAA,IACb,SAAA,EAAW,WAAW,QAAA,CAAS,GAAA;AAAA,IAC/B,SAAA,EAAW,SAAA,CAAU,GAAA,CAAI,kBAAkB,CAAA;AAAA,IAC3C,YAAA,EAAc,YAAA,CAAa,GAAA,CAAI,kBAAkB;AAAA;AAErD,CAAC","file":"index.js","sourcesContent":["import {\n l3EndpointToString,\n l4EndpointToString,\n parseL3Endpoint,\n parseL4Endpoint,\n} from \"@highstate/common\"\nimport { type ImplementationReference, k8s } from \"@highstate/library\"\nimport { forUnit, secret, toPromise } from \"@highstate/pulumi\"\nimport { AppsV1Api, KubeConfig } from \"@kubernetes/client-node\"\nimport { core, Provider } from \"@pulumi/kubernetes\"\nimport { createK8sTerminal, detectExternalIps } from \"../../cluster\"\n\nconst { name, args, secrets, outputs } = forUnit(k8s.existingCluster)\n\nconst kubeconfigContent = await toPromise(secrets.kubeconfig.apply(JSON.stringify))\n\nconst provider = new Provider(name, { kubeconfig: kubeconfigContent })\n\nlet networkPolicyImplRef: ImplementationReference | undefined\n\nconst kubeConfig = new KubeConfig()\nkubeConfig.loadFromString(kubeconfigContent)\n\nconst appsApi = kubeConfig.makeApiClient(AppsV1Api)\n\nconst hasCilium = await appsApi\n .readNamespacedDaemonSet({ name: \"cilium\", namespace: \"kube-system\" })\n .then(() => true)\n .catch(() => false)\n\nif (hasCilium) {\n networkPolicyImplRef = {\n package: \"@highstate/cilium\",\n data: {},\n }\n}\n\nconst externalIps =\n args.externalIps ?? (await detectExternalIps(kubeConfig, args.internalIpsPolicy))\n\nconst endpoints = externalIps.map(parseL3Endpoint)\nconst apiEndpoints = [parseL4Endpoint(kubeConfig.clusters[0].server.replace(\"https://\", \"\"))]\n\nconst kubeSystem = core.v1.Namespace.get(\"kube-system\", \"kube-system\", { provider })\n\nexport default outputs({\n k8sCluster: {\n id: kubeSystem.metadata.uid,\n connectionId: kubeSystem.metadata.uid,\n name,\n networkPolicyImplRef,\n externalIps,\n endpoints,\n apiEndpoints,\n quirks: args.quirks,\n kubeconfig: secret(kubeconfigContent),\n },\n\n endpoints,\n apiEndpoints,\n\n $terminals: [createK8sTerminal(kubeconfigContent)],\n\n $statusFields: {\n clusterId: kubeSystem.metadata.uid,\n endpoints: endpoints.map(l3EndpointToString),\n apiEndpoints: apiEndpoints.map(l4EndpointToString),\n },\n})\n"]}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@highstate/k8s",
|
3
|
-
"version": "0.9.
|
3
|
+
"version": "0.9.21",
|
4
4
|
"type": "module",
|
5
5
|
"files": [
|
6
6
|
"dist",
|
@@ -59,15 +59,18 @@
|
|
59
59
|
"build": "highstate build",
|
60
60
|
"update-charts": "../../../scripts/update-charts.sh ./assets/charts.json",
|
61
61
|
"update-images": "../../../scripts/update-images.sh ./assets/images.json",
|
62
|
-
"generate-crds": "./scripts/generate-crds.sh"
|
62
|
+
"generate-crds": "./scripts/generate-crds.sh",
|
63
|
+
"typecheck": "tsgo --noEmit --skipLibCheck",
|
64
|
+
"biome": "biome check --write --unsafe --error-on-warnings",
|
65
|
+
"biome:check": "biome check --error-on-warnings"
|
63
66
|
},
|
64
67
|
"dependencies": {
|
65
|
-
"@highstate/cert-manager": "^0.9.
|
66
|
-
"@highstate/common": "^0.9.
|
67
|
-
"@highstate/contract": "^0.9.
|
68
|
-
"@highstate/gateway-api": "^0.9.
|
69
|
-
"@highstate/library": "^0.9.
|
70
|
-
"@highstate/pulumi": "^0.9.
|
68
|
+
"@highstate/cert-manager": "^0.9.21",
|
69
|
+
"@highstate/common": "^0.9.21",
|
70
|
+
"@highstate/contract": "^0.9.21",
|
71
|
+
"@highstate/gateway-api": "^0.9.21",
|
72
|
+
"@highstate/library": "^0.9.21",
|
73
|
+
"@highstate/pulumi": "^0.9.21",
|
71
74
|
"@kubernetes/client-node": "^1.1.0",
|
72
75
|
"@pulumi/command": "^1.0.2",
|
73
76
|
"@pulumi/kubernetes": "^4.18.0",
|
@@ -80,8 +83,10 @@
|
|
80
83
|
"remeda": "^2.21.0"
|
81
84
|
},
|
82
85
|
"devDependencies": {
|
83
|
-
"@
|
86
|
+
"@biomejs/biome": "2.2.0",
|
87
|
+
"@highstate/cli": "^0.9.21",
|
88
|
+
"@typescript/native-preview": "^7.0.0-dev.20250920.1",
|
84
89
|
"type-fest": "^4.41.0"
|
85
90
|
},
|
86
|
-
"gitHead": "
|
91
|
+
"gitHead": "390ff15c0e0076822a682f9d4e19260942a8d6c2"
|
87
92
|
}
|
package/src/cluster.ts
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
import type { k8s } from "@highstate/library"
|
2
2
|
import { text, type UnitTerminal } from "@highstate/contract"
|
3
|
-
import { fileFromString,
|
3
|
+
import { fileFromString, type Input, type Output, output } from "@highstate/pulumi"
|
4
4
|
import { CoreV1Api, type KubeConfig } from "@kubernetes/client-node"
|
5
5
|
import { images } from "./shared"
|
6
6
|
|
package/src/dns01-solver.ts
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
import type { types } from "@highstate/cert-manager"
|
2
|
+
import type { Namespace } from "./namespace"
|
2
3
|
import { ImplementationMediator } from "@highstate/common"
|
3
4
|
import { z } from "@highstate/contract"
|
4
|
-
import type { Namespace } from "./namespace"
|
5
5
|
|
6
6
|
export const dns01SolverMediator = new ImplementationMediator(
|
7
7
|
"dns01-solver",
|
package/src/gateway/backend.ts
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
import type { core } from "@pulumi/kubernetes"
|
2
|
-
import { type Input,
|
2
|
+
import { type Input, type Output, output, type Unwrap } from "@highstate/pulumi"
|
3
3
|
import { Service } from "../service"
|
4
4
|
|
5
5
|
export interface FullBackendRef {
|
@@ -1,19 +1,19 @@
|
|
1
1
|
import type { Gateway } from "./gateway"
|
2
|
+
import { gateway, type types } from "@highstate/gateway-api"
|
2
3
|
import {
|
3
4
|
ComponentResource,
|
5
|
+
type ComponentResourceOptions,
|
6
|
+
type Input,
|
7
|
+
type InputArray,
|
4
8
|
normalize,
|
5
9
|
normalizeInputs,
|
6
10
|
normalizeInputsAndMap,
|
7
|
-
output,
|
8
11
|
type Output,
|
9
|
-
|
10
|
-
type Input,
|
11
|
-
type InputArray,
|
12
|
+
output,
|
12
13
|
} from "@highstate/pulumi"
|
13
|
-
import { gateway, type types } from "@highstate/gateway-api"
|
14
14
|
import { map, pipe } from "remeda"
|
15
15
|
import { getProvider, mapMetadata, type ScopedResourceArgs } from "../shared"
|
16
|
-
import {
|
16
|
+
import { type BackendRef, resolveBackendRef } from "./backend"
|
17
17
|
|
18
18
|
export type HttpRouteArgs = Omit<ScopedResourceArgs, "namespace"> & {
|
19
19
|
/**
|
package/src/gateway/index.ts
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
import { tlsCertificateMediator } from "@highstate/common"
|
2
2
|
import { k8s } from "@highstate/library"
|
3
|
-
import { getProvider } from "../shared"
|
4
3
|
import { Namespace } from "../namespace"
|
4
|
+
import { getProvider } from "../shared"
|
5
5
|
import { Certificate } from "../tls"
|
6
6
|
|
7
7
|
export const createCertificate = tlsCertificateMediator.implement(
|
package/src/network-policy.ts
CHANGED
@@ -1,40 +1,40 @@
|
|
1
|
+
import type { k8s, network } from "@highstate/library"
|
1
2
|
import type { Namespace } from "./namespace"
|
2
|
-
import {
|
3
|
+
import {
|
4
|
+
ImplementationMediator,
|
5
|
+
type InputL34Endpoint,
|
6
|
+
l3EndpointToCidr,
|
7
|
+
l34EndpointToString,
|
8
|
+
parseL34Endpoint,
|
9
|
+
} from "@highstate/common"
|
10
|
+
import { z } from "@highstate/contract"
|
3
11
|
import {
|
4
12
|
ComponentResource,
|
5
|
-
interpolate,
|
6
|
-
normalize,
|
7
|
-
output,
|
8
|
-
toPromise,
|
9
13
|
type Input,
|
10
14
|
type InputArray,
|
15
|
+
interpolate,
|
16
|
+
normalize,
|
11
17
|
type Output,
|
18
|
+
output,
|
12
19
|
type Resource,
|
13
20
|
type ResourceOptions,
|
21
|
+
toPromise,
|
14
22
|
type Unwrap,
|
15
23
|
} from "@highstate/pulumi"
|
24
|
+
import { type core, networking, type types } from "@pulumi/kubernetes"
|
16
25
|
import { flat, groupBy, merge, mergeDeep, uniqueBy } from "remeda"
|
17
|
-
import
|
18
|
-
import {
|
19
|
-
l34EndpointToString,
|
20
|
-
l3EndpointToCidr,
|
21
|
-
parseL34Endpoint,
|
22
|
-
type InputL34Endpoint,
|
23
|
-
ImplementationMediator,
|
24
|
-
} from "@highstate/common"
|
25
|
-
import { z } from "@highstate/contract"
|
26
|
+
import { requireBestEndpoint } from "./network"
|
27
|
+
import { isEndpointFromCluster, mapServiceToLabelSelector } from "./service"
|
26
28
|
import {
|
29
|
+
getNamespaceName,
|
27
30
|
getProviderAsync,
|
28
31
|
mapMetadata,
|
29
|
-
getNamespaceName,
|
30
32
|
mapNamespaceNameToSelector,
|
31
33
|
mapSelectorLikeToSelector,
|
32
|
-
type ScopedResourceArgs,
|
33
34
|
type NamespaceLike,
|
35
|
+
type ScopedResourceArgs,
|
34
36
|
type SelectorLike,
|
35
37
|
} from "./shared"
|
36
|
-
import { isEndpointFromCluster, mapServiceToLabelSelector } from "./service"
|
37
|
-
import { requireBestEndpoint } from "./network"
|
38
38
|
|
39
39
|
export type NetworkPolicyPort = {
|
40
40
|
/**
|
package/src/pvc.ts
CHANGED
@@ -1,25 +1,25 @@
|
|
1
1
|
import type { k8s } from "@highstate/library"
|
2
|
-
import {
|
2
|
+
import { getOrCreate } from "@highstate/contract"
|
3
3
|
import {
|
4
|
-
interpolate,
|
5
|
-
type Output,
|
6
|
-
output,
|
7
4
|
type ComponentResourceOptions,
|
8
5
|
type Input,
|
9
6
|
type Inputs,
|
7
|
+
interpolate,
|
8
|
+
type Output,
|
9
|
+
output,
|
10
|
+
toPromise,
|
10
11
|
} from "@highstate/pulumi"
|
11
|
-
import {
|
12
|
+
import { core, type types } from "@pulumi/kubernetes"
|
12
13
|
import { deepmerge } from "deepmerge-ts"
|
13
14
|
import { omit } from "remeda"
|
14
|
-
import {
|
15
|
+
import { Namespace } from "./namespace"
|
15
16
|
import {
|
16
17
|
commonExtraArgs,
|
17
18
|
getProvider,
|
18
19
|
mapMetadata,
|
19
|
-
type ScopedResourceArgs,
|
20
20
|
ScopedResource,
|
21
|
+
type ScopedResourceArgs,
|
21
22
|
} from "./shared"
|
22
|
-
import { Namespace } from "./namespace"
|
23
23
|
|
24
24
|
export type PersistentVolumeClaimArgs = ScopedResourceArgs &
|
25
25
|
types.input.core.v1.PersistentVolumeClaimSpec & {
|
package/src/scripting/bundle.ts
CHANGED
@@ -1,21 +1,21 @@
|
|
1
|
-
import type { ContainerEnvironment, ContainerVolumeMount, WorkloadVolume } from "../container"
|
2
1
|
import type { network } from "@highstate/library"
|
3
|
-
import {
|
2
|
+
import type { ContainerEnvironment, ContainerVolumeMount, WorkloadVolume } from "../container"
|
3
|
+
import type { ScopedResourceArgs } from "../shared"
|
4
|
+
import { parseL34Endpoint } from "@highstate/common"
|
5
|
+
import { text, trimIndentation } from "@highstate/contract"
|
6
|
+
import { type InputArray, normalize } from "@highstate/pulumi"
|
4
7
|
import {
|
5
8
|
ComponentResource,
|
6
|
-
output,
|
7
9
|
type ComponentResourceOptions,
|
8
10
|
type Input,
|
9
11
|
type Output,
|
12
|
+
output,
|
10
13
|
type Unwrap,
|
11
14
|
} from "@pulumi/pulumi"
|
12
|
-
import {
|
15
|
+
import { serializeFunction } from "@pulumi/pulumi/runtime/index.js"
|
13
16
|
import { deepmerge } from "deepmerge-ts"
|
14
17
|
import { readPackageJSON } from "pkg-types"
|
15
|
-
import {
|
16
|
-
import { parseL34Endpoint } from "@highstate/common"
|
17
|
-
import { serializeFunction } from "@pulumi/pulumi/runtime/index.js"
|
18
|
-
import type { ScopedResourceArgs } from "../shared"
|
18
|
+
import { mapValues, omitBy } from "remeda"
|
19
19
|
import { ConfigMap } from "../config-map"
|
20
20
|
import {
|
21
21
|
emptyScriptEnvironment,
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import type { Container } from "../container"
|
2
2
|
import type { ScriptBundle } from "./bundle"
|
3
|
+
import { type Input, type Output, output } from "@pulumi/pulumi"
|
3
4
|
import { merge } from "remeda"
|
4
|
-
import { type Output, output, type Input } from "@pulumi/pulumi"
|
5
5
|
|
6
6
|
export type ScriptContainer = Container & {
|
7
7
|
/**
|
@@ -1,6 +1,6 @@
|
|
1
|
+
import type { InputL34Endpoint } from "@highstate/common"
|
1
2
|
import type { Input, InputArray, InputRecord } from "@highstate/pulumi"
|
2
3
|
import type { ContainerEnvironment, ContainerVolumeMount, WorkloadVolume } from "../container"
|
3
|
-
import type { InputL34Endpoint } from "@highstate/common"
|
4
4
|
|
5
5
|
export type ScriptDistribution = "alpine" | "ubuntu"
|
6
6
|
|
package/src/secret.ts
CHANGED
@@ -10,8 +10,8 @@ import {
|
|
10
10
|
type Output,
|
11
11
|
output,
|
12
12
|
} from "@pulumi/pulumi"
|
13
|
-
import { getProvider, mapMetadata, type ScopedResourceArgs, ScopedResource } from "./shared"
|
14
13
|
import { Namespace } from "./namespace"
|
14
|
+
import { getProvider, mapMetadata, ScopedResource, type ScopedResourceArgs } from "./shared"
|
15
15
|
|
16
16
|
export type SecretArgs = ScopedResourceArgs &
|
17
17
|
Omit<types.input.core.v1.Secret, "kind" | "metadata" | "apiVersion">
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import { k8s } from "@highstate/library"
|
2
2
|
import { forUnit } from "@highstate/pulumi"
|
3
|
-
import { Chart } from "../../helm"
|
4
3
|
import charts from "../../../assets/charts.json"
|
4
|
+
import { Chart } from "../../helm"
|
5
5
|
import { Namespace } from "../../namespace"
|
6
6
|
|
7
7
|
const { args, inputs, outputs } = forUnit(k8s.certManager)
|
@@ -1,9 +1,9 @@
|
|
1
|
+
import { cert_manager } from "@highstate/cert-manager"
|
1
2
|
import { k8s } from "@highstate/library"
|
2
3
|
import { forUnit } from "@highstate/pulumi"
|
3
|
-
import { cert_manager } from "@highstate/cert-manager"
|
4
|
-
import { getProviderAsync } from "../../shared"
|
5
4
|
import { dns01SolverMediator } from "../../dns01-solver"
|
6
5
|
import { Namespace } from "../../namespace"
|
6
|
+
import { getProviderAsync } from "../../shared"
|
7
7
|
|
8
8
|
const { name, inputs, outputs } = forUnit(k8s.dns01TlsIssuer)
|
9
9
|
|
@@ -1,13 +1,13 @@
|
|
1
|
-
import { k8s, type ImplementationReference } from "@highstate/library"
|
2
|
-
import { forUnit, secret, toPromise } from "@highstate/pulumi"
|
3
|
-
import { core, Provider } from "@pulumi/kubernetes"
|
4
|
-
import { KubeConfig, AppsV1Api } from "@kubernetes/client-node"
|
5
1
|
import {
|
6
2
|
l3EndpointToString,
|
7
3
|
l4EndpointToString,
|
8
4
|
parseL3Endpoint,
|
9
5
|
parseL4Endpoint,
|
10
6
|
} from "@highstate/common"
|
7
|
+
import { type ImplementationReference, k8s } from "@highstate/library"
|
8
|
+
import { forUnit, secret, toPromise } from "@highstate/pulumi"
|
9
|
+
import { AppsV1Api, KubeConfig } from "@kubernetes/client-node"
|
10
|
+
import { core, Provider } from "@pulumi/kubernetes"
|
11
11
|
import { createK8sTerminal, detectExternalIps } from "../../cluster"
|
12
12
|
|
13
13
|
const { name, args, secrets, outputs } = forUnit(k8s.existingCluster)
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["../src/dns01-solver.ts"],"names":[],"mappings":";;;;AAKO,IAAM,sBAAsB,IAAI,sBAAA;AAAA,EACrC,cAAA;AAAA,EACA,EAAE,MAAA,CAAO,EAAE,WAAW,CAAA,CAAE,MAAA,IAAqB,CAAA;AAAA,EAC7C,EAAE,MAAA;AACJ","file":"chunk-2EEHJZPD.js","sourcesContent":["import type { types } from \"@highstate/cert-manager\"\nimport { ImplementationMediator } from \"@highstate/common\"\nimport { z } from \"@highstate/contract\"\nimport type { Namespace } from \"./namespace\"\n\nexport const dns01SolverMediator = new ImplementationMediator(\n \"dns01-solver\",\n z.object({ namespace: z.custom<Namespace>() }),\n z.custom<types.input.cert_manager.v1.ClusterIssuerSpecAcmeSolversDns01>(),\n)\n"]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["../src/gateway/backend.ts","../src/gateway/http-route.ts","../src/gateway/gateway.ts"],"names":["output","ComponentResource","gateway"],"mappings":";;;;;;;;;AAoCO,SAAS,kBAAkB,GAAA,EAAiD;AACjF,EAAA,IAAI,OAAA,CAAQ,UAAA,CAAW,GAAG,CAAA,EAAG;AAC3B,IAAA,OAAO,MAAA,CAAO;AAAA,MACZ,IAAA,EAAM,IAAI,QAAA,CAAS,IAAA;AAAA,MACnB,SAAA,EAAW,IAAI,QAAA,CAAS,SAAA;AAAA,MACxB,IAAA,EAAM,GAAA,CAAI,IAAA,CAAK,KAAA,CAAM,CAAC,CAAA,CAAE;AAAA,KACzB,CAAA;AAAA,EACH;AAEA,EAAA,IAAI,aAAa,GAAA,EAAK;AACpB,IAAA,MAAM,OAAA,GAAU,MAAA,CAAO,GAAA,CAAI,OAAO,CAAA;AAElC,IAAA,OAAO,MAAA,CAAO;AAAA,MACZ,IAAA,EAAM,QAAQ,QAAA,CAAS,IAAA;AAAA,MACvB,SAAA,EAAW,QAAQ,QAAA,CAAS,SAAA;AAAA,MAC5B,MAAM,GAAA,CAAI;AAAA,KACX,CAAA;AAAA,EACH;AAEA,EAAA,OAAO,MAAA,CAAO;AAAA,IACZ,MAAM,GAAA,CAAI,IAAA;AAAA,IACV,WAAW,GAAA,CAAI,SAAA;AAAA,IACf,MAAM,GAAA,CAAI;AAAA,GACX,CAAA;AACH;ACaO,IAAM,SAAA,GAAN,cAAwB,iBAAA,CAAkB;AAAA;AAAA;AAAA;AAAA,EAI/B,KAAA;AAAA,EAEhB,WAAA,CAAY,IAAA,EAAc,IAAA,EAAqB,IAAA,EAAiC;AAC9E,IAAA,KAAA,CAAM,yBAAA,EAA2B,IAAA,EAAM,IAAA,EAAM,IAAI,CAAA;AAEjD,IAAA,IAAA,CAAK,QAAQA,MAAAA,CAAO,IAAA,CAAK,OAAO,CAAA,CAAE,OAAA,CAAQ,MAAM,CAAA,OAAA,KAAW;AACzD,MAAA,OAAO,IAAI,QAAQ,EAAA,CAAG,SAAA;AAAA,QACpB,IAAA;AAAA,QACA;AAAA,UACE,UAAU,WAAA,CAAY,IAAA,EAAM,IAAI,CAAA,CAAE,MAAM,CAAA,QAAA,MAAa;AAAA,YACnD,GAAG,QAAA;AAAA,YACH,WAAWA,MAAAA,CAAO,IAAA,CAAK,OAAO,CAAA,CAAE,UAAU,QAAA,CAAS;AAAA,WACrD,CAAE,CAAA;AAAA,UACF,IAAA,EAAM;AAAA,YACJ,SAAA,EAAW,eAAA,CAAgB,IAAA,CAAK,QAAA,EAAU,KAAK,SAAS,CAAA;AAAA,YAExD,UAAA,EAAY;AAAA,cACV;AAAA,gBACE,IAAA,EAAMA,MAAAA,CAAO,IAAA,CAAK,OAAO,EAAE,QAAA,CAAS;AAAA;AACtC,aACF;AAAA,YAEA,OAAO,qBAAA,CAAsB,IAAA,CAAK,IAAA,EAAM,IAAA,CAAK,OAAO,CAAA,IAAA,MAAS;AAAA,cAC3D,UAAU,IAAA,CAAK,QAAA;AAAA,cAEf,OAAA,EAAS,IAAA;AAAA,gBACP,SAAA,CAAU,IAAA,CAAK,KAAA,EAAO,IAAA,CAAK,OAAO,CAAA;AAAA,gBAClC,IAAI,qBAAqB,CAAA;AAAA,gBACzB;AAAA,eACF;AAAA,cAEA,OAAA,EAAS,SAAA,CAAU,IAAA,CAAK,MAAA,EAAQ,KAAK,OAAO,CAAA;AAAA,cAC5C,WAAA,EAAa,KAAK,OAAA,GAAU,CAAC,kBAAkB,IAAA,CAAK,OAAO,CAAC,CAAA,GAAI;AAAA,aAClE,CAAE;AAAA;AACJ,SACF;AAAA,QACA,EAAE,GAAG,IAAA,EAAM,MAAA,EAAQ,MAAM,QAAA,EAAU,WAAA,CAAY,OAAO,CAAA;AAAE,OAC1D;AAAA,IACF,CAAC,CAAA;AAAA,EACH;AACF;AAEA,SAAS,oBACP,OAAA,EACoD;AACpD,EAAA,OAAO,OAAA,CAAQ,MAAA,GAAS,OAAA,GAAU,CAAC,EAAE,IAAA,EAAM,EAAE,IAAA,EAAM,YAAA,EAAc,KAAA,EAAO,GAAA,EAAI,EAAG,CAAA;AACjF;AAEO,SAAS,sBACd,KAAA,EACkD;AAClD,EAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,IAAA,OAAO,EAAE,IAAA,EAAM,EAAE,MAAM,YAAA,EAAc,KAAA,EAAO,OAAM,EAAE;AAAA,EACtD;AAEA,EAAA,OAAO,KAAA;AACT;AC5FA,IAAM,gBAAA,GAAmB,CAAC,GAAG,eAAA,EAAiB,QAAQ,OAAO,CAAA;AAKtD,IAAe,OAAA,GAAf,MAAe,QAAA,SAAgBC,iBAAAA,CAAkB;AAAA,EAC5C,WAAA,CACR,MACA,IAAA,EACA,IAAA,EACA,MAKS,SAAA,EAKA,QAAA,EAKA,MAKA,MAAA,EACT;AACA,IAAA,KAAA,CAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAI,CAAA;AAjBnB,IAAA,IAAA,CAAA,SAAA,GAAA,SAAA;AAKA,IAAA,IAAA,CAAA,QAAA,GAAA,QAAA;AAKA,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AAKA,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAAA,EAGX;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,OAAA,GAA+B;AACjC,IAAA,OAAO,KAAK,SAAA,CAAU,OAAA;AAAA,EACxB;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,MAAA,GAA8B;AAChC,IAAA,OAAOD,MAAAA,CAAO;AAAA,MACZ,IAAA,EAAM,SAAA;AAAA,MACN,SAAA,EAAW,KAAK,OAAA,CAAQ,EAAA;AAAA,MACxB,WAAA,EAAa,KAAK,OAAA,CAAQ,IAAA;AAAA,MAC1B,UAAU,IAAA,CAAK;AAAA,KAChB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,SAAA,GAA0C;AAC5C,IAAA,OAAO,IAAA,CAAK,MAAA,CAAO,SAAA,CAAU,KAAA,CAAM,CAAA,SAAA,KAAa;AAC9C,MAAA,IAAI,CAAC,SAAA,EAAW;AACd,QAAA,OAAO,EAAC;AAAA,MACV;AAEA,MAAA,OAAO,UAAU,GAAA,CAAI,CAAA,OAAA,KAAW,eAAA,CAAgB,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,IAChE,CAAC,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,MAAA,CAAO,IAAA,EAAc,IAAA,EAAmB,IAAA,EAA0C;AACvF,IAAA,OAAO,IAAI,cAAA,CAAe,IAAA,EAAM,IAAA,EAAM,IAAI,CAAA;AAAA,EAC5C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,OAAO,aAAA,CACL,IAAA,EACA,IAAA,EACA,IAAA,EACS;AACT,IAAA,IAAI,KAAK,QAAA,EAAU;AACjB,MAAA,OAAO,IAAI,aAAa,IAAA,EAAM;AAAA,QAC5B,GAAG,IAAA;AAAA,QACH,IAAA,EAAMA,MAAAA,CAAO,IAAA,CAAK,QAAQ,EAAE,QAAA,CAAS,IAAA;AAAA,QACrC,SAAA,EAAW,UAAU,gBAAA,CAAiB,IAAA,CAAK,UAAUA,MAAAA,CAAO,IAAA,CAAK,SAAS,CAAA,CAAE,OAAO;AAAA,OACpF,CAAA;AAAA,IACH;AAEA,IAAA,OAAO,IAAI,cAAA,CAAe,IAAA,EAAM,IAAA,EAAM,IAAI,CAAA;AAAA,EAC5C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,aAAa,WAAA,CACX,IAAA,EACA,IAAA,EACA,IAAA,EACkB;AAClB,IAAA,IAAI,KAAK,QAAA,EAAU;AACjB,MAAA,OAAO,MAAM,SAAQ,QAAA,CAAS,IAAA,CAAK,UAAUA,MAAAA,CAAO,IAAA,CAAK,SAAS,CAAA,CAAE,OAAO,CAAA;AAAA,IAC7E;AAEA,IAAA,OAAO,IAAI,cAAA,CAAe,IAAA,EAAM,IAAA,EAAM,IAAI,CAAA;AAAA,EAC5C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,OAAO,KAAA,CAAM,IAAA,EAAc,IAAA,EAAmB,IAAA,EAA0C;AACtF,IAAA,OAAO,IAAI,YAAA,CAAa,IAAA,EAAM,IAAA,EAAM,IAAI,CAAA;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,IAAA,CAAK,IAAA,EAAc,IAAA,EAA0B,IAAA,EAA0C;AAC5F,IAAA,OAAO,IAAI,cAAA,CAAe,IAAA,EAAM,IAAA,EAAM,IAAI,CAAA;AAAA,EAC5C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAO,GAAA,CAAI,IAAA,EAAc,IAAA,EAA2B,IAAA,EAA0C;AAC5F,IAAA,OAAO,IAAI,eAAA,CAAgB,IAAA,EAAM,IAAA,EAAM,IAAI,CAAA;AAAA,EAC7C;AAAA,EAEA,OAAwB,YAAA,mBAAe,IAAI,GAAA,EAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAahE,OAAO,GAAA,CAAI,MAAA,EAAqB,OAAA,EAAsC;AACpE,IAAA,OAAO,WAAA;AAAA,MACL,QAAA,CAAQ,YAAA;AAAA,MACR,CAAA,EAAG,MAAA,CAAO,WAAW,CAAA,CAAA,EAAI,MAAA,CAAO,QAAA,CAAS,SAAS,CAAA,CAAA,EAAI,MAAA,CAAO,QAAA,CAAS,IAAI,CAAA,CAAA,EAAI,OAAO,SAAS,CAAA,CAAA;AAAA,MAC9F,CAAA,IAAA,KAAQ;AACN,QAAA,OAAO,QAAA,CAAQ,IAAI,IAAA,EAAM;AAAA,UACvB,IAAA,EAAM,OAAO,QAAA,CAAS,IAAA;AAAA,UACtB,SAAA,EAAW,SAAA,CAAU,gBAAA,CAAiB,MAAA,EAAQ,OAAO;AAAA,SACtD,CAAA;AAAA,MACH;AAAA,KACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,aAAa,QAAA,CAAS,MAAA,EAA4B,OAAA,EAA+C;AAC/F,IAAA,MAAM,cAAA,GAAiB,MAAM,SAAA,CAAU,MAAM,CAAA;AAE7C,IAAA,OAAO,QAAA,CAAQ,GAAA,CAAI,cAAA,EAAgBA,MAAAA,CAAO,OAAO,CAAC,CAAA;AAAA,EACpD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,aAAa,UAAA,CACX,IAAA,EACA,IAAA,EACkB;AAClB,IAAA,MAAM,EAAE,IAAA,EAAM,SAAA,EAAW,OAAA,EAAQ,GAAI,MAAM,SAAA,CAAU;AAAA,MACnD,MAAM,IAAA,CAAK,IAAA;AAAA,MACX,SAAA,EAAWA,MAAAA,CAAO,IAAA,CAAK,SAAS,EAAE,QAAA,CAAS,IAAA;AAAA,MAC3C,OAAA,EAASA,MAAAA,CAAO,IAAA,CAAK,SAAS,CAAA,CAAE;AAAA,KACjC,CAAA;AAED,IAAA,MAAM,QAAA,GAAW,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,SAAS,IAAI,OAAA,CAAQ,IAAI,CAAA,CAAA,EAAI,OAAA,CAAQ,EAAE,CAAA,CAAA;AAEnE,IAAA,OAAO,WAAA;AAAA,MAAY,QAAA,CAAQ,YAAA;AAAA,MAAc,IAAA;AAAA,MAAM,MAC7C,QAAA,CAAQ,MAAA;AAAA,QACN,QAAA;AAAA,QACA;AAAA,UACE,GAAG,IAAA;AAAA,UACH,IAAA;AAAA,UACA,WAAW,IAAA,CAAK;AAAA,SAClB;AAAA,QACA;AAAA;AACF,KACF;AAAA,EACF;AACF;AAEA,IAAM,cAAA,GAAN,cAA6B,OAAA,CAAQ;AAAA,EACnC,WAAA,CAAY,IAAA,EAAc,IAAA,EAAmB,IAAA,EAAiC;AAC5E,IAAA,MAAM,kBAAkBA,MAAAA,CAAO,IAAA,CAAK,SAAS,CAAA,CAAE,OAAA,CAAQ,MAAM,CAAA,OAAA,KAAW;AACtE,MAAA,OAAO,IAAIE,QAAQ,EAAA,CAAG,OAAA;AAAA,QACpB,IAAA;AAAA,QACA;AAAA,UACE,QAAA,EAAU,WAAA,CAAY,IAAA,EAAM,IAAI,CAAA;AAAA,UAChC,MAAM,SAAA,CAAU,IAAI,IAAA,CAAK,IAAA,EAAM,gBAAgB,CAAC;AAAA,SAClD;AAAA,QACA,EAAE,GAAG,IAAA,EAAM,MAAA,EAAQ,MAAM,QAAA,EAAU,WAAA,CAAY,OAAO,CAAA;AAAE,OAC1D;AAAA,IACF,CAAC,CAAA;AAED,IAAA,KAAA;AAAA,MACE,uBAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA;AAAA,MAEAF,MAAAA,CAAO,KAAK,SAAS,CAAA;AAAA,MACrB,eAAA,CAAgB,QAAA;AAAA,MAChB,eAAA,CAAgB,IAAA;AAAA,MAChB,eAAA,CAAgB;AAAA,KAClB;AAAA,EACF;AACF,CAAA;AAEA,IAAM,YAAA,GAAN,cAA2B,OAAA,CAAQ;AAAA,EACjC,WAAA,CAAY,IAAA,EAAc,IAAA,EAAmB,IAAA,EAAiC;AAC5E,IAAA,MAAM,kBAAkBA,MAAAA,CAAO,IAAA,CAAK,SAAS,CAAA,CAAE,OAAA,CAAQ,MAAM,CAAA,OAAA,KAAW;AACtE,MAAA,OAAO,IAAIE,QAAQ,EAAA,CAAG,YAAA;AAAA,QACpB,IAAA;AAAA,QACA;AAAA,UACE,QAAA,EAAU,WAAA,CAAY,IAAA,EAAM,IAAI,CAAA;AAAA,UAChC,MAAM,SAAA,CAAU,IAAI,IAAA,CAAK,IAAA,EAAM,gBAAgB,CAAC;AAAA,SAClD;AAAA,QACA,EAAE,GAAG,IAAA,EAAM,MAAA,EAAQ,MAAM,QAAA,EAAU,WAAA,CAAY,OAAO,CAAA;AAAE,OAC1D;AAAA,IACF,CAAC,CAAA;AAED,IAAA,KAAA;AAAA,MACE,4BAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA;AAAA,MAEAF,MAAAA,CAAO,KAAK,SAAS,CAAA;AAAA,MACrB,eAAA,CAAgB,QAAA;AAAA,MAChB,eAAA,CAAgB,IAAA;AAAA,MAChB,eAAA,CAAgB;AAAA,KAClB;AAAA,EACF;AACF,CAAA;AAcA,IAAM,cAAA,GAAN,cAA6B,OAAA,CAAQ;AAAA,EACnC,WAAA,CAAY,IAAA,EAAc,IAAA,EAA0B,IAAA,EAAiC;AACnF,IAAA,KAAA;AAAA,MACE,8BAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA;AAAA,MAEAA,MAAAA,CAAO,KAAK,SAAS,CAAA;AAAA,MACrBA,MAAAA,CAAO,IAAA,CAAK,OAAO,CAAA,CAAE,QAAA;AAAA,MACrBA,MAAAA,CAAO,IAAA,CAAK,OAAO,CAAA,CAAE,IAAA;AAAA,MACrBA,MAAAA,CAAO,IAAA,CAAK,OAAO,CAAA,CAAE;AAAA,KACvB;AAAA,EACF;AACF,CAAA;AAcA,IAAM,eAAA,GAAN,cAA8B,OAAA,CAAQ;AAAA,EACpC,WAAA,CAAY,IAAA,EAAc,IAAA,EAA2B,IAAA,EAAiC;AACpF,IAAA,MAAM,kBAAkBA,MAAAA,CAAO,IAAA,CAAK,SAAS,CAAA,CAAE,OAAA,CAAQ,MAAM,CAAA,OAAA,KAAW;AACtE,MAAA,OAAOE,OAAAA,CAAQ,GAAG,OAAA,CAAQ,GAAA;AAAA,QACxB,IAAA;AAAA,QACA,WAAA,CAAA,EAAcF,OAAO,IAAA,CAAK,SAAS,EAAE,QAAA,CAAS,IAAI,CAAA,CAAA,EAAI,IAAA,CAAK,IAAI,CAAA,CAAA;AAAA,QAC/D,EAAE,GAAG,IAAA,EAAM,MAAA,EAAQ,MAAM,QAAA,EAAU,WAAA,CAAY,OAAO,CAAA;AAAE,OAC1D;AAAA,IACF,CAAC,CAAA;AAED,IAAA,KAAA;AAAA,MACE,+BAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA;AAAA,MAEAA,MAAAA,CAAO,KAAK,SAAS,CAAA;AAAA,MACrB,eAAA,CAAgB,QAAA;AAAA,MAChB,eAAA,CAAgB,IAAA;AAAA,MAChB,eAAA,CAAgB;AAAA,KAClB;AAAA,EACF;AACF,CAAA","file":"chunk-NXSYCA3V.js","sourcesContent":["import type { core } from \"@pulumi/kubernetes\"\nimport { type Input, output, type Output, type Unwrap } from \"@highstate/pulumi\"\nimport { Service } from \"../service\"\n\nexport interface FullBackendRef {\n /**\n * The name of the resource being referenced.\n */\n name: Input<string>\n\n /**\n * The namespace of the resource being referenced.\n * May be undefined if the resource is not in a namespace.\n */\n namespace?: Input<string | undefined>\n\n /**\n * The port of the resource being referenced.\n */\n port: Input<number>\n}\n\nexport interface ServiceBackendRef {\n /**\n * The name of the service being referenced.\n */\n service: Input<core.v1.Service>\n\n /**\n * The port of the service being referenced.\n */\n port: Input<number>\n}\n\nexport type BackendRef = FullBackendRef | ServiceBackendRef | Service\n\nexport function resolveBackendRef(ref: BackendRef): Output<Unwrap<FullBackendRef>> {\n if (Service.isInstance(ref)) {\n return output({\n name: ref.metadata.name,\n namespace: ref.metadata.namespace,\n port: ref.spec.ports[0].port,\n })\n }\n\n if (\"service\" in ref) {\n const service = output(ref.service)\n\n return output({\n name: service.metadata.name,\n namespace: service.metadata.namespace,\n port: ref.port,\n })\n }\n\n return output({\n name: ref.name,\n namespace: ref.namespace,\n port: ref.port,\n })\n}\n","import type { Gateway } from \"./gateway\"\nimport {\n ComponentResource,\n normalize,\n normalizeInputs,\n normalizeInputsAndMap,\n output,\n type Output,\n type ComponentResourceOptions,\n type Input,\n type InputArray,\n} from \"@highstate/pulumi\"\nimport { gateway, type types } from \"@highstate/gateway-api\"\nimport { map, pipe } from \"remeda\"\nimport { getProvider, mapMetadata, type ScopedResourceArgs } from \"../shared\"\nimport { resolveBackendRef, type BackendRef } from \"./backend\"\n\nexport type HttpRouteArgs = Omit<ScopedResourceArgs, \"namespace\"> & {\n /**\n * The gateway to associate with the route.\n */\n gateway: Input<Gateway>\n\n /**\n * The alias for `hostnames: [hostname]`.\n */\n hostname?: Input<string>\n\n /**\n * The rule of the route.\n */\n rule?: Input<HttpRouteRuleArgs>\n\n /**\n * The rules of the route.\n */\n rules?: InputArray<HttpRouteRuleArgs>\n} & Omit<Partial<types.input.gateway.v1.HTTPRouteSpec>, \"rules\">\n\nexport type HttpRouteRuleArgs = Omit<\n types.input.gateway.v1.HTTPRouteSpecRules,\n \"matches\" | \"filters\" | \"backendRefs\"\n> & {\n /**\n * The conditions of the rule.\n * Can be specified as string to match on the path.\n */\n matches?: InputArray<HttpRouteRuleMatchOptions>\n\n /**\n * The condition of the rule.\n * Can be specified as string to match on the path.\n */\n match?: Input<HttpRouteRuleMatchOptions>\n\n /**\n * The filters of the rule.\n */\n filters?: InputArray<types.input.gateway.v1.HTTPRouteSpecRulesFilters>\n\n /**\n * The filter of the rule.\n */\n filter?: Input<types.input.gateway.v1.HTTPRouteSpecRulesFilters>\n\n /**\n * The service to route to.\n */\n backend?: Input<BackendRef>\n}\n\nexport type HttpRouteRuleMatchOptions = types.input.gateway.v1.HTTPRouteSpecRulesMatches | string\n\nexport class HttpRoute extends ComponentResource {\n /**\n * The underlying Kubernetes resource.\n */\n public readonly route: Output<gateway.v1.HTTPRoute>\n\n constructor(name: string, args: HttpRouteArgs, opts?: ComponentResourceOptions) {\n super(\"highstate:k8s:HttpRoute\", name, args, opts)\n\n this.route = output(args.gateway).cluster.apply(cluster => {\n return new gateway.v1.HTTPRoute(\n name,\n {\n metadata: mapMetadata(args, name).apply(metadata => ({\n ...metadata,\n namespace: output(args.gateway).namespace.metadata.name,\n })),\n spec: {\n hostnames: normalizeInputs(args.hostname, args.hostnames),\n\n parentRefs: [\n {\n name: output(args.gateway).metadata.name,\n },\n ],\n\n rules: normalizeInputsAndMap(args.rule, args.rules, rule => ({\n timeouts: rule.timeouts,\n\n matches: pipe(\n normalize(rule.match, rule.matches),\n map(mapHttpRouteRuleMatch),\n addDefaultPathMatch,\n ),\n\n filters: normalize(rule.filter, rule.filters),\n backendRefs: rule.backend ? [resolveBackendRef(rule.backend)] : undefined,\n })),\n } satisfies types.input.gateway.v1.HTTPRouteSpec,\n },\n { ...opts, parent: this, provider: getProvider(cluster) },\n )\n })\n }\n}\n\nfunction addDefaultPathMatch(\n matches: types.input.gateway.v1.HTTPRouteSpecRulesMatches[],\n): types.input.gateway.v1.HTTPRouteSpecRulesMatches[] {\n return matches.length ? matches : [{ path: { type: \"PathPrefix\", value: \"/\" } }]\n}\n\nexport function mapHttpRouteRuleMatch(\n match: HttpRouteRuleMatchOptions,\n): types.input.gateway.v1.HTTPRouteSpecRulesMatches {\n if (typeof match === \"string\") {\n return { path: { type: \"PathPrefix\", value: match } }\n }\n\n return match\n}\n","import type { k8s, network } from \"@highstate/library\"\nimport type { types } from \"@pulumi/kubernetes\"\nimport type { SetRequired } from \"type-fest\"\nimport { parseL3Endpoint } from \"@highstate/common\"\nimport { getOrCreate } from \"@highstate/contract\"\nimport { gateway, type types as gwTypes } from \"@highstate/gateway-api\"\nimport {\n ComponentResource,\n type ComponentResourceOptions,\n type Input,\n type InputArray,\n type Inputs,\n interpolate,\n type Output,\n output,\n toPromise,\n} from \"@highstate/pulumi\"\nimport { deepmerge } from \"deepmerge-ts\"\nimport { omit } from \"remeda\"\nimport { Namespace } from \"../namespace\"\nimport { commonExtraArgs, getProvider, mapMetadata, type ScopedResourceArgs } from \"../shared\"\n\nexport type GatewayArgs = ScopedResourceArgs & {\n /**\n * The FQDN to configure the listeners for.\n */\n fqdn?: Input<string>\n\n /**\n * The FQDNs to configure the listeners for.\n */\n fqdns?: InputArray<string>\n} & gwTypes.input.gateway.v1.GatewaySpec\n\nexport type CreateOrGetGatewayArgs = GatewayArgs & {\n /**\n * The gateway entity to patch/retrieve.\n */\n existing: Input<k8s.Gateway> | undefined\n}\n\nconst gatewayExtraArgs = [...commonExtraArgs, \"fqdn\", \"fqdns\"] as const\n\n/**\n * Represents a Kubernetes Gateway resource.\n */\nexport abstract class Gateway extends ComponentResource {\n protected constructor(\n type: string,\n name: string,\n args: Inputs,\n opts: ComponentResourceOptions | undefined,\n\n /**\n * The namespace where the gateway is located.\n */\n readonly namespace: Output<Namespace>,\n\n /**\n * The metadata of the underlying Kubernetes gateway.\n */\n readonly metadata: Output<types.output.meta.v1.ObjectMeta>,\n\n /**\n * The spec of the underlying Gateway resource.\n */\n readonly spec: Output<gwTypes.output.gateway.v1.GatewaySpec>,\n\n /**\n * The status of the underlying Gateway resource.\n */\n readonly status: Output<gwTypes.output.gateway.v1.GatewayStatus>,\n ) {\n super(type, name, args, opts)\n }\n\n /**\n * The cluster where the gateway is located.\n */\n get cluster(): Output<k8s.Cluster> {\n return this.namespace.cluster\n }\n\n /**\n * The Highstate gateway entity.\n */\n get entity(): Output<k8s.Gateway> {\n return output({\n type: \"gateway\",\n clusterId: this.cluster.id,\n clusterName: this.cluster.name,\n metadata: this.metadata,\n })\n }\n\n /**\n * Returns the endpoints L3 endpoints on which the gateway is exposed.\n */\n get endpoints(): Output<network.L3Endpoint[]> {\n return this.status.addresses.apply(addresses => {\n if (!addresses) {\n return []\n }\n\n return addresses.map(address => parseL3Endpoint(address.value))\n })\n }\n\n /**\n * Creates a new gateway.\n */\n static create(name: string, args: GatewayArgs, opts?: ComponentResourceOptions): Gateway {\n return new CreatedGateway(name, args, opts)\n }\n\n /**\n * Creates a new gateway or patches an existing one.\n *\n * @param name The name of the resource. May not be the same as the gateway name.\n * @param args The arguments to create or patch the gateway with.\n * @param opts Optional resource options.\n */\n static createOrPatch(\n name: string,\n args: CreateOrGetGatewayArgs,\n opts?: ComponentResourceOptions,\n ): Gateway {\n if (args.existing) {\n return new GatewayPatch(name, {\n ...args,\n name: output(args.existing).metadata.name,\n namespace: Namespace.forResourceAsync(args.existing, output(args.namespace).cluster),\n })\n }\n\n return new CreatedGateway(name, args, opts)\n }\n\n /**\n * Creates a new gateway or gets an existing one.\n *\n * @param name The name of the resource. May not be the same as the gateway name. Will not be used when existing gateway is retrieved.\n * @param args The arguments to create or get the gateway with.\n * @param opts Optional resource options.\n */\n static async createOrGet(\n name: string,\n args: CreateOrGetGatewayArgs,\n opts?: ComponentResourceOptions,\n ): Promise<Gateway> {\n if (args.existing) {\n return await Gateway.forAsync(args.existing, output(args.namespace).cluster)\n }\n\n return new CreatedGateway(name, args, opts)\n }\n\n /**\n * Patches an existing gateway.\n *\n * Will throw an error if the gateway does not exist.\n *\n * @param name The name of the resource. May not be the same as the gateway name.\n * @param args The arguments to patch the gateway with.\n * @param opts Optional resource options.\n */\n static patch(name: string, args: GatewayArgs, opts?: ComponentResourceOptions): Gateway {\n return new GatewayPatch(name, args, opts)\n }\n\n /**\n * Wraps an existing Kubernetes gateway.\n */\n static wrap(name: string, args: WrappedGatewayArgs, opts?: ComponentResourceOptions): Gateway {\n return new WrappedGateway(name, args, opts)\n }\n\n /**\n * Gets an existing gateway.\n *\n * Will throw an error if the gateway does not exist.\n */\n static get(name: string, args: ExternalGatewayArgs, opts?: ComponentResourceOptions): Gateway {\n return new ExternalGateway(name, args, opts)\n }\n\n private static readonly gatewayCache = new Map<string, Gateway>()\n\n /**\n * Gets an existing gateway for a given entity.\n * Prefer this method over `get` when possible.\n *\n * It automatically names the resource with the following format: `{clusterName}.{namespace}.{gatewayName}.{clusterId}`.\n *\n * This method is idempotent and will return the same instance for the same entity.\n *\n * @param entity The entity to get the gateway for.\n * @param cluster The cluster where the gateway is located.\n */\n static for(entity: k8s.Gateway, cluster: Input<k8s.Cluster>): Gateway {\n return getOrCreate(\n Gateway.gatewayCache,\n `${entity.clusterName}.${entity.metadata.namespace}.${entity.metadata.name}.${entity.clusterId}`,\n name => {\n return Gateway.get(name, {\n name: entity.metadata.name,\n namespace: Namespace.forResourceAsync(entity, cluster),\n })\n },\n )\n }\n\n /**\n * Gets an existing gateway for a given entity.\n * Prefer this method over `get` when possible.\n *\n * It automatically names the resource with the following format: `{clusterName}.{namespace}.{gatewayName}.{clusterId}`.\n *\n * This method is idempotent and will return the same instance for the same entity.\n *\n * @param entity The entity to get the gateway for.\n * @param cluster The cluster where the gateway is located.\n */\n static async forAsync(entity: Input<k8s.Gateway>, cluster: Input<k8s.Cluster>): Promise<Gateway> {\n const resolvedEntity = await toPromise(entity)\n\n return Gateway.for(resolvedEntity, output(cluster))\n }\n\n /**\n * Creates a gateway with the provided name/namespace/cluster only once.\n *\n * It automatically names the resource with the following format: `{name}.{namespace}.{clusterName}.{clusterId}`.\n *\n * This method is idempotent and will return the same instance for the same name/namespace/cluster.\n *\n * @param name The name of the gateway to create.\n * @param args The arguments to create the gateway with.\n * @param opts Optional resource options.\n */\n static async createOnce(\n args: SetRequired<GatewayArgs, \"name\">,\n opts?: ComponentResourceOptions,\n ): Promise<Gateway> {\n const { name, namespace, cluster } = await toPromise({\n name: args.name,\n namespace: output(args.namespace).metadata.name,\n cluster: output(args.namespace).cluster,\n })\n\n const fullName = `${name}.${namespace}.${cluster.name}.${cluster.id}`\n\n return getOrCreate(Gateway.gatewayCache, name, () =>\n Gateway.create(\n fullName,\n {\n ...args,\n name,\n namespace: args.namespace,\n },\n opts,\n ),\n )\n }\n}\n\nclass CreatedGateway extends Gateway {\n constructor(name: string, args: GatewayArgs, opts?: ComponentResourceOptions) {\n const gatewayResource = output(args.namespace).cluster.apply(cluster => {\n return new gateway.v1.Gateway(\n name,\n {\n metadata: mapMetadata(args, name),\n spec: deepmerge({}, omit(args, gatewayExtraArgs)),\n },\n { ...opts, parent: this, provider: getProvider(cluster) },\n )\n })\n\n super(\n \"highstate:k8s:Gateway\",\n name,\n args,\n opts,\n\n output(args.namespace),\n gatewayResource.metadata as Output<types.output.meta.v1.ObjectMeta>,\n gatewayResource.spec,\n gatewayResource.status,\n )\n }\n}\n\nclass GatewayPatch extends Gateway {\n constructor(name: string, args: GatewayArgs, opts?: ComponentResourceOptions) {\n const gatewayResource = output(args.namespace).cluster.apply(cluster => {\n return new gateway.v1.GatewayPatch(\n name,\n {\n metadata: mapMetadata(args, name),\n spec: deepmerge({}, omit(args, gatewayExtraArgs)),\n },\n { ...opts, parent: this, provider: getProvider(cluster) },\n )\n })\n\n super(\n \"highstate:k8s:GatewayPatch\",\n name,\n args,\n opts,\n\n output(args.namespace),\n gatewayResource.metadata as Output<types.output.meta.v1.ObjectMeta>,\n gatewayResource.spec,\n gatewayResource.status,\n )\n }\n}\n\nexport type WrappedGatewayArgs = {\n /**\n * The underlying Kubernetes gateway to wrap.\n */\n gateway: Input<gateway.v1.Gateway>\n\n /**\n * The namespace where the gateway is located.\n */\n namespace: Input<Namespace>\n}\n\nclass WrappedGateway extends Gateway {\n constructor(name: string, args: WrappedGatewayArgs, opts?: ComponentResourceOptions) {\n super(\n \"highstate:k8s:WrappedGateway\",\n name,\n args,\n opts,\n\n output(args.namespace),\n output(args.gateway).metadata as Output<types.output.meta.v1.ObjectMeta>,\n output(args.gateway).spec,\n output(args.gateway).status,\n )\n }\n}\n\nexport type ExternalGatewayArgs = {\n /**\n * The name of the gateway to get.\n */\n name: Input<string>\n\n /**\n * The namespace of the gateway to get.\n */\n namespace: Input<Namespace>\n}\n\nclass ExternalGateway extends Gateway {\n constructor(name: string, args: ExternalGatewayArgs, opts?: ComponentResourceOptions) {\n const gatewayResource = output(args.namespace).cluster.apply(cluster => {\n return gateway.v1.Gateway.get(\n name,\n interpolate`${output(args.namespace).metadata.name}/${args.name}`,\n { ...opts, parent: this, provider: getProvider(cluster) },\n )\n })\n\n super(\n \"highstate:k8s:ExternalGateway\",\n name,\n args,\n opts,\n\n output(args.namespace),\n gatewayResource.metadata as Output<types.output.meta.v1.ObjectMeta>,\n gatewayResource.spec,\n gatewayResource.status,\n )\n }\n}\n"]}
|