@highstate/library 0.1.2 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/dist/index.d.ts +536 -113
  2. package/dist/index.mjs +778 -149
  3. package/package.json +11 -6
package/dist/index.mjs CHANGED
@@ -1,220 +1,849 @@
1
- import { z } from 'zod';
2
- import { defineComponent as defineComponent$1, defineUnit } from '@highstate/contract';
3
- import { defineComponent } from '@highstate/contract/component';
1
+ import { defineEntity, defineUnit, text } from '@highstate/contract';
2
+ import { Type } from '@sinclair/typebox';
4
3
 
5
- const serverSshCredentialsType = z.object({
6
- type: z.literal("server.sshCredentials"),
7
- endpoint: z.string().optional(),
8
- port: z.number().optional(),
9
- username: z.string().optional(),
10
- password: z.string().optional(),
11
- privateKey: z.string().optional()
12
- });
13
- const serverType = z.object({
14
- type: z.literal("server"),
15
- endpoint: z.string(),
16
- sshCredentials: serverSshCredentialsType.optional()
4
+ const keyTypeSchema = Type.Union([
5
+ //
6
+ Type.Literal("rsa"),
7
+ Type.Literal("ed25519")
8
+ ]);
9
+ const keyPairEntity = defineEntity({
10
+ type: "ssh.key-pair",
11
+ sensitive: true,
12
+ schema: Type.Object({
13
+ type: keyTypeSchema,
14
+ privateKey: Type.String(),
15
+ publicKey: Type.String()
16
+ })
17
17
  });
18
-
19
- const sshKeyPairType = z.object({
20
- type: z.literal("ssh.key"),
21
- privateKey: z.string(),
22
- publicKey: z.string()
18
+ const publicKeyEntity = defineEntity({
19
+ type: "ssh.public-key",
20
+ schema: Type.Object({
21
+ publicKey: Type.String()
22
+ })
23
23
  });
24
- const sshPublicKeyType = z.object({
25
- type: z.literal("ssh.key"),
26
- publicKey: z.string()
24
+ const credentialsSchema = Type.Object({
25
+ endpoint: Type.Optional(Type.String()),
26
+ user: Type.Optional(Type.String()),
27
+ port: Type.Optional(Type.Number()),
28
+ password: Type.Optional(Type.String()),
29
+ privateKey: keyPairEntity.schema
27
30
  });
28
- defineComponent({
29
- type: "ssh.key_pair",
31
+ const keyPair = defineUnit({
32
+ type: "ssh.key-pair",
33
+ outputs: {
34
+ keyPair: keyPairEntity
35
+ },
30
36
  meta: {
31
37
  displayName: "SSH Key Pair",
32
- description: "The private and public SSH key pair.",
33
- category: "SSH",
38
+ description: "Generates a new ED25519 SSH key pair.",
39
+ category: "ssh",
34
40
  primaryIcon: "charm:key",
35
41
  primaryIconColor: "#ffffff",
36
42
  secondaryIcon: "mdi:lock",
37
43
  secondaryIconColor: "#ffffff"
38
44
  },
39
- secrets: z.object({
40
- privateKey: z.string()
41
- }),
42
- outputs: z.object({
43
- sshKeyPair: sshKeyPairType,
44
- sshPublicKey: sshPublicKeyType
45
- }),
46
- create({ secrets }) {
47
- return {
48
- sshKeyPair: {
49
- type: "ssh.key"
50
- }
51
- };
45
+ source: {
46
+ type: "npm",
47
+ package: "@highstate/ssh"
48
+ }
49
+ });
50
+ const existingKeyPair = defineUnit({
51
+ type: "ssh.existing-key-pair",
52
+ args: {
53
+ type: {
54
+ schema: keyTypeSchema,
55
+ description: "The type of the key pair."
56
+ }
57
+ },
58
+ secrets: {
59
+ privateKey: Type.String()
60
+ },
61
+ outputs: {
62
+ keyPair: keyPairEntity
63
+ },
64
+ meta: {
65
+ displayName: "SSH Existing Key Pair",
66
+ description: "Uses an existing SSH key pair.",
67
+ category: "ssh",
68
+ primaryIcon: "charm:key",
69
+ primaryIconColor: "#ffffff",
70
+ secondaryIcon: "mdi:lock",
71
+ secondaryIconColor: "#ffffff"
72
+ },
73
+ source: {
74
+ type: "npm",
75
+ package: "@highstate/ssh"
52
76
  }
53
77
  });
54
- defineComponent({
55
- type: "ssh.public_key",
78
+ const existingPublicKey = defineUnit({
79
+ type: "ssh.existing-public-key",
80
+ args: {
81
+ type: {
82
+ schema: keyTypeSchema,
83
+ description: "The type of the key pair."
84
+ },
85
+ publicKey: {
86
+ schema: Type.String(),
87
+ description: "The public key in OpenSSH format."
88
+ }
89
+ },
90
+ outputs: {
91
+ publicKey: publicKeyEntity
92
+ },
56
93
  meta: {
57
- displayName: "SSH Public Key",
58
- description: "Only the public SSH key.",
59
- category: "SSH",
94
+ displayName: "SSH Existing Public Key",
95
+ description: "Uses an existing SSH public key.",
96
+ category: "ssh",
60
97
  primaryIcon: "charm:key",
61
98
  primaryIconColor: "#ffffff",
62
99
  secondaryIcon: "mdi:public",
63
100
  secondaryIconColor: "#ffffff"
64
101
  },
65
- args: z.object({
66
- publicKey: z.string()
102
+ source: {
103
+ type: "npm",
104
+ package: "@highstate/ssh"
105
+ }
106
+ });
107
+
108
+ var ssh = /*#__PURE__*/Object.freeze({
109
+ __proto__: null,
110
+ credentialsSchema: credentialsSchema,
111
+ existingKeyPair: existingKeyPair,
112
+ existingPublicKey: existingPublicKey,
113
+ keyPair: keyPair,
114
+ keyPairEntity: keyPairEntity,
115
+ keyTypeSchema: keyTypeSchema,
116
+ publicKeyEntity: publicKeyEntity
117
+ });
118
+
119
+ const serverEntity = defineEntity({
120
+ type: "common.server",
121
+ schema: Type.Object({
122
+ endpoint: Type.String(),
123
+ sshCredentials: credentialsSchema
67
124
  }),
68
- outputs: z.object({
69
- sshPublicKey: sshPublicKeyType
125
+ meta: {
126
+ color: "#009688"
127
+ }
128
+ });
129
+ const gatewayEntity = defineEntity({
130
+ type: "common.gateway",
131
+ schema: Type.Object({
132
+ endpoint: Type.String()
70
133
  }),
71
- create({ args }) {
72
- return {
73
- sshPublicKey: {
74
- type: "ssh.key",
75
- publicKey: args.publicKey
76
- }
77
- };
78
- }
79
- });
80
-
81
- const clusterType = z.object({
82
- type: z.literal("proxmox.cluster"),
83
- endpoint: z.string(),
84
- insecure: z.boolean().optional(),
85
- nodeName: z.string(),
86
- username: z.string().optional(),
87
- password: z.string().optional(),
88
- apiToken: z.string().optional()
89
- });
90
- const imageType = z.object({
91
- type: z.literal("proxmox.image"),
92
- id: z.string()
93
- });
94
- const connection = defineComponent$1({
134
+ meta: {
135
+ color: "#4CAF50"
136
+ }
137
+ });
138
+ const tlsIssuerEntity = defineEntity({
139
+ type: "common.tls-issuer",
140
+ schema: Type.Object({
141
+ endpoint: Type.String()
142
+ }),
143
+ meta: {
144
+ color: "#f06292"
145
+ }
146
+ });
147
+ const dnsProviderEntity = defineEntity({
148
+ type: "common.dns-provider",
149
+ schema: Type.Object({
150
+ endpoint: Type.String()
151
+ }),
152
+ meta: {
153
+ color: "#FF5722"
154
+ }
155
+ });
156
+ const accessPointEntity = defineEntity({
157
+ type: "common.access-point",
158
+ schema: Type.Object({
159
+ name: Type.String()
160
+ })
161
+ });
162
+ const accessPoint = defineUnit({
163
+ type: "common.access-point",
164
+ inputs: {
165
+ gateway: gatewayEntity,
166
+ tlsIssuer: tlsIssuerEntity,
167
+ dnsProvider: dnsProviderEntity
168
+ },
169
+ outputs: {
170
+ accessPoint: accessPointEntity
171
+ },
172
+ meta: {
173
+ displayName: "Access Point",
174
+ description: "An access point which can be used to connect to services.",
175
+ primaryIcon: "mdi:access-point"
176
+ },
177
+ source: {
178
+ type: "npm",
179
+ package: "@highstate/common"
180
+ }
181
+ });
182
+
183
+ var common = /*#__PURE__*/Object.freeze({
184
+ __proto__: null,
185
+ accessPoint: accessPoint,
186
+ accessPointEntity: accessPointEntity,
187
+ dnsProviderEntity: dnsProviderEntity,
188
+ gatewayEntity: gatewayEntity,
189
+ serverEntity: serverEntity,
190
+ tlsIssuerEntity: tlsIssuerEntity
191
+ });
192
+
193
+ const clusterEntity$1 = defineEntity({
194
+ type: "proxmox.cluster",
195
+ schema: Type.Object({
196
+ endpoint: Type.String(),
197
+ insecure: Type.Optional(Type.Boolean()),
198
+ username: Type.Optional(Type.String()),
199
+ defaultNodeName: Type.String(),
200
+ defaultDatastoreId: Type.Optional(Type.String()),
201
+ password: Type.Optional(Type.String()),
202
+ apiToken: Type.Optional(Type.String())
203
+ }),
204
+ meta: {
205
+ color: "#e56901"
206
+ }
207
+ });
208
+ const imageEntity = defineEntity({
209
+ type: "proxmox.image",
210
+ schema: Type.Object({
211
+ id: Type.String()
212
+ }),
213
+ meta: {
214
+ color: "#e56901"
215
+ }
216
+ });
217
+ const connection$1 = defineUnit({
95
218
  type: "proxmox.connection",
219
+ args: {
220
+ endpoint: Type.String(),
221
+ insecure: Type.Optional(Type.Boolean()),
222
+ username: Type.Optional(Type.String()),
223
+ defaultNodeName: Type.String(),
224
+ defaultDatastoreId: Type.Optional(Type.String())
225
+ },
226
+ secrets: {
227
+ password: Type.Optional(Type.String()),
228
+ apiToken: Type.Optional(Type.String())
229
+ },
230
+ outputs: {
231
+ proxmoxCluster: clusterEntity$1
232
+ },
96
233
  meta: {
97
234
  displayName: "Proxmox Connection",
98
235
  description: "The connection to an existing Proxmox cluster.",
99
236
  category: "Proxmox",
100
- color: "#373b3e",
101
237
  primaryIcon: "simple-icons:proxmox",
102
238
  primaryIconColor: "#e56901",
103
239
  secondaryIcon: "codicon:vm"
104
240
  },
105
- args: z.object({
106
- endpoint: z.string(),
107
- nodeName: z.string(),
108
- username: z.string().optional()
109
- }),
110
- secrets: z.object({
111
- password: z.string().optional(),
112
- apiToken: z.string().optional()
113
- }),
114
- outputs: z.object({
115
- proxmoxCluster: clusterType
116
- }),
117
- create({ args, secrets }) {
118
- return {
119
- proxmoxCluster: {
120
- type: "proxmox.cluster",
121
- nodeName: args.nodeName,
122
- endpoint: args.endpoint,
123
- username: args.username,
124
- password: secrets.password,
125
- apiToken: secrets.apiToken
126
- }
127
- };
241
+ source: {
242
+ type: "npm",
243
+ package: "@highstate/proxmox"
128
244
  }
129
245
  });
130
246
  const image = defineUnit({
131
247
  type: "proxmox.image",
248
+ args: {
249
+ url: Type.String(),
250
+ nodeName: Type.Optional(Type.String()),
251
+ sha256: Type.Optional(Type.String()),
252
+ datastoreId: Type.Optional(Type.String())
253
+ },
254
+ inputs: {
255
+ proxmoxCluster: clusterEntity$1
256
+ },
257
+ outputs: {
258
+ image: imageEntity
259
+ },
132
260
  meta: {
133
261
  displayName: "Proxmox Image",
134
262
  description: "The image to upload to a Proxmox cluster.",
135
263
  category: "Proxmox",
136
- color: "#373b3e",
137
264
  primaryIcon: "simple-icons:proxmox",
138
265
  primaryIconColor: "#e56901",
139
266
  secondaryIcon: "mage:compact-disk-fill"
140
267
  },
141
- args: z.object({
142
- url: z.string()
143
- }),
144
- inputs: z.object({
145
- proxmoxCluster: clusterType
146
- }),
147
- outputs: z.object({
148
- image: imageType
149
- })
268
+ source: {
269
+ type: "npm",
270
+ package: "@highstate/proxmox"
271
+ }
150
272
  });
151
- const existingImage = defineComponent$1({
152
- type: "proxmox.existing_image",
273
+ const existingImage = defineUnit({
274
+ type: "proxmox.existing-image",
275
+ args: {
276
+ id: Type.String()
277
+ },
278
+ outputs: {
279
+ image: imageEntity
280
+ },
153
281
  meta: {
154
282
  displayName: "Proxmox Existing Image",
155
283
  description: "The existing image on a Proxmox cluster.",
156
284
  category: "Proxmox",
157
- color: "#373b3e",
158
285
  primaryIcon: "simple-icons:proxmox",
159
286
  primaryIconColor: "#e56901",
160
287
  secondaryIcon: "mage:compact-disk-fill"
161
288
  },
162
- args: z.object({
163
- imageId: z.string()
164
- }),
165
- outputs: z.object({
166
- image: imageType
167
- }),
168
- create({ args }) {
169
- return {
170
- image: {
171
- type: "proxmox.image",
172
- id: args.imageId
173
- }
174
- };
289
+ source: {
290
+ type: "npm",
291
+ package: "@highstate/proxmox"
175
292
  }
176
293
  });
177
294
  const virtualMachine = defineUnit({
178
- type: "proxmox.virtual_machine",
295
+ type: "proxmox.virtual-machine",
296
+ args: {
297
+ nodeName: Type.Optional(Type.String()),
298
+ cores: Type.Optional(Type.Number()),
299
+ sockets: Type.Optional(Type.Number()),
300
+ memory: Type.Optional(Type.Number()),
301
+ ipv4: Type.Optional(Type.String()),
302
+ ipv4Gateway: Type.Optional(Type.String()),
303
+ dns: Type.Optional(Type.Array(Type.String())),
304
+ datastoreId: Type.Optional(Type.String()),
305
+ diskSize: Type.Optional(Type.Number()),
306
+ bridge: Type.Optional(Type.String())
307
+ },
308
+ inputs: {
309
+ proxmoxCluster: clusterEntity$1,
310
+ image: imageEntity,
311
+ sshPublicKey: {
312
+ entity: publicKeyEntity,
313
+ required: false
314
+ },
315
+ sshKeyPair: {
316
+ entity: keyPairEntity,
317
+ required: false
318
+ }
319
+ },
320
+ outputs: {
321
+ server: serverEntity
322
+ },
179
323
  meta: {
180
324
  displayName: "Proxmox Virtual Machine",
181
325
  description: "The virtual machine on a Proxmox cluster.",
182
326
  category: "Proxmox",
183
- color: "#373b3e",
184
327
  primaryIcon: "simple-icons:proxmox",
185
328
  primaryIconColor: "#e56901",
186
329
  secondaryIcon: "codicon:vm"
187
330
  },
188
- args: z.object({
189
- nodeName: z.string().optional(),
190
- cores: z.number().optional(),
191
- sockets: z.number().optional(),
192
- memory: z.number().optional(),
193
- ipv4: z.string().optional(),
194
- ipv4Gateway: z.string().optional(),
195
- dns: z.array(z.string()).optional(),
196
- datastoreId: z.string().optional(),
197
- diskSize: z.number().optional(),
198
- bridge: z.string().optional()
199
- }),
200
- inputs: z.object({
201
- proxmoxCluster: clusterType,
202
- image: imageType,
203
- sshPublicKey: sshPublicKeyType.optional()
204
- }),
205
- outputs: z.object({
206
- server: serverType
207
- })
331
+ source: {
332
+ type: "npm",
333
+ package: "@highstate/proxmox"
334
+ }
208
335
  });
209
336
 
210
337
  var proxmox = /*#__PURE__*/Object.freeze({
211
338
  __proto__: null,
212
- clusterType: clusterType,
213
- connection: connection,
339
+ clusterEntity: clusterEntity$1,
340
+ connection: connection$1,
214
341
  existingImage: existingImage,
215
342
  image: image,
216
- imageType: imageType,
343
+ imageEntity: imageEntity,
217
344
  virtualMachine: virtualMachine
218
345
  });
219
346
 
220
- export { proxmox };
347
+ const clusterEntity = defineEntity({
348
+ type: "k8s.cluster",
349
+ schema: Type.Object({
350
+ kubeconfig: Type.String()
351
+ }),
352
+ meta: {
353
+ color: "#2196F3"
354
+ }
355
+ });
356
+ const routeEntity = defineEntity({
357
+ type: "k8s.route",
358
+ schema: Type.Object({
359
+ someField: Type.String()
360
+ }),
361
+ meta: {
362
+ color: "#F44336"
363
+ }
364
+ });
365
+ const traefikGateway = defineUnit({
366
+ type: "k8s.traefik-gateway",
367
+ inputs: {
368
+ k8sCluster: clusterEntity,
369
+ ingress: routeEntity
370
+ },
371
+ outputs: {
372
+ gateway: gatewayEntity
373
+ },
374
+ meta: {
375
+ displayName: "Traefik Gateway",
376
+ description: "A Traefik gateway for routing traffic to services.",
377
+ primaryIcon: "simple-icons:traefikproxy"
378
+ },
379
+ source: {
380
+ type: "npm",
381
+ package: "@highstate/k8s"
382
+ }
383
+ });
384
+ const certManager = defineUnit({
385
+ type: "k8s.cert-manager",
386
+ inputs: {
387
+ k8sCluster: clusterEntity,
388
+ dnsProvider: dnsProviderEntity
389
+ },
390
+ outputs: {
391
+ tlsIssuer: tlsIssuerEntity
392
+ },
393
+ meta: {
394
+ displayName: "Cert Manager",
395
+ description: "A certificate manager for managing TLS certificates.",
396
+ primaryIcon: "simple-icons:letsencrypt"
397
+ },
398
+ source: {
399
+ type: "npm",
400
+ package: "@highstate/k8s"
401
+ }
402
+ });
403
+ const coredns = defineUnit({
404
+ type: "k8s.coredns",
405
+ inputs: {
406
+ k8sCluster: clusterEntity
407
+ },
408
+ outputs: {
409
+ dnsProvider: dnsProviderEntity
410
+ },
411
+ meta: {
412
+ displayName: "CoreDNS",
413
+ description: "A separate CoreDNS instance for custom DNS records.",
414
+ primaryIcon: "mdi:dns"
415
+ },
416
+ source: {
417
+ type: "npm",
418
+ package: "@highstate/k8s"
419
+ }
420
+ });
421
+
422
+ var k8s = /*#__PURE__*/Object.freeze({
423
+ __proto__: null,
424
+ certManager: certManager,
425
+ clusterEntity: clusterEntity,
426
+ coredns: coredns,
427
+ routeEntity: routeEntity,
428
+ traefikGateway: traefikGateway
429
+ });
430
+
431
+ const cluster = defineUnit({
432
+ type: "talos.cluster",
433
+ args: {
434
+ scheduleOnMasters: {
435
+ schema: Type.Optional(Type.Boolean()),
436
+ description: text`
437
+ Allow scheduling workloads on the master nodes.
438
+ By default, "true" if no worker nodes are provided.
439
+ `
440
+ }
441
+ },
442
+ inputs: {
443
+ masters: {
444
+ entity: serverEntity,
445
+ multiple: true
446
+ },
447
+ workers: {
448
+ entity: serverEntity,
449
+ multiple: true,
450
+ required: false
451
+ }
452
+ },
453
+ outputs: {
454
+ k8sCluster: clusterEntity,
455
+ egress: routeEntity
456
+ },
457
+ meta: {
458
+ displayName: "Talos Cluster",
459
+ description: "A Kubernetes cluster managed by Talos.",
460
+ category: "Talos",
461
+ color: "#2d2d2d",
462
+ primaryIcon: "simple-icons:talos",
463
+ secondaryIcon: "devicon:kubernetes"
464
+ },
465
+ source: {
466
+ type: "npm",
467
+ package: "@highstate/talos"
468
+ }
469
+ });
470
+
471
+ var talos = /*#__PURE__*/Object.freeze({
472
+ __proto__: null,
473
+ cluster: cluster
474
+ });
475
+
476
+ const backendSchema = Type.Union([Type.Literal("wireguard"), Type.Literal("amneziawg")], {
477
+ default: "wireguard"
478
+ });
479
+ const networkEntity = defineEntity({
480
+ type: "wireguard.network",
481
+ schema: Type.Object({
482
+ backend: Type.Optional(backendSchema),
483
+ preSharedKey: Type.Optional(Type.String())
484
+ })
485
+ });
486
+ const identityEntity = defineEntity({
487
+ type: "wireguard.identity",
488
+ schema: Type.Object({
489
+ network: Type.String(),
490
+ address: Type.String(),
491
+ privateKey: Type.String()
492
+ }),
493
+ meta: {
494
+ color: "#F44336"
495
+ }
496
+ });
497
+ const peerEntity = defineEntity({
498
+ type: "wireguard.peer",
499
+ schema: Type.Object({
500
+ network: Type.String(),
501
+ address: Type.String(),
502
+ publicKey: Type.String(),
503
+ endpoint: Type.Optional(Type.String())
504
+ }),
505
+ meta: {
506
+ color: "#673AB7"
507
+ }
508
+ });
509
+ const k8sNodeEntity = defineEntity({
510
+ type: "wireguard.node",
511
+ schema: Type.Object({
512
+ network: Type.String(),
513
+ address: Type.String(),
514
+ allowedIps: Type.Array(Type.String()),
515
+ endpoint: Type.Optional(Type.String()),
516
+ peers: Type.Array(Type.String())
517
+ })
518
+ });
519
+ const network = defineUnit({
520
+ type: "wireguard.network",
521
+ args: {
522
+ backend: Type.Optional(backendSchema),
523
+ preSharedKey: Type.Optional(Type.String())
524
+ },
525
+ outputs: {
526
+ network: networkEntity
527
+ },
528
+ meta: {
529
+ description: "The WireGuard network with some shared configuration.",
530
+ primaryIcon: "simple-icons:wireguard",
531
+ primaryIconColor: "#88171a",
532
+ secondaryIcon: "mdi:local-area-network-connect"
533
+ },
534
+ source: {
535
+ type: "npm",
536
+ package: "@highstate/wireguard"
537
+ }
538
+ });
539
+ const identity = defineUnit({
540
+ type: "wireguard.identity",
541
+ args: {
542
+ address: Type.String(),
543
+ endpoint: Type.Optional(Type.String())
544
+ },
545
+ inputs: {
546
+ network: networkEntity
547
+ },
548
+ outputs: {
549
+ identity: identityEntity,
550
+ peer: peerEntity
551
+ },
552
+ meta: {
553
+ description: "The WireGuard identity with the public key.",
554
+ primaryIcon: "simple-icons:wireguard",
555
+ primaryIconColor: "#88171a",
556
+ secondaryIcon: "mdi:account"
557
+ },
558
+ source: {
559
+ type: "npm",
560
+ package: "@highstate/wireguard"
561
+ }
562
+ });
563
+ const node = defineUnit({
564
+ type: "wireguard.node-k8s",
565
+ args: {
566
+ allowedIps: Type.Optional(Type.Array(Type.String())),
567
+ listenPort: Type.Optional(Type.Number()),
568
+ externalIp: Type.Optional(Type.String()),
569
+ serviceType: Type.Optional(
570
+ Type.Union([
571
+ Type.Literal("NodePort"),
572
+ Type.Literal("LoadBalancer"),
573
+ Type.Literal("ClusterIP")
574
+ ])
575
+ )
576
+ },
577
+ inputs: {
578
+ identity: identityEntity,
579
+ k8sCluster: {
580
+ entity: clusterEntity,
581
+ required: false
582
+ },
583
+ peers: {
584
+ entity: peerEntity,
585
+ multiple: true,
586
+ required: false
587
+ }
588
+ },
589
+ outputs: {
590
+ egress: routeEntity
591
+ },
592
+ meta: {
593
+ description: "The WireGuard node running on the Kubernetes.",
594
+ primaryIcon: "simple-icons:wireguard",
595
+ primaryIconColor: "#88171a",
596
+ secondaryIcon: "mdi:server"
597
+ },
598
+ source: {
599
+ type: "npm",
600
+ package: "@highstate/wireguard"
601
+ }
602
+ });
603
+ const config = defineUnit({
604
+ type: "wireguard.config",
605
+ inputs: {
606
+ identity: identityEntity,
607
+ peers: {
608
+ entity: peerEntity,
609
+ multiple: true,
610
+ required: false
611
+ }
612
+ },
613
+ meta: {
614
+ description: "Just the WireGuard configuration for the identity and peers.",
615
+ primaryIcon: "simple-icons:wireguard",
616
+ primaryIconColor: "#88171a",
617
+ secondaryIcon: "mdi:settings"
618
+ },
619
+ source: {
620
+ type: "npm",
621
+ package: "@highstate/wireguard"
622
+ }
623
+ });
624
+
625
+ var wireguard = /*#__PURE__*/Object.freeze({
626
+ __proto__: null,
627
+ backendSchema: backendSchema,
628
+ config: config,
629
+ identity: identity,
630
+ identityEntity: identityEntity,
631
+ k8sNodeEntity: k8sNodeEntity,
632
+ network: network,
633
+ networkEntity: networkEntity,
634
+ node: node,
635
+ peerEntity: peerEntity
636
+ });
637
+
638
+ const mariadbEntity = defineEntity({
639
+ type: "mariadb",
640
+ schema: Type.Object({
641
+ rootPassword: Type.String(),
642
+ databases: Type.Array(Type.String())
643
+ }),
644
+ meta: {
645
+ color: "#f06292"
646
+ }
647
+ });
648
+ const postgresqlEntity = defineEntity({
649
+ type: "postgresql",
650
+ schema: Type.Object({
651
+ rootPassword: Type.String(),
652
+ databases: Type.Array(Type.String())
653
+ }),
654
+ meta: {
655
+ color: "#336791"
656
+ }
657
+ });
658
+ const mariadb = defineUnit({
659
+ type: "apps.mariadb",
660
+ args: {
661
+ rootPassword: Type.String(),
662
+ databases: Type.Array(Type.String())
663
+ },
664
+ inputs: {
665
+ k8sCluster: clusterEntity
666
+ },
667
+ outputs: {
668
+ mariadb: {
669
+ entity: mariadbEntity,
670
+ displayName: "MariaDB"
671
+ }
672
+ },
673
+ meta: {
674
+ displayName: "MariaDB",
675
+ description: "The MariaDB database deployed on Kubernetes.",
676
+ primaryIcon: "simple-icons:mariadb",
677
+ secondaryIcon: "mdi:database"
678
+ },
679
+ source: {
680
+ type: "npm",
681
+ package: "@highstate/apps"
682
+ }
683
+ });
684
+ const postgresql = defineUnit({
685
+ type: "apps.postgresql",
686
+ args: {
687
+ rootPassword: Type.String(),
688
+ databases: Type.Array(Type.String())
689
+ },
690
+ inputs: {
691
+ k8sCluster: clusterEntity
692
+ },
693
+ outputs: {
694
+ postgresql: {
695
+ entity: postgresqlEntity,
696
+ displayName: "PostgreSQL"
697
+ }
698
+ },
699
+ meta: {
700
+ displayName: "PostgreSQL",
701
+ description: "The PostgreSQL database deployed on Kubernetes.",
702
+ primaryIcon: "simple-icons:postgresql",
703
+ secondaryIcon: "mdi:database"
704
+ },
705
+ source: {
706
+ type: "npm",
707
+ package: "@highstate/apps"
708
+ }
709
+ });
710
+ const vaultwarden = defineUnit({
711
+ type: "apps.vaultwarden",
712
+ args: {
713
+ domain: Type.String()
714
+ },
715
+ inputs: {
716
+ mariadb: {
717
+ entity: mariadbEntity,
718
+ displayName: "MariaDB"
719
+ },
720
+ accessPoint: accessPointEntity
721
+ },
722
+ meta: {
723
+ displayName: "Vaultwarden",
724
+ description: "The Vaultwarden password manager deployed on Kubernetes.",
725
+ primaryIcon: "simple-icons:vaultwarden"
726
+ },
727
+ source: {
728
+ type: "npm",
729
+ package: "@highstate/apps"
730
+ }
731
+ });
732
+ const gitea = defineUnit({
733
+ type: "apps.gitea",
734
+ args: {
735
+ domain: Type.String()
736
+ },
737
+ inputs: {
738
+ mariadb: {
739
+ entity: mariadbEntity,
740
+ displayName: "MariaDB"
741
+ },
742
+ accessPoint: accessPointEntity
743
+ },
744
+ meta: {
745
+ displayName: "Gitea",
746
+ description: "The Gitea Git server deployed on Kubernetes.",
747
+ primaryIcon: "simple-icons:gitea"
748
+ },
749
+ source: {
750
+ type: "npm",
751
+ package: "@highstate/apps"
752
+ }
753
+ });
754
+ const zitadel = defineUnit({
755
+ type: "apps.zitadel",
756
+ args: {
757
+ domain: Type.String()
758
+ },
759
+ inputs: {
760
+ postgresql: {
761
+ entity: postgresqlEntity,
762
+ displayName: "PostgreSQL"
763
+ },
764
+ accessPoint: accessPointEntity
765
+ },
766
+ meta: {
767
+ displayName: "Zitadel",
768
+ description: "The Zitadel IAM deployed on Kubernetes.",
769
+ primaryIcon: "hugeicons:access"
770
+ },
771
+ source: {
772
+ type: "npm",
773
+ package: "@highstate/apps"
774
+ }
775
+ });
776
+
777
+ var apps = /*#__PURE__*/Object.freeze({
778
+ __proto__: null,
779
+ gitea: gitea,
780
+ mariadb: mariadb,
781
+ mariadbEntity: mariadbEntity,
782
+ postgresql: postgresql,
783
+ postgresqlEntity: postgresqlEntity,
784
+ vaultwarden: vaultwarden,
785
+ zitadel: zitadel
786
+ });
787
+
788
+ const connectionEntity = defineEntity({
789
+ type: "cloudflare.connection",
790
+ schema: Type.Object({
791
+ apiKey: Type.String()
792
+ }),
793
+ meta: {
794
+ color: "#f38020"
795
+ }
796
+ });
797
+ const connection = defineUnit({
798
+ type: "cloudflare.connection",
799
+ args: {
800
+ apiKey: {
801
+ schema: Type.String(),
802
+ secret: true
803
+ }
804
+ },
805
+ outputs: {
806
+ connection: connectionEntity
807
+ },
808
+ meta: {
809
+ displayName: "Cloudflare Connection",
810
+ description: "Creates a new Cloudflare connection.",
811
+ primaryIcon: "simple-icons:cloudflare"
812
+ },
813
+ source: {
814
+ type: "npm",
815
+ package: "@highstate/cloudflare"
816
+ }
817
+ });
818
+ const zone = defineUnit({
819
+ type: "cloudflare.zone",
820
+ args: {
821
+ zoneId: Type.String(),
822
+ domain: Type.String()
823
+ },
824
+ inputs: {
825
+ connection: connectionEntity
826
+ },
827
+ outputs: {
828
+ dnsProvider: dnsProviderEntity
829
+ },
830
+ meta: {
831
+ displayName: "Cloudflare Zone",
832
+ description: "Creates a new Cloudflare zone.",
833
+ primaryIcon: "simple-icons:cloudflare",
834
+ secondaryIcon: "material-symbols:domain"
835
+ },
836
+ source: {
837
+ type: "npm",
838
+ package: "@highstate/cloudflare"
839
+ }
840
+ });
841
+
842
+ var cloudflare = /*#__PURE__*/Object.freeze({
843
+ __proto__: null,
844
+ connection: connection,
845
+ connectionEntity: connectionEntity,
846
+ zone: zone
847
+ });
848
+
849
+ export { apps, cloudflare, common, k8s, proxmox, ssh, talos, wireguard };