@highstate/k8s 0.9.14 → 0.9.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/dist/{chunk-QLQ3QVGT.js → chunk-5C2BJGES.js} +17 -17
  2. package/dist/chunk-5C2BJGES.js.map +1 -0
  3. package/dist/{chunk-Y3LZSX7I.js → chunk-5TLC5BXR.js} +33 -31
  4. package/dist/chunk-5TLC5BXR.js.map +1 -0
  5. package/dist/chunk-BBIY3KUN.js +1557 -0
  6. package/dist/chunk-BBIY3KUN.js.map +1 -0
  7. package/dist/{chunk-5S4JPM4M.js → chunk-OFFSHGC6.js} +43 -32
  8. package/dist/chunk-OFFSHGC6.js.map +1 -0
  9. package/dist/chunk-PZ5AY32C.js +9 -0
  10. package/dist/chunk-PZ5AY32C.js.map +1 -0
  11. package/dist/{chunk-VL7Z5FJQ.js → chunk-TZHOUJRC.js} +29 -20
  12. package/dist/chunk-TZHOUJRC.js.map +1 -0
  13. package/dist/{chunk-6L67WIZW.js → chunk-YWRJ4EZM.js} +29 -20
  14. package/dist/chunk-YWRJ4EZM.js.map +1 -0
  15. package/dist/deployment-XK3CDJOE.js +6 -0
  16. package/dist/deployment-XK3CDJOE.js.map +1 -0
  17. package/dist/highstate.manifest.json +8 -8
  18. package/dist/index.js +39 -138
  19. package/dist/index.js.map +1 -1
  20. package/dist/stateful-set-7CAQWTV2.js +6 -0
  21. package/dist/stateful-set-7CAQWTV2.js.map +1 -0
  22. package/dist/units/access-point/index.js +7 -6
  23. package/dist/units/access-point/index.js.map +1 -1
  24. package/dist/units/cert-manager/index.js +11 -14
  25. package/dist/units/cert-manager/index.js.map +1 -1
  26. package/dist/units/cluster-dns/index.js +9 -8
  27. package/dist/units/cluster-dns/index.js.map +1 -1
  28. package/dist/units/cluster-patch/index.js +9 -8
  29. package/dist/units/cluster-patch/index.js.map +1 -1
  30. package/dist/units/dns01-issuer/index.js +9 -14
  31. package/dist/units/dns01-issuer/index.js.map +1 -1
  32. package/dist/units/existing-cluster/index.js +12 -19
  33. package/dist/units/existing-cluster/index.js.map +1 -1
  34. package/dist/units/gateway-api/index.js +8 -10
  35. package/dist/units/gateway-api/index.js.map +1 -1
  36. package/package.json +19 -10
  37. package/src/cluster.ts +14 -9
  38. package/src/deployment.ts +34 -0
  39. package/src/helm.ts +38 -2
  40. package/src/network-policy.ts +2 -5
  41. package/src/shared.ts +17 -0
  42. package/src/stateful-set.ts +34 -0
  43. package/src/units/cluster-dns/index.ts +1 -1
  44. package/src/units/cluster-patch/index.ts +1 -1
  45. package/src/units/existing-cluster/index.ts +1 -1
  46. package/src/workload.ts +22 -3
  47. package/dist/chunk-5S4JPM4M.js.map +0 -1
  48. package/dist/chunk-6L67WIZW.js.map +0 -1
  49. package/dist/chunk-QLQ3QVGT.js.map +0 -1
  50. package/dist/chunk-SARVLQZY.js +0 -876
  51. package/dist/chunk-SARVLQZY.js.map +0 -1
  52. package/dist/chunk-VL7Z5FJQ.js.map +0 -1
  53. package/dist/chunk-WEKIQRCZ.js +0 -792
  54. package/dist/chunk-WEKIQRCZ.js.map +0 -1
  55. package/dist/chunk-Y3LZSX7I.js.map +0 -1
  56. package/dist/deployment-QTPBNKO5.js +0 -10
  57. package/dist/deployment-QTPBNKO5.js.map +0 -1
  58. package/dist/stateful-set-K4GV7ZTK.js +0 -10
  59. package/dist/stateful-set-K4GV7ZTK.js.map +0 -1
  60. package/src/custom.ts +0 -104
@@ -1,20 +1,10 @@
1
- import {
2
- ExposableWorkload,
3
- exposableWorkloadExtraArgs,
4
- getExposableWorkloadComponents
5
- } from "./chunk-SARVLQZY.js";
6
- import {
7
- getProvider,
8
- mapMetadata,
9
- resourceIdToString,
10
- withPatchName
11
- } from "./chunk-Y3LZSX7I.js";
1
+ import { ExposableWorkload, getExposableWorkloadComponents, exposableWorkloadExtraArgs } from './chunk-BBIY3KUN.js';
2
+ import { withPatchName, mapMetadata, getProvider, resourceIdToString } from './chunk-5TLC5BXR.js';
3
+ import { output } from '@highstate/pulumi';
4
+ import { apps } from '@pulumi/kubernetes';
5
+ import { omit } from 'remeda';
6
+ import { deepmerge } from 'deepmerge-ts';
12
7
 
13
- // src/deployment.ts
14
- import { output } from "@highstate/pulumi";
15
- import { apps } from "@pulumi/kubernetes";
16
- import { omit } from "remeda";
17
- import { deepmerge } from "deepmerge-ts";
18
8
  var Deployment = class extends ExposableWorkload {
19
9
  constructor(type, name, args, opts, cluster, metadata, spec, status, networkPolicy, service, httpRoute) {
20
10
  super(
@@ -69,6 +59,9 @@ var Deployment = class extends ExposableWorkload {
69
59
  }
70
60
  return new ExternalDeployment(name, output(args.existing).metadata, args.cluster, opts);
71
61
  }
62
+ static wrap(name, deployment, cluster, opts) {
63
+ return new WrappedDeployment(name, deployment, cluster, opts);
64
+ }
72
65
  };
73
66
  var CreatedDeployment = class extends Deployment {
74
67
  constructor(name, args, opts) {
@@ -176,8 +169,24 @@ var ExternalDeployment = class extends Deployment {
176
169
  );
177
170
  }
178
171
  };
179
-
180
- export {
181
- Deployment
172
+ var WrappedDeployment = class extends Deployment {
173
+ constructor(name, deployment, cluster, opts) {
174
+ super(
175
+ "highstate:k8s:WrappedDeployment",
176
+ name,
177
+ { namespace: output(deployment).metadata.namespace, cluster },
178
+ opts,
179
+ output(cluster),
180
+ output(deployment).metadata,
181
+ output(deployment).spec,
182
+ output(deployment).status,
183
+ output(void 0),
184
+ output(void 0),
185
+ output(void 0)
186
+ );
187
+ }
182
188
  };
183
- //# sourceMappingURL=chunk-6L67WIZW.js.map
189
+
190
+ export { Deployment };
191
+ //# sourceMappingURL=chunk-YWRJ4EZM.js.map
192
+ //# sourceMappingURL=chunk-YWRJ4EZM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/deployment.ts"],"names":["args","podTemplate","podSpec","id"],"mappings":";;;;;;;AAqCsB,IAAA,UAAA,GAAf,cAAkC,iBAAkB,CAAA;AAAA,EAC/C,WAAA,CACR,IACA,EAAA,IAAA,EACA,IACA,EAAA,IAAA,EAEA,OACA,EAAA,QAAA,EAKS,IAKA,EAAA,MAAA,EAET,aAEA,EAAA,OAAA,EACA,SACA,EAAA;AACA,IAAA,KAAA;AAAA,MACE,IAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA;AAAA,MACA,YAAA;AAAA,MACA,OAAA;AAAA,MACA,QAAA;AAAA,MACA,aAAA;AAAA,MACA,OAAA;AAAA,MACA;AAAA,KACF;AAvBS,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AAKA,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAAA;AAmBX;AAAA;AAAA;AAAA,EAKA,IAAI,MAAiC,GAAA;AACnC,IAAA,OAAO,MAAO,CAAA;AAAA,MACZ,IAAM,EAAA,gBAAA;AAAA,MACN,SAAA,EAAW,KAAK,OAAQ,CAAA,EAAA;AAAA,MACxB,UAAU,IAAK,CAAA,QAAA;AAAA,MACf,SAAS,IAAK,CAAA,QAAA,CAAS,KAAM,CAAA,CAAA,OAAA,KAAW,SAAS,MAAM;AAAA,KACxD,CAAA;AAAA;AACH,EAEA,OAAO,MAAA,CAAO,IAAc,EAAA,IAAA,EAAsB,IAA6C,EAAA;AAC7F,IAAA,OAAO,IAAI,iBAAA,CAAkB,IAAM,EAAA,IAAA,EAAM,IAAI,CAAA;AAAA;AAC/C,EAEA,OAAO,aAAA,CACL,IACA,EAAA,IAAA,EACA,IACY,EAAA;AACZ,IAAI,IAAA,CAAC,KAAK,QAAU,EAAA;AAClB,MAAA,OAAO,IAAI,iBAAA,CAAkB,IAAM,EAAA,IAAA,EAAM,IAAI,CAAA;AAAA;AAG/C,IAAA,OAAO,IAAI,eAAA;AAAA,MACT,IAAA;AAAA,MACA;AAAA,QACE,GAAG,IAAA;AAAA,QACH,MAAM,aAAc,CAAA,YAAA,EAAc,IAAK,CAAA,QAAA,EAAU,KAAK,OAAO,CAAA;AAAA,QAC7D,SAAW,EAAA,MAAA,CAAO,IAAK,CAAA,QAAQ,EAAE,QAAS,CAAA;AAAA,OAC5C;AAAA,MACA;AAAA,KACF;AAAA;AACF,EAEA,OAAO,KAAA,CAAM,IAAc,EAAA,IAAA,EAAsB,IAA6C,EAAA;AAC5F,IAAA,OAAO,IAAI,eAAA,CAAgB,IAAM,EAAA,IAAA,EAAM,IAAI,CAAA;AAAA;AAC7C,EAEA,OAAO,WAAA,CACL,IACA,EAAA,IAAA,EACA,IACY,EAAA;AACZ,IAAI,IAAA,CAAC,KAAK,QAAU,EAAA;AAClB,MAAA,OAAO,IAAI,iBAAA,CAAkB,IAAM,EAAA,IAAA,EAAM,IAAI,CAAA;AAAA;AAG/C,IAAO,OAAA,IAAI,kBAAmB,CAAA,IAAA,EAAM,MAAO,CAAA,IAAA,CAAK,QAAQ,CAAE,CAAA,QAAA,EAAU,IAAK,CAAA,OAAA,EAAS,IAAI,CAAA;AAAA;AACxF,EAEA,OAAO,IAAA,CACL,IACA,EAAA,UAAA,EACA,SACA,IACY,EAAA;AACZ,IAAA,OAAO,IAAI,iBAAA,CAAkB,IAAM,EAAA,UAAA,EAAY,SAAS,IAAI,CAAA;AAAA;AAEhE;AAEA,IAAM,iBAAA,GAAN,cAAgC,UAAW,CAAA;AAAA,EACzC,WAAA,CAAY,IAAc,EAAA,IAAA,EAAsB,IAAiC,EAAA;AAC/E,IAAA,MAAM,EAAE,MAAA,EAAQ,WAAa,EAAA,aAAA,EAAe,OAAS,EAAA,SAAA,EACnD,GAAA,8BAAA,CAA+B,IAAM,EAAA,IAAA,EAAM,MAAM,IAAA,EAAM,IAAI,CAAA;AAE7D,IAAA,MAAM,UAAa,GAAA,MAAA,CAAO,EAAE,IAAA,EAAM,aAAa,CAAA,CAAE,KAAM,CAAA,OAAO,EAAE,IAAA,EAAAA,KAAM,EAAA,WAAA,EAAAC,cAAkB,KAAA;AACtF,MAAO,OAAA,IAAI,KAAK,EAAG,CAAA,UAAA;AAAA,QACjB,IAAA;AAAA,QACA;AAAA,UACE,QAAA,EAAU,WAAYD,CAAAA,KAAAA,EAAM,IAAI,CAAA;AAAA,UAChC,IAAM,EAAA,SAAA;AAAA,YACJ;AAAA,cACE,QAAUC,EAAAA,YAAAA;AAAA,cACV,QAAA,EAAU,EAAE,WAAA,EAAa,MAAO;AAAA,aAClC;AAAA,YACA,IAAA,CAAKD,OAAM,0BAA0B;AAAA;AACvC,SACF;AAAA,QACA;AAAA,UACE,GAAG,IAAA;AAAA,UACH,MAAQ,EAAA,IAAA;AAAA,UACR,QAAU,EAAA,MAAM,WAAYA,CAAAA,KAAAA,CAAK,OAAO;AAAA;AAC1C,OACF;AAAA,KACD,CAAA;AAED,IAAA,KAAA;AAAA,MACE,0BAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA;AAAA,MAEA,MAAA,CAAO,KAAK,OAAO,CAAA;AAAA,MACnB,UAAW,CAAA,QAAA;AAAA,MACX,UAAW,CAAA,IAAA;AAAA,MACX,UAAW,CAAA,MAAA;AAAA,MAEX,aAAA;AAAA,MACA,OAAA;AAAA,MACA;AAAA,KACF;AAAA;AAEJ,CAAA;AAEA,IAAM,eAAA,GAAN,cAA8B,UAAW,CAAA;AAAA,EACvC,WAAA,CAAY,IAAc,EAAA,IAAA,EAAsB,IAAiC,EAAA;AAC/E,IAAA,MAAM,EAAE,OAAA,EAAS,aAAe,EAAA,OAAA,EAAS,WAAc,GAAA,8BAAA;AAAA,MACrD,IAAA;AAAA,MACA,IAAA;AAAA,MACA,MAAM,IAAA;AAAA,MACN;AAAA,KACF;AAEA,IAAA,MAAM,UAAa,GAAA,MAAA,CAAO,EAAE,IAAA,EAAM,SAAS,CAAA,CAAE,KAAM,CAAA,OAAO,EAAE,IAAA,EAAAA,KAAM,EAAA,OAAA,EAAAE,UAAc,KAAA;AAC9E,MAAO,OAAA,IAAI,KAAK,EAAG,CAAA,eAAA;AAAA,QACjB,IAAA;AAAA,QACA;AAAA,UACE,QAAA,EAAU,WAAYF,CAAAA,KAAAA,EAAM,IAAI,CAAA;AAAA,UAChC,IAAM,EAAA,SAAA;AAAA,YACJ;AAAA,cACE,QAAU,EAAA;AAAA,gBACR,IAAME,EAAAA;AAAA;AACR,aACF;AAAA,YACA,IAAA,CAAKF,OAAM,0BAA0B;AAAA;AACvC,SACF;AAAA,QACA;AAAA,UACE,GAAG,IAAA;AAAA,UACH,MAAQ,EAAA,IAAA;AAAA,UACR,QAAU,EAAA,MAAM,WAAYA,CAAAA,KAAAA,CAAK,OAAO;AAAA;AAC1C,OACF;AAAA,KACD,CAAA;AAED,IAAA,KAAA;AAAA,MACE,+BAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA;AAAA,MAEA,MAAA,CAAO,KAAK,OAAO,CAAA;AAAA,MACnB,UAAW,CAAA,QAAA;AAAA,MACX,UAAW,CAAA,IAAA;AAAA,MACX,UAAW,CAAA,MAAA;AAAA,MAEX,aAAA;AAAA,MACA,OAAA;AAAA,MACA;AAAA,KACF;AAAA;AAEJ,CAAA;AAEA,IAAM,kBAAA,GAAN,cAAiC,UAAW,CAAA;AAAA,EAC1C,WACE,CAAA,IAAA,EACA,EACA,EAAA,OAAA,EACA,IACA,EAAA;AACA,IAAA,MAAM,aAAa,MAAO,CAAA,EAAE,CAAE,CAAA,KAAA,CAAM,OAAMG,GAAM,KAAA;AAC9C,MAAA,OAAO,KAAK,EAAG,CAAA,UAAA,CAAW,IAAI,IAAM,EAAA,kBAAA,CAAmBA,GAAE,CAAG,EAAA;AAAA,QAC1D,GAAG,IAAA;AAAA,QACH,MAAQ,EAAA,IAAA;AAAA,QACR,QAAA,EAAU,MAAM,WAAA,CAAY,OAAO;AAAA,OACpC,CAAA;AAAA,KACF,CAAA;AAED,IAAA,KAAA;AAAA,MACE,kCAAA;AAAA,MACA,IAAA;AAAA,MACA,EAAE,SAAW,EAAA,MAAA,CAAO,EAAE,CAAA,CAAE,WAAW,OAAQ,EAAA;AAAA,MAC3C,IAAA;AAAA,MACA,OAAO,OAAO,CAAA;AAAA,MACd,UAAW,CAAA,QAAA;AAAA,MACX,UAAW,CAAA,IAAA;AAAA,MACX,UAAW,CAAA,MAAA;AAAA,MAEX,OAAO,MAAS,CAAA;AAAA,MAChB,OAAO,MAAS,CAAA;AAAA,MAChB,OAAO,MAAS;AAAA,KAClB;AAAA;AAEJ,CAAA;AAEA,IAAM,iBAAA,GAAN,cAAgC,UAAW,CAAA;AAAA,EACzC,WACE,CAAA,IAAA,EACA,UACA,EAAA,OAAA,EACA,IACA,EAAA;AACA,IAAA,KAAA;AAAA,MACE,iCAAA;AAAA,MACA,IAAA;AAAA,MACA,EAAE,SAAW,EAAA,MAAA,CAAO,UAAU,CAAE,CAAA,QAAA,CAAS,WAAW,OAAQ,EAAA;AAAA,MAC5D,IAAA;AAAA,MAEA,OAAO,OAAO,CAAA;AAAA,MACd,MAAA,CAAO,UAAU,CAAE,CAAA,QAAA;AAAA,MACnB,MAAA,CAAO,UAAU,CAAE,CAAA,IAAA;AAAA,MACnB,MAAA,CAAO,UAAU,CAAE,CAAA,MAAA;AAAA,MAEnB,OAAO,MAAS,CAAA;AAAA,MAChB,OAAO,MAAS,CAAA;AAAA,MAChB,OAAO,MAAS;AAAA,KAClB;AAAA;AAEJ,CAAA","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"]}
@@ -0,0 +1,6 @@
1
+ export { Deployment } from './chunk-YWRJ4EZM.js';
2
+ import './chunk-BBIY3KUN.js';
3
+ import './chunk-5TLC5BXR.js';
4
+ import './chunk-PZ5AY32C.js';
5
+ //# sourceMappingURL=deployment-XK3CDJOE.js.map
6
+ //# sourceMappingURL=deployment-XK3CDJOE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"deployment-XK3CDJOE.js"}
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "sourceHashes": {
3
- "./dist/index.js": "ca2a3d8aac296f7b0d6038c5224ba1e73eb9b87d8abd08c6c31677f9b514a0af",
4
- "./dist/units/access-point/index.js": "e94751e909c9ceea00369083ce9fa79a6a95f503b62d8d2918672d020fe3bce6",
5
- "./dist/units/cert-manager/index.js": "d16e502178c7f8675eabe8728208753924eba124f02dae7d31d47959db99b2eb",
6
- "./dist/units/cluster-patch/index.js": "687379c5062f9e28e0c013ff6ecb6ece6d0dd25101fedebb5e0ab081d70b18c1",
7
- "./dist/units/cluster-dns/index.js": "350e7297e73acc15c79d3214b88e115f2cb4435b0934c5b079a303d832ffbdec",
8
- "./dist/units/dns01-issuer/index.js": "ff4e604e00c5945ca55c894184f834e0f715973e2a74c83ef759cdd5d0847337",
9
- "./dist/units/existing-cluster/index.js": "140ac83c9fab398673cffc57678535df0f3db6d08c7c010b68356685ff2443b0",
10
- "./dist/units/gateway-api/index.js": "7aaa10a8ea63192cbff801699f8cae4620e56a089c1ba901d51500483ea05429"
3
+ "./dist/index.js": 2212294583,
4
+ "./dist/units/access-point/index.js": 1696538936,
5
+ "./dist/units/cert-manager/index.js": 62214576,
6
+ "./dist/units/cluster-patch/index.js": 1914629924,
7
+ "./dist/units/cluster-dns/index.js": 611344514,
8
+ "./dist/units/dns01-issuer/index.js": 3407863981,
9
+ "./dist/units/existing-cluster/index.js": 3899275346,
10
+ "./dist/units/gateway-api/index.js": 3233535669
11
11
  }
12
12
  }
package/dist/index.js CHANGED
@@ -1,59 +1,23 @@
1
- import {
2
- StatefulSet
3
- } from "./chunk-VL7Z5FJQ.js";
4
- import {
5
- Deployment
6
- } from "./chunk-6L67WIZW.js";
7
- import {
8
- ConfigMap,
9
- ExposableWorkload,
10
- PersistentVolumeClaim,
11
- Secret,
12
- Workload,
13
- getWorkloadComponents
14
- } from "./chunk-SARVLQZY.js";
15
- import {
16
- Chart,
17
- RenderedChart,
18
- getChartService,
19
- getChartServiceOutput,
20
- resolveHelmChart
21
- } from "./chunk-5S4JPM4M.js";
22
- import {
23
- HttpRoute,
24
- NetworkPolicy,
25
- Service,
26
- getBestEndpoint,
27
- getServiceMetadata,
28
- hasServiceMetadata,
29
- isFromCluster,
30
- mapContainerPortToServicePort,
31
- mapServiceToLabelSelector,
32
- requireBestEndpoint,
33
- withServiceMetadata
34
- } from "./chunk-WEKIQRCZ.js";
35
- import {
36
- createK8sTerminal,
37
- detectExternalIps
38
- } from "./chunk-QLQ3QVGT.js";
39
- import {
40
- Namespace,
41
- commonExtraArgs,
42
- getProvider,
43
- mapMetadata,
44
- mapNamespaceLikeToNamespaceName,
45
- mapNamespaceNameToSelector,
46
- mapSelectorLikeToSelector
47
- } from "./chunk-Y3LZSX7I.js";
1
+ export { Chart, RenderedChart, getChartService, getChartServiceOutput, resolveHelmChart } from './chunk-OFFSHGC6.js';
2
+ export { StatefulSet } from './chunk-TZHOUJRC.js';
3
+ export { Deployment } from './chunk-YWRJ4EZM.js';
4
+ import { NetworkPolicy, isFromCluster, ConfigMap, getWorkloadComponents } from './chunk-BBIY3KUN.js';
5
+ export { ConfigMap, ExposableWorkload, HttpRoute, NetworkPolicy, PersistentVolumeClaim, Secret, Service, Workload, getBestEndpoint, getServiceMetadata, hasServiceMetadata, isFromCluster, mapContainerPortToServicePort, mapServiceToLabelSelector, requireBestEndpoint, withServiceMetadata } from './chunk-BBIY3KUN.js';
6
+ export { createK8sTerminal, detectExternalIps } from './chunk-5C2BJGES.js';
7
+ import { commonExtraArgs, getProvider, mapNamespaceLikeToNamespaceName, mapMetadata } from './chunk-5TLC5BXR.js';
8
+ export { Namespace, getProvider, mapMetadata, mapNamespaceLikeToNamespaceName, mapNamespaceNameToSelector, mapSelectorLikeToSelector } from './chunk-5TLC5BXR.js';
9
+ import './chunk-PZ5AY32C.js';
10
+ import { DnsRecordSet, filterEndpoints, l3EndpointToString, parseL34Endpoint } from '@highstate/common';
11
+ import { gateway } from '@highstate/gateway-api';
12
+ import { output, normalize, toPromise, apply, ComponentResource as ComponentResource$1 } from '@highstate/pulumi';
13
+ import { ComponentResource, output as output$1 } from '@pulumi/pulumi';
14
+ import { pipe, omitBy, mapValues, merge, mergeDeep, omit } from 'remeda';
15
+ import { deepmerge } from 'deepmerge-ts';
16
+ import { readPackageJSON } from 'pkg-types';
17
+ import { text, trimIndentation } from '@highstate/contract';
18
+ import { serializeFunction } from '@pulumi/pulumi/runtime/index.js';
19
+ import { batch } from '@pulumi/kubernetes';
48
20
 
49
- // src/access-point.ts
50
- import { DnsRecordSet, filterEndpoints, l3EndpointToString } from "@highstate/common";
51
- import { gateway } from "@highstate/gateway-api";
52
- import {
53
- normalize,
54
- output,
55
- toPromise
56
- } from "@highstate/pulumi";
57
21
  function useAccessPoint(args) {
58
22
  const result = output({ args, namespaceName: output(args.namespace).metadata.name }).apply(
59
23
  ({ args: args2, namespaceName }) => {
@@ -164,19 +128,6 @@ function createGateway(args) {
164
128
  });
165
129
  }
166
130
 
167
- // src/scripting/bundle.ts
168
- import { apply, normalize as normalize2 } from "@highstate/pulumi";
169
- import {
170
- ComponentResource,
171
- output as output2
172
- } from "@pulumi/pulumi";
173
- import { mapValues, omitBy, pipe } from "remeda";
174
- import { deepmerge } from "deepmerge-ts";
175
- import { readPackageJSON } from "pkg-types";
176
- import { text, trimIndentation } from "@highstate/contract";
177
- import { parseL34Endpoint } from "@highstate/common";
178
- import { serializeFunction } from "@pulumi/pulumi/runtime/index.js";
179
-
180
131
  // src/scripting/environment.ts
181
132
  var emptyDistributionEnvironment = {
182
133
  preInstallPackages: [],
@@ -250,8 +201,8 @@ var ScriptBundle = class extends ComponentResource {
250
201
  constructor(name, args, opts) {
251
202
  super("highstate:k8s:ScriptBundle", name, args, opts);
252
203
  const scriptEnvironment = pipe(
253
- output2(args),
254
- apply((args2) => normalize2(args2.environment, args2.environments)),
204
+ output$1(args),
205
+ apply((args2) => normalize(args2.environment, args2.environments)),
255
206
  apply((args2) => deepmerge(emptyScriptEnvironment, ...args2))
256
207
  );
257
208
  const hasFunctionScripts = scriptEnvironment.apply((scriptEnvironment2) => {
@@ -260,11 +211,11 @@ var ScriptBundle = class extends ComponentResource {
260
211
  this.distribution = args.distribution;
261
212
  this.environment = scriptEnvironment.environment;
262
213
  this.image = hasFunctionScripts.apply(
263
- (hasFunctionScripts2) => output2(
214
+ (hasFunctionScripts2) => output$1(
264
215
  hasFunctionScripts2 ? functionScriptImages[args.distribution] : scriptEnvironment[args.distribution].image
265
216
  )
266
217
  );
267
- this.allowedEndpoints = output2({ scriptEnvironment, hasFunctionScripts }).apply(
218
+ this.allowedEndpoints = output$1({ scriptEnvironment, hasFunctionScripts }).apply(
268
219
  ({ scriptEnvironment: scriptEnvironment2, hasFunctionScripts: hasFunctionScripts2 }) => {
269
220
  const allowedEndpoints = [
270
221
  ...scriptEnvironment2.allowedEndpoints,
@@ -276,7 +227,7 @@ var ScriptBundle = class extends ComponentResource {
276
227
  return allowedEndpoints.map(parseL34Endpoint);
277
228
  }
278
229
  );
279
- this.configMap = output2({ scriptEnvironment, args }).apply(({ scriptEnvironment: scriptEnvironment2, args: args2 }) => {
230
+ this.configMap = output$1({ scriptEnvironment, args }).apply(({ scriptEnvironment: scriptEnvironment2, args: args2 }) => {
280
231
  return ConfigMap.create(
281
232
  name,
282
233
  {
@@ -287,7 +238,7 @@ var ScriptBundle = class extends ComponentResource {
287
238
  { ...opts, parent: this }
288
239
  );
289
240
  });
290
- this.volumes = output2({ hasFunctionScripts, volumes: scriptEnvironment.volumes }).apply(
241
+ this.volumes = output$1({ hasFunctionScripts, volumes: scriptEnvironment.volumes }).apply(
291
242
  ({ hasFunctionScripts: hasFunctionScripts2, volumes }) => {
292
243
  return [
293
244
  ...volumes,
@@ -303,7 +254,7 @@ var ScriptBundle = class extends ComponentResource {
303
254
  ];
304
255
  }
305
256
  );
306
- this.volumeMounts = output2({
257
+ this.volumeMounts = output$1({
307
258
  hasFunctionScripts,
308
259
  volumeMounts: scriptEnvironment.volumeMounts
309
260
  }).apply(({ hasFunctionScripts: hasFunctionScripts2, volumeMounts }) => {
@@ -469,13 +420,9 @@ function getInstallPackagesScript(distribution, packages) {
469
420
  `;
470
421
  }
471
422
  }
472
-
473
- // src/scripting/container.ts
474
- import { merge } from "remeda";
475
- import { output as output3 } from "@pulumi/pulumi";
476
423
  function createScriptContainer(options) {
477
- const bundle = output3(options.bundle);
478
- return output3({
424
+ const bundle = output$1(options.bundle);
425
+ return output$1({
479
426
  options,
480
427
  image: bundle.image,
481
428
  volumeMounts: bundle.volumeMounts,
@@ -494,13 +441,8 @@ function createScriptContainer(options) {
494
441
  };
495
442
  });
496
443
  }
497
-
498
- // src/job.ts
499
- import { batch } from "@pulumi/kubernetes";
500
- import { ComponentResource as ComponentResource2, output as output4 } from "@highstate/pulumi";
501
- import { mergeDeep, omit } from "remeda";
502
444
  var jobExtraArgs = [...commonExtraArgs, "container", "containers"];
503
- var Job = class extends ComponentResource2 {
445
+ var Job = class extends ComponentResource$1 {
504
446
  /**
505
447
  * The underlying Kubernetes job.
506
448
  */
@@ -508,7 +450,7 @@ var Job = class extends ComponentResource2 {
508
450
  constructor(name, args, opts) {
509
451
  super("highstate:k8s:Job", name, args, opts);
510
452
  const { podTemplate } = getWorkloadComponents(name, args, () => this, opts);
511
- this.job = output4({ args, podTemplate }).apply(async ({ args: args2, podTemplate: podTemplate2 }) => {
453
+ this.job = output({ args, podTemplate }).apply(async ({ args: args2, podTemplate: podTemplate2 }) => {
512
454
  return new batch.v1.Job(
513
455
  name,
514
456
  {
@@ -536,13 +478,8 @@ var Job = class extends ComponentResource2 {
536
478
  });
537
479
  }
538
480
  };
539
-
540
- // src/cron-job.ts
541
- import { batch as batch2 } from "@pulumi/kubernetes";
542
- import { ComponentResource as ComponentResource3, output as output5 } from "@highstate/pulumi";
543
- import { mergeDeep as mergeDeep2, omit as omit2 } from "remeda";
544
481
  var cronJobExtraArgs = [...commonExtraArgs, "container", "containers"];
545
- var CronJob = class extends ComponentResource3 {
482
+ var CronJob = class extends ComponentResource$1 {
546
483
  /**
547
484
  * The underlying Kubernetes job.
548
485
  */
@@ -550,16 +487,16 @@ var CronJob = class extends ComponentResource3 {
550
487
  constructor(name, args, opts) {
551
488
  super("highstate:k8s:CronJob", name, args, opts);
552
489
  const { podTemplate } = getWorkloadComponents(name, args, () => this, opts);
553
- this.cronJob = output5({ args, podTemplate }).apply(async ({ args: args2, podTemplate: podTemplate2 }) => {
554
- return new batch2.v1.CronJob(
490
+ this.cronJob = output({ args, podTemplate }).apply(async ({ args: args2, podTemplate: podTemplate2 }) => {
491
+ return new batch.v1.CronJob(
555
492
  name,
556
493
  {
557
494
  metadata: mapMetadata(args2, name),
558
- spec: mergeDeep2(
495
+ spec: mergeDeep(
559
496
  {
560
497
  jobTemplate: {
561
498
  spec: {
562
- template: mergeDeep2(
499
+ template: mergeDeep(
563
500
  {
564
501
  spec: {
565
502
  restartPolicy: "Never"
@@ -571,7 +508,7 @@ var CronJob = class extends ComponentResource3 {
571
508
  },
572
509
  schedule: args2.schedule
573
510
  },
574
- omit2(args2, cronJobExtraArgs)
511
+ omit(args2, cronJobExtraArgs)
575
512
  )
576
513
  },
577
514
  {
@@ -583,43 +520,7 @@ var CronJob = class extends ComponentResource3 {
583
520
  });
584
521
  }
585
522
  };
586
- export {
587
- Chart,
588
- ConfigMap,
589
- CronJob,
590
- Deployment,
591
- ExposableWorkload,
592
- HttpRoute,
593
- Job,
594
- Namespace,
595
- NetworkPolicy,
596
- PersistentVolumeClaim,
597
- RenderedChart,
598
- ScriptBundle,
599
- Secret,
600
- Service,
601
- StatefulSet,
602
- Workload,
603
- createK8sTerminal,
604
- createScriptContainer,
605
- detectExternalIps,
606
- getBestEndpoint,
607
- getChartService,
608
- getChartServiceOutput,
609
- getProvider,
610
- getServiceMetadata,
611
- hasServiceMetadata,
612
- isFromCluster,
613
- mapContainerPortToServicePort,
614
- mapMetadata,
615
- mapNamespaceLikeToNamespaceName,
616
- mapNamespaceNameToSelector,
617
- mapSelectorLikeToSelector,
618
- mapServiceToLabelSelector,
619
- requireBestEndpoint,
620
- resolveHelmChart,
621
- useAccessPoint,
622
- useStandardAcessPoint,
623
- withServiceMetadata
624
- };
523
+
524
+ export { CronJob, Job, ScriptBundle, createScriptContainer, useAccessPoint, useStandardAcessPoint };
525
+ //# sourceMappingURL=index.js.map
625
526
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/access-point.ts","../src/scripting/bundle.ts","../src/scripting/environment.ts","../src/scripting/container.ts","../src/job.ts","../src/cron-job.ts"],"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 { 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 { 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 { 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"],"mappings":"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","names":["args","gateway","normalize","output","output","args","normalize","scriptEnvironment","hasFunctionScripts","output","options","ComponentResource","output","ComponentResource","output","args","podTemplate","batch","ComponentResource","output","mergeDeep","omit","ComponentResource","output","args","podTemplate","batch","mergeDeep","omit"]}
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"]}
@@ -0,0 +1,6 @@
1
+ export { StatefulSet } from './chunk-TZHOUJRC.js';
2
+ import './chunk-BBIY3KUN.js';
3
+ import './chunk-5TLC5BXR.js';
4
+ import './chunk-PZ5AY32C.js';
5
+ //# sourceMappingURL=stateful-set-7CAQWTV2.js.map
6
+ //# sourceMappingURL=stateful-set-7CAQWTV2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"stateful-set-7CAQWTV2.js"}
@@ -1,6 +1,7 @@
1
- // src/units/access-point/index.ts
2
- import { k8s } from "@highstate/library";
3
- import { forUnit, toPromise } from "@highstate/pulumi";
1
+ import '../../chunk-PZ5AY32C.js';
2
+ import { k8s } from '@highstate/library';
3
+ import { forUnit, toPromise } from '@highstate/pulumi';
4
+
4
5
  var { inputs, outputs } = forUnit(k8s.accessPoint);
5
6
  var { gateway, tlsIssuer } = await toPromise(inputs);
6
7
  if (gateway.clusterId !== tlsIssuer.clusterId) {
@@ -14,7 +15,7 @@ var access_point_default = outputs({
14
15
  tlsIssuer: inputs.tlsIssuer
15
16
  }
16
17
  });
17
- export {
18
- access_point_default as default
19
- };
18
+
19
+ export { access_point_default as default };
20
+ //# sourceMappingURL=index.js.map
20
21
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/units/access-point/index.ts"],"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"],"mappings":";AAAA,SAAS,WAAW;AACpB,SAAS,SAAS,iBAAiB;AAEnC,IAAM,EAAE,QAAQ,QAAQ,IAAI,QAAQ,IAAI,WAAW;AAEnD,IAAM,EAAE,SAAS,UAAU,IAAI,MAAM,UAAU,MAAM;AAErD,IAAI,QAAQ,cAAc,UAAU,WAAW;AAC7C,QAAM,IAAI,MAAM,oDAAoD;AACtE;AAEA,IAAO,uBAAQ,QAAQ;AAAA,EACrB,aAAa;AAAA,IACX,WAAW,QAAQ;AAAA,IACnB,cAAc,OAAO;AAAA,IACrB,SAAS,OAAO;AAAA,IAChB,WAAW,OAAO;AAAA,EACpB;AACF,CAAC;","names":[]}
1
+ {"version":3,"sources":["../../../src/units/access-point/index.ts"],"names":[],"mappings":";;;;AAGA,IAAM,EAAE,MAAQ,EAAA,OAAA,EAAY,GAAA,OAAA,CAAQ,IAAI,WAAW,CAAA;AAEnD,IAAM,EAAE,OAAS,EAAA,SAAA,EAAc,GAAA,MAAM,UAAU,MAAM,CAAA;AAErD,IAAI,OAAA,CAAQ,SAAc,KAAA,SAAA,CAAU,SAAW,EAAA;AAC7C,EAAM,MAAA,IAAI,MAAM,oDAAoD,CAAA;AACtE;AAEA,IAAO,uBAAQ,OAAQ,CAAA;AAAA,EACrB,WAAa,EAAA;AAAA,IACX,WAAW,OAAQ,CAAA,SAAA;AAAA,IACnB,cAAc,MAAO,CAAA,YAAA;AAAA,IACrB,SAAS,MAAO,CAAA,OAAA;AAAA,IAChB,WAAW,MAAO,CAAA;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"]}