@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.
- package/dist/index.d.ts +536 -113
- package/dist/index.mjs +778 -149
- package/package.json +11 -6
package/dist/index.mjs
CHANGED
@@ -1,220 +1,849 @@
|
|
1
|
-
import {
|
2
|
-
import {
|
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
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
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
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
18
|
+
const publicKeyEntity = defineEntity({
|
19
|
+
type: "ssh.public-key",
|
20
|
+
schema: Type.Object({
|
21
|
+
publicKey: Type.String()
|
22
|
+
})
|
23
23
|
});
|
24
|
-
const
|
25
|
-
|
26
|
-
|
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
|
-
|
29
|
-
type: "ssh.
|
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: "
|
33
|
-
category: "
|
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
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
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
|
-
|
55
|
-
type: "ssh.
|
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: "
|
59
|
-
category: "
|
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
|
-
|
66
|
-
|
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
|
-
|
69
|
-
|
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
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
})
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
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
|
-
|
106
|
-
|
107
|
-
|
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
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
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 =
|
152
|
-
type: "proxmox.
|
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
|
-
|
163
|
-
|
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.
|
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
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
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
|
-
|
213
|
-
connection: connection,
|
339
|
+
clusterEntity: clusterEntity$1,
|
340
|
+
connection: connection$1,
|
214
341
|
existingImage: existingImage,
|
215
342
|
image: image,
|
216
|
-
|
343
|
+
imageEntity: imageEntity,
|
217
344
|
virtualMachine: virtualMachine
|
218
345
|
});
|
219
346
|
|
220
|
-
|
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 };
|