k8ts 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +7 -0
- package/README.md +3 -0
- package/dist/.imports.tsbuildinfo +1 -0
- package/dist/_imports/_mix.d.ts +4 -0
- package/dist/_imports/_mix.d.ts.map +1 -0
- package/dist/_imports/_mix.js +20 -0
- package/dist/_imports/_mix.js.map +1 -0
- package/dist/_imports/acme.cert-manager.io.d.ts +4832 -0
- package/dist/_imports/acme.cert-manager.io.d.ts.map +1 -0
- package/dist/_imports/acme.cert-manager.io.js +2476 -0
- package/dist/_imports/acme.cert-manager.io.js.map +1 -0
- package/dist/_imports/gateway.networking.k8s.io.d.ts +8786 -0
- package/dist/_imports/gateway.networking.k8s.io.d.ts.map +1 -0
- package/dist/_imports/gateway.networking.k8s.io.js +3668 -0
- package/dist/_imports/gateway.networking.k8s.io.js.map +1 -0
- package/dist/_imports/index.d.ts +3 -0
- package/dist/_imports/index.d.ts.map +1 -0
- package/dist/_imports/index.js +39 -0
- package/dist/_imports/index.js.map +1 -0
- package/dist/_imports/k8s.d.ts +18782 -0
- package/dist/_imports/k8s.d.ts.map +1 -0
- package/dist/_imports/k8s.js +12173 -0
- package/dist/_imports/k8s.js.map +1 -0
- package/dist/api-versions.d.ts +5 -0
- package/dist/api-versions.d.ts.map +1 -0
- package/dist/api-versions.js +8 -0
- package/dist/api-versions.js.map +1 -0
- package/dist/error.d.ts +5 -0
- package/dist/error.d.ts.map +1 -0
- package/dist/error.js +12 -0
- package/dist/error.js.map +1 -0
- package/dist/external/index.d.ts +13 -0
- package/dist/external/index.d.ts.map +1 -0
- package/dist/external/index.js +81 -0
- package/dist/external/index.js.map +1 -0
- package/dist/file/exports.d.ts +20 -0
- package/dist/file/exports.d.ts.map +1 -0
- package/dist/file/exports.js +62 -0
- package/dist/file/exports.js.map +1 -0
- package/dist/file/factory.d.ts +34 -0
- package/dist/file/factory.d.ts.map +1 -0
- package/dist/file/factory.js +171 -0
- package/dist/file/factory.js.map +1 -0
- package/dist/file/file.d.ts +17 -0
- package/dist/file/file.d.ts.map +1 -0
- package/dist/file/file.js +21 -0
- package/dist/file/file.js.map +1 -0
- package/dist/file/index.d.ts +2 -0
- package/dist/file/index.d.ts.map +1 -0
- package/dist/file/index.js +18 -0
- package/dist/file/index.js.map +1 -0
- package/dist/file/origin.d.ts +18 -0
- package/dist/file/origin.d.ts.map +1 -0
- package/dist/file/origin.js +27 -0
- package/dist/file/origin.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +49 -0
- package/dist/index.js.map +1 -0
- package/dist/k8ts-sys-kind.d.ts +3 -0
- package/dist/k8ts-sys-kind.d.ts.map +1 -0
- package/dist/k8ts-sys-kind.js +8 -0
- package/dist/k8ts-sys-kind.js.map +1 -0
- package/dist/kind-map.d.ts +11 -0
- package/dist/kind-map.d.ts.map +1 -0
- package/dist/kind-map.js +29 -0
- package/dist/kind-map.js.map +1 -0
- package/dist/meta/k8ts-section.d.ts +3 -0
- package/dist/meta/k8ts-section.d.ts.map +1 -0
- package/dist/meta/k8ts-section.js +10 -0
- package/dist/meta/k8ts-section.js.map +1 -0
- package/dist/node/abs-resource.d.ts +15 -0
- package/dist/node/abs-resource.d.ts.map +1 -0
- package/dist/node/abs-resource.js +76 -0
- package/dist/node/abs-resource.js.map +1 -0
- package/dist/node/dependencies.d.ts +1 -0
- package/dist/node/dependencies.d.ts.map +1 -0
- package/dist/node/dependencies.js +2 -0
- package/dist/node/dependencies.js.map +1 -0
- package/dist/node/index.d.ts +2 -0
- package/dist/node/index.d.ts.map +1 -0
- package/dist/node/index.js +6 -0
- package/dist/node/index.js.map +1 -0
- package/dist/node/manifest-resource.d.ts +11 -0
- package/dist/node/manifest-resource.d.ts.map +1 -0
- package/dist/node/manifest-resource.js +19 -0
- package/dist/node/manifest-resource.js.map +1 -0
- package/dist/node/sub-resource.d.ts +8 -0
- package/dist/node/sub-resource.d.ts.map +1 -0
- package/dist/node/sub-resource.js +72 -0
- package/dist/node/sub-resource.js.map +1 -0
- package/dist/node/top-resource.d.ts +7 -0
- package/dist/node/top-resource.d.ts.map +1 -0
- package/dist/node/top-resource.js +8 -0
- package/dist/node/top-resource.js.map +1 -0
- package/dist/paths.d.ts +2 -0
- package/dist/paths.d.ts.map +1 -0
- package/dist/paths.js +5 -0
- package/dist/paths.js.map +1 -0
- package/dist/resources/configmap/configmap.d.ts +12 -0
- package/dist/resources/configmap/configmap.d.ts.map +1 -0
- package/dist/resources/configmap/configmap.js +79 -0
- package/dist/resources/configmap/configmap.js.map +1 -0
- package/dist/resources/configmap/index.d.ts +2 -0
- package/dist/resources/configmap/index.d.ts.map +1 -0
- package/dist/resources/configmap/index.js +18 -0
- package/dist/resources/configmap/index.js.map +1 -0
- package/dist/resources/deployment/deployment.d.ts +18 -0
- package/dist/resources/deployment/deployment.d.ts.map +1 -0
- package/dist/resources/deployment/deployment.js +99 -0
- package/dist/resources/deployment/deployment.js.map +1 -0
- package/dist/resources/deployment/index.d.ts +2 -0
- package/dist/resources/deployment/index.d.ts.map +1 -0
- package/dist/resources/deployment/index.js +18 -0
- package/dist/resources/deployment/index.js.map +1 -0
- package/dist/resources/http-route/http-route.d.ts +17 -0
- package/dist/resources/http-route/http-route.d.ts.map +1 -0
- package/dist/resources/http-route/http-route.js +93 -0
- package/dist/resources/http-route/http-route.js.map +1 -0
- package/dist/resources/http-route/index.d.ts +2 -0
- package/dist/resources/http-route/index.d.ts.map +1 -0
- package/dist/resources/http-route/index.js +18 -0
- package/dist/resources/http-route/index.js.map +1 -0
- package/dist/resources/index.d.ts +9 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/index.js +25 -0
- package/dist/resources/index.js.map +1 -0
- package/dist/resources/namespace/index.d.ts +2 -0
- package/dist/resources/namespace/index.d.ts.map +1 -0
- package/dist/resources/namespace/index.js +18 -0
- package/dist/resources/namespace/index.js.map +1 -0
- package/dist/resources/namespace/namespace.d.ts +13 -0
- package/dist/resources/namespace/namespace.d.ts.map +1 -0
- package/dist/resources/namespace/namespace.js +79 -0
- package/dist/resources/namespace/namespace.js.map +1 -0
- package/dist/resources/persistent/access-mode.d.ts +8 -0
- package/dist/resources/persistent/access-mode.d.ts.map +1 -0
- package/dist/resources/persistent/access-mode.js +29 -0
- package/dist/resources/persistent/access-mode.js.map +1 -0
- package/dist/resources/persistent/block-mode.d.ts +2 -0
- package/dist/resources/persistent/block-mode.d.ts.map +1 -0
- package/dist/resources/persistent/block-mode.js +3 -0
- package/dist/resources/persistent/block-mode.js.map +1 -0
- package/dist/resources/persistent/claim/index.d.ts +2 -0
- package/dist/resources/persistent/claim/index.d.ts.map +1 -0
- package/dist/resources/persistent/claim/index.js +18 -0
- package/dist/resources/persistent/claim/index.js.map +1 -0
- package/dist/resources/persistent/claim/pvc.d.ts +23 -0
- package/dist/resources/persistent/claim/pvc.d.ts.map +1 -0
- package/dist/resources/persistent/claim/pvc.js +99 -0
- package/dist/resources/persistent/claim/pvc.js.map +1 -0
- package/dist/resources/persistent/index.d.ts +11 -0
- package/dist/resources/persistent/index.d.ts.map +1 -0
- package/dist/resources/persistent/index.js +13 -0
- package/dist/resources/persistent/index.js.map +1 -0
- package/dist/resources/persistent/volume/backend.d.ts +13 -0
- package/dist/resources/persistent/volume/backend.d.ts.map +1 -0
- package/dist/resources/persistent/volume/backend.js +3 -0
- package/dist/resources/persistent/volume/backend.js.map +1 -0
- package/dist/resources/persistent/volume/index.d.ts +2 -0
- package/dist/resources/persistent/volume/index.d.ts.map +1 -0
- package/dist/resources/persistent/volume/index.js +18 -0
- package/dist/resources/persistent/volume/index.js.map +1 -0
- package/dist/resources/persistent/volume/parse-backend.d.ts +14 -0
- package/dist/resources/persistent/volume/parse-backend.d.ts.map +1 -0
- package/dist/resources/persistent/volume/parse-backend.js +26 -0
- package/dist/resources/persistent/volume/parse-backend.js.map +1 -0
- package/dist/resources/persistent/volume/pv.d.ts +26 -0
- package/dist/resources/persistent/volume/pv.d.ts.map +1 -0
- package/dist/resources/persistent/volume/pv.js +95 -0
- package/dist/resources/persistent/volume/pv.js.map +1 -0
- package/dist/resources/pod/container/container.d.ts +44 -0
- package/dist/resources/pod/container/container.d.ts.map +1 -0
- package/dist/resources/pod/container/container.js +156 -0
- package/dist/resources/pod/container/container.js.map +1 -0
- package/dist/resources/pod/container/index.d.ts +2 -0
- package/dist/resources/pod/container/index.d.ts.map +1 -0
- package/dist/resources/pod/container/index.js +18 -0
- package/dist/resources/pod/container/index.js.map +1 -0
- package/dist/resources/pod/container/mounts.d.ts +27 -0
- package/dist/resources/pod/container/mounts.d.ts.map +1 -0
- package/dist/resources/pod/container/mounts.js +40 -0
- package/dist/resources/pod/container/mounts.js.map +1 -0
- package/dist/resources/pod/index.d.ts +4 -0
- package/dist/resources/pod/index.d.ts.map +1 -0
- package/dist/resources/pod/index.js +20 -0
- package/dist/resources/pod/index.js.map +1 -0
- package/dist/resources/pod/pod-template.d.ts +29 -0
- package/dist/resources/pod/pod-template.d.ts.map +1 -0
- package/dist/resources/pod/pod-template.js +123 -0
- package/dist/resources/pod/pod-template.js.map +1 -0
- package/dist/resources/pod/volume/devices.d.ts +23 -0
- package/dist/resources/pod/volume/devices.d.ts.map +1 -0
- package/dist/resources/pod/volume/devices.js +94 -0
- package/dist/resources/pod/volume/devices.js.map +1 -0
- package/dist/resources/pod/volume/index.d.ts +4 -0
- package/dist/resources/pod/volume/index.d.ts.map +1 -0
- package/dist/resources/pod/volume/index.js +10 -0
- package/dist/resources/pod/volume/index.js.map +1 -0
- package/dist/resources/pod/volume/volumes.d.ts +30 -0
- package/dist/resources/pod/volume/volumes.d.ts.map +1 -0
- package/dist/resources/pod/volume/volumes.js +124 -0
- package/dist/resources/pod/volume/volumes.js.map +1 -0
- package/dist/resources/secret/index.d.ts +4 -0
- package/dist/resources/secret/index.d.ts.map +1 -0
- package/dist/resources/secret/index.js +39 -0
- package/dist/resources/secret/index.js.map +1 -0
- package/dist/resources/secret/secret.d.ts +9 -0
- package/dist/resources/secret/secret.d.ts.map +1 -0
- package/dist/resources/secret/secret.js +77 -0
- package/dist/resources/secret/secret.js.map +1 -0
- package/dist/resources/service/frontend.d.ts +11 -0
- package/dist/resources/service/frontend.d.ts.map +1 -0
- package/dist/resources/service/frontend.js +3 -0
- package/dist/resources/service/frontend.js.map +1 -0
- package/dist/resources/service/index.d.ts +2 -0
- package/dist/resources/service/index.d.ts.map +1 -0
- package/dist/resources/service/index.js +18 -0
- package/dist/resources/service/index.js.map +1 -0
- package/dist/resources/service/service-port.d.ts +19 -0
- package/dist/resources/service/service-port.d.ts.map +1 -0
- package/dist/resources/service/service-port.js +21 -0
- package/dist/resources/service/service-port.js.map +1 -0
- package/dist/resources/service/service.d.ts +21 -0
- package/dist/resources/service/service.d.ts.map +1 -0
- package/dist/resources/service/service.js +99 -0
- package/dist/resources/service/service.js.map +1 -0
- package/dist/resources/utils/adapters.d.ts +8 -0
- package/dist/resources/utils/adapters.d.ts.map +1 -0
- package/dist/resources/utils/adapters.js +38 -0
- package/dist/resources/utils/adapters.js.map +1 -0
- package/dist/runner/exporter/assembler.d.ts +50 -0
- package/dist/runner/exporter/assembler.d.ts.map +1 -0
- package/dist/runner/exporter/assembler.js +122 -0
- package/dist/runner/exporter/assembler.js.map +1 -0
- package/dist/runner/exporter/index.d.ts +3 -0
- package/dist/runner/exporter/index.d.ts.map +1 -0
- package/dist/runner/exporter/index.js +19 -0
- package/dist/runner/exporter/index.js.map +1 -0
- package/dist/runner/exporter/loader.d.ts +19 -0
- package/dist/runner/exporter/loader.d.ts.map +1 -0
- package/dist/runner/exporter/loader.js +47 -0
- package/dist/runner/exporter/loader.js.map +1 -0
- package/dist/runner/exporter/manifester.d.ts +21 -0
- package/dist/runner/exporter/manifester.d.ts.map +1 -0
- package/dist/runner/exporter/manifester.js +72 -0
- package/dist/runner/exporter/manifester.js.map +1 -0
- package/dist/runner/exporter/meta.d.ts +2 -0
- package/dist/runner/exporter/meta.d.ts.map +1 -0
- package/dist/runner/exporter/meta.js +5 -0
- package/dist/runner/exporter/meta.js.map +1 -0
- package/dist/runner/exporter/progress-shower.d.ts +11 -0
- package/dist/runner/exporter/progress-shower.d.ts.map +1 -0
- package/dist/runner/exporter/progress-shower.js +68 -0
- package/dist/runner/exporter/progress-shower.js.map +1 -0
- package/dist/runner/exporter/saver.d.ts +27 -0
- package/dist/runner/exporter/saver.d.ts.map +1 -0
- package/dist/runner/exporter/saver.js +49 -0
- package/dist/runner/exporter/saver.js.map +1 -0
- package/dist/runner/exporter/serializer.d.ts +18 -0
- package/dist/runner/exporter/serializer.d.ts.map +1 -0
- package/dist/runner/exporter/serializer.js +47 -0
- package/dist/runner/exporter/serializer.js.map +1 -0
- package/dist/runner/exporter/stage.d.ts +9 -0
- package/dist/runner/exporter/stage.d.ts.map +1 -0
- package/dist/runner/exporter/stage.js +94 -0
- package/dist/runner/exporter/stage.js.map +1 -0
- package/dist/runner/exporter/trace-embedder.d.ts +1 -0
- package/dist/runner/exporter/trace-embedder.d.ts.map +1 -0
- package/dist/runner/exporter/trace-embedder.js +2 -0
- package/dist/runner/exporter/trace-embedder.js.map +1 -0
- package/dist/runner/index.d.ts +2 -0
- package/dist/runner/index.d.ts.map +1 -0
- package/dist/runner/index.js +18 -0
- package/dist/runner/index.js.map +1 -0
- package/dist/runner/proverbs.d.ts +1 -0
- package/dist/runner/proverbs.d.ts.map +1 -0
- package/dist/runner/proverbs.js +2 -0
- package/dist/runner/proverbs.js.map +1 -0
- package/dist/runner/runner.d.ts +13 -0
- package/dist/runner/runner.d.ts.map +1 -0
- package/dist/runner/runner.js +51 -0
- package/dist/runner/runner.js.map +1 -0
- package/dist/runner/silly/proverbs.d.ts +7 -0
- package/dist/runner/silly/proverbs.d.ts.map +1 -0
- package/dist/runner/silly/proverbs.js +20 -0
- package/dist/runner/silly/proverbs.js.map +1 -0
- package/dist/runner/summarizer.d.ts +23 -0
- package/dist/runner/summarizer.d.ts.map +1 -0
- package/dist/runner/summarizer.js +115 -0
- package/dist/runner/summarizer.js.map +1 -0
- package/dist/src.tsbuildinfo +1 -0
- package/dist/test.tsbuildinfo +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +5 -0
- package/dist/version.js.map +1 -0
- package/dist/world/index.d.ts +2 -0
- package/dist/world/index.d.ts.map +1 -0
- package/dist/world/index.js +18 -0
- package/dist/world/index.js.map +1 -0
- package/dist/world/world.d.ts +28 -0
- package/dist/world/world.d.ts.map +1 -0
- package/dist/world/world.js +41 -0
- package/dist/world/world.js.map +1 -0
- package/package.json +106 -0
- package/proverbs.txt +23 -0
- package/src/_imports/_mix.ts +3 -0
- package/src/_imports/acme.cert-manager.io.ts +8202 -0
- package/src/_imports/gateway.networking.k8s.io.ts +12226 -0
- package/src/_imports/index.ts +2 -0
- package/src/_imports/k8s.ts +31028 -0
- package/src/_imports/tsconfig.json +22 -0
- package/src/api-versions.ts +5 -0
- package/src/error.ts +7 -0
- package/src/external/index.ts +34 -0
- package/src/file/exports.ts +63 -0
- package/src/file/factory.ts +150 -0
- package/src/file/file.ts +34 -0
- package/src/file/index.ts +1 -0
- package/src/file/origin.ts +38 -0
- package/src/index.ts +8 -0
- package/src/k8ts-sys-kind.ts +4 -0
- package/src/kind-map.ts +39 -0
- package/src/meta/k8ts-section.ts +6 -0
- package/src/node/abs-resource.ts +32 -0
- package/src/node/dependencies.ts +0 -0
- package/src/node/index.ts +1 -0
- package/src/node/manifest-resource.ts +19 -0
- package/src/node/sub-resource.ts +20 -0
- package/src/node/top-resource.ts +7 -0
- package/src/paths.ts +1 -0
- package/src/resources/configmap/configmap.ts +26 -0
- package/src/resources/configmap/index.ts +1 -0
- package/src/resources/deployment/deployment.ts +54 -0
- package/src/resources/deployment/index.ts +1 -0
- package/src/resources/http-route/http-route.ts +45 -0
- package/src/resources/http-route/index.ts +1 -0
- package/src/resources/index.ts +8 -0
- package/src/resources/namespace/index.ts +1 -0
- package/src/resources/namespace/namespace.ts +26 -0
- package/src/resources/persistent/access-mode.ts +29 -0
- package/src/resources/persistent/block-mode.ts +1 -0
- package/src/resources/persistent/claim/index.ts +1 -0
- package/src/resources/persistent/claim/pvc.ts +52 -0
- package/src/resources/persistent/index.ts +10 -0
- package/src/resources/persistent/volume/backend.ts +14 -0
- package/src/resources/persistent/volume/index.ts +1 -0
- package/src/resources/persistent/volume/parse-backend.ts +23 -0
- package/src/resources/persistent/volume/pv.ts +56 -0
- package/src/resources/pod/container/container.ts +137 -0
- package/src/resources/pod/container/index.ts +1 -0
- package/src/resources/pod/container/mounts.ts +45 -0
- package/src/resources/pod/index.ts +3 -0
- package/src/resources/pod/pod-template.ts +73 -0
- package/src/resources/pod/volume/devices.ts +50 -0
- package/src/resources/pod/volume/index.ts +3 -0
- package/src/resources/pod/volume/volumes.ts +90 -0
- package/src/resources/secret/index.ts +3 -0
- package/src/resources/secret/secret.ts +25 -0
- package/src/resources/service/frontend.ts +11 -0
- package/src/resources/service/index.ts +1 -0
- package/src/resources/service/service-port.ts +24 -0
- package/src/resources/service/service.ts +53 -0
- package/src/resources/utils/adapters.ts +36 -0
- package/src/runner/exporter/FILE xyz.md +47 -0
- package/src/runner/exporter/assembler.ts +170 -0
- package/src/runner/exporter/index.ts +2 -0
- package/src/runner/exporter/loader.ts +54 -0
- package/src/runner/exporter/manifester.ts +77 -0
- package/src/runner/exporter/meta.ts +1 -0
- package/src/runner/exporter/progress-shower.ts +77 -0
- package/src/runner/exporter/saver.ts +62 -0
- package/src/runner/exporter/serializer.ts +49 -0
- package/src/runner/exporter/stage.ts +36 -0
- package/src/runner/exporter/trace-embedder.ts +0 -0
- package/src/runner/index.ts +1 -0
- package/src/runner/proverbs.ts +0 -0
- package/src/runner/runner.ts +53 -0
- package/src/runner/silly/proverbs.ts +14 -0
- package/src/runner/summarizer.ts +133 -0
- package/src/tsconfig.json +16 -0
- package/src/version.ts +1 -0
- package/src/world/index.ts +1 -0
- package/src/world/world.ts +62 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"composite": true,
|
|
4
|
+
"module": "CommonJS",
|
|
5
|
+
"target": "ES2020",
|
|
6
|
+
"lib": ["ES2020"],
|
|
7
|
+
"allowSyntheticDefaultImports": true,
|
|
8
|
+
"esModuleInterop": true,
|
|
9
|
+
"moduleResolution": "Node",
|
|
10
|
+
"resolveJsonModule": true,
|
|
11
|
+
"declarationMap": true,
|
|
12
|
+
"sourceMap": true,
|
|
13
|
+
"tsBuildInfoFile": "../../dist/.imports.tsbuildinfo",
|
|
14
|
+
"rootDir": ".",
|
|
15
|
+
"noEmit": false,
|
|
16
|
+
"declaration": true,
|
|
17
|
+
"outDir": "../../dist/_imports",
|
|
18
|
+
"strict": false
|
|
19
|
+
},
|
|
20
|
+
"include": ["**/*.ts"],
|
|
21
|
+
"exclude": ["**/node_modules"]
|
|
22
|
+
}
|
package/src/error.ts
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Kind, Origin, relations } from "@k8ts/instruments"
|
|
2
|
+
import { Meta } from "@k8ts/metadata"
|
|
3
|
+
import { ManifestResource } from "../node"
|
|
4
|
+
|
|
5
|
+
@relations("none")
|
|
6
|
+
export class External<K extends Kind> extends ManifestResource {
|
|
7
|
+
constructor(
|
|
8
|
+
origin: Origin,
|
|
9
|
+
readonly kind: K,
|
|
10
|
+
name: string,
|
|
11
|
+
namespace: string | undefined
|
|
12
|
+
) {
|
|
13
|
+
super(
|
|
14
|
+
origin,
|
|
15
|
+
Meta.make({
|
|
16
|
+
name,
|
|
17
|
+
namespace
|
|
18
|
+
}),
|
|
19
|
+
{}
|
|
20
|
+
)
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
manifestBody(): never {
|
|
24
|
+
throw new Error("External resources cannot be manifested")
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
ref() {
|
|
28
|
+
return {
|
|
29
|
+
kind: this.kind.name,
|
|
30
|
+
name: this.name,
|
|
31
|
+
namespace: this.namespace
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { FutureExports, Producer } from "@k8ts/instruments"
|
|
2
|
+
import { seq, type Seq } from "doddle"
|
|
3
|
+
import type { ManifestResource } from "../node"
|
|
4
|
+
import { k8ts_namespace } from "../runner/exporter/meta"
|
|
5
|
+
import { Factory } from "./factory"
|
|
6
|
+
import type { FileOrigin } from "./origin"
|
|
7
|
+
|
|
8
|
+
export namespace FileExports {
|
|
9
|
+
export type Producer<
|
|
10
|
+
Scope extends FileOrigin.Scope,
|
|
11
|
+
Produced extends object
|
|
12
|
+
> = Producer.Producer<Factory.FromScope<Scope>, Produced>
|
|
13
|
+
export interface Props<
|
|
14
|
+
Scope extends FileOrigin.Scope = FileOrigin.Scope,
|
|
15
|
+
Produced extends ManifestResource = ManifestResource
|
|
16
|
+
> {
|
|
17
|
+
origin: FileOrigin<Scope>
|
|
18
|
+
FILE: Producer<Scope, Produced>
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export class Core {
|
|
22
|
+
#props: Props
|
|
23
|
+
#produced: Seq<ManifestResource>
|
|
24
|
+
constructor(props: Props) {
|
|
25
|
+
this.#props = props
|
|
26
|
+
const producer = Producer.map(props.FILE, () => {
|
|
27
|
+
if (props.origin.scope === "cluster") {
|
|
28
|
+
return new Factory.Cluster(props.origin.node)
|
|
29
|
+
} else {
|
|
30
|
+
return new Factory.Namespaced(props.origin.node)
|
|
31
|
+
}
|
|
32
|
+
})
|
|
33
|
+
this.#produced = seq(() => producer(props.origin)).each(x => {
|
|
34
|
+
x.meta.add(k8ts_namespace, {
|
|
35
|
+
"#is-exported": "true"
|
|
36
|
+
})
|
|
37
|
+
})
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
get __entity__() {
|
|
41
|
+
return this.#props.origin
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
get __node__() {
|
|
45
|
+
return this.#props.origin.node
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
[Symbol.iterator]() {
|
|
49
|
+
return this.#produced[Symbol.iterator]()
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export function make<Scope extends FileOrigin.Scope, Produced extends ManifestResource>(
|
|
54
|
+
props: Props<Scope, Produced>
|
|
55
|
+
): Core & FutureExports<Produced> {
|
|
56
|
+
const core = new Core(props)
|
|
57
|
+
return FutureExports.make({
|
|
58
|
+
actual: core,
|
|
59
|
+
origin: props.origin.node,
|
|
60
|
+
exports: core
|
|
61
|
+
}) as any
|
|
62
|
+
}
|
|
63
|
+
}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import { Origin, auto_register, displayers, type LiveRefable } from "@k8ts/instruments"
|
|
2
|
+
import chalk from "chalk"
|
|
3
|
+
import {
|
|
4
|
+
ConfigMap,
|
|
5
|
+
Deployment,
|
|
6
|
+
HttpRoute,
|
|
7
|
+
Namespace,
|
|
8
|
+
Persistent,
|
|
9
|
+
PodTemplate,
|
|
10
|
+
Secret,
|
|
11
|
+
Service
|
|
12
|
+
} from "../resources"
|
|
13
|
+
import { AssemblyStage } from "../runner/exporter"
|
|
14
|
+
import type { FileOrigin } from "./origin"
|
|
15
|
+
|
|
16
|
+
export type Factory = Factory.Factory
|
|
17
|
+
export namespace Factory {
|
|
18
|
+
export type Factory = Cluster | Namespaced
|
|
19
|
+
export type FromScope<FScope extends FileOrigin.Scope> = FScope extends "cluster"
|
|
20
|
+
? Cluster
|
|
21
|
+
: Namespaced
|
|
22
|
+
|
|
23
|
+
export class Base {
|
|
24
|
+
constructor(readonly origin: Origin) {}
|
|
25
|
+
|
|
26
|
+
protected _metaWithName(name: string) {
|
|
27
|
+
return this.origin.meta.add({
|
|
28
|
+
name
|
|
29
|
+
})
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
@auto_register
|
|
33
|
+
export class Cluster extends Base {
|
|
34
|
+
PersistentVolume<Name extends string, Mode extends Persistent.DataMode = "Filesystem">(
|
|
35
|
+
name: Name,
|
|
36
|
+
props: Persistent.Volume.Props<Mode>
|
|
37
|
+
) {
|
|
38
|
+
return new Persistent.Volume.Volume(
|
|
39
|
+
this.origin,
|
|
40
|
+
this._metaWithName(name),
|
|
41
|
+
props
|
|
42
|
+
) as LiveRefable<Persistent.Volume<Mode>, Name>
|
|
43
|
+
}
|
|
44
|
+
Namespace<Name extends string>(name: Name, props?: Namespace.Props) {
|
|
45
|
+
return new Namespace.Namespace(
|
|
46
|
+
this.origin,
|
|
47
|
+
this._metaWithName(name),
|
|
48
|
+
props
|
|
49
|
+
) as LiveRefable<Namespace, Name>
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
@auto_register
|
|
54
|
+
export class Namespaced extends Base {
|
|
55
|
+
Claim<Mode extends Persistent.DataMode, Name extends string>(
|
|
56
|
+
name: Name,
|
|
57
|
+
mode: Persistent.Claim.Props<Mode>
|
|
58
|
+
) {
|
|
59
|
+
return new Persistent.Claim.Claim(
|
|
60
|
+
this.origin,
|
|
61
|
+
this._metaWithName(name),
|
|
62
|
+
mode
|
|
63
|
+
) as LiveRefable<Persistent.Claim<Mode>, Name>
|
|
64
|
+
}
|
|
65
|
+
ConfigMap<Name extends string>(name: Name, props: ConfigMap.Props) {
|
|
66
|
+
return new ConfigMap.ConfigMap(
|
|
67
|
+
this.origin,
|
|
68
|
+
this._metaWithName(name),
|
|
69
|
+
props
|
|
70
|
+
) as LiveRefable<ConfigMap, Name>
|
|
71
|
+
}
|
|
72
|
+
Secret<Name extends string>(name: Name, props: Secret.Props) {
|
|
73
|
+
return new Secret.Secret(this.origin, this._metaWithName(name), props) as LiveRefable<
|
|
74
|
+
Secret,
|
|
75
|
+
Name
|
|
76
|
+
>
|
|
77
|
+
}
|
|
78
|
+
Service<Name extends string, Ports extends string>(
|
|
79
|
+
name: Name,
|
|
80
|
+
props: Service.Props<Ports>
|
|
81
|
+
) {
|
|
82
|
+
return new Service.Service(this.origin, this._metaWithName(name), props) as LiveRefable<
|
|
83
|
+
Service<Ports>,
|
|
84
|
+
Name
|
|
85
|
+
>
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
Deployment<Name extends string, Ports extends string>(
|
|
89
|
+
name: Name,
|
|
90
|
+
props: Deployment.Props<Ports>
|
|
91
|
+
) {
|
|
92
|
+
return new Deployment.Deployment(
|
|
93
|
+
this.origin,
|
|
94
|
+
this._metaWithName(name),
|
|
95
|
+
props
|
|
96
|
+
) as LiveRefable<Deployment<Ports>, Name>
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
DomainRoute<Name extends string, Ports extends string>(
|
|
100
|
+
name: Name,
|
|
101
|
+
props: HttpRoute.Props<Ports>
|
|
102
|
+
) {
|
|
103
|
+
return new HttpRoute.HttpRoute(
|
|
104
|
+
this.origin,
|
|
105
|
+
this._metaWithName(name),
|
|
106
|
+
props
|
|
107
|
+
) as LiveRefable<HttpRoute<Ports>, Name>
|
|
108
|
+
}
|
|
109
|
+
PodTemplate<Name extends string, Ports extends string>(
|
|
110
|
+
name: Name,
|
|
111
|
+
props: PodTemplate.Props<Ports> | PodTemplate.Props<Ports>["POD"]
|
|
112
|
+
) {
|
|
113
|
+
const props_ = typeof props === "function" ? { POD: props } : props
|
|
114
|
+
return new PodTemplate.PodTemplate(
|
|
115
|
+
this.origin,
|
|
116
|
+
this._metaWithName(name),
|
|
117
|
+
props_
|
|
118
|
+
) as LiveRefable<PodTemplate<Ports>, Name>
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
@displayers({
|
|
123
|
+
simple: s => s.text,
|
|
124
|
+
pretty: stage => chalk.bgGreenBright.bold.black(` ${stage.text} `)
|
|
125
|
+
})
|
|
126
|
+
export class Stage {
|
|
127
|
+
text: string
|
|
128
|
+
constructor(private stage: AssemblyStage) {
|
|
129
|
+
this.text = `${stage.toUpperCase()}`
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
private get _emoji() {
|
|
133
|
+
switch (this.stage) {
|
|
134
|
+
case "gathering":
|
|
135
|
+
return "🛒"
|
|
136
|
+
case "loading":
|
|
137
|
+
return "🚚"
|
|
138
|
+
case "manifesting":
|
|
139
|
+
return "👻"
|
|
140
|
+
case "start":
|
|
141
|
+
return "🚀"
|
|
142
|
+
case "saving":
|
|
143
|
+
return "💾"
|
|
144
|
+
case "serializing":
|
|
145
|
+
return "🖨️"
|
|
146
|
+
case "done":
|
|
147
|
+
return "✅"
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
package/src/file/file.ts
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { FutureExports, Origin } from "@k8ts/instruments"
|
|
2
|
+
import type { ManifestResource } from "../node"
|
|
3
|
+
import { FileExports as Exports_ } from "./exports"
|
|
4
|
+
import { Factory as Factory_ } from "./factory"
|
|
5
|
+
import { FileOrigin } from "./origin"
|
|
6
|
+
export type File<T extends ManifestResource = ManifestResource> = File.File<T>
|
|
7
|
+
export namespace File {
|
|
8
|
+
export import Factory = Factory_
|
|
9
|
+
|
|
10
|
+
export import Exports = Exports_
|
|
11
|
+
|
|
12
|
+
export interface Props<
|
|
13
|
+
Scope extends FileOrigin.Scope = FileOrigin.Scope,
|
|
14
|
+
Produced extends ManifestResource = ManifestResource
|
|
15
|
+
> extends FileOrigin.Props<Scope> {
|
|
16
|
+
FILE: Exports.Producer<Scope, Produced>
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export type Input = Exports.Core & Iterable<ManifestResource>
|
|
20
|
+
export type File<T extends ManifestResource> = Exports.Core & FutureExports<T>
|
|
21
|
+
|
|
22
|
+
export function make<Scope extends FileOrigin.Scope, Produced extends ManifestResource>(
|
|
23
|
+
name: string,
|
|
24
|
+
props: Props<Scope, Produced>,
|
|
25
|
+
parent: Origin
|
|
26
|
+
) {
|
|
27
|
+
const origin = FileOrigin.make(name, props, parent)
|
|
28
|
+
const exports = Exports.make({
|
|
29
|
+
origin,
|
|
30
|
+
FILE: props.FILE
|
|
31
|
+
})
|
|
32
|
+
return exports as File<Produced>
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./file"
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { BaseOriginEntity, Origin, OriginEntityProps } from "@k8ts/instruments"
|
|
2
|
+
import { Meta } from "@k8ts/metadata"
|
|
3
|
+
import { k8tsBuildKind } from "../k8ts-sys-kind"
|
|
4
|
+
import type { Namespace } from "../resources"
|
|
5
|
+
export type FileOrigin<FScope extends FileOrigin.Scope = FileOrigin.Scope> =
|
|
6
|
+
FileOrigin.FileEntity<FScope>
|
|
7
|
+
export namespace FileOrigin {
|
|
8
|
+
export type Scope = Namespace | "cluster"
|
|
9
|
+
|
|
10
|
+
export interface Props<FScope extends Scope = Scope> extends OriginEntityProps {
|
|
11
|
+
meta?: Meta.Input
|
|
12
|
+
scope: FScope
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const ident = k8tsBuildKind.kind("File")
|
|
16
|
+
export class FileEntity<FScope extends Scope> extends BaseOriginEntity<Props<FScope>> {
|
|
17
|
+
kind = k8tsBuildKind.kind("File")
|
|
18
|
+
|
|
19
|
+
constructor(name: string, props: Props<FScope>, parent: Origin) {
|
|
20
|
+
super(name, props, parent)
|
|
21
|
+
this.meta = this.meta.add({
|
|
22
|
+
namespace: props.scope === "cluster" ? undefined : props.scope.name
|
|
23
|
+
})
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
get scope() {
|
|
27
|
+
return this.props.scope
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export function make<FScope extends Scope>(
|
|
32
|
+
name: string,
|
|
33
|
+
props: Props<FScope>,
|
|
34
|
+
parent: Origin
|
|
35
|
+
): FileEntity<FScope> {
|
|
36
|
+
return new FileEntity(name, props, parent)
|
|
37
|
+
}
|
|
38
|
+
}
|
package/src/index.ts
ADDED
package/src/kind-map.ts
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import {
|
|
2
|
+
BaseOriginEntity,
|
|
3
|
+
Kind,
|
|
4
|
+
kinded,
|
|
5
|
+
MetadataEntity,
|
|
6
|
+
OriginEntityProps
|
|
7
|
+
} from "@k8ts/instruments"
|
|
8
|
+
import { k8tsBuildKind } from "./k8ts-sys-kind"
|
|
9
|
+
const ident = k8tsBuildKind.kind("World")
|
|
10
|
+
|
|
11
|
+
class K8tsRootOriginEntity extends BaseOriginEntity<OriginEntityProps> {
|
|
12
|
+
override kind = ident
|
|
13
|
+
constructor() {
|
|
14
|
+
super(
|
|
15
|
+
"K8ts",
|
|
16
|
+
{
|
|
17
|
+
meta: {
|
|
18
|
+
"^produced-by": `k8ts@${k8tsBuildKind.name.slice(1)}`
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
null
|
|
22
|
+
)
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
get decorator() {
|
|
26
|
+
return <Target extends new (...args: any[]) => MetadataEntity>(kind: Kind.Identifier) => {
|
|
27
|
+
return (ctor: Target) => {
|
|
28
|
+
this.node.resourceKinds.add(kind, ctor)
|
|
29
|
+
kinded(kind)(ctor)
|
|
30
|
+
return ctor
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export const K8tsRootOrigin = new K8tsRootOriginEntity()
|
|
37
|
+
export const K8tsResources = K8tsRootOrigin.node.resourceKinds
|
|
38
|
+
|
|
39
|
+
export const k8ts = K8tsRootOrigin.decorator
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { displayers, Kind, Origin, RefKey, ResourceNode } from "@k8ts/instruments"
|
|
2
|
+
import { Doddle, doddle } from "doddle"
|
|
3
|
+
export interface DependsOn {
|
|
4
|
+
resource: AbsResource
|
|
5
|
+
text: string
|
|
6
|
+
}
|
|
7
|
+
@displayers({
|
|
8
|
+
simple: s => s.node,
|
|
9
|
+
pretty: s => s.node
|
|
10
|
+
})
|
|
11
|
+
export abstract class AbsResource<Props extends object = object> {
|
|
12
|
+
abstract readonly kind: Kind.Identifier<string, Kind.Identifier>
|
|
13
|
+
|
|
14
|
+
private _node: Doddle<ResourceNode>
|
|
15
|
+
|
|
16
|
+
get node() {
|
|
17
|
+
return this._node.pull()
|
|
18
|
+
}
|
|
19
|
+
constructor(
|
|
20
|
+
origin: Origin,
|
|
21
|
+
readonly name: string,
|
|
22
|
+
readonly props: Props
|
|
23
|
+
) {
|
|
24
|
+
this._node = doddle(() => new ResourceNode(origin, this, RefKey.make(this.kind, this.name)))
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
get shortFqn() {
|
|
28
|
+
return [this.node.origin.name, [this.kind.name, this.name].filter(Boolean).join("/")].join(
|
|
29
|
+
":"
|
|
30
|
+
)
|
|
31
|
+
}
|
|
32
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { ManifestResource } from "./manifest-resource"
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Builder, Kind, type Origin } from "@k8ts/instruments"
|
|
2
|
+
import type { Meta, MutableMeta } from "@k8ts/metadata"
|
|
3
|
+
import { TopResource } from "./top-resource"
|
|
4
|
+
|
|
5
|
+
export abstract class ManifestResource<Props extends object = object> extends TopResource<Props> {
|
|
6
|
+
protected manifest() {
|
|
7
|
+
return Builder.get(this).manifest()
|
|
8
|
+
}
|
|
9
|
+
abstract override readonly kind: Kind.Kind
|
|
10
|
+
readonly meta: MutableMeta
|
|
11
|
+
constructor(origin: Origin, meta: Meta | MutableMeta, props: Props) {
|
|
12
|
+
super(origin, meta.get("name"), props)
|
|
13
|
+
this.meta = meta.toMutable()
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
get namespace() {
|
|
17
|
+
return this.meta.tryGet("namespace")
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { relations } from "@k8ts/instruments"
|
|
2
|
+
import { AbsResource } from "./abs-resource"
|
|
3
|
+
import type { ManifestResource } from "./manifest-resource"
|
|
4
|
+
|
|
5
|
+
@relations({
|
|
6
|
+
parent: self => self.parent
|
|
7
|
+
})
|
|
8
|
+
export abstract class SubResource<Props extends object = object> extends AbsResource<Props> {
|
|
9
|
+
constructor(
|
|
10
|
+
readonly parent: ManifestResource,
|
|
11
|
+
name: string,
|
|
12
|
+
props: Props
|
|
13
|
+
) {
|
|
14
|
+
super(parent.node.origin, name, props)
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
get namespace() {
|
|
18
|
+
return this.parent.namespace
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Kind } from "@k8ts/instruments"
|
|
2
|
+
import { AbsResource } from "./abs-resource"
|
|
3
|
+
|
|
4
|
+
export abstract class TopResource<Props extends object = object> extends AbsResource<Props> {
|
|
5
|
+
abstract override readonly kind: Kind.Kind
|
|
6
|
+
abstract readonly namespace: string | undefined
|
|
7
|
+
}
|
package/src/paths.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const proverbsPath = `${__dirname}/../proverbs.txt`
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { manifest, relations } from "@k8ts/instruments"
|
|
2
|
+
import type { CDK } from "../../_imports"
|
|
3
|
+
import { v1 } from "../../api-versions"
|
|
4
|
+
import { k8ts } from "../../kind-map"
|
|
5
|
+
import { ManifestResource } from "../../node/manifest-resource"
|
|
6
|
+
export type ConfigMap = ConfigMap.ConfigMap
|
|
7
|
+
export namespace ConfigMap {
|
|
8
|
+
export interface Props {
|
|
9
|
+
data: Record<string, string>
|
|
10
|
+
name: string
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
const ident = v1.kind("ConfigMap")
|
|
14
|
+
@k8ts(ident)
|
|
15
|
+
@relations("none")
|
|
16
|
+
@manifest({
|
|
17
|
+
body(self): CDK.KubeConfigMapProps {
|
|
18
|
+
return {
|
|
19
|
+
data: self.props.data
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
})
|
|
23
|
+
export class ConfigMap extends ManifestResource<Props> {
|
|
24
|
+
override kind = ident
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./configmap"
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { manifest, Origin, relations } from "@k8ts/instruments"
|
|
2
|
+
import { Meta, MutableMeta } from "@k8ts/metadata"
|
|
3
|
+
import { omit } from "lodash"
|
|
4
|
+
import { CDK } from "../../_imports"
|
|
5
|
+
import { apps_v1 } from "../../api-versions"
|
|
6
|
+
import { k8ts } from "../../kind-map"
|
|
7
|
+
import { ManifestResource } from "../../node/manifest-resource"
|
|
8
|
+
import { PodTemplate } from "../pod/pod-template"
|
|
9
|
+
|
|
10
|
+
export type Deployment<Ports extends string> = Deployment.Deployment<Ports>
|
|
11
|
+
export namespace Deployment {
|
|
12
|
+
export type Props<Ports extends string> = Omit<CDK.DeploymentSpec, "selector" | "template"> & {
|
|
13
|
+
template: PodTemplate.Props<Ports>
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
const ident = apps_v1.kind("Deployment")
|
|
17
|
+
@k8ts(ident)
|
|
18
|
+
@relations({
|
|
19
|
+
kids: s => [s.template]
|
|
20
|
+
})
|
|
21
|
+
@manifest({
|
|
22
|
+
body(self): CDK.KubeDeploymentProps {
|
|
23
|
+
return {
|
|
24
|
+
spec: {
|
|
25
|
+
...omit(self.props, "template"),
|
|
26
|
+
selector: {
|
|
27
|
+
matchLabels: {
|
|
28
|
+
app: self.name
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
template: self.template["manifest"]()
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
})
|
|
36
|
+
export class Deployment<Ports extends string = string> extends ManifestResource<Props<Ports>> {
|
|
37
|
+
kind = ident
|
|
38
|
+
template: PodTemplate<Ports>
|
|
39
|
+
constructor(origin: Origin, meta: Meta | MutableMeta, props: Props<Ports>) {
|
|
40
|
+
super(origin, meta, props)
|
|
41
|
+
this.template = new PodTemplate.PodTemplate(
|
|
42
|
+
origin,
|
|
43
|
+
Meta.make({
|
|
44
|
+
name: this.name,
|
|
45
|
+
"%app": this.name
|
|
46
|
+
}),
|
|
47
|
+
props.template
|
|
48
|
+
)
|
|
49
|
+
}
|
|
50
|
+
get ports() {
|
|
51
|
+
return this.template.ports
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./deployment"
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { manifest, relations } from "@k8ts/instruments"
|
|
2
|
+
import type { CDK } from "../../_imports"
|
|
3
|
+
import { gateway_v1 } from "../../api-versions"
|
|
4
|
+
import type { External } from "../../external"
|
|
5
|
+
import { k8ts } from "../../kind-map"
|
|
6
|
+
import { ManifestResource } from "../../node"
|
|
7
|
+
import type { Service } from "../service"
|
|
8
|
+
|
|
9
|
+
export type HttpRoute<Ports extends string> = HttpRoute.HttpRoute<Ports>
|
|
10
|
+
|
|
11
|
+
export namespace HttpRoute {
|
|
12
|
+
const gwKind = gateway_v1.kind("Gateway")
|
|
13
|
+
export interface Props<Ports extends string> {
|
|
14
|
+
parent: External<typeof gwKind>
|
|
15
|
+
hostname: string
|
|
16
|
+
backend: Service.Port<Ports>
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
const kind = gateway_v1.kind("HttpRoute")
|
|
20
|
+
@k8ts(kind)
|
|
21
|
+
@relations({
|
|
22
|
+
needs: self => ({
|
|
23
|
+
gateway: self.props.parent,
|
|
24
|
+
service: self.props.backend.service
|
|
25
|
+
})
|
|
26
|
+
})
|
|
27
|
+
@manifest({
|
|
28
|
+
body(self): CDK.HttpRouteProps {
|
|
29
|
+
return {
|
|
30
|
+
spec: {
|
|
31
|
+
parentRefs: [self.props.parent.ref()],
|
|
32
|
+
hostnames: [self.props.hostname],
|
|
33
|
+
rules: [
|
|
34
|
+
{
|
|
35
|
+
backendRefs: [self.props.backend.ref()]
|
|
36
|
+
}
|
|
37
|
+
]
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
})
|
|
42
|
+
export class HttpRoute<Ports extends string> extends ManifestResource<Props<Ports>> {
|
|
43
|
+
kind = gateway_v1.kind("HttpRoute")
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./http-route"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./namespace"
|