@ninedeploy/schemas 0.2.7 → 0.3.4
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/auth.d.ts +19 -14
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +18 -4
- package/dist/auth.js.map +1 -1
- package/dist/common.d.ts +18 -0
- package/dist/common.d.ts.map +1 -1
- package/dist/common.js +47 -0
- package/dist/common.js.map +1 -1
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/insights.d.ts +110 -0
- package/dist/insights.d.ts.map +1 -0
- package/dist/insights.js +64 -0
- package/dist/insights.js.map +1 -0
- package/dist/labels.d.ts +108 -0
- package/dist/labels.d.ts.map +1 -0
- package/dist/labels.js +70 -0
- package/dist/labels.js.map +1 -0
- package/dist/management.d.ts +36 -7
- package/dist/management.d.ts.map +1 -1
- package/dist/management.js +58 -9
- package/dist/management.js.map +1 -1
- package/dist/ninedeployManifest.d.ts +292 -0
- package/dist/ninedeployManifest.d.ts.map +1 -0
- package/dist/ninedeployManifest.js +284 -0
- package/dist/ninedeployManifest.js.map +1 -0
- package/dist/project.d.ts +4 -2
- package/dist/project.d.ts.map +1 -1
- package/dist/project.js +2 -2
- package/dist/project.js.map +1 -1
- package/dist/runtimeVersions.d.ts +102 -0
- package/dist/runtimeVersions.d.ts.map +1 -0
- package/dist/runtimeVersions.js +153 -0
- package/dist/runtimeVersions.js.map +1 -0
- package/dist/secretScan.d.ts +52 -0
- package/dist/secretScan.d.ts.map +1 -0
- package/dist/secretScan.js +125 -0
- package/dist/secretScan.js.map +1 -0
- package/dist/service.d.ts +121 -4
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +151 -11
- package/dist/service.js.map +1 -1
- package/dist/workspaces.d.ts +49 -0
- package/dist/workspaces.d.ts.map +1 -1
- package/dist/workspaces.js +9 -0
- package/dist/workspaces.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Secret-pattern scanner for `.ninedeploy` manifests.
|
|
3
|
+
*
|
|
4
|
+
* The manifest is committed to the repo, so it must NEVER carry real
|
|
5
|
+
* credentials, tokens or connection strings. This module is a defensive net:
|
|
6
|
+
* patterns are matched against the raw text, and any hit fails the load.
|
|
7
|
+
*
|
|
8
|
+
* The list is intentionally explicit (named patterns) rather than a generic
|
|
9
|
+
* entropy heuristic — false positives are user-hostile (legitimate values
|
|
10
|
+
* that look credential-like should pass). Every regex is also bounded to
|
|
11
|
+
* avoid runaway matching on long inputs.
|
|
12
|
+
*
|
|
13
|
+
* Lives in `@ninedeploy/schemas` (not in `@ninedeploy/server`) because the
|
|
14
|
+
* CLI also needs to run the scan in `ninedeploy manifest validate`. Anything
|
|
15
|
+
* that loads a manifest — server, CLI, future MCP tool — should reuse this.
|
|
16
|
+
*/
|
|
17
|
+
/** A single rule: a human-readable name plus a regex that MUST match the
|
|
18
|
+
* *beginning* of a credential — anchoring left keeps the regex from firing
|
|
19
|
+
* on substrings inside longer strings. */
|
|
20
|
+
export interface SecretPattern {
|
|
21
|
+
readonly id: string;
|
|
22
|
+
readonly description: string;
|
|
23
|
+
readonly regex: RegExp;
|
|
24
|
+
}
|
|
25
|
+
export declare const SECRET_PATTERNS: ReadonlyArray<SecretPattern>;
|
|
26
|
+
/** A single secret-pattern hit in scanned text. */
|
|
27
|
+
export interface SecretHit {
|
|
28
|
+
patternId: string;
|
|
29
|
+
description: string;
|
|
30
|
+
/** Index in the original text where the match starts. */
|
|
31
|
+
start: number;
|
|
32
|
+
/** Index in the original text where the match ends. */
|
|
33
|
+
end: number;
|
|
34
|
+
/** A redacted preview of the matched text (first 4 chars + … + last 2). */
|
|
35
|
+
redacted: string;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Run every secret pattern across `text` and return every hit.
|
|
39
|
+
*
|
|
40
|
+
* The scan is non-overlapping and bounded — each regex is `\b`-anchored or
|
|
41
|
+
* scheme-anchored, so a single credential can never span more than one match.
|
|
42
|
+
*/
|
|
43
|
+
export declare function scanForSecrets(text: string): SecretHit[];
|
|
44
|
+
/** Returns true if the text contains anything that looks like a secret. */
|
|
45
|
+
export declare function hasSecret(text: string): boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Replace the middle of a string with `…` for safe logging. Keeps the first
|
|
48
|
+
* 4 and last 2 characters when the input is long enough; otherwise just
|
|
49
|
+
* emits `<redacted:N>` so the length is still visible.
|
|
50
|
+
*/
|
|
51
|
+
export declare function redact(value: string): string;
|
|
52
|
+
//# sourceMappingURL=secretScan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secretScan.d.ts","sourceRoot":"","sources":["../src/secretScan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH;;2CAE2C;AAC3C,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,eAAe,EAAE,aAAa,CAAC,aAAa,CAkExD,CAAC;AAEF,mDAAmD;AACnD,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,yDAAyD;IACzD,KAAK,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,GAAG,EAAE,MAAM,CAAC;IACZ,2EAA2E;IAC3E,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,CAmBxD;AAED,2EAA2E;AAC3E,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE/C;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAG5C"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Secret-pattern scanner for `.ninedeploy` manifests.
|
|
3
|
+
*
|
|
4
|
+
* The manifest is committed to the repo, so it must NEVER carry real
|
|
5
|
+
* credentials, tokens or connection strings. This module is a defensive net:
|
|
6
|
+
* patterns are matched against the raw text, and any hit fails the load.
|
|
7
|
+
*
|
|
8
|
+
* The list is intentionally explicit (named patterns) rather than a generic
|
|
9
|
+
* entropy heuristic — false positives are user-hostile (legitimate values
|
|
10
|
+
* that look credential-like should pass). Every regex is also bounded to
|
|
11
|
+
* avoid runaway matching on long inputs.
|
|
12
|
+
*
|
|
13
|
+
* Lives in `@ninedeploy/schemas` (not in `@ninedeploy/server`) because the
|
|
14
|
+
* CLI also needs to run the scan in `ninedeploy manifest validate`. Anything
|
|
15
|
+
* that loads a manifest — server, CLI, future MCP tool — should reuse this.
|
|
16
|
+
*/
|
|
17
|
+
export const SECRET_PATTERNS = [
|
|
18
|
+
{
|
|
19
|
+
id: 'aws-access-key',
|
|
20
|
+
description: 'AWS access key id (AKIA…)',
|
|
21
|
+
regex: /AKIA[0-9A-Z]{16}\b/,
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
id: 'github-pat-classic',
|
|
25
|
+
description: 'GitHub personal access token (ghp_…)',
|
|
26
|
+
regex: /\bghp_[A-Za-z0-9]{36}\b/,
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
id: 'github-pat-fine-grained',
|
|
30
|
+
description: 'GitHub fine-grained PAT (github_pat_…)',
|
|
31
|
+
regex: /\bgithub_pat_[A-Za-z0-9_]{82}\b/,
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
id: 'gitlab-pat',
|
|
35
|
+
description: 'GitLab personal access token (glpat-…)',
|
|
36
|
+
regex: /\bglpat-[A-Za-z0-9_-]{20,}\b/,
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
id: 'slack-token',
|
|
40
|
+
description: 'Slack token (xox[baprs]-…)',
|
|
41
|
+
regex: /\bxox[baprs]-[A-Za-z0-9-]{10,}\b/,
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
id: 'stripe-live-secret',
|
|
45
|
+
description: 'Stripe live secret key (sk_live_…)',
|
|
46
|
+
regex: /\bsk_live_[A-Za-z0-9]{24,}\b/,
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
id: 'stripe-live-restricted',
|
|
50
|
+
description: 'Stripe live restricted key (rk_live_…)',
|
|
51
|
+
regex: /\brk_live_[A-Za-z0-9]{24,}\b/,
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
id: 'openai-secret',
|
|
55
|
+
description: 'OpenAI API key (sk-…)',
|
|
56
|
+
regex: /\bsk-[A-Za-z0-9]{48,}\b/,
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
id: 'anthropic-key',
|
|
60
|
+
description: 'Anthropic API key (sk-ant-…)',
|
|
61
|
+
regex: /\bsk-ant-[A-Za-z0-9_-]{40,}\b/,
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
id: 'discord-webhook',
|
|
65
|
+
description: 'Discord webhook URL (discord…/api/webhooks/…)',
|
|
66
|
+
regex: /https?:\/\/(?:[A-Za-z0-9-]+\.)?discord(?:app)?\.com\/api\/webhooks\/\d+\/[A-Za-z0-9_-]+/,
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
id: 'database-url-credentials',
|
|
70
|
+
description: 'Database URL with embedded credentials (scheme://user:pass@…)',
|
|
71
|
+
regex: /\b(?:postgres(?:ql)?|mysql|mongodb(?:\+srv)?|redis|amqps?|mssql):\/\/[^\s:@'"]+:[^\s@'"]{3,}@/i,
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
id: 'private-key',
|
|
75
|
+
description: 'PEM private key block',
|
|
76
|
+
regex: /-----BEGIN [A-Z ]+PRIVATE KEY-----/,
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
id: 'jwt-bearer',
|
|
80
|
+
description: 'Bearer JWT in a literal value',
|
|
81
|
+
regex: /\bBearer\s+eyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\b/,
|
|
82
|
+
},
|
|
83
|
+
];
|
|
84
|
+
/**
|
|
85
|
+
* Run every secret pattern across `text` and return every hit.
|
|
86
|
+
*
|
|
87
|
+
* The scan is non-overlapping and bounded — each regex is `\b`-anchored or
|
|
88
|
+
* scheme-anchored, so a single credential can never span more than one match.
|
|
89
|
+
*/
|
|
90
|
+
export function scanForSecrets(text) {
|
|
91
|
+
const hits = [];
|
|
92
|
+
for (const pattern of SECRET_PATTERNS) {
|
|
93
|
+
// Reset stateful `g` regexes (defensive — none of ours use `g` today).
|
|
94
|
+
pattern.regex.lastIndex = 0;
|
|
95
|
+
const match = pattern.regex.exec(text);
|
|
96
|
+
if (!match || match.index === undefined)
|
|
97
|
+
continue;
|
|
98
|
+
const start = match.index;
|
|
99
|
+
const end = start + match[0].length;
|
|
100
|
+
hits.push({
|
|
101
|
+
patternId: pattern.id,
|
|
102
|
+
description: pattern.description,
|
|
103
|
+
start,
|
|
104
|
+
end,
|
|
105
|
+
redacted: redact(match[0]),
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
// Sort by start position so the redacted-log line reads in document order.
|
|
109
|
+
return hits.sort((a, b) => a.start - b.start);
|
|
110
|
+
}
|
|
111
|
+
/** Returns true if the text contains anything that looks like a secret. */
|
|
112
|
+
export function hasSecret(text) {
|
|
113
|
+
return scanForSecrets(text).length > 0;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Replace the middle of a string with `…` for safe logging. Keeps the first
|
|
117
|
+
* 4 and last 2 characters when the input is long enough; otherwise just
|
|
118
|
+
* emits `<redacted:N>` so the length is still visible.
|
|
119
|
+
*/
|
|
120
|
+
export function redact(value) {
|
|
121
|
+
if (value.length <= 8)
|
|
122
|
+
return `<redacted:${value.length}>`;
|
|
123
|
+
return `${value.slice(0, 4)}…${value.slice(-2)} (len=${value.length})`;
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=secretScan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secretScan.js","sourceRoot":"","sources":["../src/secretScan.ts"],"names":[],"mappings":"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"}
|
package/dist/service.d.ts
CHANGED
|
@@ -10,9 +10,13 @@ export declare const buildPack: z.ZodEnum<{
|
|
|
10
10
|
nixpacks: "nixpacks";
|
|
11
11
|
}>;
|
|
12
12
|
export declare const createService: z.ZodObject<{
|
|
13
|
-
|
|
13
|
+
templateId: z.ZodOptional<z.ZodString>;
|
|
14
|
+
tagProjectIds: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
|
|
15
|
+
tagWorkspaceIds: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
|
|
16
|
+
tagLabelIds: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
|
|
14
17
|
name: z.ZodString;
|
|
15
18
|
slug: z.ZodOptional<z.ZodString>;
|
|
19
|
+
reuseExisting: z.ZodOptional<z.ZodBoolean>;
|
|
16
20
|
type: z.ZodDefault<z.ZodEnum<{
|
|
17
21
|
compose: "compose";
|
|
18
22
|
docker: "docker";
|
|
@@ -58,7 +62,9 @@ export type CreateService = z.infer<typeof createService>;
|
|
|
58
62
|
* still applies `.default()` values for absent keys, which would silently
|
|
59
63
|
* rewrite `type` back to 'docker' and `branch` to 'main' on every PATCH. */
|
|
60
64
|
export declare const updateService: z.ZodObject<{
|
|
61
|
-
|
|
65
|
+
tagProjectIds: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
|
|
66
|
+
tagWorkspaceIds: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
|
|
67
|
+
tagLabelIds: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
|
|
62
68
|
name: z.ZodOptional<z.ZodString>;
|
|
63
69
|
slug: z.ZodOptional<z.ZodString>;
|
|
64
70
|
type: z.ZodOptional<z.ZodEnum<{
|
|
@@ -68,7 +74,7 @@ export declare const updateService: z.ZodObject<{
|
|
|
68
74
|
}>>;
|
|
69
75
|
repoUrl: z.ZodOptional<z.ZodURL>;
|
|
70
76
|
branch: z.ZodOptional<z.ZodString>;
|
|
71
|
-
sourceId: z.ZodOptional<z.ZodNumber
|
|
77
|
+
sourceId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
72
78
|
serverId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
73
79
|
image: z.ZodOptional<z.ZodString>;
|
|
74
80
|
volumeMount: z.ZodOptional<z.ZodString>;
|
|
@@ -106,7 +112,24 @@ export type CreateServiceInput = z.input<typeof createService>;
|
|
|
106
112
|
export type UpdateServiceInput = z.input<typeof updateService>;
|
|
107
113
|
export declare const service: z.ZodObject<{
|
|
108
114
|
id: z.ZodNumber;
|
|
109
|
-
|
|
115
|
+
projectIds: z.ZodArray<z.ZodNumber>;
|
|
116
|
+
workspaceIds: z.ZodArray<z.ZodNumber>;
|
|
117
|
+
labelIds: z.ZodArray<z.ZodNumber>;
|
|
118
|
+
projects: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
119
|
+
id: z.ZodNumber;
|
|
120
|
+
name: z.ZodString;
|
|
121
|
+
slug: z.ZodString;
|
|
122
|
+
}, z.core.$strip>>>;
|
|
123
|
+
workspaces: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
124
|
+
id: z.ZodNumber;
|
|
125
|
+
name: z.ZodString;
|
|
126
|
+
slug: z.ZodString;
|
|
127
|
+
}, z.core.$strip>>>;
|
|
128
|
+
labels: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
129
|
+
id: z.ZodNumber;
|
|
130
|
+
name: z.ZodString;
|
|
131
|
+
color: z.ZodString;
|
|
132
|
+
}, z.core.$strip>>>;
|
|
110
133
|
serverId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
111
134
|
name: z.ZodString;
|
|
112
135
|
slug: z.ZodString;
|
|
@@ -126,6 +149,7 @@ export declare const service: z.ZodObject<{
|
|
|
126
149
|
repoUrl: z.ZodNullable<z.ZodString>;
|
|
127
150
|
branch: z.ZodString;
|
|
128
151
|
sourceId: z.ZodNullable<z.ZodNumber>;
|
|
152
|
+
sourceName: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
129
153
|
image: z.ZodNullable<z.ZodString>;
|
|
130
154
|
volumeMount: z.ZodNullable<z.ZodString>;
|
|
131
155
|
composeService: z.ZodNullable<z.ZodString>;
|
|
@@ -186,8 +210,10 @@ export declare const source: z.ZodObject<{
|
|
|
186
210
|
type: z.ZodString;
|
|
187
211
|
hasToken: z.ZodBoolean;
|
|
188
212
|
hasDeployKey: z.ZodBoolean;
|
|
213
|
+
registryUsername: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
189
214
|
defaultBranch: z.ZodNullable<z.ZodString>;
|
|
190
215
|
createdAt: z.ZodString;
|
|
216
|
+
updatedAt: z.ZodOptional<z.ZodString>;
|
|
191
217
|
}, z.core.$strip>;
|
|
192
218
|
export type Source = z.infer<typeof source>;
|
|
193
219
|
export declare const triggerDeploy: z.ZodObject<{
|
|
@@ -203,6 +229,7 @@ export declare const deployment: z.ZodObject<{
|
|
|
203
229
|
failed: "failed";
|
|
204
230
|
queued: "queued";
|
|
205
231
|
running: "running";
|
|
232
|
+
superseded: "superseded";
|
|
206
233
|
}>;
|
|
207
234
|
commitSha: z.ZodNullable<z.ZodString>;
|
|
208
235
|
message: z.ZodNullable<z.ZodString>;
|
|
@@ -263,6 +290,7 @@ export declare const webhook: z.ZodObject<{
|
|
|
263
290
|
branch: z.ZodString;
|
|
264
291
|
active: z.ZodBoolean;
|
|
265
292
|
watchPaths: z.ZodString;
|
|
293
|
+
sourceId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
266
294
|
url: z.ZodString;
|
|
267
295
|
createdAt: z.ZodString;
|
|
268
296
|
}, z.core.$strip>;
|
|
@@ -273,6 +301,7 @@ export declare const createdWebhook: z.ZodObject<{
|
|
|
273
301
|
branch: z.ZodString;
|
|
274
302
|
active: z.ZodBoolean;
|
|
275
303
|
watchPaths: z.ZodString;
|
|
304
|
+
sourceId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
276
305
|
url: z.ZodString;
|
|
277
306
|
createdAt: z.ZodString;
|
|
278
307
|
secret: z.ZodString;
|
|
@@ -293,6 +322,7 @@ export declare const createDatabase: z.ZodObject<{
|
|
|
293
322
|
}>;
|
|
294
323
|
version: z.ZodOptional<z.ZodString>;
|
|
295
324
|
projectId: z.ZodOptional<z.ZodNumber>;
|
|
325
|
+
reuseExisting: z.ZodOptional<z.ZodBoolean>;
|
|
296
326
|
existingVolume: z.ZodOptional<z.ZodString>;
|
|
297
327
|
extensions: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
298
328
|
webGuiEnabled: z.ZodOptional<z.ZodBoolean>;
|
|
@@ -335,6 +365,7 @@ export type ManagedDatabase = z.infer<typeof managedDatabase>;
|
|
|
335
365
|
export declare const createAttachment: z.ZodObject<{
|
|
336
366
|
databaseId: z.ZodNumber;
|
|
337
367
|
envAlias: z.ZodOptional<z.ZodString>;
|
|
368
|
+
reuseExisting: z.ZodOptional<z.ZodBoolean>;
|
|
338
369
|
}, z.core.$strip>;
|
|
339
370
|
export type CreateAttachmentInput = z.input<typeof createAttachment>;
|
|
340
371
|
export declare const attachment: z.ZodObject<{
|
|
@@ -352,6 +383,7 @@ export declare const upsertEnvVar: z.ZodObject<{
|
|
|
352
383
|
key: z.ZodString;
|
|
353
384
|
value: z.ZodString;
|
|
354
385
|
isSecret: z.ZodOptional<z.ZodBoolean>;
|
|
386
|
+
overwriteExisting: z.ZodOptional<z.ZodBoolean>;
|
|
355
387
|
}, z.core.$strip>;
|
|
356
388
|
export type UpsertEnvVarInput = z.input<typeof upsertEnvVar>;
|
|
357
389
|
export declare const envVar: z.ZodObject<{
|
|
@@ -361,6 +393,36 @@ export declare const envVar: z.ZodObject<{
|
|
|
361
393
|
isSecret: z.ZodBoolean;
|
|
362
394
|
}, z.core.$strip>;
|
|
363
395
|
export type EnvVar = z.infer<typeof envVar>;
|
|
396
|
+
/** Create a new attachment. Exactly one of `volumeName` or `create.label`
|
|
397
|
+
* must be present — the former attaches an existing managed volume, the
|
|
398
|
+
* latter provisions a new one (system-generated name) and immediately
|
|
399
|
+
* attaches it. */
|
|
400
|
+
export declare const createServiceVolumeAttachment: z.ZodObject<{
|
|
401
|
+
volumeName: z.ZodOptional<z.ZodString>;
|
|
402
|
+
create: z.ZodOptional<z.ZodObject<{
|
|
403
|
+
label: z.ZodString;
|
|
404
|
+
}, z.core.$strip>>;
|
|
405
|
+
containerPath: z.ZodString;
|
|
406
|
+
readOnly: z.ZodOptional<z.ZodBoolean>;
|
|
407
|
+
}, z.core.$strip>;
|
|
408
|
+
export type CreateServiceVolumeAttachmentInput = z.input<typeof createServiceVolumeAttachment>;
|
|
409
|
+
/** PATCH shape — path and readOnly are optional, but at least one must change. */
|
|
410
|
+
export declare const updateServiceVolumeAttachment: z.ZodObject<{
|
|
411
|
+
containerPath: z.ZodOptional<z.ZodString>;
|
|
412
|
+
readOnly: z.ZodOptional<z.ZodBoolean>;
|
|
413
|
+
}, z.core.$strip>;
|
|
414
|
+
export type UpdateServiceVolumeAttachmentInput = z.input<typeof updateServiceVolumeAttachment>;
|
|
415
|
+
/** API representation of a service's volume attachment. */
|
|
416
|
+
export declare const serviceVolumeAttachment: z.ZodObject<{
|
|
417
|
+
id: z.ZodNumber;
|
|
418
|
+
serviceId: z.ZodNumber;
|
|
419
|
+
volumeName: z.ZodString;
|
|
420
|
+
containerPath: z.ZodString;
|
|
421
|
+
readOnly: z.ZodBoolean;
|
|
422
|
+
createdAt: z.ZodString;
|
|
423
|
+
updatedAt: z.ZodString;
|
|
424
|
+
}, z.core.$strip>;
|
|
425
|
+
export type ServiceVolumeAttachment = z.infer<typeof serviceVolumeAttachment>;
|
|
364
426
|
export declare const setLimits: z.ZodObject<{
|
|
365
427
|
cpuShares: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
366
428
|
memLimitMb: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
@@ -476,20 +538,40 @@ export type TopologyGraph = z.infer<typeof topologyGraph>;
|
|
|
476
538
|
export declare const backup: z.ZodObject<{
|
|
477
539
|
id: z.ZodNumber;
|
|
478
540
|
databaseId: z.ZodNullable<z.ZodNumber>;
|
|
541
|
+
volumeName: z.ZodNullable<z.ZodString>;
|
|
542
|
+
scope: z.ZodEnum<{
|
|
543
|
+
db: "db";
|
|
544
|
+
volumes: "volumes";
|
|
545
|
+
}>;
|
|
479
546
|
status: z.ZodString;
|
|
480
547
|
sizeBytes: z.ZodNumber;
|
|
548
|
+
label: z.ZodNullable<z.ZodString>;
|
|
549
|
+
hasRemoteCopy: z.ZodOptional<z.ZodBoolean>;
|
|
481
550
|
createdAt: z.ZodString;
|
|
482
551
|
}, z.core.$strip>;
|
|
483
552
|
export type Backup = z.infer<typeof backup>;
|
|
484
553
|
export declare const backupWithDb: z.ZodObject<{
|
|
485
554
|
id: z.ZodNumber;
|
|
486
555
|
databaseId: z.ZodNullable<z.ZodNumber>;
|
|
556
|
+
volumeName: z.ZodNullable<z.ZodString>;
|
|
557
|
+
scope: z.ZodEnum<{
|
|
558
|
+
db: "db";
|
|
559
|
+
volumes: "volumes";
|
|
560
|
+
}>;
|
|
487
561
|
status: z.ZodString;
|
|
488
562
|
sizeBytes: z.ZodNumber;
|
|
563
|
+
label: z.ZodNullable<z.ZodString>;
|
|
564
|
+
hasRemoteCopy: z.ZodOptional<z.ZodBoolean>;
|
|
489
565
|
createdAt: z.ZodString;
|
|
490
566
|
databaseName: z.ZodNullable<z.ZodString>;
|
|
491
567
|
}, z.core.$strip>;
|
|
492
568
|
export type BackupWithDb = z.infer<typeof backupWithDb>;
|
|
569
|
+
/** Create a new volume backup. The `volumeName` is the route param; the
|
|
570
|
+
* body only carries the `label` for human-friendly file naming. */
|
|
571
|
+
export declare const createVolumeBackup: z.ZodObject<{
|
|
572
|
+
label: z.ZodOptional<z.ZodString>;
|
|
573
|
+
}, z.core.$strip>;
|
|
574
|
+
export type CreateVolumeBackupInput = z.input<typeof createVolumeBackup>;
|
|
493
575
|
export declare const templateSummary: z.ZodObject<{
|
|
494
576
|
id: z.ZodString;
|
|
495
577
|
name: z.ZodString;
|
|
@@ -497,6 +579,8 @@ export declare const templateSummary: z.ZodObject<{
|
|
|
497
579
|
category: z.ZodString;
|
|
498
580
|
emoji: z.ZodString;
|
|
499
581
|
featured: z.ZodOptional<z.ZodBoolean>;
|
|
582
|
+
runtimeVerified: z.ZodOptional<z.ZodBoolean>;
|
|
583
|
+
verifiedAt: z.ZodOptional<z.ZodISODate>;
|
|
500
584
|
}, z.core.$strip>;
|
|
501
585
|
export type TemplateSummary = z.infer<typeof templateSummary>;
|
|
502
586
|
export declare const template: z.ZodObject<{
|
|
@@ -517,6 +601,8 @@ export declare const template: z.ZodObject<{
|
|
|
517
601
|
website: z.ZodOptional<z.ZodString>;
|
|
518
602
|
docs: z.ZodOptional<z.ZodString>;
|
|
519
603
|
featured: z.ZodOptional<z.ZodBoolean>;
|
|
604
|
+
runtimeVerified: z.ZodOptional<z.ZodBoolean>;
|
|
605
|
+
verifiedAt: z.ZodOptional<z.ZodISODate>;
|
|
520
606
|
requires: z.ZodOptional<z.ZodString>;
|
|
521
607
|
dbEngine: z.ZodOptional<z.ZodEnum<{
|
|
522
608
|
clickhouse: "clickhouse";
|
|
@@ -529,10 +615,41 @@ export declare const template: z.ZodObject<{
|
|
|
529
615
|
redis: "redis";
|
|
530
616
|
valkey: "valkey";
|
|
531
617
|
}>>;
|
|
618
|
+
databaseEnv: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodEnum<{
|
|
619
|
+
database: "database";
|
|
620
|
+
host: "host";
|
|
621
|
+
hostPort: "hostPort";
|
|
622
|
+
password: "password";
|
|
623
|
+
port: "port";
|
|
624
|
+
url: "url";
|
|
625
|
+
username: "username";
|
|
626
|
+
}>>>;
|
|
532
627
|
cmd: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
533
628
|
dockerSocket: z.ZodOptional<z.ZodBoolean>;
|
|
534
629
|
}, z.core.$strip>;
|
|
535
630
|
export type Template = z.infer<typeof template>;
|
|
631
|
+
/**
|
|
632
|
+
* One canonical Hub installation request. Image, internal port, volume,
|
|
633
|
+
* command, Docker socket and database mapping are intentionally absent: they
|
|
634
|
+
* are privileged registry-owned fields resolved by the server.
|
|
635
|
+
*/
|
|
636
|
+
export declare const deployTemplate: z.ZodObject<{
|
|
637
|
+
name: z.ZodOptional<z.ZodString>;
|
|
638
|
+
projectId: z.ZodOptional<z.ZodNumber>;
|
|
639
|
+
serverId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
640
|
+
publishedPort: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
641
|
+
healthPath: z.ZodOptional<z.ZodString>;
|
|
642
|
+
cpuShares: z.ZodOptional<z.ZodNumber>;
|
|
643
|
+
memLimitMb: z.ZodOptional<z.ZodNumber>;
|
|
644
|
+
env: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
645
|
+
key: z.ZodString;
|
|
646
|
+
value: z.ZodString;
|
|
647
|
+
isSecret: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
648
|
+
}, z.core.$strip>>>;
|
|
649
|
+
reuseExisting: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
650
|
+
}, z.core.$strip>;
|
|
651
|
+
export type DeployTemplateInput = z.input<typeof deployTemplate>;
|
|
652
|
+
export type DeployTemplate = z.infer<typeof deployTemplate>;
|
|
536
653
|
export declare const domainEntry: z.ZodObject<{
|
|
537
654
|
id: z.ZodNumber;
|
|
538
655
|
hostname: z.ZodString;
|
package/dist/service.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,WAAW;;;;EAAuC,CAAC;AAChE,eAAO,MAAM,SAAS;;;;EAA6C,CAAC;
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
|