@highstate/library 0.7.8 → 0.7.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/highstate.manifest.json +1 -1
- package/dist/index.js +150 -53
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
- package/src/common.ts +29 -0
- package/src/index.ts +1 -0
- package/src/k3s.ts +5 -1
- package/src/k8s.ts +46 -41
- package/src/nixos.ts +0 -0
- package/src/timeweb.ts +73 -0
package/dist/index.js
CHANGED
@@ -9,6 +9,7 @@ var common_exports = {};
|
|
9
9
|
__export(common_exports, {
|
10
10
|
endpointEntity: () => endpointEntity,
|
11
11
|
existingServer: () => existingServer,
|
12
|
+
script: () => script,
|
12
13
|
serverEntity: () => serverEntity
|
13
14
|
});
|
14
15
|
import { defineEntity as defineEntity2, defineUnit as defineUnit2, Type as Type2 } from "@highstate/contract";
|
@@ -121,6 +122,29 @@ var existingServer = defineUnit2({
|
|
121
122
|
path: "existing-server"
|
122
123
|
}
|
123
124
|
});
|
125
|
+
var script = defineUnit2({
|
126
|
+
type: "common.script",
|
127
|
+
args: {
|
128
|
+
script: Type2.String({ language: "shell" }),
|
129
|
+
updateScript: Type2.Optional(Type2.String({ language: "shell" })),
|
130
|
+
deleteScript: Type2.Optional(Type2.String({ language: "shell" }))
|
131
|
+
},
|
132
|
+
inputs: {
|
133
|
+
server: serverEntity
|
134
|
+
},
|
135
|
+
outputs: {
|
136
|
+
server: serverEntity
|
137
|
+
},
|
138
|
+
meta: {
|
139
|
+
displayName: "Shell Script",
|
140
|
+
description: "Run a shell script on the server.",
|
141
|
+
primaryIcon: "mdi:bash"
|
142
|
+
},
|
143
|
+
source: {
|
144
|
+
package: "@highstate/common",
|
145
|
+
path: "script"
|
146
|
+
}
|
147
|
+
});
|
124
148
|
|
125
149
|
// src/proxmox.ts
|
126
150
|
var proxmox_exports = {};
|
@@ -303,6 +327,7 @@ __export(k8s_exports, {
|
|
303
327
|
servicePortSchema: () => servicePortSchema,
|
304
328
|
serviceSpecSchema: () => serviceSpecSchema,
|
305
329
|
serviceTypeSchema: () => serviceTypeSchema,
|
330
|
+
sharedClusterArgs: () => sharedClusterArgs,
|
306
331
|
statefulSetEntity: () => statefulSetEntity,
|
307
332
|
tlsIssuerEntity: () => tlsIssuerEntity
|
308
333
|
});
|
@@ -401,65 +426,68 @@ var clusterEntity2 = defineEntity5({
|
|
401
426
|
}
|
402
427
|
});
|
403
428
|
var internalIpsPolicySchema = Type5.StringEnum(["always", "public", "never"]);
|
404
|
-
var
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
...Type5.Optional(Type5.Array(Type5.String())),
|
416
|
-
description: `The list of external IPs of the cluster nodes allowed to be used for external access.
|
429
|
+
var sharedClusterArgs = {
|
430
|
+
/**
|
431
|
+
* The list of external IPs of the cluster nodes allowed to be used for external access.
|
432
|
+
*
|
433
|
+
* If not provided, will be automatically detected by querying the cluster nodes.
|
434
|
+
*
|
435
|
+
* @schema
|
436
|
+
*/
|
437
|
+
externalIps: {
|
438
|
+
...Type5.Optional(Type5.Array(Type5.String())),
|
439
|
+
description: `The list of external IPs of the cluster nodes allowed to be used for external access.
|
417
440
|
|
418
441
|
If not provided, will be automatically detected by querying the cluster nodes.`
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
|
442
|
+
},
|
443
|
+
/**
|
444
|
+
* The policy for using internal IPs of the nodes as external IPs.
|
445
|
+
*
|
446
|
+
* - `always`: always use internal IPs as external IPs;
|
447
|
+
* - `public`: use internal IPs as external IPs only if they are (theoretically) routable from the public internet **(default)**;
|
448
|
+
* - `never`: never use internal IPs as external IPs.
|
449
|
+
*
|
450
|
+
* @schema
|
451
|
+
*/
|
452
|
+
internalIpsPolicy: {
|
453
|
+
...{ ...internalIpsPolicySchema, default: "public" },
|
454
|
+
description: `The policy for using internal IPs of the nodes as external IPs.
|
432
455
|
|
433
456
|
- \`always\`: always use internal IPs as external IPs;
|
434
457
|
- \`public\`: use internal IPs as external IPs only if they are (theoretically) routable from the public internet **(default)**;
|
435
458
|
- \`never\`: never use internal IPs as external IPs.`
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
|
459
|
+
},
|
460
|
+
/**
|
461
|
+
* The FQDN to register the cluster nodes with.
|
462
|
+
*
|
463
|
+
* If provided and `registerFqdn` is set to `true`, the corresponding DNS provider must be provided to set up the DNS records.
|
464
|
+
*
|
465
|
+
* @schema
|
466
|
+
*/
|
467
|
+
fqdn: {
|
468
|
+
...Type5.Optional(Type5.String()),
|
469
|
+
description: `The FQDN to register the cluster nodes with.
|
447
470
|
|
448
471
|
If provided and \`registerFqdn\` is set to \`true\`, the corresponding DNS provider must be provided to set up the DNS records.`
|
449
|
-
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
|
472
|
+
},
|
473
|
+
/**
|
474
|
+
* Whether to register the cluster nodes with the provided FQDN.
|
475
|
+
*
|
476
|
+
* By default, `true`.
|
477
|
+
*
|
478
|
+
* @schema
|
479
|
+
*/
|
480
|
+
registerFqdn: {
|
481
|
+
...Type5.Boolean({ default: true }),
|
482
|
+
description: `Whether to register the cluster nodes with the provided FQDN.
|
460
483
|
|
461
484
|
By default, \`true\`.`
|
462
|
-
|
485
|
+
}
|
486
|
+
};
|
487
|
+
var existingCluster = defineUnit5({
|
488
|
+
type: "k8s.existing-cluster",
|
489
|
+
args: {
|
490
|
+
...sharedClusterArgs
|
463
491
|
},
|
464
492
|
secrets: {
|
465
493
|
/**
|
@@ -486,7 +514,7 @@ var existingCluster = defineUnit5({
|
|
486
514
|
},
|
487
515
|
source: {
|
488
516
|
package: "@highstate/k8s",
|
489
|
-
path: "existing-cluster"
|
517
|
+
path: "units/existing-cluster"
|
490
518
|
}
|
491
519
|
});
|
492
520
|
var gatewayEntity = defineEntity5({
|
@@ -541,7 +569,7 @@ var accessPoint = defineUnit5({
|
|
541
569
|
},
|
542
570
|
source: {
|
543
571
|
package: "@highstate/k8s",
|
544
|
-
path: "access-point"
|
572
|
+
path: "units/access-point"
|
545
573
|
}
|
546
574
|
});
|
547
575
|
var certManager = defineUnit5({
|
@@ -559,7 +587,7 @@ var certManager = defineUnit5({
|
|
559
587
|
},
|
560
588
|
source: {
|
561
589
|
package: "@highstate/k8s",
|
562
|
-
path: "cert-manager"
|
590
|
+
path: "units/cert-manager"
|
563
591
|
}
|
564
592
|
});
|
565
593
|
var dns01TlsIssuer = defineUnit5({
|
@@ -578,7 +606,7 @@ var dns01TlsIssuer = defineUnit5({
|
|
578
606
|
},
|
579
607
|
source: {
|
580
608
|
package: "@highstate/k8s",
|
581
|
-
path: "dns01-issuer"
|
609
|
+
path: "units/dns01-issuer"
|
582
610
|
}
|
583
611
|
});
|
584
612
|
var containerSchema = Type5.Object({
|
@@ -2031,6 +2059,9 @@ __export(k3s_exports, {
|
|
2031
2059
|
import { defineUnit as defineUnit21 } from "@highstate/contract";
|
2032
2060
|
var cluster2 = defineUnit21({
|
2033
2061
|
type: "k3s.cluster",
|
2062
|
+
args: {
|
2063
|
+
...sharedClusterArgs
|
2064
|
+
},
|
2034
2065
|
inputs: {
|
2035
2066
|
server: serverEntity
|
2036
2067
|
},
|
@@ -2094,6 +2125,71 @@ var peer2 = defineUnit22({
|
|
2094
2125
|
path: "peer"
|
2095
2126
|
}
|
2096
2127
|
});
|
2128
|
+
|
2129
|
+
// src/timeweb.ts
|
2130
|
+
var timeweb_exports = {};
|
2131
|
+
__export(timeweb_exports, {
|
2132
|
+
connection: () => connection3,
|
2133
|
+
connectionEntity: () => connectionEntity,
|
2134
|
+
virtualMachine: () => virtualMachine2
|
2135
|
+
});
|
2136
|
+
import { defineEntity as defineEntity12, defineUnit as defineUnit23, Type as Type22 } from "@highstate/contract";
|
2137
|
+
var connectionEntity = defineEntity12({
|
2138
|
+
type: "timeweb.connection",
|
2139
|
+
schema: Type22.Object({
|
2140
|
+
name: Type22.String(),
|
2141
|
+
apiToken: Type22.String()
|
2142
|
+
})
|
2143
|
+
});
|
2144
|
+
var connection3 = defineUnit23({
|
2145
|
+
type: "timeweb.connection",
|
2146
|
+
secrets: {
|
2147
|
+
apiToken: Type22.String()
|
2148
|
+
},
|
2149
|
+
outputs: {
|
2150
|
+
connection: connectionEntity
|
2151
|
+
},
|
2152
|
+
meta: {
|
2153
|
+
displayName: "Timeweb Connection",
|
2154
|
+
description: "Creates a new Timeweb connection.",
|
2155
|
+
primaryIcon: "material-symbols:cloud"
|
2156
|
+
},
|
2157
|
+
source: {
|
2158
|
+
package: "@highstate/timeweb",
|
2159
|
+
path: "connection"
|
2160
|
+
}
|
2161
|
+
});
|
2162
|
+
var virtualMachine2 = defineUnit23({
|
2163
|
+
type: "timeweb.virtual-machine",
|
2164
|
+
args: {
|
2165
|
+
presetId: Type22.Optional(Type22.Number()),
|
2166
|
+
osId: Type22.Optional(Type22.Number()),
|
2167
|
+
availabilityZone: Type22.String()
|
2168
|
+
},
|
2169
|
+
inputs: {
|
2170
|
+
connection: connectionEntity,
|
2171
|
+
sshKeyPair: {
|
2172
|
+
entity: keyPairEntity,
|
2173
|
+
required: false
|
2174
|
+
}
|
2175
|
+
},
|
2176
|
+
secrets: {
|
2177
|
+
sshPrivateKey: Type22.Optional(Type22.String())
|
2178
|
+
},
|
2179
|
+
outputs: {
|
2180
|
+
server: serverEntity
|
2181
|
+
},
|
2182
|
+
meta: {
|
2183
|
+
displayName: "Timeweb Virtual Machine",
|
2184
|
+
description: "Creates a new Timeweb virtual machine.",
|
2185
|
+
primaryIcon: "material-symbols:cloud",
|
2186
|
+
secondaryIcon: "codicon:vm"
|
2187
|
+
},
|
2188
|
+
source: {
|
2189
|
+
package: "@highstate/timeweb",
|
2190
|
+
path: "virtual-machine"
|
2191
|
+
}
|
2192
|
+
});
|
2097
2193
|
export {
|
2098
2194
|
apps_exports as apps,
|
2099
2195
|
cloudflare_exports as cloudflare,
|
@@ -2106,6 +2202,7 @@ export {
|
|
2106
2202
|
restic_exports as restic,
|
2107
2203
|
ssh_exports as ssh,
|
2108
2204
|
talos_exports as talos,
|
2205
|
+
timeweb_exports as timeweb,
|
2109
2206
|
wireguard_exports as wireguard
|
2110
2207
|
};
|
2111
2208
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/common.ts","../src/ssh.ts","../src/proxmox.ts","../src/k8s.ts","../src/dns.ts","../src/talos.ts","../src/wireguard.ts","../src/apps/index.ts","../src/apps/mariadb.ts","../src/restic.ts","../src/apps/postgresql.ts","../src/apps/vaultwarden.ts","../src/apps/traefik.ts","../src/apps/kubernetes-dashboard.ts","../src/apps/grocy.ts","../src/apps/maybe.ts","../src/apps/mongodb.ts","../src/apps/deployment.ts","../src/apps/syncthing.ts","../src/apps/code-server.ts","../src/cloudflare.ts","../src/k3s.ts","../src/mullvad.ts"],"sourcesContent":["import { defineEntity, defineUnit, Type, type Static } from \"@highstate/contract\"\nimport { credentialsSchema, keyPairEntity } from \"./ssh\"\n\nexport const serverEntity = defineEntity({\n type: \"common.server\",\n\n schema: Type.Object({\n endpoint: Type.String(),\n hostname: Type.String(),\n sshCredentials: Type.Optional(credentialsSchema),\n }),\n\n meta: {\n color: \"#009688\",\n },\n})\n\nexport const endpointEntity = defineEntity({\n type: \"common.endpoint\",\n\n schema: Type.Object({\n endpoint: Type.String(),\n }),\n\n meta: {\n color: \"#FFC107\",\n description: \"The L3-L4 endpoint for some network service.\",\n },\n})\n\nexport const existingServer = defineUnit({\n type: \"common.existing-server\",\n\n args: {\n endpoint: Type.String(),\n sshUser: Type.Optional(Type.String({ default: \"root\" })),\n sshPort: Type.Optional(Type.Number({ default: 22 })),\n },\n\n secrets: {\n sshPassword: Type.Optional(Type.String()),\n sshPrivateKey: Type.Optional(Type.String()),\n },\n\n inputs: {\n sshKeyPair: {\n entity: keyPairEntity,\n required: false,\n },\n },\n\n outputs: {\n server: serverEntity,\n },\n\n meta: {\n displayName: \"Existing Server\",\n description: \"An existing server that can be used in the configuration.\",\n primaryIcon: \"mdi:server\",\n defaultNamePrefix: \"server\",\n },\n\n source: {\n package: \"@highstate/common\",\n path: \"existing-server\",\n },\n})\n\nexport type Server = Static<typeof serverEntity.schema>\nexport type Endpoint = Static<typeof endpointEntity.schema>\n","import { defineEntity, defineUnit, Type, type Static } from \"@highstate/contract\"\n\nexport const keyTypeSchema = Type.Union([\n //\n Type.Literal(\"rsa\"),\n Type.Literal(\"ed25519\"),\n])\n\nexport const keyPairEntity = defineEntity({\n type: \"ssh.key-pair\",\n\n schema: Type.Object({\n type: keyTypeSchema,\n privateKey: Type.String(),\n publicKey: Type.String(),\n }),\n\n meta: {\n color: \"#2b5797\",\n },\n})\n\nexport const credentialsSchema = Type.Object({\n endpoint: Type.Optional(Type.String()),\n user: Type.Optional(Type.String()),\n port: Type.Optional(Type.Number()),\n password: Type.Optional(Type.String()),\n privateKey: Type.Optional(Type.String()),\n})\n\nexport const keyPair = defineUnit({\n type: \"ssh.key-pair\",\n\n secrets: {\n privateKey: Type.Optional(Type.String()),\n },\n\n outputs: {\n keyPair: keyPairEntity,\n },\n\n meta: {\n displayName: \"SSH Key Pair\",\n description: \"Holds the ED25519 SSH key pair and generates the private key if not provided.\",\n category: \"ssh\",\n primaryIcon: \"charm:key\",\n primaryIconColor: \"#ffffff\",\n secondaryIcon: \"mdi:lock\",\n secondaryIconColor: \"#ffffff\",\n },\n\n source: {\n package: \"@highstate/common\",\n path: \"ssh/key-pair\",\n },\n})\n\nexport type KeyType = Static<typeof keyTypeSchema>\nexport type Credentials = Static<typeof credentialsSchema>\nexport type KeyPair = Static<typeof keyPairEntity.schema>\n","import { defineEntity, defineUnit, Type } from \"@highstate/contract\"\nimport { serverEntity } from \"./common\"\nimport { keyPairEntity } from \"./ssh\"\n\nexport const clusterEntity = defineEntity({\n type: \"proxmox.cluster\",\n\n schema: Type.Object({\n endpoint: Type.String(),\n insecure: Type.Optional(Type.Boolean()),\n username: Type.Optional(Type.String()),\n\n defaultNodeName: Type.String(),\n defaultDatastoreId: Type.String(),\n\n password: Type.Optional(Type.String()),\n apiToken: Type.Optional(Type.String()),\n }),\n\n meta: {\n color: \"#e56901\",\n },\n})\n\nexport const imageEntity = defineEntity({\n type: \"proxmox.image\",\n\n schema: Type.Object({\n id: Type.String(),\n }),\n\n meta: {\n color: \"#e56901\",\n },\n})\n\nexport const connection = defineUnit({\n type: \"proxmox.connection\",\n\n args: {\n endpoint: Type.String(),\n insecure: Type.Optional(Type.Boolean()),\n username: Type.Optional(Type.String()),\n\n defaultNodeName: Type.Optional(Type.String()),\n defaultDatastoreId: Type.Optional(Type.String()),\n },\n\n secrets: {\n password: Type.Optional(Type.String()),\n apiToken: Type.Optional(Type.String()),\n },\n\n outputs: {\n proxmoxCluster: clusterEntity,\n },\n\n meta: {\n displayName: \"Proxmox Connection\",\n description: \"The connection to an existing Proxmox cluster.\",\n category: \"Proxmox\",\n primaryIcon: \"simple-icons:proxmox\",\n primaryIconColor: \"#e56901\",\n secondaryIcon: \"codicon:vm\",\n },\n\n source: {\n package: \"@highstate/proxmox\",\n path: \"connection\",\n },\n})\n\nexport const image = defineUnit({\n type: \"proxmox.image\",\n\n args: {\n url: Type.String(),\n nodeName: Type.Optional(Type.String()),\n sha256: Type.Optional(Type.String()),\n datastoreId: Type.Optional(Type.String()),\n },\n\n inputs: {\n proxmoxCluster: clusterEntity,\n },\n\n outputs: {\n image: imageEntity,\n },\n\n meta: {\n displayName: \"Proxmox Image\",\n description: \"The image to upload to a Proxmox cluster.\",\n category: \"Proxmox\",\n primaryIcon: \"simple-icons:proxmox\",\n primaryIconColor: \"#e56901\",\n secondaryIcon: \"mage:compact-disk-fill\",\n },\n\n source: {\n package: \"@highstate/proxmox\",\n path: \"image\",\n },\n})\n\nexport const existingImage = defineUnit({\n type: \"proxmox.existing-image\",\n\n args: {\n id: Type.String(),\n },\n\n outputs: {\n image: imageEntity,\n },\n\n meta: {\n displayName: \"Proxmox Existing Image\",\n description: \"The existing image on a Proxmox cluster.\",\n category: \"Proxmox\",\n primaryIcon: \"simple-icons:proxmox\",\n primaryIconColor: \"#e56901\",\n secondaryIcon: \"mage:compact-disk-fill\",\n },\n\n source: {\n package: \"@highstate/proxmox\",\n path: \"existing-image\",\n },\n})\n\nexport const virtualMachine = defineUnit({\n type: \"proxmox.virtual-machine\",\n\n args: {\n nodeName: Type.Optional(Type.String()),\n\n cpuType: Type.Optional(Type.String({ default: \"host\" })),\n cores: Type.Optional(Type.Number({ default: 1 })),\n sockets: Type.Optional(Type.Number({ default: 1 })),\n memory: Type.Optional(Type.Number({ default: 512 })),\n\n ipv4: Type.Optional(Type.String()),\n ipv4Gateway: Type.Optional(Type.String()),\n dns: Type.Optional(Type.Array(Type.String())),\n\n datastoreId: Type.Optional(Type.String()),\n diskSize: Type.Optional(Type.Number({ default: 8 })),\n bridge: Type.Optional(Type.String({ default: \"vmbr0\" })),\n\n sshPort: Type.Optional(Type.Number({ default: 22 })),\n sshUser: Type.Optional(Type.String({ default: \"root\" })),\n\n waitForAgent: Type.Optional(Type.Boolean({ default: true })),\n },\n\n inputs: {\n proxmoxCluster: clusterEntity,\n image: imageEntity,\n\n sshKeyPair: {\n entity: keyPairEntity,\n required: false,\n },\n },\n\n secrets: {\n sshPassword: Type.Optional(Type.String()),\n },\n\n outputs: {\n server: serverEntity,\n },\n\n meta: {\n displayName: \"Proxmox Virtual Machine\",\n description: \"The virtual machine on a Proxmox cluster.\",\n category: \"Proxmox\",\n primaryIcon: \"simple-icons:proxmox\",\n primaryIconColor: \"#e56901\",\n secondaryIcon: \"codicon:vm\",\n },\n\n source: {\n package: \"@highstate/proxmox\",\n path: \"virtual-machine\",\n },\n})\n","import { defineEntity, defineUnit, Type, type Static } from \"@highstate/contract\"\nimport { providerEntity } from \"./dns\"\n\nexport const clusterInfoSchema = Type.Object({\n id: Type.String(),\n name: Type.String(),\n cni: Type.Optional(Type.String()),\n externalIps: Type.Array(Type.String()),\n})\n\nexport const serviceTypeSchema = Type.StringEnum([\"NodePort\", \"LoadBalancer\", \"ClusterIP\"])\n\nexport const metadataSchema = Type.Object({\n namespace: Type.Optional(Type.String()),\n name: Type.String(),\n labels: Type.Optional(Type.Record(Type.String(), Type.String())),\n annotations: Type.Optional(Type.Record(Type.String(), Type.String())),\n})\n\nexport const servicePortSchema = Type.Object({\n name: Type.Optional(Type.String()),\n port: Type.Optional(Type.Number()),\n targetPort: Type.Optional(Type.Union([Type.Number(), Type.String()])),\n protocol: Type.Optional(Type.String()),\n})\n\nexport const serviceSpecSchema = Type.Object({\n type: Type.Optional(Type.String()),\n selector: Type.Record(Type.String(), Type.String()),\n ports: Type.Array(servicePortSchema),\n clusterIP: Type.Optional(Type.String()),\n clusterIPs: Type.Optional(Type.Array(Type.String())),\n externalIPs: Type.Optional(Type.Array(Type.String())),\n})\n\nexport const serviceEntity = defineEntity({\n type: \"k8s.service\",\n\n schema: Type.Object({\n type: Type.Literal(\"k8s.service\"),\n clusterInfo: clusterInfoSchema,\n metadata: metadataSchema,\n spec: serviceSpecSchema,\n }),\n\n meta: {\n color: \"#2196F3\",\n },\n})\n\nexport const clusterEntity = defineEntity({\n type: \"k8s.cluster\",\n\n schema: Type.Object({\n info: clusterInfoSchema,\n kubeconfig: Type.String(),\n }),\n\n meta: {\n color: \"#2196F3\",\n },\n})\n\nexport const internalIpsPolicySchema = Type.StringEnum([\"always\", \"public\", \"never\"])\n\nexport const existingCluster = defineUnit({\n type: \"k8s.existing-cluster\",\n\n args: {\n /**\n * The list of external IPs of the cluster nodes allowed to be used for external access.\n *\n * If not provided, will be automatically detected by querying the cluster nodes.\n *\n * @schema\n */\n externalIps: {\n ...Type.Optional(Type.Array(Type.String())),\n description: `The list of external IPs of the cluster nodes allowed to be used for external access.\n\n If not provided, will be automatically detected by querying the cluster nodes.`,\n},\n\n /**\n * The policy for using internal IPs of the nodes as external IPs.\n *\n * - `always`: always use internal IPs as external IPs;\n * - `public`: use internal IPs as external IPs only if they are (theoretically) routable from the public internet **(default)**;\n * - `never`: never use internal IPs as external IPs.\n *\n * @schema\n */\n internalIpsPolicy: {\n ...{ ...internalIpsPolicySchema, default: \"public\" },\n description: `The policy for using internal IPs of the nodes as external IPs.\n\n - \\`always\\`: always use internal IPs as external IPs;\n - \\`public\\`: use internal IPs as external IPs only if they are (theoretically) routable from the public internet **(default)**;\n - \\`never\\`: never use internal IPs as external IPs.`,\n},\n\n /**\n * The FQDN to register the cluster nodes with.\n *\n * If provided and `registerFqdn` is set to `true`, the corresponding DNS provider must be provided to set up the DNS records.\n *\n * @schema\n */\n fqdn: {\n ...Type.Optional(Type.String()),\n description: `The FQDN to register the cluster nodes with.\n\n If provided and \\`registerFqdn\\` is set to \\`true\\`, the corresponding DNS provider must be provided to set up the DNS records.`,\n},\n\n /**\n * Whether to register the cluster nodes with the provided FQDN.\n *\n * By default, `true`.\n *\n * @schema\n */\n registerFqdn: {\n ...Type.Boolean({ default: true }),\n description: `Whether to register the cluster nodes with the provided FQDN.\n\n By default, \\`true\\`.`,\n},\n },\n\n secrets: {\n /**\n * The kubeconfig of the cluster to use for connecting to the cluster.\n *\n * Will be available for all components using `cluster` output of this unit.\n *\n * @schema\n */\n kubeconfig: {\n ...Type.Record(Type.String(), Type.Any()),\n description: `The kubeconfig of the cluster to use for connecting to the cluster.\n\n Will be available for all components using \\`cluster\\` output of this unit.`,\n},\n },\n\n outputs: {\n cluster: clusterEntity,\n },\n\n meta: {\n displayName: \"Existing Cluster\",\n description: \"An existing Kubernetes cluster.\",\n primaryIcon: \"mdi:kubernetes\",\n },\n\n source: {\n package: \"@highstate/k8s\",\n path: \"existing-cluster\",\n },\n})\n\nexport const gatewayEntity = defineEntity({\n type: \"k8s.gateway\",\n\n schema: Type.Object({\n clusterInfo: clusterInfoSchema,\n gatewayClassName: Type.String(),\n httpListenerPort: Type.Number(),\n httpsListenerPort: Type.Number(),\n ip: Type.String(),\n service: Type.Optional(serviceEntity.schema),\n }),\n\n meta: {\n color: \"#4CAF50\",\n },\n})\n\nexport const tlsIssuerEntity = defineEntity({\n type: \"k8s.tls-issuer\",\n\n schema: Type.Object({\n clusterInfo: clusterInfoSchema,\n clusterIssuerName: Type.String(),\n }),\n\n meta: {\n color: \"#f06292\",\n },\n})\n\nexport const accessPointEntity = defineEntity({\n type: \"common.access-point\",\n schema: Type.Object({\n gateway: gatewayEntity.schema,\n tlsIssuer: tlsIssuerEntity.schema,\n dnsProvider: providerEntity.schema,\n }),\n\n meta: {\n color: \"#FFC107\",\n },\n})\n\nexport const accessPoint = defineUnit({\n type: \"k8s.access-point\",\n\n inputs: {\n gateway: gatewayEntity,\n tlsIssuer: tlsIssuerEntity,\n dnsProvider: providerEntity,\n },\n\n outputs: {\n accessPoint: accessPointEntity,\n },\n\n meta: {\n displayName: \"Access Point\",\n description: \"An access point which can be used to connect to services.\",\n primaryIcon: \"mdi:access-point\",\n },\n\n source: {\n package: \"@highstate/k8s\",\n path: \"access-point\",\n },\n})\n\nexport const certManager = defineUnit({\n type: \"k8s.cert-manager\",\n\n inputs: {\n k8sCluster: clusterEntity,\n },\n\n outputs: {\n k8sCluster: clusterEntity,\n },\n\n meta: {\n displayName: \"Cert Manager\",\n description: \"A certificate manager for managing TLS certificates.\",\n primaryIcon: \"simple-icons:letsencrypt\",\n },\n\n source: {\n package: \"@highstate/k8s\",\n path: \"cert-manager\",\n },\n})\n\nexport const dns01TlsIssuer = defineUnit({\n type: \"k8s.dns01-issuer\",\n\n inputs: {\n k8sCluster: clusterEntity,\n dnsProvider: providerEntity,\n },\n\n outputs: {\n tlsIssuer: tlsIssuerEntity,\n },\n\n meta: {\n displayName: \"DNS01 Issuer\",\n description: \"A TLS issuer for issuing certificate using DNS01 challenge.\",\n primaryIcon: \"mdi:certificate\",\n },\n\n source: {\n package: \"@highstate/k8s\",\n path: \"dns01-issuer\",\n },\n})\n\nexport const containerSchema = Type.Object({\n name: Type.String(),\n image: Type.String(),\n})\n\nexport const labelSelectorSchema = Type.Object({\n matchLabels: Type.Record(Type.String(), Type.String()),\n})\n\nexport const deploymentSpecSchema = Type.Object({\n replicas: Type.Number(),\n selector: labelSelectorSchema,\n template: Type.Object({\n metadata: metadataSchema,\n spec: Type.Object({\n containers: Type.Array(containerSchema),\n }),\n }),\n})\n\nexport const deploymentEntity = defineEntity({\n type: \"k8s.deployment\",\n\n schema: Type.Object({\n type: Type.Literal(\"k8s.deployment\"),\n clusterInfo: clusterInfoSchema,\n metadata: metadataSchema,\n\n service: Type.Optional(serviceEntity.schema),\n }),\n\n meta: {\n color: \"#4CAF50\",\n },\n})\n\nexport const statefulSetEntity = defineEntity({\n type: \"k8s.stateful-set\",\n\n schema: Type.Object({\n type: Type.Literal(\"k8s.stateful-set\"),\n clusterInfo: clusterInfoSchema,\n metadata: metadataSchema,\n\n service: Type.Optional(serviceEntity.schema),\n }),\n\n meta: {\n color: \"#FFC107\",\n },\n})\n\nexport const persistentVolumeClaimEntity = defineEntity({\n type: \"k8s.persistent-volume-claim\",\n\n schema: Type.Object({\n type: Type.Literal(\"k8s.persistent-volume-claim\"),\n clusterInfo: clusterInfoSchema,\n metadata: metadataSchema,\n }),\n\n meta: {\n color: \"#FFC107\",\n },\n})\n\nexport const interfaceEntity = defineEntity({\n type: \"k8s.interface\",\n\n schema: Type.Object({\n name: Type.String(),\n deployment: deploymentEntity.schema,\n }),\n\n meta: {\n color: \"#2196F3\",\n description:\n \"The interface in a network space of pod kernel which can accept or transmit packets.\",\n },\n})\n\nexport type ClusterInfo = Static<typeof clusterInfoSchema>\nexport type Cluster = Static<typeof clusterEntity.schema>\n\nexport type Gateway = Static<typeof gatewayEntity.schema>\nexport type TlsIssuer = Static<typeof tlsIssuerEntity.schema>\nexport type AccessPoint = Static<typeof accessPointEntity.schema>\n\nexport type Metadata = Static<typeof metadataSchema>\n\nexport type ServiceType = Static<typeof serviceTypeSchema>\nexport type ServicePort = Static<typeof servicePortSchema>\nexport type ServiceSpec = Static<typeof serviceSpecSchema>\nexport type Service = Static<typeof serviceEntity.schema>\n\nexport type Container = Static<typeof containerSchema>\nexport type DeploymentSpec = Static<typeof deploymentSpecSchema>\nexport type Deployment = Static<typeof deploymentEntity.schema>\n\nexport type PersistentVolumeClaim = Static<typeof persistentVolumeClaimEntity.schema>\nexport type StatefulSet = Static<typeof statefulSetEntity.schema>\n\nexport type Interface = Static<typeof interfaceEntity.schema>\n","import { defineEntity, defineUnit, Type, type Static } from \"@highstate/contract\"\n\nexport const providerEntity = defineEntity({\n type: \"dns.provider\",\n\n schema: Type.Object({\n name: Type.String(),\n type: Type.String(),\n data: Type.Record(Type.String(), Type.Unknown()),\n domain: Type.String(),\n }),\n\n meta: {\n color: \"#FF5722\",\n },\n})\n\nexport const record = defineUnit({\n type: \"common.dns-record\",\n\n args: {\n name: Type.String(),\n type: Type.String(),\n value: Type.String(),\n ttl: Type.Optional(Type.Number()),\n },\n\n inputs: {\n dnsProvider: providerEntity,\n },\n\n meta: {\n displayName: \"DNS Record\",\n description: \"A DNS record to create.\",\n primaryIcon: \"mdi:server\",\n defaultNamePrefix: \"record\",\n },\n\n source: {\n package: \"@highstate/common\",\n path: \"dns/record\",\n },\n})\n\nexport type Provider = Static<typeof providerEntity.schema>\n","import { defineEntity, defineUnit, Type } from \"@highstate/contract\"\nimport { serverEntity } from \"./common\"\nimport { clusterEntity as k8sClusterEntity } from \"./k8s\"\n\nexport const clusterEntity = defineEntity({\n type: \"talos.cluster\",\n\n schema: Type.Object({\n clientConfiguration: Type.String(),\n machineSecrets: Type.String(),\n }),\n\n meta: {\n color: \"#2d2d2d\",\n },\n})\n\nexport const cniSchema = Type.StringEnum([\"none\", \"cilium\", \"flannel\"])\nexport const csiSchema = Type.StringEnum([\"none\", \"local-path-provisioner\"])\n\nexport const cluster = defineUnit({\n type: \"talos.cluster\",\n\n args: {\n /**\n * Allow scheduling workloads on the master nodes.\n *\n * By default, \"true\" if no worker nodes are provided.\n */\n scheduleOnMasters: Type.Boolean(),\n\n /**\n * The endpoint of the cluster.\n *\n * By default, the first master node's endpoint is used.\n */\n endpoint: Type.Optional(Type.String()),\n\n /**\n * The name of the cluster.\n *\n * By default, the name of the instance is used.\n */\n clusterName: Type.Optional(Type.String()),\n\n /**\n * The CNI plugin to use.\n *\n * The following options are available:\n * - \"cilium\" (default)\n * - \"flannel\" (built-in in Talos)\n * - \"none\" (disable CNI, must be installed manually)\n *\n * The \"cilium\" CNI plugin is recommended to cover advanced network policies like FQDNs.\n */\n cni: { ...cniSchema, default: \"cilium\" },\n\n /**\n * The CSI plugin to use.\n *\n * The following options are available:\n * - \"local-path-provisioner\" (default)\n * - \"none\" (disable CSI, must be installed manually if needed)\n */\n csi: { ...csiSchema, default: \"local-path-provisioner\" },\n\n /**\n * The shared configuration patch.\n * It will be applied to all nodes.\n */\n sharedConfigPatch: Type.Optional(Type.Record(Type.String(), Type.Any())),\n\n /**\n * The master configuration patch.\n * It will be applied to all master nodes.\n */\n masterConfigPatch: Type.Optional(Type.Record(Type.String(), Type.Any())),\n\n /**\n * The worker configuration patch.\n * It will be applied to all worker nodes.\n */\n workerConfigPatch: Type.Optional(Type.Record(Type.String(), Type.Any())),\n },\n\n inputs: {\n masters: {\n entity: serverEntity,\n multiple: true,\n },\n workers: {\n entity: serverEntity,\n multiple: true,\n required: false,\n },\n },\n\n outputs: {\n k8sCluster: k8sClusterEntity,\n talosCluster: clusterEntity,\n },\n\n meta: {\n displayName: \"Talos Cluster\",\n description: \"A Kubernetes cluster managed by Talos.\",\n category: \"Talos\",\n color: \"#2d2d2d\",\n primaryIcon: \"simple-icons:talos\",\n secondaryIcon: \"devicon:kubernetes\",\n },\n\n source: {\n package: \"@highstate/talos\",\n path: \"cluster\",\n },\n})\n","import { defineEntity, defineUnit, Type, type Static } from \"@highstate/contract\"\nimport {\n clusterEntity,\n deploymentEntity,\n interfaceEntity,\n serviceEntity,\n serviceTypeSchema,\n statefulSetEntity,\n} from \"./k8s\"\nimport { providerEntity } from \"./dns\"\n\nexport const backendSchema = Type.StringEnum([\"wireguard\", \"amneziawg\"])\nexport const presharedKeyModeSchema = Type.StringEnum([\"none\", \"global\", \"secure\"])\n\nexport type Backend = Static<typeof backendSchema>\nexport type PresharedKeyMode = Static<typeof presharedKeyModeSchema>\n\nexport const networkEntity = defineEntity({\n type: \"wireguard.network\",\n\n schema: Type.Object({\n backend: Type.Optional(backendSchema),\n presharedKeyMode: presharedKeyModeSchema,\n globalPresharedKey: Type.Optional(Type.String()),\n ipv6: Type.Optional(Type.Boolean()),\n }),\n})\n\nexport const identityEntity = defineEntity({\n type: \"wireguard.identity\",\n\n schema: Type.Object({\n name: Type.String(),\n network: Type.Optional(networkEntity.schema),\n address: Type.Optional(Type.String()),\n privateKey: Type.String(),\n presharedKeyPart: Type.Optional(Type.String()),\n k8sServices: Type.Array(serviceEntity.schema),\n exitNode: Type.Boolean(),\n listenPort: Type.Optional(Type.Number()),\n externalIp: Type.Optional(Type.String()),\n endpoint: Type.Optional(Type.String()),\n fqdn: Type.Optional(Type.String()),\n }),\n\n meta: {\n color: \"#F44336\",\n },\n})\n\nexport const peerEntity = defineEntity({\n type: \"wireguard.peer\",\n\n schema: Type.Object({\n name: Type.String(),\n network: Type.Optional(networkEntity.schema),\n publicKey: Type.String(),\n address: Type.Optional(Type.String()),\n allowedIps: Type.Array(Type.String()),\n endpoint: Type.Optional(Type.String()),\n presharedKeyPart: Type.Optional(Type.String()),\n excludedIps: Type.Optional(Type.Array(Type.String())),\n dns: Type.Optional(Type.Array(Type.String())),\n }),\n\n meta: {\n color: \"#673AB7\",\n },\n})\n\nexport const k8sNodeEntity = defineEntity({\n type: \"wireguard.node\",\n\n schema: Type.Object({\n network: Type.String(),\n address: Type.String(),\n endpoint: Type.Optional(Type.String()),\n peers: Type.Array(Type.String()),\n }),\n})\n\nexport type Network = Static<typeof networkEntity.schema>\nexport type Identity = Static<typeof identityEntity.schema>\nexport type Peer = Static<typeof peerEntity.schema>\n\n/**\n * The network hols the shared configuration for the WireGuard identities, peers and nodes.\n */\nexport const network = defineUnit({\n type: \"wireguard.network\",\n\n args: {\n /**\n * The backend to use for the WireGuard network.\n *\n * Possible values are:\n * 1. `wireguard` - The default backend.\n * 2. `amneziawg` - The censorship-resistant fork of WireGuard.\n *\n * By default, the `wireguard` backend is used.\n *\n * @schema\n */\n backend: {\n ...backendSchema,\n description: `The backend to use for the WireGuard network.\n\n Possible values are:\n 1. \\`wireguard\\` - The default backend.\n 2. \\`amneziawg\\` - The censorship-resistant fork of WireGuard.\n\n By default, the \\`wireguard\\` backend is used.`,\n},\n\n /**\n * The option which defines how to handle pre-shared keys between peers.\n *\n * 1. `none` - No pre-shared keys will be used.\n * 2. `global` - A single pre-shared key will be used for all peer pairs in the network.\n * 3. `secure` - Each peer pair will have its own pre-shared key.\n * In this case, each identity generates `presharedKeyPart` and the actual pre-shared key\n * for each peer pair will be computed as `xor(peer1.presharedKeyPart, peer2.presharedKeyPart)`.\n *\n * If the whole network is managed by the HighState, the `secure` mode is recommended.\n *\n * By default, the `none` mode is used.\n *\n * @schema\n */\n presharedKeyMode: {\n ...Type.Optional(presharedKeyModeSchema),\n description: `The option which defines how to handle pre-shared keys between peers.\n\n 1. \\`none\\` - No pre-shared keys will be used.\n 2. \\`global\\` - A single pre-shared key will be used for all peer pairs in the network.\n 3. \\`secure\\` - Each peer pair will have its own pre-shared key.\n In this case, each identity generates \\`presharedKeyPart\\` and the actual pre-shared key\n for each peer pair will be computed as \\`xor(peer1.presharedKeyPart, peer2.presharedKeyPart)\\`.\n\n If the whole network is managed by the HighState, the \\`secure\\` mode is recommended.\n\n By default, the \\`none\\` mode is used.`,\n},\n\n /**\n * The option to enable IPv6 support in the network.\n *\n * By default, IPv6 support is disabled.\n *\n * @schema\n */\n ipv6: {\n ...Type.Optional(Type.Boolean()),\n description: `The option to enable IPv6 support in the network.\n\n By default, IPv6 support is disabled.`,\n},\n },\n\n secrets: {\n /**\n * The global pre-shared key to use for all peer pairs in the network.\n *\n * Will be used only if `presharedKeyMode` is set to `global`.\n * Will be generated automatically if not provided.\n *\n * @schema\n */\n globalPresharedKey: {\n ...Type.Optional(Type.String()),\n description: `The global pre-shared key to use for all peer pairs in the network.\n\n Will be used only if \\`presharedKeyMode\\` is set to \\`global\\`.\n Will be generated automatically if not provided.`,\n},\n },\n\n outputs: {\n network: networkEntity,\n },\n\n meta: {\n description: \"The WireGuard network with some shared configuration.\",\n primaryIcon: \"simple-icons:wireguard\",\n primaryIconColor: \"#88171a\",\n secondaryIcon: \"mdi:local-area-network-connect\",\n },\n\n source: {\n package: \"@highstate/wireguard\",\n path: \"network\",\n },\n})\n\nconst sharedPeerArgs = {\n /**\n * The name of the WireGuard peer.\n *\n * If not provided, the peer will be named after the unit.\n *\n * @schema\n */\n peerName: {\n ...Type.Optional(Type.String()),\n description: `The name of the WireGuard peer.\n\n If not provided, the peer will be named after the unit.`,\n},\n\n /**\n * The address of the WireGuard interface.\n *\n * The address may be any IPv4 or IPv6 address. CIDR notation is also supported.\n *\n * @schema\n */\n address: {\n ...Type.Optional(Type.String()),\n description: `The address of the WireGuard interface.\n\n The address may be any IPv4 or IPv6 address. CIDR notation is also supported.`,\n},\n\n /**\n * The list of allowed IPs for the peer.\n *\n * @schema\n */\n allowedIps: {\n ...Type.Optional(Type.Array(Type.String())),\n description: `The list of allowed IPs for the peer.`,\n},\n\n /**\n * The convenience option to set `allowedIps` to `0.0.0.0/0, ::/0`.\n *\n * Will be merged with the `allowedIps` if provided.\n *\n * @schema\n */\n exitNode: {\n ...Type.Optional(Type.Boolean()),\n description: `The convenience option to set \\`allowedIps\\` to \\`0.0.0.0/0, ::/0\\`.\n\n Will be merged with the \\`allowedIps\\` if provided.`,\n},\n\n /**\n * The list of IP ranges to exclude from the tunnel.\n *\n * Implementation notes:\n *\n * - This list will not be used to generate the allowed IPs for the peer.\n * - Instead, the node will setup extra direct routes to these IPs via default gateway.\n * - This allows to use `0.0.0.0/0, ::/0` in the `allowedIps` (and corresponding fwmark magic) and still have some IPs excluded from the tunnel.\n *\n * @schema\n */\n excludedIps: {\n ...Type.Optional(Type.Array(Type.String())),\n description: `The list of IP ranges to exclude from the tunnel.\n\n Implementation notes:\n\n - This list will not be used to generate the allowed IPs for the peer.\n - Instead, the node will setup extra direct routes to these IPs via default gateway.\n - This allows to use \\`0.0.0.0/0, ::/0\\` in the \\`allowedIps\\` (and corresponding fwmark magic) and still have some IPs excluded from the tunnel.`,\n},\n\n /**\n * The convenience option to exclude private IPs from the tunnel.\n *\n * For IPv4, the private IPs are:\n *\n * - `10.0.0.0/8`\n * - `172.16.0.0/12`\n * - `192.168.0.0/16`\n *\n * For IPv6, the private IPs are:\n *\n * - `fc00::/7`\n * - `fe80::/10`\n *\n * Will be merged with `excludedIps` if provided.\n *\n * @schema\n */\n excludePrivateIps: {\n ...Type.Optional(Type.Boolean()),\n description: `The convenience option to exclude private IPs from the tunnel.\n\n For IPv4, the private IPs are:\n\n - \\`10.0.0.0/8\\`\n - \\`172.16.0.0/12\\`\n - \\`192.168.0.0/16\\`\n\n For IPv6, the private IPs are:\n\n - \\`fc00::/7\\`\n - \\`fe80::/10\\`\n\n Will be merged with \\`excludedIps\\` if provided.`,\n},\n\n /**\n * The endpoint of the WireGuard peer.\n *\n * @schema\n */\n endpoint: {\n ...Type.Optional(Type.String()),\n description: `The endpoint of the WireGuard peer.`,\n},\n\n /**\n * The DNS servers that should be used by the interface connected to the WireGuard peer.\n *\n * If multiple peers define DNS servers, the node will merge them into a single list (but this is discouraged).\n *\n * @schema\n */\n dns: {\n ...Type.Optional(Type.Array(Type.String())),\n description: `The DNS servers that should be used by the interface connected to the WireGuard peer.\n\n If multiple peers define DNS servers, the node will merge them into a single list (but this is discouraged).`,\n},\n\n /**\n * The convenience option to include the DNS servers to the allowed IPs.\n *\n * By default, is `true`.\n *\n * @schema\n */\n includeDns: {\n ...Type.Optional(Type.Boolean({ default: true })),\n description: `The convenience option to include the DNS servers to the allowed IPs.\n\n By default, is \\`true\\`.`,\n},\n}\n\nconst sharedInterfaceArgs = {\n /**\n * The port to listen on.\n *\n * Will override the `listenPort` of the identity if provided.\n *\n * @schema\n */\n listenPort: {\n ...Type.Optional(Type.Number()),\n description: `The port to listen on.\n\n Will override the \\`listenPort\\` of the identity if provided.`,\n},\n\n /**\n * The DNS servers that should be used by the interface connected to the WireGuard node.\n *\n * Will be merged with the DNS servers of the peers.\n *\n * @schema\n */\n dns: {\n ...Type.Optional(Type.Array(Type.String())),\n description: `The DNS servers that should be used by the interface connected to the WireGuard node.\n\n Will be merged with the DNS servers of the peers.`,\n},\n}\n\nexport const peer = defineUnit({\n type: \"wireguard.peer\",\n\n args: {\n ...sharedPeerArgs,\n\n /**\n * The public key of the WireGuard peer.\n *\n * @schema\n */\n publicKey: {\n ...Type.String(),\n description: `The public key of the WireGuard peer.`,\n},\n },\n\n inputs: {\n /**\n * The network to use for the WireGuard peer.\n *\n * If not provided, the peer will use default network configuration.\n *\n * @schema\n */\n network: {\n ...{\n entity: networkEntity,\n required: false,\n },\n description: `The network to use for the WireGuard peer.\n\n If not provided, the peer will use default network configuration.`,\n},\n },\n\n outputs: {\n peer: peerEntity,\n },\n\n meta: {\n description: \"The WireGuard peer with the public key.\",\n primaryIcon: \"simple-icons:wireguard\",\n primaryIconColor: \"#88171a\",\n secondaryIcon: \"mdi:badge-account-horizontal\",\n },\n\n source: {\n package: \"@highstate/wireguard\",\n path: \"peer\",\n },\n})\n\nexport const identity = defineUnit({\n type: \"wireguard.identity\",\n\n args: {\n ...sharedPeerArgs,\n\n /**\n * The port to listen on.\n *\n * Used by the implementation of the identity and to calculate the endpoint of the peer.\n *\n * @schema\n */\n listenPort: {\n ...Type.Optional(Type.Number()),\n description: `The port to listen on.\n\n Used by the implementation of the identity and to calculate the endpoint of the peer.`,\n},\n\n /**\n * The external IP address of the WireGuard identity.\n *\n * Used by the implementation of the identity and to calculate the endpoint of the peer.\n *\n * @schema\n */\n externalIp: {\n ...Type.Optional(Type.String()),\n description: `The external IP address of the WireGuard identity.\n\n Used by the implementation of the identity and to calculate the endpoint of the peer.`,\n},\n\n /**\n * The endpoint of the WireGuard peer.\n *\n * By default, the endpoint is calculated as `externalIp:listenPort`.\n *\n * If overridden, does not affect node which implements the identity, but is used in the peer configuration of other nodes.\n *\n * @schema\n */\n endpoint: {\n ...Type.Optional(Type.String()),\n description: `The endpoint of the WireGuard peer.\n\n By default, the endpoint is calculated as \\`externalIp:listenPort\\`.\n\n If overridden, does not affect node which implements the identity, but is used in the peer configuration of other nodes.`,\n},\n\n /**\n * The FQDN of the WireGuard identity.\n * Will be used as endpoint for the peer.\n *\n * If `dnsProvider` is provided and `externalIp` is available, the FQDN will be registered automatically.\n *\n * @schema\n */\n fqdn: {\n ...Type.Optional(Type.String()),\n description: `The FQDN of the WireGuard identity.\n Will be used as endpoint for the peer.\n\n If \\`dnsProvider\\` is provided and \\`externalIp\\` is available, the FQDN will be registered automatically.`,\n},\n },\n\n secrets: {\n /**\n * The private key of the WireGuard identity.\n *\n * If not provided, the key will be generated automatically.\n *\n * @schema\n */\n privateKey: {\n ...Type.Optional(Type.String()),\n description: `The private key of the WireGuard identity.\n\n If not provided, the key will be generated automatically.`,\n},\n\n /**\n * The part of the pre-shared of the WireGuard identity.\n *\n * Will be generated automatically if not provided.\n *\n * @schema\n */\n presharedKeyPart: {\n ...Type.Optional(Type.String()),\n description: `The part of the pre-shared of the WireGuard identity.\n\n Will be generated automatically if not provided.`,\n},\n },\n\n inputs: {\n /**\n * The network to use for the WireGuard identity.\n *\n * If not provided, the identity will use default network configuration.\n *\n * @schema\n */\n network: {\n ...{\n entity: networkEntity,\n required: false,\n },\n description: `The network to use for the WireGuard identity.\n\n If not provided, the identity will use default network configuration.`,\n},\n\n /**\n * The list of Kubernetes services to expose the WireGuard identity.\n *\n * Their IP addresses will be added to the `allowedIps` of the identity and passed to the node to set up network policies.\n *\n * @schema\n */\n k8sServices: {\n ...{\n entity: serviceEntity,\n multiple: true,\n required: false,\n },\n description: `The list of Kubernetes services to expose the WireGuard identity.\n\n Their IP addresses will be added to the \\`allowedIps\\` of the identity and passed to the node to set up network policies.`,\n},\n\n dnsProvider: {\n entity: providerEntity,\n required: false,\n },\n },\n\n outputs: {\n identity: identityEntity,\n peer: peerEntity,\n },\n\n meta: {\n description: \"The WireGuard identity with the public key.\",\n primaryIcon: \"simple-icons:wireguard\",\n primaryIconColor: \"#88171a\",\n secondaryIcon: \"mdi:account\",\n },\n\n source: {\n package: \"@highstate/wireguard\",\n path: \"identity\",\n },\n})\n\nexport const node = defineUnit({\n type: \"wireguard.node\",\n\n args: {\n appName: Type.Optional(Type.String()),\n serviceType: Type.Optional(serviceTypeSchema),\n\n ...sharedInterfaceArgs,\n\n /**\n * The external IP address of the WireGuard node.\n *\n * Will override the `externalIp` of the identity if provided.\n *\n * @schema\n */\n externalIp: {\n ...Type.Optional(Type.String()),\n description: `The external IP address of the WireGuard node.\n\n Will override the \\`externalIp\\` of the identity if provided.`,\n},\n\n /**\n * The extra specification of the container which runs the WireGuard node.\n *\n * Will override any overlapping fields.\n *\n * @schema\n */\n containerSpec: {\n ...Type.Optional(Type.Record(Type.String(), Type.Any())),\n description: `The extra specification of the container which runs the WireGuard node.\n\n Will override any overlapping fields.`,\n},\n },\n\n inputs: {\n identity: identityEntity,\n k8sCluster: clusterEntity,\n\n deployment: {\n entity: deploymentEntity,\n required: false,\n },\n\n statefulSet: {\n entity: statefulSetEntity,\n required: false,\n },\n\n interface: {\n entity: interfaceEntity,\n required: false,\n },\n\n peers: {\n entity: peerEntity,\n multiple: true,\n required: false,\n },\n },\n\n outputs: {\n deployment: {\n entity: deploymentEntity,\n required: false,\n },\n\n interface: {\n entity: interfaceEntity,\n required: false,\n },\n\n service: {\n entity: serviceEntity,\n required: false,\n },\n },\n\n meta: {\n description: \"The WireGuard node running on the Kubernetes.\",\n primaryIcon: \"simple-icons:wireguard\",\n primaryIconColor: \"#88171a\",\n secondaryIcon: \"mdi:server\",\n },\n\n source: {\n package: \"@highstate/wireguard\",\n path: \"node\",\n },\n})\n\nexport const config = defineUnit({\n type: \"wireguard.config\",\n\n args: {\n ...sharedInterfaceArgs,\n\n /**\n * The name of the \"default\" interface where non-tunneled traffic should go.\n *\n * If not provided, the config will not respect `excludedIps`.\n *\n * @schema\n */\n defaultInterface: {\n ...Type.Optional(Type.String()),\n description: `The name of the \"default\" interface where non-tunneled traffic should go.\n\n If not provided, the config will not respect \\`excludedIps\\`.`,\n},\n },\n\n inputs: {\n identity: identityEntity,\n peers: {\n entity: peerEntity,\n multiple: true,\n required: false,\n },\n },\n\n meta: {\n displayName: \"WireGuard Config\",\n description: \"Just the WireGuard configuration for the identity and peers.\",\n primaryIcon: \"simple-icons:wireguard\",\n primaryIconColor: \"#88171a\",\n secondaryIcon: \"mdi:settings\",\n },\n\n source: {\n package: \"@highstate/wireguard\",\n path: \"config\",\n },\n})\n\nexport const configBundle = defineUnit({\n type: \"wireguard.config-bundle\",\n\n inputs: {\n identity: identityEntity,\n peers: {\n entity: peerEntity,\n multiple: true,\n },\n sharedPeers: {\n entity: peerEntity,\n multiple: true,\n required: false,\n },\n },\n\n meta: {\n displayName: \"WireGuard Config Bundle\",\n description: \"The WireGuard configuration bundle for the identity and peers.\",\n primaryIcon: \"simple-icons:wireguard\",\n primaryIconColor: \"#88171a\",\n secondaryIcon: \"mdi:folder-settings-variant\",\n },\n\n source: {\n package: \"@highstate/wireguard\",\n path: \"config-bundle\",\n },\n})\n","export * from \"./mariadb\"\nexport * from \"./postgresql\"\nexport * from \"./vaultwarden\"\n// export * from \"./zitadel\"\n// export * from \"./gitea\"\nexport * from \"./traefik\"\nexport * from \"./kubernetes-dashboard\"\nexport * from \"./grocy\"\nexport * from \"./maybe\"\nexport * from \"./mongodb\"\nexport * from \"./deployment\"\nexport * from \"./syncthing\"\nexport * from \"./code-server\"\n","import { defineEntity, defineUnit, Type, type Static } from \"@highstate/contract\"\nimport { clusterEntity, serviceEntity } from \"../k8s\"\nimport { repoEntity } from \"../restic\"\nimport { providerEntity } from \"../dns\"\n\nexport const mariadbEntity = defineEntity({\n type: \"apps.mariadb\",\n\n schema: Type.Object({\n service: Type.Optional(serviceEntity.schema),\n\n host: Type.String(),\n port: Type.Number(),\n rootPassword: Type.String(),\n }),\n\n meta: {\n color: \"#f06292\",\n },\n})\n\nexport const mariadb = defineUnit({\n type: \"apps.mariadb\",\n\n args: {\n fqdn: Type.Optional(Type.String()),\n appName: Type.Optional(Type.String()),\n },\n\n secrets: {\n rootPassword: Type.Optional(Type.String()),\n },\n\n inputs: {\n k8sCluster: clusterEntity,\n resticRepo: {\n entity: repoEntity,\n required: false,\n },\n dnsProvider: {\n entity: providerEntity,\n required: false,\n },\n },\n\n outputs: {\n mariadb: mariadbEntity,\n service: serviceEntity,\n },\n\n meta: {\n displayName: \"MariaDB\",\n description: \"The MariaDB database deployed on Kubernetes.\",\n primaryIcon: \"simple-icons:mariadb\",\n secondaryIcon: \"mdi:database\",\n },\n\n source: {\n package: \"@highstate/apps\",\n path: \"mariadb/app\",\n },\n})\n\nexport const mariadbDatabase = defineUnit({\n type: \"apps.mariadb.database\",\n\n args: {\n database: Type.Optional(Type.String()),\n username: Type.Optional(Type.String()),\n },\n\n secrets: {\n password: Type.Optional(Type.String()),\n },\n\n inputs: {\n k8sCluster: clusterEntity,\n mariadb: mariadbEntity,\n },\n\n meta: {\n displayName: \"MariaDB Database\",\n description:\n \"The virtual MariaDB database created on the MariaDB instance. Works only for MariaDB instances deployed on Kubernetes.\",\n primaryIcon: \"simple-icons:mariadb\",\n secondaryIcon: \"mdi:database-plus\",\n },\n\n source: {\n package: \"@highstate/apps\",\n path: \"mariadb/database\",\n },\n})\n\nexport type MariaDB = Static<typeof mariadbEntity.schema>\n","import { defineEntity, defineUnit, Type, type Static } from \"@highstate/contract\"\n\nexport const repoEntity = defineEntity({\n type: \"restic.repo\",\n\n schema: Type.Object({\n password: Type.String(),\n remoteDomains: Type.Array(Type.String()),\n\n type: Type.Literal(\"rclone\"),\n rcloneConfig: Type.String(),\n remoteName: Type.String(),\n basePath: Type.String(),\n }),\n\n meta: {\n color: \"#e56901\",\n },\n})\n\nexport const repo = defineUnit({\n type: \"restic.repo\",\n\n args: {\n remoteDomains: Type.Optional(Type.Array(Type.String())),\n basePath: Type.Optional(Type.String()),\n },\n\n secrets: {\n password: Type.Optional(Type.String()),\n rcloneConfig: Type.String({ multiline: true }),\n },\n\n outputs: {\n repo: repoEntity,\n },\n\n meta: {\n displayName: \"Restic Repo\",\n description: \"Holds the configuration for a Restic repository and its remote storage.\",\n primaryIconColor: \"#e56901\",\n primaryIcon: \"material-symbols:backup\",\n },\n\n source: {\n package: \"@highstate/restic\",\n path: \"repo\",\n },\n})\n\nexport type Repo = Static<typeof repoEntity.schema>\n","import { defineEntity, defineUnit, Type, type Static } from \"@highstate/contract\"\nimport { clusterEntity, serviceEntity } from \"../k8s\"\nimport { repoEntity } from \"../restic\"\nimport { providerEntity } from \"../dns\"\n\nexport const postgresqlEntity = defineEntity({\n type: \"apps.postgresql\",\n\n schema: Type.Object({\n service: Type.Optional(serviceEntity.schema),\n\n host: Type.String(),\n port: Type.Number(),\n rootPassword: Type.String(),\n }),\n\n meta: {\n color: \"#336791\",\n },\n})\n\nexport const postgresql = defineUnit({\n type: \"apps.postgresql\",\n\n args: {\n fqdn: Type.Optional(Type.String()),\n appName: Type.Optional(Type.String()),\n },\n\n secrets: {\n rootPassword: Type.Optional(Type.String()),\n },\n\n inputs: {\n k8sCluster: clusterEntity,\n resticRepo: {\n entity: repoEntity,\n required: false,\n },\n dnsProvider: {\n entity: providerEntity,\n required: false,\n },\n },\n\n outputs: {\n postgresql: postgresqlEntity,\n service: serviceEntity,\n },\n\n meta: {\n displayName: \"PostgreSQL\",\n description: \"The PostgreSQL database deployed on Kubernetes.\",\n primaryIcon: \"simple-icons:postgresql\",\n secondaryIcon: \"mdi:database\",\n },\n\n source: {\n package: \"@highstate/apps\",\n path: \"postgresql/app\",\n },\n})\n\nexport const postgresqlDatabase = defineUnit({\n type: \"apps.postgresql.database\",\n\n args: {\n database: Type.Optional(Type.String()),\n username: Type.Optional(Type.String()),\n },\n\n secrets: {\n password: Type.Optional(Type.String()),\n },\n\n inputs: {\n k8sCluster: clusterEntity,\n postgresql: postgresqlEntity,\n },\n\n meta: {\n displayName: \"PostgreSQL Database\",\n description:\n \"The virtual PostgreSQL database created on the PostgreSQL instance. Works only for PostgreSQL instances deployed on Kubernetes.\",\n primaryIcon: \"simple-icons:postgresql\",\n secondaryIcon: \"mdi:database-plus\",\n },\n\n source: {\n package: \"@highstate/apps\",\n path: \"postgresql/database\",\n },\n})\n\nexport type PostgreSQL = Static<typeof postgresqlEntity.schema>\n","import { defineUnit, Type } from \"@highstate/contract\"\nimport { accessPointEntity, clusterEntity } from \"../k8s\"\nimport { mariadbEntity } from \"./mariadb\"\n\nexport const vaultwarden = defineUnit({\n type: \"apps.vaultwarden\",\n\n args: {\n fqdn: Type.String(),\n appName: Type.Optional(Type.String()),\n },\n\n inputs: {\n mariadb: mariadbEntity,\n accessPoint: accessPointEntity,\n k8sCluster: clusterEntity,\n },\n\n secrets: {\n mariadbPassword: Type.Optional(Type.String()),\n },\n\n meta: {\n displayName: \"Vaultwarden\",\n description: \"The Vaultwarden password manager deployed on Kubernetes.\",\n primaryIcon: \"simple-icons:vaultwarden\",\n },\n\n source: {\n package: \"@highstate/apps\",\n path: \"vaultwarden\",\n },\n})\n","import { defineUnit, Type } from \"@highstate/contract\"\nimport { clusterEntity, gatewayEntity, serviceEntity, serviceTypeSchema } from \"../k8s\"\n\nexport const traefikGateway = defineUnit({\n type: \"apps.traefik-gateway\",\n\n args: {\n appName: Type.Optional(Type.String()),\n className: Type.Optional(Type.String()),\n serviceType: Type.Optional(serviceTypeSchema),\n },\n\n inputs: {\n k8sCluster: clusterEntity,\n },\n\n outputs: {\n gateway: gatewayEntity,\n service: serviceEntity,\n },\n\n meta: {\n displayName: \"Traefik Gateway\",\n description: \"A Traefik gateway for routing traffic to services.\",\n primaryIcon: \"simple-icons:traefikproxy\",\n },\n\n source: {\n package: \"@highstate/apps\",\n path: \"traefik\",\n },\n})\n","import { defineUnit, Type } from \"@highstate/contract\"\nimport { accessPointEntity, clusterEntity } from \"../k8s\"\n\nexport const kubernetesDashboard = defineUnit({\n type: \"apps.kubernetes-dashboard\",\n\n args: {\n fqdn: Type.String(),\n appName: Type.Optional(Type.String()),\n },\n\n inputs: {\n k8sCluster: clusterEntity,\n accessPoint: accessPointEntity,\n },\n\n meta: {\n displayName: \"Kubernetes Dashboard\",\n description: \"The Kubernetes Dashboard deployed on Kubernetes.\",\n primaryIcon: \"simple-icons:kubernetes\",\n secondaryIcon: \"mdi:dashboard\",\n },\n\n source: {\n package: \"@highstate/apps\",\n path: \"kubernetes-dashboard\",\n },\n})\n","import { defineUnit, Type } from \"@highstate/contract\"\nimport { accessPointEntity, clusterEntity } from \"../k8s\"\nimport { repoEntity } from \"../restic\"\n\nexport const grocy = defineUnit({\n type: \"apps.grocy\",\n\n args: {\n fqdn: Type.String(),\n appName: Type.Optional(Type.String()),\n },\n\n inputs: {\n resticRepo: {\n entity: repoEntity,\n required: false,\n },\n accessPoint: accessPointEntity,\n k8sCluster: clusterEntity,\n },\n\n meta: {\n displayName: \"Grocy\",\n description:\n \"Grocy is a web-based self-hosted groceries & household management solution for your home.\",\n primaryIcon: \"simple-icons:grocy\",\n },\n\n source: {\n package: \"@highstate/apps\",\n path: \"grocy\",\n },\n})\n","import { defineUnit, Type } from \"@highstate/contract\"\nimport { accessPointEntity, clusterEntity } from \"../k8s\"\nimport { repoEntity } from \"../restic\"\nimport { postgresqlEntity } from \"./postgresql\"\n\nexport const maybe = defineUnit({\n type: \"apps.maybe\",\n\n args: {\n fqdn: Type.String(),\n appName: Type.Optional(Type.String()),\n },\n\n inputs: {\n postgresql: postgresqlEntity,\n accessPoint: accessPointEntity,\n k8sCluster: clusterEntity,\n resticRepo: {\n entity: repoEntity,\n required: false,\n },\n },\n\n secrets: {\n postgresqlPassword: Type.Optional(Type.String()),\n secretKey: Type.Optional(Type.String()),\n },\n\n meta: {\n displayName: \"Maybe\",\n description: \"The OS for your personal finances.\",\n primaryIcon: \"arcticons:finance-manager\",\n },\n\n source: {\n package: \"@highstate/apps\",\n path: \"maybe\",\n },\n})\n","import { defineEntity, defineUnit, Type, type Static } from \"@highstate/contract\"\nimport { clusterEntity, serviceEntity, serviceTypeSchema } from \"../k8s\"\nimport { repoEntity } from \"../restic\"\nimport { providerEntity } from \"../dns\"\n\nexport const mongodbEntity = defineEntity({\n type: \"apps.mongodb\",\n\n schema: Type.Object({\n service: Type.Optional(serviceEntity.schema),\n\n host: Type.String(),\n port: Type.Number(),\n rootPassword: Type.String(),\n }),\n\n meta: {\n color: \"#13aa52\",\n },\n})\n\nexport const mongodb = defineUnit({\n type: \"apps.mongodb\",\n\n args: {\n fqdn: Type.Optional(Type.String()),\n appName: Type.Optional(Type.String()),\n serviceType: Type.Optional(serviceTypeSchema),\n },\n\n secrets: {\n rootPassword: Type.Optional(Type.String()),\n },\n\n inputs: {\n k8sCluster: clusterEntity,\n resticRepo: {\n entity: repoEntity,\n required: false,\n },\n dnsProvider: {\n entity: providerEntity,\n required: false,\n },\n },\n\n outputs: {\n mongodb: mongodbEntity,\n service: serviceEntity,\n },\n\n meta: {\n displayName: \"MongoDB\",\n description: \"The MongoDB instance deployed on Kubernetes.\",\n primaryIcon: \"simple-icons:mongodb\",\n secondaryIcon: \"mdi:database\",\n },\n\n source: {\n package: \"@highstate/apps\",\n path: \"mongodb/app\",\n },\n})\n\nexport const mongodbDatabase = defineUnit({\n type: \"apps.mongodb.database\",\n\n args: {\n database: Type.Optional(Type.String()),\n username: Type.Optional(Type.String()),\n },\n\n secrets: {\n password: Type.Optional(Type.String()),\n },\n\n inputs: {\n k8sCluster: clusterEntity,\n mongodb: mongodbEntity,\n },\n\n meta: {\n displayName: \"MongoDB Database\",\n description:\n \"The virtual MongoDB database created on the MongoDB instance. Works only for MongoDB instances deployed on Kubernetes.\",\n primaryIcon: \"simple-icons:mongodb\",\n secondaryIcon: \"mdi:database-plus\",\n },\n\n source: {\n package: \"@highstate/apps\",\n path: \"mongodb/database\",\n },\n})\n\nexport type MongoDB = Static<typeof mongodbEntity.schema>\n","import { defineUnit, Type } from \"@highstate/contract\"\nimport { clusterEntity, deploymentEntity, serviceEntity, serviceTypeSchema } from \"../k8s\"\nimport { repoEntity } from \"../restic\"\nimport { providerEntity } from \"../dns\"\nimport { mariadbEntity } from \"./mariadb\"\nimport { postgresqlEntity } from \"./postgresql\"\nimport { mongodbEntity } from \"./mongodb\"\n\nexport const deployment = defineUnit({\n type: \"apps.deployment\",\n\n args: {\n appName: Type.Optional(Type.String()),\n\n fqdn: Type.Optional(Type.String()),\n serviceType: Type.Optional(serviceTypeSchema),\n\n image: Type.Optional(Type.String()),\n port: Type.Optional(Type.Number()),\n replicas: Type.Optional(Type.Number()),\n\n dataPath: Type.Optional(Type.String()),\n\n env: Type.Optional(Type.Record(Type.String(), Type.Any())),\n\n mariadbEnvMapping: Type.Optional(Type.Record(Type.String(), Type.Any())),\n postgresqlEnvMapping: Type.Optional(Type.Record(Type.String(), Type.Any())),\n mongodbEnvMapping: Type.Optional(Type.Record(Type.String(), Type.Any())),\n\n manifest: Type.Optional(Type.Record(Type.String(), Type.Any())),\n serviceManifest: Type.Optional(Type.Record(Type.String(), Type.Any())),\n httpRouteManifest: Type.Optional(Type.Record(Type.String(), Type.Any())),\n },\n\n inputs: {\n k8sCluster: clusterEntity,\n\n mariadb: {\n entity: mariadbEntity,\n required: false,\n },\n postgresql: {\n entity: postgresqlEntity,\n required: false,\n },\n mongodb: {\n entity: mongodbEntity,\n required: false,\n },\n resticRepo: {\n entity: repoEntity,\n required: false,\n },\n dnsProvider: {\n entity: providerEntity,\n required: false,\n },\n },\n\n outputs: {\n deployment: deploymentEntity,\n service: serviceEntity,\n },\n\n secrets: {\n mariadbPassword: Type.Optional(Type.String()),\n postgresqlPassword: Type.Optional(Type.String()),\n mongodbPassword: Type.Optional(Type.String()),\n },\n\n meta: {\n displayName: \"Kubernetes Deployment\",\n description: \"A generic Kubernetes deployment with optional service and gateway routes.\",\n primaryIcon: \"mdi:kubernetes\",\n secondaryIcon: \"mdi:cube-outline\",\n },\n\n source: {\n package: \"@highstate/apps\",\n path: \"deployment\",\n },\n})\n","import { defineUnit, Type } from \"@highstate/contract\"\nimport {\n accessPointEntity,\n clusterEntity,\n persistentVolumeClaimEntity,\n serviceEntity,\n} from \"../k8s\"\nimport { repoEntity } from \"../restic\"\n\nexport const backupModeSchema = Type.Union([Type.Literal(\"metadata\"), Type.Literal(\"full\")])\n\nexport const syncthing = defineUnit({\n type: \"apps.syncthing\",\n\n args: {\n fqdn: Type.String(),\n deviceFqdn: Type.Optional(Type.String()),\n appName: Type.Optional(Type.String()),\n backupMode: Type.Optional({ ...backupModeSchema, default: \"metadata\" }),\n },\n\n inputs: {\n accessPoint: accessPointEntity,\n k8sCluster: clusterEntity,\n resticRepo: {\n entity: repoEntity,\n required: false,\n },\n volume: {\n entity: persistentVolumeClaimEntity,\n required: false,\n },\n },\n\n outputs: {\n service: serviceEntity,\n volume: persistentVolumeClaimEntity,\n },\n\n meta: {\n displayName: \"Syncthing\",\n description: \"The Syncthing instance deployed on Kubernetes.\",\n primaryIcon: \"simple-icons:syncthing\",\n },\n\n source: {\n package: \"@highstate/apps\",\n path: \"syncthing\",\n },\n})\n","import { defineUnit, Type } from \"@highstate/contract\"\nimport {\n accessPointEntity,\n clusterEntity,\n persistentVolumeClaimEntity,\n statefulSetEntity,\n} from \"../k8s\"\nimport { repoEntity } from \"../restic\"\n\nexport const codeServer = defineUnit({\n type: \"apps.code-server\",\n\n args: {\n fqdn: Type.String(),\n appName: Type.Optional(Type.String()),\n },\n\n secrets: {\n password: Type.Optional(Type.String()),\n sudoPassword: Type.Optional(Type.String()),\n },\n\n inputs: {\n accessPoint: accessPointEntity,\n k8sCluster: clusterEntity,\n resticRepo: {\n entity: repoEntity,\n required: false,\n },\n volume: {\n entity: persistentVolumeClaimEntity,\n required: false,\n },\n },\n\n outputs: {\n statefulSet: statefulSetEntity,\n volume: persistentVolumeClaimEntity,\n },\n\n meta: {\n displayName: \"Code Server\",\n description: \"The Code Server instance deployed on Kubernetes.\",\n primaryIcon: \"material-icon-theme:vscode\",\n },\n\n source: {\n package: \"@highstate/apps\",\n path: \"code-server\",\n },\n})\n","import { defineUnit, Type } from \"@highstate/contract\"\nimport { providerEntity } from \"./dns\"\n\nexport const connection = defineUnit({\n type: \"cloudflare.connection\",\n\n secrets: {\n apiToken: Type.String(),\n },\n\n outputs: {\n dnsProvider: providerEntity,\n },\n\n meta: {\n displayName: \"Cloudflare Connection\",\n description: \"Creates a new Cloudflare connection for one zone.\",\n primaryIcon: \"simple-icons:cloudflare\",\n },\n\n source: {\n package: \"@highstate/cloudflare\",\n path: \"connection\",\n },\n})\n","import { defineUnit } from \"@highstate/contract\"\nimport { serverEntity } from \"./common\"\nimport { clusterEntity } from \"./k8s\"\n\nexport const cluster = defineUnit({\n type: \"k3s.cluster\",\n\n inputs: {\n server: serverEntity,\n },\n\n outputs: {\n k8sCluster: clusterEntity,\n },\n\n meta: {\n displayName: \"K3s Cluster\",\n description: \"The K3s cluster created on top of the server.\",\n category: \"k3s\",\n primaryIcon: \"devicon:k3s\",\n secondaryIcon: \"devicon:kubernetes\",\n },\n\n source: {\n package: \"@highstate/k3s\",\n path: \"cluster\",\n },\n})\n","import { defineUnit, Type } from \"@highstate/contract\"\nimport { networkEntity, peerEntity } from \"./wireguard\"\n\nexport const endpointType = Type.Union([\n Type.Literal(\"fqdn\"),\n Type.Literal(\"ipv4\"),\n Type.Literal(\"ipv6\"),\n])\n\nexport const peer = defineUnit({\n type: \"mullvad.peer\",\n\n args: {\n hostname: Type.Optional(Type.String()),\n endpointType: Type.Optional({ ...endpointType, default: \"fqdn\" }),\n },\n\n inputs: {\n /**\n * The network to use for the WireGuard peer.\n *\n * If not provided, the peer will use default network configuration.\n */\n network: {\n entity: networkEntity,\n required: false,\n },\n },\n\n outputs: {\n peer: peerEntity,\n },\n\n meta: {\n displayName: \"Mullvad Peer\",\n description: \"The Mullvad WireGuard peer fetched from the Mullvad API.\",\n primaryIcon: \"simple-icons:mullvad\",\n secondaryIcon: \"cib:wireguard\",\n secondaryIconColor: \"#88171a\",\n },\n\n source: {\n package: \"@highstate/mullvad\",\n path: \"peer\",\n },\n})\n"],"mappings":"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","names":["defineEntity","defineUnit","Type","defineEntity","Type","defineUnit","defineEntity","defineUnit","Type","defineEntity","Type","defineUnit","clusterEntity","defineEntity","defineUnit","Type","defineEntity","defineUnit","Type","Type","defineEntity","clusterEntity","defineUnit","clusterEntity","defineEntity","defineUnit","Type","clusterEntity","defineEntity","Type","defineUnit","defineEntity","defineUnit","Type","Type","defineEntity","defineUnit","clusterEntity","defineEntity","defineUnit","Type","defineEntity","defineUnit","Type","defineEntity","Type","defineUnit","clusterEntity","defineEntity","defineUnit","Type","defineEntity","Type","defineUnit","clusterEntity","defineUnit","Type","defineUnit","Type","clusterEntity","defineUnit","Type","defineUnit","Type","clusterEntity","defineUnit","Type","defineUnit","Type","clusterEntity","defineUnit","Type","defineUnit","Type","clusterEntity","defineUnit","Type","defineUnit","Type","clusterEntity","defineEntity","defineUnit","Type","defineEntity","Type","defineUnit","clusterEntity","defineUnit","Type","defineUnit","Type","clusterEntity","defineUnit","Type","Type","defineUnit","clusterEntity","defineUnit","Type","defineUnit","Type","clusterEntity","connection","defineUnit","Type","connection","defineUnit","Type","cluster","defineUnit","cluster","defineUnit","clusterEntity","peer","defineUnit","Type","Type","peer","defineUnit"]}
|
1
|
+
{"version":3,"sources":["../src/common.ts","../src/ssh.ts","../src/proxmox.ts","../src/k8s.ts","../src/dns.ts","../src/talos.ts","../src/wireguard.ts","../src/apps/index.ts","../src/apps/mariadb.ts","../src/restic.ts","../src/apps/postgresql.ts","../src/apps/vaultwarden.ts","../src/apps/traefik.ts","../src/apps/kubernetes-dashboard.ts","../src/apps/grocy.ts","../src/apps/maybe.ts","../src/apps/mongodb.ts","../src/apps/deployment.ts","../src/apps/syncthing.ts","../src/apps/code-server.ts","../src/cloudflare.ts","../src/k3s.ts","../src/mullvad.ts","../src/timeweb.ts"],"sourcesContent":["import { defineEntity, defineUnit, Type, type Static } from \"@highstate/contract\"\nimport { credentialsSchema, keyPairEntity } from \"./ssh\"\n\nexport const serverEntity = defineEntity({\n type: \"common.server\",\n\n schema: Type.Object({\n endpoint: Type.String(),\n hostname: Type.String(),\n sshCredentials: Type.Optional(credentialsSchema),\n }),\n\n meta: {\n color: \"#009688\",\n },\n})\n\nexport const endpointEntity = defineEntity({\n type: \"common.endpoint\",\n\n schema: Type.Object({\n endpoint: Type.String(),\n }),\n\n meta: {\n color: \"#FFC107\",\n description: \"The L3-L4 endpoint for some network service.\",\n },\n})\n\nexport const existingServer = defineUnit({\n type: \"common.existing-server\",\n\n args: {\n endpoint: Type.String(),\n sshUser: Type.Optional(Type.String({ default: \"root\" })),\n sshPort: Type.Optional(Type.Number({ default: 22 })),\n },\n\n secrets: {\n sshPassword: Type.Optional(Type.String()),\n sshPrivateKey: Type.Optional(Type.String()),\n },\n\n inputs: {\n sshKeyPair: {\n entity: keyPairEntity,\n required: false,\n },\n },\n\n outputs: {\n server: serverEntity,\n },\n\n meta: {\n displayName: \"Existing Server\",\n description: \"An existing server that can be used in the configuration.\",\n primaryIcon: \"mdi:server\",\n defaultNamePrefix: \"server\",\n },\n\n source: {\n package: \"@highstate/common\",\n path: \"existing-server\",\n },\n})\n\nexport const script = defineUnit({\n type: \"common.script\",\n\n args: {\n script: Type.String({ language: \"shell\" }),\n updateScript: Type.Optional(Type.String({ language: \"shell\" })),\n deleteScript: Type.Optional(Type.String({ language: \"shell\" })),\n },\n\n inputs: {\n server: serverEntity,\n },\n\n outputs: {\n server: serverEntity,\n },\n\n meta: {\n displayName: \"Shell Script\",\n description: \"Run a shell script on the server.\",\n primaryIcon: \"mdi:bash\",\n },\n\n source: {\n package: \"@highstate/common\",\n path: \"script\",\n },\n})\n\nexport type Server = Static<typeof serverEntity.schema>\nexport type Endpoint = Static<typeof endpointEntity.schema>\n","import { defineEntity, defineUnit, Type, type Static } from \"@highstate/contract\"\n\nexport const keyTypeSchema = Type.Union([\n //\n Type.Literal(\"rsa\"),\n Type.Literal(\"ed25519\"),\n])\n\nexport const keyPairEntity = defineEntity({\n type: \"ssh.key-pair\",\n\n schema: Type.Object({\n type: keyTypeSchema,\n privateKey: Type.String(),\n publicKey: Type.String(),\n }),\n\n meta: {\n color: \"#2b5797\",\n },\n})\n\nexport const credentialsSchema = Type.Object({\n endpoint: Type.Optional(Type.String()),\n user: Type.Optional(Type.String()),\n port: Type.Optional(Type.Number()),\n password: Type.Optional(Type.String()),\n privateKey: Type.Optional(Type.String()),\n})\n\nexport const keyPair = defineUnit({\n type: \"ssh.key-pair\",\n\n secrets: {\n privateKey: Type.Optional(Type.String()),\n },\n\n outputs: {\n keyPair: keyPairEntity,\n },\n\n meta: {\n displayName: \"SSH Key Pair\",\n description: \"Holds the ED25519 SSH key pair and generates the private key if not provided.\",\n category: \"ssh\",\n primaryIcon: \"charm:key\",\n primaryIconColor: \"#ffffff\",\n secondaryIcon: \"mdi:lock\",\n secondaryIconColor: \"#ffffff\",\n },\n\n source: {\n package: \"@highstate/common\",\n path: \"ssh/key-pair\",\n },\n})\n\nexport type KeyType = Static<typeof keyTypeSchema>\nexport type Credentials = Static<typeof credentialsSchema>\nexport type KeyPair = Static<typeof keyPairEntity.schema>\n","import { defineEntity, defineUnit, Type } from \"@highstate/contract\"\nimport { serverEntity } from \"./common\"\nimport { keyPairEntity } from \"./ssh\"\n\nexport const clusterEntity = defineEntity({\n type: \"proxmox.cluster\",\n\n schema: Type.Object({\n endpoint: Type.String(),\n insecure: Type.Optional(Type.Boolean()),\n username: Type.Optional(Type.String()),\n\n defaultNodeName: Type.String(),\n defaultDatastoreId: Type.String(),\n\n password: Type.Optional(Type.String()),\n apiToken: Type.Optional(Type.String()),\n }),\n\n meta: {\n color: \"#e56901\",\n },\n})\n\nexport const imageEntity = defineEntity({\n type: \"proxmox.image\",\n\n schema: Type.Object({\n id: Type.String(),\n }),\n\n meta: {\n color: \"#e56901\",\n },\n})\n\nexport const connection = defineUnit({\n type: \"proxmox.connection\",\n\n args: {\n endpoint: Type.String(),\n insecure: Type.Optional(Type.Boolean()),\n username: Type.Optional(Type.String()),\n\n defaultNodeName: Type.Optional(Type.String()),\n defaultDatastoreId: Type.Optional(Type.String()),\n },\n\n secrets: {\n password: Type.Optional(Type.String()),\n apiToken: Type.Optional(Type.String()),\n },\n\n outputs: {\n proxmoxCluster: clusterEntity,\n },\n\n meta: {\n displayName: \"Proxmox Connection\",\n description: \"The connection to an existing Proxmox cluster.\",\n category: \"Proxmox\",\n primaryIcon: \"simple-icons:proxmox\",\n primaryIconColor: \"#e56901\",\n secondaryIcon: \"codicon:vm\",\n },\n\n source: {\n package: \"@highstate/proxmox\",\n path: \"connection\",\n },\n})\n\nexport const image = defineUnit({\n type: \"proxmox.image\",\n\n args: {\n url: Type.String(),\n nodeName: Type.Optional(Type.String()),\n sha256: Type.Optional(Type.String()),\n datastoreId: Type.Optional(Type.String()),\n },\n\n inputs: {\n proxmoxCluster: clusterEntity,\n },\n\n outputs: {\n image: imageEntity,\n },\n\n meta: {\n displayName: \"Proxmox Image\",\n description: \"The image to upload to a Proxmox cluster.\",\n category: \"Proxmox\",\n primaryIcon: \"simple-icons:proxmox\",\n primaryIconColor: \"#e56901\",\n secondaryIcon: \"mage:compact-disk-fill\",\n },\n\n source: {\n package: \"@highstate/proxmox\",\n path: \"image\",\n },\n})\n\nexport const existingImage = defineUnit({\n type: \"proxmox.existing-image\",\n\n args: {\n id: Type.String(),\n },\n\n outputs: {\n image: imageEntity,\n },\n\n meta: {\n displayName: \"Proxmox Existing Image\",\n description: \"The existing image on a Proxmox cluster.\",\n category: \"Proxmox\",\n primaryIcon: \"simple-icons:proxmox\",\n primaryIconColor: \"#e56901\",\n secondaryIcon: \"mage:compact-disk-fill\",\n },\n\n source: {\n package: \"@highstate/proxmox\",\n path: \"existing-image\",\n },\n})\n\nexport const virtualMachine = defineUnit({\n type: \"proxmox.virtual-machine\",\n\n args: {\n nodeName: Type.Optional(Type.String()),\n\n cpuType: Type.Optional(Type.String({ default: \"host\" })),\n cores: Type.Optional(Type.Number({ default: 1 })),\n sockets: Type.Optional(Type.Number({ default: 1 })),\n memory: Type.Optional(Type.Number({ default: 512 })),\n\n ipv4: Type.Optional(Type.String()),\n ipv4Gateway: Type.Optional(Type.String()),\n dns: Type.Optional(Type.Array(Type.String())),\n\n datastoreId: Type.Optional(Type.String()),\n diskSize: Type.Optional(Type.Number({ default: 8 })),\n bridge: Type.Optional(Type.String({ default: \"vmbr0\" })),\n\n sshPort: Type.Optional(Type.Number({ default: 22 })),\n sshUser: Type.Optional(Type.String({ default: \"root\" })),\n\n waitForAgent: Type.Optional(Type.Boolean({ default: true })),\n },\n\n inputs: {\n proxmoxCluster: clusterEntity,\n image: imageEntity,\n\n sshKeyPair: {\n entity: keyPairEntity,\n required: false,\n },\n },\n\n secrets: {\n sshPassword: Type.Optional(Type.String()),\n },\n\n outputs: {\n server: serverEntity,\n },\n\n meta: {\n displayName: \"Proxmox Virtual Machine\",\n description: \"The virtual machine on a Proxmox cluster.\",\n category: \"Proxmox\",\n primaryIcon: \"simple-icons:proxmox\",\n primaryIconColor: \"#e56901\",\n secondaryIcon: \"codicon:vm\",\n },\n\n source: {\n package: \"@highstate/proxmox\",\n path: \"virtual-machine\",\n },\n})\n","import { defineEntity, defineUnit, Type, type Static } from \"@highstate/contract\"\nimport { providerEntity } from \"./dns\"\n\nexport const clusterInfoSchema = Type.Object({\n id: Type.String(),\n name: Type.String(),\n cni: Type.Optional(Type.String()),\n externalIps: Type.Array(Type.String()),\n})\n\nexport const serviceTypeSchema = Type.StringEnum([\"NodePort\", \"LoadBalancer\", \"ClusterIP\"])\n\nexport const metadataSchema = Type.Object({\n namespace: Type.Optional(Type.String()),\n name: Type.String(),\n labels: Type.Optional(Type.Record(Type.String(), Type.String())),\n annotations: Type.Optional(Type.Record(Type.String(), Type.String())),\n})\n\nexport const servicePortSchema = Type.Object({\n name: Type.Optional(Type.String()),\n port: Type.Optional(Type.Number()),\n targetPort: Type.Optional(Type.Union([Type.Number(), Type.String()])),\n protocol: Type.Optional(Type.String()),\n})\n\nexport const serviceSpecSchema = Type.Object({\n type: Type.Optional(Type.String()),\n selector: Type.Record(Type.String(), Type.String()),\n ports: Type.Array(servicePortSchema),\n clusterIP: Type.Optional(Type.String()),\n clusterIPs: Type.Optional(Type.Array(Type.String())),\n externalIPs: Type.Optional(Type.Array(Type.String())),\n})\n\nexport const serviceEntity = defineEntity({\n type: \"k8s.service\",\n\n schema: Type.Object({\n type: Type.Literal(\"k8s.service\"),\n clusterInfo: clusterInfoSchema,\n metadata: metadataSchema,\n spec: serviceSpecSchema,\n }),\n\n meta: {\n color: \"#2196F3\",\n },\n})\n\nexport const clusterEntity = defineEntity({\n type: \"k8s.cluster\",\n\n schema: Type.Object({\n info: clusterInfoSchema,\n kubeconfig: Type.String(),\n }),\n\n meta: {\n color: \"#2196F3\",\n },\n})\n\nexport const internalIpsPolicySchema = Type.StringEnum([\"always\", \"public\", \"never\"])\n\nexport const sharedClusterArgs = {\n /**\n * The list of external IPs of the cluster nodes allowed to be used for external access.\n *\n * If not provided, will be automatically detected by querying the cluster nodes.\n *\n * @schema\n */\n externalIps: {\n ...Type.Optional(Type.Array(Type.String())),\n description: `The list of external IPs of the cluster nodes allowed to be used for external access.\n\n If not provided, will be automatically detected by querying the cluster nodes.`,\n},\n\n /**\n * The policy for using internal IPs of the nodes as external IPs.\n *\n * - `always`: always use internal IPs as external IPs;\n * - `public`: use internal IPs as external IPs only if they are (theoretically) routable from the public internet **(default)**;\n * - `never`: never use internal IPs as external IPs.\n *\n * @schema\n */\n internalIpsPolicy: {\n ...{ ...internalIpsPolicySchema, default: \"public\" },\n description: `The policy for using internal IPs of the nodes as external IPs.\n\n - \\`always\\`: always use internal IPs as external IPs;\n - \\`public\\`: use internal IPs as external IPs only if they are (theoretically) routable from the public internet **(default)**;\n - \\`never\\`: never use internal IPs as external IPs.`,\n},\n\n /**\n * The FQDN to register the cluster nodes with.\n *\n * If provided and `registerFqdn` is set to `true`, the corresponding DNS provider must be provided to set up the DNS records.\n *\n * @schema\n */\n fqdn: {\n ...Type.Optional(Type.String()),\n description: `The FQDN to register the cluster nodes with.\n\n If provided and \\`registerFqdn\\` is set to \\`true\\`, the corresponding DNS provider must be provided to set up the DNS records.`,\n},\n\n /**\n * Whether to register the cluster nodes with the provided FQDN.\n *\n * By default, `true`.\n *\n * @schema\n */\n registerFqdn: {\n ...Type.Boolean({ default: true }),\n description: `Whether to register the cluster nodes with the provided FQDN.\n\n By default, \\`true\\`.`,\n},\n}\n\nexport const existingCluster = defineUnit({\n type: \"k8s.existing-cluster\",\n\n args: {\n ...sharedClusterArgs,\n },\n\n secrets: {\n /**\n * The kubeconfig of the cluster to use for connecting to the cluster.\n *\n * Will be available for all components using `cluster` output of this unit.\n *\n * @schema\n */\n kubeconfig: {\n ...Type.Record(Type.String(), Type.Any()),\n description: `The kubeconfig of the cluster to use for connecting to the cluster.\n\n Will be available for all components using \\`cluster\\` output of this unit.`,\n},\n },\n\n outputs: {\n cluster: clusterEntity,\n },\n\n meta: {\n displayName: \"Existing Cluster\",\n description: \"An existing Kubernetes cluster.\",\n primaryIcon: \"mdi:kubernetes\",\n },\n\n source: {\n package: \"@highstate/k8s\",\n path: \"units/existing-cluster\",\n },\n})\n\nexport const gatewayEntity = defineEntity({\n type: \"k8s.gateway\",\n\n schema: Type.Object({\n clusterInfo: clusterInfoSchema,\n gatewayClassName: Type.String(),\n httpListenerPort: Type.Number(),\n httpsListenerPort: Type.Number(),\n ip: Type.String(),\n service: Type.Optional(serviceEntity.schema),\n }),\n\n meta: {\n color: \"#4CAF50\",\n },\n})\n\nexport const tlsIssuerEntity = defineEntity({\n type: \"k8s.tls-issuer\",\n\n schema: Type.Object({\n clusterInfo: clusterInfoSchema,\n clusterIssuerName: Type.String(),\n }),\n\n meta: {\n color: \"#f06292\",\n },\n})\n\nexport const accessPointEntity = defineEntity({\n type: \"common.access-point\",\n schema: Type.Object({\n gateway: gatewayEntity.schema,\n tlsIssuer: tlsIssuerEntity.schema,\n dnsProvider: providerEntity.schema,\n }),\n\n meta: {\n color: \"#FFC107\",\n },\n})\n\nexport const accessPoint = defineUnit({\n type: \"k8s.access-point\",\n\n inputs: {\n gateway: gatewayEntity,\n tlsIssuer: tlsIssuerEntity,\n dnsProvider: providerEntity,\n },\n\n outputs: {\n accessPoint: accessPointEntity,\n },\n\n meta: {\n displayName: \"Access Point\",\n description: \"An access point which can be used to connect to services.\",\n primaryIcon: \"mdi:access-point\",\n },\n\n source: {\n package: \"@highstate/k8s\",\n path: \"units/access-point\",\n },\n})\n\nexport const certManager = defineUnit({\n type: \"k8s.cert-manager\",\n\n inputs: {\n k8sCluster: clusterEntity,\n },\n\n outputs: {\n k8sCluster: clusterEntity,\n },\n\n meta: {\n displayName: \"Cert Manager\",\n description: \"A certificate manager for managing TLS certificates.\",\n primaryIcon: \"simple-icons:letsencrypt\",\n },\n\n source: {\n package: \"@highstate/k8s\",\n path: \"units/cert-manager\",\n },\n})\n\nexport const dns01TlsIssuer = defineUnit({\n type: \"k8s.dns01-issuer\",\n\n inputs: {\n k8sCluster: clusterEntity,\n dnsProvider: providerEntity,\n },\n\n outputs: {\n tlsIssuer: tlsIssuerEntity,\n },\n\n meta: {\n displayName: \"DNS01 Issuer\",\n description: \"A TLS issuer for issuing certificate using DNS01 challenge.\",\n primaryIcon: \"mdi:certificate\",\n },\n\n source: {\n package: \"@highstate/k8s\",\n path: \"units/dns01-issuer\",\n },\n})\n\nexport const containerSchema = Type.Object({\n name: Type.String(),\n image: Type.String(),\n})\n\nexport const labelSelectorSchema = Type.Object({\n matchLabels: Type.Record(Type.String(), Type.String()),\n})\n\nexport const deploymentSpecSchema = Type.Object({\n replicas: Type.Number(),\n selector: labelSelectorSchema,\n template: Type.Object({\n metadata: metadataSchema,\n spec: Type.Object({\n containers: Type.Array(containerSchema),\n }),\n }),\n})\n\nexport const deploymentEntity = defineEntity({\n type: \"k8s.deployment\",\n\n schema: Type.Object({\n type: Type.Literal(\"k8s.deployment\"),\n clusterInfo: clusterInfoSchema,\n metadata: metadataSchema,\n\n service: Type.Optional(serviceEntity.schema),\n }),\n\n meta: {\n color: \"#4CAF50\",\n },\n})\n\nexport const statefulSetEntity = defineEntity({\n type: \"k8s.stateful-set\",\n\n schema: Type.Object({\n type: Type.Literal(\"k8s.stateful-set\"),\n clusterInfo: clusterInfoSchema,\n metadata: metadataSchema,\n\n service: Type.Optional(serviceEntity.schema),\n }),\n\n meta: {\n color: \"#FFC107\",\n },\n})\n\nexport const persistentVolumeClaimEntity = defineEntity({\n type: \"k8s.persistent-volume-claim\",\n\n schema: Type.Object({\n type: Type.Literal(\"k8s.persistent-volume-claim\"),\n clusterInfo: clusterInfoSchema,\n metadata: metadataSchema,\n }),\n\n meta: {\n color: \"#FFC107\",\n },\n})\n\nexport const interfaceEntity = defineEntity({\n type: \"k8s.interface\",\n\n schema: Type.Object({\n name: Type.String(),\n deployment: deploymentEntity.schema,\n }),\n\n meta: {\n color: \"#2196F3\",\n description:\n \"The interface in a network space of pod kernel which can accept or transmit packets.\",\n },\n})\n\nexport type ClusterInfo = Static<typeof clusterInfoSchema>\nexport type Cluster = Static<typeof clusterEntity.schema>\n\nexport type Gateway = Static<typeof gatewayEntity.schema>\nexport type TlsIssuer = Static<typeof tlsIssuerEntity.schema>\nexport type AccessPoint = Static<typeof accessPointEntity.schema>\n\nexport type Metadata = Static<typeof metadataSchema>\n\nexport type ServiceType = Static<typeof serviceTypeSchema>\nexport type ServicePort = Static<typeof servicePortSchema>\nexport type ServiceSpec = Static<typeof serviceSpecSchema>\nexport type Service = Static<typeof serviceEntity.schema>\n\nexport type Container = Static<typeof containerSchema>\nexport type DeploymentSpec = Static<typeof deploymentSpecSchema>\nexport type Deployment = Static<typeof deploymentEntity.schema>\n\nexport type PersistentVolumeClaim = Static<typeof persistentVolumeClaimEntity.schema>\nexport type StatefulSet = Static<typeof statefulSetEntity.schema>\n\nexport type Interface = Static<typeof interfaceEntity.schema>\nexport type InternalIpsPolicy = Static<typeof internalIpsPolicySchema>\n","import { defineEntity, defineUnit, Type, type Static } from \"@highstate/contract\"\n\nexport const providerEntity = defineEntity({\n type: \"dns.provider\",\n\n schema: Type.Object({\n name: Type.String(),\n type: Type.String(),\n data: Type.Record(Type.String(), Type.Unknown()),\n domain: Type.String(),\n }),\n\n meta: {\n color: \"#FF5722\",\n },\n})\n\nexport const record = defineUnit({\n type: \"common.dns-record\",\n\n args: {\n name: Type.String(),\n type: Type.String(),\n value: Type.String(),\n ttl: Type.Optional(Type.Number()),\n },\n\n inputs: {\n dnsProvider: providerEntity,\n },\n\n meta: {\n displayName: \"DNS Record\",\n description: \"A DNS record to create.\",\n primaryIcon: \"mdi:server\",\n defaultNamePrefix: \"record\",\n },\n\n source: {\n package: \"@highstate/common\",\n path: \"dns/record\",\n },\n})\n\nexport type Provider = Static<typeof providerEntity.schema>\n","import { defineEntity, defineUnit, Type } from \"@highstate/contract\"\nimport { serverEntity } from \"./common\"\nimport { clusterEntity as k8sClusterEntity } from \"./k8s\"\n\nexport const clusterEntity = defineEntity({\n type: \"talos.cluster\",\n\n schema: Type.Object({\n clientConfiguration: Type.String(),\n machineSecrets: Type.String(),\n }),\n\n meta: {\n color: \"#2d2d2d\",\n },\n})\n\nexport const cniSchema = Type.StringEnum([\"none\", \"cilium\", \"flannel\"])\nexport const csiSchema = Type.StringEnum([\"none\", \"local-path-provisioner\"])\n\nexport const cluster = defineUnit({\n type: \"talos.cluster\",\n\n args: {\n /**\n * Allow scheduling workloads on the master nodes.\n *\n * By default, \"true\" if no worker nodes are provided.\n */\n scheduleOnMasters: Type.Boolean(),\n\n /**\n * The endpoint of the cluster.\n *\n * By default, the first master node's endpoint is used.\n */\n endpoint: Type.Optional(Type.String()),\n\n /**\n * The name of the cluster.\n *\n * By default, the name of the instance is used.\n */\n clusterName: Type.Optional(Type.String()),\n\n /**\n * The CNI plugin to use.\n *\n * The following options are available:\n * - \"cilium\" (default)\n * - \"flannel\" (built-in in Talos)\n * - \"none\" (disable CNI, must be installed manually)\n *\n * The \"cilium\" CNI plugin is recommended to cover advanced network policies like FQDNs.\n */\n cni: { ...cniSchema, default: \"cilium\" },\n\n /**\n * The CSI plugin to use.\n *\n * The following options are available:\n * - \"local-path-provisioner\" (default)\n * - \"none\" (disable CSI, must be installed manually if needed)\n */\n csi: { ...csiSchema, default: \"local-path-provisioner\" },\n\n /**\n * The shared configuration patch.\n * It will be applied to all nodes.\n */\n sharedConfigPatch: Type.Optional(Type.Record(Type.String(), Type.Any())),\n\n /**\n * The master configuration patch.\n * It will be applied to all master nodes.\n */\n masterConfigPatch: Type.Optional(Type.Record(Type.String(), Type.Any())),\n\n /**\n * The worker configuration patch.\n * It will be applied to all worker nodes.\n */\n workerConfigPatch: Type.Optional(Type.Record(Type.String(), Type.Any())),\n },\n\n inputs: {\n masters: {\n entity: serverEntity,\n multiple: true,\n },\n workers: {\n entity: serverEntity,\n multiple: true,\n required: false,\n },\n },\n\n outputs: {\n k8sCluster: k8sClusterEntity,\n talosCluster: clusterEntity,\n },\n\n meta: {\n displayName: \"Talos Cluster\",\n description: \"A Kubernetes cluster managed by Talos.\",\n category: \"Talos\",\n color: \"#2d2d2d\",\n primaryIcon: \"simple-icons:talos\",\n secondaryIcon: \"devicon:kubernetes\",\n },\n\n source: {\n package: \"@highstate/talos\",\n path: \"cluster\",\n },\n})\n","import { defineEntity, defineUnit, Type, type Static } from \"@highstate/contract\"\nimport {\n clusterEntity,\n deploymentEntity,\n interfaceEntity,\n serviceEntity,\n serviceTypeSchema,\n statefulSetEntity,\n} from \"./k8s\"\nimport { providerEntity } from \"./dns\"\n\nexport const backendSchema = Type.StringEnum([\"wireguard\", \"amneziawg\"])\nexport const presharedKeyModeSchema = Type.StringEnum([\"none\", \"global\", \"secure\"])\n\nexport type Backend = Static<typeof backendSchema>\nexport type PresharedKeyMode = Static<typeof presharedKeyModeSchema>\n\nexport const networkEntity = defineEntity({\n type: \"wireguard.network\",\n\n schema: Type.Object({\n backend: Type.Optional(backendSchema),\n presharedKeyMode: presharedKeyModeSchema,\n globalPresharedKey: Type.Optional(Type.String()),\n ipv6: Type.Optional(Type.Boolean()),\n }),\n})\n\nexport const identityEntity = defineEntity({\n type: \"wireguard.identity\",\n\n schema: Type.Object({\n name: Type.String(),\n network: Type.Optional(networkEntity.schema),\n address: Type.Optional(Type.String()),\n privateKey: Type.String(),\n presharedKeyPart: Type.Optional(Type.String()),\n k8sServices: Type.Array(serviceEntity.schema),\n exitNode: Type.Boolean(),\n listenPort: Type.Optional(Type.Number()),\n externalIp: Type.Optional(Type.String()),\n endpoint: Type.Optional(Type.String()),\n fqdn: Type.Optional(Type.String()),\n }),\n\n meta: {\n color: \"#F44336\",\n },\n})\n\nexport const peerEntity = defineEntity({\n type: \"wireguard.peer\",\n\n schema: Type.Object({\n name: Type.String(),\n network: Type.Optional(networkEntity.schema),\n publicKey: Type.String(),\n address: Type.Optional(Type.String()),\n allowedIps: Type.Array(Type.String()),\n endpoint: Type.Optional(Type.String()),\n presharedKeyPart: Type.Optional(Type.String()),\n excludedIps: Type.Optional(Type.Array(Type.String())),\n dns: Type.Optional(Type.Array(Type.String())),\n }),\n\n meta: {\n color: \"#673AB7\",\n },\n})\n\nexport const k8sNodeEntity = defineEntity({\n type: \"wireguard.node\",\n\n schema: Type.Object({\n network: Type.String(),\n address: Type.String(),\n endpoint: Type.Optional(Type.String()),\n peers: Type.Array(Type.String()),\n }),\n})\n\nexport type Network = Static<typeof networkEntity.schema>\nexport type Identity = Static<typeof identityEntity.schema>\nexport type Peer = Static<typeof peerEntity.schema>\n\n/**\n * The network hols the shared configuration for the WireGuard identities, peers and nodes.\n */\nexport const network = defineUnit({\n type: \"wireguard.network\",\n\n args: {\n /**\n * The backend to use for the WireGuard network.\n *\n * Possible values are:\n * 1. `wireguard` - The default backend.\n * 2. `amneziawg` - The censorship-resistant fork of WireGuard.\n *\n * By default, the `wireguard` backend is used.\n *\n * @schema\n */\n backend: {\n ...backendSchema,\n description: `The backend to use for the WireGuard network.\n\n Possible values are:\n 1. \\`wireguard\\` - The default backend.\n 2. \\`amneziawg\\` - The censorship-resistant fork of WireGuard.\n\n By default, the \\`wireguard\\` backend is used.`,\n},\n\n /**\n * The option which defines how to handle pre-shared keys between peers.\n *\n * 1. `none` - No pre-shared keys will be used.\n * 2. `global` - A single pre-shared key will be used for all peer pairs in the network.\n * 3. `secure` - Each peer pair will have its own pre-shared key.\n * In this case, each identity generates `presharedKeyPart` and the actual pre-shared key\n * for each peer pair will be computed as `xor(peer1.presharedKeyPart, peer2.presharedKeyPart)`.\n *\n * If the whole network is managed by the HighState, the `secure` mode is recommended.\n *\n * By default, the `none` mode is used.\n *\n * @schema\n */\n presharedKeyMode: {\n ...Type.Optional(presharedKeyModeSchema),\n description: `The option which defines how to handle pre-shared keys between peers.\n\n 1. \\`none\\` - No pre-shared keys will be used.\n 2. \\`global\\` - A single pre-shared key will be used for all peer pairs in the network.\n 3. \\`secure\\` - Each peer pair will have its own pre-shared key.\n In this case, each identity generates \\`presharedKeyPart\\` and the actual pre-shared key\n for each peer pair will be computed as \\`xor(peer1.presharedKeyPart, peer2.presharedKeyPart)\\`.\n\n If the whole network is managed by the HighState, the \\`secure\\` mode is recommended.\n\n By default, the \\`none\\` mode is used.`,\n},\n\n /**\n * The option to enable IPv6 support in the network.\n *\n * By default, IPv6 support is disabled.\n *\n * @schema\n */\n ipv6: {\n ...Type.Optional(Type.Boolean()),\n description: `The option to enable IPv6 support in the network.\n\n By default, IPv6 support is disabled.`,\n},\n },\n\n secrets: {\n /**\n * The global pre-shared key to use for all peer pairs in the network.\n *\n * Will be used only if `presharedKeyMode` is set to `global`.\n * Will be generated automatically if not provided.\n *\n * @schema\n */\n globalPresharedKey: {\n ...Type.Optional(Type.String()),\n description: `The global pre-shared key to use for all peer pairs in the network.\n\n Will be used only if \\`presharedKeyMode\\` is set to \\`global\\`.\n Will be generated automatically if not provided.`,\n},\n },\n\n outputs: {\n network: networkEntity,\n },\n\n meta: {\n description: \"The WireGuard network with some shared configuration.\",\n primaryIcon: \"simple-icons:wireguard\",\n primaryIconColor: \"#88171a\",\n secondaryIcon: \"mdi:local-area-network-connect\",\n },\n\n source: {\n package: \"@highstate/wireguard\",\n path: \"network\",\n },\n})\n\nconst sharedPeerArgs = {\n /**\n * The name of the WireGuard peer.\n *\n * If not provided, the peer will be named after the unit.\n *\n * @schema\n */\n peerName: {\n ...Type.Optional(Type.String()),\n description: `The name of the WireGuard peer.\n\n If not provided, the peer will be named after the unit.`,\n},\n\n /**\n * The address of the WireGuard interface.\n *\n * The address may be any IPv4 or IPv6 address. CIDR notation is also supported.\n *\n * @schema\n */\n address: {\n ...Type.Optional(Type.String()),\n description: `The address of the WireGuard interface.\n\n The address may be any IPv4 or IPv6 address. CIDR notation is also supported.`,\n},\n\n /**\n * The list of allowed IPs for the peer.\n *\n * @schema\n */\n allowedIps: {\n ...Type.Optional(Type.Array(Type.String())),\n description: `The list of allowed IPs for the peer.`,\n},\n\n /**\n * The convenience option to set `allowedIps` to `0.0.0.0/0, ::/0`.\n *\n * Will be merged with the `allowedIps` if provided.\n *\n * @schema\n */\n exitNode: {\n ...Type.Optional(Type.Boolean()),\n description: `The convenience option to set \\`allowedIps\\` to \\`0.0.0.0/0, ::/0\\`.\n\n Will be merged with the \\`allowedIps\\` if provided.`,\n},\n\n /**\n * The list of IP ranges to exclude from the tunnel.\n *\n * Implementation notes:\n *\n * - This list will not be used to generate the allowed IPs for the peer.\n * - Instead, the node will setup extra direct routes to these IPs via default gateway.\n * - This allows to use `0.0.0.0/0, ::/0` in the `allowedIps` (and corresponding fwmark magic) and still have some IPs excluded from the tunnel.\n *\n * @schema\n */\n excludedIps: {\n ...Type.Optional(Type.Array(Type.String())),\n description: `The list of IP ranges to exclude from the tunnel.\n\n Implementation notes:\n\n - This list will not be used to generate the allowed IPs for the peer.\n - Instead, the node will setup extra direct routes to these IPs via default gateway.\n - This allows to use \\`0.0.0.0/0, ::/0\\` in the \\`allowedIps\\` (and corresponding fwmark magic) and still have some IPs excluded from the tunnel.`,\n},\n\n /**\n * The convenience option to exclude private IPs from the tunnel.\n *\n * For IPv4, the private IPs are:\n *\n * - `10.0.0.0/8`\n * - `172.16.0.0/12`\n * - `192.168.0.0/16`\n *\n * For IPv6, the private IPs are:\n *\n * - `fc00::/7`\n * - `fe80::/10`\n *\n * Will be merged with `excludedIps` if provided.\n *\n * @schema\n */\n excludePrivateIps: {\n ...Type.Optional(Type.Boolean()),\n description: `The convenience option to exclude private IPs from the tunnel.\n\n For IPv4, the private IPs are:\n\n - \\`10.0.0.0/8\\`\n - \\`172.16.0.0/12\\`\n - \\`192.168.0.0/16\\`\n\n For IPv6, the private IPs are:\n\n - \\`fc00::/7\\`\n - \\`fe80::/10\\`\n\n Will be merged with \\`excludedIps\\` if provided.`,\n},\n\n /**\n * The endpoint of the WireGuard peer.\n *\n * @schema\n */\n endpoint: {\n ...Type.Optional(Type.String()),\n description: `The endpoint of the WireGuard peer.`,\n},\n\n /**\n * The DNS servers that should be used by the interface connected to the WireGuard peer.\n *\n * If multiple peers define DNS servers, the node will merge them into a single list (but this is discouraged).\n *\n * @schema\n */\n dns: {\n ...Type.Optional(Type.Array(Type.String())),\n description: `The DNS servers that should be used by the interface connected to the WireGuard peer.\n\n If multiple peers define DNS servers, the node will merge them into a single list (but this is discouraged).`,\n},\n\n /**\n * The convenience option to include the DNS servers to the allowed IPs.\n *\n * By default, is `true`.\n *\n * @schema\n */\n includeDns: {\n ...Type.Optional(Type.Boolean({ default: true })),\n description: `The convenience option to include the DNS servers to the allowed IPs.\n\n By default, is \\`true\\`.`,\n},\n}\n\nconst sharedInterfaceArgs = {\n /**\n * The port to listen on.\n *\n * Will override the `listenPort` of the identity if provided.\n *\n * @schema\n */\n listenPort: {\n ...Type.Optional(Type.Number()),\n description: `The port to listen on.\n\n Will override the \\`listenPort\\` of the identity if provided.`,\n},\n\n /**\n * The DNS servers that should be used by the interface connected to the WireGuard node.\n *\n * Will be merged with the DNS servers of the peers.\n *\n * @schema\n */\n dns: {\n ...Type.Optional(Type.Array(Type.String())),\n description: `The DNS servers that should be used by the interface connected to the WireGuard node.\n\n Will be merged with the DNS servers of the peers.`,\n},\n}\n\nexport const peer = defineUnit({\n type: \"wireguard.peer\",\n\n args: {\n ...sharedPeerArgs,\n\n /**\n * The public key of the WireGuard peer.\n *\n * @schema\n */\n publicKey: {\n ...Type.String(),\n description: `The public key of the WireGuard peer.`,\n},\n },\n\n inputs: {\n /**\n * The network to use for the WireGuard peer.\n *\n * If not provided, the peer will use default network configuration.\n *\n * @schema\n */\n network: {\n ...{\n entity: networkEntity,\n required: false,\n },\n description: `The network to use for the WireGuard peer.\n\n If not provided, the peer will use default network configuration.`,\n},\n },\n\n outputs: {\n peer: peerEntity,\n },\n\n meta: {\n description: \"The WireGuard peer with the public key.\",\n primaryIcon: \"simple-icons:wireguard\",\n primaryIconColor: \"#88171a\",\n secondaryIcon: \"mdi:badge-account-horizontal\",\n },\n\n source: {\n package: \"@highstate/wireguard\",\n path: \"peer\",\n },\n})\n\nexport const identity = defineUnit({\n type: \"wireguard.identity\",\n\n args: {\n ...sharedPeerArgs,\n\n /**\n * The port to listen on.\n *\n * Used by the implementation of the identity and to calculate the endpoint of the peer.\n *\n * @schema\n */\n listenPort: {\n ...Type.Optional(Type.Number()),\n description: `The port to listen on.\n\n Used by the implementation of the identity and to calculate the endpoint of the peer.`,\n},\n\n /**\n * The external IP address of the WireGuard identity.\n *\n * Used by the implementation of the identity and to calculate the endpoint of the peer.\n *\n * @schema\n */\n externalIp: {\n ...Type.Optional(Type.String()),\n description: `The external IP address of the WireGuard identity.\n\n Used by the implementation of the identity and to calculate the endpoint of the peer.`,\n},\n\n /**\n * The endpoint of the WireGuard peer.\n *\n * By default, the endpoint is calculated as `externalIp:listenPort`.\n *\n * If overridden, does not affect node which implements the identity, but is used in the peer configuration of other nodes.\n *\n * @schema\n */\n endpoint: {\n ...Type.Optional(Type.String()),\n description: `The endpoint of the WireGuard peer.\n\n By default, the endpoint is calculated as \\`externalIp:listenPort\\`.\n\n If overridden, does not affect node which implements the identity, but is used in the peer configuration of other nodes.`,\n},\n\n /**\n * The FQDN of the WireGuard identity.\n * Will be used as endpoint for the peer.\n *\n * If `dnsProvider` is provided and `externalIp` is available, the FQDN will be registered automatically.\n *\n * @schema\n */\n fqdn: {\n ...Type.Optional(Type.String()),\n description: `The FQDN of the WireGuard identity.\n Will be used as endpoint for the peer.\n\n If \\`dnsProvider\\` is provided and \\`externalIp\\` is available, the FQDN will be registered automatically.`,\n},\n },\n\n secrets: {\n /**\n * The private key of the WireGuard identity.\n *\n * If not provided, the key will be generated automatically.\n *\n * @schema\n */\n privateKey: {\n ...Type.Optional(Type.String()),\n description: `The private key of the WireGuard identity.\n\n If not provided, the key will be generated automatically.`,\n},\n\n /**\n * The part of the pre-shared of the WireGuard identity.\n *\n * Will be generated automatically if not provided.\n *\n * @schema\n */\n presharedKeyPart: {\n ...Type.Optional(Type.String()),\n description: `The part of the pre-shared of the WireGuard identity.\n\n Will be generated automatically if not provided.`,\n},\n },\n\n inputs: {\n /**\n * The network to use for the WireGuard identity.\n *\n * If not provided, the identity will use default network configuration.\n *\n * @schema\n */\n network: {\n ...{\n entity: networkEntity,\n required: false,\n },\n description: `The network to use for the WireGuard identity.\n\n If not provided, the identity will use default network configuration.`,\n},\n\n /**\n * The list of Kubernetes services to expose the WireGuard identity.\n *\n * Their IP addresses will be added to the `allowedIps` of the identity and passed to the node to set up network policies.\n *\n * @schema\n */\n k8sServices: {\n ...{\n entity: serviceEntity,\n multiple: true,\n required: false,\n },\n description: `The list of Kubernetes services to expose the WireGuard identity.\n\n Their IP addresses will be added to the \\`allowedIps\\` of the identity and passed to the node to set up network policies.`,\n},\n\n dnsProvider: {\n entity: providerEntity,\n required: false,\n },\n },\n\n outputs: {\n identity: identityEntity,\n peer: peerEntity,\n },\n\n meta: {\n description: \"The WireGuard identity with the public key.\",\n primaryIcon: \"simple-icons:wireguard\",\n primaryIconColor: \"#88171a\",\n secondaryIcon: \"mdi:account\",\n },\n\n source: {\n package: \"@highstate/wireguard\",\n path: \"identity\",\n },\n})\n\nexport const node = defineUnit({\n type: \"wireguard.node\",\n\n args: {\n appName: Type.Optional(Type.String()),\n serviceType: Type.Optional(serviceTypeSchema),\n\n ...sharedInterfaceArgs,\n\n /**\n * The external IP address of the WireGuard node.\n *\n * Will override the `externalIp` of the identity if provided.\n *\n * @schema\n */\n externalIp: {\n ...Type.Optional(Type.String()),\n description: `The external IP address of the WireGuard node.\n\n Will override the \\`externalIp\\` of the identity if provided.`,\n},\n\n /**\n * The extra specification of the container which runs the WireGuard node.\n *\n * Will override any overlapping fields.\n *\n * @schema\n */\n containerSpec: {\n ...Type.Optional(Type.Record(Type.String(), Type.Any())),\n description: `The extra specification of the container which runs the WireGuard node.\n\n Will override any overlapping fields.`,\n},\n },\n\n inputs: {\n identity: identityEntity,\n k8sCluster: clusterEntity,\n\n deployment: {\n entity: deploymentEntity,\n required: false,\n },\n\n statefulSet: {\n entity: statefulSetEntity,\n required: false,\n },\n\n interface: {\n entity: interfaceEntity,\n required: false,\n },\n\n peers: {\n entity: peerEntity,\n multiple: true,\n required: false,\n },\n },\n\n outputs: {\n deployment: {\n entity: deploymentEntity,\n required: false,\n },\n\n interface: {\n entity: interfaceEntity,\n required: false,\n },\n\n service: {\n entity: serviceEntity,\n required: false,\n },\n },\n\n meta: {\n description: \"The WireGuard node running on the Kubernetes.\",\n primaryIcon: \"simple-icons:wireguard\",\n primaryIconColor: \"#88171a\",\n secondaryIcon: \"mdi:server\",\n },\n\n source: {\n package: \"@highstate/wireguard\",\n path: \"node\",\n },\n})\n\nexport const config = defineUnit({\n type: \"wireguard.config\",\n\n args: {\n ...sharedInterfaceArgs,\n\n /**\n * The name of the \"default\" interface where non-tunneled traffic should go.\n *\n * If not provided, the config will not respect `excludedIps`.\n *\n * @schema\n */\n defaultInterface: {\n ...Type.Optional(Type.String()),\n description: `The name of the \"default\" interface where non-tunneled traffic should go.\n\n If not provided, the config will not respect \\`excludedIps\\`.`,\n},\n },\n\n inputs: {\n identity: identityEntity,\n peers: {\n entity: peerEntity,\n multiple: true,\n required: false,\n },\n },\n\n meta: {\n displayName: \"WireGuard Config\",\n description: \"Just the WireGuard configuration for the identity and peers.\",\n primaryIcon: \"simple-icons:wireguard\",\n primaryIconColor: \"#88171a\",\n secondaryIcon: \"mdi:settings\",\n },\n\n source: {\n package: \"@highstate/wireguard\",\n path: \"config\",\n },\n})\n\nexport const configBundle = defineUnit({\n type: \"wireguard.config-bundle\",\n\n inputs: {\n identity: identityEntity,\n peers: {\n entity: peerEntity,\n multiple: true,\n },\n sharedPeers: {\n entity: peerEntity,\n multiple: true,\n required: false,\n },\n },\n\n meta: {\n displayName: \"WireGuard Config Bundle\",\n description: \"The WireGuard configuration bundle for the identity and peers.\",\n primaryIcon: \"simple-icons:wireguard\",\n primaryIconColor: \"#88171a\",\n secondaryIcon: \"mdi:folder-settings-variant\",\n },\n\n source: {\n package: \"@highstate/wireguard\",\n path: \"config-bundle\",\n },\n})\n","export * from \"./mariadb\"\nexport * from \"./postgresql\"\nexport * from \"./vaultwarden\"\n// export * from \"./zitadel\"\n// export * from \"./gitea\"\nexport * from \"./traefik\"\nexport * from \"./kubernetes-dashboard\"\nexport * from \"./grocy\"\nexport * from \"./maybe\"\nexport * from \"./mongodb\"\nexport * from \"./deployment\"\nexport * from \"./syncthing\"\nexport * from \"./code-server\"\n","import { defineEntity, defineUnit, Type, type Static } from \"@highstate/contract\"\nimport { clusterEntity, serviceEntity } from \"../k8s\"\nimport { repoEntity } from \"../restic\"\nimport { providerEntity } from \"../dns\"\n\nexport const mariadbEntity = defineEntity({\n type: \"apps.mariadb\",\n\n schema: Type.Object({\n service: Type.Optional(serviceEntity.schema),\n\n host: Type.String(),\n port: Type.Number(),\n rootPassword: Type.String(),\n }),\n\n meta: {\n color: \"#f06292\",\n },\n})\n\nexport const mariadb = defineUnit({\n type: \"apps.mariadb\",\n\n args: {\n fqdn: Type.Optional(Type.String()),\n appName: Type.Optional(Type.String()),\n },\n\n secrets: {\n rootPassword: Type.Optional(Type.String()),\n },\n\n inputs: {\n k8sCluster: clusterEntity,\n resticRepo: {\n entity: repoEntity,\n required: false,\n },\n dnsProvider: {\n entity: providerEntity,\n required: false,\n },\n },\n\n outputs: {\n mariadb: mariadbEntity,\n service: serviceEntity,\n },\n\n meta: {\n displayName: \"MariaDB\",\n description: \"The MariaDB database deployed on Kubernetes.\",\n primaryIcon: \"simple-icons:mariadb\",\n secondaryIcon: \"mdi:database\",\n },\n\n source: {\n package: \"@highstate/apps\",\n path: \"mariadb/app\",\n },\n})\n\nexport const mariadbDatabase = defineUnit({\n type: \"apps.mariadb.database\",\n\n args: {\n database: Type.Optional(Type.String()),\n username: Type.Optional(Type.String()),\n },\n\n secrets: {\n password: Type.Optional(Type.String()),\n },\n\n inputs: {\n k8sCluster: clusterEntity,\n mariadb: mariadbEntity,\n },\n\n meta: {\n displayName: \"MariaDB Database\",\n description:\n \"The virtual MariaDB database created on the MariaDB instance. Works only for MariaDB instances deployed on Kubernetes.\",\n primaryIcon: \"simple-icons:mariadb\",\n secondaryIcon: \"mdi:database-plus\",\n },\n\n source: {\n package: \"@highstate/apps\",\n path: \"mariadb/database\",\n },\n})\n\nexport type MariaDB = Static<typeof mariadbEntity.schema>\n","import { defineEntity, defineUnit, Type, type Static } from \"@highstate/contract\"\n\nexport const repoEntity = defineEntity({\n type: \"restic.repo\",\n\n schema: Type.Object({\n password: Type.String(),\n remoteDomains: Type.Array(Type.String()),\n\n type: Type.Literal(\"rclone\"),\n rcloneConfig: Type.String(),\n remoteName: Type.String(),\n basePath: Type.String(),\n }),\n\n meta: {\n color: \"#e56901\",\n },\n})\n\nexport const repo = defineUnit({\n type: \"restic.repo\",\n\n args: {\n remoteDomains: Type.Optional(Type.Array(Type.String())),\n basePath: Type.Optional(Type.String()),\n },\n\n secrets: {\n password: Type.Optional(Type.String()),\n rcloneConfig: Type.String({ multiline: true }),\n },\n\n outputs: {\n repo: repoEntity,\n },\n\n meta: {\n displayName: \"Restic Repo\",\n description: \"Holds the configuration for a Restic repository and its remote storage.\",\n primaryIconColor: \"#e56901\",\n primaryIcon: \"material-symbols:backup\",\n },\n\n source: {\n package: \"@highstate/restic\",\n path: \"repo\",\n },\n})\n\nexport type Repo = Static<typeof repoEntity.schema>\n","import { defineEntity, defineUnit, Type, type Static } from \"@highstate/contract\"\nimport { clusterEntity, serviceEntity } from \"../k8s\"\nimport { repoEntity } from \"../restic\"\nimport { providerEntity } from \"../dns\"\n\nexport const postgresqlEntity = defineEntity({\n type: \"apps.postgresql\",\n\n schema: Type.Object({\n service: Type.Optional(serviceEntity.schema),\n\n host: Type.String(),\n port: Type.Number(),\n rootPassword: Type.String(),\n }),\n\n meta: {\n color: \"#336791\",\n },\n})\n\nexport const postgresql = defineUnit({\n type: \"apps.postgresql\",\n\n args: {\n fqdn: Type.Optional(Type.String()),\n appName: Type.Optional(Type.String()),\n },\n\n secrets: {\n rootPassword: Type.Optional(Type.String()),\n },\n\n inputs: {\n k8sCluster: clusterEntity,\n resticRepo: {\n entity: repoEntity,\n required: false,\n },\n dnsProvider: {\n entity: providerEntity,\n required: false,\n },\n },\n\n outputs: {\n postgresql: postgresqlEntity,\n service: serviceEntity,\n },\n\n meta: {\n displayName: \"PostgreSQL\",\n description: \"The PostgreSQL database deployed on Kubernetes.\",\n primaryIcon: \"simple-icons:postgresql\",\n secondaryIcon: \"mdi:database\",\n },\n\n source: {\n package: \"@highstate/apps\",\n path: \"postgresql/app\",\n },\n})\n\nexport const postgresqlDatabase = defineUnit({\n type: \"apps.postgresql.database\",\n\n args: {\n database: Type.Optional(Type.String()),\n username: Type.Optional(Type.String()),\n },\n\n secrets: {\n password: Type.Optional(Type.String()),\n },\n\n inputs: {\n k8sCluster: clusterEntity,\n postgresql: postgresqlEntity,\n },\n\n meta: {\n displayName: \"PostgreSQL Database\",\n description:\n \"The virtual PostgreSQL database created on the PostgreSQL instance. Works only for PostgreSQL instances deployed on Kubernetes.\",\n primaryIcon: \"simple-icons:postgresql\",\n secondaryIcon: \"mdi:database-plus\",\n },\n\n source: {\n package: \"@highstate/apps\",\n path: \"postgresql/database\",\n },\n})\n\nexport type PostgreSQL = Static<typeof postgresqlEntity.schema>\n","import { defineUnit, Type } from \"@highstate/contract\"\nimport { accessPointEntity, clusterEntity } from \"../k8s\"\nimport { mariadbEntity } from \"./mariadb\"\n\nexport const vaultwarden = defineUnit({\n type: \"apps.vaultwarden\",\n\n args: {\n fqdn: Type.String(),\n appName: Type.Optional(Type.String()),\n },\n\n inputs: {\n mariadb: mariadbEntity,\n accessPoint: accessPointEntity,\n k8sCluster: clusterEntity,\n },\n\n secrets: {\n mariadbPassword: Type.Optional(Type.String()),\n },\n\n meta: {\n displayName: \"Vaultwarden\",\n description: \"The Vaultwarden password manager deployed on Kubernetes.\",\n primaryIcon: \"simple-icons:vaultwarden\",\n },\n\n source: {\n package: \"@highstate/apps\",\n path: \"vaultwarden\",\n },\n})\n","import { defineUnit, Type } from \"@highstate/contract\"\nimport { clusterEntity, gatewayEntity, serviceEntity, serviceTypeSchema } from \"../k8s\"\n\nexport const traefikGateway = defineUnit({\n type: \"apps.traefik-gateway\",\n\n args: {\n appName: Type.Optional(Type.String()),\n className: Type.Optional(Type.String()),\n serviceType: Type.Optional(serviceTypeSchema),\n },\n\n inputs: {\n k8sCluster: clusterEntity,\n },\n\n outputs: {\n gateway: gatewayEntity,\n service: serviceEntity,\n },\n\n meta: {\n displayName: \"Traefik Gateway\",\n description: \"A Traefik gateway for routing traffic to services.\",\n primaryIcon: \"simple-icons:traefikproxy\",\n },\n\n source: {\n package: \"@highstate/apps\",\n path: \"traefik\",\n },\n})\n","import { defineUnit, Type } from \"@highstate/contract\"\nimport { accessPointEntity, clusterEntity } from \"../k8s\"\n\nexport const kubernetesDashboard = defineUnit({\n type: \"apps.kubernetes-dashboard\",\n\n args: {\n fqdn: Type.String(),\n appName: Type.Optional(Type.String()),\n },\n\n inputs: {\n k8sCluster: clusterEntity,\n accessPoint: accessPointEntity,\n },\n\n meta: {\n displayName: \"Kubernetes Dashboard\",\n description: \"The Kubernetes Dashboard deployed on Kubernetes.\",\n primaryIcon: \"simple-icons:kubernetes\",\n secondaryIcon: \"mdi:dashboard\",\n },\n\n source: {\n package: \"@highstate/apps\",\n path: \"kubernetes-dashboard\",\n },\n})\n","import { defineUnit, Type } from \"@highstate/contract\"\nimport { accessPointEntity, clusterEntity } from \"../k8s\"\nimport { repoEntity } from \"../restic\"\n\nexport const grocy = defineUnit({\n type: \"apps.grocy\",\n\n args: {\n fqdn: Type.String(),\n appName: Type.Optional(Type.String()),\n },\n\n inputs: {\n resticRepo: {\n entity: repoEntity,\n required: false,\n },\n accessPoint: accessPointEntity,\n k8sCluster: clusterEntity,\n },\n\n meta: {\n displayName: \"Grocy\",\n description:\n \"Grocy is a web-based self-hosted groceries & household management solution for your home.\",\n primaryIcon: \"simple-icons:grocy\",\n },\n\n source: {\n package: \"@highstate/apps\",\n path: \"grocy\",\n },\n})\n","import { defineUnit, Type } from \"@highstate/contract\"\nimport { accessPointEntity, clusterEntity } from \"../k8s\"\nimport { repoEntity } from \"../restic\"\nimport { postgresqlEntity } from \"./postgresql\"\n\nexport const maybe = defineUnit({\n type: \"apps.maybe\",\n\n args: {\n fqdn: Type.String(),\n appName: Type.Optional(Type.String()),\n },\n\n inputs: {\n postgresql: postgresqlEntity,\n accessPoint: accessPointEntity,\n k8sCluster: clusterEntity,\n resticRepo: {\n entity: repoEntity,\n required: false,\n },\n },\n\n secrets: {\n postgresqlPassword: Type.Optional(Type.String()),\n secretKey: Type.Optional(Type.String()),\n },\n\n meta: {\n displayName: \"Maybe\",\n description: \"The OS for your personal finances.\",\n primaryIcon: \"arcticons:finance-manager\",\n },\n\n source: {\n package: \"@highstate/apps\",\n path: \"maybe\",\n },\n})\n","import { defineEntity, defineUnit, Type, type Static } from \"@highstate/contract\"\nimport { clusterEntity, serviceEntity, serviceTypeSchema } from \"../k8s\"\nimport { repoEntity } from \"../restic\"\nimport { providerEntity } from \"../dns\"\n\nexport const mongodbEntity = defineEntity({\n type: \"apps.mongodb\",\n\n schema: Type.Object({\n service: Type.Optional(serviceEntity.schema),\n\n host: Type.String(),\n port: Type.Number(),\n rootPassword: Type.String(),\n }),\n\n meta: {\n color: \"#13aa52\",\n },\n})\n\nexport const mongodb = defineUnit({\n type: \"apps.mongodb\",\n\n args: {\n fqdn: Type.Optional(Type.String()),\n appName: Type.Optional(Type.String()),\n serviceType: Type.Optional(serviceTypeSchema),\n },\n\n secrets: {\n rootPassword: Type.Optional(Type.String()),\n },\n\n inputs: {\n k8sCluster: clusterEntity,\n resticRepo: {\n entity: repoEntity,\n required: false,\n },\n dnsProvider: {\n entity: providerEntity,\n required: false,\n },\n },\n\n outputs: {\n mongodb: mongodbEntity,\n service: serviceEntity,\n },\n\n meta: {\n displayName: \"MongoDB\",\n description: \"The MongoDB instance deployed on Kubernetes.\",\n primaryIcon: \"simple-icons:mongodb\",\n secondaryIcon: \"mdi:database\",\n },\n\n source: {\n package: \"@highstate/apps\",\n path: \"mongodb/app\",\n },\n})\n\nexport const mongodbDatabase = defineUnit({\n type: \"apps.mongodb.database\",\n\n args: {\n database: Type.Optional(Type.String()),\n username: Type.Optional(Type.String()),\n },\n\n secrets: {\n password: Type.Optional(Type.String()),\n },\n\n inputs: {\n k8sCluster: clusterEntity,\n mongodb: mongodbEntity,\n },\n\n meta: {\n displayName: \"MongoDB Database\",\n description:\n \"The virtual MongoDB database created on the MongoDB instance. Works only for MongoDB instances deployed on Kubernetes.\",\n primaryIcon: \"simple-icons:mongodb\",\n secondaryIcon: \"mdi:database-plus\",\n },\n\n source: {\n package: \"@highstate/apps\",\n path: \"mongodb/database\",\n },\n})\n\nexport type MongoDB = Static<typeof mongodbEntity.schema>\n","import { defineUnit, Type } from \"@highstate/contract\"\nimport { clusterEntity, deploymentEntity, serviceEntity, serviceTypeSchema } from \"../k8s\"\nimport { repoEntity } from \"../restic\"\nimport { providerEntity } from \"../dns\"\nimport { mariadbEntity } from \"./mariadb\"\nimport { postgresqlEntity } from \"./postgresql\"\nimport { mongodbEntity } from \"./mongodb\"\n\nexport const deployment = defineUnit({\n type: \"apps.deployment\",\n\n args: {\n appName: Type.Optional(Type.String()),\n\n fqdn: Type.Optional(Type.String()),\n serviceType: Type.Optional(serviceTypeSchema),\n\n image: Type.Optional(Type.String()),\n port: Type.Optional(Type.Number()),\n replicas: Type.Optional(Type.Number()),\n\n dataPath: Type.Optional(Type.String()),\n\n env: Type.Optional(Type.Record(Type.String(), Type.Any())),\n\n mariadbEnvMapping: Type.Optional(Type.Record(Type.String(), Type.Any())),\n postgresqlEnvMapping: Type.Optional(Type.Record(Type.String(), Type.Any())),\n mongodbEnvMapping: Type.Optional(Type.Record(Type.String(), Type.Any())),\n\n manifest: Type.Optional(Type.Record(Type.String(), Type.Any())),\n serviceManifest: Type.Optional(Type.Record(Type.String(), Type.Any())),\n httpRouteManifest: Type.Optional(Type.Record(Type.String(), Type.Any())),\n },\n\n inputs: {\n k8sCluster: clusterEntity,\n\n mariadb: {\n entity: mariadbEntity,\n required: false,\n },\n postgresql: {\n entity: postgresqlEntity,\n required: false,\n },\n mongodb: {\n entity: mongodbEntity,\n required: false,\n },\n resticRepo: {\n entity: repoEntity,\n required: false,\n },\n dnsProvider: {\n entity: providerEntity,\n required: false,\n },\n },\n\n outputs: {\n deployment: deploymentEntity,\n service: serviceEntity,\n },\n\n secrets: {\n mariadbPassword: Type.Optional(Type.String()),\n postgresqlPassword: Type.Optional(Type.String()),\n mongodbPassword: Type.Optional(Type.String()),\n },\n\n meta: {\n displayName: \"Kubernetes Deployment\",\n description: \"A generic Kubernetes deployment with optional service and gateway routes.\",\n primaryIcon: \"mdi:kubernetes\",\n secondaryIcon: \"mdi:cube-outline\",\n },\n\n source: {\n package: \"@highstate/apps\",\n path: \"deployment\",\n },\n})\n","import { defineUnit, Type } from \"@highstate/contract\"\nimport {\n accessPointEntity,\n clusterEntity,\n persistentVolumeClaimEntity,\n serviceEntity,\n} from \"../k8s\"\nimport { repoEntity } from \"../restic\"\n\nexport const backupModeSchema = Type.Union([Type.Literal(\"metadata\"), Type.Literal(\"full\")])\n\nexport const syncthing = defineUnit({\n type: \"apps.syncthing\",\n\n args: {\n fqdn: Type.String(),\n deviceFqdn: Type.Optional(Type.String()),\n appName: Type.Optional(Type.String()),\n backupMode: Type.Optional({ ...backupModeSchema, default: \"metadata\" }),\n },\n\n inputs: {\n accessPoint: accessPointEntity,\n k8sCluster: clusterEntity,\n resticRepo: {\n entity: repoEntity,\n required: false,\n },\n volume: {\n entity: persistentVolumeClaimEntity,\n required: false,\n },\n },\n\n outputs: {\n service: serviceEntity,\n volume: persistentVolumeClaimEntity,\n },\n\n meta: {\n displayName: \"Syncthing\",\n description: \"The Syncthing instance deployed on Kubernetes.\",\n primaryIcon: \"simple-icons:syncthing\",\n },\n\n source: {\n package: \"@highstate/apps\",\n path: \"syncthing\",\n },\n})\n","import { defineUnit, Type } from \"@highstate/contract\"\nimport {\n accessPointEntity,\n clusterEntity,\n persistentVolumeClaimEntity,\n statefulSetEntity,\n} from \"../k8s\"\nimport { repoEntity } from \"../restic\"\n\nexport const codeServer = defineUnit({\n type: \"apps.code-server\",\n\n args: {\n fqdn: Type.String(),\n appName: Type.Optional(Type.String()),\n },\n\n secrets: {\n password: Type.Optional(Type.String()),\n sudoPassword: Type.Optional(Type.String()),\n },\n\n inputs: {\n accessPoint: accessPointEntity,\n k8sCluster: clusterEntity,\n resticRepo: {\n entity: repoEntity,\n required: false,\n },\n volume: {\n entity: persistentVolumeClaimEntity,\n required: false,\n },\n },\n\n outputs: {\n statefulSet: statefulSetEntity,\n volume: persistentVolumeClaimEntity,\n },\n\n meta: {\n displayName: \"Code Server\",\n description: \"The Code Server instance deployed on Kubernetes.\",\n primaryIcon: \"material-icon-theme:vscode\",\n },\n\n source: {\n package: \"@highstate/apps\",\n path: \"code-server\",\n },\n})\n","import { defineUnit, Type } from \"@highstate/contract\"\nimport { providerEntity } from \"./dns\"\n\nexport const connection = defineUnit({\n type: \"cloudflare.connection\",\n\n secrets: {\n apiToken: Type.String(),\n },\n\n outputs: {\n dnsProvider: providerEntity,\n },\n\n meta: {\n displayName: \"Cloudflare Connection\",\n description: \"Creates a new Cloudflare connection for one zone.\",\n primaryIcon: \"simple-icons:cloudflare\",\n },\n\n source: {\n package: \"@highstate/cloudflare\",\n path: \"connection\",\n },\n})\n","import { defineUnit } from \"@highstate/contract\"\nimport { serverEntity } from \"./common\"\nimport { clusterEntity, sharedClusterArgs } from \"./k8s\"\n\nexport const cluster = defineUnit({\n type: \"k3s.cluster\",\n\n args: {\n ...sharedClusterArgs,\n },\n\n inputs: {\n server: serverEntity,\n },\n\n outputs: {\n k8sCluster: clusterEntity,\n },\n\n meta: {\n displayName: \"K3s Cluster\",\n description: \"The K3s cluster created on top of the server.\",\n category: \"k3s\",\n primaryIcon: \"devicon:k3s\",\n secondaryIcon: \"devicon:kubernetes\",\n },\n\n source: {\n package: \"@highstate/k3s\",\n path: \"cluster\",\n },\n})\n","import { defineUnit, Type } from \"@highstate/contract\"\nimport { networkEntity, peerEntity } from \"./wireguard\"\n\nexport const endpointType = Type.Union([\n Type.Literal(\"fqdn\"),\n Type.Literal(\"ipv4\"),\n Type.Literal(\"ipv6\"),\n])\n\nexport const peer = defineUnit({\n type: \"mullvad.peer\",\n\n args: {\n hostname: Type.Optional(Type.String()),\n endpointType: Type.Optional({ ...endpointType, default: \"fqdn\" }),\n },\n\n inputs: {\n /**\n * The network to use for the WireGuard peer.\n *\n * If not provided, the peer will use default network configuration.\n */\n network: {\n entity: networkEntity,\n required: false,\n },\n },\n\n outputs: {\n peer: peerEntity,\n },\n\n meta: {\n displayName: \"Mullvad Peer\",\n description: \"The Mullvad WireGuard peer fetched from the Mullvad API.\",\n primaryIcon: \"simple-icons:mullvad\",\n secondaryIcon: \"cib:wireguard\",\n secondaryIconColor: \"#88171a\",\n },\n\n source: {\n package: \"@highstate/mullvad\",\n path: \"peer\",\n },\n})\n","import { defineEntity, defineUnit, Type } from \"@highstate/contract\"\nimport { serverEntity } from \"./common\"\nimport { keyPairEntity } from \"./ssh\"\n\nexport const connectionEntity = defineEntity({\n type: \"timeweb.connection\",\n\n schema: Type.Object({\n name: Type.String(),\n apiToken: Type.String(),\n }),\n})\n\nexport const connection = defineUnit({\n type: \"timeweb.connection\",\n\n secrets: {\n apiToken: Type.String(),\n },\n\n outputs: {\n connection: connectionEntity,\n },\n\n meta: {\n displayName: \"Timeweb Connection\",\n description: \"Creates a new Timeweb connection.\",\n primaryIcon: \"material-symbols:cloud\",\n },\n\n source: {\n package: \"@highstate/timeweb\",\n path: \"connection\",\n },\n})\n\nexport const virtualMachine = defineUnit({\n type: \"timeweb.virtual-machine\",\n\n args: {\n presetId: Type.Optional(Type.Number()),\n osId: Type.Optional(Type.Number()),\n availabilityZone: Type.String(),\n },\n\n inputs: {\n connection: connectionEntity,\n sshKeyPair: {\n entity: keyPairEntity,\n required: false,\n },\n },\n\n secrets: {\n sshPrivateKey: Type.Optional(Type.String()),\n },\n\n outputs: {\n server: serverEntity,\n },\n\n meta: {\n displayName: \"Timeweb Virtual Machine\",\n description: \"Creates a new Timeweb virtual machine.\",\n primaryIcon: \"material-symbols:cloud\",\n secondaryIcon: \"codicon:vm\",\n },\n\n source: {\n package: \"@highstate/timeweb\",\n path: \"virtual-machine\",\n },\n})\n"],"mappings":"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","names":["defineEntity","defineUnit","Type","defineEntity","Type","defineUnit","defineEntity","defineUnit","Type","defineEntity","Type","defineUnit","clusterEntity","defineEntity","defineUnit","Type","defineEntity","defineUnit","Type","Type","defineEntity","clusterEntity","defineUnit","clusterEntity","defineEntity","defineUnit","Type","clusterEntity","defineEntity","Type","defineUnit","defineEntity","defineUnit","Type","Type","defineEntity","defineUnit","clusterEntity","defineEntity","defineUnit","Type","defineEntity","defineUnit","Type","defineEntity","Type","defineUnit","clusterEntity","defineEntity","defineUnit","Type","defineEntity","Type","defineUnit","clusterEntity","defineUnit","Type","defineUnit","Type","clusterEntity","defineUnit","Type","defineUnit","Type","clusterEntity","defineUnit","Type","defineUnit","Type","clusterEntity","defineUnit","Type","defineUnit","Type","clusterEntity","defineUnit","Type","defineUnit","Type","clusterEntity","defineEntity","defineUnit","Type","defineEntity","Type","defineUnit","clusterEntity","defineUnit","Type","defineUnit","Type","clusterEntity","defineUnit","Type","Type","defineUnit","clusterEntity","defineUnit","Type","defineUnit","Type","clusterEntity","connection","defineUnit","Type","connection","defineUnit","Type","cluster","defineUnit","cluster","defineUnit","clusterEntity","peer","defineUnit","Type","Type","peer","defineUnit","connection","virtualMachine","defineEntity","defineUnit","Type","defineEntity","Type","connection","defineUnit","virtualMachine"]}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@highstate/library",
|
3
|
-
"version": "0.7.
|
3
|
+
"version": "0.7.10",
|
4
4
|
"type": "module",
|
5
5
|
"files": [
|
6
6
|
"dist",
|
@@ -19,12 +19,12 @@
|
|
19
19
|
"build": "highstate build --library"
|
20
20
|
},
|
21
21
|
"dependencies": {
|
22
|
-
"@highstate/contract": "^0.7.
|
22
|
+
"@highstate/contract": "^0.7.10",
|
23
23
|
"@sinclair/typebox": "^0.34.11",
|
24
24
|
"remeda": "^2.21.0"
|
25
25
|
},
|
26
26
|
"devDependencies": {
|
27
|
-
"@highstate/cli": "^0.7.
|
27
|
+
"@highstate/cli": "^0.7.10"
|
28
28
|
},
|
29
|
-
"gitHead": "
|
29
|
+
"gitHead": "171465dab44ebcedd1d1eb9e5369fb1c88daa480"
|
30
30
|
}
|
package/src/common.ts
CHANGED
@@ -66,5 +66,34 @@ export const existingServer = defineUnit({
|
|
66
66
|
},
|
67
67
|
})
|
68
68
|
|
69
|
+
export const script = defineUnit({
|
70
|
+
type: "common.script",
|
71
|
+
|
72
|
+
args: {
|
73
|
+
script: Type.String({ language: "shell" }),
|
74
|
+
updateScript: Type.Optional(Type.String({ language: "shell" })),
|
75
|
+
deleteScript: Type.Optional(Type.String({ language: "shell" })),
|
76
|
+
},
|
77
|
+
|
78
|
+
inputs: {
|
79
|
+
server: serverEntity,
|
80
|
+
},
|
81
|
+
|
82
|
+
outputs: {
|
83
|
+
server: serverEntity,
|
84
|
+
},
|
85
|
+
|
86
|
+
meta: {
|
87
|
+
displayName: "Shell Script",
|
88
|
+
description: "Run a shell script on the server.",
|
89
|
+
primaryIcon: "mdi:bash",
|
90
|
+
},
|
91
|
+
|
92
|
+
source: {
|
93
|
+
package: "@highstate/common",
|
94
|
+
path: "script",
|
95
|
+
},
|
96
|
+
})
|
97
|
+
|
69
98
|
export type Server = Static<typeof serverEntity.schema>
|
70
99
|
export type Endpoint = Static<typeof endpointEntity.schema>
|
package/src/index.ts
CHANGED
package/src/k3s.ts
CHANGED
@@ -1,10 +1,14 @@
|
|
1
1
|
import { defineUnit } from "@highstate/contract"
|
2
2
|
import { serverEntity } from "./common"
|
3
|
-
import { clusterEntity } from "./k8s"
|
3
|
+
import { clusterEntity, sharedClusterArgs } from "./k8s"
|
4
4
|
|
5
5
|
export const cluster = defineUnit({
|
6
6
|
type: "k3s.cluster",
|
7
7
|
|
8
|
+
args: {
|
9
|
+
...sharedClusterArgs,
|
10
|
+
},
|
11
|
+
|
8
12
|
inputs: {
|
9
13
|
server: serverEntity,
|
10
14
|
},
|
package/src/k8s.ts
CHANGED
@@ -63,47 +63,51 @@ export const clusterEntity = defineEntity({
|
|
63
63
|
|
64
64
|
export const internalIpsPolicySchema = Type.StringEnum(["always", "public", "never"])
|
65
65
|
|
66
|
+
export const sharedClusterArgs = {
|
67
|
+
/**
|
68
|
+
* The list of external IPs of the cluster nodes allowed to be used for external access.
|
69
|
+
*
|
70
|
+
* If not provided, will be automatically detected by querying the cluster nodes.
|
71
|
+
*
|
72
|
+
* @schema
|
73
|
+
*/
|
74
|
+
externalIps: Type.Optional(Type.Array(Type.String())),
|
75
|
+
|
76
|
+
/**
|
77
|
+
* The policy for using internal IPs of the nodes as external IPs.
|
78
|
+
*
|
79
|
+
* - `always`: always use internal IPs as external IPs;
|
80
|
+
* - `public`: use internal IPs as external IPs only if they are (theoretically) routable from the public internet **(default)**;
|
81
|
+
* - `never`: never use internal IPs as external IPs.
|
82
|
+
*
|
83
|
+
* @schema
|
84
|
+
*/
|
85
|
+
internalIpsPolicy: { ...internalIpsPolicySchema, default: "public" },
|
86
|
+
|
87
|
+
/**
|
88
|
+
* The FQDN to register the cluster nodes with.
|
89
|
+
*
|
90
|
+
* If provided and `registerFqdn` is set to `true`, the corresponding DNS provider must be provided to set up the DNS records.
|
91
|
+
*
|
92
|
+
* @schema
|
93
|
+
*/
|
94
|
+
fqdn: Type.Optional(Type.String()),
|
95
|
+
|
96
|
+
/**
|
97
|
+
* Whether to register the cluster nodes with the provided FQDN.
|
98
|
+
*
|
99
|
+
* By default, `true`.
|
100
|
+
*
|
101
|
+
* @schema
|
102
|
+
*/
|
103
|
+
registerFqdn: Type.Boolean({ default: true }),
|
104
|
+
}
|
105
|
+
|
66
106
|
export const existingCluster = defineUnit({
|
67
107
|
type: "k8s.existing-cluster",
|
68
108
|
|
69
109
|
args: {
|
70
|
-
|
71
|
-
* The list of external IPs of the cluster nodes allowed to be used for external access.
|
72
|
-
*
|
73
|
-
* If not provided, will be automatically detected by querying the cluster nodes.
|
74
|
-
*
|
75
|
-
* @schema
|
76
|
-
*/
|
77
|
-
externalIps: Type.Optional(Type.Array(Type.String())),
|
78
|
-
|
79
|
-
/**
|
80
|
-
* The policy for using internal IPs of the nodes as external IPs.
|
81
|
-
*
|
82
|
-
* - `always`: always use internal IPs as external IPs;
|
83
|
-
* - `public`: use internal IPs as external IPs only if they are (theoretically) routable from the public internet **(default)**;
|
84
|
-
* - `never`: never use internal IPs as external IPs.
|
85
|
-
*
|
86
|
-
* @schema
|
87
|
-
*/
|
88
|
-
internalIpsPolicy: { ...internalIpsPolicySchema, default: "public" },
|
89
|
-
|
90
|
-
/**
|
91
|
-
* The FQDN to register the cluster nodes with.
|
92
|
-
*
|
93
|
-
* If provided and `registerFqdn` is set to `true`, the corresponding DNS provider must be provided to set up the DNS records.
|
94
|
-
*
|
95
|
-
* @schema
|
96
|
-
*/
|
97
|
-
fqdn: Type.Optional(Type.String()),
|
98
|
-
|
99
|
-
/**
|
100
|
-
* Whether to register the cluster nodes with the provided FQDN.
|
101
|
-
*
|
102
|
-
* By default, `true`.
|
103
|
-
*
|
104
|
-
* @schema
|
105
|
-
*/
|
106
|
-
registerFqdn: Type.Boolean({ default: true }),
|
110
|
+
...sharedClusterArgs,
|
107
111
|
},
|
108
112
|
|
109
113
|
secrets: {
|
@@ -129,7 +133,7 @@ export const existingCluster = defineUnit({
|
|
129
133
|
|
130
134
|
source: {
|
131
135
|
package: "@highstate/k8s",
|
132
|
-
path: "existing-cluster",
|
136
|
+
path: "units/existing-cluster",
|
133
137
|
},
|
134
138
|
})
|
135
139
|
|
@@ -197,7 +201,7 @@ export const accessPoint = defineUnit({
|
|
197
201
|
|
198
202
|
source: {
|
199
203
|
package: "@highstate/k8s",
|
200
|
-
path: "access-point",
|
204
|
+
path: "units/access-point",
|
201
205
|
},
|
202
206
|
})
|
203
207
|
|
@@ -220,7 +224,7 @@ export const certManager = defineUnit({
|
|
220
224
|
|
221
225
|
source: {
|
222
226
|
package: "@highstate/k8s",
|
223
|
-
path: "cert-manager",
|
227
|
+
path: "units/cert-manager",
|
224
228
|
},
|
225
229
|
})
|
226
230
|
|
@@ -244,7 +248,7 @@ export const dns01TlsIssuer = defineUnit({
|
|
244
248
|
|
245
249
|
source: {
|
246
250
|
package: "@highstate/k8s",
|
247
|
-
path: "dns01-issuer",
|
251
|
+
path: "units/dns01-issuer",
|
248
252
|
},
|
249
253
|
})
|
250
254
|
|
@@ -351,3 +355,4 @@ export type PersistentVolumeClaim = Static<typeof persistentVolumeClaimEntity.sc
|
|
351
355
|
export type StatefulSet = Static<typeof statefulSetEntity.schema>
|
352
356
|
|
353
357
|
export type Interface = Static<typeof interfaceEntity.schema>
|
358
|
+
export type InternalIpsPolicy = Static<typeof internalIpsPolicySchema>
|
package/src/nixos.ts
ADDED
File without changes
|
package/src/timeweb.ts
ADDED
@@ -0,0 +1,73 @@
|
|
1
|
+
import { defineEntity, defineUnit, Type } from "@highstate/contract"
|
2
|
+
import { serverEntity } from "./common"
|
3
|
+
import { keyPairEntity } from "./ssh"
|
4
|
+
|
5
|
+
export const connectionEntity = defineEntity({
|
6
|
+
type: "timeweb.connection",
|
7
|
+
|
8
|
+
schema: Type.Object({
|
9
|
+
name: Type.String(),
|
10
|
+
apiToken: Type.String(),
|
11
|
+
}),
|
12
|
+
})
|
13
|
+
|
14
|
+
export const connection = defineUnit({
|
15
|
+
type: "timeweb.connection",
|
16
|
+
|
17
|
+
secrets: {
|
18
|
+
apiToken: Type.String(),
|
19
|
+
},
|
20
|
+
|
21
|
+
outputs: {
|
22
|
+
connection: connectionEntity,
|
23
|
+
},
|
24
|
+
|
25
|
+
meta: {
|
26
|
+
displayName: "Timeweb Connection",
|
27
|
+
description: "Creates a new Timeweb connection.",
|
28
|
+
primaryIcon: "material-symbols:cloud",
|
29
|
+
},
|
30
|
+
|
31
|
+
source: {
|
32
|
+
package: "@highstate/timeweb",
|
33
|
+
path: "connection",
|
34
|
+
},
|
35
|
+
})
|
36
|
+
|
37
|
+
export const virtualMachine = defineUnit({
|
38
|
+
type: "timeweb.virtual-machine",
|
39
|
+
|
40
|
+
args: {
|
41
|
+
presetId: Type.Optional(Type.Number()),
|
42
|
+
osId: Type.Optional(Type.Number()),
|
43
|
+
availabilityZone: Type.String(),
|
44
|
+
},
|
45
|
+
|
46
|
+
inputs: {
|
47
|
+
connection: connectionEntity,
|
48
|
+
sshKeyPair: {
|
49
|
+
entity: keyPairEntity,
|
50
|
+
required: false,
|
51
|
+
},
|
52
|
+
},
|
53
|
+
|
54
|
+
secrets: {
|
55
|
+
sshPrivateKey: Type.Optional(Type.String()),
|
56
|
+
},
|
57
|
+
|
58
|
+
outputs: {
|
59
|
+
server: serverEntity,
|
60
|
+
},
|
61
|
+
|
62
|
+
meta: {
|
63
|
+
displayName: "Timeweb Virtual Machine",
|
64
|
+
description: "Creates a new Timeweb virtual machine.",
|
65
|
+
primaryIcon: "material-symbols:cloud",
|
66
|
+
secondaryIcon: "codicon:vm",
|
67
|
+
},
|
68
|
+
|
69
|
+
source: {
|
70
|
+
package: "@highstate/timeweb",
|
71
|
+
path: "virtual-machine",
|
72
|
+
},
|
73
|
+
})
|