@highstate/k8s 0.9.16 → 0.9.18
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-5C2BJGES.js.map +1 -1
- package/dist/chunk-5TLC5BXR.js.map +1 -1
- package/dist/chunk-BBIY3KUN.js.map +1 -1
- package/dist/chunk-OFFSHGC6.js.map +1 -1
- package/dist/chunk-TZHOUJRC.js.map +1 -1
- package/dist/chunk-YWRJ4EZM.js.map +1 -1
- package/dist/highstate.manifest.json +7 -7
- package/dist/index.js.map +1 -1
- package/dist/units/access-point/index.js.map +1 -1
- package/dist/units/cert-manager/index.js.map +1 -1
- package/dist/units/cluster-dns/index.js.map +1 -1
- package/dist/units/cluster-patch/index.js.map +1 -1
- package/dist/units/dns01-issuer/index.js.map +1 -1
- package/dist/units/existing-cluster/index.js.map +1 -1
- package/dist/units/gateway-api/index.js.map +1 -1
- package/package.json +10 -10
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/helm.ts"],"names":["namespace","args","name","services"],"mappings":";;;;;;;;;;;;;;;AA0Ea,IAAA,KAAA,GAAN,cAAoB,iBAAkB,CAAA;AAAA,EAqB3C,WAAA,CACmB,IACA,EAAA,IAAA,EACA,IACjB,EAAA;AACA,IAAM,KAAA,CAAA,qBAAA,EAAuB,IAAM,EAAA,IAAA,EAAM,IAAI,CAAA;AAJ5B,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AACA,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AACA,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AAIjB,IAAA,MAAM,SAAY,GAAA,MAAA,CAAO,IAAK,CAAA,SAAS,CAAE,CAAA,KAAA;AAAA,MAAM,CAAAA,UAC7C,KAAA,MAAA,CAAOA,aAAY,+BAAgCA,CAAAA,UAAS,IAAI,SAAS;AAAA,KAC3E;AAEA,IAAA,IAAA,CAAK,KAAQ,GAAA,MAAA,CAAO,EAAE,IAAA,EAAM,WAAW,CAAA,CAAE,KAAM,CAAA,OAAO,EAAE,IAAA,EAAAC,KAAM,EAAA,SAAA,EAAAD,YAAgB,KAAA;AAC5E,MAAO,OAAA,IAAI,KAAK,EAAG,CAAA,KAAA;AAAA,QACjB,IAAA;AAAA,QACA,IAAA;AAAA,UACE;AAAA,YACE,GAAGC,KAAAA;AAAA,YACH,KAAA,EAAO,gBAAiBA,CAAAA,KAAAA,CAAK,KAAK,CAAA;AAAA,YAClC,SAAAD,EAAAA;AAAA,WACF;AAAA,UACA,CAAC,WAAW;AAAA,SACd;AAAA,QACA;AAAA,UACE,GAAG,IAAA;AAAA,UACH,MAAQ,EAAA,IAAA;AAAA,UACR,QAAU,EAAA,MAAM,WAAYC,CAAAA,KAAAA,CAAK,OAAO,CAAA;AAAA,UAExC,UAAY,EAAA;AAAA,YACV,GAAI,IAAM,EAAA,UAAA,IAAc,EAAC;AAAA,YAEzB,CAAgB,YAAA,KAAA;AACd,cAAM,MAAA,WAAA,GAAcA,MAAK,WAAe,IAAA,IAAA;AACxC,cAAA,MAAM,eAAe,CAAG,EAAA,IAAI,CAAID,CAAAA,EAAAA,UAAS,IAAI,WAAW,CAAA,CAAA;AAExD,cAAA,IACE,YAAa,CAAA,IAAA,KAAS,4BACtB,IAAA,YAAA,CAAa,SAAS,YACtB,EAAA;AACA,gBAAM,MAAA,IAAA,GAAO,aAAa,KAAM,CAAA,IAAA;AAEhC,gBAAO,OAAA;AAAA,kBACL,KAAO,EAAA;AAAA,oBACL,GAAG,YAAa,CAAA,KAAA;AAAA,oBAChB,IAAM,EAAA;AAAA,sBACJ,GAAG,IAAA;AAAA,sBACH,GAAIC,KAAK,CAAA,OAAA,IAAW,EAAC;AAAA,sBAErB,IAAM,EAAA,cAAA,CAAeA,KAAK,CAAA,OAAA,EAASA,MAAK,OAAO,CAAA;AAAA,sBAE/C,aACEA,KAAK,CAAA,OAAA,EAAS,eAAeA,KAAK,CAAA,OAAA,CAAQ,eAAe,IAAK,CAAA;AAAA;AAClE,mBACF;AAAA,kBACA,MAAM,YAAa,CAAA;AAAA,iBACrB;AAAA;AAGF,cAAO,OAAA,MAAA;AAAA;AACT;AACF;AACF,OACF;AAAA,KACD,CAAA;AAED,IAAA,IAAA,CAAK,YAAY,MAAO,CAAA,IAAA,CAAK,SAAS,CAAA,CAAE,MAAM,CAAa,SAAA,KAAA;AACzD,MAAA,IAAI,CAAC,SAAW,EAAA;AACd,QAAO,OAAA,MAAA;AAAA;AAGT,MAAA,OAAO,IAAI,SAAA;AAAA,QACT,IAAA;AAAA,QACA;AAAA,UACE,GAAG,SAAA;AAAA,UACH,SAAS,IAAK,CAAA,OAAA;AAAA,UACd,IAAM,EAAA;AAAA,YACJ,SAAS,IAAK,CAAA;AAAA;AAChB,SACF;AAAA,QACA,EAAE,GAAG,IAAM,EAAA,MAAA,EAAQ,IAAK;AAAA,OAC1B;AAAA,KACD,CAAA;AAED,IAAA,IAAA,CAAK,kBAAkB,MAAO,CAAA,IAAI,CAAE,CAAA,KAAA,CAAM,CAAAA,KAAQ,KAAA;AAChD,MAAA,MAAM,QAAW,GAAA,SAAA,CAAUA,KAAK,CAAA,aAAA,EAAeA,MAAK,eAAe,CAAA;AAEnE,MAAO,OAAA,MAAA;AAAA,QACL,QAAA,CAAS,IAAI,CAAU,MAAA,KAAA;AACrB,UAAA,OAAO,aAAc,CAAA,MAAA;AAAA,YACnB,IAAA;AAAA,YACA;AAAA,cACE,GAAG,MAAA;AAAA,cAEH,SAASA,KAAK,CAAA,OAAA;AAAA,cACd,WAAWA,KAAK,CAAA;AAAA,aAClB;AAAA,YACA,EAAE,GAAG,IAAM,EAAA,MAAA,EAAQ,IAAK;AAAA,WAC1B;AAAA,SACD;AAAA,OACH;AAAA,KACD,CAAA;AAED,IAAA,IAAA,CAAK,YAAY,MAAO,CAAA,IAAA,CAAK,KAAK,CAAA,CAAE,MAAM,CAAS,KAAA,KAAA;AACjD,MAAO,OAAA,MAAA;AAAA,QACL,KAAA,CAAM,SAAU,CAAA,KAAA,CAAM,CAAa,SAAA,KAAA;AACjC,UAAO,OAAA,SAAA,CACJ,IAAI,CAAY,QAAA,KAAA;AACf,YAAA,IAAI,IAAK,CAAA,EAAA,CAAG,UAAW,CAAA,UAAA,CAAW,QAAQ,CAAG,EAAA;AAC3C,cAAA,OAAO,QAAS,CAAA,QAAA,CAAS,IAAK,CAAA,KAAA,CAAM,CAAAC,KAAQ,KAAA;AAC1C,gBAAO,OAAA,UAAA,CAAW,KAAKA,KAAM,EAAA,QAAA,EAAU,KAAK,IAAK,CAAA,OAAA,EAAS,KAAK,IAAI,CAAA;AAAA,eACpE,CAAA;AAAA;AAGH,YAAA,IAAI,IAAK,CAAA,EAAA,CAAG,WAAY,CAAA,UAAA,CAAW,QAAQ,CAAG,EAAA;AAC5C,cAAA,OAAO,QAAS,CAAA,QAAA,CAAS,IAAK,CAAA,KAAA,CAAM,CAAAA,KAAQ,KAAA;AAC1C,gBAAO,OAAA,WAAA,CAAY,KAAKA,KAAM,EAAA,QAAA,EAAU,KAAK,IAAK,CAAA,OAAA,EAAS,KAAK,IAAI,CAAA;AAAA,eACrE,CAAA;AAAA;AAGH,YAAO,OAAA,MAAA;AAAA,WACR,CAAA,CACA,MAAO,CAAA,CAAA,QAAA,KAAY,aAAa,MAAS,CAAA;AAAA,SAC7C;AAAA,OACH;AAAA,KACD,CAAA;AAAA;AACH;AAAA;AAAA;AAAA,EA7IgB,KAAA;AAAA;AAAA;AAAA;AAAA,EAKA,SAAA;AAAA;AAAA;AAAA;AAAA,EAKA,eAAA;AAAA;AAAA;AAAA;AAAA,EAKA,SAAA;AAAA,EAgIhB,IAAI,OAA2B,GAAA;AAC7B,IAAO,OAAA,IAAA,CAAK,iBAAiB,MAAS,CAAA;AAAA;AACxC,EAEA,IAAI,SAAwC,GAAA;AAC1C,IAAO,OAAA,IAAA,CAAK,SAAU,CAAA,KAAA,CAAM,CAAa,SAAA,KAAA,MAAA,CAAO,SAAU,CAAA,GAAA,CAAI,CAAY,QAAA,KAAA,QAAA,CAAS,QAAQ,CAAC,CAAC,CAAA;AAAA;AAC/F,EAEiB,QAAA,uBAAe,GAAqB,EAAA;AAAA,EAErD,iBAAiB,IAA2C,EAAA;AAC1D,IAAA,OAAO,MAAO,CAAA,EAAE,IAAM,EAAA,IAAA,CAAK,MAAM,KAAO,EAAA,IAAA,CAAK,KAAM,EAAC,EAAE,KAAM,CAAA,CAAC,EAAE,IAAA,EAAM,OAAY,KAAA;AAC/E,MAAA,MAAM,YAAe,GAAA,IAAA,IAAQ,IAAK,CAAA,WAAA,IAAe,IAAK,CAAA,IAAA;AACtD,MAAA,MAAM,eAAkB,GAAA,IAAA,CAAK,QAAS,CAAA,GAAA,CAAI,YAAY,CAAA;AAEtD,MAAA,IAAI,eAAiB,EAAA;AACnB,QAAO,OAAA,eAAA;AAAA;AAGT,MAAM,MAAA,OAAA,GAAU,qBAAsB,CAAA,KAAA,EAAO,YAAY,CAAA;AAEzD,MAAA,MAAM,iBAAiB,OAAQ,CAAA,IAAA;AAAA;AAAA,QAE7B,YAAA;AAAA,QACA,OAAA;AAAA,QACA,IAAK,CAAA,OAAA;AAAA,QACL,EAAE,GAAG,IAAK,CAAA,IAAA,EAAM,QAAQ,IAAK;AAAA,OAC/B;AAEA,MAAK,IAAA,CAAA,QAAA,CAAS,GAAI,CAAA,YAAA,EAAc,cAAc,CAAA;AAC9C,MAAO,OAAA,cAAA;AAAA,KACR,CAAA;AAAA;AACH,EAEA,WAAW,IAAiC,EAAA;AAC1C,IAAA,OAAO,SAAU,CAAA,IAAA,CAAK,gBAAiB,CAAA,IAAI,CAAC,CAAA;AAAA;AAEhD;AAmBa,IAAA,aAAA,GAAN,cAA4B,iBAAkB,CAAA;AAAA;AAAA;AAAA;AAAA,EAInC,QAAA;AAAA;AAAA;AAAA;AAAA,EAKA,OAAA;AAAA,EAEhB,WAAA,CAAY,IAAc,EAAA,IAAA,EAAyB,IAAiC,EAAA;AAClF,IAAM,KAAA,CAAA,6BAAA,EAA+B,IAAM,EAAA,IAAA,EAAM,IAAI,CAAA;AAErD,IAAA,IAAA,CAAK,UAAU,MAAO,CAAA,IAAI,CAAE,CAAA,KAAA,CAAM,CAAAD,KAAQ,KAAA;AACxC,MAAM,MAAA,MAAA,GAASA,MAAK,MAChB,GAAA,MAAA,CAAO,QAAQA,KAAK,CAAA,MAAM,CAAE,CAAA,OAAA,CAAQ,CAAC,CAAC,KAAK,KAAK,CAAA,KAAM,CAAC,OAAA,EAAS,CAAG,EAAA,GAAG,KAAK,KAAK,CAAA,CAAA,CAAG,CAAC,CAAA,GACpF,EAAC;AAEL,MAAA,OAAO,IAAI,KAAM,CAAA,OAAA;AAAA,QACf,IAAA;AAAA,QACA;AAAA,UACE,QAAQ,MAAO,CAAA;AAAA,YACb,MAAA;AAAA,YACA,UAAA;AAAA,YACA,gBAAA,CAAiBA,MAAK,KAAK,CAAA;AAAA,YAE3B,GAAIA,KAAK,CAAA,SAAA,GACL,CAAC,aAAA,EAAe,gCAAgCA,KAAK,CAAA,SAAS,CAAC,CAAA,GAC/D,EAAC;AAAA,YAEL,GAAG;AAAA,WACJ,CAAE,CAAA,KAAA,CAAM,aAAW,OAAQ,CAAA,IAAA,CAAK,GAAG,CAAC,CAAA;AAAA,UAErC,OAAS,EAAA;AAAA,SACX;AAAA,QACA,EAAE,MAAA,EAAQ,IAAM,EAAA,GAAG,IAAK;AAAA,OAC1B;AAAA,KACD,CAAA;AAED,IAAK,IAAA,CAAA,QAAA,GAAW,KAAK,OAAQ,CAAA,MAAA;AAE7B,IAAK,IAAA,CAAA,eAAA,CAAgB,EAAE,QAAU,EAAA,IAAA,CAAK,UAAU,OAAS,EAAA,IAAA,CAAK,SAAS,CAAA;AAAA;AAE3E;AAeA,eAAsB,iBAAiB,QAA0C,EAAA;AAC/E,EAAI,IAAA,CAAC,OAAQ,CAAA,GAAA,CAAI,mBAAqB,EAAA;AACpC,IAAM,MAAA,IAAI,MAAM,qDAAqD,CAAA;AAAA;AAGvE,EAAA,MAAM,SAAY,GAAA,OAAA,CAAQ,OAAQ,CAAA,GAAA,CAAI,qBAAqB,QAAQ,CAAA;AACnE,EAAA,MAAM,KAAM,CAAA,SAAA,EAAW,EAAE,SAAA,EAAW,MAAM,CAAA;AAE1C,EAAM,MAAA,WAAA,GAAc,CAAG,EAAA,QAAA,CAAS,IAAI,CAAA,MAAA,CAAA;AACpC,EAAA,MAAM,iBAAiB,CAAG,EAAA,QAAA,CAAS,IAAI,CAAA,CAAA,EAAI,SAAS,OAAO,CAAA,IAAA,CAAA;AAG3D,EAAA,MAAM,QAAQ,MAAM,IAAA,CAAK,aAAa,EAAE,GAAA,EAAK,WAAW,CAAA;AAExD,EAAI,IAAA,KAAA,CAAM,QAAS,CAAA,cAAc,CAAG,EAAA;AAClC,IAAO,OAAA,OAAA,CAAQ,WAAW,cAAc,CAAA;AAAA;AAI1C,EAAA,KAAA,MAAW,QAAQ,KAAO,EAAA;AACxB,IAAA,MAAM,MAAO,CAAA,OAAA,CAAQ,SAAW,EAAA,IAAI,CAAC,CAAA;AAAA;AAIvC,EAAA,MAAM,MAAM,MAAQ,EAAA;AAAA,IAClB,MAAA;AAAA,IACA,QAAS,CAAA,IAAA;AAAA,IACT,WAAA;AAAA,IACA,QAAS,CAAA,OAAA;AAAA,IACT,QAAA;AAAA,IACA,QAAS,CAAA,IAAA;AAAA,IACT,eAAA;AAAA,IACA;AAAA,GACD,CAAA;AAGD,EAAA,MAAM,UAAU,MAAM,QAAA,CAAS,OAAQ,CAAA,SAAA,EAAW,cAAc,CAAC,CAAA;AACjE,EAAM,MAAA,YAAA,GAAe,MAAM,MAAA,CAAO,OAAO,CAAA;AAEzC,EAAI,IAAA,YAAA,KAAiB,SAAS,MAAQ,EAAA;AACpC,IAAA,MAAM,IAAI,KAAA,CAAM,CAA8B,2BAAA,EAAA,QAAA,CAAS,IAAI,CAAG,CAAA,CAAA,CAAA;AAAA;AAGhE,EAAO,OAAA,OAAA,CAAQ,WAAW,cAAc,CAAA;AAC1C;AASO,SAAS,qBAAA,CAAsB,OAAsB,IAAuC,EAAA;AACjG,EAAA,MAAM,QAAW,GAAA,KAAA,CAAM,SAAU,CAAA,KAAA,CAAM,CAAa,SAAA,KAAA;AAClD,IAAA,OAAO,UACJ,MAAO,CAAA,CAAA,CAAA,KAAK,KAAK,EAAG,CAAA,OAAA,CAAQ,WAAW,CAAC,CAAC,CACzC,CAAA,GAAA,CAAI,cAAY,EAAE,IAAA,EAAM,QAAQ,QAAS,CAAA,IAAA,EAAM,SAAU,CAAA,CAAA;AAAA,GAC7D,CAAA;AAED,EAAA,OAAO,MAAO,CAAA,QAAQ,CAAE,CAAA,KAAA,CAAM,CAAAE,SAAY,KAAA;AACxC,IAAA,MAAM,UAAUA,SAAS,CAAA,IAAA,CAAK,OAAK,CAAE,CAAA,IAAA,KAAS,IAAI,CAAG,EAAA,OAAA;AAErD,IAAA,IAAI,CAAC,OAAS,EAAA;AACZ,MAAA,MAAM,IAAI,KAAA,CAAM,CAAsB,mBAAA,EAAA,IAAI,CAAoC,kCAAA,CAAA,CAAA;AAAA;AAGhF,IAAO,OAAA,OAAA;AAAA,GACR,CAAA;AACH;AASO,SAAS,eAAA,CAAgB,OAAsB,IAAwC,EAAA;AAC5F,EAAA,OAAO,SAAU,CAAA,qBAAA,CAAsB,KAAO,EAAA,IAAI,CAAC,CAAA;AACrD","file":"chunk-OFFSHGC6.js","sourcesContent":["import type { k8s } from \"@highstate/library\"\nimport type { Workload } from \"./workload\"\nimport { resolve } from \"node:path\"\nimport { mkdir, readFile, unlink } from \"node:fs/promises\"\nimport { normalize, toPromise, type InputMap, type InstanceTerminal } from \"@highstate/pulumi\"\nimport { apps, core, helm, types } from \"@pulumi/kubernetes\"\nimport {\n ComponentResource,\n output,\n type ComponentResourceOptions,\n type Input,\n type Output,\n} from \"@pulumi/pulumi\"\nimport spawn from \"nano-spawn\"\nimport { sha256 } from \"crypto-hash\"\nimport { omit } from \"remeda\"\nimport { local } from \"@pulumi/command\"\nimport { glob } from \"glob\"\nimport { NetworkPolicy, type NetworkPolicyArgs } from \"./network-policy\"\nimport { HttpRoute, type HttpRouteArgs } from \"./gateway\"\nimport { getProvider, mapNamespaceLikeToNamespaceName, type NamespaceLike } from \"./shared\"\nimport { getServiceType, Service, type ServiceArgs } from \"./service\"\nimport { Deployment } from \"./deployment\"\nimport { StatefulSet } from \"./stateful-set\"\n\nexport type ChartArgs = Omit<\n helm.v4.ChartArgs,\n \"chart\" | \"version\" | \"repositoryOpts\" | \"namespace\"\n> & {\n /**\n * The namespace to deploy the chart into.\n */\n namespace?: Input<NamespaceLike>\n\n /**\n * The custom name of the primary service exposed by the chart.\n *\n * By default, it is the same as the chart name.\n */\n serviceName?: string\n\n /**\n * The extra args to pass to the main service of the chart.\n *\n * Will be patched via transformations.\n */\n service?: Partial<ServiceArgs>\n\n /**\n * The manifest of the chart to resolve.\n */\n chart: ChartManifest\n\n /**\n * The cluster to create the resource in.\n */\n cluster: Input<k8s.Cluster>\n\n /**\n * The http route args to bind the service to.\n */\n httpRoute?: Input<Omit<HttpRouteArgs, \"cluster\">>\n\n /**\n * The network policy to apply to the chart.\n */\n networkPolicy?: Input<Omit<NetworkPolicyArgs, \"selector\" | \"cluster\" | \"namespace\">>\n\n /**\n * The network policies to apply to the chart.\n */\n networkPolicies?: Input<NetworkPolicyArgs[]>\n}\n\nexport class Chart extends ComponentResource {\n /**\n * The underlying Helm chart.\n */\n public readonly chart: Output<helm.v4.Chart>\n\n /**\n * The HTTP route associated with the deployment.\n */\n public readonly httpRoute: Output<HttpRoute | undefined>\n\n /**\n * The network policies applied to the chart.\n */\n public readonly networkPolicies: Output<NetworkPolicy[]>\n\n /**\n * All workloads created by the chart.\n */\n public readonly workloads: Output<Workload[]>\n\n constructor(\n private readonly name: string,\n private readonly args: ChartArgs,\n private readonly opts?: ComponentResourceOptions,\n ) {\n super(\"highstate:k8s:Chart\", name, args, opts)\n\n const namespace = output(args.namespace).apply(namespace =>\n output(namespace ? mapNamespaceLikeToNamespaceName(namespace) : \"default\"),\n )\n\n this.chart = output({ args, namespace }).apply(async ({ args, namespace }) => {\n return new helm.v4.Chart(\n name,\n omit(\n {\n ...args,\n chart: resolveHelmChart(args.chart),\n namespace,\n },\n [\"httpRoute\"],\n ),\n {\n ...opts,\n parent: this,\n provider: await getProvider(args.cluster),\n\n transforms: [\n ...(opts?.transforms ?? []),\n\n resourceArgs => {\n const serviceName = args.serviceName ?? name\n const expectedName = `${name}:${namespace}/${serviceName}`\n\n if (\n resourceArgs.type === \"kubernetes:core/v1:Service\" &&\n resourceArgs.name === expectedName\n ) {\n const spec = resourceArgs.props.spec as types.input.core.v1.ServiceSpec\n\n return {\n props: {\n ...resourceArgs.props,\n spec: {\n ...spec,\n ...(args.service ?? {}),\n\n type: getServiceType(args.service, args.cluster),\n\n externalIPs:\n args.service?.externalIPs ?? args.cluster.externalIps ?? spec.externalIPs,\n },\n },\n opts: resourceArgs.opts,\n }\n }\n\n return undefined\n },\n ],\n },\n )\n })\n\n this.httpRoute = output(args.httpRoute).apply(httpRoute => {\n if (!httpRoute) {\n return undefined\n }\n\n return new HttpRoute(\n name,\n {\n ...httpRoute,\n cluster: args.cluster,\n rule: {\n backend: this.service,\n },\n },\n { ...opts, parent: this },\n )\n })\n\n this.networkPolicies = output(args).apply(args => {\n const policies = normalize(args.networkPolicy, args.networkPolicies)\n\n return output(\n policies.map(policy => {\n return NetworkPolicy.create(\n name,\n {\n ...policy,\n\n cluster: args.cluster,\n namespace: args.namespace,\n },\n { ...opts, parent: this },\n )\n }),\n )\n })\n\n this.workloads = output(this.chart).apply(chart => {\n return output(\n chart.resources.apply(resources => {\n return resources\n .map(resource => {\n if (apps.v1.Deployment.isInstance(resource)) {\n return resource.metadata.name.apply(name => {\n return Deployment.wrap(name, resource, this.args.cluster, this.opts)\n })\n }\n\n if (apps.v1.StatefulSet.isInstance(resource)) {\n return resource.metadata.name.apply(name => {\n return StatefulSet.wrap(name, resource, this.args.cluster, this.opts)\n })\n }\n\n return undefined\n })\n .filter(workload => workload !== undefined) as Output<Workload>[]\n }),\n )\n })\n }\n\n get service(): Output<Service> {\n return this.getServiceOutput(undefined)\n }\n\n get terminals(): Output<InstanceTerminal[]> {\n return this.workloads.apply(workloads => output(workloads.map(workload => workload.terminal)))\n }\n\n private readonly services = new Map<string, Service>()\n\n getServiceOutput(name: string | undefined): Output<Service> {\n return output({ args: this.args, chart: this.chart }).apply(({ args, chart }) => {\n const resolvedName = name ?? args.serviceName ?? this.name\n const existingService = this.services.get(resolvedName)\n\n if (existingService) {\n return existingService\n }\n\n const service = getChartServiceOutput(chart, resolvedName)\n\n const wrappedService = Service.wrap(\n //\n resolvedName,\n service,\n args.cluster,\n { ...this.opts, parent: this },\n )\n\n this.services.set(resolvedName, wrappedService)\n return wrappedService\n })\n }\n\n getService(name?: string): Promise<Service> {\n return toPromise(this.getServiceOutput(name))\n }\n}\n\nexport type RenderedChartArgs = {\n /**\n * The namespace to deploy the chart into.\n */\n namespace?: Input<NamespaceLike>\n\n /**\n * The manifest of the chart to resolve.\n */\n chart: ChartManifest\n\n /**\n * The values to pass to the chart.\n */\n values?: InputMap<string>\n}\n\nexport class RenderedChart extends ComponentResource {\n /**\n * The rendered manifest of the Helm chart.\n */\n public readonly manifest: Output<string>\n\n /**\n * The underlying command used to render the chart.\n */\n public readonly command: Output<local.Command>\n\n constructor(name: string, args: RenderedChartArgs, opts?: ComponentResourceOptions) {\n super(\"highstate:k8s:RenderedChart\", name, args, opts)\n\n this.command = output(args).apply(args => {\n const values = args.values\n ? Object.entries(args.values).flatMap(([key, value]) => [\"--set\", `${key}=\"${value}\"`])\n : []\n\n return new local.Command(\n name,\n {\n create: output([\n \"helm\",\n \"template\",\n resolveHelmChart(args.chart),\n\n ...(args.namespace\n ? [\"--namespace\", mapNamespaceLikeToNamespaceName(args.namespace)]\n : []),\n\n ...values,\n ]).apply(command => command.join(\" \")),\n\n logging: \"stderr\",\n },\n { parent: this, ...opts },\n )\n })\n\n this.manifest = this.command.stdout\n\n this.registerOutputs({ manifest: this.manifest, command: this.command })\n }\n}\n\nexport type ChartManifest = {\n repo: string\n name: string\n version: string\n sha256: string\n}\n\n/**\n * Downloads or reuses the Helm chart according to the charts.json file.\n * Returns the full path to the chart's .tgz file.\n *\n * @param manifest The manifest of the Helm chart.\n */\nexport async function resolveHelmChart(manifest: ChartManifest): Promise<string> {\n if (!process.env.HIGHSTATE_CACHE_DIR) {\n throw new Error(\"Environment variable HIGHSTATE_CACHE_DIR is not set\")\n }\n\n const chartsDir = resolve(process.env.HIGHSTATE_CACHE_DIR, \"charts\")\n await mkdir(chartsDir, { recursive: true })\n\n const globPattern = `${manifest.name}-*.tgz`\n const targetFileName = `${manifest.name}-${manifest.version}.tgz`\n\n // find all matching files\n const files = await glob(globPattern, { cwd: chartsDir })\n\n if (files.includes(targetFileName)) {\n return resolve(chartsDir, targetFileName)\n }\n\n // delete old versions\n for (const file of files) {\n await unlink(resolve(chartsDir, file))\n }\n\n // download the chart\n await spawn(\"helm\", [\n \"pull\",\n manifest.name,\n \"--version\",\n manifest.version,\n \"--repo\",\n manifest.repo,\n \"--destination\",\n chartsDir,\n ])\n\n // check the SHA256\n const content = await readFile(resolve(chartsDir, targetFileName))\n const actualSha256 = await sha256(content)\n\n if (actualSha256 !== manifest.sha256) {\n throw new Error(`SHA256 mismatch for chart '${manifest.name}'`)\n }\n\n return resolve(chartsDir, targetFileName)\n}\n\n/**\n * Extracts the service with the given name from the chart resources.\n * Throws an error if the service is not found.\n *\n * @param chart The Helm chart.\n * @param name The name of the service.\n */\nexport function getChartServiceOutput(chart: helm.v4.Chart, name: string): Output<core.v1.Service> {\n const services = chart.resources.apply(resources => {\n return resources\n .filter(r => core.v1.Service.isInstance(r))\n .map(service => ({ name: service.metadata.name, service }))\n })\n\n return output(services).apply(services => {\n const service = services.find(s => s.name === name)?.service\n\n if (!service) {\n throw new Error(`Service with name '${name}' not found in the chart resources`)\n }\n\n return service\n })\n}\n\n/**\n * Extracts the service with the given name from the chart resources.\n * Throws an error if the service is not found.\n *\n * @param chart The Helm chart.\n * @param name The name of the service.\n */\nexport function getChartService(chart: helm.v4.Chart, name: string): Promise<core.v1.Service> {\n return toPromise(getChartServiceOutput(chart, name))\n}\n"]}
|
1
|
+
{"version":3,"sources":["../src/helm.ts"],"names":["namespace","args","name","services"],"mappings":"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","file":"chunk-OFFSHGC6.js","sourcesContent":["import type { k8s } from \"@highstate/library\"\nimport type { Workload } from \"./workload\"\nimport { resolve } from \"node:path\"\nimport { mkdir, readFile, unlink } from \"node:fs/promises\"\nimport { normalize, toPromise, type InputMap, type InstanceTerminal } from \"@highstate/pulumi\"\nimport { apps, core, helm, types } from \"@pulumi/kubernetes\"\nimport {\n ComponentResource,\n output,\n type ComponentResourceOptions,\n type Input,\n type Output,\n} from \"@pulumi/pulumi\"\nimport spawn from \"nano-spawn\"\nimport { sha256 } from \"crypto-hash\"\nimport { omit } from \"remeda\"\nimport { local } from \"@pulumi/command\"\nimport { glob } from \"glob\"\nimport { NetworkPolicy, type NetworkPolicyArgs } from \"./network-policy\"\nimport { HttpRoute, type HttpRouteArgs } from \"./gateway\"\nimport { getProvider, mapNamespaceLikeToNamespaceName, type NamespaceLike } from \"./shared\"\nimport { getServiceType, Service, type ServiceArgs } from \"./service\"\nimport { Deployment } from \"./deployment\"\nimport { StatefulSet } from \"./stateful-set\"\n\nexport type ChartArgs = Omit<\n helm.v4.ChartArgs,\n \"chart\" | \"version\" | \"repositoryOpts\" | \"namespace\"\n> & {\n /**\n * The namespace to deploy the chart into.\n */\n namespace?: Input<NamespaceLike>\n\n /**\n * The custom name of the primary service exposed by the chart.\n *\n * By default, it is the same as the chart name.\n */\n serviceName?: string\n\n /**\n * The extra args to pass to the main service of the chart.\n *\n * Will be patched via transformations.\n */\n service?: Partial<ServiceArgs>\n\n /**\n * The manifest of the chart to resolve.\n */\n chart: ChartManifest\n\n /**\n * The cluster to create the resource in.\n */\n cluster: Input<k8s.Cluster>\n\n /**\n * The http route args to bind the service to.\n */\n httpRoute?: Input<Omit<HttpRouteArgs, \"cluster\">>\n\n /**\n * The network policy to apply to the chart.\n */\n networkPolicy?: Input<Omit<NetworkPolicyArgs, \"selector\" | \"cluster\" | \"namespace\">>\n\n /**\n * The network policies to apply to the chart.\n */\n networkPolicies?: Input<NetworkPolicyArgs[]>\n}\n\nexport class Chart extends ComponentResource {\n /**\n * The underlying Helm chart.\n */\n public readonly chart: Output<helm.v4.Chart>\n\n /**\n * The HTTP route associated with the deployment.\n */\n public readonly httpRoute: Output<HttpRoute | undefined>\n\n /**\n * The network policies applied to the chart.\n */\n public readonly networkPolicies: Output<NetworkPolicy[]>\n\n /**\n * All workloads created by the chart.\n */\n public readonly workloads: Output<Workload[]>\n\n constructor(\n private readonly name: string,\n private readonly args: ChartArgs,\n private readonly opts?: ComponentResourceOptions,\n ) {\n super(\"highstate:k8s:Chart\", name, args, opts)\n\n const namespace = output(args.namespace).apply(namespace =>\n output(namespace ? mapNamespaceLikeToNamespaceName(namespace) : \"default\"),\n )\n\n this.chart = output({ args, namespace }).apply(async ({ args, namespace }) => {\n return new helm.v4.Chart(\n name,\n omit(\n {\n ...args,\n chart: resolveHelmChart(args.chart),\n namespace,\n },\n [\"httpRoute\"],\n ),\n {\n ...opts,\n parent: this,\n provider: await getProvider(args.cluster),\n\n transforms: [\n ...(opts?.transforms ?? []),\n\n resourceArgs => {\n const serviceName = args.serviceName ?? name\n const expectedName = `${name}:${namespace}/${serviceName}`\n\n if (\n resourceArgs.type === \"kubernetes:core/v1:Service\" &&\n resourceArgs.name === expectedName\n ) {\n const spec = resourceArgs.props.spec as types.input.core.v1.ServiceSpec\n\n return {\n props: {\n ...resourceArgs.props,\n spec: {\n ...spec,\n ...(args.service ?? {}),\n\n type: getServiceType(args.service, args.cluster),\n\n externalIPs:\n args.service?.externalIPs ?? args.cluster.externalIps ?? spec.externalIPs,\n },\n },\n opts: resourceArgs.opts,\n }\n }\n\n return undefined\n },\n ],\n },\n )\n })\n\n this.httpRoute = output(args.httpRoute).apply(httpRoute => {\n if (!httpRoute) {\n return undefined\n }\n\n return new HttpRoute(\n name,\n {\n ...httpRoute,\n cluster: args.cluster,\n rule: {\n backend: this.service,\n },\n },\n { ...opts, parent: this },\n )\n })\n\n this.networkPolicies = output(args).apply(args => {\n const policies = normalize(args.networkPolicy, args.networkPolicies)\n\n return output(\n policies.map(policy => {\n return NetworkPolicy.create(\n name,\n {\n ...policy,\n\n cluster: args.cluster,\n namespace: args.namespace,\n },\n { ...opts, parent: this },\n )\n }),\n )\n })\n\n this.workloads = output(this.chart).apply(chart => {\n return output(\n chart.resources.apply(resources => {\n return resources\n .map(resource => {\n if (apps.v1.Deployment.isInstance(resource)) {\n return resource.metadata.name.apply(name => {\n return Deployment.wrap(name, resource, this.args.cluster, this.opts)\n })\n }\n\n if (apps.v1.StatefulSet.isInstance(resource)) {\n return resource.metadata.name.apply(name => {\n return StatefulSet.wrap(name, resource, this.args.cluster, this.opts)\n })\n }\n\n return undefined\n })\n .filter(workload => workload !== undefined) as Output<Workload>[]\n }),\n )\n })\n }\n\n get service(): Output<Service> {\n return this.getServiceOutput(undefined)\n }\n\n get terminals(): Output<InstanceTerminal[]> {\n return this.workloads.apply(workloads => output(workloads.map(workload => workload.terminal)))\n }\n\n private readonly services = new Map<string, Service>()\n\n getServiceOutput(name: string | undefined): Output<Service> {\n return output({ args: this.args, chart: this.chart }).apply(({ args, chart }) => {\n const resolvedName = name ?? args.serviceName ?? this.name\n const existingService = this.services.get(resolvedName)\n\n if (existingService) {\n return existingService\n }\n\n const service = getChartServiceOutput(chart, resolvedName)\n\n const wrappedService = Service.wrap(\n //\n resolvedName,\n service,\n args.cluster,\n { ...this.opts, parent: this },\n )\n\n this.services.set(resolvedName, wrappedService)\n return wrappedService\n })\n }\n\n getService(name?: string): Promise<Service> {\n return toPromise(this.getServiceOutput(name))\n }\n}\n\nexport type RenderedChartArgs = {\n /**\n * The namespace to deploy the chart into.\n */\n namespace?: Input<NamespaceLike>\n\n /**\n * The manifest of the chart to resolve.\n */\n chart: ChartManifest\n\n /**\n * The values to pass to the chart.\n */\n values?: InputMap<string>\n}\n\nexport class RenderedChart extends ComponentResource {\n /**\n * The rendered manifest of the Helm chart.\n */\n public readonly manifest: Output<string>\n\n /**\n * The underlying command used to render the chart.\n */\n public readonly command: Output<local.Command>\n\n constructor(name: string, args: RenderedChartArgs, opts?: ComponentResourceOptions) {\n super(\"highstate:k8s:RenderedChart\", name, args, opts)\n\n this.command = output(args).apply(args => {\n const values = args.values\n ? Object.entries(args.values).flatMap(([key, value]) => [\"--set\", `${key}=\"${value}\"`])\n : []\n\n return new local.Command(\n name,\n {\n create: output([\n \"helm\",\n \"template\",\n resolveHelmChart(args.chart),\n\n ...(args.namespace\n ? [\"--namespace\", mapNamespaceLikeToNamespaceName(args.namespace)]\n : []),\n\n ...values,\n ]).apply(command => command.join(\" \")),\n\n logging: \"stderr\",\n },\n { parent: this, ...opts },\n )\n })\n\n this.manifest = this.command.stdout\n\n this.registerOutputs({ manifest: this.manifest, command: this.command })\n }\n}\n\nexport type ChartManifest = {\n repo: string\n name: string\n version: string\n sha256: string\n}\n\n/**\n * Downloads or reuses the Helm chart according to the charts.json file.\n * Returns the full path to the chart's .tgz file.\n *\n * @param manifest The manifest of the Helm chart.\n */\nexport async function resolveHelmChart(manifest: ChartManifest): Promise<string> {\n if (!process.env.HIGHSTATE_CACHE_DIR) {\n throw new Error(\"Environment variable HIGHSTATE_CACHE_DIR is not set\")\n }\n\n const chartsDir = resolve(process.env.HIGHSTATE_CACHE_DIR, \"charts\")\n await mkdir(chartsDir, { recursive: true })\n\n const globPattern = `${manifest.name}-*.tgz`\n const targetFileName = `${manifest.name}-${manifest.version}.tgz`\n\n // find all matching files\n const files = await glob(globPattern, { cwd: chartsDir })\n\n if (files.includes(targetFileName)) {\n return resolve(chartsDir, targetFileName)\n }\n\n // delete old versions\n for (const file of files) {\n await unlink(resolve(chartsDir, file))\n }\n\n // download the chart\n await spawn(\"helm\", [\n \"pull\",\n manifest.name,\n \"--version\",\n manifest.version,\n \"--repo\",\n manifest.repo,\n \"--destination\",\n chartsDir,\n ])\n\n // check the SHA256\n const content = await readFile(resolve(chartsDir, targetFileName))\n const actualSha256 = await sha256(content)\n\n if (actualSha256 !== manifest.sha256) {\n throw new Error(`SHA256 mismatch for chart '${manifest.name}'`)\n }\n\n return resolve(chartsDir, targetFileName)\n}\n\n/**\n * Extracts the service with the given name from the chart resources.\n * Throws an error if the service is not found.\n *\n * @param chart The Helm chart.\n * @param name The name of the service.\n */\nexport function getChartServiceOutput(chart: helm.v4.Chart, name: string): Output<core.v1.Service> {\n const services = chart.resources.apply(resources => {\n return resources\n .filter(r => core.v1.Service.isInstance(r))\n .map(service => ({ name: service.metadata.name, service }))\n })\n\n return output(services).apply(services => {\n const service = services.find(s => s.name === name)?.service\n\n if (!service) {\n throw new Error(`Service with name '${name}' not found in the chart resources`)\n }\n\n return service\n })\n}\n\n/**\n * Extracts the service with the given name from the chart resources.\n * Throws an error if the service is not found.\n *\n * @param chart The Helm chart.\n * @param name The name of the service.\n */\nexport function getChartService(chart: helm.v4.Chart, name: string): Promise<core.v1.Service> {\n return toPromise(getChartServiceOutput(chart, name))\n}\n"]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/stateful-set.ts"],"names":["service","args","podTemplate","podSpec","id"],"mappings":"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","file":"chunk-TZHOUJRC.js","sourcesContent":["import type { k8s } from \"@highstate/library\"\nimport type { HttpRoute } from \"./gateway\"\nimport type { Service } from \"./service\"\nimport type { NetworkPolicy } from \"./network-policy\"\nimport { output, type ComponentResourceOptions, Output, type Input } from \"@highstate/pulumi\"\nimport { apps, types } from \"@pulumi/kubernetes\"\nimport { omit } from \"remeda\"\nimport { deepmerge } from \"deepmerge-ts\"\nimport {\n getProvider,\n mapMetadata,\n resourceIdToString,\n withPatchName,\n type ResourceId,\n} from \"./shared\"\nimport {\n exposableWorkloadExtraArgs,\n ExposableWorkload,\n type ExposableWorkloadArgs,\n getExposableWorkloadComponents,\n} from \"./workload\"\n\nexport type StatefulSetArgs = Omit<ExposableWorkloadArgs, \"existing\"> &\n Omit<Partial<types.input.apps.v1.StatefulSetSpec>, \"template\"> & {\n template?: {\n metadata?: types.input.meta.v1.ObjectMeta\n spec?: Partial<types.input.core.v1.PodSpec>\n }\n }\n\nexport type CreateOrGetStatefulSetArgs = StatefulSetArgs & {\n /**\n * The entity to use to determine the stateful set to patch.\n */\n existing: Input<k8s.StatefulSet> | undefined\n}\n\nexport abstract class StatefulSet extends ExposableWorkload {\n protected constructor(\n type: string,\n name: string,\n args: ExposableWorkloadArgs,\n opts: ComponentResourceOptions | undefined,\n\n cluster: Output<k8s.Cluster>,\n metadata: Output<types.output.meta.v1.ObjectMeta>,\n\n /**\n * The spec of the underlying Kubernetes stateful set.\n */\n readonly spec: Output<types.output.apps.v1.StatefulSetSpec>,\n\n /**\n * The status of the underlying Kubernetes stateful set.\n */\n readonly status: Output<types.output.apps.v1.StatefulSetStatus>,\n\n networkPolicy: Output<NetworkPolicy | undefined>,\n\n service: Output<Service | undefined>,\n httpRoute: Output<HttpRoute | undefined>,\n ) {\n super(\n type,\n name,\n args,\n opts,\n \"statefulset\",\n cluster,\n metadata,\n networkPolicy,\n service,\n httpRoute,\n )\n }\n\n /**\n * The Highstate stateful set entity.\n */\n get entity(): Output<k8s.StatefulSet> {\n return output({\n type: \"k8s.stateful-set\",\n clusterId: this.cluster.id,\n metadata: this.metadata,\n service: this.service.entity,\n })\n }\n\n static create(name: string, args: StatefulSetArgs, opts?: ComponentResourceOptions): StatefulSet {\n return new CreatedStatefulSet(name, args, opts)\n }\n\n static createOrPatch(\n name: string,\n args: CreateOrGetStatefulSetArgs,\n opts?: ComponentResourceOptions,\n ): StatefulSet {\n if (!args.existing) {\n return new CreatedStatefulSet(name, args, opts)\n }\n\n return new StatefulSetPatch(\n name,\n {\n ...args,\n name: withPatchName(\"stateful set\", args.existing, args.cluster),\n namespace: output(args.existing).metadata.namespace,\n },\n opts,\n )\n }\n\n static patch(name: string, args: StatefulSetArgs, opts?: ComponentResourceOptions): StatefulSet {\n return new StatefulSetPatch(name, args, opts)\n }\n\n static createOrGet(\n name: string,\n args: CreateOrGetStatefulSetArgs,\n opts?: ComponentResourceOptions,\n ): StatefulSet {\n if (!args.existing) {\n return new CreatedStatefulSet(name, args, opts)\n }\n\n return new ExternalStatefulSet(name, output(args.existing).metadata, args.cluster, opts)\n }\n\n static wrap(\n name: string,\n statefulSet: Input<apps.v1.StatefulSet>,\n cluster: Input<k8s.Cluster>,\n opts?: ComponentResourceOptions,\n ): StatefulSet {\n return new WrappedStatefulSet(name, statefulSet, cluster, opts)\n }\n}\n\nclass CreatedStatefulSet extends StatefulSet {\n constructor(name: string, args: StatefulSetArgs, opts?: ComponentResourceOptions) {\n const { labels, podTemplate, networkPolicy, service, httpRoute } =\n getExposableWorkloadComponents(\n name,\n {\n ...args,\n\n // force create a service since it is required for stateful sets\n service: output(args.service).apply(service => ({ ...service })),\n },\n () => this,\n opts,\n )\n\n const statefulSet = output({ args, podTemplate }).apply(async ({ args, podTemplate }) => {\n return new apps.v1.StatefulSet(\n name,\n {\n metadata: mapMetadata(args, name),\n spec: deepmerge(\n {\n serviceName: service.apply(service => service!.metadata.name),\n template: podTemplate,\n selector: { matchLabels: labels },\n },\n omit(args, exposableWorkloadExtraArgs),\n ) as types.input.apps.v1.StatefulSetSpec,\n },\n {\n ...opts,\n parent: this,\n provider: await getProvider(args.cluster),\n },\n )\n })\n\n super(\n \"highstate:k8s:StatefulSet\",\n name,\n args,\n opts,\n\n output(args.cluster),\n statefulSet.metadata,\n statefulSet.spec,\n statefulSet.status,\n\n networkPolicy,\n service,\n httpRoute,\n )\n }\n}\n\nclass StatefulSetPatch extends StatefulSet {\n constructor(name: string, args: StatefulSetArgs, opts?: ComponentResourceOptions) {\n const { podSpec, networkPolicy, service, httpRoute } = getExposableWorkloadComponents(\n name,\n args,\n () => this,\n opts,\n )\n\n const statefulSet = output({ args, podSpec }).apply(async ({ args, podSpec }) => {\n return new apps.v1.StatefulSetPatch(\n name,\n {\n metadata: mapMetadata(args, name),\n spec: deepmerge(\n {\n template: {\n spec: podSpec,\n },\n },\n omit(args, exposableWorkloadExtraArgs),\n ) as types.input.apps.v1.StatefulSetSpec,\n },\n {\n ...opts,\n parent: this,\n provider: await getProvider(args.cluster),\n },\n )\n })\n\n super(\n \"highstate:k8s:StatefulSetPatch\",\n name,\n args,\n opts,\n\n output(args.cluster),\n statefulSet.metadata,\n statefulSet.spec,\n statefulSet.status,\n\n networkPolicy,\n service,\n httpRoute,\n )\n }\n}\n\nclass ExternalStatefulSet extends StatefulSet {\n constructor(\n name: string,\n id: Input<ResourceId>,\n cluster: Input<k8s.Cluster>,\n opts?: ComponentResourceOptions,\n ) {\n const statefulSet = output(id).apply(async id => {\n return apps.v1.StatefulSet.get(name, resourceIdToString(id), {\n ...opts,\n parent: this,\n provider: await getProvider(cluster),\n })\n })\n\n super(\n \"highstate:k8s:ExternalStatefulSet\",\n name,\n { namespace: output(id).namespace, cluster },\n opts,\n output(cluster),\n statefulSet.metadata,\n statefulSet.spec,\n statefulSet.status,\n\n output(undefined),\n output(undefined),\n output(undefined),\n )\n }\n}\n\nclass WrappedStatefulSet extends StatefulSet {\n constructor(\n name: string,\n statefulSet: Input<apps.v1.StatefulSet>,\n cluster: Input<k8s.Cluster>,\n opts?: ComponentResourceOptions,\n ) {\n super(\n \"highstate:k8s:WrappedStatefulSet\",\n name,\n { namespace: output(statefulSet).metadata.namespace, cluster },\n opts,\n\n output(cluster),\n output(statefulSet).metadata,\n output(statefulSet).spec,\n output(statefulSet).status,\n\n output(undefined),\n output(undefined),\n output(undefined),\n )\n }\n}\n"]}
|
1
|
+
{"version":3,"sources":["../src/stateful-set.ts"],"names":["service","args","podTemplate","podSpec","id"],"mappings":"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","file":"chunk-TZHOUJRC.js","sourcesContent":["import type { k8s } from \"@highstate/library\"\nimport type { HttpRoute } from \"./gateway\"\nimport type { Service } from \"./service\"\nimport type { NetworkPolicy } from \"./network-policy\"\nimport { output, type ComponentResourceOptions, Output, type Input } from \"@highstate/pulumi\"\nimport { apps, types } from \"@pulumi/kubernetes\"\nimport { omit } from \"remeda\"\nimport { deepmerge } from \"deepmerge-ts\"\nimport {\n getProvider,\n mapMetadata,\n resourceIdToString,\n withPatchName,\n type ResourceId,\n} from \"./shared\"\nimport {\n exposableWorkloadExtraArgs,\n ExposableWorkload,\n type ExposableWorkloadArgs,\n getExposableWorkloadComponents,\n} from \"./workload\"\n\nexport type StatefulSetArgs = Omit<ExposableWorkloadArgs, \"existing\"> &\n Omit<Partial<types.input.apps.v1.StatefulSetSpec>, \"template\"> & {\n template?: {\n metadata?: types.input.meta.v1.ObjectMeta\n spec?: Partial<types.input.core.v1.PodSpec>\n }\n }\n\nexport type CreateOrGetStatefulSetArgs = StatefulSetArgs & {\n /**\n * The entity to use to determine the stateful set to patch.\n */\n existing: Input<k8s.StatefulSet> | undefined\n}\n\nexport abstract class StatefulSet extends ExposableWorkload {\n protected constructor(\n type: string,\n name: string,\n args: ExposableWorkloadArgs,\n opts: ComponentResourceOptions | undefined,\n\n cluster: Output<k8s.Cluster>,\n metadata: Output<types.output.meta.v1.ObjectMeta>,\n\n /**\n * The spec of the underlying Kubernetes stateful set.\n */\n readonly spec: Output<types.output.apps.v1.StatefulSetSpec>,\n\n /**\n * The status of the underlying Kubernetes stateful set.\n */\n readonly status: Output<types.output.apps.v1.StatefulSetStatus>,\n\n networkPolicy: Output<NetworkPolicy | undefined>,\n\n service: Output<Service | undefined>,\n httpRoute: Output<HttpRoute | undefined>,\n ) {\n super(\n type,\n name,\n args,\n opts,\n \"statefulset\",\n cluster,\n metadata,\n networkPolicy,\n service,\n httpRoute,\n )\n }\n\n /**\n * The Highstate stateful set entity.\n */\n get entity(): Output<k8s.StatefulSet> {\n return output({\n type: \"k8s.stateful-set\",\n clusterId: this.cluster.id,\n metadata: this.metadata,\n service: this.service.entity,\n })\n }\n\n static create(name: string, args: StatefulSetArgs, opts?: ComponentResourceOptions): StatefulSet {\n return new CreatedStatefulSet(name, args, opts)\n }\n\n static createOrPatch(\n name: string,\n args: CreateOrGetStatefulSetArgs,\n opts?: ComponentResourceOptions,\n ): StatefulSet {\n if (!args.existing) {\n return new CreatedStatefulSet(name, args, opts)\n }\n\n return new StatefulSetPatch(\n name,\n {\n ...args,\n name: withPatchName(\"stateful set\", args.existing, args.cluster),\n namespace: output(args.existing).metadata.namespace,\n },\n opts,\n )\n }\n\n static patch(name: string, args: StatefulSetArgs, opts?: ComponentResourceOptions): StatefulSet {\n return new StatefulSetPatch(name, args, opts)\n }\n\n static createOrGet(\n name: string,\n args: CreateOrGetStatefulSetArgs,\n opts?: ComponentResourceOptions,\n ): StatefulSet {\n if (!args.existing) {\n return new CreatedStatefulSet(name, args, opts)\n }\n\n return new ExternalStatefulSet(name, output(args.existing).metadata, args.cluster, opts)\n }\n\n static wrap(\n name: string,\n statefulSet: Input<apps.v1.StatefulSet>,\n cluster: Input<k8s.Cluster>,\n opts?: ComponentResourceOptions,\n ): StatefulSet {\n return new WrappedStatefulSet(name, statefulSet, cluster, opts)\n }\n}\n\nclass CreatedStatefulSet extends StatefulSet {\n constructor(name: string, args: StatefulSetArgs, opts?: ComponentResourceOptions) {\n const { labels, podTemplate, networkPolicy, service, httpRoute } =\n getExposableWorkloadComponents(\n name,\n {\n ...args,\n\n // force create a service since it is required for stateful sets\n service: output(args.service).apply(service => ({ ...service })),\n },\n () => this,\n opts,\n )\n\n const statefulSet = output({ args, podTemplate }).apply(async ({ args, podTemplate }) => {\n return new apps.v1.StatefulSet(\n name,\n {\n metadata: mapMetadata(args, name),\n spec: deepmerge(\n {\n serviceName: service.apply(service => service!.metadata.name),\n template: podTemplate,\n selector: { matchLabels: labels },\n },\n omit(args, exposableWorkloadExtraArgs),\n ) as types.input.apps.v1.StatefulSetSpec,\n },\n {\n ...opts,\n parent: this,\n provider: await getProvider(args.cluster),\n },\n )\n })\n\n super(\n \"highstate:k8s:StatefulSet\",\n name,\n args,\n opts,\n\n output(args.cluster),\n statefulSet.metadata,\n statefulSet.spec,\n statefulSet.status,\n\n networkPolicy,\n service,\n httpRoute,\n )\n }\n}\n\nclass StatefulSetPatch extends StatefulSet {\n constructor(name: string, args: StatefulSetArgs, opts?: ComponentResourceOptions) {\n const { podSpec, networkPolicy, service, httpRoute } = getExposableWorkloadComponents(\n name,\n args,\n () => this,\n opts,\n )\n\n const statefulSet = output({ args, podSpec }).apply(async ({ args, podSpec }) => {\n return new apps.v1.StatefulSetPatch(\n name,\n {\n metadata: mapMetadata(args, name),\n spec: deepmerge(\n {\n template: {\n spec: podSpec,\n },\n },\n omit(args, exposableWorkloadExtraArgs),\n ) as types.input.apps.v1.StatefulSetSpec,\n },\n {\n ...opts,\n parent: this,\n provider: await getProvider(args.cluster),\n },\n )\n })\n\n super(\n \"highstate:k8s:StatefulSetPatch\",\n name,\n args,\n opts,\n\n output(args.cluster),\n statefulSet.metadata,\n statefulSet.spec,\n statefulSet.status,\n\n networkPolicy,\n service,\n httpRoute,\n )\n }\n}\n\nclass ExternalStatefulSet extends StatefulSet {\n constructor(\n name: string,\n id: Input<ResourceId>,\n cluster: Input<k8s.Cluster>,\n opts?: ComponentResourceOptions,\n ) {\n const statefulSet = output(id).apply(async id => {\n return apps.v1.StatefulSet.get(name, resourceIdToString(id), {\n ...opts,\n parent: this,\n provider: await getProvider(cluster),\n })\n })\n\n super(\n \"highstate:k8s:ExternalStatefulSet\",\n name,\n { namespace: output(id).namespace, cluster },\n opts,\n output(cluster),\n statefulSet.metadata,\n statefulSet.spec,\n statefulSet.status,\n\n output(undefined),\n output(undefined),\n output(undefined),\n )\n }\n}\n\nclass WrappedStatefulSet extends StatefulSet {\n constructor(\n name: string,\n statefulSet: Input<apps.v1.StatefulSet>,\n cluster: Input<k8s.Cluster>,\n opts?: ComponentResourceOptions,\n ) {\n super(\n \"highstate:k8s:WrappedStatefulSet\",\n name,\n { namespace: output(statefulSet).metadata.namespace, cluster },\n opts,\n\n output(cluster),\n output(statefulSet).metadata,\n output(statefulSet).spec,\n output(statefulSet).status,\n\n output(undefined),\n output(undefined),\n output(undefined),\n )\n }\n}\n"]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/deployment.ts"],"names":["args","podTemplate","podSpec","id"],"mappings":"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","file":"chunk-YWRJ4EZM.js","sourcesContent":["import type { k8s } from \"@highstate/library\"\nimport type { HttpRoute } from \"./gateway\"\nimport type { Service } from \"./service\"\nimport type { NetworkPolicy } from \"./network-policy\"\nimport { output, type ComponentResourceOptions, Output, type Input } from \"@highstate/pulumi\"\nimport { apps, types } from \"@pulumi/kubernetes\"\nimport { omit } from \"remeda\"\nimport { deepmerge } from \"deepmerge-ts\"\nimport {\n getProvider,\n mapMetadata,\n resourceIdToString,\n withPatchName,\n type ResourceId,\n} from \"./shared\"\nimport {\n exposableWorkloadExtraArgs,\n ExposableWorkload,\n type ExposableWorkloadArgs,\n getExposableWorkloadComponents,\n} from \"./workload\"\n\nexport type DeploymentArgs = Omit<ExposableWorkloadArgs, \"existing\"> &\n Omit<Partial<types.input.apps.v1.DeploymentSpec>, \"template\"> & {\n template?: {\n metadata?: types.input.meta.v1.ObjectMeta\n spec?: Partial<types.input.core.v1.PodSpec>\n }\n }\n\nexport type CreateOrGetDeploymentArgs = DeploymentArgs & {\n /**\n * The entity to use to determine the deployment to patch.\n */\n existing: Input<k8s.Deployment> | undefined\n}\n\nexport abstract class Deployment extends ExposableWorkload {\n protected constructor(\n type: string,\n name: string,\n args: ExposableWorkloadArgs,\n opts: ComponentResourceOptions | undefined,\n\n cluster: Output<k8s.Cluster>,\n metadata: Output<types.output.meta.v1.ObjectMeta>,\n\n /**\n * The spec of the underlying Kubernetes deployment.\n */\n readonly spec: Output<types.output.apps.v1.DeploymentSpec>,\n\n /**\n * The status of the underlying Kubernetes deployment.\n */\n readonly status: Output<types.output.apps.v1.DeploymentStatus>,\n\n networkPolicy: Output<NetworkPolicy | undefined>,\n\n service: Output<Service | undefined>,\n httpRoute: Output<HttpRoute | undefined>,\n ) {\n super(\n type,\n name,\n args,\n opts,\n \"deployment\",\n cluster,\n metadata,\n networkPolicy,\n service,\n httpRoute,\n )\n }\n\n /**\n * The Highstate deployment entity.\n */\n get entity(): Output<k8s.Deployment> {\n return output({\n type: \"k8s.deployment\",\n clusterId: this.cluster.id,\n metadata: this.metadata,\n service: this._service.apply(service => service?.entity),\n })\n }\n\n static create(name: string, args: DeploymentArgs, opts?: ComponentResourceOptions): Deployment {\n return new CreatedDeployment(name, args, opts)\n }\n\n static createOrPatch(\n name: string,\n args: CreateOrGetDeploymentArgs,\n opts?: ComponentResourceOptions,\n ): Deployment {\n if (!args.existing) {\n return new CreatedDeployment(name, args, opts)\n }\n\n return new DeploymentPatch(\n name,\n {\n ...args,\n name: withPatchName(\"deployment\", args.existing, args.cluster),\n namespace: output(args.existing).metadata.namespace,\n },\n opts,\n )\n }\n\n static patch(name: string, args: DeploymentArgs, opts?: ComponentResourceOptions): Deployment {\n return new DeploymentPatch(name, args, opts)\n }\n\n static createOrGet(\n name: string,\n args: CreateOrGetDeploymentArgs,\n opts?: ComponentResourceOptions,\n ): Deployment {\n if (!args.existing) {\n return new CreatedDeployment(name, args, opts)\n }\n\n return new ExternalDeployment(name, output(args.existing).metadata, args.cluster, opts)\n }\n\n static wrap(\n name: string,\n deployment: Input<apps.v1.Deployment>,\n cluster: Input<k8s.Cluster>,\n opts?: ComponentResourceOptions,\n ): Deployment {\n return new WrappedDeployment(name, deployment, cluster, opts)\n }\n}\n\nclass CreatedDeployment extends Deployment {\n constructor(name: string, args: DeploymentArgs, opts?: ComponentResourceOptions) {\n const { labels, podTemplate, networkPolicy, service, httpRoute } =\n getExposableWorkloadComponents(name, args, () => this, opts)\n\n const deployment = output({ args, podTemplate }).apply(async ({ args, podTemplate }) => {\n return new apps.v1.Deployment(\n name,\n {\n metadata: mapMetadata(args, name),\n spec: deepmerge(\n {\n template: podTemplate,\n selector: { matchLabels: labels },\n },\n omit(args, exposableWorkloadExtraArgs),\n ) as types.input.apps.v1.DeploymentSpec,\n },\n {\n ...opts,\n parent: this,\n provider: await getProvider(args.cluster),\n },\n )\n })\n\n super(\n \"highstate:k8s:Deployment\",\n name,\n args,\n opts,\n\n output(args.cluster),\n deployment.metadata,\n deployment.spec,\n deployment.status,\n\n networkPolicy,\n service,\n httpRoute,\n )\n }\n}\n\nclass DeploymentPatch extends Deployment {\n constructor(name: string, args: DeploymentArgs, opts?: ComponentResourceOptions) {\n const { podSpec, networkPolicy, service, httpRoute } = getExposableWorkloadComponents(\n name,\n args,\n () => this,\n opts,\n )\n\n const deployment = output({ args, podSpec }).apply(async ({ args, podSpec }) => {\n return new apps.v1.DeploymentPatch(\n name,\n {\n metadata: mapMetadata(args, name),\n spec: deepmerge(\n {\n template: {\n spec: podSpec,\n },\n },\n omit(args, exposableWorkloadExtraArgs),\n ) as types.input.apps.v1.DeploymentSpec,\n },\n {\n ...opts,\n parent: this,\n provider: await getProvider(args.cluster),\n },\n )\n })\n\n super(\n \"highstate:k8s:DeploymentPatch\",\n name,\n args,\n opts,\n\n output(args.cluster),\n deployment.metadata,\n deployment.spec,\n deployment.status,\n\n networkPolicy,\n service,\n httpRoute,\n )\n }\n}\n\nclass ExternalDeployment extends Deployment {\n constructor(\n name: string,\n id: Input<ResourceId>,\n cluster: Input<k8s.Cluster>,\n opts?: ComponentResourceOptions,\n ) {\n const deployment = output(id).apply(async id => {\n return apps.v1.Deployment.get(name, resourceIdToString(id), {\n ...opts,\n parent: this,\n provider: await getProvider(cluster),\n })\n })\n\n super(\n \"highstate:k8s:ExternalDeployment\",\n name,\n { namespace: output(id).namespace, cluster },\n opts,\n output(cluster),\n deployment.metadata,\n deployment.spec,\n deployment.status,\n\n output(undefined),\n output(undefined),\n output(undefined),\n )\n }\n}\n\nclass WrappedDeployment extends Deployment {\n constructor(\n name: string,\n deployment: Input<apps.v1.Deployment>,\n cluster: Input<k8s.Cluster>,\n opts?: ComponentResourceOptions,\n ) {\n super(\n \"highstate:k8s:WrappedDeployment\",\n name,\n { namespace: output(deployment).metadata.namespace, cluster },\n opts,\n\n output(cluster),\n output(deployment).metadata,\n output(deployment).spec,\n output(deployment).status,\n\n output(undefined),\n output(undefined),\n output(undefined),\n )\n }\n}\n"]}
|
1
|
+
{"version":3,"sources":["../src/deployment.ts"],"names":["args","podTemplate","podSpec","id"],"mappings":"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","file":"chunk-YWRJ4EZM.js","sourcesContent":["import type { k8s } from \"@highstate/library\"\nimport type { HttpRoute } from \"./gateway\"\nimport type { Service } from \"./service\"\nimport type { NetworkPolicy } from \"./network-policy\"\nimport { output, type ComponentResourceOptions, Output, type Input } from \"@highstate/pulumi\"\nimport { apps, types } from \"@pulumi/kubernetes\"\nimport { omit } from \"remeda\"\nimport { deepmerge } from \"deepmerge-ts\"\nimport {\n getProvider,\n mapMetadata,\n resourceIdToString,\n withPatchName,\n type ResourceId,\n} from \"./shared\"\nimport {\n exposableWorkloadExtraArgs,\n ExposableWorkload,\n type ExposableWorkloadArgs,\n getExposableWorkloadComponents,\n} from \"./workload\"\n\nexport type DeploymentArgs = Omit<ExposableWorkloadArgs, \"existing\"> &\n Omit<Partial<types.input.apps.v1.DeploymentSpec>, \"template\"> & {\n template?: {\n metadata?: types.input.meta.v1.ObjectMeta\n spec?: Partial<types.input.core.v1.PodSpec>\n }\n }\n\nexport type CreateOrGetDeploymentArgs = DeploymentArgs & {\n /**\n * The entity to use to determine the deployment to patch.\n */\n existing: Input<k8s.Deployment> | undefined\n}\n\nexport abstract class Deployment extends ExposableWorkload {\n protected constructor(\n type: string,\n name: string,\n args: ExposableWorkloadArgs,\n opts: ComponentResourceOptions | undefined,\n\n cluster: Output<k8s.Cluster>,\n metadata: Output<types.output.meta.v1.ObjectMeta>,\n\n /**\n * The spec of the underlying Kubernetes deployment.\n */\n readonly spec: Output<types.output.apps.v1.DeploymentSpec>,\n\n /**\n * The status of the underlying Kubernetes deployment.\n */\n readonly status: Output<types.output.apps.v1.DeploymentStatus>,\n\n networkPolicy: Output<NetworkPolicy | undefined>,\n\n service: Output<Service | undefined>,\n httpRoute: Output<HttpRoute | undefined>,\n ) {\n super(\n type,\n name,\n args,\n opts,\n \"deployment\",\n cluster,\n metadata,\n networkPolicy,\n service,\n httpRoute,\n )\n }\n\n /**\n * The Highstate deployment entity.\n */\n get entity(): Output<k8s.Deployment> {\n return output({\n type: \"k8s.deployment\",\n clusterId: this.cluster.id,\n metadata: this.metadata,\n service: this._service.apply(service => service?.entity),\n })\n }\n\n static create(name: string, args: DeploymentArgs, opts?: ComponentResourceOptions): Deployment {\n return new CreatedDeployment(name, args, opts)\n }\n\n static createOrPatch(\n name: string,\n args: CreateOrGetDeploymentArgs,\n opts?: ComponentResourceOptions,\n ): Deployment {\n if (!args.existing) {\n return new CreatedDeployment(name, args, opts)\n }\n\n return new DeploymentPatch(\n name,\n {\n ...args,\n name: withPatchName(\"deployment\", args.existing, args.cluster),\n namespace: output(args.existing).metadata.namespace,\n },\n opts,\n )\n }\n\n static patch(name: string, args: DeploymentArgs, opts?: ComponentResourceOptions): Deployment {\n return new DeploymentPatch(name, args, opts)\n }\n\n static createOrGet(\n name: string,\n args: CreateOrGetDeploymentArgs,\n opts?: ComponentResourceOptions,\n ): Deployment {\n if (!args.existing) {\n return new CreatedDeployment(name, args, opts)\n }\n\n return new ExternalDeployment(name, output(args.existing).metadata, args.cluster, opts)\n }\n\n static wrap(\n name: string,\n deployment: Input<apps.v1.Deployment>,\n cluster: Input<k8s.Cluster>,\n opts?: ComponentResourceOptions,\n ): Deployment {\n return new WrappedDeployment(name, deployment, cluster, opts)\n }\n}\n\nclass CreatedDeployment extends Deployment {\n constructor(name: string, args: DeploymentArgs, opts?: ComponentResourceOptions) {\n const { labels, podTemplate, networkPolicy, service, httpRoute } =\n getExposableWorkloadComponents(name, args, () => this, opts)\n\n const deployment = output({ args, podTemplate }).apply(async ({ args, podTemplate }) => {\n return new apps.v1.Deployment(\n name,\n {\n metadata: mapMetadata(args, name),\n spec: deepmerge(\n {\n template: podTemplate,\n selector: { matchLabels: labels },\n },\n omit(args, exposableWorkloadExtraArgs),\n ) as types.input.apps.v1.DeploymentSpec,\n },\n {\n ...opts,\n parent: this,\n provider: await getProvider(args.cluster),\n },\n )\n })\n\n super(\n \"highstate:k8s:Deployment\",\n name,\n args,\n opts,\n\n output(args.cluster),\n deployment.metadata,\n deployment.spec,\n deployment.status,\n\n networkPolicy,\n service,\n httpRoute,\n )\n }\n}\n\nclass DeploymentPatch extends Deployment {\n constructor(name: string, args: DeploymentArgs, opts?: ComponentResourceOptions) {\n const { podSpec, networkPolicy, service, httpRoute } = getExposableWorkloadComponents(\n name,\n args,\n () => this,\n opts,\n )\n\n const deployment = output({ args, podSpec }).apply(async ({ args, podSpec }) => {\n return new apps.v1.DeploymentPatch(\n name,\n {\n metadata: mapMetadata(args, name),\n spec: deepmerge(\n {\n template: {\n spec: podSpec,\n },\n },\n omit(args, exposableWorkloadExtraArgs),\n ) as types.input.apps.v1.DeploymentSpec,\n },\n {\n ...opts,\n parent: this,\n provider: await getProvider(args.cluster),\n },\n )\n })\n\n super(\n \"highstate:k8s:DeploymentPatch\",\n name,\n args,\n opts,\n\n output(args.cluster),\n deployment.metadata,\n deployment.spec,\n deployment.status,\n\n networkPolicy,\n service,\n httpRoute,\n )\n }\n}\n\nclass ExternalDeployment extends Deployment {\n constructor(\n name: string,\n id: Input<ResourceId>,\n cluster: Input<k8s.Cluster>,\n opts?: ComponentResourceOptions,\n ) {\n const deployment = output(id).apply(async id => {\n return apps.v1.Deployment.get(name, resourceIdToString(id), {\n ...opts,\n parent: this,\n provider: await getProvider(cluster),\n })\n })\n\n super(\n \"highstate:k8s:ExternalDeployment\",\n name,\n { namespace: output(id).namespace, cluster },\n opts,\n output(cluster),\n deployment.metadata,\n deployment.spec,\n deployment.status,\n\n output(undefined),\n output(undefined),\n output(undefined),\n )\n }\n}\n\nclass WrappedDeployment extends Deployment {\n constructor(\n name: string,\n deployment: Input<apps.v1.Deployment>,\n cluster: Input<k8s.Cluster>,\n opts?: ComponentResourceOptions,\n ) {\n super(\n \"highstate:k8s:WrappedDeployment\",\n name,\n { namespace: output(deployment).metadata.namespace, cluster },\n opts,\n\n output(cluster),\n output(deployment).metadata,\n output(deployment).spec,\n output(deployment).status,\n\n output(undefined),\n output(undefined),\n output(undefined),\n )\n }\n}\n"]}
|
@@ -1,12 +1,12 @@
|
|
1
1
|
{
|
2
2
|
"sourceHashes": {
|
3
3
|
"./dist/index.js": 2212294583,
|
4
|
-
"./dist/units/access-point/index.js":
|
5
|
-
"./dist/units/cert-manager/index.js":
|
6
|
-
"./dist/units/cluster-patch/index.js":
|
7
|
-
"./dist/units/cluster-dns/index.js":
|
8
|
-
"./dist/units/dns01-issuer/index.js":
|
9
|
-
"./dist/units/existing-cluster/index.js":
|
10
|
-
"./dist/units/gateway-api/index.js":
|
4
|
+
"./dist/units/access-point/index.js": 567437648,
|
5
|
+
"./dist/units/cert-manager/index.js": 2089212180,
|
6
|
+
"./dist/units/cluster-patch/index.js": 919840588,
|
7
|
+
"./dist/units/cluster-dns/index.js": 1623009514,
|
8
|
+
"./dist/units/dns01-issuer/index.js": 1377009716,
|
9
|
+
"./dist/units/existing-cluster/index.js": 3539273236,
|
10
|
+
"./dist/units/gateway-api/index.js": 3300268618
|
11
11
|
}
|
12
12
|
}
|
package/dist/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/access-point.ts","../src/scripting/environment.ts","../src/scripting/bundle.ts","../src/scripting/container.ts","../src/job.ts","../src/cron-job.ts"],"names":["args","gateway","output","normalize","scriptEnvironment","hasFunctionScripts","options","ComponentResource","podTemplate","batch","mergeDeep","omit"],"mappings":"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","file":"index.js","sourcesContent":["import type { k8s } from \"@highstate/library\"\nimport type { Provider } from \"@pulumi/kubernetes\"\nimport type { Namespace } from \"./namespace\"\nimport { DnsRecordSet, filterEndpoints, l3EndpointToString } from \"@highstate/common\"\nimport { gateway } from \"@highstate/gateway-api\"\nimport {\n normalize,\n Output,\n output,\n toPromise,\n type Input,\n type InputArray,\n} from \"@highstate/pulumi\"\nimport { NetworkPolicy } from \"./network-policy\"\nimport { getProvider, mapNamespaceLikeToNamespaceName } from \"./shared\"\nimport { isFromCluster } from \"./service\"\n\nexport type UseAccessPointResult = {\n /**\n * The gateway instance created according to the access point.\n */\n gateway: gateway.v1.Gateway\n\n /**\n * The DNS record sets associated created according to the access point and gateway.\n */\n dnsRecordSets: DnsRecordSet[]\n\n /**\n * The network policies associated with the access point.\n */\n networkPolicies: NetworkPolicy[]\n}\n\nexport type UseAccessPointArgs = Omit<CreateGatewayArgs, \"gateway\"> & {\n accessPoint: Input<k8s.AccessPoint>\n}\n\nexport function useAccessPoint(args: UseAccessPointArgs): Promise<UseAccessPointResult> {\n const result = output({ args, namespaceName: output(args.namespace).metadata.name }).apply(\n ({ args, namespaceName }) => {\n if (args.accessPoint.clusterId !== args.cluster.id) {\n throw new Error(\n \"The provided Kubernetes cluster is different from the one where the access point is deployed.\",\n )\n }\n\n const gateway = createGateway({\n ...args,\n annotations: {\n \"cert-manager.io/cluster-issuer\": args.accessPoint.tlsIssuer.clusterIssuerName,\n },\n gateway: args.accessPoint.gateway,\n })\n\n const dnsRecordSets = normalize(args.fqdn, args.fqdns).flatMap(fqdn => {\n return DnsRecordSet.create(fqdn, {\n providers: args.accessPoint.dnsProviders,\n values: filterEndpoints(\n args.accessPoint.gateway.endpoints.filter(endpoint => endpoint.type !== \"hostname\"),\n ),\n })\n })\n\n const networkPolicies: Output<NetworkPolicy>[] = [\n NetworkPolicy.create(\n `allow-ingress-from-${l3EndpointToString(args.accessPoint.gateway.endpoints[0])}`,\n {\n namespace: args.namespace,\n cluster: args.cluster,\n\n description: `Allow ingress traffic from the gateway at \"${l3EndpointToString(args.accessPoint.gateway.endpoints[0])}\".`,\n\n ingressRule: {\n fromEndpoints: args.accessPoint.gateway.endpoints,\n },\n },\n { provider: args.provider },\n ),\n ]\n\n if (isFromCluster(args.accessPoint.gateway.endpoints[0], args.cluster)) {\n networkPolicies.push(\n NetworkPolicy.create(\n `allow-egress-to-${namespaceName}`,\n {\n namespace: args.accessPoint.gateway.endpoints[0].metadata.k8sService.namespace,\n cluster: args.cluster,\n\n selector: args.accessPoint.gateway.endpoints[0].metadata.k8sService.selector,\n\n description: `Allow egress traffic to the namespace \"${namespaceName}\".`,\n\n egressRule: {\n toNamespace: args.namespace,\n },\n },\n { provider: args.provider },\n ),\n )\n }\n\n return output({\n gateway,\n dnsRecordSets,\n networkPolicies,\n })\n },\n )\n\n return toPromise(result)\n}\n\nexport type StandardAccessPointArgs = {\n appName: string\n fqdn: string\n}\n\nexport type StandardAccessPointInputs = {\n accessPoint: Output<k8s.AccessPoint>\n k8sCluster: Output<k8s.Cluster>\n}\n\nexport async function useStandardAcessPoint(\n namespace: Namespace,\n args: StandardAccessPointArgs,\n inputs: StandardAccessPointInputs,\n): Promise<UseAccessPointResult> {\n return await useAccessPoint({\n name: args.appName,\n namespace,\n\n fqdn: args.fqdn,\n\n accessPoint: inputs.accessPoint,\n cluster: inputs.k8sCluster,\n provider: await getProvider(inputs.k8sCluster),\n })\n}\n\nexport type CreateGatewayArgs = {\n name: string\n namespace: Input<Namespace>\n annotations?: Input<Record<string, string>>\n\n fqdn?: Input<string>\n fqdns?: InputArray<string>\n\n gateway: Input<k8s.Gateway>\n cluster: Input<k8s.Cluster>\n provider: Provider\n}\n\nexport function createGateway(args: CreateGatewayArgs): Output<gateway.v1.Gateway> {\n return output(args).apply(args => {\n if (args.cluster.id !== args.gateway.clusterId) {\n throw new Error(\n \"The provided Kubernetes cluster is different from the one where the gateway controller is deployed.\",\n )\n }\n\n return new gateway.v1.Gateway(\n args.name,\n {\n metadata: {\n name: args.name,\n namespace: mapNamespaceLikeToNamespaceName(args.namespace),\n annotations: args.annotations,\n },\n spec: {\n gatewayClassName: output(args.gateway).gatewayClassName,\n listeners: normalize(args.fqdn, args.fqdns).map(fqdn => {\n const normalizedName = fqdn.replace(/\\*/g, \"wildcard\")\n\n return {\n name: `https-${normalizedName}`,\n port: output(args.gateway).httpsListenerPort,\n protocol: \"HTTPS\",\n hostname: fqdn,\n tls: {\n mode: \"Terminate\",\n certificateRefs: [{ name: normalizedName }],\n },\n }\n }),\n },\n },\n { provider: args.provider, deletedWith: args.namespace },\n )\n })\n}\n","import type { Input, InputArray, InputMap } from \"@highstate/pulumi\"\nimport type { ContainerEnvironment, ContainerVolumeMount, WorkloadVolume } from \"../container\"\nimport type { InputL34Endpoint } from \"@highstate/common\"\n\nexport type ScriptDistribution = \"alpine\" | \"ubuntu\"\n\nexport type DistributionEnvironment = {\n /**\n * The image that should be used for the distribution.\n */\n image?: Input<string>\n\n /**\n * The utility packages that should be installed before running \"preInstallScripts\".\n *\n * Useful for installing tools like `curl` to install additional repositories.\n */\n preInstallPackages?: InputArray<string>\n\n /**\n * The pre-install scripts that should be run before installing packages.\n * Typically, these scripts are used to install additional repositories.\n */\n preInstallScripts?: InputMap<string>\n\n /**\n * The packages that are available in the environment.\n */\n packages?: InputArray<string>\n\n /**\n * The endpoint which the script is allowed to access scoped to the distribution.\n *\n * Typically, this is used to allow access to the package manager.\n *\n * Will be used to generate a network policy.\n */\n allowedEndpoints?: InputArray<InputL34Endpoint>\n}\n\nexport type ScriptProgram = () => unknown\n\nexport type ScriptEnvironment = {\n [distribution in ScriptDistribution]?: DistributionEnvironment\n} & {\n /**\n * The setup scripts that should be run before the script.\n */\n setupScripts?: InputMap<string>\n\n /**\n * The cleanup scripts that should be run after the script.\n */\n cleanupScripts?: InputMap<string>\n\n /**\n * The arbitrary files available in the environment including scripts.\n */\n files?: InputMap<string | ScriptProgram>\n\n /**\n * The volumes that should be defined in the environment.\n */\n volumes?: InputArray<WorkloadVolume>\n\n /**\n * The volume mounts that should be defined in the environment.\n */\n volumeMounts?: InputArray<ContainerVolumeMount>\n\n /**\n * The environment variables that should be defined in the environment.\n */\n environment?: Input<ContainerEnvironment>\n\n /**\n * The endpoint which the script is allowed to access.\n *\n * Will be used to generate a network policy.\n */\n allowedEndpoints?: InputArray<InputL34Endpoint>\n}\n\nexport type ResolvedScriptEnvironment = Omit<Required<ScriptEnvironment>, ScriptDistribution> & {\n [distribution in ScriptDistribution]: Required<DistributionEnvironment>\n}\n\nconst emptyDistributionEnvironment = {\n preInstallPackages: [],\n preInstallScripts: {},\n packages: [],\n}\n\nexport const emptyScriptEnvironment: ResolvedScriptEnvironment = {\n alpine: {\n ...emptyDistributionEnvironment,\n image: \"alpine@sha256:a8560b36e8b8210634f77d9f7f9efd7ffa463e380b75e2e74aff4511df3ef88c\",\n allowedEndpoints: [\n //\n \"tcp://dl-cdn.alpinelinux.org:443\",\n \"tcp://dl-cdn.alpinelinux.org:80\",\n ],\n },\n\n ubuntu: {\n ...emptyDistributionEnvironment,\n image: \"ubuntu@sha256:72297848456d5d37d1262630108ab308d3e9ec7ed1c3286a32fe09856619a782\",\n allowedEndpoints: [\n //\n \"tcp://archive.ubuntu.com:80\",\n \"tcp://archive.ubuntu.com:443\",\n \"tcp://security.ubuntu.com:80\",\n \"tcp://security.ubuntu.com:443\",\n ],\n },\n\n setupScripts: {},\n cleanupScripts: {},\n files: {},\n volumes: [],\n volumeMounts: [],\n environment: {},\n allowedEndpoints: [],\n}\n\nexport const functionScriptImages: Record<ScriptDistribution, string> = {\n alpine: \"oven/bun@sha256:6b14922b0885c3890cdb0b396090af1da486ba941df5ee94391eef64f7113c61\",\n ubuntu: \"oven/bun@sha256:66b431441dc4c36d7e8164bfc61e6348ec1d7ce2862fc3a29f5dc9856e8205e4\",\n}\n","import type { ContainerEnvironment, ContainerVolumeMount, WorkloadVolume } from \"../container\"\nimport type { network } from \"@highstate/library\"\nimport { apply, normalize, type InputArray } from \"@highstate/pulumi\"\nimport {\n ComponentResource,\n output,\n type ComponentResourceOptions,\n type Input,\n type Output,\n type Unwrap,\n} from \"@pulumi/pulumi\"\nimport { mapValues, omitBy, pipe } from \"remeda\"\nimport { deepmerge } from \"deepmerge-ts\"\nimport { readPackageJSON } from \"pkg-types\"\nimport { text, trimIndentation } from \"@highstate/contract\"\nimport { parseL34Endpoint } from \"@highstate/common\"\nimport { serializeFunction } from \"@pulumi/pulumi/runtime/index.js\"\nimport { type CommonArgs } from \"../shared\"\nimport { ConfigMap } from \"../config-map\"\nimport {\n emptyScriptEnvironment,\n functionScriptImages,\n type ResolvedScriptEnvironment,\n type ScriptDistribution,\n type ScriptEnvironment,\n} from \"./environment\"\n\nexport type ScriptBundleArgs = CommonArgs & {\n /**\n * The environment to bundle the scripts from.\n */\n environment?: Input<ScriptEnvironment>\n\n /**\n * The environments to bundle the scripts from.\n */\n environments?: InputArray<ScriptEnvironment>\n\n /**\n * The distribution to use for the scripts.\n */\n distribution: ScriptDistribution\n}\n\nexport class ScriptBundle extends ComponentResource {\n /**\n * The config map containing the scripts.\n */\n readonly configMap: Output<ConfigMap>\n\n /**\n * The volumes that should be included in the workload.\n */\n readonly volumes: Output<WorkloadVolume[]>\n\n /**\n * The volume mounts that should be defined in the container.\n */\n readonly volumeMounts: Output<ContainerVolumeMount[]>\n\n /**\n * The environment variables that should be defined in the container.\n */\n readonly environment: Output<ContainerEnvironment>\n\n /**\n * The image to use for the scripts.\n */\n readonly image: Output<string>\n\n /**\n * The distribution to use for the scripts.\n */\n readonly distribution: ScriptDistribution\n\n /**\n * The list of endpoints that the script is allowed to access.\n */\n readonly allowedEndpoints: Output<network.L34Endpoint[]>\n\n constructor(name: string, args: ScriptBundleArgs, opts?: ComponentResourceOptions) {\n super(\"highstate:k8s:ScriptBundle\", name, args, opts)\n\n const scriptEnvironment = pipe(\n output(args),\n apply(args => normalize(args.environment, args.environments)),\n apply(args => deepmerge(emptyScriptEnvironment, ...args)),\n ) as Output<Unwrap<ResolvedScriptEnvironment>>\n\n const hasFunctionScripts = scriptEnvironment.apply(scriptEnvironment => {\n return Object.values(scriptEnvironment.files).some(file => typeof file === \"function\")\n })\n\n this.distribution = args.distribution\n this.environment = scriptEnvironment.environment\n\n this.image = hasFunctionScripts.apply(hasFunctionScripts =>\n output(\n hasFunctionScripts\n ? functionScriptImages[args.distribution]\n : scriptEnvironment[args.distribution].image,\n ),\n )\n\n this.allowedEndpoints = output({ scriptEnvironment, hasFunctionScripts }).apply(\n ({ scriptEnvironment, hasFunctionScripts }) => {\n const allowedEndpoints = [\n ...scriptEnvironment.allowedEndpoints,\n ...scriptEnvironment[args.distribution].allowedEndpoints,\n ]\n\n if (hasFunctionScripts) {\n allowedEndpoints.push(\"tcp://registry.npmjs.org:443\")\n }\n\n return allowedEndpoints.map(parseL34Endpoint)\n },\n )\n\n this.configMap = output({ scriptEnvironment, args }).apply(({ scriptEnvironment, args }) => {\n return ConfigMap.create(\n name,\n {\n cluster: args.cluster,\n namespace: args.namespace,\n\n data: createScriptData(this.distribution, scriptEnvironment),\n },\n { ...opts, parent: this },\n )\n })\n\n this.volumes = output({ hasFunctionScripts, volumes: scriptEnvironment.volumes }).apply(\n ({ hasFunctionScripts, volumes }) => {\n return [\n ...volumes,\n {\n name: this.configMap.metadata.name,\n\n configMap: {\n name: this.configMap.metadata.name,\n defaultMode: 0o550, // read and execute permissions\n },\n },\n ...(hasFunctionScripts ? [{ name: \"node-modules\", emptyDir: {} }] : []),\n ]\n },\n )\n\n this.volumeMounts = output({\n hasFunctionScripts,\n volumeMounts: scriptEnvironment.volumeMounts,\n }).apply(({ hasFunctionScripts, volumeMounts }) => {\n return [\n ...volumeMounts,\n {\n volume: this.configMap,\n mountPath: \"/scripts\",\n },\n ...(hasFunctionScripts\n ? [{ name: \"node-modules\", mountPath: \"/scripts/node_modules\" }]\n : []),\n ]\n })\n\n this.registerOutputs({\n configMap: this.configMap,\n volumes: this.volumes,\n volumeMounts: this.volumeMounts,\n environment: this.environment,\n distribution: this.distribution,\n allowedEndpoints: this.allowedEndpoints,\n image: this.image,\n })\n }\n}\n\nfunction stripWorkspacePrefix(value: string): string {\n if (value.startsWith(\"workspace:\")) {\n return value.replace(\"workspace:\", \"\")\n }\n\n return value\n}\n\nasync function createScriptData(\n distribution: ScriptDistribution,\n environment: Unwrap<ResolvedScriptEnvironment>,\n): Promise<Record<string, string>> {\n const scriptData: Record<string, string> = {}\n const actions: string[] = []\n\n const distributionEnvironment = environment[distribution]\n const setupScripts = { ...environment.setupScripts }\n\n let hasFunctionScripts = false\n\n for (const key in environment.files) {\n if (typeof environment.files[key] === \"function\") {\n const serialized = await serializeFunction(environment.files[key])\n\n scriptData[key] = text`\n #!/usr/local/bin/bun\n \n ${serialized.text}\n\n exports.${serialized.exportName}()\n `\n\n hasFunctionScripts = true\n } else {\n scriptData[key] = environment.files[key]\n }\n }\n\n if (hasFunctionScripts) {\n const packageJson = await readPackageJSON()\n\n packageJson.dependencies = omitBy(\n mapValues(packageJson.dependencies ?? {}, stripWorkspacePrefix),\n (_, key) => key.startsWith(\"@highstate/\"),\n )\n\n packageJson.devDependencies = omitBy(\n mapValues(packageJson.devDependencies ?? {}, stripWorkspacePrefix),\n (_, key) => key.startsWith(\"@highstate/\"),\n )\n\n scriptData[\"package.json\"] = JSON.stringify(packageJson, null, 2)\n\n setupScripts[\"resolve-dependencies.sh\"] = text`\n #!/usr/local/bin/bun\n set -e\n\n cd /scripts\n bun install --production\n `\n }\n\n if (distributionEnvironment.preInstallPackages.length > 0) {\n scriptData[\"pre-install-packages.sh\"] = getInstallPackagesScript(\n distribution,\n distributionEnvironment.preInstallPackages,\n )\n\n actions.push(`\n echo \"+ Installing pre-install packages...\"\n /scripts/pre-install-packages.sh\n echo \"+ Pre-install packages installed successfully\"\n `)\n }\n\n if (Object.keys(distributionEnvironment.preInstallScripts).length > 0) {\n for (const key in distributionEnvironment.preInstallScripts) {\n scriptData[`pre-install-${key}`] = distributionEnvironment.preInstallScripts[key]\n\n actions.push(`\n echo \"+ Running pre-install script '${key}'...\"\n /scripts/pre-install-${key}\n echo \"+ Pre-install script '${key}'... Done\"\n `)\n }\n }\n\n if (distributionEnvironment.packages.length > 0) {\n scriptData[\"install-packages.sh\"] = getInstallPackagesScript(\n distribution,\n distributionEnvironment.packages,\n )\n\n actions.push(`\n echo \"+ Installing packages...\"\n /scripts/install-packages.sh\n echo \"+ Packages installed successfully\"\n `)\n }\n\n if (Object.keys(setupScripts).length > 0) {\n for (const key in setupScripts) {\n scriptData[`setup-${key}`] = setupScripts[key]\n\n actions.push(`\n echo \"+ Running setup script '${key}'...\"\n /scripts/setup-${key}\n echo \"+ Setup script '${key}'... Done\"\n `)\n }\n }\n\n if (Object.keys(environment.cleanupScripts).length > 0) {\n const cleanupActions: string[] = []\n\n for (const key in environment.cleanupScripts) {\n scriptData[`cleanup-${key}`] = environment.cleanupScripts[key]\n\n cleanupActions.push(`\n echo \"+ Running cleanup script '${key}'...\"\n /scripts/cleanup-${key}\n echo \"+ Cleanup script '${key}'... Done\"\n `)\n }\n\n actions.push(`\n function cleanup() {\n ${cleanupActions.map(s => s.trim()).join(\"\\n\\n\")}\n }\n\n trap cleanup EXIT\n trap cleanup SIGTERM\n `)\n }\n\n scriptData[\"entrypoint.sh\"] = trimIndentation(`\n #!/bin/sh\n set -e\n\n if [ -z \"$1\" ]; then\n echo \"Usage: entrypoint.sh <main script> [args...]\"\n exit 1\n fi\n\n ${actions.map(s => s.trim()).join(\"\\n\\n\")}\n\n echo \"+ Running main script...\"\n $@\n echo \"+ Main script completed\"\n `)\n\n return scriptData\n}\n\nfunction getInstallPackagesScript(distribution: ScriptDistribution, packages: string[]): string {\n if (distribution === \"alpine\") {\n return text`\n #!/bin/sh\n set -e\n\n apk add --no-cache ${packages.join(\" \")}\n `\n } else {\n return text`\n #!/bin/sh\n set -e\n\n apt-get update\n apt-get install -y ${packages.join(\" \")}\n `\n }\n}\n","import type { Container } from \"../container\"\nimport type { ScriptBundle } from \"./bundle\"\nimport { merge } from \"remeda\"\nimport { Output, output, type Input } from \"@pulumi/pulumi\"\n\nexport type ScriptContainer = Container & {\n /**\n * The script bundle to use.\n */\n bundle: Input<ScriptBundle>\n\n /**\n * The name of the main script to run.\n * The script must be available in the bundle.\n */\n main: Input<string>\n}\n\n/**\n * Creates a spec for a container that runs a script.\n * This spec can be used to create a complete workload or an init container.\n *\n * @param options The options to create the container spec.\n * @returns The container spec.\n */\nexport function createScriptContainer(options: ScriptContainer): Output<Container> {\n const bundle = output(options.bundle)\n\n return output({\n options,\n image: bundle.image,\n volumeMounts: bundle.volumeMounts,\n volumes: bundle.volumes,\n environment: bundle.environment,\n allowedEndpoints: bundle.allowedEndpoints,\n }).apply(({ options, image, volumeMounts, volumes, environment, allowedEndpoints }) => {\n return {\n image,\n command: [\"/scripts/entrypoint.sh\", `/scripts/${options.main}`],\n\n ...options,\n\n volumeMounts: [...volumeMounts, ...(options.volumeMounts ?? [])],\n volumes: [...volumes, ...(options.volumes ?? [])],\n environment: merge(environment, options.environment),\n allowedEndpoints: [...allowedEndpoints, ...(options.allowedEndpoints ?? [])],\n } as Container\n })\n}\n","import { batch, type types } from \"@pulumi/kubernetes\"\nimport { ComponentResource, Output, output, type ComponentResourceOptions } from \"@highstate/pulumi\"\nimport { mergeDeep, omit } from \"remeda\"\nimport { commonExtraArgs, getProvider, mapMetadata } from \"./shared\"\nimport { getWorkloadComponents, type WorkloadArgs } from \"./workload\"\n\nexport type JobArgs = WorkloadArgs &\n Omit<Partial<types.input.batch.v1.JobSpec>, \"template\"> & {\n template?: {\n metadata?: types.input.meta.v1.ObjectMeta\n spec?: Partial<types.input.core.v1.PodSpec>\n }\n }\n\nconst jobExtraArgs = [...commonExtraArgs, \"container\", \"containers\"] as const\n\nexport class Job extends ComponentResource {\n /**\n * The underlying Kubernetes job.\n */\n public readonly job: Output<batch.v1.Job>\n\n constructor(name: string, args: JobArgs, opts: ComponentResourceOptions) {\n super(\"highstate:k8s:Job\", name, args, opts)\n\n const { podTemplate } = getWorkloadComponents(name, args, () => this, opts)\n\n this.job = output({ args, podTemplate }).apply(async ({ args, podTemplate }) => {\n return new batch.v1.Job(\n name,\n {\n metadata: mapMetadata(args, name),\n spec: mergeDeep(\n {\n template: mergeDeep(\n {\n spec: {\n restartPolicy: \"Never\",\n },\n },\n podTemplate,\n ),\n } satisfies types.input.batch.v1.JobSpec,\n omit(args, jobExtraArgs) as types.input.batch.v1.JobSpec,\n ),\n },\n {\n ...opts,\n parent: this,\n provider: await getProvider(args.cluster),\n },\n )\n })\n }\n}\n","import type { RequiredKeys } from \"@highstate/contract\"\nimport { batch, type types } from \"@pulumi/kubernetes\"\nimport { ComponentResource, Output, output, type ComponentResourceOptions } from \"@highstate/pulumi\"\nimport { mergeDeep, omit } from \"remeda\"\nimport { commonExtraArgs, getProvider, mapMetadata } from \"./shared\"\nimport { getWorkloadComponents, type WorkloadArgs } from \"./workload\"\n\nexport type CronJobArgs = WorkloadArgs &\n Omit<RequiredKeys<Partial<types.input.batch.v1.CronJobSpec>, \"schedule\">, \"jobTemplate\"> & {\n jobTemplate?: {\n metadata?: types.input.meta.v1.ObjectMeta\n spec?: Omit<types.input.batch.v1.JobSpec, \"template\"> & {\n template?: {\n metadata?: types.input.meta.v1.ObjectMeta\n spec?: Partial<types.input.core.v1.PodSpec>\n }\n }\n }\n }\n\nconst cronJobExtraArgs = [...commonExtraArgs, \"container\", \"containers\"] as const\n\nexport class CronJob extends ComponentResource {\n /**\n * The underlying Kubernetes job.\n */\n public readonly cronJob: Output<batch.v1.CronJob>\n\n constructor(name: string, args: CronJobArgs, opts: ComponentResourceOptions) {\n super(\"highstate:k8s:CronJob\", name, args, opts)\n\n const { podTemplate } = getWorkloadComponents(name, args, () => this, opts)\n\n this.cronJob = output({ args, podTemplate }).apply(async ({ args, podTemplate }) => {\n return new batch.v1.CronJob(\n name,\n {\n metadata: mapMetadata(args, name),\n\n spec: mergeDeep(\n {\n jobTemplate: {\n spec: {\n template: mergeDeep(\n {\n spec: {\n restartPolicy: \"Never\",\n },\n },\n podTemplate,\n ),\n },\n },\n\n schedule: args.schedule,\n } satisfies types.input.batch.v1.CronJobSpec,\n omit(args, cronJobExtraArgs) as types.input.batch.v1.CronJobSpec,\n ),\n },\n {\n ...opts,\n parent: this,\n provider: await getProvider(args.cluster),\n },\n )\n })\n }\n}\n"]}
|
1
|
+
{"version":3,"sources":["../src/access-point.ts","../src/scripting/environment.ts","../src/scripting/bundle.ts","../src/scripting/container.ts","../src/job.ts","../src/cron-job.ts"],"names":["args","gateway","output","normalize","scriptEnvironment","hasFunctionScripts","options","ComponentResource","podTemplate","batch","mergeDeep","omit"],"mappings":"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","file":"index.js","sourcesContent":["import type { k8s } from \"@highstate/library\"\nimport type { Provider } from \"@pulumi/kubernetes\"\nimport type { Namespace } from \"./namespace\"\nimport { DnsRecordSet, filterEndpoints, l3EndpointToString } from \"@highstate/common\"\nimport { gateway } from \"@highstate/gateway-api\"\nimport {\n normalize,\n Output,\n output,\n toPromise,\n type Input,\n type InputArray,\n} from \"@highstate/pulumi\"\nimport { NetworkPolicy } from \"./network-policy\"\nimport { getProvider, mapNamespaceLikeToNamespaceName } from \"./shared\"\nimport { isFromCluster } from \"./service\"\n\nexport type UseAccessPointResult = {\n /**\n * The gateway instance created according to the access point.\n */\n gateway: gateway.v1.Gateway\n\n /**\n * The DNS record sets associated created according to the access point and gateway.\n */\n dnsRecordSets: DnsRecordSet[]\n\n /**\n * The network policies associated with the access point.\n */\n networkPolicies: NetworkPolicy[]\n}\n\nexport type UseAccessPointArgs = Omit<CreateGatewayArgs, \"gateway\"> & {\n accessPoint: Input<k8s.AccessPoint>\n}\n\nexport function useAccessPoint(args: UseAccessPointArgs): Promise<UseAccessPointResult> {\n const result = output({ args, namespaceName: output(args.namespace).metadata.name }).apply(\n ({ args, namespaceName }) => {\n if (args.accessPoint.clusterId !== args.cluster.id) {\n throw new Error(\n \"The provided Kubernetes cluster is different from the one where the access point is deployed.\",\n )\n }\n\n const gateway = createGateway({\n ...args,\n annotations: {\n \"cert-manager.io/cluster-issuer\": args.accessPoint.tlsIssuer.clusterIssuerName,\n },\n gateway: args.accessPoint.gateway,\n })\n\n const dnsRecordSets = normalize(args.fqdn, args.fqdns).flatMap(fqdn => {\n return DnsRecordSet.create(fqdn, {\n providers: args.accessPoint.dnsProviders,\n values: filterEndpoints(\n args.accessPoint.gateway.endpoints.filter(endpoint => endpoint.type !== \"hostname\"),\n ),\n })\n })\n\n const networkPolicies: Output<NetworkPolicy>[] = [\n NetworkPolicy.create(\n `allow-ingress-from-${l3EndpointToString(args.accessPoint.gateway.endpoints[0])}`,\n {\n namespace: args.namespace,\n cluster: args.cluster,\n\n description: `Allow ingress traffic from the gateway at \"${l3EndpointToString(args.accessPoint.gateway.endpoints[0])}\".`,\n\n ingressRule: {\n fromEndpoints: args.accessPoint.gateway.endpoints,\n },\n },\n { provider: args.provider },\n ),\n ]\n\n if (isFromCluster(args.accessPoint.gateway.endpoints[0], args.cluster)) {\n networkPolicies.push(\n NetworkPolicy.create(\n `allow-egress-to-${namespaceName}`,\n {\n namespace: args.accessPoint.gateway.endpoints[0].metadata.k8sService.namespace,\n cluster: args.cluster,\n\n selector: args.accessPoint.gateway.endpoints[0].metadata.k8sService.selector,\n\n description: `Allow egress traffic to the namespace \"${namespaceName}\".`,\n\n egressRule: {\n toNamespace: args.namespace,\n },\n },\n { provider: args.provider },\n ),\n )\n }\n\n return output({\n gateway,\n dnsRecordSets,\n networkPolicies,\n })\n },\n )\n\n return toPromise(result)\n}\n\nexport type StandardAccessPointArgs = {\n appName: string\n fqdn: string\n}\n\nexport type StandardAccessPointInputs = {\n accessPoint: Output<k8s.AccessPoint>\n k8sCluster: Output<k8s.Cluster>\n}\n\nexport async function useStandardAcessPoint(\n namespace: Namespace,\n args: StandardAccessPointArgs,\n inputs: StandardAccessPointInputs,\n): Promise<UseAccessPointResult> {\n return await useAccessPoint({\n name: args.appName,\n namespace,\n\n fqdn: args.fqdn,\n\n accessPoint: inputs.accessPoint,\n cluster: inputs.k8sCluster,\n provider: await getProvider(inputs.k8sCluster),\n })\n}\n\nexport type CreateGatewayArgs = {\n name: string\n namespace: Input<Namespace>\n annotations?: Input<Record<string, string>>\n\n fqdn?: Input<string>\n fqdns?: InputArray<string>\n\n gateway: Input<k8s.Gateway>\n cluster: Input<k8s.Cluster>\n provider: Provider\n}\n\nexport function createGateway(args: CreateGatewayArgs): Output<gateway.v1.Gateway> {\n return output(args).apply(args => {\n if (args.cluster.id !== args.gateway.clusterId) {\n throw new Error(\n \"The provided Kubernetes cluster is different from the one where the gateway controller is deployed.\",\n )\n }\n\n return new gateway.v1.Gateway(\n args.name,\n {\n metadata: {\n name: args.name,\n namespace: mapNamespaceLikeToNamespaceName(args.namespace),\n annotations: args.annotations,\n },\n spec: {\n gatewayClassName: output(args.gateway).gatewayClassName,\n listeners: normalize(args.fqdn, args.fqdns).map(fqdn => {\n const normalizedName = fqdn.replace(/\\*/g, \"wildcard\")\n\n return {\n name: `https-${normalizedName}`,\n port: output(args.gateway).httpsListenerPort,\n protocol: \"HTTPS\",\n hostname: fqdn,\n tls: {\n mode: \"Terminate\",\n certificateRefs: [{ name: normalizedName }],\n },\n }\n }),\n },\n },\n { provider: args.provider, deletedWith: args.namespace },\n )\n })\n}\n","import type { Input, InputArray, InputMap } from \"@highstate/pulumi\"\nimport type { ContainerEnvironment, ContainerVolumeMount, WorkloadVolume } from \"../container\"\nimport type { InputL34Endpoint } from \"@highstate/common\"\n\nexport type ScriptDistribution = \"alpine\" | \"ubuntu\"\n\nexport type DistributionEnvironment = {\n /**\n * The image that should be used for the distribution.\n */\n image?: Input<string>\n\n /**\n * The utility packages that should be installed before running \"preInstallScripts\".\n *\n * Useful for installing tools like `curl` to install additional repositories.\n */\n preInstallPackages?: InputArray<string>\n\n /**\n * The pre-install scripts that should be run before installing packages.\n * Typically, these scripts are used to install additional repositories.\n */\n preInstallScripts?: InputMap<string>\n\n /**\n * The packages that are available in the environment.\n */\n packages?: InputArray<string>\n\n /**\n * The endpoint which the script is allowed to access scoped to the distribution.\n *\n * Typically, this is used to allow access to the package manager.\n *\n * Will be used to generate a network policy.\n */\n allowedEndpoints?: InputArray<InputL34Endpoint>\n}\n\nexport type ScriptProgram = () => unknown\n\nexport type ScriptEnvironment = {\n [distribution in ScriptDistribution]?: DistributionEnvironment\n} & {\n /**\n * The setup scripts that should be run before the script.\n */\n setupScripts?: InputMap<string>\n\n /**\n * The cleanup scripts that should be run after the script.\n */\n cleanupScripts?: InputMap<string>\n\n /**\n * The arbitrary files available in the environment including scripts.\n */\n files?: InputMap<string | ScriptProgram>\n\n /**\n * The volumes that should be defined in the environment.\n */\n volumes?: InputArray<WorkloadVolume>\n\n /**\n * The volume mounts that should be defined in the environment.\n */\n volumeMounts?: InputArray<ContainerVolumeMount>\n\n /**\n * The environment variables that should be defined in the environment.\n */\n environment?: Input<ContainerEnvironment>\n\n /**\n * The endpoint which the script is allowed to access.\n *\n * Will be used to generate a network policy.\n */\n allowedEndpoints?: InputArray<InputL34Endpoint>\n}\n\nexport type ResolvedScriptEnvironment = Omit<Required<ScriptEnvironment>, ScriptDistribution> & {\n [distribution in ScriptDistribution]: Required<DistributionEnvironment>\n}\n\nconst emptyDistributionEnvironment = {\n preInstallPackages: [],\n preInstallScripts: {},\n packages: [],\n}\n\nexport const emptyScriptEnvironment: ResolvedScriptEnvironment = {\n alpine: {\n ...emptyDistributionEnvironment,\n image: \"alpine@sha256:a8560b36e8b8210634f77d9f7f9efd7ffa463e380b75e2e74aff4511df3ef88c\",\n allowedEndpoints: [\n //\n \"tcp://dl-cdn.alpinelinux.org:443\",\n \"tcp://dl-cdn.alpinelinux.org:80\",\n ],\n },\n\n ubuntu: {\n ...emptyDistributionEnvironment,\n image: \"ubuntu@sha256:72297848456d5d37d1262630108ab308d3e9ec7ed1c3286a32fe09856619a782\",\n allowedEndpoints: [\n //\n \"tcp://archive.ubuntu.com:80\",\n \"tcp://archive.ubuntu.com:443\",\n \"tcp://security.ubuntu.com:80\",\n \"tcp://security.ubuntu.com:443\",\n ],\n },\n\n setupScripts: {},\n cleanupScripts: {},\n files: {},\n volumes: [],\n volumeMounts: [],\n environment: {},\n allowedEndpoints: [],\n}\n\nexport const functionScriptImages: Record<ScriptDistribution, string> = {\n alpine: \"oven/bun@sha256:6b14922b0885c3890cdb0b396090af1da486ba941df5ee94391eef64f7113c61\",\n ubuntu: \"oven/bun@sha256:66b431441dc4c36d7e8164bfc61e6348ec1d7ce2862fc3a29f5dc9856e8205e4\",\n}\n","import type { ContainerEnvironment, ContainerVolumeMount, WorkloadVolume } from \"../container\"\nimport type { network } from \"@highstate/library\"\nimport { apply, normalize, type InputArray } from \"@highstate/pulumi\"\nimport {\n ComponentResource,\n output,\n type ComponentResourceOptions,\n type Input,\n type Output,\n type Unwrap,\n} from \"@pulumi/pulumi\"\nimport { mapValues, omitBy, pipe } from \"remeda\"\nimport { deepmerge } from \"deepmerge-ts\"\nimport { readPackageJSON } from \"pkg-types\"\nimport { text, trimIndentation } from \"@highstate/contract\"\nimport { parseL34Endpoint } from \"@highstate/common\"\nimport { serializeFunction } from \"@pulumi/pulumi/runtime/index.js\"\nimport { type CommonArgs } from \"../shared\"\nimport { ConfigMap } from \"../config-map\"\nimport {\n emptyScriptEnvironment,\n functionScriptImages,\n type ResolvedScriptEnvironment,\n type ScriptDistribution,\n type ScriptEnvironment,\n} from \"./environment\"\n\nexport type ScriptBundleArgs = CommonArgs & {\n /**\n * The environment to bundle the scripts from.\n */\n environment?: Input<ScriptEnvironment>\n\n /**\n * The environments to bundle the scripts from.\n */\n environments?: InputArray<ScriptEnvironment>\n\n /**\n * The distribution to use for the scripts.\n */\n distribution: ScriptDistribution\n}\n\nexport class ScriptBundle extends ComponentResource {\n /**\n * The config map containing the scripts.\n */\n readonly configMap: Output<ConfigMap>\n\n /**\n * The volumes that should be included in the workload.\n */\n readonly volumes: Output<WorkloadVolume[]>\n\n /**\n * The volume mounts that should be defined in the container.\n */\n readonly volumeMounts: Output<ContainerVolumeMount[]>\n\n /**\n * The environment variables that should be defined in the container.\n */\n readonly environment: Output<ContainerEnvironment>\n\n /**\n * The image to use for the scripts.\n */\n readonly image: Output<string>\n\n /**\n * The distribution to use for the scripts.\n */\n readonly distribution: ScriptDistribution\n\n /**\n * The list of endpoints that the script is allowed to access.\n */\n readonly allowedEndpoints: Output<network.L34Endpoint[]>\n\n constructor(name: string, args: ScriptBundleArgs, opts?: ComponentResourceOptions) {\n super(\"highstate:k8s:ScriptBundle\", name, args, opts)\n\n const scriptEnvironment = pipe(\n output(args),\n apply(args => normalize(args.environment, args.environments)),\n apply(args => deepmerge(emptyScriptEnvironment, ...args)),\n ) as Output<Unwrap<ResolvedScriptEnvironment>>\n\n const hasFunctionScripts = scriptEnvironment.apply(scriptEnvironment => {\n return Object.values(scriptEnvironment.files).some(file => typeof file === \"function\")\n })\n\n this.distribution = args.distribution\n this.environment = scriptEnvironment.environment\n\n this.image = hasFunctionScripts.apply(hasFunctionScripts =>\n output(\n hasFunctionScripts\n ? functionScriptImages[args.distribution]\n : scriptEnvironment[args.distribution].image,\n ),\n )\n\n this.allowedEndpoints = output({ scriptEnvironment, hasFunctionScripts }).apply(\n ({ scriptEnvironment, hasFunctionScripts }) => {\n const allowedEndpoints = [\n ...scriptEnvironment.allowedEndpoints,\n ...scriptEnvironment[args.distribution].allowedEndpoints,\n ]\n\n if (hasFunctionScripts) {\n allowedEndpoints.push(\"tcp://registry.npmjs.org:443\")\n }\n\n return allowedEndpoints.map(parseL34Endpoint)\n },\n )\n\n this.configMap = output({ scriptEnvironment, args }).apply(({ scriptEnvironment, args }) => {\n return ConfigMap.create(\n name,\n {\n cluster: args.cluster,\n namespace: args.namespace,\n\n data: createScriptData(this.distribution, scriptEnvironment),\n },\n { ...opts, parent: this },\n )\n })\n\n this.volumes = output({ hasFunctionScripts, volumes: scriptEnvironment.volumes }).apply(\n ({ hasFunctionScripts, volumes }) => {\n return [\n ...volumes,\n {\n name: this.configMap.metadata.name,\n\n configMap: {\n name: this.configMap.metadata.name,\n defaultMode: 0o550, // read and execute permissions\n },\n },\n ...(hasFunctionScripts ? [{ name: \"node-modules\", emptyDir: {} }] : []),\n ]\n },\n )\n\n this.volumeMounts = output({\n hasFunctionScripts,\n volumeMounts: scriptEnvironment.volumeMounts,\n }).apply(({ hasFunctionScripts, volumeMounts }) => {\n return [\n ...volumeMounts,\n {\n volume: this.configMap,\n mountPath: \"/scripts\",\n },\n ...(hasFunctionScripts\n ? [{ name: \"node-modules\", mountPath: \"/scripts/node_modules\" }]\n : []),\n ]\n })\n\n this.registerOutputs({\n configMap: this.configMap,\n volumes: this.volumes,\n volumeMounts: this.volumeMounts,\n environment: this.environment,\n distribution: this.distribution,\n allowedEndpoints: this.allowedEndpoints,\n image: this.image,\n })\n }\n}\n\nfunction stripWorkspacePrefix(value: string): string {\n if (value.startsWith(\"workspace:\")) {\n return value.replace(\"workspace:\", \"\")\n }\n\n return value\n}\n\nasync function createScriptData(\n distribution: ScriptDistribution,\n environment: Unwrap<ResolvedScriptEnvironment>,\n): Promise<Record<string, string>> {\n const scriptData: Record<string, string> = {}\n const actions: string[] = []\n\n const distributionEnvironment = environment[distribution]\n const setupScripts = { ...environment.setupScripts }\n\n let hasFunctionScripts = false\n\n for (const key in environment.files) {\n if (typeof environment.files[key] === \"function\") {\n const serialized = await serializeFunction(environment.files[key])\n\n scriptData[key] = text`\n #!/usr/local/bin/bun\n \n ${serialized.text}\n\n exports.${serialized.exportName}()\n `\n\n hasFunctionScripts = true\n } else {\n scriptData[key] = environment.files[key]\n }\n }\n\n if (hasFunctionScripts) {\n const packageJson = await readPackageJSON()\n\n packageJson.dependencies = omitBy(\n mapValues(packageJson.dependencies ?? {}, stripWorkspacePrefix),\n (_, key) => key.startsWith(\"@highstate/\"),\n )\n\n packageJson.devDependencies = omitBy(\n mapValues(packageJson.devDependencies ?? {}, stripWorkspacePrefix),\n (_, key) => key.startsWith(\"@highstate/\"),\n )\n\n scriptData[\"package.json\"] = JSON.stringify(packageJson, null, 2)\n\n setupScripts[\"resolve-dependencies.sh\"] = text`\n #!/usr/local/bin/bun\n set -e\n\n cd /scripts\n bun install --production\n `\n }\n\n if (distributionEnvironment.preInstallPackages.length > 0) {\n scriptData[\"pre-install-packages.sh\"] = getInstallPackagesScript(\n distribution,\n distributionEnvironment.preInstallPackages,\n )\n\n actions.push(`\n echo \"+ Installing pre-install packages...\"\n /scripts/pre-install-packages.sh\n echo \"+ Pre-install packages installed successfully\"\n `)\n }\n\n if (Object.keys(distributionEnvironment.preInstallScripts).length > 0) {\n for (const key in distributionEnvironment.preInstallScripts) {\n scriptData[`pre-install-${key}`] = distributionEnvironment.preInstallScripts[key]\n\n actions.push(`\n echo \"+ Running pre-install script '${key}'...\"\n /scripts/pre-install-${key}\n echo \"+ Pre-install script '${key}'... Done\"\n `)\n }\n }\n\n if (distributionEnvironment.packages.length > 0) {\n scriptData[\"install-packages.sh\"] = getInstallPackagesScript(\n distribution,\n distributionEnvironment.packages,\n )\n\n actions.push(`\n echo \"+ Installing packages...\"\n /scripts/install-packages.sh\n echo \"+ Packages installed successfully\"\n `)\n }\n\n if (Object.keys(setupScripts).length > 0) {\n for (const key in setupScripts) {\n scriptData[`setup-${key}`] = setupScripts[key]\n\n actions.push(`\n echo \"+ Running setup script '${key}'...\"\n /scripts/setup-${key}\n echo \"+ Setup script '${key}'... Done\"\n `)\n }\n }\n\n if (Object.keys(environment.cleanupScripts).length > 0) {\n const cleanupActions: string[] = []\n\n for (const key in environment.cleanupScripts) {\n scriptData[`cleanup-${key}`] = environment.cleanupScripts[key]\n\n cleanupActions.push(`\n echo \"+ Running cleanup script '${key}'...\"\n /scripts/cleanup-${key}\n echo \"+ Cleanup script '${key}'... Done\"\n `)\n }\n\n actions.push(`\n function cleanup() {\n ${cleanupActions.map(s => s.trim()).join(\"\\n\\n\")}\n }\n\n trap cleanup EXIT\n trap cleanup SIGTERM\n `)\n }\n\n scriptData[\"entrypoint.sh\"] = trimIndentation(`\n #!/bin/sh\n set -e\n\n if [ -z \"$1\" ]; then\n echo \"Usage: entrypoint.sh <main script> [args...]\"\n exit 1\n fi\n\n ${actions.map(s => s.trim()).join(\"\\n\\n\")}\n\n echo \"+ Running main script...\"\n $@\n echo \"+ Main script completed\"\n `)\n\n return scriptData\n}\n\nfunction getInstallPackagesScript(distribution: ScriptDistribution, packages: string[]): string {\n if (distribution === \"alpine\") {\n return text`\n #!/bin/sh\n set -e\n\n apk add --no-cache ${packages.join(\" \")}\n `\n } else {\n return text`\n #!/bin/sh\n set -e\n\n apt-get update\n apt-get install -y ${packages.join(\" \")}\n `\n }\n}\n","import type { Container } from \"../container\"\nimport type { ScriptBundle } from \"./bundle\"\nimport { merge } from \"remeda\"\nimport { Output, output, type Input } from \"@pulumi/pulumi\"\n\nexport type ScriptContainer = Container & {\n /**\n * The script bundle to use.\n */\n bundle: Input<ScriptBundle>\n\n /**\n * The name of the main script to run.\n * The script must be available in the bundle.\n */\n main: Input<string>\n}\n\n/**\n * Creates a spec for a container that runs a script.\n * This spec can be used to create a complete workload or an init container.\n *\n * @param options The options to create the container spec.\n * @returns The container spec.\n */\nexport function createScriptContainer(options: ScriptContainer): Output<Container> {\n const bundle = output(options.bundle)\n\n return output({\n options,\n image: bundle.image,\n volumeMounts: bundle.volumeMounts,\n volumes: bundle.volumes,\n environment: bundle.environment,\n allowedEndpoints: bundle.allowedEndpoints,\n }).apply(({ options, image, volumeMounts, volumes, environment, allowedEndpoints }) => {\n return {\n image,\n command: [\"/scripts/entrypoint.sh\", `/scripts/${options.main}`],\n\n ...options,\n\n volumeMounts: [...volumeMounts, ...(options.volumeMounts ?? [])],\n volumes: [...volumes, ...(options.volumes ?? [])],\n environment: merge(environment, options.environment),\n allowedEndpoints: [...allowedEndpoints, ...(options.allowedEndpoints ?? [])],\n } as Container\n })\n}\n","import { batch, type types } from \"@pulumi/kubernetes\"\nimport { ComponentResource, Output, output, type ComponentResourceOptions } from \"@highstate/pulumi\"\nimport { mergeDeep, omit } from \"remeda\"\nimport { commonExtraArgs, getProvider, mapMetadata } from \"./shared\"\nimport { getWorkloadComponents, type WorkloadArgs } from \"./workload\"\n\nexport type JobArgs = WorkloadArgs &\n Omit<Partial<types.input.batch.v1.JobSpec>, \"template\"> & {\n template?: {\n metadata?: types.input.meta.v1.ObjectMeta\n spec?: Partial<types.input.core.v1.PodSpec>\n }\n }\n\nconst jobExtraArgs = [...commonExtraArgs, \"container\", \"containers\"] as const\n\nexport class Job extends ComponentResource {\n /**\n * The underlying Kubernetes job.\n */\n public readonly job: Output<batch.v1.Job>\n\n constructor(name: string, args: JobArgs, opts: ComponentResourceOptions) {\n super(\"highstate:k8s:Job\", name, args, opts)\n\n const { podTemplate } = getWorkloadComponents(name, args, () => this, opts)\n\n this.job = output({ args, podTemplate }).apply(async ({ args, podTemplate }) => {\n return new batch.v1.Job(\n name,\n {\n metadata: mapMetadata(args, name),\n spec: mergeDeep(\n {\n template: mergeDeep(\n {\n spec: {\n restartPolicy: \"Never\",\n },\n },\n podTemplate,\n ),\n } satisfies types.input.batch.v1.JobSpec,\n omit(args, jobExtraArgs) as types.input.batch.v1.JobSpec,\n ),\n },\n {\n ...opts,\n parent: this,\n provider: await getProvider(args.cluster),\n },\n )\n })\n }\n}\n","import type { RequiredKeys } from \"@highstate/contract\"\nimport { batch, type types } from \"@pulumi/kubernetes\"\nimport { ComponentResource, Output, output, type ComponentResourceOptions } from \"@highstate/pulumi\"\nimport { mergeDeep, omit } from \"remeda\"\nimport { commonExtraArgs, getProvider, mapMetadata } from \"./shared\"\nimport { getWorkloadComponents, type WorkloadArgs } from \"./workload\"\n\nexport type CronJobArgs = WorkloadArgs &\n Omit<RequiredKeys<Partial<types.input.batch.v1.CronJobSpec>, \"schedule\">, \"jobTemplate\"> & {\n jobTemplate?: {\n metadata?: types.input.meta.v1.ObjectMeta\n spec?: Omit<types.input.batch.v1.JobSpec, \"template\"> & {\n template?: {\n metadata?: types.input.meta.v1.ObjectMeta\n spec?: Partial<types.input.core.v1.PodSpec>\n }\n }\n }\n }\n\nconst cronJobExtraArgs = [...commonExtraArgs, \"container\", \"containers\"] as const\n\nexport class CronJob extends ComponentResource {\n /**\n * The underlying Kubernetes job.\n */\n public readonly cronJob: Output<batch.v1.CronJob>\n\n constructor(name: string, args: CronJobArgs, opts: ComponentResourceOptions) {\n super(\"highstate:k8s:CronJob\", name, args, opts)\n\n const { podTemplate } = getWorkloadComponents(name, args, () => this, opts)\n\n this.cronJob = output({ args, podTemplate }).apply(async ({ args, podTemplate }) => {\n return new batch.v1.CronJob(\n name,\n {\n metadata: mapMetadata(args, name),\n\n spec: mergeDeep(\n {\n jobTemplate: {\n spec: {\n template: mergeDeep(\n {\n spec: {\n restartPolicy: \"Never\",\n },\n },\n podTemplate,\n ),\n },\n },\n\n schedule: args.schedule,\n } satisfies types.input.batch.v1.CronJobSpec,\n omit(args, cronJobExtraArgs) as types.input.batch.v1.CronJobSpec,\n ),\n },\n {\n ...opts,\n parent: this,\n provider: await getProvider(args.cluster),\n },\n )\n })\n }\n}\n"]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/units/access-point/index.ts"],"names":[],"mappings":";;;;AAGA,IAAM,EAAE,
|
1
|
+
{"version":3,"sources":["../../../src/units/access-point/index.ts"],"names":[],"mappings":";;;;AAGA,IAAM,EAAE,MAAA,EAAQ,OAAA,EAAQ,GAAI,OAAA,CAAQ,IAAI,WAAW,CAAA;AAEnD,IAAM,EAAE,OAAA,EAAS,SAAA,EAAU,GAAI,MAAM,UAAU,MAAM,CAAA;AAErD,IAAI,OAAA,CAAQ,SAAA,KAAc,SAAA,CAAU,SAAA,EAAW;AAC7C,EAAA,MAAM,IAAI,MAAM,oDAAoD,CAAA;AACtE;AAEA,IAAO,uBAAQ,OAAA,CAAQ;AAAA,EACrB,WAAA,EAAa;AAAA,IACX,WAAW,OAAA,CAAQ,SAAA;AAAA,IACnB,cAAc,MAAA,CAAO,YAAA;AAAA,IACrB,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,WAAW,MAAA,CAAO;AAAA;AAEtB,CAAC","file":"index.js","sourcesContent":["import { k8s } from \"@highstate/library\"\nimport { forUnit, toPromise } from \"@highstate/pulumi\"\n\nconst { inputs, outputs } = forUnit(k8s.accessPoint)\n\nconst { gateway, tlsIssuer } = await toPromise(inputs)\n\nif (gateway.clusterId !== tlsIssuer.clusterId) {\n throw new Error(\"Gateway and TLS issuer must be in the same cluster\")\n}\n\nexport default outputs({\n accessPoint: {\n clusterId: gateway.clusterId,\n dnsProviders: inputs.dnsProviders,\n gateway: inputs.gateway,\n tlsIssuer: inputs.tlsIssuer,\n },\n})\n"]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../assets/charts.json","../../../src/units/cert-manager/index.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,IAAA,cAAA,GAAA;AAAA,EACE,
|
1
|
+
{"version":3,"sources":["../../../assets/charts.json","../../../src/units/cert-manager/index.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,IAAA,cAAA,GAAA;AAAA,EACE,cAAA,EAAgB;AAAA,IACd,IAAA,EAAQ,4BAAA;AAAA,IACR,IAAA,EAAQ,cAAA;AAAA,IACR,OAAA,EAAW,SAAA;AAAA,IACX,MAAA,EAAU;AAAA;AAEd,CAAA;;;ACDA,IAAM,EAAE,MAAA,EAAQ,OAAA,EAAQ,GAAI,OAAA,CAAQ,IAAI,WAAW,CAAA;AAEnD,IAAM,SAAA,GAAY,UAAU,MAAA,CAAO,cAAA,EAAgB,EAAE,OAAA,EAAS,MAAA,CAAO,YAAY,CAAA;AAEjF,IAAI,MAAM,cAAA,EAAgB;AAAA,EACxB,SAAS,MAAA,CAAO,UAAA;AAAA,EAChB,SAAA;AAAA,EAEA,KAAA,EAAO,eAAO,cAAc,CAAA;AAAA,EAE5B,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM;AAAA,MACJ,OAAA,EAAS;AAAA,KACX;AAAA,IAEA,MAAA,EAAQ;AAAA,MACN,UAAA,EAAY,4CAAA;AAAA,MACZ,IAAA,EAAM,yBAAA;AAAA,MACN,gBAAA,EAAkB;AAAA;AACpB;AAEJ,CAAC,CAAA;AAED,IAAO,uBAAQ,OAAA,CAAQ;AAAA,EACrB,YAAY,MAAA,CAAO;AACrB,CAAC","file":"index.js","sourcesContent":["{\n \"cert-manager\": {\n \"repo\": \"https://charts.jetstack.io\",\n \"name\": \"cert-manager\",\n \"version\": \"v1.17.1\",\n \"sha256\": \"48707f6e8937290da96065dc7de8b4f5a95d9707798d4b5a0d560f78c12996f7\"\n }\n}\n","import { k8s } from \"@highstate/library\"\nimport { forUnit } from \"@highstate/pulumi\"\nimport { Chart } from \"../../helm\"\nimport charts from \"../../../assets/charts.json\"\nimport { Namespace } from \"../../namespace\"\n\nconst { inputs, outputs } = forUnit(k8s.certManager)\n\nconst namespace = Namespace.create(\"cert-manager\", { cluster: inputs.k8sCluster })\n\nnew Chart(\"cert-manager\", {\n cluster: inputs.k8sCluster,\n namespace,\n\n chart: charts[\"cert-manager\"],\n\n values: {\n crds: {\n enabled: true,\n },\n\n config: {\n apiVersion: \"controller.config.cert-manager.io/v1alpha1\",\n kind: \"ControllerConfiguration\",\n enableGatewayAPI: true,\n },\n },\n})\n\nexport default outputs({\n k8sCluster: inputs.k8sCluster,\n})\n"]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/units/cluster-dns/index.ts"],"names":[],"mappings":";;;;;AAIA,IAAM,EAAE,
|
1
|
+
{"version":3,"sources":["../../../src/units/cluster-dns/index.ts"],"names":[],"mappings":";;;;;AAIA,IAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAQ,GAAI,OAAA,CAAQ,IAAI,UAAU,CAAA;AAExD,IAAM,EAAE,SAAA,EAAU,GAAI,MAAM,uBAAA;AAAA,EAC1B,OAAO,UAAA,CAAW,SAAA;AAAA,EAClB,IAAA,CAAK,IAAA;AAAA,EACL,IAAA,CAAK,cAAA;AAAA,EACL,IAAA,CAAK,SAAA;AAAA,EACL,MAAA,CAAO;AACT,CAAA;AAEA,IAAM,EAAE,SAAA,EAAW,YAAA,EAAa,GAAI,MAAM,uBAAA;AAAA,EACxC,OAAO,UAAA,CAAW,YAAA;AAAA,EAClB,IAAA,CAAK,OAAA;AAAA,EACL,IAAA,CAAK,iBAAA;AAAA,EACL,IAAA,CAAK,YAAA;AAAA,EACL,MAAA,CAAO;AACT,CAAA;AAEA,IAAO,sBAAQ,OAAA,CAAQ;AAAA,EACrB,UAAA,EAAY,MAAA,CAAO,UAAA,CAAW,KAAA,CAAM,CAAA,UAAA,MAAe;AAAA,IACjD,GAAG,UAAA;AAAA,IACH,SAAA;AAAA,IACA;AAAA,GACF,CAAE,CAAA;AAAA,EAEF,SAAA;AAAA,EACA,YAAA;AAAA,EAEA,aAAA,EAAe;AAAA,IACb,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 { l3EndpointToString, l4EndpointToString, updateEndpointsWithFqdn } from \"@highstate/common\"\nimport { k8s } from \"@highstate/library\"\nimport { forUnit } from \"@highstate/pulumi\"\n\nconst { args, inputs, outputs } = forUnit(k8s.clusterDns)\n\nconst { endpoints } = await updateEndpointsWithFqdn(\n inputs.k8sCluster.endpoints,\n args.fqdn,\n args.endpointFilter,\n args.patchMode,\n inputs.dnsProviders,\n)\n\nconst { endpoints: apiEndpoints } = await updateEndpointsWithFqdn(\n inputs.k8sCluster.apiEndpoints,\n args.apiFqdn,\n args.apiEndpointFilter,\n args.apiPatchMode,\n inputs.dnsProviders,\n)\n\nexport default outputs({\n k8sCluster: inputs.k8sCluster.apply(k8sCluster => ({\n ...k8sCluster,\n endpoints,\n apiEndpoints,\n })),\n\n endpoints,\n apiEndpoints,\n\n $statusFields: {\n endpoints: endpoints.map(l3EndpointToString),\n apiEndpoints: apiEndpoints.map(l4EndpointToString),\n },\n})\n"]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/units/cluster-patch/index.ts"],"names":[],"mappings":";;;;;AAIA,IAAM,EAAE,
|
1
|
+
{"version":3,"sources":["../../../src/units/cluster-patch/index.ts"],"names":[],"mappings":";;;;;AAIA,IAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAQ,GAAI,OAAA,CAAQ,IAAI,YAAY,CAAA;AAE1D,IAAM,YAAY,MAAM,eAAA;AAAA,EACtB,OAAO,UAAA,CAAW,SAAA;AAAA,EAClB,IAAA,CAAK,SAAA;AAAA,EACL,MAAA,CAAO,SAAA;AAAA,EACP,IAAA,CAAK;AACP,CAAA;AAEA,IAAM,eAAe,MAAM,eAAA;AAAA,EACzB,OAAO,UAAA,CAAW,YAAA;AAAA,EAClB,IAAA,CAAK,YAAA;AAAA,EACL,MAAA,CAAO,YAAA;AAAA,EACP,IAAA,CAAK;AACP,CAAA;AAEA,IAAO,wBAAQ,OAAA,CAAQ;AAAA,EACrB,UAAA,EAAY,MAAA,CAAO,UAAA,CAAW,KAAA,CAAM,CAAA,UAAA,MAAe;AAAA,IACjD,GAAG,UAAA;AAAA,IACH,SAAA;AAAA,IACA;AAAA,GACF,CAAE,CAAA;AAAA,EAEF,SAAA;AAAA,EACA,YAAA;AAAA,EAEA,aAAA,EAAe;AAAA,IACb,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 { l3EndpointToString, l4EndpointToString, updateEndpoints } from \"@highstate/common\"\nimport { k8s } from \"@highstate/library\"\nimport { forUnit } from \"@highstate/pulumi\"\n\nconst { args, inputs, outputs } = forUnit(k8s.clusterPatch)\n\nconst endpoints = await updateEndpoints(\n inputs.k8sCluster.endpoints,\n args.endpoints,\n inputs.endpoints,\n args.endpointsPatchMode,\n)\n\nconst apiEndpoints = await updateEndpoints(\n inputs.k8sCluster.apiEndpoints,\n args.apiEndpoints,\n inputs.apiEndpoints,\n args.apiEndpointsPatchMode,\n)\n\nexport default outputs({\n k8sCluster: inputs.k8sCluster.apply(k8sCluster => ({\n ...k8sCluster,\n endpoints,\n apiEndpoints,\n })),\n\n endpoints,\n apiEndpoints,\n\n $statusFields: {\n endpoints: endpoints.map(l3EndpointToString),\n apiEndpoints: apiEndpoints.map(l4EndpointToString),\n },\n})\n"]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/units/dns01-issuer/solver.ts","../../../src/units/dns01-issuer/index.ts"],"names":["provider"],"mappings":";;;;;;;AAOA,eAAsB,iBAAA,CACpB,kBACAA,
|
1
|
+
{"version":3,"sources":["../../../src/units/dns01-issuer/solver.ts","../../../src/units/dns01-issuer/index.ts"],"names":["provider"],"mappings":";;;;;;;AAOA,eAAsB,iBAAA,CACpB,kBACAA,SAAAA,EACwE;AACxE,EAAA,MAAM,WAAA,GAAc,MAAM,SAAA,CAAU,gBAAgB,CAAA;AAEpD,EAAA,MAAM,QAAA,GAAW,CAAA,MAAA,EAAS,UAAA,CAAW,WAAA,CAAY,IAAI,CAAC,CAAA,WAAA,CAAA;AACtD,EAAA,MAAM,UAAA,GAAc,MAAM,OAAO,CAAA,WAAA,EAAc,YAAY,IAAI,CAAA,CAAA,CAAA;AAE/D,EAAA,MAAM,YAAA,GAAe,WAAW,QAAQ,CAAA;AAKxC,EAAA,OAAO,YAAA,CAAa,aAAaA,SAAQ,CAAA;AAC3C;;;AChBA,IAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAQ,GAAI,OAAA,CAAQ,IAAI,cAAc,CAAA;AAE5D,IAAM,QAAA,GAAW,MAAM,WAAA,CAAY,MAAA,CAAO,UAAU,CAAA;AAEpD,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,OAAO,YAAA,CAAa,KAAA;AAAA,UAAM,CAAA,YAAA,KACjC,YAAA,CAAa,GAAA,CAAI,CAAA,WAAA,KAAe;AAC9B,YAAA,OAAO;AAAA,cACL,KAAA,EAAO,iBAAA,CAAkB,WAAA,EAAa,QAAQ,CAAA;AAAA,cAC9C,UAAU,EAAE,QAAA,EAAU,CAAC,WAAA,CAAY,MAAM,CAAA;AAAE,aAC7C;AAAA,UACF,CAAC;AAAA,SACH;AAAA,QACA,mBAAA,EAAqB;AAAA,UACnB;AAAA;AACF;AACF;AACF,GACF;AAAA,EACA,EAAE,QAAA;AACJ,CAAA;AAEA,IAAO,uBAAQ,OAAA,CAAQ;AAAA,EACrB,SAAA,EAAW;AAAA,IACT,SAAA,EAAW,QAAA,CAAS,MAAA,CAAO,UAAA,CAAW,EAAE,CAAA;AAAA,IACxC,iBAAA,EAAmB;AAAA;AAEvB,CAAC","file":"index.js","sourcesContent":["import type { dns } from \"@highstate/library\"\nimport type { types } from \"@highstate/cert-manager\"\nimport type { Input } from \"@pulumi/pulumi\"\nimport type { Provider } from \"@pulumi/kubernetes\"\nimport { capitalize } from \"remeda\"\nimport { toPromise } from \"@highstate/pulumi\"\n\nexport async function createDns01Solver(\n dnsProviderInput: Input<dns.Provider>,\n provider: Provider,\n): Promise<types.input.cert_manager.v1.ClusterIssuerSpecAcmeSolversDns01> {\n const dnsProvider = await toPromise(dnsProviderInput)\n\n const implName = `create${capitalize(dnsProvider.type)}Dns01Solver`\n const implModule = (await import(`@highstate/${dnsProvider.type}`)) as Record<string, unknown>\n\n const implFunction = implModule[implName] as (\n dnsProvider: dns.Provider,\n provider: Provider,\n ) => types.input.cert_manager.v1.ClusterIssuerSpecAcmeSolversDns01\n\n return implFunction(dnsProvider, provider)\n}\n","import { k8s } from \"@highstate/library\"\nimport { forUnit, unsecret } from \"@highstate/pulumi\"\nimport { cert_manager } from \"@highstate/cert-manager\"\nimport { getProvider } from \"../../shared\"\nimport { createDns01Solver } from \"./solver\"\n\nconst { name, inputs, outputs } = forUnit(k8s.dns01TlsIssuer)\n\nconst provider = await getProvider(inputs.k8sCluster)\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: inputs.dnsProviders.apply(dnsProviders =>\n dnsProviders.map(dnsProvider => {\n return {\n dns01: createDns01Solver(dnsProvider, provider),\n selector: { dnsZones: [dnsProvider.domain] },\n }\n }),\n ),\n privateKeySecretRef: {\n name,\n },\n },\n },\n },\n { provider },\n)\n\nexport default outputs({\n tlsIssuer: {\n clusterId: unsecret(inputs.k8sCluster.id),\n clusterIssuerName: name,\n },\n})\n"]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/units/existing-cluster/index.ts"],"names":[],"mappings":";;;;;;;;;AAYA,IAAM,EAAE,MAAM,
|
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,GAAA,GAAe,OAAA;AAEnB,IAAM,UAAA,GAAa,IAAI,UAAA,EAAW;AAClC,UAAA,CAAW,eAAe,iBAAiB,CAAA;AAE3C,IAAM,OAAA,GAAU,UAAA,CAAW,aAAA,CAAc,SAAS,CAAA;AAElD,IAAM,WAAW,MAAM,OAAA,CACpB,uBAAA,CAAwB,EAAE,MAAM,QAAA,EAAU,SAAA,EAAW,aAAA,EAAe,EACpE,IAAA,CAAK,MAAM,IAAI,CAAA,CACf,KAAA,CAAM,MAAM,KAAK,CAAA;AAEpB,IAAI,QAAA,EAAU;AACZ,EAAA,GAAA,GAAM,QAAA;AACR;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,IAAA;AAAA,IACA,GAAA;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,GAAA;AAAA,IACA,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 { k8s } from \"@highstate/library\"\nimport { forUnit, secret, toPromise } from \"@highstate/pulumi\"\nimport { core, Provider } from \"@pulumi/kubernetes\"\nimport { KubeConfig, AppsV1Api } from \"@kubernetes/client-node\"\nimport {\n l3EndpointToString,\n l4EndpointToString,\n parseL3Endpoint,\n parseL4Endpoint,\n} from \"@highstate/common\"\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 cni: k8s.CNI = \"other\"\n\nconst kubeConfig = new KubeConfig()\nkubeConfig.loadFromString(kubeconfigContent)\n\nconst appsApi = kubeConfig.makeApiClient(AppsV1Api)\n\nconst isCilium = await appsApi\n .readNamespacedDaemonSet({ name: \"cilium\", namespace: \"kube-system\" })\n .then(() => true)\n .catch(() => false)\n\nif (isCilium) {\n cni = \"cilium\"\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 name,\n cni,\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 cni,\n endpoints: endpoints.map(l3EndpointToString),\n apiEndpoints: apiEndpoints.map(l4EndpointToString),\n },\n})\n"]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/units/gateway-api/index.ts"],"names":[],"mappings":";;;;;;AAKA,IAAM,EAAE,
|
1
|
+
{"version":3,"sources":["../../../src/units/gateway-api/index.ts"],"names":[],"mappings":";;;;;;AAKA,IAAM,EAAE,MAAA,EAAQ,OAAA,EAAQ,GAAI,OAAA,CAAQ,IAAI,UAAU,CAAA;AAElD,IAAM,QAAA,GAAW,MAAM,WAAA,CAAY,MAAA,CAAO,UAAU,CAAA;AAEpD,IAAI,KAAK,EAAA,CAAG,UAAA;AAAA,EACV,aAAA;AAAA,EACA;AAAA,IACE,IAAA,EAAM;AAAA,GACR;AAAA,EACA,EAAE,QAAA;AACJ,CAAA;AAEA,IAAO,sBAAQ,OAAA,CAAQ;AAAA,EACrB,YAAY,MAAA,CAAO;AACrB,CAAC","file":"index.js","sourcesContent":["import { k8s } from \"@highstate/library\"\nimport { forUnit } from \"@highstate/pulumi\"\nimport { yaml } from \"@pulumi/kubernetes\"\nimport { getProvider } from \"../../shared\"\n\nconst { inputs, outputs } = forUnit(k8s.gatewayApi)\n\nconst provider = await getProvider(inputs.k8sCluster)\n\nnew yaml.v2.ConfigFile(\n \"gateway-api\",\n {\n file: \"https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.3.0/standard-install.yaml\",\n },\n { provider },\n)\n\nexport default outputs({\n k8sCluster: inputs.k8sCluster,\n})\n"]}
|