ninedeploy 0.10.5 → 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/README.md +1 -0
- package/dist/client.d.ts +34 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +81 -22
- package/dist/client.js.map +1 -1
- package/dist/commands/backupPolicy.d.ts +29 -0
- package/dist/commands/backupPolicy.d.ts.map +1 -0
- package/dist/commands/backupPolicy.js +111 -0
- package/dist/commands/backupPolicy.js.map +1 -0
- package/dist/commands/certificates.d.ts +18 -7
- package/dist/commands/certificates.d.ts.map +1 -1
- package/dist/commands/certificates.js +121 -1
- package/dist/commands/certificates.js.map +1 -1
- package/dist/commands/databaseAccess.d.ts +37 -0
- package/dist/commands/databaseAccess.d.ts.map +1 -0
- package/dist/commands/databaseAccess.js +306 -0
- package/dist/commands/databaseAccess.js.map +1 -0
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +28 -7
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/githubApps.d.ts +40 -0
- package/dist/commands/githubApps.d.ts.map +1 -0
- package/dist/commands/githubApps.js +278 -0
- package/dist/commands/githubApps.js.map +1 -0
- package/dist/commands/housekeeping.d.ts +7 -0
- package/dist/commands/housekeeping.d.ts.map +1 -1
- package/dist/commands/housekeeping.js +16 -0
- package/dist/commands/housekeeping.js.map +1 -1
- package/dist/commands/logs.d.ts.map +1 -1
- package/dist/commands/logs.js +17 -2
- package/dist/commands/logs.js.map +1 -1
- package/dist/commands/manage.d.ts +26 -10
- package/dist/commands/manage.d.ts.map +1 -1
- package/dist/commands/manage.js +219 -65
- package/dist/commands/manage.js.map +1 -1
- package/dist/commands/manifest.d.ts.map +1 -1
- package/dist/commands/manifest.js +9 -1
- package/dist/commands/manifest.js.map +1 -1
- package/dist/commands/misc.d.ts +4 -2
- package/dist/commands/misc.d.ts.map +1 -1
- package/dist/commands/misc.js +25 -11
- package/dist/commands/misc.js.map +1 -1
- package/dist/commands/multiNode.d.ts +55 -0
- package/dist/commands/multiNode.d.ts.map +1 -0
- package/dist/commands/multiNode.js +438 -0
- package/dist/commands/multiNode.js.map +1 -0
- package/dist/commands/notifications.d.ts +1 -1
- package/dist/commands/operations.d.ts +89 -0
- package/dist/commands/operations.d.ts.map +1 -0
- package/dist/commands/operations.js +468 -0
- package/dist/commands/operations.js.map +1 -0
- package/dist/commands/panelBackup.d.ts +28 -0
- package/dist/commands/panelBackup.d.ts.map +1 -0
- package/dist/commands/panelBackup.js +153 -0
- package/dist/commands/panelBackup.js.map +1 -0
- package/dist/commands/plugins.d.ts +1 -1
- package/dist/commands/plugins.d.ts.map +1 -1
- package/dist/commands/plugins.js +7 -3
- package/dist/commands/plugins.js.map +1 -1
- package/dist/commands/proxyConfig.d.ts +16 -0
- package/dist/commands/proxyConfig.d.ts.map +1 -0
- package/dist/commands/proxyConfig.js +122 -0
- package/dist/commands/proxyConfig.js.map +1 -0
- package/dist/commands/secretProviders.d.ts +59 -0
- package/dist/commands/secretProviders.d.ts.map +1 -0
- package/dist/commands/secretProviders.js +212 -0
- package/dist/commands/secretProviders.js.map +1 -0
- package/dist/commands/services.d.ts.map +1 -1
- package/dist/commands/services.js +3 -5
- package/dist/commands/services.js.map +1 -1
- package/dist/commands/setup.d.ts +3 -1
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +19 -3
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/sources.d.ts +10 -3
- package/dist/commands/sources.d.ts.map +1 -1
- package/dist/commands/sources.js +116 -18
- package/dist/commands/sources.js.map +1 -1
- package/dist/commands/templates.d.ts.map +1 -1
- package/dist/commands/templates.js +8 -1
- package/dist/commands/templates.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +2 -1
- package/dist/config.js.map +1 -1
- package/dist/index.js +427 -23
- package/dist/index.js.map +1 -1
- package/dist/lib/format.d.ts.map +1 -1
- package/dist/lib/format.js +5 -4
- package/dist/lib/format.js.map +1 -1
- package/dist/lib/panelBackupFile.d.ts +3 -0
- package/dist/lib/panelBackupFile.d.ts.map +1 -0
- package/dist/lib/panelBackupFile.js +71 -0
- package/dist/lib/panelBackupFile.js.map +1 -0
- package/dist/lib/serverRunner.d.ts +6 -0
- package/dist/lib/serverRunner.d.ts.map +1 -1
- package/dist/lib/serverRunner.js +18 -3
- package/dist/lib/serverRunner.js.map +1 -1
- package/dist/prompts.d.ts.map +1 -1
- package/dist/prompts.js +9 -2
- package/dist/prompts.js.map +1 -1
- package/package.json +6 -5
- package/src/client.ts +137 -0
- package/src/commands/backupPolicy.ts +123 -0
- package/src/commands/branding.ts +83 -0
- package/src/commands/buildCache.ts +72 -0
- package/src/commands/certificates.ts +208 -0
- package/src/commands/communityTemplates.ts +97 -0
- package/src/commands/configCenter.ts +71 -0
- package/src/commands/configPresets.ts +215 -0
- package/src/commands/databaseAccess.ts +333 -0
- package/src/commands/demo.ts +22 -0
- package/src/commands/deploy.ts +284 -0
- package/src/commands/doctor.ts +170 -0
- package/src/commands/domains.ts +170 -0
- package/src/commands/egress.ts +135 -0
- package/src/commands/emailTemplates.ts +112 -0
- package/src/commands/firewall.ts +82 -0
- package/src/commands/githubApps.ts +292 -0
- package/src/commands/housekeeping.ts +106 -0
- package/src/commands/login.ts +58 -0
- package/src/commands/logs.ts +91 -0
- package/src/commands/manage.ts +714 -0
- package/src/commands/manifest.ts +314 -0
- package/src/commands/metrics.ts +69 -0
- package/src/commands/misc.ts +307 -0
- package/src/commands/multiNode.ts +442 -0
- package/src/commands/notifications.ts +174 -0
- package/src/commands/operations.ts +519 -0
- package/src/commands/panelBackup.ts +167 -0
- package/src/commands/pgbouncer.ts +65 -0
- package/src/commands/plugins.ts +123 -0
- package/src/commands/proxyConfig.ts +117 -0
- package/src/commands/secretProviders.ts +228 -0
- package/src/commands/server.ts +126 -0
- package/src/commands/services.ts +249 -0
- package/src/commands/setup.ts +94 -0
- package/src/commands/sources.ts +317 -0
- package/src/commands/sso.ts +106 -0
- package/src/commands/templates.ts +158 -0
- package/src/commands/token.ts +66 -0
- package/src/commands/webhooks.ts +93 -0
- package/src/commands/workspaces.ts +63 -0
- package/src/config.ts +53 -0
- package/src/index.ts +1273 -0
- package/src/lib/format.ts +182 -0
- package/src/lib/panelBackupFile.ts +67 -0
- package/src/lib/serverRunner.ts +223 -0
- package/src/prompts.ts +238 -0
package/dist/commands/sources.js
CHANGED
|
@@ -19,10 +19,27 @@ export async function sourcesList(client) {
|
|
|
19
19
|
branch: s.defaultBranch ?? 'main',
|
|
20
20
|
})), ['id', 'name', 'type', 'token', 'deployKey', 'branch']);
|
|
21
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* 0.13: a Gitea base URL from `--base-url`. Shape only (http(s), no
|
|
24
|
+
* credentials, query or fragment); the server re-checks it and refuses
|
|
25
|
+
* `http:` unless private egress is allowed.
|
|
26
|
+
*/
|
|
27
|
+
function parseBaseUrl(raw) {
|
|
28
|
+
const trimmed = raw.trim().replace(/\/+$/, '');
|
|
29
|
+
try {
|
|
30
|
+
const url = new URL(trimmed);
|
|
31
|
+
if ((url.protocol !== 'https:' && url.protocol !== 'http:') || url.username || url.password || url.search || url.hash)
|
|
32
|
+
return null;
|
|
33
|
+
return trimmed;
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
22
39
|
/**
|
|
23
40
|
* Resolve a credential with a strict, documented precedence:
|
|
24
41
|
* 1. explicit CLI flag (already handled by the caller)
|
|
25
|
-
* 2. NINEDEPLOY_GITHUB_TOKEN / NINEDEPLOY_GITLAB_TOKEN /
|
|
42
|
+
* 2. NINEDEPLOY_GITHUB_TOKEN / NINEDEPLOY_GITLAB_TOKEN / NINEDEPLOY_SOURCE_TOKEN env var
|
|
26
43
|
* 3. interactive masked prompt
|
|
27
44
|
*
|
|
28
45
|
* The env fallback is the documented "no-stdin / CI" path: an operator
|
|
@@ -35,9 +52,41 @@ async function resolveSecret(envName, label) {
|
|
|
35
52
|
// Last resort: masked prompt. Honors a piped-stdin default (empty).
|
|
36
53
|
return await promptHidden(label);
|
|
37
54
|
}
|
|
38
|
-
/**
|
|
39
|
-
|
|
55
|
+
/**
|
|
56
|
+
* F596: the generic provider-token env var for gitea / registry / custom.
|
|
57
|
+
* NOT `NINEDEPLOY_TOKEN` — that is the documented panel API token (MCP / API
|
|
58
|
+
* clients); reading it here stored the panel credential on the source and
|
|
59
|
+
* sent it to the third-party git host / registry, without a prompt.
|
|
60
|
+
*/
|
|
61
|
+
const SOURCE_TOKEN_ENV = 'NINEDEPLOY_SOURCE_TOKEN';
|
|
62
|
+
/**
|
|
63
|
+
* F597: the prompt asks for the key on one line with escaped newlines (a
|
|
64
|
+
* hidden prompt ends at the first real newline). Turn the escapes back into
|
|
65
|
+
* the newlines the key file needs — a PEM/OpenSSH key never holds a backslash.
|
|
66
|
+
*/
|
|
67
|
+
async function resolveDeployKey() {
|
|
68
|
+
const key = await resolveSecret('NINEDEPLOY_SSH_KEY', 'SSH private key (PEM, single line — escape newlines)');
|
|
69
|
+
return key.replace(/(?:\\r)?\\n/g, '\n');
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* F598: canonical decimal id only, as the server's parseId accepts it.
|
|
73
|
+
* `Number()` mapped `1e1`→10 and `0x4`→4, and NaN fell into the picker whose
|
|
74
|
+
* default is the first listed source — keygen then rewrote the wrong source.
|
|
75
|
+
*/
|
|
76
|
+
function parseSourceId(raw) {
|
|
77
|
+
const t = raw.trim();
|
|
78
|
+
return /^[1-9]\d*$/.test(t) && Number.isSafeInteger(Number(t)) ? Number(t) : 0;
|
|
79
|
+
}
|
|
80
|
+
/** `ninedeploy sources add [name] [--base-url <url>]` */
|
|
81
|
+
export async function sourcesAdd(client, nameArg, opts = {}) {
|
|
40
82
|
header('Add Source');
|
|
83
|
+
let baseUrl;
|
|
84
|
+
if (opts.baseUrl !== undefined) {
|
|
85
|
+
const parsed = parseBaseUrl(opts.baseUrl);
|
|
86
|
+
if (!parsed)
|
|
87
|
+
return error(`Invalid --base-url: ${opts.baseUrl} (expected https://host[/path])`);
|
|
88
|
+
baseUrl = parsed;
|
|
89
|
+
}
|
|
41
90
|
const name = nameArg ?? (await prompt('Display name (e.g. github-personal)'));
|
|
42
91
|
/* v8 ignore next -- the dedicated "rejects when no name" test covers the truthy/falsy split, but
|
|
43
92
|
* v8 counts the early-return as a separate branch that the existing test only ticks on one side. */
|
|
@@ -47,32 +96,43 @@ export async function sourcesAdd(client, nameArg) {
|
|
|
47
96
|
if (!PROVIDERS.includes(type)) {
|
|
48
97
|
return error(`Unknown provider: ${type}. Choose one of: ${PROVIDERS.join(', ')}`);
|
|
49
98
|
}
|
|
99
|
+
if (baseUrl && type !== 'gitea')
|
|
100
|
+
return error('--base-url applies to gitea sources only');
|
|
50
101
|
const defaultBranch = (await prompt('Default branch (used as suggestion only)', 'main')) || 'main';
|
|
51
102
|
let token;
|
|
52
103
|
let deployKey;
|
|
53
104
|
let registryUsername;
|
|
54
105
|
if (type === 'registry') {
|
|
55
106
|
registryUsername = (await prompt('Registry username (e.g. ci-bot)')) || undefined;
|
|
56
|
-
token = await resolveSecret(
|
|
107
|
+
token = await resolveSecret(SOURCE_TOKEN_ENV, 'Registry password / access token (PAT)');
|
|
57
108
|
}
|
|
58
109
|
else if (type === 'gitea') {
|
|
59
|
-
|
|
110
|
+
if (!baseUrl) {
|
|
111
|
+
const typed = (await prompt('Gitea base URL (e.g. https://git.example.com; empty = no live test or repo list)')).trim();
|
|
112
|
+
if (typed) {
|
|
113
|
+
const parsed = parseBaseUrl(typed);
|
|
114
|
+
if (!parsed)
|
|
115
|
+
return error(`Invalid Gitea base URL: ${typed}`);
|
|
116
|
+
baseUrl = parsed;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
token = await resolveSecret(SOURCE_TOKEN_ENV, 'Gitea access token');
|
|
60
120
|
}
|
|
61
121
|
else if (type === 'custom') {
|
|
62
122
|
// Custom source: token or SSH key, your choice
|
|
63
123
|
const authKind = (await prompt('Auth kind (token | ssh)', 'token')) === 'ssh' ? 'ssh' : 'token';
|
|
64
124
|
if (authKind === 'ssh') {
|
|
65
|
-
deployKey = await
|
|
125
|
+
deployKey = await resolveDeployKey();
|
|
66
126
|
}
|
|
67
127
|
else {
|
|
68
|
-
token = await resolveSecret(
|
|
128
|
+
token = await resolveSecret(SOURCE_TOKEN_ENV, 'Access token (PAT)');
|
|
69
129
|
}
|
|
70
130
|
}
|
|
71
131
|
else {
|
|
72
132
|
// github / gitlab — both accept token or SSH
|
|
73
133
|
const authKind = (await prompt('Auth kind (token | ssh)', 'token')) === 'ssh' ? 'ssh' : 'token';
|
|
74
134
|
if (authKind === 'ssh') {
|
|
75
|
-
deployKey = await
|
|
135
|
+
deployKey = await resolveDeployKey();
|
|
76
136
|
}
|
|
77
137
|
else {
|
|
78
138
|
const envName = type === 'github' ? 'NINEDEPLOY_GITHUB_TOKEN' : 'NINEDEPLOY_GITLAB_TOKEN';
|
|
@@ -90,10 +150,11 @@ export async function sourcesAdd(client, nameArg) {
|
|
|
90
150
|
deployKey: deployKey || undefined,
|
|
91
151
|
registryUsername,
|
|
92
152
|
defaultBranch,
|
|
153
|
+
...(baseUrl ? { baseUrl } : {}),
|
|
93
154
|
}));
|
|
94
155
|
success(`Source "${created.name}" created (id: ${created.id})`);
|
|
95
156
|
// Live validation right away — saves the user a DeployWizard round-trip.
|
|
96
|
-
if ((type === 'github' || type === 'gitlab') && token) {
|
|
157
|
+
if ((type === 'github' || type === 'gitlab' || (type === 'gitea' && baseUrl)) && token) {
|
|
97
158
|
await sourcesTest(client, String(created.id));
|
|
98
159
|
}
|
|
99
160
|
}
|
|
@@ -102,10 +163,31 @@ export async function sourcesAdd(client, nameArg) {
|
|
|
102
163
|
error(err instanceof Error ? err.message : String(err));
|
|
103
164
|
}
|
|
104
165
|
}
|
|
105
|
-
/**
|
|
166
|
+
/**
|
|
167
|
+
* F1011: the login, name, scopes, warnings and failure text come from the Git
|
|
168
|
+
* provider's API response (relayed by the server), so they must not drive the
|
|
169
|
+
* operator's terminal — the class F538 (`deploys watch`) and F880
|
|
170
|
+
* (`logs search`) closed for log lines. Same pattern set, but these are
|
|
171
|
+
* one-line metadata fields, so nothing is kept: OSC/DCS/APC/PM/SOS strings,
|
|
172
|
+
* every CSI (SGR included), stray escapes, and all C0/DEL/C1 controls
|
|
173
|
+
* (tab/LF/CR too — a newline in a login could forge a second status line).
|
|
174
|
+
*/
|
|
175
|
+
const ESC = String.fromCharCode(27);
|
|
176
|
+
const PROVIDER_TEXT_CONTROL = new RegExp(`${ESC}[\\]PX^_][\\s\\S]*?(?:${String.fromCharCode(7)}|${ESC}\\\\|$)` +
|
|
177
|
+
`|${ESC}\\[[0-?]*[ -/]*[@-~]` +
|
|
178
|
+
`|${ESC}[\\s\\S]?` +
|
|
179
|
+
'|[\\u0000-\\u001f\\u007f-\\u009f]', 'g');
|
|
180
|
+
export const plain = (value) => String(value).replace(PROVIDER_TEXT_CONTROL, '');
|
|
181
|
+
/**
|
|
182
|
+
* `ninedeploy sources test [id]` — verify the stored token still authenticates.
|
|
183
|
+
* GitHub successes also print what the token can see (F1008/F1011): its kind,
|
|
184
|
+
* its classic/OAuth scopes and each warning about missing private repositories.
|
|
185
|
+
*/
|
|
106
186
|
export async function sourcesTest(client, idArg) {
|
|
107
187
|
header('Test Source Credentials');
|
|
108
|
-
|
|
188
|
+
if (idArg !== undefined && !parseSourceId(idArg))
|
|
189
|
+
return error(`Invalid source id: ${idArg}`);
|
|
190
|
+
let id = idArg === undefined ? 0 : parseSourceId(idArg);
|
|
109
191
|
if (!id) {
|
|
110
192
|
const sources = await spinner('Fetching sources', () => client.sources.list());
|
|
111
193
|
if (sources.length === 0) {
|
|
@@ -114,16 +196,26 @@ export async function sourcesTest(client, idArg) {
|
|
|
114
196
|
}
|
|
115
197
|
table(sources.map((s) => ({ id: s.id, name: s.name, type: s.type })), ['id', 'name', 'type']);
|
|
116
198
|
const picked = await prompt('Source id to test', String(sources[0].id));
|
|
117
|
-
id =
|
|
199
|
+
id = parseSourceId(picked);
|
|
118
200
|
if (!id)
|
|
119
201
|
return error('A numeric source id is required');
|
|
120
202
|
}
|
|
121
203
|
const result = await spinner('Verifying credentials', () => client.sources.test(id));
|
|
122
204
|
if (result.ok) {
|
|
123
|
-
success(
|
|
205
|
+
success(`${plain(result.provider)} token authenticates as ${plain(result.login)}${result.name ? ` (${plain(result.name)})` : ''}`);
|
|
206
|
+
if (result.tokenKind)
|
|
207
|
+
kv('Token type', plain(result.tokenKind));
|
|
208
|
+
if (Array.isArray(result.scopes))
|
|
209
|
+
kv('Scopes', result.scopes.length > 0 ? result.scopes.map(plain).join(', ') : c.gray('none'));
|
|
210
|
+
// 0.13: a GitHub App source reports its installation's repository selection.
|
|
211
|
+
if (result.repositorySelection)
|
|
212
|
+
kv('Repositories', plain(result.repositorySelection));
|
|
213
|
+
for (const warning of result.warnings ?? []) {
|
|
214
|
+
console.log(` ${c.yellow('!')} ${c.yellow(`warning: ${plain(warning)}`)}`);
|
|
215
|
+
}
|
|
124
216
|
}
|
|
125
217
|
else {
|
|
126
|
-
error(
|
|
218
|
+
error(`${plain(result.provider ?? 'source')} check failed (status ${plain(result.status ?? 'n/a')}): ${plain(result.error ?? 'unknown error')}`);
|
|
127
219
|
}
|
|
128
220
|
}
|
|
129
221
|
/**
|
|
@@ -133,7 +225,9 @@ export async function sourcesTest(client, idArg) {
|
|
|
133
225
|
*/
|
|
134
226
|
export async function sourcesKeygen(client, idArg) {
|
|
135
227
|
header('Generate Deploy Key');
|
|
136
|
-
|
|
228
|
+
if (idArg !== undefined && !parseSourceId(idArg))
|
|
229
|
+
return error(`Invalid source id: ${idArg}`);
|
|
230
|
+
let id = idArg === undefined ? 0 : parseSourceId(idArg);
|
|
137
231
|
if (!id) {
|
|
138
232
|
const sources = await spinner('Fetching sources', () => client.sources.list());
|
|
139
233
|
if (sources.length === 0) {
|
|
@@ -142,7 +236,7 @@ export async function sourcesKeygen(client, idArg) {
|
|
|
142
236
|
}
|
|
143
237
|
table(sources.map((s) => ({ id: s.id, name: s.name, type: s.type })), ['id', 'name', 'type']);
|
|
144
238
|
const picked = await prompt('Source id to generate a deploy key for', String(sources[0].id));
|
|
145
|
-
id =
|
|
239
|
+
id = parseSourceId(picked);
|
|
146
240
|
if (!id)
|
|
147
241
|
return error('A numeric source id is required');
|
|
148
242
|
}
|
|
@@ -161,7 +255,9 @@ export async function sourcesKeygen(client, idArg) {
|
|
|
161
255
|
/** `ninedeploy sources remove [id]` */
|
|
162
256
|
export async function sourcesRemove(client, idArg) {
|
|
163
257
|
header('Remove Source');
|
|
164
|
-
|
|
258
|
+
if (idArg !== undefined && !parseSourceId(idArg))
|
|
259
|
+
return error(`Invalid source id: ${idArg}`);
|
|
260
|
+
let id = idArg === undefined ? 0 : parseSourceId(idArg);
|
|
165
261
|
if (!id) {
|
|
166
262
|
const sources = await spinner('Fetching sources', () => client.sources.list());
|
|
167
263
|
if (sources.length === 0) {
|
|
@@ -170,7 +266,7 @@ export async function sourcesRemove(client, idArg) {
|
|
|
170
266
|
}
|
|
171
267
|
table(sources.map((s) => ({ id: s.id, name: s.name, type: s.type })), ['id', 'name', 'type']);
|
|
172
268
|
const picked = await prompt('Source id to remove', String(sources[0].id));
|
|
173
|
-
id =
|
|
269
|
+
id = parseSourceId(picked);
|
|
174
270
|
if (!id)
|
|
175
271
|
return error('A numeric source id is required');
|
|
176
272
|
}
|
|
@@ -204,6 +300,8 @@ export async function sourcesShow(client, idArg) {
|
|
|
204
300
|
kv('Token', s.hasToken ? c.green('✓ set') : c.gray('—'));
|
|
205
301
|
kv('Deploy key', s.hasDeployKey ? c.green('✓ set') : c.gray('—'));
|
|
206
302
|
kv('Registry user', s.registryUsername ?? '—');
|
|
303
|
+
if (s.type === 'gitea')
|
|
304
|
+
kv('Base URL', s.baseUrl ?? c.gray('not set (no live test or repo list)'));
|
|
207
305
|
kv('Default branch', s.defaultBranch ?? 'main');
|
|
208
306
|
kv('Created', s.createdAt);
|
|
209
307
|
kv('Updated', s.updatedAt);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sources.js","sourceRoot":"","sources":["../../src/commands/sources.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sources.js","sourceRoot":"","sources":["../../src/commands/sources.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEvF,MAAM,SAAS,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAU,CAAC;AAG/E,gCAAgC;AAChC,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,MAAwB;IACxD,MAAM,CAAC,SAAS,CAAC,CAAC;IAClB,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5E,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,IAAI,CAAC,qFAAqF,CAAC,CAAC;QAC5F,OAAO;IACT,CAAC;IACD,KAAK,CACH,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACf,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAC9C,SAAS,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QACtD,MAAM,EAAE,CAAC,CAAC,aAAa,IAAI,MAAM;KAClC,CAAC,CAAC,EACH,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,CACvD,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,YAAY,CAAC,GAAW;IAC/B,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC/C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,CAAC,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACnI,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,KAAK,UAAU,aAAa,CAAC,OAAe,EAAE,KAAa;IACzD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC;IAC7C,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC;IAC5B,oEAAoE;IACpE,OAAO,MAAM,YAAY,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC;AAED;;;;;GAKG;AACH,MAAM,gBAAgB,GAAG,yBAAyB,CAAC;AAEnD;;;;GAIG;AACH,KAAK,UAAU,gBAAgB;IAC7B,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,oBAAoB,EAAE,sDAAsD,CAAC,CAAC;IAC9G,OAAO,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;AAC3C,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CAAC,GAAW;IAChC,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IACrB,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjF,CAAC;AAED,yDAAyD;AACzD,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,MAAwB,EAAE,OAAgB,EAAE,IAAI,GAAyB,EAAE;IAC1G,MAAM,CAAC,YAAY,CAAC,CAAC;IACrB,IAAI,OAA2B,CAAC;IAChC,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC,uBAAuB,IAAI,CAAC,OAAO,iCAAiC,CAAC,CAAC;QAChG,OAAO,GAAG,MAAM,CAAC;IACnB,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,MAAM,MAAM,CAAC,qCAAqC,CAAC,CAAC,CAAC;IAC9E;wGACoG;IACpG,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,CAAC,MAAM,MAAM,CAAC,wDAAwD,EAAE,QAAQ,CAAC,CAAa,CAAC;IAC5G,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC,qBAAqB,IAAI,oBAAoB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpF,CAAC;IACD,IAAI,OAAO,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC1F,MAAM,aAAa,GAAG,CAAC,MAAM,MAAM,CAAC,0CAA0C,EAAE,MAAM,CAAC,CAAC,IAAI,MAAM,CAAC;IAEnG,IAAI,KAAyB,CAAC;IAC9B,IAAI,SAA6B,CAAC;IAClC,IAAI,gBAAoC,CAAC;IAEzC,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;QACxB,gBAAgB,GAAG,CAAC,MAAM,MAAM,CAAC,iCAAiC,CAAC,CAAC,IAAI,SAAS,CAAC;QAClF,KAAK,GAAG,MAAM,aAAa,CAAC,gBAAgB,EAAE,wCAAwC,CAAC,CAAC;IAC1F,CAAC;SAAM,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,KAAK,GAAG,CAAC,MAAM,MAAM,CAAC,kFAAkF,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACxH,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;gBACnC,IAAI,CAAC,MAAM;oBAAE,OAAO,KAAK,CAAC,2BAA2B,KAAK,EAAE,CAAC,CAAC;gBAC9D,OAAO,GAAG,MAAM,CAAC;YACnB,CAAC;QACH,CAAC;QACD,KAAK,GAAG,MAAM,aAAa,CAAC,gBAAgB,EAAE,oBAAoB,CAAC,CAAC;IACtE,CAAC;SAAM,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,+CAA+C;QAC/C,MAAM,QAAQ,GAAG,CAAC,MAAM,MAAM,CAAC,yBAAyB,EAAE,OAAO,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;QAChG,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;YACvB,SAAS,GAAG,MAAM,gBAAgB,EAAE,CAAC;QACvC,CAAC;aAAM,CAAC;YACN,KAAK,GAAG,MAAM,aAAa,CAAC,gBAAgB,EAAE,oBAAoB,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;SAAM,CAAC;QACN,6CAA6C;QAC7C,MAAM,QAAQ,GAAG,CAAC,MAAM,MAAM,CAAC,yBAAyB,EAAE,OAAO,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;QAChG,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;YACvB,SAAS,GAAG,MAAM,gBAAgB,EAAE,CAAC;QACvC,CAAC;aAAM,CAAC;YACN,MAAM,OAAO,GAAG,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,yBAAyB,CAAC;YAC1F,KAAK,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,GAAG,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,8BAA8B,CAAC,CAAC;QACjH,CAAC;IACH,CAAC;IAED,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,iDAAiD,CAAC,CAAC;IAClE,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,iBAAiB,EAAE,GAAG,EAAE,CACpD,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;YACpB,IAAI;YACJ,IAAI;YACJ,KAAK,EAAE,KAAK,IAAI,SAAS;YACzB,SAAS,EAAE,SAAS,IAAI,SAAS;YACjC,gBAAgB;YAChB,aAAa;YACb,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAChC,CAAC,CACH,CAAC;QACF,OAAO,CAAC,WAAW,OAAO,CAAC,IAAI,kBAAkB,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC;QAChE,yEAAyE;QACzE,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC;YACvF,MAAM,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,gGAAgG;QAChG,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;AACpC,MAAM,qBAAqB,GAAG,IAAI,MAAM,CACtC,GAAG,GAAG,yBAAyB,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,GAAG,SAAS;IACnE,IAAI,GAAG,sBAAsB;IAC7B,IAAI,GAAG,WAAW;IAClB,mCAAmC,EACrC,GAAG,CACJ,CAAC;AACF,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,KAAc,EAAU,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC;AAElG;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,MAAwB,EAAE,KAAc;IACxE,MAAM,CAAC,yBAAyB,CAAC,CAAC;IAClC,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,sBAAsB,KAAK,EAAE,CAAC,CAAC;IAC9F,IAAI,EAAE,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACxD,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/E,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,wDAAwD,CAAC,CAAC;YAC/D,OAAO;QACT,CAAC;QACD,KAAK,CACH,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAC9D,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CACvB,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,mBAAmB,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACzE,EAAE,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QAC3B,IAAI,CAAC,EAAE;YAAE,OAAO,KAAK,CAAC,iCAAiC,CAAC,CAAC;IAC3D,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,uBAAuB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACrF,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,2BAA2B,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACnI,IAAI,MAAM,CAAC,SAAS;YAAE,EAAE,CAAC,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;QAChE,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;YAAE,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAChI,6EAA6E;QAC7E,IAAI,MAAM,CAAC,mBAAmB;YAAE,EAAE,CAAC,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC;QACtF,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,YAAY,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,IAAI,QAAQ,CAAC,yBAAyB,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,eAAe,CAAC,EAAE,CAAC,CAAC;IACnJ,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAAwB,EAAE,KAAc;IAC1E,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAC9B,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,sBAAsB,KAAK,EAAE,CAAC,CAAC;IAC9F,IAAI,EAAE,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACxD,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/E,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,8DAA8D,CAAC,CAAC;YACrE,OAAO;QACT,CAAC;QACD,KAAK,CACH,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAC9D,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CACvB,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,wCAAwC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9F,EAAE,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QAC3B,IAAI,CAAC,EAAE;YAAE,OAAO,KAAK,CAAC,iCAAiC,CAAC,CAAC;IAC3D,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,iDAAiD,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5H,OAAO,CAAC,qCAAqC,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC;IACrE,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,4DAA4D,CAAC,EAAE,CAAC,CAAC;IACzF,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,sEAAsE,CAAC,EAAE,CAAC,CAAC;IACnG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,0DAA0D,CAAC,EAAE,CAAC,CAAC;IACvF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,0CAA0C,CAAC,EAAE,CAAC,CAAC;IACvE,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,IAAI,CAAC,oEAAoE,CAAC,CAAC;AAC7E,CAAC;AAED,uCAAuC;AACvC,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAAwB,EAAE,KAAc;IAC1E,MAAM,CAAC,eAAe,CAAC,CAAC;IACxB,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,sBAAsB,KAAK,EAAE,CAAC,CAAC;IAC9F,IAAI,EAAE,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACxD,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/E,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,uBAAuB,CAAC,CAAC;YAC9B,OAAO;QACT,CAAC;QACD,KAAK,CACH,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAC9D,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CACvB,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,qBAAqB,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3E,EAAE,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QAC3B,IAAI,CAAC,EAAE;YAAE,OAAO,KAAK,CAAC,iCAAiC,CAAC,CAAC;IAC3D,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,+CAA+C,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACtF,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,QAAQ,EAAE,CAAC;QAChC,IAAI,CAAC,UAAU,CAAC,CAAC;QACjB,OAAO;IACT,CAAC;IACD,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,iBAAiB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAClE,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QAClC,IAAI,CAAC,yGAAyG,CAAC,CAAC;IAClH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,gGAAgG;QAChG,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC;AAED,qCAAqC;AACrC,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,MAAwB,EAAE,KAAa;IACvE,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACzB,IAAI,CAAC,EAAE;QAAE,OAAO,KAAK,CAAC,qCAAqC,CAAC,CAAC;IAC7D,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IACxB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACvE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3C,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IAChD,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IACnB,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IACnB,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACzD,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAClE,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC,gBAAgB,IAAI,GAAG,CAAC,CAAC;IAC/C,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO;QAAE,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC,CAAC;IACnG,EAAE,CAAC,gBAAgB,EAAE,CAAC,CAAC,aAAa,IAAI,MAAM,CAAC,CAAC;IAChD,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;IAC3B,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;AAC7B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/commands/templates.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAiD,KAAK,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAC5G,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AA0CrD,MAAM,WAAW,oBAAoB;IACnC,8DAA8D;IAC9D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uEAAuE;IACvE,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,gBAAgB,EACxB,UAAU,EAAE,MAAM,EAClB,IAAI,GAAE,oBAAyB,GAC9B,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,qBAAqB,CAAA;CAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/commands/templates.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAiD,KAAK,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAC5G,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AA0CrD,MAAM,WAAW,oBAAoB;IACnC,8DAA8D;IAC9D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uEAAuE;IACvE,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,gBAAgB,EACxB,UAAU,EAAE,MAAM,EAClB,IAAI,GAAE,oBAAyB,GAC9B,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,qBAAqB,CAAA;CAAE,CAAC,CAWzD;AAED,wBAAsB,aAAa,CACjC,MAAM,EAAE,gBAAgB,EACxB,UAAU,EAAE,MAAM,EAClB,GAAG,GAAE,MAAsB,EAC3B,IAAI,GAAE,oBAAyB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAwDf"}
|
|
@@ -60,7 +60,14 @@ async function fetchTemplateEntry(client, templateId) {
|
|
|
60
60
|
*/
|
|
61
61
|
export async function renderTemplateManifest(client, templateId, opts = {}) {
|
|
62
62
|
const entry = await fetchTemplateEntry(client, templateId);
|
|
63
|
-
const
|
|
63
|
+
const host = opts.host?.trim() ?? '';
|
|
64
|
+
const manifest = buildManifestFromTemplate(entry, host);
|
|
65
|
+
// F929: the mapper always emits a starter route, but `routes[].host` is
|
|
66
|
+
// required (a hostname, min 3 chars) while `routes` itself is optional. With
|
|
67
|
+
// no --host, drop the route instead of writing `host: ""` that `manifest
|
|
68
|
+
// validate` and the deploy-time loader reject (mirrors the server's F336).
|
|
69
|
+
if (!host)
|
|
70
|
+
delete manifest.routes;
|
|
64
71
|
const yaml = formatManifestYaml(manifest);
|
|
65
72
|
return { yaml, entry };
|
|
66
73
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/commands/templates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,yBAAyB,EAAE,kBAAkB,EAA8B,MAAM,iBAAiB,CAAC;AAE5G,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEhE,MAAM,kBAAkB,GAAG,CAAC,aAAa,EAAE,iBAAiB,EAAE,kBAAkB,CAAU,CAAC;AAE3F,SAAS,gBAAgB,CAAC,GAAW;IACnC,KAAK,MAAM,IAAI,IAAI,kBAAkB,EAAE,CAAC;QACtC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACrC,IAAI,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAC;IAC9C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,kBAAkB,CAC/B,MAAwB,EACxB,UAAkB;IAElB,yEAAyE;IACzE,sEAAsE;IACtE,qEAAqE;IACrE,MAAM,IAAI,GAAG,MAAO,MAElB,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC7B,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,UAAU,GAAG,CAAC,CAAC;IAChF,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,GAAG,EAAE,IAAI,CAAC,GAAG;KACd,CAAC;AACJ,CAAC;AAaD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,MAAwB,EACxB,UAAkB,EAClB,IAAI,GAAyB,EAAE;IAE/B,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,yBAAyB,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,IAAI,
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/commands/templates.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yEAAyE;IACzE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAID,wBAAgB,UAAU,IAAI,SAAS,CAYtC;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAqBlD"}
|
package/dist/config.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { chmodSync, existsSync, mkdirSync, readFileSync, renameSync, unlinkSync, writeFileSync } from 'node:fs';
|
|
2
2
|
import { homedir } from 'node:os';
|
|
3
|
+
import { randomUUID } from 'node:crypto';
|
|
3
4
|
import path from 'node:path';
|
|
4
5
|
const CONFIG_DIR = path.join(homedir(), '.ninedeploy');
|
|
5
6
|
const CONFIG_FILE = path.join(CONFIG_DIR, 'config.json');
|
|
@@ -23,7 +24,7 @@ export function saveConfig(config) {
|
|
|
23
24
|
// Temp-file + rename: a crash mid-write must never leave a half-written
|
|
24
25
|
// config behind (the previous direct write could, logging the user out on
|
|
25
26
|
// the next command with no explanation).
|
|
26
|
-
const tmp = `${CONFIG_FILE}.tmp`;
|
|
27
|
+
const tmp = `${CONFIG_FILE}.${randomUUID()}.tmp`;
|
|
27
28
|
writeFileSync(tmp, JSON.stringify(config, null, 2), { mode: 0o600 });
|
|
28
29
|
try {
|
|
29
30
|
renameSync(tmp, CONFIG_FILE);
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAChH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC,CAAC;AACvD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AASzD,MAAM,QAAQ,GAAc,EAAE,OAAO,EAAE,uBAAuB,EAAE,CAAC;AAEjE,MAAM,UAAU,UAAU;IACxB,IAAI,CAAC;QACH,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAC5B,OAAO,EAAE,GAAG,QAAQ,EAAE,GAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAwB,EAAE,CAAC;QACnG,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,yEAAyE;QACzE,iEAAiE;QACjE,sCAAsC;QACtC,OAAO,CAAC,KAAK,CAAC,oBAAoB,WAAW,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAC1H,CAAC;IACD,OAAO,EAAE,GAAG,QAAQ,EAAE,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAiB;IAC1C,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,wEAAwE;IACxE,0EAA0E;IAC1E,yCAAyC;IACzC,MAAM,GAAG,GAAG,GAAG,WAAW,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAChH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC,CAAC;AACvD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AASzD,MAAM,QAAQ,GAAc,EAAE,OAAO,EAAE,uBAAuB,EAAE,CAAC;AAEjE,MAAM,UAAU,UAAU;IACxB,IAAI,CAAC;QACH,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAC5B,OAAO,EAAE,GAAG,QAAQ,EAAE,GAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAwB,EAAE,CAAC;QACnG,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,yEAAyE;QACzE,iEAAiE;QACjE,sCAAsC;QACtC,OAAO,CAAC,KAAK,CAAC,oBAAoB,WAAW,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAC1H,CAAC;IACD,OAAO,EAAE,GAAG,QAAQ,EAAE,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAiB;IAC1C,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,wEAAwE;IACxE,0EAA0E;IAC1E,yCAAyC;IACzC,MAAM,GAAG,GAAG,GAAG,WAAW,IAAI,UAAU,EAAE,MAAM,CAAC;IACjD,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACrE,IAAI,CAAC;QACH,UAAU,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC;YAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;QACrD,MAAM,GAAG,CAAC;IACZ,CAAC;IACD,2EAA2E;IAC3E,uEAAuE;IACvE,uDAAuD;IACvD,IAAI,CAAC;QACH,SAAS,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,uCAAuC;IACzC,CAAC;AACH,CAAC"}
|