@bedrock-rbx/core 0.1.0-beta.12 → 0.1.0-beta.14
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/cli/run.mjs +73 -28
- package/dist/cli/run.mjs.map +1 -1
- package/dist/config.d.mts +2 -2
- package/dist/{define-config-87u2jqjM.d.mts → define-config-C2cOtDpP.d.mts} +233 -15
- package/dist/{define-config-87u2jqjM.d.mts.map → define-config-C2cOtDpP.d.mts.map} +1 -1
- package/dist/index.d.mts +496 -307
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/{migrate-mantle-state-Dkk5zGHw.mjs → migrate-mantle-state-qejWFAR0.mjs} +1886 -961
- package/dist/migrate-mantle-state-qejWFAR0.mjs.map +1 -0
- package/package.json +3 -3
- package/dist/migrate-mantle-state-Dkk5zGHw.mjs.map +0 -1
package/dist/cli/run.mjs
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
2
|
+
import { A as createClackProgressAdapter, E as serializeStateFile, G as renderMigrateParseError, H as renderBuildStatePortError, J as renderStateWriteError, K as renderMigrationSummary, U as renderDeployError, V as resolveStateConfig, W as renderMigrateError, _ as diff, a as buildStatePort, d as selectEnvironment, f as selectMergedEnvironment, i as loadConfig, l as validatePlan, m as flattenConfig, n as serializeConfig, o as buildDesired, p as collectRedactionAnnotations, q as renderParseError, r as deploy, t as migrateMantleState, u as extractResourceRedaction, y as createClackPort } from "../migrate-mantle-state-qejWFAR0.mjs";
|
|
3
3
|
import { isCancel, path, select, text } from "@clack/prompts";
|
|
4
4
|
import process from "node:process";
|
|
5
5
|
import { mkdir, readFile, writeFile } from "node:fs/promises";
|
|
6
6
|
import { dirname, join } from "node:path";
|
|
7
7
|
import sade from "sade";
|
|
8
8
|
//#region package.json
|
|
9
|
-
var version = "0.1.0-beta.
|
|
9
|
+
var version = "0.1.0-beta.14";
|
|
10
10
|
//#endregion
|
|
11
11
|
//#region src/cli/credential-environment-overrides.ts
|
|
12
12
|
/**
|
|
@@ -136,34 +136,37 @@ function deployCommand(deps) {
|
|
|
136
136
|
};
|
|
137
137
|
}
|
|
138
138
|
function resolveDeploy(deps) {
|
|
139
|
-
const clack = deps.clack ?? createClackPort();
|
|
140
139
|
return {
|
|
141
|
-
clack,
|
|
140
|
+
clack: deps.clack ?? createClackPort(),
|
|
142
141
|
deploy: deps.deploy ?? deploy,
|
|
143
142
|
exit: deps.exit ?? ((code) => process.exit(code)),
|
|
144
143
|
loadConfig: deps.loadConfig ?? loadConfig,
|
|
145
|
-
|
|
144
|
+
progressOverride: deps.progress
|
|
146
145
|
};
|
|
147
146
|
}
|
|
148
147
|
function loadOptionsFor$1(parsed) {
|
|
149
148
|
return parsed.configFile === void 0 ? void 0 : { configFile: parsed.configFile };
|
|
150
149
|
}
|
|
150
|
+
function cancelAsFailed$1(clack) {
|
|
151
|
+
clack.cancel("deploy failed");
|
|
152
|
+
}
|
|
151
153
|
async function dispatchEnvironments$1(inputs) {
|
|
152
|
-
const { config, environments, getEnv, resolved } = inputs;
|
|
154
|
+
const { config, environments, getEnv, progress, resolved } = inputs;
|
|
153
155
|
const failed = [];
|
|
154
156
|
for (const environment of environments) {
|
|
155
157
|
const result = await resolved.deploy({
|
|
156
158
|
config,
|
|
157
159
|
environment,
|
|
158
|
-
getEnv
|
|
160
|
+
getEnv,
|
|
161
|
+
progress
|
|
159
162
|
});
|
|
160
|
-
if (result.success)
|
|
163
|
+
if (result.success) progress.emit({
|
|
161
164
|
environment,
|
|
162
165
|
kind: "deploySuccess",
|
|
163
166
|
resourceCount: result.data.resources.length
|
|
164
167
|
});
|
|
165
168
|
else {
|
|
166
|
-
|
|
169
|
+
progress.emit({
|
|
167
170
|
environment,
|
|
168
171
|
error: result.err,
|
|
169
172
|
kind: "deployFailure"
|
|
@@ -177,8 +180,24 @@ function buildGetEnvironment$1(parsed) {
|
|
|
177
180
|
const overrides = buildCredentialOverrides(parsed);
|
|
178
181
|
return (name) => overrides[name] ?? process.env[name];
|
|
179
182
|
}
|
|
180
|
-
function
|
|
181
|
-
|
|
183
|
+
async function dispatchAndReport(input) {
|
|
184
|
+
const { loaded, parsed, resolved } = input;
|
|
185
|
+
const progress = resolved.progressOverride ?? createClackProgressAdapter({
|
|
186
|
+
clack: resolved.clack,
|
|
187
|
+
config: loaded
|
|
188
|
+
});
|
|
189
|
+
if ((await dispatchEnvironments$1({
|
|
190
|
+
config: loaded,
|
|
191
|
+
environments: parsed.environments,
|
|
192
|
+
getEnv: buildGetEnvironment$1(parsed),
|
|
193
|
+
progress,
|
|
194
|
+
resolved
|
|
195
|
+
})).length > 0) {
|
|
196
|
+
cancelAsFailed$1(resolved.clack);
|
|
197
|
+
return 1;
|
|
198
|
+
}
|
|
199
|
+
resolved.clack.outro("deploy succeeded");
|
|
200
|
+
return 0;
|
|
182
201
|
}
|
|
183
202
|
async function runDeploy(rawOptions, resolved) {
|
|
184
203
|
resolved.clack.intro("bedrock deploy");
|
|
@@ -197,17 +216,11 @@ async function runDeploy(rawOptions, resolved) {
|
|
|
197
216
|
cancelAsFailed$1(resolved.clack);
|
|
198
217
|
return 1;
|
|
199
218
|
}
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
getEnv: buildGetEnvironment$1(parsed.data),
|
|
219
|
+
return dispatchAndReport({
|
|
220
|
+
loaded: loaded.data,
|
|
221
|
+
parsed: parsed.data,
|
|
204
222
|
resolved
|
|
205
|
-
})
|
|
206
|
-
cancelAsFailed$1(resolved.clack);
|
|
207
|
-
return 1;
|
|
208
|
-
}
|
|
209
|
-
resolved.clack.outro("deploy succeeded");
|
|
210
|
-
return 0;
|
|
223
|
+
});
|
|
211
224
|
}
|
|
212
225
|
//#endregion
|
|
213
226
|
//#region src/shell/preview-diff.ts
|
|
@@ -266,15 +279,32 @@ function pickStatePort(options, config) {
|
|
|
266
279
|
stateConfig: stateConfig.data
|
|
267
280
|
});
|
|
268
281
|
}
|
|
269
|
-
|
|
270
|
-
const
|
|
271
|
-
if (!
|
|
272
|
-
|
|
282
|
+
function resolveEnvironmentView(config, environment) {
|
|
283
|
+
const merged = selectMergedEnvironment(config, environment);
|
|
284
|
+
if (!merged.success) return {
|
|
285
|
+
err: merged.err,
|
|
286
|
+
success: false
|
|
287
|
+
};
|
|
288
|
+
const selected = selectEnvironment(config, environment);
|
|
273
289
|
if (!selected.success) return {
|
|
274
290
|
err: selected.err,
|
|
275
291
|
success: false
|
|
276
292
|
};
|
|
277
|
-
const
|
|
293
|
+
const environmentResource = extractResourceRedaction(merged.data.entry);
|
|
294
|
+
return {
|
|
295
|
+
data: {
|
|
296
|
+
effective: selected.data,
|
|
297
|
+
redactions: collectRedactionAnnotations(merged.data.merged, environmentResource)
|
|
298
|
+
},
|
|
299
|
+
success: true
|
|
300
|
+
};
|
|
301
|
+
}
|
|
302
|
+
async function resolveDeps(options) {
|
|
303
|
+
const config = await pickConfig(options);
|
|
304
|
+
if (!config.success) return config;
|
|
305
|
+
const view = resolveEnvironmentView(config.data, options.environment);
|
|
306
|
+
if (!view.success) return view;
|
|
307
|
+
const { effective, redactions } = view.data;
|
|
278
308
|
const readFile$1 = options.readFile ?? readFile;
|
|
279
309
|
const statePort = pickStatePort(options, effective);
|
|
280
310
|
if (!statePort.success) return statePort;
|
|
@@ -282,6 +312,7 @@ async function resolveDeps(options) {
|
|
|
282
312
|
data: {
|
|
283
313
|
config: effective,
|
|
284
314
|
readFile: readFile$1,
|
|
315
|
+
redactions,
|
|
285
316
|
statePort: statePort.data
|
|
286
317
|
},
|
|
287
318
|
success: true
|
|
@@ -316,7 +347,8 @@ async function runPreview(environment, deps) {
|
|
|
316
347
|
return {
|
|
317
348
|
data: {
|
|
318
349
|
environment,
|
|
319
|
-
ops: diff(desired.data, priorResources)
|
|
350
|
+
ops: diff(desired.data, priorResources),
|
|
351
|
+
redactions: deps.redactions
|
|
320
352
|
},
|
|
321
353
|
success: true
|
|
322
354
|
};
|
|
@@ -363,20 +395,33 @@ function cancelAsFailed(clack) {
|
|
|
363
395
|
function describeOp(op) {
|
|
364
396
|
switch (op.type) {
|
|
365
397
|
case "create": return `+ ${op.desired.kind}:${op.key}`;
|
|
366
|
-
case "update": return `~ ${op.desired.kind}:${op.key}`;
|
|
398
|
+
case "update": return `~ ${op.desired.kind}:${op.key} ${op.changedFields.join(" + ")} updated`;
|
|
367
399
|
}
|
|
368
400
|
}
|
|
369
401
|
function isDriftOp(op) {
|
|
370
402
|
return op.type !== "noop";
|
|
371
403
|
}
|
|
404
|
+
function describeRedaction(redaction) {
|
|
405
|
+
const suffix = redaction.hasRealValueEdits ? "redacted, real values not pushed" : "redacted";
|
|
406
|
+
return `- ${redaction.kind}:${redaction.key} (${suffix})`;
|
|
407
|
+
}
|
|
408
|
+
function renderRedactions(preview, clack) {
|
|
409
|
+
const driftPairs = new Set(preview.ops.filter(isDriftOp).map((op) => `${op.desired.kind}:${op.key}`));
|
|
410
|
+
const redactedNoops = preview.redactions.filter((redaction) => !driftPairs.has(`${redaction.kind}:${redaction.key}`));
|
|
411
|
+
if (redactedNoops.length === 0) return;
|
|
412
|
+
clack.logMessage(`Redacted in "${preview.environment}":`);
|
|
413
|
+
for (const redaction of redactedNoops) clack.logMessage(describeRedaction(redaction));
|
|
414
|
+
}
|
|
372
415
|
function renderPreview(preview, clack) {
|
|
373
416
|
const drift = preview.ops.filter(isDriftOp);
|
|
374
417
|
if (drift.length === 0) {
|
|
375
418
|
clack.logSuccess(`No drift for "${preview.environment}"`);
|
|
419
|
+
renderRedactions(preview, clack);
|
|
376
420
|
return false;
|
|
377
421
|
}
|
|
378
422
|
clack.logMessage(`Pending changes for "${preview.environment}":`);
|
|
379
423
|
for (const op of drift) clack.logMessage(describeOp(op));
|
|
424
|
+
renderRedactions(preview, clack);
|
|
380
425
|
return true;
|
|
381
426
|
}
|
|
382
427
|
async function dispatchEnvironments(inputs) {
|