@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 CHANGED
@@ -1,12 +1,12 @@
1
1
  #!/usr/bin/env node
2
- import { B as renderDeployError, E as serializeStateFile, G as renderStateWriteError, H as renderMigrateParseError, R as createClackProgressAdapter, U as renderMigrationSummary, V as renderMigrateError, W as renderParseError, a as buildStatePort, d as resolveStateConfig, f as flattenConfig, h as diff, i as loadConfig, l as validatePlan, n as serializeConfig, o as buildDesired, r as deploy, t as migrateMantleState, u as selectEnvironment, y as createClackPort, z as renderBuildStatePortError } from "../migrate-mantle-state-Dkk5zGHw.mjs";
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.12";
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
- progress: deps.progress ?? createClackProgressAdapter({ clack })
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) resolved.progress.emit({
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
- resolved.progress.emit({
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 cancelAsFailed$1(clack) {
181
- clack.cancel("deploy failed");
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
- if ((await dispatchEnvironments$1({
201
- config: loaded.data,
202
- environments: parsed.data.environments,
203
- getEnv: buildGetEnvironment$1(parsed.data),
219
+ return dispatchAndReport({
220
+ loaded: loaded.data,
221
+ parsed: parsed.data,
204
222
  resolved
205
- })).length > 0) {
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
- async function resolveDeps(options) {
270
- const config = await pickConfig(options);
271
- if (!config.success) return config;
272
- const selected = selectEnvironment(config.data, options.environment);
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 effective = selected.data;
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) {