@blotch/dolan 22.2.4 → 22.2.5
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/commands/add.test.js +2 -0
- package/dist/commands/add.test.js.map +1 -1
- package/dist/commands/doctor.js +78 -21
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/doctor.test.js +167 -26
- package/dist/commands/doctor.test.js.map +1 -1
- package/dist/commands/init.test.js +4 -7
- package/dist/commands/init.test.js.map +1 -1
- package/dist/commands/update.d.ts +3 -1
- package/dist/commands/update.js +78 -15
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/update.test.js +257 -2
- package/dist/commands/update.test.js.map +1 -1
- package/dist/lockfile.d.ts +10 -0
- package/dist/lockfile.js +20 -1
- package/dist/lockfile.js.map +1 -1
- package/dist/lockfile.test.js +43 -3
- package/dist/lockfile.test.js.map +1 -1
- package/dist/registry.js +73 -11
- package/dist/registry.js.map +1 -1
- package/dist/registry.test.js +16 -3
- package/dist/registry.test.js.map +1 -1
- package/dist/test-utils.d.ts +24 -2
- package/dist/test-utils.js +41 -2
- package/dist/test-utils.js.map +1 -1
- package/dist/ui/boolean-inputs.test.ts +76 -0
- package/dist/ui/components/action-sheet/action-sheet.test.ts +370 -1
- package/dist/ui/components/action-sheet/action-sheet.ts +306 -28
- package/dist/ui/components/action-sheet/index.ts +1 -0
- package/dist/ui/components/alert-dialog/alert-dialog.test.ts +552 -8
- package/dist/ui/components/alert-dialog/alert-dialog.ts +644 -36
- package/dist/ui/components/alert-dialog/index.ts +5 -0
- package/dist/ui/components/area-chart/area-chart.ts +3 -2
- package/dist/ui/components/badge/badge.ts +2 -1
- package/dist/ui/components/bottom-sheet/bottom-sheet.test.ts +968 -3
- package/dist/ui/components/bottom-sheet/bottom-sheet.ts +1021 -95
- package/dist/ui/components/bottom-sheet/index.ts +7 -1
- package/dist/ui/components/button/button.test.ts +36 -1
- package/dist/ui/components/button/button.ts +17 -7
- package/dist/ui/components/button-group/button-group.test.ts +53 -9
- package/dist/ui/components/button-group/button-group.ts +67 -21
- package/dist/ui/components/card/card.test.ts +16 -0
- package/dist/ui/components/card/card.ts +2 -1
- package/dist/ui/components/chart/chart-presets.ts +6 -6
- package/dist/ui/components/chart/chart.test.ts +14 -0
- package/dist/ui/components/chart/chart.ts +10 -3
- package/dist/ui/components/checkbox/checkbox.ts +2 -1
- package/dist/ui/components/collapsible/collapsible.ts +2 -1
- package/dist/ui/components/dialog/dialog.ts +6 -6
- package/dist/ui/components/dock/dock-scroll.ts +9 -0
- package/dist/ui/components/dock/dock-search.test.ts +594 -0
- package/dist/ui/components/dock/dock.test.ts +4 -1
- package/dist/ui/components/dock/dock.ts +529 -51
- package/dist/ui/components/dynamic-color/dynamic-color.test.ts +144 -0
- package/dist/ui/components/dynamic-color/dynamic-color.ts +146 -0
- package/dist/ui/components/dynamic-color/index.ts +5 -0
- package/dist/ui/components/glass/glass.test.ts +39 -1
- package/dist/ui/components/glass/glass.ts +87 -17
- package/dist/ui/components/glass/index.ts +1 -0
- package/dist/ui/components/icon/icon-theme.test.ts +28 -0
- package/dist/ui/components/icon/icon-theme.ts +38 -7
- package/dist/ui/components/input/input.ts +2 -1
- package/dist/ui/components/label/label.ts +8 -2
- package/dist/ui/components/line-chart/line-chart.ts +3 -2
- package/dist/ui/components/list/list.ts +5 -4
- package/dist/ui/components/menu/menu-popup.test.ts +18 -14
- package/dist/ui/components/menu/menu-popup.ts +24 -3
- package/dist/ui/components/menu/menu.test.ts +99 -5
- package/dist/ui/components/menu/menu.ts +74 -34
- package/dist/ui/components/nav-drawer/nav-drawer.ts +3 -2
- package/dist/ui/components/navigation-bar/index.ts +1 -0
- package/dist/ui/components/navigation-bar/navigation-bar.test.ts +425 -0
- package/dist/ui/components/navigation-bar/navigation-bar.ts +411 -0
- package/dist/ui/components/popover/index.ts +9 -0
- package/dist/ui/components/popover/popover-panel.test.ts +735 -0
- package/dist/ui/components/popover/popover-panel.ts +603 -0
- package/dist/ui/components/popover/popover.test.ts +286 -0
- package/dist/ui/components/popover/popover.ts +207 -0
- package/dist/ui/components/progress/progress.ts +2 -1
- package/dist/ui/components/radio-group/radio-group.ts +2 -1
- package/dist/ui/components/scroll-area/scroll-area.ts +4 -3
- package/dist/ui/components/search-field/index.ts +15 -0
- package/dist/ui/components/search-field/keyboard.test.ts +147 -0
- package/dist/ui/components/search-field/keyboard.ts +123 -0
- package/dist/ui/components/search-field/search-field.test.ts +549 -0
- package/dist/ui/components/search-field/search-field.ts +628 -0
- package/dist/ui/components/segmented-control/index.ts +8 -0
- package/dist/ui/components/segmented-control/segmented-control.test.ts +861 -0
- package/dist/ui/components/segmented-control/segmented-control.ts +884 -0
- package/dist/ui/components/select/select.ts +2 -1
- package/dist/ui/components/sheet/sheet.test.ts +90 -3
- package/dist/ui/components/sheet/sheet.ts +59 -4
- package/dist/ui/components/slider/index.ts +1 -0
- package/dist/ui/components/slider/slider.test.ts +695 -0
- package/dist/ui/components/slider/slider.ts +901 -0
- package/dist/ui/components/switch/index.ts +1 -1
- package/dist/ui/components/switch/switch.test.ts +464 -48
- package/dist/ui/components/switch/switch.ts +613 -43
- package/dist/ui/components/tabs/index.ts +7 -1
- package/dist/ui/components/tabs/tabs.test.ts +278 -2
- package/dist/ui/components/tabs/tabs.ts +233 -30
- package/dist/ui/components/textarea/textarea.ts +2 -1
- package/dist/ui/components/toggle/index.ts +1 -0
- package/dist/ui/components/toggle/toggle.test.ts +310 -4
- package/dist/ui/components/toggle/toggle.ts +241 -26
- package/dist/ui/components/toolbar/bar-scroll.test.ts +310 -0
- package/dist/ui/components/toolbar/bar-scroll.ts +372 -0
- package/dist/ui/components/toolbar/index.ts +12 -0
- package/dist/ui/components/toolbar/toolbar.test.ts +438 -0
- package/dist/ui/components/toolbar/toolbar.ts +535 -0
- package/dist/utils/analyze.d.ts +10 -5
- package/dist/utils/analyze.js +3 -2
- package/dist/utils/analyze.js.map +1 -1
- package/dist/utils/installed.d.ts +13 -1
- package/dist/utils/installed.js +17 -0
- package/dist/utils/installed.js.map +1 -1
- package/dist/utils/installed.test.js +39 -1
- package/dist/utils/installed.test.js.map +1 -1
- package/dist/utils/tailwind.d.ts +25 -5
- package/dist/utils/tailwind.js +53 -14
- package/dist/utils/tailwind.js.map +1 -1
- package/dist/utils/tailwind.test.js +85 -22
- package/dist/utils/tailwind.test.js.map +1 -1
- 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.
|
package/dist/commands/update.js
CHANGED
|
@@ -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
|
|
106
|
+
const isRemoved = analysis.removed !== undefined;
|
|
107
107
|
const suffix = isRemoved
|
|
108
108
|
? isConflict
|
|
109
|
-
?
|
|
110
|
-
:
|
|
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:
|
|
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(` ${
|
|
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
|
-
|
|
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
|
|
377
|
-
p.log.message(` ${
|
|
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
|
-
|
|
713
|
-
|
|
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 {
|
|
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
|