@contentful/experience-design-system-cli 2.34.5-dev-build-5cdf5961.0 → 2.34.5-dev-build-131193c7.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/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contentful/experience-design-system-cli",
3
- "version": "2.34.5-dev-build-5cdf5961.0",
3
+ "version": "2.34.5-dev-build-131193c7.0",
4
4
  "description": "Contentful Experiences design system import CLI",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -15,8 +15,7 @@ type WizardPreviewStepProps = {
15
15
  totalSteps: number;
16
16
  onConfirm: (acknowledge: boolean) => void;
17
17
  onEdit?: () => void;
18
- onSaveFiles?: () => void;
19
18
  onQuit: () => void;
20
19
  };
21
- export declare function WizardPreviewStep({ preview, spaceId, environmentId, stepNumber, totalSteps, onConfirm, onEdit, onSaveFiles, onQuit, }: WizardPreviewStepProps): React.ReactElement;
20
+ export declare function WizardPreviewStep({ preview, spaceId, environmentId, stepNumber, totalSteps, onConfirm, onEdit, onQuit, }: WizardPreviewStepProps): React.ReactElement;
22
21
  export {};
package/dist/src/index.js CHANGED
@@ -112,26 +112,29 @@ __export(render_with_goodbye_exports, {
112
112
  GoodbyeBoundary: () => GoodbyeBoundary,
113
113
  renderWithGoodbye: () => renderWithGoodbye
114
114
  });
115
- import { useEffect, useRef, useState } from "react";
116
- import { render, Text } from "ink";
115
+ import { useCallback, useEffect, useRef, useState } from "react";
116
+ import { render, Text, useInput } from "ink";
117
117
  import { Fragment, jsx } from "react/jsx-runtime";
118
118
  function GoodbyeBoundary({ children }) {
119
119
  const [isExiting, setIsExiting] = useState(false);
120
120
  const isExitingRef = useRef(false);
121
+ const exitTimerRef = useRef(void 0);
122
+ const requestExit = useCallback(() => {
123
+ if (isExitingRef.current) return;
124
+ isExitingRef.current = true;
125
+ setIsExiting(true);
126
+ exitTimerRef.current = setTimeout(() => process.exit(0), GOODBYE_RENDER_DELAY_MS);
127
+ }, []);
128
+ useInput((input, key) => {
129
+ if (key.ctrl && input === "c") requestExit();
130
+ });
121
131
  useEffect(() => {
122
- let exitTimer;
123
- const handleSigint = () => {
124
- if (isExitingRef.current) return;
125
- isExitingRef.current = true;
126
- setIsExiting(true);
127
- exitTimer = setTimeout(() => process.exit(0), GOODBYE_RENDER_DELAY_MS);
128
- };
129
- process.on("SIGINT", handleSigint);
132
+ process.on("SIGINT", requestExit);
130
133
  return () => {
131
- process.off("SIGINT", handleSigint);
132
- if (exitTimer) clearTimeout(exitTimer);
134
+ process.off("SIGINT", requestExit);
135
+ if (exitTimerRef.current) clearTimeout(exitTimerRef.current);
133
136
  };
134
- }, []);
137
+ }, [requestExit]);
135
138
  return isExiting ? /* @__PURE__ */ jsx(Text, { children: "Goodbye!" }) : /* @__PURE__ */ jsx(Fragment, { children });
136
139
  }
137
140
  function renderWithGoodbye(element, options) {
@@ -7145,7 +7148,7 @@ var init_contentful_urls = __esm({
7145
7148
  });
7146
7149
 
7147
7150
  // packages/experience-design-system-cli/src/apply/tui/ServerApplyView.tsx
7148
- import { Box as Box3, Text as Text4, useInput } from "ink";
7151
+ import { Box as Box3, Text as Text4, useInput as useInput2 } from "ink";
7149
7152
  import { jsx as jsx5, jsxs as jsxs3 } from "react/jsx-runtime";
7150
7153
  function ServerPreviewConfirm({
7151
7154
  preview,
@@ -7155,7 +7158,7 @@ function ServerPreviewConfirm({
7155
7158
  onConfirm,
7156
7159
  onCancel
7157
7160
  }) {
7158
- useInput((input, key) => {
7161
+ useInput2((input, key) => {
7159
7162
  if (key.return) onConfirm(breakingWithImpact);
7160
7163
  else if (key.escape || input === "q") onCancel();
7161
7164
  });
@@ -7184,7 +7187,7 @@ function ServerApplyProgress({
7184
7187
  operationId,
7185
7188
  error
7186
7189
  }) {
7187
- useInput((_input, key) => {
7190
+ useInput2((_input, key) => {
7188
7191
  if (status === "error" && (key.escape || _input === "q")) process.exit(1);
7189
7192
  });
7190
7193
  return /* @__PURE__ */ jsxs3(Box3, { flexDirection: "column", paddingX: 2, paddingY: 1, children: [
@@ -7212,7 +7215,7 @@ function ServerApplyProgress({
7212
7215
  ] });
7213
7216
  }
7214
7217
  function ServerApplyDone({ operation, spaceId, environmentId, host }) {
7215
- useInput((input, key) => {
7218
+ useInput2((input, key) => {
7216
7219
  if (key.escape || input === "q") {
7217
7220
  process.exit(operation.sys.status === "succeeded" ? 0 : 1);
7218
7221
  }
@@ -7326,7 +7329,6 @@ var init_terminal_capabilities = __esm({
7326
7329
 
7327
7330
  // packages/experience-design-system-cli/src/apply/command.ts
7328
7331
  import { createElement as createElement2 } from "react";
7329
- import { render as render2 } from "ink";
7330
7332
  import { readFile as readFile9, readdir as readdir2, stat as stat2 } from "node:fs/promises";
7331
7333
  import { join as join8 } from "node:path";
7332
7334
  import {
@@ -7730,11 +7732,11 @@ function registerApplyCommand(program) {
7730
7732
  environmentId,
7731
7733
  host,
7732
7734
  acknowledgeBreakingChanges: acknowledge,
7733
- rerender: (element) => instance.rerender(element),
7735
+ rerender: (element) => instance.rerender(createElement2(GoodbyeBoundary, null, element)),
7734
7736
  onDone: resolvePromise
7735
7737
  });
7736
7738
  };
7737
- const instance = render2(
7739
+ const instance = renderWithGoodbye(
7738
7740
  createElement2(ServerPreviewConfirm, {
7739
7741
  preview,
7740
7742
  spaceId,
@@ -7756,6 +7758,7 @@ var IGNORE_TOKEN_DIRS;
7756
7758
  var init_command2 = __esm({
7757
7759
  "packages/experience-design-system-cli/src/apply/command.ts"() {
7758
7760
  "use strict";
7761
+ init_render_with_goodbye();
7759
7762
  init_api_client();
7760
7763
  init_error_parser();
7761
7764
  init_cycle_detection();
@@ -9964,6 +9967,34 @@ var init_CredentialsStep = __esm({
9964
9967
  }
9965
9968
  });
9966
9969
 
9970
+ // packages/experience-design-system-cli/src/tui/use-terminal-size.ts
9971
+ import { useStdout } from "ink";
9972
+ import { useEffect as useEffect5, useState as useState9 } from "react";
9973
+ function readTerminalSize(stdout) {
9974
+ return {
9975
+ columns: stdout?.columns ?? 80,
9976
+ rows: stdout?.rows ?? process.stdout.rows ?? 40
9977
+ };
9978
+ }
9979
+ function useTerminalSize() {
9980
+ const { stdout } = useStdout();
9981
+ const [size, setSize] = useState9(() => readTerminalSize(stdout));
9982
+ useEffect5(() => {
9983
+ const updateSize = () => setSize(readTerminalSize(stdout));
9984
+ stdout?.on("resize", updateSize);
9985
+ updateSize();
9986
+ return () => {
9987
+ stdout?.off("resize", updateSize);
9988
+ };
9989
+ }, [stdout]);
9990
+ return size;
9991
+ }
9992
+ var init_use_terminal_size = __esm({
9993
+ "packages/experience-design-system-cli/src/tui/use-terminal-size.ts"() {
9994
+ "use strict";
9995
+ }
9996
+ });
9997
+
9967
9998
  // packages/experience-design-system-cli/src/apply/tokens.ts
9968
9999
  var init_tokens = __esm({
9969
10000
  "packages/experience-design-system-cli/src/apply/tokens.ts"() {
@@ -10148,7 +10179,7 @@ var init_SpaceEnvironment = __esm({
10148
10179
  });
10149
10180
 
10150
10181
  // packages/experience-design-system-cli/src/import/tui/preview-confirmation-input.ts
10151
- import { useCallback } from "react";
10182
+ import { useCallback as useCallback2 } from "react";
10152
10183
  function handlePreviewConfirmationInput(_input, key, options) {
10153
10184
  if (key.return) {
10154
10185
  options.onConfirm(options.breakingWithImpact);
@@ -10157,7 +10188,7 @@ function handlePreviewConfirmationInput(_input, key, options) {
10157
10188
  return false;
10158
10189
  }
10159
10190
  function usePreviewConfirmationInput(breakingWithImpact, onConfirm) {
10160
- return useCallback(
10191
+ return useCallback2(
10161
10192
  (input, key) => handlePreviewConfirmationInput(input, key, {
10162
10193
  breakingWithImpact,
10163
10194
  onConfirm
@@ -10171,34 +10202,6 @@ var init_preview_confirmation_input = __esm({
10171
10202
  }
10172
10203
  });
10173
10204
 
10174
- // packages/experience-design-system-cli/src/tui/use-terminal-size.ts
10175
- import { useStdout } from "ink";
10176
- import { useEffect as useEffect5, useState as useState9 } from "react";
10177
- function readTerminalSize(stdout) {
10178
- return {
10179
- columns: stdout?.columns ?? 80,
10180
- rows: stdout?.rows ?? process.stdout.rows ?? 40
10181
- };
10182
- }
10183
- function useTerminalSize() {
10184
- const { stdout } = useStdout();
10185
- const [size, setSize] = useState9(() => readTerminalSize(stdout));
10186
- useEffect5(() => {
10187
- const updateSize = () => setSize(readTerminalSize(stdout));
10188
- stdout?.on("resize", updateSize);
10189
- updateSize();
10190
- return () => {
10191
- stdout?.off("resize", updateSize);
10192
- };
10193
- }, [stdout]);
10194
- return size;
10195
- }
10196
- var init_use_terminal_size = __esm({
10197
- "packages/experience-design-system-cli/src/tui/use-terminal-size.ts"() {
10198
- "use strict";
10199
- }
10200
- });
10201
-
10202
10205
  // packages/experience-design-system-cli/src/tui/windowed-panel.tsx
10203
10206
  import { Box as Box15, Text as Text16 } from "ink";
10204
10207
  import { jsx as jsx18, jsxs as jsxs15 } from "react/jsx-runtime";
@@ -10468,7 +10471,6 @@ function WizardPreviewStep({
10468
10471
  totalSteps,
10469
10472
  onConfirm,
10470
10473
  onEdit,
10471
- onSaveFiles,
10472
10474
  onQuit
10473
10475
  }) {
10474
10476
  const breakingWithImpact = hasBreakingChangesWithImpact(preview);
@@ -10527,10 +10529,6 @@ function WizardPreviewStep({
10527
10529
  onEdit();
10528
10530
  return;
10529
10531
  }
10530
- if (input === "s" && onSaveFiles) {
10531
- onSaveFiles();
10532
- return;
10533
- }
10534
10532
  if (input === "q" || key.escape) {
10535
10533
  onQuit();
10536
10534
  return;
@@ -10572,9 +10570,8 @@ function WizardPreviewStep({
10572
10570
  diffExpanded ? "Hide" : "Show",
10573
10571
  " diff"
10574
10572
  ] }),
10575
- maxScroll > 0 && /* @__PURE__ */ jsx19(Text17, { dimColor: true, children: "[\u2191\u2193] Scroll [f/b] Page" }),
10573
+ diffExpanded && /* @__PURE__ */ jsx19(Text17, { dimColor: true, children: "[\u2191\u2193] Scroll [f/b] Page" }),
10576
10574
  onEdit && /* @__PURE__ */ jsx19(Text17, { dimColor: true, children: "[e] Edit definitions" }),
10577
- onSaveFiles && /* @__PURE__ */ jsx19(Text17, { dimColor: true, children: "[s] Save files instead" }),
10578
10575
  /* @__PURE__ */ jsx19(Text17, { dimColor: true, children: "[q] Cancel" })
10579
10576
  ] })
10580
10577
  ] });
@@ -10584,12 +10581,12 @@ var init_WizardPreviewStep = __esm({
10584
10581
  "use strict";
10585
10582
  init_theme();
10586
10583
  init_useImmediateInput();
10584
+ init_use_terminal_size();
10587
10585
  init_tokens();
10588
10586
  init_preview_diff();
10589
10587
  init_StepHeader();
10590
10588
  init_SpaceEnvironment();
10591
10589
  init_preview_confirmation_input();
10592
- init_use_terminal_size();
10593
10590
  init_windowed_panel();
10594
10591
  }
10595
10592
  });
@@ -19523,20 +19520,20 @@ var init_SearchMatchSummary = __esm({
19523
19520
  });
19524
19521
 
19525
19522
  // packages/experience-design-system-cli/src/import/tui/hooks/useOverlayPanel.ts
19526
- import { useCallback as useCallback2, useState as useState13 } from "react";
19523
+ import { useCallback as useCallback3, useState as useState13 } from "react";
19527
19524
  function useOverlayPanel(opts) {
19528
19525
  const { toggleKey, onClose } = opts;
19529
19526
  const [isOpen, setIsOpen] = useState13(false);
19530
- const open = useCallback2(() => {
19527
+ const open = useCallback3(() => {
19531
19528
  setIsOpen(true);
19532
19529
  }, []);
19533
- const close = useCallback2(() => {
19530
+ const close = useCallback3(() => {
19534
19531
  setIsOpen((prev) => {
19535
19532
  if (prev && onClose) onClose();
19536
19533
  return false;
19537
19534
  });
19538
19535
  }, [onClose]);
19539
- const handleInput = useCallback2(
19536
+ const handleInput = useCallback3(
19540
19537
  (input, key) => {
19541
19538
  if (!isOpen) return false;
19542
19539
  if (input === toggleKey || key.escape === true) {
@@ -24260,7 +24257,7 @@ var init_useFinalizePreview = __esm({
24260
24257
  });
24261
24258
 
24262
24259
  // packages/experience-design-system-cli/src/import/tui/hooks/useReviewSession.ts
24263
- import { useCallback as useCallback3, useEffect as useEffect10, useRef as useRef6, useState as useState17 } from "react";
24260
+ import { useCallback as useCallback4, useEffect as useEffect10, useRef as useRef6, useState as useState17 } from "react";
24264
24261
  function loadReviewSessionState({
24265
24262
  extractSessionId,
24266
24263
  tokenSessionId,
@@ -24310,7 +24307,7 @@ function useReviewSession({
24310
24307
  const [loading, setLoading] = useState17(true);
24311
24308
  const [loadError, setLoadError] = useState17(null);
24312
24309
  const [availableTokens, setAvailableTokens] = useState17([]);
24313
- const loadInitialState = useCallback3(async () => {
24310
+ const loadInitialState = useCallback4(async () => {
24314
24311
  const result = loadSession();
24315
24312
  if (result.error || !tokensPath) return { result, catalog: result.tokens };
24316
24313
  const catalog = (await readTokensFromPath("tokens", tokensPath)).map((token) => ({
@@ -25011,7 +25008,7 @@ var init_preview_annotations = __esm({
25011
25008
  });
25012
25009
 
25013
25010
  // packages/experience-design-system-cli/src/import/tui/useLivePreview.ts
25014
- import { useCallback as useCallback4, useEffect as useEffect12, useRef as useRef8, useState as useState20 } from "react";
25011
+ import { useCallback as useCallback5, useEffect as useEffect12, useRef as useRef8, useState as useState20 } from "react";
25015
25012
  function useLivePreview(opts) {
25016
25013
  const debounceMs = opts.debounceMs ?? DEFAULT_DEBOUNCE_MS;
25017
25014
  const [status, setStatus] = useState20("idle");
@@ -25036,7 +25033,7 @@ function useLivePreview(opts) {
25036
25033
  }
25037
25034
  };
25038
25035
  }, []);
25039
- const trigger = useCallback4(() => {
25036
+ const trigger = useCallback5(() => {
25040
25037
  const current = optsRef.current;
25041
25038
  if (!current.enabled) return;
25042
25039
  if (disabledRef.current) return;
@@ -25109,7 +25106,7 @@ var init_useLivePreview = __esm({
25109
25106
  });
25110
25107
 
25111
25108
  // packages/experience-design-system-cli/src/import/tui/hooks/useReviewPreview.ts
25112
- import { useCallback as useCallback5, useEffect as useEffect13, useState as useState21 } from "react";
25109
+ import { useCallback as useCallback6, useEffect as useEffect13, useState as useState21 } from "react";
25113
25110
  function useReviewPreview({
25114
25111
  components,
25115
25112
  loading,
@@ -25125,7 +25122,7 @@ function useReviewPreview({
25125
25122
  }) {
25126
25123
  const [previewAnnotations, setPreviewAnnotations] = useState21(/* @__PURE__ */ new Map());
25127
25124
  const [removedComponents, setRemovedComponents] = useState21([]);
25128
- const handleResult = useCallback5(
25125
+ const handleResult = useCallback6(
25129
25126
  (response) => {
25130
25127
  if (!response) return;
25131
25128
  setPreviewAnnotations(
@@ -25214,7 +25211,7 @@ var init_LivePreviewSummary = __esm({
25214
25211
  });
25215
25212
 
25216
25213
  // packages/experience-design-system-cli/src/import/tui/steps/GenerateReviewStep.tsx
25217
- import { useCallback as useCallback6, useEffect as useEffect14, useMemo as useMemo3, useRef as useRef9, useState as useState22 } from "react";
25214
+ import { useCallback as useCallback7, useEffect as useEffect14, useMemo as useMemo3, useRef as useRef9, useState as useState22 } from "react";
25218
25215
  import figures6 from "figures";
25219
25216
  import { Box as Box41, Text as Text45 } from "ink";
25220
25217
  import { Fragment as Fragment18, jsx as jsx49, jsxs as jsxs42 } from "react/jsx-runtime";
@@ -25380,10 +25377,10 @@ function GenerateReviewStepView({
25380
25377
  }) {
25381
25378
  const { columns: terminalWidth, rows: terminalRows } = useTerminalSize();
25382
25379
  const [slotCycles, setSlotCycles] = useState22([]);
25383
- const setLoadedSlotCycles = useCallback6((cycles) => {
25380
+ const setLoadedSlotCycles = useCallback7((cycles) => {
25384
25381
  setSlotCycles(cycles ?? []);
25385
25382
  }, []);
25386
- const loadSessionState = useCallback6(
25383
+ const loadSessionState = useCallback7(
25387
25384
  () => loadReviewSessionState({
25388
25385
  extractSessionId,
25389
25386
  tokenSessionId,
@@ -26005,7 +26002,7 @@ function GenerateReviewStepView({
26005
26002
  }
26006
26003
  return;
26007
26004
  }
26008
- if (input === "c" && cycleRows.length > 0) {
26005
+ if (input === "c" && !key.ctrl && !key.meta && cycleRows.length > 0) {
26009
26006
  cyclePanel.open();
26010
26007
  setCyclePanelScroll(0);
26011
26008
  setCyclesCursor(0);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contentful/experience-design-system-cli",
3
- "version": "2.34.5-dev-build-5cdf5961.0",
3
+ "version": "2.34.5-dev-build-131193c7.0",
4
4
  "description": "Contentful Experiences design system import CLI",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -41,8 +41,8 @@
41
41
  "svelte": "^5.56.4",
42
42
  "ts-morph": "^27.0.2",
43
43
  "typescript": "^5.9.3",
44
- "@contentful/experience-design-system-types": "2.34.5-dev-build-5cdf5961.0",
45
- "@contentful/experience-design-system-cli-v2": "2.34.5-dev-build-5cdf5961.0"
44
+ "@contentful/experience-design-system-cli-v2": "2.34.5-dev-build-131193c7.0",
45
+ "@contentful/experience-design-system-types": "2.34.5-dev-build-131193c7.0"
46
46
  },
47
47
  "devDependencies": {
48
48
  "@tsconfig/node24": "^24.0.4",
@@ -54,9 +54,9 @@
54
54
  "ink-testing-library": "^4.0.0",
55
55
  "typescript-eslint": "^8.67.0",
56
56
  "vitest": "^4.0.16",
57
- "@contentful/experience-design-system-client": "2.34.5-dev-build-5cdf5961.0",
58
- "@contentful/experience-design-system-extraction": "2.34.5-dev-build-5cdf5961.0",
59
- "@contentful/experience-design-system-generation": "2.34.5-dev-build-5cdf5961.0"
57
+ "@contentful/experience-design-system-extraction": "2.34.5-dev-build-131193c7.0",
58
+ "@contentful/experience-design-system-generation": "2.34.5-dev-build-131193c7.0",
59
+ "@contentful/experience-design-system-client": "2.34.5-dev-build-131193c7.0"
60
60
  },
61
61
  "repository": {
62
62
  "type": "git",