@ninedeploy/schemas 0.10.6 → 0.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -21
- package/dist/accessGrants.d.ts +156 -0
- package/dist/accessGrants.d.ts.map +1 -0
- package/dist/accessGrants.js +100 -0
- package/dist/accessGrants.js.map +1 -0
- package/dist/agentCommand.d.ts.map +1 -1
- package/dist/agentCommand.js +11 -1
- package/dist/agentCommand.js.map +1 -1
- package/dist/auth.d.ts +53 -0
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +26 -0
- package/dist/auth.js.map +1 -1
- package/dist/backupPolicy.d.ts +37 -0
- package/dist/backupPolicy.d.ts.map +1 -0
- package/dist/backupPolicy.js +50 -0
- package/dist/backupPolicy.js.map +1 -0
- package/dist/common.d.ts +21 -5
- package/dist/common.d.ts.map +1 -1
- package/dist/common.js +35 -6
- package/dist/common.js.map +1 -1
- package/dist/databaseImport.d.ts +145 -0
- package/dist/databaseImport.d.ts.map +1 -0
- package/dist/databaseImport.js +115 -0
- package/dist/databaseImport.js.map +1 -0
- package/dist/doctor.d.ts +16 -0
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +25 -0
- package/dist/doctor.js.map +1 -1
- package/dist/githubApp.d.ts +236 -0
- package/dist/githubApp.d.ts.map +1 -0
- package/dist/githubApp.js +223 -0
- package/dist/githubApp.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -1
- package/dist/kernel.d.ts +5 -2
- package/dist/kernel.d.ts.map +1 -1
- package/dist/kernel.js +11 -2
- package/dist/kernel.js.map +1 -1
- package/dist/management.d.ts +46 -2
- package/dist/management.d.ts.map +1 -1
- package/dist/management.js +68 -15
- package/dist/management.js.map +1 -1
- package/dist/multiNode.d.ts +325 -0
- package/dist/multiNode.d.ts.map +1 -0
- package/dist/multiNode.js +294 -0
- package/dist/multiNode.js.map +1 -0
- package/dist/ninedeployManifest.d.ts.map +1 -1
- package/dist/ninedeployManifest.js +6 -3
- package/dist/ninedeployManifest.js.map +1 -1
- package/dist/panelBackup.d.ts +73 -0
- package/dist/panelBackup.d.ts.map +1 -0
- package/dist/panelBackup.js +45 -0
- package/dist/panelBackup.js.map +1 -0
- package/dist/proxyConfig.d.ts +132 -0
- package/dist/proxyConfig.d.ts.map +1 -0
- package/dist/proxyConfig.js +105 -0
- package/dist/proxyConfig.js.map +1 -0
- package/dist/publicAccess.d.ts +64 -0
- package/dist/publicAccess.d.ts.map +1 -0
- package/dist/publicAccess.js +63 -0
- package/dist/publicAccess.js.map +1 -0
- package/dist/secretProviders.d.ts +119 -0
- package/dist/secretProviders.d.ts.map +1 -0
- package/dist/secretProviders.js +130 -0
- package/dist/secretProviders.js.map +1 -0
- package/dist/secretScan.js +1 -1
- package/dist/service.d.ts +24 -17
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +71 -26
- package/dist/service.js.map +1 -1
- package/dist/terminals.d.ts +284 -0
- package/dist/terminals.d.ts.map +1 -0
- package/dist/terminals.js +177 -0
- package/dist/terminals.js.map +1 -0
- package/dist/traffic.d.ts +276 -0
- package/dist/traffic.d.ts.map +1 -0
- package/dist/traffic.js +103 -0
- package/dist/traffic.js.map +1 -0
- package/dist/workspaces.d.ts +19 -1
- package/dist/workspaces.d.ts.map +1 -1
- package/dist/workspaces.js +26 -0
- package/dist/workspaces.js.map +1 -1
- package/package.json +5 -4
- package/src/accessGrants.ts +117 -0
- package/src/agentCommand.ts +67 -0
- package/src/ai.ts +32 -0
- package/src/auth.ts +323 -0
- package/src/backupPolicy.ts +55 -0
- package/src/common.ts +179 -0
- package/src/databaseImport.ts +138 -0
- package/src/doctor.ts +161 -0
- package/src/environments.ts +23 -0
- package/src/githubApp.ts +268 -0
- package/src/index.ts +30 -0
- package/src/insights.ts +78 -0
- package/src/kernel.ts +180 -0
- package/src/labels.ts +86 -0
- package/src/management.ts +620 -0
- package/src/multiNode.ts +354 -0
- package/src/ninedeployManifest.ts +363 -0
- package/src/panelBackup.ts +90 -0
- package/src/project.ts +42 -0
- package/src/proxyConfig.ts +139 -0
- package/src/publicAccess.ts +80 -0
- package/src/runtimeVersions.ts +232 -0
- package/src/secretProviders.ts +159 -0
- package/src/secretScan.ts +169 -0
- package/src/service.ts +1044 -0
- package/src/terminals.ts +212 -0
- package/src/traffic.ts +130 -0
- package/src/workspaces.ts +215 -0
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* The capabilities a multi-node agent advertises in its sealed `agent.ping`,
|
|
4
|
+
* appended in this order after the 0.15 list so the 0.15 prefix check holds.
|
|
5
|
+
* The agent's `AGENT_CAPABILITIES` must end with exactly this list.
|
|
6
|
+
*/
|
|
7
|
+
export declare const MULTI_NODE_CAPABILITIES: readonly ['stream', 'docker.runSpec', 'volume.manage', 'image.manage', 'build.nixpacks', 'build.railpack', 'git.sshkey', 'db.manage', 'swarm'];
|
|
8
|
+
export declare const multiNodeCapability: z.ZodEnum<{
|
|
9
|
+
"build.nixpacks": "build.nixpacks";
|
|
10
|
+
"build.railpack": "build.railpack";
|
|
11
|
+
"db.manage": "db.manage";
|
|
12
|
+
"docker.runSpec": "docker.runSpec";
|
|
13
|
+
"git.sshkey": "git.sshkey";
|
|
14
|
+
"image.manage": "image.manage";
|
|
15
|
+
stream: "stream";
|
|
16
|
+
swarm: "swarm";
|
|
17
|
+
"volume.manage": "volume.manage";
|
|
18
|
+
}>;
|
|
19
|
+
export type MultiNodeCapability = z.infer<typeof multiNodeCapability>;
|
|
20
|
+
/**
|
|
21
|
+
* Error codes the multi-node routes answer with. `node_agent_outdated` (422)
|
|
22
|
+
* is the one refusal every feature shares when the node's agent predates it.
|
|
23
|
+
*/
|
|
24
|
+
export declare const multiNodeErrorCode: z.ZodEnum<{
|
|
25
|
+
attachment_host_mismatch: "attachment_host_mismatch";
|
|
26
|
+
backup_host_mismatch: "backup_host_mismatch";
|
|
27
|
+
docker_unreachable: "docker_unreachable";
|
|
28
|
+
fanout_database_host: "fanout_database_host";
|
|
29
|
+
node_agent_outdated: "node_agent_outdated";
|
|
30
|
+
node_feature_disabled: "node_feature_disabled";
|
|
31
|
+
node_placement_operator_only: "node_placement_operator_only";
|
|
32
|
+
node_swarm_failed: "node_swarm_failed";
|
|
33
|
+
node_swarm_not_enabled: "node_swarm_not_enabled";
|
|
34
|
+
node_transport_unsealed: "node_transport_unsealed";
|
|
35
|
+
node_unreachable: "node_unreachable";
|
|
36
|
+
node_volume_exists: "node_volume_exists";
|
|
37
|
+
node_volume_files_unsupported: "node_volume_files_unsupported";
|
|
38
|
+
placement_unsupported: "placement_unsupported";
|
|
39
|
+
remote_database: "remote_database";
|
|
40
|
+
server_hosts_databases: "server_hosts_databases";
|
|
41
|
+
server_not_online: "server_not_online";
|
|
42
|
+
server_swarm_member: "server_swarm_member";
|
|
43
|
+
swarm_already_active: "swarm_already_active";
|
|
44
|
+
swarm_already_joined: "swarm_already_joined";
|
|
45
|
+
swarm_disabled: "swarm_disabled";
|
|
46
|
+
swarm_drain_failed: "swarm_drain_failed";
|
|
47
|
+
swarm_init_failed: "swarm_init_failed";
|
|
48
|
+
swarm_node_unverified: "swarm_node_unverified";
|
|
49
|
+
swarm_not_joined: "swarm_not_joined";
|
|
50
|
+
swarm_not_manager: "swarm_not_manager";
|
|
51
|
+
swarm_overlay_unavailable: "swarm_overlay_unavailable";
|
|
52
|
+
swarm_unsupported: "swarm_unsupported";
|
|
53
|
+
}>;
|
|
54
|
+
export type MultiNodeErrorCode = z.infer<typeof multiNodeErrorCode>;
|
|
55
|
+
/** `GET /v1/servers` → `agent`: the persisted capability cache (advisory). */
|
|
56
|
+
export declare const serverAgentInfo: z.ZodObject<{
|
|
57
|
+
version: z.ZodNullable<z.ZodString>;
|
|
58
|
+
capabilities: z.ZodArray<z.ZodString>;
|
|
59
|
+
checkedAt: z.ZodNullable<z.ZodString>;
|
|
60
|
+
}, z.core.$strip>;
|
|
61
|
+
export type ServerAgentInfo = z.infer<typeof serverAgentInfo>;
|
|
62
|
+
/** `GET /v1/servers` → `terminal` (0.15): what the node's agent offers terminals. */
|
|
63
|
+
export declare const serverTerminalCapability: z.ZodObject<{
|
|
64
|
+
host: z.ZodBoolean;
|
|
65
|
+
container: z.ZodBoolean;
|
|
66
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
67
|
+
}, z.core.$strip>;
|
|
68
|
+
/** `GET /v1/servers` → `features`: what the node can do today, and why not. */
|
|
69
|
+
export declare const serverFeatures: z.ZodObject<{
|
|
70
|
+
nixpacks: z.ZodBoolean;
|
|
71
|
+
railpack: z.ZodBoolean;
|
|
72
|
+
privateClones: z.ZodBoolean;
|
|
73
|
+
volumes: z.ZodBoolean;
|
|
74
|
+
databases: z.ZodBoolean;
|
|
75
|
+
imageTransfer: z.ZodBoolean;
|
|
76
|
+
swarm: z.ZodBoolean;
|
|
77
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
78
|
+
}, z.core.$strip>;
|
|
79
|
+
export type ServerFeatures = z.infer<typeof serverFeatures>;
|
|
80
|
+
export declare const BUILD_CONCURRENCY_MIN = 1;
|
|
81
|
+
export declare const BUILD_CONCURRENCY_MAX = 8;
|
|
82
|
+
export declare const IMAGE_TRANSFERS_LIMIT_MAX = 100;
|
|
83
|
+
/** Mirrors `serviceBuildOn` in `@ninedeploy/db`. */
|
|
84
|
+
export declare const buildOn: z.ZodEnum<{
|
|
85
|
+
panel: "panel";
|
|
86
|
+
server: "server";
|
|
87
|
+
target: "target";
|
|
88
|
+
}>;
|
|
89
|
+
export type BuildOn = z.infer<typeof buildOn>;
|
|
90
|
+
/** Mirrors `serviceOrchestrator` in `@ninedeploy/db`. */
|
|
91
|
+
export declare const serviceOrchestrator: z.ZodEnum<{
|
|
92
|
+
container: "container";
|
|
93
|
+
swarm: "swarm";
|
|
94
|
+
}>;
|
|
95
|
+
export type ServiceOrchestrator = z.infer<typeof serviceOrchestrator>;
|
|
96
|
+
/** A registry repository path (`team/app`), no host and no tag. */
|
|
97
|
+
export declare const pushRepository: z.ZodString;
|
|
98
|
+
/**
|
|
99
|
+
* `PUT /v1/services/:id/placement` (operator). Partial: only the named keys
|
|
100
|
+
* change; `null` restores the 0.15 default for that key.
|
|
101
|
+
*/
|
|
102
|
+
export declare const servicePlacement: z.ZodObject<{
|
|
103
|
+
buildOn: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
|
|
104
|
+
panel: "panel";
|
|
105
|
+
server: "server";
|
|
106
|
+
target: "target";
|
|
107
|
+
}>>>;
|
|
108
|
+
buildServerId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
109
|
+
pushRegistrySourceId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
110
|
+
pushRepository: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
111
|
+
orchestrator: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
|
|
112
|
+
container: "container";
|
|
113
|
+
swarm: "swarm";
|
|
114
|
+
}>>>;
|
|
115
|
+
}, z.core.$strict>;
|
|
116
|
+
export type ServicePlacementInput = z.infer<typeof servicePlacement>;
|
|
117
|
+
/** `GET /v1/services/:id/placement`, and `placement` on the service response. */
|
|
118
|
+
export declare const servicePlacementView: z.ZodObject<{
|
|
119
|
+
buildOn: z.ZodNullable<z.ZodEnum<{
|
|
120
|
+
panel: "panel";
|
|
121
|
+
server: "server";
|
|
122
|
+
target: "target";
|
|
123
|
+
}>>;
|
|
124
|
+
buildServerId: z.ZodNullable<z.ZodNumber>;
|
|
125
|
+
pushRegistrySourceId: z.ZodNullable<z.ZodNumber>;
|
|
126
|
+
pushRepository: z.ZodNullable<z.ZodString>;
|
|
127
|
+
orchestrator: z.ZodNullable<z.ZodEnum<{
|
|
128
|
+
container: "container";
|
|
129
|
+
swarm: "swarm";
|
|
130
|
+
}>>;
|
|
131
|
+
}, z.core.$strip>;
|
|
132
|
+
export type ServicePlacementView = z.infer<typeof servicePlacementView>;
|
|
133
|
+
/** The build placement a stored value means: NULL is today's `target`. */
|
|
134
|
+
export declare function effectiveBuildOn(value: BuildOn | null | undefined): BuildOn;
|
|
135
|
+
/** The orchestrator a stored value means: NULL is today's `container`. */
|
|
136
|
+
export declare function effectiveOrchestrator(value: ServiceOrchestrator | null | undefined): ServiceOrchestrator;
|
|
137
|
+
/** `PATCH /v1/servers/:id` (operator): the build-server role. */
|
|
138
|
+
export declare const serverRoles: z.ZodObject<{
|
|
139
|
+
isBuildServer: z.ZodOptional<z.ZodBoolean>;
|
|
140
|
+
buildConcurrency: z.ZodOptional<z.ZodNumber>;
|
|
141
|
+
}, z.core.$strict>;
|
|
142
|
+
export type ServerRolesInput = z.infer<typeof serverRoles>;
|
|
143
|
+
/** Mirrors `imageTransferMethod` in `@ninedeploy/db`. */
|
|
144
|
+
export declare const imageTransferMethod: z.ZodEnum<{
|
|
145
|
+
preload: "preload";
|
|
146
|
+
registry: "registry";
|
|
147
|
+
stream: "stream";
|
|
148
|
+
}>;
|
|
149
|
+
export type ImageTransferMethod = z.infer<typeof imageTransferMethod>;
|
|
150
|
+
/** Mirrors `imageTransferStatus` in `@ninedeploy/db`. */
|
|
151
|
+
export declare const imageTransferStatus: z.ZodEnum<{
|
|
152
|
+
completed: "completed";
|
|
153
|
+
failed: "failed";
|
|
154
|
+
running: "running";
|
|
155
|
+
}>;
|
|
156
|
+
export type ImageTransferStatus = z.infer<typeof imageTransferStatus>;
|
|
157
|
+
/** One `image_transfers` row as the API returns it. A NULL server is the panel host. */
|
|
158
|
+
export declare const imageTransfer: z.ZodObject<{
|
|
159
|
+
id: z.ZodNumber;
|
|
160
|
+
deploymentId: z.ZodNullable<z.ZodNumber>;
|
|
161
|
+
serviceId: z.ZodNumber;
|
|
162
|
+
sourceServerId: z.ZodNullable<z.ZodNumber>;
|
|
163
|
+
targetServerId: z.ZodNullable<z.ZodNumber>;
|
|
164
|
+
method: z.ZodEnum<{
|
|
165
|
+
preload: "preload";
|
|
166
|
+
registry: "registry";
|
|
167
|
+
stream: "stream";
|
|
168
|
+
}>;
|
|
169
|
+
imageRef: z.ZodString;
|
|
170
|
+
imageId: z.ZodNullable<z.ZodString>;
|
|
171
|
+
bytes: z.ZodNumber;
|
|
172
|
+
sha256: z.ZodNullable<z.ZodString>;
|
|
173
|
+
status: z.ZodEnum<{
|
|
174
|
+
completed: "completed";
|
|
175
|
+
failed: "failed";
|
|
176
|
+
running: "running";
|
|
177
|
+
}>;
|
|
178
|
+
error: z.ZodNullable<z.ZodString>;
|
|
179
|
+
startedAt: z.ZodString;
|
|
180
|
+
finishedAt: z.ZodNullable<z.ZodString>;
|
|
181
|
+
durationMs: z.ZodNullable<z.ZodNumber>;
|
|
182
|
+
}, z.core.$strip>;
|
|
183
|
+
export type ImageTransfer = z.infer<typeof imageTransfer>;
|
|
184
|
+
/** `GET /v1/services/:id/image-transfers` query. Query strings arrive as text. */
|
|
185
|
+
export declare const imageTransfersQuery: z.ZodObject<{
|
|
186
|
+
limit: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
187
|
+
}, z.core.$strict>;
|
|
188
|
+
export type ImageTransfersQuery = z.infer<typeof imageTransfersQuery>;
|
|
189
|
+
/** A managed volume name: `nd-svc-*` or `nd-db-*` (bind mounts are never attachable). */
|
|
190
|
+
export declare const managedVolumeName: z.ZodString;
|
|
191
|
+
/** `?serverId=` on the volume routes: absent = the panel host (today's response). */
|
|
192
|
+
export declare const volumeHostQuery: z.ZodObject<{
|
|
193
|
+
serverId: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
|
|
194
|
+
}, z.core.$strict>;
|
|
195
|
+
export type VolumeHostQuery = z.infer<typeof volumeHostQuery>;
|
|
196
|
+
/** `POST /v1/volumes` (operator). `serverId` null or absent = the panel host. */
|
|
197
|
+
export declare const volumeCreate: z.ZodObject<{
|
|
198
|
+
name: z.ZodString;
|
|
199
|
+
serverId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
200
|
+
}, z.core.$strict>;
|
|
201
|
+
export type VolumeCreateInput = z.infer<typeof volumeCreate>;
|
|
202
|
+
/** A volume list item with the host it lives on (null = the panel host). */
|
|
203
|
+
export declare const hostVolumeEntry: z.ZodObject<{
|
|
204
|
+
name: z.ZodString;
|
|
205
|
+
sizeBytes: z.ZodNumber;
|
|
206
|
+
owner: z.ZodNullable<z.ZodObject<{
|
|
207
|
+
kind: z.ZodString;
|
|
208
|
+
id: z.ZodOptional<z.ZodNumber>;
|
|
209
|
+
name: z.ZodString;
|
|
210
|
+
engine: z.ZodOptional<z.ZodString>;
|
|
211
|
+
}, z.core.$strip>>;
|
|
212
|
+
inUse: z.ZodBoolean;
|
|
213
|
+
serverId: z.ZodNullable<z.ZodNumber>;
|
|
214
|
+
}, z.core.$strip>;
|
|
215
|
+
export type HostVolumeEntry = z.infer<typeof hostVolumeEntry>;
|
|
216
|
+
/** `POST /v1/swarm/init` (operator, interactive, step-up). */
|
|
217
|
+
export declare const swarmInit: z.ZodObject<{
|
|
218
|
+
advertiseAddr: z.ZodUnion<readonly [z.ZodIPv4, z.ZodIPv6]>;
|
|
219
|
+
password: z.ZodOptional<z.ZodString>;
|
|
220
|
+
}, z.core.$strict>;
|
|
221
|
+
export type SwarmInitInput = z.infer<typeof swarmInit>;
|
|
222
|
+
/** `PUT /v1/swarm/settings` (operator; step-up to enable). */
|
|
223
|
+
export declare const swarmSettings: z.ZodObject<{
|
|
224
|
+
enabled: z.ZodBoolean;
|
|
225
|
+
password: z.ZodOptional<z.ZodString>;
|
|
226
|
+
}, z.core.$strict>;
|
|
227
|
+
export type SwarmSettingsInput = z.infer<typeof swarmSettings>;
|
|
228
|
+
export declare const swarmNodeRole: z.ZodEnum<{
|
|
229
|
+
manager: "manager";
|
|
230
|
+
worker: "worker";
|
|
231
|
+
}>;
|
|
232
|
+
export type SwarmNodeRole = z.infer<typeof swarmNodeRole>;
|
|
233
|
+
/** One Swarm node; `serverId` links it to a NineDeploy node (null = the panel host or a foreign node). */
|
|
234
|
+
export declare const swarmNode: z.ZodObject<{
|
|
235
|
+
id: z.ZodString;
|
|
236
|
+
hostname: z.ZodString;
|
|
237
|
+
role: z.ZodEnum<{
|
|
238
|
+
manager: "manager";
|
|
239
|
+
worker: "worker";
|
|
240
|
+
}>;
|
|
241
|
+
availability: z.ZodString;
|
|
242
|
+
state: z.ZodString;
|
|
243
|
+
serverId: z.ZodNullable<z.ZodNumber>;
|
|
244
|
+
warnings: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
245
|
+
}, z.core.$strip>;
|
|
246
|
+
export type SwarmNode = z.infer<typeof swarmNode>;
|
|
247
|
+
/** `GET /v1/swarm` (operator). Join tokens are never returned. */
|
|
248
|
+
export declare const swarmStatus: z.ZodObject<{
|
|
249
|
+
enabled: z.ZodBoolean;
|
|
250
|
+
localState: z.ZodString;
|
|
251
|
+
controlAvailable: z.ZodBoolean;
|
|
252
|
+
managerAddr: z.ZodNullable<z.ZodString>;
|
|
253
|
+
nodes: z.ZodArray<z.ZodObject<{
|
|
254
|
+
id: z.ZodString;
|
|
255
|
+
hostname: z.ZodString;
|
|
256
|
+
role: z.ZodEnum<{
|
|
257
|
+
manager: "manager";
|
|
258
|
+
worker: "worker";
|
|
259
|
+
}>;
|
|
260
|
+
availability: z.ZodString;
|
|
261
|
+
state: z.ZodString;
|
|
262
|
+
serverId: z.ZodNullable<z.ZodNumber>;
|
|
263
|
+
warnings: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
264
|
+
}, z.core.$strip>>;
|
|
265
|
+
warnings: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
266
|
+
}, z.core.$strip>;
|
|
267
|
+
export type SwarmStatus = z.infer<typeof swarmStatus>;
|
|
268
|
+
/** `GET /v1/services/:id/swarm` (viewer). */
|
|
269
|
+
export declare const serviceSwarmStatus: z.ZodObject<{
|
|
270
|
+
stack: z.ZodNullable<z.ZodString>;
|
|
271
|
+
desired: z.ZodNumber;
|
|
272
|
+
running: z.ZodNumber;
|
|
273
|
+
tasks: z.ZodArray<z.ZodObject<{
|
|
274
|
+
node: z.ZodString;
|
|
275
|
+
state: z.ZodString;
|
|
276
|
+
error: z.ZodNullable<z.ZodString>;
|
|
277
|
+
image: z.ZodString;
|
|
278
|
+
}, z.core.$strip>>;
|
|
279
|
+
}, z.core.$strip>;
|
|
280
|
+
export type ServiceSwarmStatus = z.infer<typeof serviceSwarmStatus>;
|
|
281
|
+
/**
|
|
282
|
+
* One `GET /v1/servers` entry (operator). Every field after `createdAt` is
|
|
283
|
+
* additive and absent on older panels: `terminal` (0.15), then the agent
|
|
284
|
+
* capability cache and features, the build-server role, the hosted database
|
|
285
|
+
* count and the Swarm membership recorded on join. Never the agent token.
|
|
286
|
+
*/
|
|
287
|
+
export declare const serverListItem: z.ZodObject<{
|
|
288
|
+
id: z.ZodNumber;
|
|
289
|
+
name: z.ZodString;
|
|
290
|
+
host: z.ZodString;
|
|
291
|
+
port: z.ZodNumber;
|
|
292
|
+
status: z.ZodString;
|
|
293
|
+
lastSeenAt: z.ZodNullable<z.ZodString>;
|
|
294
|
+
createdAt: z.ZodString;
|
|
295
|
+
terminal: z.ZodOptional<z.ZodObject<{
|
|
296
|
+
host: z.ZodBoolean;
|
|
297
|
+
container: z.ZodBoolean;
|
|
298
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
299
|
+
}, z.core.$strip>>;
|
|
300
|
+
agent: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
301
|
+
version: z.ZodNullable<z.ZodString>;
|
|
302
|
+
capabilities: z.ZodArray<z.ZodString>;
|
|
303
|
+
checkedAt: z.ZodNullable<z.ZodString>;
|
|
304
|
+
}, z.core.$strip>>>;
|
|
305
|
+
features: z.ZodOptional<z.ZodObject<{
|
|
306
|
+
nixpacks: z.ZodBoolean;
|
|
307
|
+
railpack: z.ZodBoolean;
|
|
308
|
+
privateClones: z.ZodBoolean;
|
|
309
|
+
volumes: z.ZodBoolean;
|
|
310
|
+
databases: z.ZodBoolean;
|
|
311
|
+
imageTransfer: z.ZodBoolean;
|
|
312
|
+
swarm: z.ZodBoolean;
|
|
313
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
314
|
+
}, z.core.$strip>>;
|
|
315
|
+
isBuildServer: z.ZodOptional<z.ZodBoolean>;
|
|
316
|
+
buildConcurrency: z.ZodOptional<z.ZodNumber>;
|
|
317
|
+
databases: z.ZodOptional<z.ZodNumber>;
|
|
318
|
+
swarmNodeId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
319
|
+
swarmRole: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
|
|
320
|
+
manager: "manager";
|
|
321
|
+
worker: "worker";
|
|
322
|
+
}>>>;
|
|
323
|
+
}, z.core.$strip>;
|
|
324
|
+
export type ServerListItem = z.infer<typeof serverListItem>;
|
|
325
|
+
//# sourceMappingURL=multiNode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multiNode.d.ts","sourceRoot":"","sources":["../src/multiNode.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { id } from './common.js';
|
|
3
|
+
import { volumeEntry } from './service.js';
|
|
4
|
+
// ── Multi-node (the 0.16 theme, shipped in the 0.15.x series) ──────────────
|
|
5
|
+
// Contracts for remote nodes that match the panel host: build placement and
|
|
6
|
+
// image transfer, server roles, node volumes, Swarm, and the agent capability
|
|
7
|
+
// view. These are SHAPE checks; the server authorises every request and
|
|
8
|
+
// re-checks every capability. Design: .temp_files/run_0.16/DESIGN.md §1–§7.
|
|
9
|
+
//
|
|
10
|
+
// Every stored default reproduces 0.15: a NULL `buildOn` builds where the
|
|
11
|
+
// service runs, a NULL `orchestrator` runs plain containers, a server is not
|
|
12
|
+
// a build server, and a database or volume with no `serverId` lives on the
|
|
13
|
+
// panel host.
|
|
14
|
+
// ── agent capabilities (§1.1) ──────────────────────────────────────────────
|
|
15
|
+
/**
|
|
16
|
+
* The capabilities a multi-node agent advertises in its sealed `agent.ping`,
|
|
17
|
+
* appended in this order after the 0.15 list so the 0.15 prefix check holds.
|
|
18
|
+
* The agent's `AGENT_CAPABILITIES` must end with exactly this list.
|
|
19
|
+
*/
|
|
20
|
+
export const MULTI_NODE_CAPABILITIES = [
|
|
21
|
+
'stream',
|
|
22
|
+
'docker.runSpec',
|
|
23
|
+
'volume.manage',
|
|
24
|
+
'image.manage',
|
|
25
|
+
'build.nixpacks',
|
|
26
|
+
'build.railpack',
|
|
27
|
+
'git.sshkey',
|
|
28
|
+
'db.manage',
|
|
29
|
+
'swarm',
|
|
30
|
+
];
|
|
31
|
+
export const multiNodeCapability = z.enum(MULTI_NODE_CAPABILITIES);
|
|
32
|
+
/**
|
|
33
|
+
* Error codes the multi-node routes answer with. `node_agent_outdated` (422)
|
|
34
|
+
* is the one refusal every feature shares when the node's agent predates it.
|
|
35
|
+
*/
|
|
36
|
+
export const multiNodeErrorCode = z.enum([
|
|
37
|
+
'node_agent_outdated',
|
|
38
|
+
// T2: a current agent whose owner switched the feature off (a node kill switch).
|
|
39
|
+
'node_feature_disabled',
|
|
40
|
+
'node_transport_unsealed',
|
|
41
|
+
'node_unreachable',
|
|
42
|
+
'node_placement_operator_only',
|
|
43
|
+
'node_volume_exists',
|
|
44
|
+
'server_not_online',
|
|
45
|
+
'server_hosts_databases',
|
|
46
|
+
'attachment_host_mismatch',
|
|
47
|
+
'fanout_database_host',
|
|
48
|
+
'remote_database',
|
|
49
|
+
// T5: a volume backup taken on another host (restore needs `?acrossHosts=true`).
|
|
50
|
+
'backup_host_mismatch',
|
|
51
|
+
// T5: the volume file manager works on panel-host volumes only.
|
|
52
|
+
'node_volume_files_unsupported',
|
|
53
|
+
// T7 (review M2): a current agent whose owner has not opted in to Swarm (NINEDEPLOY_AGENT_SWARM_MANAGER unset).
|
|
54
|
+
'node_swarm_not_enabled',
|
|
55
|
+
// ── 0.16 T8 surfaces ── codes the 0.15.4 Swarm routes already answer with.
|
|
56
|
+
// 502: the manager could not confirm the node a join reported (modules/swarm.ts).
|
|
57
|
+
'swarm_node_unverified',
|
|
58
|
+
// 502: the panel host's daemon cannot create an encrypted overlay (init, join).
|
|
59
|
+
'swarm_overlay_unavailable',
|
|
60
|
+
// 409: DELETE /v1/servers/:id of a node still in the swarm (lib/serverDependents.ts).
|
|
61
|
+
'server_swarm_member',
|
|
62
|
+
// Swarm cluster routes (modules/swarm.ts).
|
|
63
|
+
// 409: POST /v1/swarm/init on a daemon already in a swarm.
|
|
64
|
+
'swarm_already_active',
|
|
65
|
+
// 409: enable or join while the panel host is not an active manager (or has no join address).
|
|
66
|
+
'swarm_not_manager',
|
|
67
|
+
// 409: join of a node already linked; leave of a node not in the swarm.
|
|
68
|
+
'swarm_already_joined',
|
|
69
|
+
'swarm_not_joined',
|
|
70
|
+
// 502: a swarm op failed on the node's agent; `docker swarm init` or the drain failed on the panel host.
|
|
71
|
+
'node_swarm_failed',
|
|
72
|
+
'swarm_init_failed',
|
|
73
|
+
'swarm_drain_failed',
|
|
74
|
+
// 502: the panel host's daemon did not answer `docker info`. Only POST /v1/swarm/init answers it
|
|
75
|
+
// today (no general error enum exists), so it lives here with the route that emits it.
|
|
76
|
+
'docker_unreachable',
|
|
77
|
+
// Placement (modules/servicePlacement.ts).
|
|
78
|
+
// 422: switching to Swarm for a service Swarm cannot run, or while Swarm is disabled.
|
|
79
|
+
'swarm_unsupported',
|
|
80
|
+
'swarm_disabled',
|
|
81
|
+
// 400: a placement the service or the chosen nodes cannot take.
|
|
82
|
+
'placement_unsupported',
|
|
83
|
+
// ── end 0.16 T8 ──
|
|
84
|
+
]);
|
|
85
|
+
/** `GET /v1/servers` → `agent`: the persisted capability cache (advisory). */
|
|
86
|
+
export const serverAgentInfo = z.object({
|
|
87
|
+
/** null = the agent answered without a version (an older release). */
|
|
88
|
+
version: z.string().nullable(),
|
|
89
|
+
capabilities: z.array(z.string()),
|
|
90
|
+
checkedAt: z.string().datetime().nullable(),
|
|
91
|
+
});
|
|
92
|
+
/** `GET /v1/servers` → `terminal` (0.15): what the node's agent offers terminals. */
|
|
93
|
+
export const serverTerminalCapability = z.object({
|
|
94
|
+
host: z.boolean(),
|
|
95
|
+
container: z.boolean(),
|
|
96
|
+
/** Why a capability is missing (an older agent, an unreachable node). */
|
|
97
|
+
reason: z.string().optional(),
|
|
98
|
+
});
|
|
99
|
+
/** `GET /v1/servers` → `features`: what the node can do today, and why not. */
|
|
100
|
+
export const serverFeatures = z.object({
|
|
101
|
+
nixpacks: z.boolean(),
|
|
102
|
+
railpack: z.boolean(),
|
|
103
|
+
privateClones: z.boolean(),
|
|
104
|
+
volumes: z.boolean(),
|
|
105
|
+
databases: z.boolean(),
|
|
106
|
+
imageTransfer: z.boolean(),
|
|
107
|
+
swarm: z.boolean(),
|
|
108
|
+
/** The "update the node agent" hint when any feature is off. */
|
|
109
|
+
reason: z.string().optional(),
|
|
110
|
+
});
|
|
111
|
+
// ── build placement and image transfer (§6) ────────────────────────────────
|
|
112
|
+
export const BUILD_CONCURRENCY_MIN = 1;
|
|
113
|
+
export const BUILD_CONCURRENCY_MAX = 8;
|
|
114
|
+
export const IMAGE_TRANSFERS_LIMIT_MAX = 100;
|
|
115
|
+
/** Mirrors `serviceBuildOn` in `@ninedeploy/db`. */
|
|
116
|
+
export const buildOn = z.enum(['target', 'panel', 'server']);
|
|
117
|
+
/** Mirrors `serviceOrchestrator` in `@ninedeploy/db`. */
|
|
118
|
+
export const serviceOrchestrator = z.enum(['container', 'swarm']);
|
|
119
|
+
/** A registry repository path (`team/app`), no host and no tag. */
|
|
120
|
+
export const pushRepository = z
|
|
121
|
+
.string()
|
|
122
|
+
.max(255)
|
|
123
|
+
.regex(/^[a-z0-9]+(?:[._/-][a-z0-9]+)*$/, 'must be a repository path such as team/app');
|
|
124
|
+
/**
|
|
125
|
+
* `PUT /v1/services/:id/placement` (operator). Partial: only the named keys
|
|
126
|
+
* change; `null` restores the 0.15 default for that key.
|
|
127
|
+
*/
|
|
128
|
+
export const servicePlacement = z
|
|
129
|
+
.object({
|
|
130
|
+
/** null = `target` (build where the service runs). */
|
|
131
|
+
buildOn: buildOn.nullable(),
|
|
132
|
+
buildServerId: id.nullable(),
|
|
133
|
+
pushRegistrySourceId: id.nullable(),
|
|
134
|
+
pushRepository: pushRepository.nullable(),
|
|
135
|
+
/** null = `container` (plain containers). */
|
|
136
|
+
orchestrator: serviceOrchestrator.nullable(),
|
|
137
|
+
})
|
|
138
|
+
.partial()
|
|
139
|
+
.strict();
|
|
140
|
+
/** `GET /v1/services/:id/placement`, and `placement` on the service response. */
|
|
141
|
+
export const servicePlacementView = z.object({
|
|
142
|
+
buildOn: buildOn.nullable(),
|
|
143
|
+
buildServerId: id.nullable(),
|
|
144
|
+
pushRegistrySourceId: id.nullable(),
|
|
145
|
+
pushRepository: z.string().nullable(),
|
|
146
|
+
orchestrator: serviceOrchestrator.nullable(),
|
|
147
|
+
});
|
|
148
|
+
/** The build placement a stored value means: NULL is today's `target`. */
|
|
149
|
+
export function effectiveBuildOn(value) {
|
|
150
|
+
return value ?? 'target';
|
|
151
|
+
}
|
|
152
|
+
/** The orchestrator a stored value means: NULL is today's `container`. */
|
|
153
|
+
export function effectiveOrchestrator(value) {
|
|
154
|
+
return value ?? 'container';
|
|
155
|
+
}
|
|
156
|
+
/** `PATCH /v1/servers/:id` (operator): the build-server role. */
|
|
157
|
+
export const serverRoles = z
|
|
158
|
+
.object({
|
|
159
|
+
isBuildServer: z.boolean(),
|
|
160
|
+
buildConcurrency: z.number().int().min(BUILD_CONCURRENCY_MIN).max(BUILD_CONCURRENCY_MAX),
|
|
161
|
+
})
|
|
162
|
+
.partial()
|
|
163
|
+
.strict();
|
|
164
|
+
/** Mirrors `imageTransferMethod` in `@ninedeploy/db`. */
|
|
165
|
+
export const imageTransferMethod = z.enum(['stream', 'registry', 'preload']);
|
|
166
|
+
/** Mirrors `imageTransferStatus` in `@ninedeploy/db`. */
|
|
167
|
+
export const imageTransferStatus = z.enum(['running', 'completed', 'failed']);
|
|
168
|
+
/** One `image_transfers` row as the API returns it. A NULL server is the panel host. */
|
|
169
|
+
export const imageTransfer = z.object({
|
|
170
|
+
id,
|
|
171
|
+
deploymentId: id.nullable(),
|
|
172
|
+
serviceId: id,
|
|
173
|
+
sourceServerId: id.nullable(),
|
|
174
|
+
targetServerId: id.nullable(),
|
|
175
|
+
method: imageTransferMethod,
|
|
176
|
+
imageRef: z.string(),
|
|
177
|
+
imageId: z.string().nullable(),
|
|
178
|
+
bytes: z.number().int().nonnegative(),
|
|
179
|
+
sha256: z.string().nullable(),
|
|
180
|
+
status: imageTransferStatus,
|
|
181
|
+
error: z.string().nullable(),
|
|
182
|
+
startedAt: z.string().datetime(),
|
|
183
|
+
finishedAt: z.string().datetime().nullable(),
|
|
184
|
+
durationMs: z.number().int().nullable(),
|
|
185
|
+
});
|
|
186
|
+
/** `GET /v1/services/:id/image-transfers` query. Query strings arrive as text. */
|
|
187
|
+
export const imageTransfersQuery = z
|
|
188
|
+
.object({
|
|
189
|
+
limit: z.coerce.number().int().min(1).max(IMAGE_TRANSFERS_LIMIT_MAX).default(20),
|
|
190
|
+
})
|
|
191
|
+
.strict();
|
|
192
|
+
// ── node volumes (§4) ──────────────────────────────────────────────────────
|
|
193
|
+
/** A managed volume name: `nd-svc-*` or `nd-db-*` (bind mounts are never attachable). */
|
|
194
|
+
export const managedVolumeName = z
|
|
195
|
+
.string()
|
|
196
|
+
.max(128)
|
|
197
|
+
.regex(/^nd-(?:svc|db)-[a-z0-9][a-z0-9_.-]*$/, 'must be a managed volume name (nd-svc-* or nd-db-*)');
|
|
198
|
+
/** `?serverId=` on the volume routes: absent = the panel host (today's response). */
|
|
199
|
+
export const volumeHostQuery = z
|
|
200
|
+
.object({
|
|
201
|
+
serverId: z.coerce.number().int().positive().optional(),
|
|
202
|
+
})
|
|
203
|
+
.strict();
|
|
204
|
+
/** `POST /v1/volumes` (operator). `serverId` null or absent = the panel host. */
|
|
205
|
+
export const volumeCreate = z
|
|
206
|
+
.object({
|
|
207
|
+
name: managedVolumeName,
|
|
208
|
+
serverId: id.nullable().optional(),
|
|
209
|
+
})
|
|
210
|
+
.strict();
|
|
211
|
+
/** A volume list item with the host it lives on (null = the panel host). */
|
|
212
|
+
export const hostVolumeEntry = volumeEntry.extend({ serverId: id.nullable() });
|
|
213
|
+
// ── Swarm (§7) ─────────────────────────────────────────────────────────────
|
|
214
|
+
/** Step-up password, as on the other step-up routes. */
|
|
215
|
+
const stepUpPassword = z.string().min(1).max(1024).optional();
|
|
216
|
+
/** `POST /v1/swarm/init` (operator, interactive, step-up). */
|
|
217
|
+
export const swarmInit = z
|
|
218
|
+
.object({
|
|
219
|
+
advertiseAddr: z.union([z.ipv4(), z.ipv6()]),
|
|
220
|
+
password: stepUpPassword,
|
|
221
|
+
})
|
|
222
|
+
.strict();
|
|
223
|
+
/** `PUT /v1/swarm/settings` (operator; step-up to enable). */
|
|
224
|
+
export const swarmSettings = z
|
|
225
|
+
.object({
|
|
226
|
+
enabled: z.boolean(),
|
|
227
|
+
password: stepUpPassword,
|
|
228
|
+
})
|
|
229
|
+
.strict();
|
|
230
|
+
export const swarmNodeRole = z.enum(['manager', 'worker']);
|
|
231
|
+
/** One Swarm node; `serverId` links it to a NineDeploy node (null = the panel host or a foreign node). */
|
|
232
|
+
export const swarmNode = z.object({
|
|
233
|
+
id: z.string(),
|
|
234
|
+
hostname: z.string(),
|
|
235
|
+
role: swarmNodeRole,
|
|
236
|
+
availability: z.string(),
|
|
237
|
+
state: z.string(),
|
|
238
|
+
serverId: id.nullable(),
|
|
239
|
+
/** T7 (review M2): e.g. the node's agent switched the Docker socket off while the node is still in the swarm. */
|
|
240
|
+
warnings: z.array(z.string()).optional(),
|
|
241
|
+
});
|
|
242
|
+
/** `GET /v1/swarm` (operator). Join tokens are never returned. */
|
|
243
|
+
export const swarmStatus = z.object({
|
|
244
|
+
enabled: z.boolean(),
|
|
245
|
+
/** `docker info` `.Swarm.LocalNodeState`: inactive, pending, active, error, locked. */
|
|
246
|
+
localState: z.string(),
|
|
247
|
+
controlAvailable: z.boolean(),
|
|
248
|
+
managerAddr: z.string().nullable(),
|
|
249
|
+
nodes: z.array(swarmNode),
|
|
250
|
+
/** T7 (review M1b): things the operator must do, e.g. firewall 2377/tcp when the management port binds every interface. */
|
|
251
|
+
warnings: z.array(z.string()).optional(),
|
|
252
|
+
});
|
|
253
|
+
/** `GET /v1/services/:id/swarm` (viewer). */
|
|
254
|
+
export const serviceSwarmStatus = z.object({
|
|
255
|
+
/** null = the service has no stack (not on Swarm, or not deployed yet). */
|
|
256
|
+
stack: z.string().nullable(),
|
|
257
|
+
desired: z.number().int().nonnegative(),
|
|
258
|
+
running: z.number().int().nonnegative(),
|
|
259
|
+
tasks: z.array(z.object({
|
|
260
|
+
node: z.string(),
|
|
261
|
+
state: z.string(),
|
|
262
|
+
error: z.string().nullable(),
|
|
263
|
+
image: z.string(),
|
|
264
|
+
})),
|
|
265
|
+
});
|
|
266
|
+
// ── 0.16 T8 surfaces: response shapes for the OpenAPI document ─────────────
|
|
267
|
+
/**
|
|
268
|
+
* One `GET /v1/servers` entry (operator). Every field after `createdAt` is
|
|
269
|
+
* additive and absent on older panels: `terminal` (0.15), then the agent
|
|
270
|
+
* capability cache and features, the build-server role, the hosted database
|
|
271
|
+
* count and the Swarm membership recorded on join. Never the agent token.
|
|
272
|
+
*/
|
|
273
|
+
export const serverListItem = z.object({
|
|
274
|
+
id,
|
|
275
|
+
name: z.string(),
|
|
276
|
+
host: z.string(),
|
|
277
|
+
port: z.number().int(),
|
|
278
|
+
/** `online` turns into `offline` at read time when the node was not seen for 5 minutes. */
|
|
279
|
+
status: z.string(),
|
|
280
|
+
lastSeenAt: z.string().datetime().nullable(),
|
|
281
|
+
createdAt: z.string().datetime(),
|
|
282
|
+
terminal: serverTerminalCapability.optional(),
|
|
283
|
+
/** null until a sealed `agent.ping` answered. */
|
|
284
|
+
agent: serverAgentInfo.nullable().optional(),
|
|
285
|
+
features: serverFeatures.optional(),
|
|
286
|
+
isBuildServer: z.boolean().optional(),
|
|
287
|
+
buildConcurrency: z.number().int().min(BUILD_CONCURRENCY_MIN).max(BUILD_CONCURRENCY_MAX).optional(),
|
|
288
|
+
/** Managed databases hosted on the node. */
|
|
289
|
+
databases: z.number().int().nonnegative().optional(),
|
|
290
|
+
/** The node's swarm id once it joined; null = not in the swarm. */
|
|
291
|
+
swarmNodeId: z.string().nullable().optional(),
|
|
292
|
+
swarmRole: swarmNodeRole.nullable().optional(),
|
|
293
|
+
});
|
|
294
|
+
//# sourceMappingURL=multiNode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multiNode.js","sourceRoot":"","sources":["../src/multiNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,8EAA8E;AAC9E,4EAA4E;AAC5E,8EAA8E;AAC9E,wEAAwE;AACxE,4EAA4E;AAC5E,EAAE;AACF,0EAA0E;AAC1E,6EAA6E;AAC7E,2EAA2E;AAC3E,cAAc;AAEd,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,QAAQ;IACR,gBAAgB;IAChB,eAAe;IACf,cAAc;IACd,gBAAgB;IAChB,gBAAgB;IAChB,YAAY;IACZ,WAAW;IACX,OAAO;CACC,CAAC;AACX,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;AAGnE;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC;IACvC,qBAAqB;IACrB,iFAAiF;IACjF,uBAAuB;IACvB,yBAAyB;IACzB,kBAAkB;IAClB,8BAA8B;IAC9B,oBAAoB;IACpB,mBAAmB;IACnB,wBAAwB;IACxB,0BAA0B;IAC1B,sBAAsB;IACtB,iBAAiB;IACjB,iFAAiF;IACjF,sBAAsB;IACtB,gEAAgE;IAChE,+BAA+B;IAC/B,gHAAgH;IAChH,wBAAwB;IACxB,4EAA4E;IAC5E,kFAAkF;IAClF,uBAAuB;IACvB,gFAAgF;IAChF,2BAA2B;IAC3B,sFAAsF;IACtF,qBAAqB;IACrB,2CAA2C;IAC3C,2DAA2D;IAC3D,sBAAsB;IACtB,8FAA8F;IAC9F,mBAAmB;IACnB,wEAAwE;IACxE,sBAAsB;IACtB,kBAAkB;IAClB,yGAAyG;IACzG,mBAAmB;IACnB,mBAAmB;IACnB,oBAAoB;IACpB,iGAAiG;IACjG,uFAAuF;IACvF,oBAAoB;IACpB,2CAA2C;IAC3C,sFAAsF;IACtF,mBAAmB;IACnB,gBAAgB;IAChB,gEAAgE;IAChE,uBAAuB;IACvB,oBAAoB;CACrB,CAAC,CAAC;AAGH,8EAA8E;AAC9E,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,sEAAsE;IACtE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACjC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CAC5C,CAAC,CAAC;AAGH,qFAAqF;AACrF,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE;IACjB,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;IACtB,yEAAyE;IACzE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC,CAAC;AAEH,+EAA+E;AAC/E,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE;IACrB,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE;IACrB,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE;IAC1B,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;IACtB,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE;IAC1B,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE;IAClB,gEAAgE;IAChE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC,CAAC;AAGH,8EAA8E;AAE9E,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC;AACvC,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC;AACvC,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,CAAC;AAE7C,oDAAoD;AACpD,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AAG7D,yDAAyD;AACzD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;AAGlE,mEAAmE;AACnE,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC;KAC5B,MAAM,EAAE;KACR,GAAG,CAAC,GAAG,CAAC;KACR,KAAK,CAAC,iCAAiC,EAAE,4CAA4C,CAAC,CAAC;AAE1F;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC;KAC9B,MAAM,CAAC;IACN,sDAAsD;IACtD,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE;IAC3B,aAAa,EAAE,EAAE,CAAC,QAAQ,EAAE;IAC5B,oBAAoB,EAAE,EAAE,CAAC,QAAQ,EAAE;IACnC,cAAc,EAAE,cAAc,CAAC,QAAQ,EAAE;IACzC,6CAA6C;IAC7C,YAAY,EAAE,mBAAmB,CAAC,QAAQ,EAAE;CAC7C,CAAC;KACD,OAAO,EAAE;KACT,MAAM,EAAE,CAAC;AAGZ,iFAAiF;AACjF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE;IAC3B,aAAa,EAAE,EAAE,CAAC,QAAQ,EAAE;IAC5B,oBAAoB,EAAE,EAAE,CAAC,QAAQ,EAAE;IACnC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACrC,YAAY,EAAE,mBAAmB,CAAC,QAAQ,EAAE;CAC7C,CAAC,CAAC;AAGH,0EAA0E;AAC1E,MAAM,UAAU,gBAAgB,CAAC,KAAiC;IAChE,OAAO,KAAK,IAAI,QAAQ,CAAC;AAC3B,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,qBAAqB,CAAC,KAA6C;IACjF,OAAO,KAAK,IAAI,WAAW,CAAC;AAC9B,CAAC;AAED,iEAAiE;AACjE,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC;KACzB,MAAM,CAAC;IACN,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE;IAC1B,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,GAAG,CAAC,qBAAqB,CAAC;CACzF,CAAC;KACD,OAAO,EAAE;KACT,MAAM,EAAE,CAAC;AAGZ,yDAAyD;AACzD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;AAG7E,yDAAyD;AACzD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;AAG9E,wFAAwF;AACxF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,EAAE;IACF,YAAY,EAAE,EAAE,CAAC,QAAQ,EAAE;IAC3B,SAAS,EAAE,EAAE;IACb,cAAc,EAAE,EAAE,CAAC,QAAQ,EAAE;IAC7B,cAAc,EAAE,EAAE,CAAC,QAAQ,EAAE;IAC7B,MAAM,EAAE,mBAAmB;IAC3B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACrC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,MAAM,EAAE,mBAAmB;IAC3B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC5C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;CACxC,CAAC,CAAC;AAGH,kFAAkF;AAClF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC;KACjC,MAAM,CAAC;IACN,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CACjF,CAAC;KACD,MAAM,EAAE,CAAC;AAGZ,8EAA8E;AAE9E,yFAAyF;AACzF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC;KAC/B,MAAM,EAAE;KACR,GAAG,CAAC,GAAG,CAAC;KACR,KAAK,CAAC,sCAAsC,EAAE,qDAAqD,CAAC,CAAC;AAExG,qFAAqF;AACrF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC;KAC7B,MAAM,CAAC;IACN,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CACxD,CAAC;KACD,MAAM,EAAE,CAAC;AAGZ,iFAAiF;AACjF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC;KAC1B,MAAM,CAAC;IACN,IAAI,EAAE,iBAAiB;IACvB,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CACnC,CAAC;KACD,MAAM,EAAE,CAAC;AAGZ,4EAA4E;AAC5E,MAAM,CAAC,MAAM,eAAe,GAAG,WAAW,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAG/E,8EAA8E;AAE9E,wDAAwD;AACxD,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;AAE9D,8DAA8D;AAC9D,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC;KACvB,MAAM,CAAC;IACN,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5C,QAAQ,EAAE,cAAc;CACzB,CAAC;KACD,MAAM,EAAE,CAAC;AAGZ,8DAA8D;AAC9D,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC;KAC3B,MAAM,CAAC;IACN,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,QAAQ,EAAE,cAAc;CACzB,CAAC;KACD,MAAM,EAAE,CAAC;AAGZ,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;AAG3D,0GAA0G;AAC1G,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,IAAI,EAAE,aAAa;IACnB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE;IACvB,iHAAiH;IACjH,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CACzC,CAAC,CAAC;AAGH,kEAAkE;AAClE,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,uFAAuF;IACvF,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE;IAC7B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC;IACzB,2HAA2H;IAC3H,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CACzC,CAAC,CAAC;AAGH,6CAA6C;AAC7C,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,2EAA2E;IAC3E,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACvC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACvC,KAAK,EAAE,CAAC,CAAC,KAAK,CACZ,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;QACjB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC5B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;KAClB,CAAC,CACH;CACF,CAAC,CAAC;AAGH,8EAA8E;AAE9E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,EAAE;IACF,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IACtB,2FAA2F;IAC3F,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC5C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,QAAQ,EAAE,wBAAwB,CAAC,QAAQ,EAAE;IAC7C,iDAAiD;IACjD,KAAK,EAAE,eAAe,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC5C,QAAQ,EAAE,cAAc,CAAC,QAAQ,EAAE;IACnC,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACrC,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,QAAQ,EAAE;IACnG,4CAA4C;IAC5C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IACpD,mEAAmE;IACnE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC7C,SAAS,EAAE,aAAa,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CAC/C,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ninedeployManifest.d.ts","sourceRoot":"","sources":["../src/ninedeployManifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;;;;;;;GASG;AAGH,eAAO,MAAM,WAAW;;;;;;;;;;EAUtB,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEtD,eAAO,MAAM,OAAO;;;;;;;;;;;;;kBAaT,CAAC;AACZ,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;AAG9C,eAAO,MAAM,KAAK;;;;;;
|
|
1
|
+
{"version":3,"file":"ninedeployManifest.d.ts","sourceRoot":"","sources":["../src/ninedeployManifest.ts"],"names":[],"mappings":"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"}
|