@blotch/dolan 22.2.4 → 22.2.6

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.
Files changed (124) hide show
  1. package/dist/commands/add.test.js +2 -0
  2. package/dist/commands/add.test.js.map +1 -1
  3. package/dist/commands/doctor.js +78 -21
  4. package/dist/commands/doctor.js.map +1 -1
  5. package/dist/commands/doctor.test.js +167 -26
  6. package/dist/commands/doctor.test.js.map +1 -1
  7. package/dist/commands/init.test.js +4 -7
  8. package/dist/commands/init.test.js.map +1 -1
  9. package/dist/commands/update.d.ts +3 -1
  10. package/dist/commands/update.js +78 -15
  11. package/dist/commands/update.js.map +1 -1
  12. package/dist/commands/update.test.js +257 -2
  13. package/dist/commands/update.test.js.map +1 -1
  14. package/dist/lockfile.d.ts +10 -0
  15. package/dist/lockfile.js +20 -1
  16. package/dist/lockfile.js.map +1 -1
  17. package/dist/lockfile.test.js +43 -3
  18. package/dist/lockfile.test.js.map +1 -1
  19. package/dist/registry.js +73 -11
  20. package/dist/registry.js.map +1 -1
  21. package/dist/registry.test.js +16 -3
  22. package/dist/registry.test.js.map +1 -1
  23. package/dist/test-utils.d.ts +24 -2
  24. package/dist/test-utils.js +41 -2
  25. package/dist/test-utils.js.map +1 -1
  26. package/dist/ui/boolean-inputs.test.ts +76 -0
  27. package/dist/ui/components/action-sheet/action-sheet.test.ts +370 -1
  28. package/dist/ui/components/action-sheet/action-sheet.ts +306 -28
  29. package/dist/ui/components/action-sheet/index.ts +1 -0
  30. package/dist/ui/components/alert-dialog/alert-dialog.test.ts +552 -8
  31. package/dist/ui/components/alert-dialog/alert-dialog.ts +644 -36
  32. package/dist/ui/components/alert-dialog/index.ts +5 -0
  33. package/dist/ui/components/area-chart/area-chart.ts +3 -2
  34. package/dist/ui/components/badge/badge.ts +2 -1
  35. package/dist/ui/components/bottom-sheet/bottom-sheet.test.ts +968 -3
  36. package/dist/ui/components/bottom-sheet/bottom-sheet.ts +1021 -95
  37. package/dist/ui/components/bottom-sheet/index.ts +7 -1
  38. package/dist/ui/components/button/button.test.ts +36 -1
  39. package/dist/ui/components/button/button.ts +17 -7
  40. package/dist/ui/components/button-group/button-group.test.ts +53 -9
  41. package/dist/ui/components/button-group/button-group.ts +67 -21
  42. package/dist/ui/components/card/card.test.ts +16 -0
  43. package/dist/ui/components/card/card.ts +2 -1
  44. package/dist/ui/components/chart/chart-presets.ts +6 -6
  45. package/dist/ui/components/chart/chart.test.ts +14 -0
  46. package/dist/ui/components/chart/chart.ts +10 -3
  47. package/dist/ui/components/checkbox/checkbox.ts +2 -1
  48. package/dist/ui/components/collapsible/collapsible.ts +2 -1
  49. package/dist/ui/components/dialog/dialog.ts +6 -6
  50. package/dist/ui/components/dock/dock-scroll.ts +9 -0
  51. package/dist/ui/components/dock/dock-search.test.ts +594 -0
  52. package/dist/ui/components/dock/dock.test.ts +4 -1
  53. package/dist/ui/components/dock/dock.ts +529 -51
  54. package/dist/ui/components/dynamic-color/dynamic-color.test.ts +144 -0
  55. package/dist/ui/components/dynamic-color/dynamic-color.ts +146 -0
  56. package/dist/ui/components/dynamic-color/index.ts +5 -0
  57. package/dist/ui/components/glass/glass.test.ts +39 -1
  58. package/dist/ui/components/glass/glass.ts +87 -17
  59. package/dist/ui/components/glass/index.ts +1 -0
  60. package/dist/ui/components/icon/icon-theme.test.ts +28 -0
  61. package/dist/ui/components/icon/icon-theme.ts +38 -7
  62. package/dist/ui/components/input/input.ts +2 -1
  63. package/dist/ui/components/label/label.ts +8 -2
  64. package/dist/ui/components/line-chart/line-chart.ts +3 -2
  65. package/dist/ui/components/list/list.ts +5 -4
  66. package/dist/ui/components/menu/menu-popup.test.ts +18 -14
  67. package/dist/ui/components/menu/menu-popup.ts +24 -3
  68. package/dist/ui/components/menu/menu.test.ts +99 -5
  69. package/dist/ui/components/menu/menu.ts +74 -34
  70. package/dist/ui/components/nav-drawer/nav-drawer.ts +3 -2
  71. package/dist/ui/components/navigation-bar/index.ts +1 -0
  72. package/dist/ui/components/navigation-bar/navigation-bar.test.ts +425 -0
  73. package/dist/ui/components/navigation-bar/navigation-bar.ts +411 -0
  74. package/dist/ui/components/popover/index.ts +9 -0
  75. package/dist/ui/components/popover/popover-panel.test.ts +735 -0
  76. package/dist/ui/components/popover/popover-panel.ts +603 -0
  77. package/dist/ui/components/popover/popover.test.ts +286 -0
  78. package/dist/ui/components/popover/popover.ts +207 -0
  79. package/dist/ui/components/progress/progress.ts +2 -1
  80. package/dist/ui/components/radio-group/radio-group.ts +2 -1
  81. package/dist/ui/components/scroll-area/scroll-area.ts +4 -3
  82. package/dist/ui/components/search-field/index.ts +15 -0
  83. package/dist/ui/components/search-field/keyboard.test.ts +147 -0
  84. package/dist/ui/components/search-field/keyboard.ts +123 -0
  85. package/dist/ui/components/search-field/search-field.test.ts +549 -0
  86. package/dist/ui/components/search-field/search-field.ts +628 -0
  87. package/dist/ui/components/segmented-control/index.ts +8 -0
  88. package/dist/ui/components/segmented-control/segmented-control.test.ts +861 -0
  89. package/dist/ui/components/segmented-control/segmented-control.ts +884 -0
  90. package/dist/ui/components/select/select.ts +2 -1
  91. package/dist/ui/components/sheet/sheet.test.ts +90 -3
  92. package/dist/ui/components/sheet/sheet.ts +59 -4
  93. package/dist/ui/components/slider/index.ts +1 -0
  94. package/dist/ui/components/slider/slider.test.ts +695 -0
  95. package/dist/ui/components/slider/slider.ts +901 -0
  96. package/dist/ui/components/switch/index.ts +1 -1
  97. package/dist/ui/components/switch/switch.test.ts +464 -48
  98. package/dist/ui/components/switch/switch.ts +613 -43
  99. package/dist/ui/components/tabs/index.ts +7 -1
  100. package/dist/ui/components/tabs/tabs.test.ts +278 -2
  101. package/dist/ui/components/tabs/tabs.ts +233 -30
  102. package/dist/ui/components/textarea/textarea.ts +2 -1
  103. package/dist/ui/components/toggle/index.ts +1 -0
  104. package/dist/ui/components/toggle/toggle.test.ts +310 -4
  105. package/dist/ui/components/toggle/toggle.ts +241 -26
  106. package/dist/ui/components/toolbar/bar-scroll.test.ts +310 -0
  107. package/dist/ui/components/toolbar/bar-scroll.ts +372 -0
  108. package/dist/ui/components/toolbar/index.ts +12 -0
  109. package/dist/ui/components/toolbar/toolbar.test.ts +438 -0
  110. package/dist/ui/components/toolbar/toolbar.ts +535 -0
  111. package/dist/utils/analyze.d.ts +10 -5
  112. package/dist/utils/analyze.js +3 -2
  113. package/dist/utils/analyze.js.map +1 -1
  114. package/dist/utils/installed.d.ts +13 -1
  115. package/dist/utils/installed.js +17 -0
  116. package/dist/utils/installed.js.map +1 -1
  117. package/dist/utils/installed.test.js +39 -1
  118. package/dist/utils/installed.test.js.map +1 -1
  119. package/dist/utils/tailwind.d.ts +25 -5
  120. package/dist/utils/tailwind.js +53 -14
  121. package/dist/utils/tailwind.js.map +1 -1
  122. package/dist/utils/tailwind.test.js +85 -22
  123. package/dist/utils/tailwind.test.js.map +1 -1
  124. package/package.json +1 -1
@@ -19,7 +19,9 @@
19
19
  * A file the lockfile tracks that upstream no longer ships gets the same
20
20
  * statuses from `analyzeRemovedFile`, with "no file" as upstream's version:
21
21
  * taking it deletes the file and drops its lockfile entry, so an untouched
22
- * one goes as an auto-update and an edited one is a conflict.
22
+ * one goes as an auto-update and an edited one is a conflict. So does a theme
23
+ * file for the Tailwind version the app no longer uses, such as the Tailwind 3
24
+ * plugin of an app that moved to Tailwind 4.
23
25
  *
24
26
  * `--force` bypasses all prompts and overwrites every file with upstream,
25
27
  * which is destructive but useful for resetting to a clean baseline.
@@ -2,12 +2,12 @@ import * as p from '@clack/prompts';
2
2
  import { existsSync, mkdirSync, readFileSync, rmSync, writeFileSync, } from 'node:fs';
3
3
  import { resolve, join } from 'node:path';
4
4
  import pc from 'picocolors';
5
- import { themeFilesFor } from '../utils/tailwind.js';
5
+ import { themeFilesFor, usesTailwind4 } from '../utils/tailwind.js';
6
6
  import { configExists, readConfig } from '../config.js';
7
7
  import { resolveDependencies } from '../registry.js';
8
8
  import { getComponentFiles, getComponentSourceDir, getUiSourceDir, rewriteImports, } from '../utils/resolve-paths.js';
9
9
  import { formatContent } from '../utils/format.js';
10
- import { droppedFiles, trackedComponents, untrackedComponents, } from '../utils/installed.js';
10
+ import { droppedFiles, droppedThemeFiles, trackedComponents, untrackedComponents, } from '../utils/installed.js';
11
11
  import { isInteractive } from '../utils/interactive.js';
12
12
  import { copiesTests } from '../utils/packages.js';
13
13
  import { installComponentPackages } from './install-packages.js';
@@ -103,11 +103,11 @@ const reviewFile = async (componentName, analysis) => {
103
103
  const isNewFile = analysis.status === 'new-upstream';
104
104
  const isConflict = analysis.status === 'conflict';
105
105
  const isUserModified = analysis.status === 'user-modified';
106
- const isRemoved = analysis.removed === true;
106
+ const isRemoved = analysis.removed !== undefined;
107
107
  const suffix = isRemoved
108
108
  ? isConflict
109
- ? '— you modified it, and upstream no longer ships it'
110
- : '— upstream no longer ships it'
109
+ ? `— you modified it, and ${analysis.removed}`
110
+ : `— ${analysis.removed}`
111
111
  : isConflict
112
112
  ? '— how to resolve?'
113
113
  : isNewFile
@@ -207,6 +207,15 @@ const reviewFile = async (componentName, analysis) => {
207
207
  return { decision: choice };
208
208
  }
209
209
  };
210
+ /**
211
+ * The summary line for a file that taking upstream's version deletes, with
212
+ * the reason (see FileAnalysis.removed). An untouched one gets a minus, as a
213
+ * new file gets a plus: the auto-update arrow would read like an ordinary
214
+ * update.
215
+ */
216
+ const removalLine = (path, file) => file.status === 'conflict'
217
+ ? `${STATUS_ICONS.conflict} ${path} — ${pc.red(`${file.removed}, and you modified it`)}`
218
+ : `${pc.blue('−')} ${path} — ${pc.blue(`${file.removed} → delete`)}`;
210
219
  /**
211
220
  * Three-way merge update for installed components, modeled on the same flow
212
221
  * git/Mercurial use when applying upstream changes to a fork:
@@ -228,7 +237,9 @@ const reviewFile = async (componentName, analysis) => {
228
237
  * A file the lockfile tracks that upstream no longer ships gets the same
229
238
  * statuses from `analyzeRemovedFile`, with "no file" as upstream's version:
230
239
  * taking it deletes the file and drops its lockfile entry, so an untouched
231
- * one goes as an auto-update and an edited one is a conflict.
240
+ * one goes as an auto-update and an edited one is a conflict. So does a theme
241
+ * file for the Tailwind version the app no longer uses, such as the Tailwind 3
242
+ * plugin of an app that moved to Tailwind 4.
232
243
  *
233
244
  * `--force` bypasses all prompts and overwrites every file with upstream,
234
245
  * which is destructive but useful for resetting to a clean baseline.
@@ -321,7 +332,7 @@ export const updateCommand = async (options) => {
321
332
  status: analyzeRemovedFile(currentContent, lockedComponent[file].hash, hashContent),
322
333
  currentContent: currentContent ?? '',
323
334
  newContent: '',
324
- removed: true,
335
+ removed: 'upstream no longer ships it',
325
336
  });
326
337
  }
327
338
  componentAnalyses.push({ name, files: fileAnalyses });
@@ -352,6 +363,27 @@ export const updateCommand = async (options) => {
352
363
  newContent,
353
364
  });
354
365
  }
366
+ // Theme files dolan copied for the Tailwind version the app no longer
367
+ // uses: the plugin and its test after a move to Tailwind 4, or
368
+ // tailwind.css after a move back. As for a component's file upstream
369
+ // stopped shipping, taking upstream's version deletes them: quietly when
370
+ // nobody edited them, after asking when someone did.
371
+ const themeReason = `the app uses Tailwind ${usesTailwind4(cwd) ? 4 : 3}`;
372
+ for (const file of droppedThemeFiles(cwd, themeDir, lockfile)) {
373
+ const destPath = join(themeDir, file);
374
+ const currentContent = existsSync(destPath)
375
+ ? readFileSync(destPath, 'utf-8')
376
+ : null;
377
+ sharedAnalyses.push({
378
+ file: `theme/${file}`,
379
+ status: analyzeRemovedFile(currentContent,
380
+ // Tracked, so it has a base (see trackedThemeFiles).
381
+ themeBase(lockfile, file, currentContent), hashContent),
382
+ currentContent: currentContent ?? '',
383
+ newContent: '',
384
+ removed: themeReason,
385
+ });
386
+ }
355
387
  s.stop('Analysis complete.');
356
388
  installComponentPackages(cwd, installed);
357
389
  // --- Display summary ---
@@ -365,16 +397,18 @@ export const updateCommand = async (options) => {
365
397
  for (const file of comp.files) {
366
398
  if (!file.removed || file.status === 'up-to-date')
367
399
  continue;
368
- p.log.message(` ${STATUS_ICONS[file.status]} ${comp.name}/${file.file} — ${file.status === 'conflict'
369
- ? pc.red('upstream no longer ships it, and you modified it')
370
- : pc.blue('upstream no longer ships it → delete')}`);
400
+ p.log.message(` ${removalLine(`${comp.name}/${file.file}`, file)}`);
371
401
  }
372
402
  }
373
403
  }
374
- if (sharedAnalyses.length > 0) {
404
+ // A file to delete that's gone already has nothing left to show.
405
+ const sharedShown = sharedAnalyses.filter((file) => !(file.removed && file.status === 'up-to-date'));
406
+ if (sharedShown.length > 0) {
375
407
  p.log.message(pc.bold('\nShared files:'));
376
- for (const file of sharedAnalyses) {
377
- p.log.message(` ${STATUS_ICONS[file.status]} ${pc.bold(file.file)} — ${STATUS_LABELS[file.status]}`);
408
+ for (const file of sharedShown) {
409
+ p.log.message(` ${file.removed
410
+ ? removalLine(pc.bold(file.file), file)
411
+ : `${STATUS_ICONS[file.status]} ${pc.bold(file.file)} — ${STATUS_LABELS[file.status]}`}`);
378
412
  }
379
413
  }
380
414
  // Compute stats
@@ -495,6 +529,7 @@ export const updateCommand = async (options) => {
495
529
  applySpinner.start('Applying updates...');
496
530
  let appliedCount = 0;
497
531
  let deletedCount = 0;
532
+ let deletedThemeCount = 0;
498
533
  let skippedCount = 0;
499
534
  const newLockfile = getOrCreateLockfile(cwd);
500
535
  for (const comp of componentAnalyses) {
@@ -640,6 +675,29 @@ export const updateCommand = async (options) => {
640
675
  (options.force || sharedResolution === 'upstream')) ||
641
676
  (file.status === 'conflict' &&
642
677
  (options.force || sharedResolution === 'upstream')));
678
+ /* v8 ignore stop */
679
+ // A theme file for the Tailwind version the app doesn't use, by the same
680
+ // rules as a component's file upstream stopped shipping.
681
+ if (file.removed) {
682
+ // "Skip for now" leaves the file and any lockfile entry, so the next
683
+ // update asks again.
684
+ if (selectivelySkippedShared) {
685
+ skippedCount++;
686
+ continue;
687
+ }
688
+ if (shouldOverwrite) {
689
+ rmSync(destPath, { force: true });
690
+ deletedThemeCount++;
691
+ }
692
+ else if (file.status === 'conflict') {
693
+ // Kept: it's the app's own file now.
694
+ skippedCount++;
695
+ }
696
+ // Deleted, kept as the app's, or already gone: dolan stops tracking it.
697
+ delete newLockfile.theme[fileName];
698
+ continue;
699
+ }
700
+ /* v8 ignore start */
643
701
  const entry = { hash: hashContent(file.newContent) };
644
702
  if (sharedResolution === 'partial') {
645
703
  const content = partialContents.get(file.file);
@@ -677,6 +735,9 @@ export const updateCommand = async (options) => {
677
735
  if (deletedCount > 0) {
678
736
  p.log.success(`${pc.bold(String(deletedCount))} file(s) deleted: upstream no longer ships them.`);
679
737
  }
738
+ if (deletedThemeCount > 0) {
739
+ p.log.success(`${pc.bold(String(deletedThemeCount))} theme file(s) deleted: ${themeReason}.`);
740
+ }
680
741
  if (skippedCount > 0 && isSelective) {
681
742
  p.log.info(`${pc.bold(String(skippedCount))} file(s) skipped — they'll appear again on next update.`);
682
743
  }
@@ -709,8 +770,10 @@ const buildLockfile = (components, shared, existing) => {
709
770
  }
710
771
  for (const file of shared) {
711
772
  const fileName = file.file.split('/').pop();
712
- const entry = { hash: hashContent(file.newContent) };
713
- lockfile.theme[fileName] = entry;
773
+ if (file.removed)
774
+ delete lockfile.theme[fileName];
775
+ else
776
+ lockfile.theme[fileName] = { hash: hashContent(file.newContent) };
714
777
  }
715
778
  return lockfile;
716
779
  };
@@ -1 +1 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
2
- import { readFileSync, writeFileSync, existsSync, readdirSync } from 'node:fs';
2
+ import { readFileSync, writeFileSync, existsSync, readdirSync, rmSync, } from 'node:fs';
3
3
  import { join } from 'node:path';
4
- import { createFixture, DEFAULT_CONFIG, shippedTheme, } from '../test-utils';
4
+ import { stripVTControlCharacters } from 'node:util';
5
+ import { createFixture, DEFAULT_CONFIG, onTailwind, shippedTheme, } from '../test-utils';
5
6
  import { hashContent } from '../lockfile';
6
7
  const spinnerMock = { start: vi.fn(), stop: vi.fn() };
7
8
  vi.mock('@clack/prompts', () => ({
@@ -1274,6 +1275,7 @@ describe('updateCommand dependencies', () => {
1274
1275
  uiSource: {
1275
1276
  'line-chart': { 'line-chart.ts': lineChart },
1276
1277
  chart: { 'chart.ts': 'export const UiChart = {};' },
1278
+ icon: { 'icon.ts': 'export const UiIcon = {};' },
1277
1279
  },
1278
1280
  });
1279
1281
  vi.spyOn(process, 'cwd').mockReturnValue(fixture.dir);
@@ -1283,6 +1285,7 @@ describe('updateCommand dependencies', () => {
1283
1285
  expect(readInstalledFile(fixture.dir, 'line-chart', 'line-chart.ts')).toBe(lineChart);
1284
1286
  expect(installComponentPackages).toHaveBeenCalledWith(fixture.dir, [
1285
1287
  'chart',
1288
+ 'icon',
1286
1289
  'line-chart',
1287
1290
  ]);
1288
1291
  });
@@ -1302,6 +1305,7 @@ describe('updateCommand dependencies', () => {
1302
1305
  uiSource: {
1303
1306
  'line-chart': { 'line-chart.ts': lineChart },
1304
1307
  chart: { 'chart.ts': 'export const UiChart = {};' },
1308
+ icon: { 'icon.ts': 'export const UiIcon = {};' },
1305
1309
  },
1306
1310
  });
1307
1311
  vi.spyOn(process, 'cwd').mockReturnValue(fixture.dir);
@@ -1371,6 +1375,9 @@ describe('updateCommand — ejected components', () => {
1371
1375
  uiSource: {
1372
1376
  select: { 'select.ts': select },
1373
1377
  'bottom-sheet': { 'bottom-sheet.ts': 'export const BottomSheet = {};' },
1378
+ // What bottom-sheet's glass variant draws with.
1379
+ glass: { 'glass.ts': 'export const Glass = {};' },
1380
+ icon: { 'icon.ts': 'export const Icon = {};' },
1374
1381
  },
1375
1382
  });
1376
1383
  vi.spyOn(process, 'cwd').mockReturnValue(fixture.dir);
@@ -1784,4 +1791,252 @@ describe('updateCommand — files upstream no longer ships', () => {
1784
1791
  expect(lockedCard()['card.test.ts']).toEqual({ hash: hashContent(test) });
1785
1792
  });
1786
1793
  });
1794
+ // An app that moved from Tailwind 3 to Tailwind 4 kept the plugin and its
1795
+ // test: `update` only looked at the theme files the app takes now, so
1796
+ // nothing offered to delete them, though nothing imports the plugin and the
1797
+ // app's coverage counted it.
1798
+ describe('updateCommand — theme files for the Tailwind version the app left', () => {
1799
+ const theme = {
1800
+ 'default.css': ':root { --primary: rgba(1, 1, 1, 1); }',
1801
+ 'dark.css': 'page.dark { --primary: rgba(2, 2, 2, 1); }',
1802
+ 'tailwind.css': '@theme inline { --color-primary: var(--primary); }',
1803
+ 'tailwind-plugin.ts': 'export const blotchPlugin = {};',
1804
+ 'tailwind-plugin.test.ts': "import { blotchPlugin } from './tailwind-plugin';",
1805
+ };
1806
+ const PLUGIN = 'tailwind-plugin.ts';
1807
+ const PLUGIN_TEST = 'tailwind-plugin.test.ts';
1808
+ const edited = `${theme[PLUGIN]}\n// mine\n`;
1809
+ const themePath = (file) => join(fixture.dir, DEFAULT_CONFIG.aliases.theme, file);
1810
+ const recorded = (files) => Object.fromEntries(files.map((file) => [file, { hash: hashContent(theme[file]) }]));
1811
+ /**
1812
+ * An app `init` set up on Tailwind 3 with the testing library, now on
1813
+ * `tailwind` (4 unless it says otherwise). Dolan's theme ships every file.
1814
+ * `locked` are the theme files the lockfile records and the folder has as
1815
+ * copied, and `onDisk` overrides what the folder has: a string replaces a
1816
+ * file, and null deletes it.
1817
+ */
1818
+ const setup = ({ tailwind = 4, locked = ['default.css', 'dark.css', PLUGIN, PLUGIN_TEST], onDisk = {}, } = {}) => {
1819
+ fixture = createFixture({
1820
+ config: DEFAULT_CONFIG,
1821
+ lockfile: { version: 1, components: {}, theme: recorded(locked) },
1822
+ themeFiles: theme,
1823
+ });
1824
+ onTailwind(fixture.dir, tailwind, { testing: true });
1825
+ for (const file of locked)
1826
+ writeFileSync(themePath(file), theme[file]);
1827
+ for (const [file, content] of Object.entries(onDisk)) {
1828
+ if (content === null)
1829
+ rmSync(themePath(file));
1830
+ else
1831
+ writeFileSync(themePath(file), content);
1832
+ }
1833
+ vi.spyOn(process, 'cwd').mockReturnValue(fixture.dir);
1834
+ };
1835
+ const lockedTheme = () => readLockfile(fixture.dir).theme;
1836
+ /**
1837
+ * What a log function was called with, colors stripped.
1838
+ */
1839
+ const logged = (log) => log.mock.calls
1840
+ .map(([message]) => stripVTControlCharacters(message))
1841
+ .join('\n');
1842
+ beforeEach(async () => {
1843
+ // A reset drops answers an earlier test queued and never used.
1844
+ const p = await import('@clack/prompts');
1845
+ p.select
1846
+ .mockReset()
1847
+ .mockResolvedValue('upstream');
1848
+ });
1849
+ it('deletes the plugin and its test nobody edited, with their lockfile entries, after the usual question', async () => {
1850
+ setup();
1851
+ const p = await import('@clack/prompts');
1852
+ const { updateCommand } = await import('./update');
1853
+ await updateCommand({});
1854
+ expect(p.confirm).toHaveBeenCalledWith(expect.objectContaining({ message: 'Apply 3 auto-update(s)?' }));
1855
+ expect(p.select).not.toHaveBeenCalled();
1856
+ expect(logged(p.log.message)).toContain([
1857
+ 'Shared files:',
1858
+ ' ✓ theme/default.css — up to date',
1859
+ ' ✓ theme/dark.css — up to date',
1860
+ ' + theme/tailwind.css — new file from upstream',
1861
+ ' − theme/tailwind-plugin.ts — the app uses Tailwind 4 → delete',
1862
+ ' − theme/tailwind-plugin.test.ts — the app uses Tailwind 4 → delete',
1863
+ ].join('\n'));
1864
+ expect(existsSync(themePath(PLUGIN))).toBe(false);
1865
+ expect(existsSync(themePath(PLUGIN_TEST))).toBe(false);
1866
+ expect(readFileSync(themePath('tailwind.css'), 'utf-8')).toBe(theme['tailwind.css']);
1867
+ expect(lockedTheme()).toEqual(recorded(['default.css', 'dark.css', 'tailwind.css']));
1868
+ expect(logged(p.log.success)).toContain('2 theme file(s) deleted: the app uses Tailwind 4.');
1869
+ });
1870
+ it('deletes them without a terminal too', async () => {
1871
+ interactive = false;
1872
+ setup();
1873
+ const p = await import('@clack/prompts');
1874
+ const { updateCommand } = await import('./update');
1875
+ await updateCommand({});
1876
+ expect(p.confirm).not.toHaveBeenCalled();
1877
+ expect(existsSync(themePath(PLUGIN))).toBe(false);
1878
+ expect(lockedTheme()).not.toHaveProperty(PLUGIN);
1879
+ expect(p.outro).toHaveBeenCalledWith('Update complete.');
1880
+ });
1881
+ it('asks before deleting a plugin you edited, and deletes it when told to', async () => {
1882
+ setup({ onDisk: { [PLUGIN]: edited } });
1883
+ const p = await import('@clack/prompts');
1884
+ const { updateCommand } = await import('./update');
1885
+ await updateCommand({});
1886
+ expect(logged(p.log.message)).toContain(' ⚠ theme/tailwind-plugin.ts — the app uses Tailwind 4, and you modified it');
1887
+ expect(p.select).toHaveBeenCalledTimes(1);
1888
+ const [{ message, options }] = p.select.mock
1889
+ .calls[0];
1890
+ expect(stripVTControlCharacters(message)).toBe('shared/theme/tailwind-plugin.ts — you modified it, and the app uses Tailwind 4');
1891
+ // A deletion is all or nothing, so there are no hunks to review.
1892
+ expect(options.map(({ value }) => value)).toEqual([
1893
+ 'diff',
1894
+ 'keep',
1895
+ 'upstream',
1896
+ ]);
1897
+ expect(existsSync(themePath(PLUGIN))).toBe(false);
1898
+ expect(existsSync(themePath(PLUGIN_TEST))).toBe(false);
1899
+ expect(lockedTheme()).not.toHaveProperty(PLUGIN);
1900
+ });
1901
+ it('keeps a plugin you edited when told to, as your own file from then on', async () => {
1902
+ setup({ onDisk: { [PLUGIN]: edited } });
1903
+ const p = await import('@clack/prompts');
1904
+ p.select.mockResolvedValueOnce('keep');
1905
+ const { updateCommand } = await import('./update');
1906
+ await updateCommand({});
1907
+ expect(readFileSync(themePath(PLUGIN), 'utf-8')).toBe(edited);
1908
+ expect(lockedTheme()).not.toHaveProperty(PLUGIN);
1909
+ expect(logged(p.log.info)).toContain('1 file(s) kept as-is.');
1910
+ vi.clearAllMocks();
1911
+ await updateCommand({});
1912
+ expect(p.select).not.toHaveBeenCalled();
1913
+ expect(readFileSync(themePath(PLUGIN), 'utf-8')).toBe(edited);
1914
+ });
1915
+ it('leaves a plugin you edited for a terminal to ask about without one, and exits 1', async () => {
1916
+ interactive = false;
1917
+ setup({ onDisk: { [PLUGIN]: edited } });
1918
+ const p = await import('@clack/prompts');
1919
+ const { updateCommand } = await import('./update');
1920
+ await expect(updateCommand({})).rejects.toThrow('process.exit(1)');
1921
+ expect(p.select).not.toHaveBeenCalled();
1922
+ expect(logged(p.log.warn)).toContain('1 conflict(s) left as they are');
1923
+ expect(readFileSync(themePath(PLUGIN), 'utf-8')).toBe(edited);
1924
+ expect(lockedTheme()[PLUGIN]).toEqual({
1925
+ hash: hashContent(theme[PLUGIN]),
1926
+ });
1927
+ // The test nobody edited goes anyway, as auto-updates do.
1928
+ expect(existsSync(themePath(PLUGIN_TEST))).toBe(false);
1929
+ });
1930
+ it('deletes a plugin you edited with --force', async () => {
1931
+ interactive = false;
1932
+ setup({ onDisk: { [PLUGIN]: edited } });
1933
+ const { updateCommand } = await import('./update');
1934
+ await updateCommand({ force: true });
1935
+ expect(existsSync(themePath(PLUGIN))).toBe(false);
1936
+ expect(lockedTheme()).not.toHaveProperty(PLUGIN);
1937
+ });
1938
+ describe('with --selective', () => {
1939
+ it('asks about each deletion, and "Skip for now" keeps the file and its entry', async () => {
1940
+ setup();
1941
+ const p = await import('@clack/prompts');
1942
+ p.select.mockResolvedValue('keep');
1943
+ const { updateCommand } = await import('./update');
1944
+ await updateCommand({ selective: true });
1945
+ const messages = p.select.mock.calls.map(([{ message }]) => stripVTControlCharacters(message));
1946
+ expect(messages).toEqual([
1947
+ 'shared/theme/tailwind.css — new file from upstream',
1948
+ 'shared/theme/tailwind-plugin.ts — the app uses Tailwind 4',
1949
+ 'shared/theme/tailwind-plugin.test.ts — the app uses Tailwind 4',
1950
+ ]);
1951
+ expect(readFileSync(themePath(PLUGIN), 'utf-8')).toBe(theme[PLUGIN]);
1952
+ expect(lockedTheme()).toEqual(recorded(['default.css', 'dark.css', PLUGIN, PLUGIN_TEST]));
1953
+ expect(logged(p.log.info)).toContain('3 file(s) skipped');
1954
+ });
1955
+ it('deletes them when accepted', async () => {
1956
+ setup();
1957
+ const { updateCommand } = await import('./update');
1958
+ await updateCommand({ selective: true });
1959
+ expect(existsSync(themePath(PLUGIN))).toBe(false);
1960
+ expect(existsSync(themePath(PLUGIN_TEST))).toBe(false);
1961
+ expect(lockedTheme()).toEqual(recorded(['default.css', 'dark.css', 'tailwind.css']));
1962
+ });
1963
+ });
1964
+ describe('already deleted by hand', () => {
1965
+ it('drops their entries when nothing else changed', async () => {
1966
+ setup({
1967
+ locked: [
1968
+ 'default.css',
1969
+ 'dark.css',
1970
+ 'tailwind.css',
1971
+ PLUGIN,
1972
+ PLUGIN_TEST,
1973
+ ],
1974
+ onDisk: { [PLUGIN]: null, [PLUGIN_TEST]: null },
1975
+ });
1976
+ const p = await import('@clack/prompts');
1977
+ const { updateCommand } = await import('./update');
1978
+ await updateCommand({});
1979
+ expect(p.confirm).not.toHaveBeenCalled();
1980
+ expect(logged(p.log.message)).not.toContain(PLUGIN);
1981
+ expect(p.outro).toHaveBeenCalledWith('Everything is up to date.');
1982
+ expect(lockedTheme()).toEqual(recorded(['default.css', 'dark.css', 'tailwind.css']));
1983
+ });
1984
+ it('drops their entries alongside an update', async () => {
1985
+ setup({ onDisk: { [PLUGIN]: null, [PLUGIN_TEST]: null } });
1986
+ const p = await import('@clack/prompts');
1987
+ const { updateCommand } = await import('./update');
1988
+ await updateCommand({});
1989
+ expect(p.confirm).toHaveBeenCalledWith(expect.objectContaining({ message: 'Apply 1 auto-update(s)?' }));
1990
+ expect(logged(p.log.success)).not.toContain('deleted');
1991
+ expect(lockedTheme()).toEqual(recorded(['default.css', 'dark.css', 'tailwind.css']));
1992
+ });
1993
+ });
1994
+ it('deletes tailwind.css after a move back to Tailwind 3, and brings the plugin back', async () => {
1995
+ setup({ tailwind: 3, locked: ['default.css', 'dark.css', 'tailwind.css'] });
1996
+ const p = await import('@clack/prompts');
1997
+ const { updateCommand } = await import('./update');
1998
+ await updateCommand({});
1999
+ expect(logged(p.log.message)).toContain(' − theme/tailwind.css — the app uses Tailwind 3 → delete');
2000
+ expect(existsSync(themePath('tailwind.css'))).toBe(false);
2001
+ expect(readFileSync(themePath(PLUGIN), 'utf-8')).toBe(theme[PLUGIN]);
2002
+ expect(lockedTheme()).toEqual(recorded(['default.css', 'dark.css', PLUGIN, PLUGIN_TEST]));
2003
+ expect(logged(p.log.success)).toContain('1 theme file(s) deleted: the app uses Tailwind 3.');
2004
+ });
2005
+ it("keeps the plugin's test that a project without the testing library doesn't get", async () => {
2006
+ // Upstream still ships it to a Tailwind 3 app, as it does a component's
2007
+ // tests, so it isn't deleted for want of the library.
2008
+ setup({ tailwind: 3 });
2009
+ onTailwind(fixture.dir, 3);
2010
+ const { updateCommand } = await import('./update');
2011
+ await updateCommand({});
2012
+ expect(readFileSync(themePath(PLUGIN_TEST), 'utf-8')).toBe(theme[PLUGIN_TEST]);
2013
+ expect(lockedTheme()[PLUGIN_TEST]).toEqual({
2014
+ hash: hashContent(theme[PLUGIN_TEST]),
2015
+ });
2016
+ });
2017
+ // Tailwind 3 apps were mostly set up by a release whose `init` recorded no
2018
+ // theme hashes, so their plugin isn't in the lockfile.
2019
+ describe('copied by an older init', () => {
2020
+ it('deletes an untouched copy', async () => {
2021
+ setup({
2022
+ locked: [],
2023
+ onDisk: { [PLUGIN]: shippedTheme('tailwind-plugin.ts') },
2024
+ });
2025
+ const { updateCommand } = await import('./update');
2026
+ await updateCommand({});
2027
+ expect(existsSync(themePath(PLUGIN))).toBe(false);
2028
+ expect(lockedTheme()).toEqual(recorded(['default.css', 'dark.css', 'tailwind.css']));
2029
+ });
2030
+ it('leaves an edited copy alone, since nothing says it was dolan’s', async () => {
2031
+ const mine = `${shippedTheme('tailwind-plugin.ts')}\n// mine\n`;
2032
+ setup({ locked: [], onDisk: { [PLUGIN]: mine } });
2033
+ const p = await import('@clack/prompts');
2034
+ const { updateCommand } = await import('./update');
2035
+ await updateCommand({});
2036
+ expect(p.select).not.toHaveBeenCalled();
2037
+ expect(logged(p.log.message)).not.toContain(PLUGIN);
2038
+ expect(readFileSync(themePath(PLUGIN), 'utf-8')).toBe(mine);
2039
+ });
2040
+ });
2041
+ });
1787
2042
  //# sourceMappingURL=update.test.js.map