@blotch/dolan 22.2.2 → 22.2.4
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.d.ts +6 -2
- package/dist/commands/add.js +41 -11
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/add.test.js +162 -9
- package/dist/commands/add.test.js.map +1 -1
- package/dist/commands/diff.d.ts +2 -1
- package/dist/commands/diff.js +38 -25
- package/dist/commands/diff.js.map +1 -1
- package/dist/commands/diff.test.js +72 -11
- package/dist/commands/diff.test.js.map +1 -1
- package/dist/commands/doctor.js +228 -34
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/doctor.test.js +367 -10
- package/dist/commands/doctor.test.js.map +1 -1
- package/dist/commands/eject.js +7 -0
- package/dist/commands/eject.js.map +1 -1
- package/dist/commands/eject.test.js +39 -0
- package/dist/commands/eject.test.js.map +1 -1
- package/dist/commands/info.js +3 -2
- package/dist/commands/info.js.map +1 -1
- package/dist/commands/init.d.ts +37 -1
- package/dist/commands/init.js +169 -40
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/init.test.js +392 -27
- package/dist/commands/init.test.js.map +1 -1
- package/dist/commands/install-packages.d.ts +6 -0
- package/dist/commands/install-packages.js +20 -0
- package/dist/commands/install-packages.js.map +1 -0
- package/dist/commands/install-packages.test.d.ts +1 -0
- package/dist/commands/install-packages.test.js +55 -0
- package/dist/commands/install-packages.test.js.map +1 -0
- package/dist/commands/list.js +21 -14
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/list.test.js +62 -5
- package/dist/commands/list.test.js.map +1 -1
- package/dist/commands/outdated.js +11 -10
- package/dist/commands/outdated.js.map +1 -1
- package/dist/commands/outdated.test.js +20 -5
- package/dist/commands/outdated.test.js.map +1 -1
- package/dist/commands/remove.d.ts +4 -0
- package/dist/commands/remove.js +17 -4
- package/dist/commands/remove.js.map +1 -1
- package/dist/commands/remove.test.js +53 -2
- package/dist/commands/remove.test.js.map +1 -1
- package/dist/commands/theme.js +1 -1
- package/dist/commands/theme.js.map +1 -1
- package/dist/commands/update.d.ts +11 -0
- package/dist/commands/update.js +174 -58
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/update.test.js +587 -33
- package/dist/commands/update.test.js.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/lockfile.d.ts +7 -0
- package/dist/lockfile.js +36 -0
- package/dist/lockfile.js.map +1 -1
- package/dist/lockfile.test.d.ts +1 -0
- package/dist/lockfile.test.js +25 -0
- package/dist/lockfile.test.js.map +1 -0
- package/dist/registry.d.ts +14 -0
- package/dist/registry.js +78 -24
- package/dist/registry.js.map +1 -1
- package/dist/registry.test.js +119 -38
- package/dist/registry.test.js.map +1 -1
- package/dist/test-utils.d.ts +5 -0
- package/dist/test-utils.js +6 -1
- package/dist/test-utils.js.map +1 -1
- package/dist/testing/fire-lynx-event.d.ts +14 -0
- package/dist/testing/fire-lynx-event.js +19 -0
- package/dist/testing/fire-lynx-event.js.map +1 -0
- package/dist/testing/fire-lynx-event.test.d.ts +1 -0
- package/dist/testing/fire-lynx-event.test.js +44 -0
- package/dist/testing/fire-lynx-event.test.js.map +1 -0
- package/dist/testing/lynx-main-thread.d.ts +22 -0
- package/dist/testing/lynx-main-thread.js +11 -0
- package/dist/testing/lynx-main-thread.js.map +1 -0
- package/dist/testing/lynx-main-thread.test.d.ts +1 -0
- package/dist/testing/lynx-main-thread.test.js +24 -0
- package/dist/testing/lynx-main-thread.test.js.map +1 -0
- package/dist/testing/set-input-signal.d.ts +14 -0
- package/dist/testing/set-input-signal.js +21 -0
- package/dist/testing/set-input-signal.js.map +1 -0
- package/dist/testing/set-input-signal.test.d.ts +1 -0
- package/dist/testing/set-input-signal.test.js +20 -0
- package/dist/testing/set-input-signal.test.js.map +1 -0
- package/dist/ui/components/accordion/accordion.test.ts +158 -144
- package/dist/ui/components/accordion/accordion.ts +19 -14
- package/dist/ui/components/action-sheet/action-sheet.test.ts +283 -151
- package/dist/ui/components/action-sheet/action-sheet.ts +77 -43
- package/dist/ui/components/alert/alert.test.ts +67 -19
- package/dist/ui/components/alert/alert.ts +14 -16
- package/dist/ui/components/alert-dialog/alert-dialog.test.ts +208 -94
- package/dist/ui/components/alert-dialog/alert-dialog.ts +75 -38
- package/dist/ui/components/area-chart/area-chart.test.ts +134 -119
- package/dist/ui/components/area-chart/area-chart.ts +100 -315
- package/dist/ui/components/area-chart/index.ts +2 -3
- package/dist/ui/components/avatar/avatar.test.ts +89 -45
- package/dist/ui/components/badge/badge.test.ts +57 -23
- package/dist/ui/components/badge/badge.ts +12 -14
- package/dist/ui/components/bar-chart/bar-chart.test.ts +172 -45
- package/dist/ui/components/bar-chart/bar-chart.ts +140 -294
- package/dist/ui/components/bar-chart/index.ts +3 -3
- package/dist/ui/components/bottom-sheet/bottom-sheet.test.ts +386 -128
- package/dist/ui/components/bottom-sheet/bottom-sheet.ts +170 -53
- package/dist/ui/components/button/button.test.ts +611 -2
- package/dist/ui/components/button/button.ts +434 -49
- package/dist/ui/components/button/index.ts +2 -0
- package/dist/ui/components/button-group/button-group.test.ts +484 -2
- package/dist/ui/components/button-group/button-group.ts +380 -68
- package/dist/ui/components/button-group/index.ts +3 -0
- package/dist/ui/components/candlestick-chart/candlestick-chart.test.ts +183 -58
- package/dist/ui/components/candlestick-chart/candlestick-chart.ts +150 -323
- package/dist/ui/components/candlestick-chart/index.ts +3 -4
- package/dist/ui/components/card/card.test.ts +82 -62
- package/dist/ui/components/chart/chart-focus.test.ts +132 -0
- package/dist/ui/components/chart/chart-focus.ts +115 -0
- package/dist/ui/components/chart/chart-presets.test.ts +335 -0
- package/dist/ui/components/chart/chart-presets.ts +278 -0
- package/dist/ui/components/chart/chart-scene.test.ts +589 -0
- package/dist/ui/components/chart/chart-scene.ts +483 -0
- package/dist/ui/components/chart/chart-theme.test.ts +85 -0
- package/dist/ui/components/chart/chart-theme.ts +210 -0
- package/dist/ui/components/chart/chart-zoom.test.ts +159 -0
- package/dist/ui/components/chart/chart-zoom.ts +162 -0
- package/dist/ui/components/chart/chart.test.ts +1017 -0
- package/dist/ui/components/chart/chart.ts +934 -0
- package/dist/ui/components/chart/index.ts +24 -0
- package/dist/ui/components/checkbox/checkbox.test.ts +124 -42
- package/dist/ui/components/checkbox/checkbox.ts +23 -23
- package/dist/ui/components/collapsible/collapsible.test.ts +158 -81
- package/dist/ui/components/collapsible/collapsible.ts +19 -14
- package/dist/ui/components/context-menu/context-menu.test.ts +224 -0
- package/dist/ui/components/context-menu/context-menu.ts +110 -0
- package/dist/ui/components/context-menu/index.ts +1 -0
- package/dist/ui/components/dialog/dialog.test.ts +213 -108
- package/dist/ui/components/dialog/dialog.ts +72 -35
- package/dist/ui/components/dock/dock-scroll.test.ts +130 -0
- package/dist/ui/components/dock/dock-scroll.ts +133 -0
- package/dist/ui/components/dock/dock.test.ts +749 -0
- package/dist/ui/components/dock/dock.ts +960 -0
- package/dist/ui/components/dock/index.ts +2 -0
- package/dist/ui/components/empty-state/empty-state.test.ts +28 -39
- package/dist/ui/components/glass/concentric-radius.test.ts +13 -0
- package/dist/ui/components/glass/concentric-radius.ts +17 -0
- package/dist/ui/components/glass/glass-design.test.ts +78 -0
- package/dist/ui/components/glass/glass-design.ts +119 -0
- package/dist/ui/components/glass/glass.test.ts +338 -0
- package/dist/ui/components/glass/glass.ts +360 -0
- package/dist/ui/components/glass/index.ts +18 -0
- package/dist/ui/components/icon/icon-theme.test.ts +169 -0
- package/dist/ui/components/icon/icon-theme.ts +227 -0
- package/dist/ui/components/icon/icon.test.ts +85 -25
- package/dist/ui/components/icon/icon.ts +38 -21
- package/dist/ui/components/input/input.test.ts +178 -101
- package/dist/ui/components/input/input.ts +15 -12
- package/dist/ui/components/label/label.test.ts +11 -24
- package/dist/ui/components/line-chart/index.ts +2 -3
- package/dist/ui/components/line-chart/line-chart.test.ts +149 -56
- package/dist/ui/components/line-chart/line-chart.ts +83 -241
- package/dist/ui/components/list/list.test.ts +119 -21
- package/dist/ui/components/list/list.ts +21 -15
- package/dist/ui/components/menu/index.ts +25 -0
- package/dist/ui/components/menu/menu-placement.test.ts +153 -0
- package/dist/ui/components/menu/menu-placement.ts +159 -0
- package/dist/ui/components/menu/menu-popup.test.ts +632 -0
- package/dist/ui/components/menu/menu-popup.ts +544 -0
- package/dist/ui/components/menu/menu.test.ts +429 -0
- package/dist/ui/components/menu/menu.ts +415 -0
- package/dist/ui/components/nav-drawer/nav-drawer.test.ts +435 -191
- package/dist/ui/components/nav-drawer/nav-drawer.ts +127 -56
- package/dist/ui/components/pagination/pagination.test.ts +177 -65
- package/dist/ui/components/pagination/pagination.ts +55 -8
- package/dist/ui/components/progress/progress.test.ts +102 -46
- package/dist/ui/components/progress/progress.ts +52 -54
- package/dist/ui/components/radio-group/radio-group.test.ts +128 -83
- package/dist/ui/components/radio-group/radio-group.ts +24 -24
- package/dist/ui/components/scatter-chart/index.ts +2 -3
- package/dist/ui/components/scatter-chart/scatter-chart.test.ts +131 -26
- package/dist/ui/components/scatter-chart/scatter-chart.ts +104 -250
- package/dist/ui/components/scroll-area/scroll-area.test.ts +95 -24
- package/dist/ui/components/scroll-area/scroll-area.ts +8 -8
- package/dist/ui/components/select/select.test.ts +138 -78
- package/dist/ui/components/select/select.ts +17 -11
- package/dist/ui/components/separator/separator.test.ts +18 -17
- package/dist/ui/components/sheet/sheet.test.ts +64 -11
- package/dist/ui/components/sheet/sheet.ts +9 -1
- package/dist/ui/components/skeleton/skeleton.test.ts +24 -7
- package/dist/ui/components/skeleton/skeleton.ts +10 -16
- package/dist/ui/components/spinner/spinner.test.ts +67 -22
- package/dist/ui/components/spinner/spinner.ts +48 -41
- package/dist/ui/components/switch/switch.test.ts +116 -46
- package/dist/ui/components/switch/switch.ts +8 -13
- package/dist/ui/components/tab-bar/index.ts +1 -0
- package/dist/ui/components/tab-bar/tab-bar.test.ts +280 -0
- package/dist/ui/components/tab-bar/tab-bar.ts +230 -0
- package/dist/ui/components/tabs/tabs.test.ts +215 -157
- package/dist/ui/components/tabs/tabs.ts +110 -118
- package/dist/ui/components/textarea/textarea.test.ts +206 -100
- package/dist/ui/components/textarea/textarea.ts +14 -12
- package/dist/ui/components/toast/toast.test.ts +436 -315
- package/dist/ui/components/toast/toast.ts +62 -55
- package/dist/ui/components/toggle/toggle.test.ts +247 -140
- package/dist/ui/theme/chart-colors.test.ts +35 -0
- package/dist/ui/theme/dark.css +46 -2
- package/dist/ui/theme/default.css +63 -7
- package/dist/ui/theme/icon-colors.test.ts +35 -0
- package/dist/ui/theme/rgb-channels.test.ts +84 -0
- package/dist/ui/theme/tailwind-build.test.ts +114 -0
- package/dist/ui/theme/tailwind-css.test.ts +83 -0
- package/dist/ui/theme/tailwind-plugin.test.ts +42 -2
- package/dist/ui/theme/tailwind-plugin.ts +98 -25
- package/dist/ui/theme/tailwind.css +113 -0
- package/dist/ui/utils/animate.test.ts +13 -1
- package/dist/utils/analyze.d.ts +14 -0
- package/dist/utils/analyze.js +15 -0
- package/dist/utils/analyze.js.map +1 -1
- package/dist/utils/analyze.test.js +14 -1
- package/dist/utils/analyze.test.js.map +1 -1
- package/dist/utils/installed.d.ts +29 -0
- package/dist/utils/installed.js +43 -0
- package/dist/utils/installed.js.map +1 -0
- package/dist/utils/installed.test.d.ts +1 -0
- package/dist/utils/installed.test.js +57 -0
- package/dist/utils/installed.test.js.map +1 -0
- package/dist/utils/interactive.d.ts +9 -0
- package/dist/utils/interactive.js +10 -0
- package/dist/utils/interactive.js.map +1 -0
- package/dist/utils/interactive.test.d.ts +1 -0
- package/dist/utils/interactive.test.js +24 -0
- package/dist/utils/interactive.test.js.map +1 -0
- package/dist/utils/packages.d.ts +36 -0
- package/dist/utils/packages.js +70 -0
- package/dist/utils/packages.js.map +1 -0
- package/dist/utils/packages.test.d.ts +1 -0
- package/dist/utils/packages.test.js +89 -0
- package/dist/utils/packages.test.js.map +1 -0
- package/dist/utils/resolve-paths.d.ts +17 -1
- package/dist/utils/resolve-paths.js +21 -3
- package/dist/utils/resolve-paths.js.map +1 -1
- package/dist/utils/resolve-paths.test.js +38 -2
- package/dist/utils/resolve-paths.test.js.map +1 -1
- package/dist/utils/tailwind.d.ts +25 -0
- package/dist/utils/tailwind.js +51 -0
- package/dist/utils/tailwind.js.map +1 -0
- package/dist/utils/tailwind.test.d.ts +1 -0
- package/dist/utils/tailwind.test.js +71 -0
- package/dist/utils/tailwind.test.js.map +1 -0
- package/package.json +13 -1
- package/dist/ui/components/area-chart/area-chart-render.test.ts +0 -121
- package/dist/ui/components/bar-chart/bar-chart-render.test.ts +0 -174
- package/dist/ui/components/button/button-render.test.ts +0 -113
- package/dist/ui/components/button-group/button-group-render.test.ts +0 -146
- package/dist/ui/components/candlestick-chart/candlestick-chart-render.test.ts +0 -174
- package/dist/ui/components/cartesian-chart/cartesian-chart-render.test.ts +0 -188
- package/dist/ui/components/cartesian-chart/cartesian-chart.test.ts +0 -525
- package/dist/ui/components/cartesian-chart/cartesian-chart.ts +0 -1140
- package/dist/ui/components/cartesian-chart/index.ts +0 -18
- package/dist/ui/components/line-chart/line-chart-render.test.ts +0 -121
- package/dist/ui/components/scatter-chart/scatter-chart-render.test.ts +0 -157
|
@@ -17,8 +17,18 @@ vi.mock('@clack/prompts', () => ({
|
|
|
17
17
|
cancel: vi.fn(),
|
|
18
18
|
isCancel: vi.fn().mockReturnValue(false),
|
|
19
19
|
}));
|
|
20
|
+
// Vitest's stdin isn't a terminal, which reads as "nobody can answer". Most
|
|
21
|
+
// tests are about the questions, so they run as if in one.
|
|
22
|
+
let interactive = true;
|
|
23
|
+
vi.mock('../utils/interactive.js', () => ({
|
|
24
|
+
isInteractive: () => interactive,
|
|
25
|
+
}));
|
|
20
26
|
let fixture;
|
|
21
27
|
beforeEach(() => {
|
|
28
|
+
interactive = true;
|
|
29
|
+
// Each test sees only its own calls. Without this, an assertion could pass
|
|
30
|
+
// on a message an earlier test logged.
|
|
31
|
+
vi.clearAllMocks();
|
|
22
32
|
vi.spyOn(process, 'exit').mockImplementation((code) => {
|
|
23
33
|
throw new Error(`process.exit(${code})`);
|
|
24
34
|
});
|
|
@@ -280,7 +290,6 @@ describe('removeCommand', () => {
|
|
|
280
290
|
});
|
|
281
291
|
vi.spyOn(process, 'cwd').mockReturnValue(fixture.dir);
|
|
282
292
|
const p = await import('@clack/prompts');
|
|
283
|
-
p.confirm.mockClear();
|
|
284
293
|
const { removeCommand } = await import('./remove');
|
|
285
294
|
await removeCommand('empty-state', {});
|
|
286
295
|
// No orphans to decide on, so the confirm prompt is never shown.
|
|
@@ -309,7 +318,6 @@ describe('removeCommand', () => {
|
|
|
309
318
|
});
|
|
310
319
|
vi.spyOn(process, 'cwd').mockReturnValue(fixture.dir);
|
|
311
320
|
const p = await import('@clack/prompts');
|
|
312
|
-
p.confirm.mockClear();
|
|
313
321
|
const { removeCommand } = await import('./remove');
|
|
314
322
|
await removeCommand('avatar', {});
|
|
315
323
|
expect(p.confirm).not.toHaveBeenCalled();
|
|
@@ -358,4 +366,47 @@ describe('removeCommand', () => {
|
|
|
358
366
|
expect(lockfile.components.button).toBeUndefined();
|
|
359
367
|
});
|
|
360
368
|
});
|
|
369
|
+
// CI, agents and scripts: a question there would wait for input that never
|
|
370
|
+
// comes.
|
|
371
|
+
describe('removeCommand without a terminal', () => {
|
|
372
|
+
const buttonContent = 'export const Button = {};';
|
|
373
|
+
const spinnerContent = 'export const Spinner = {};';
|
|
374
|
+
beforeEach(() => {
|
|
375
|
+
interactive = false;
|
|
376
|
+
fixture = createFixture({
|
|
377
|
+
config: DEFAULT_CONFIG,
|
|
378
|
+
lockfile: {
|
|
379
|
+
version: 1,
|
|
380
|
+
components: {
|
|
381
|
+
button: { 'button.ts': { hash: hashContent(buttonContent) } },
|
|
382
|
+
spinner: { 'spinner.ts': { hash: hashContent(spinnerContent) } },
|
|
383
|
+
},
|
|
384
|
+
utils: {},
|
|
385
|
+
theme: {},
|
|
386
|
+
},
|
|
387
|
+
components: {
|
|
388
|
+
button: { 'button.ts': buttonContent },
|
|
389
|
+
spinner: { 'spinner.ts': spinnerContent },
|
|
390
|
+
},
|
|
391
|
+
});
|
|
392
|
+
vi.spyOn(process, 'cwd').mockReturnValue(fixture.dir);
|
|
393
|
+
});
|
|
394
|
+
const installed = (name) => existsSync(join(fixture.dir, DEFAULT_CONFIG.aliases.components, name));
|
|
395
|
+
it('fails on a component others depend on, and says how to remove it anyway', async () => {
|
|
396
|
+
const p = await import('@clack/prompts');
|
|
397
|
+
const { removeCommand } = await import('./remove');
|
|
398
|
+
await expect(removeCommand('spinner', {})).rejects.toThrow('process.exit(1)');
|
|
399
|
+
expect(p.confirm).not.toHaveBeenCalled();
|
|
400
|
+
expect(p.log.error).toHaveBeenCalledWith(expect.stringContaining('dolan remove --force spinner'));
|
|
401
|
+
expect(installed('spinner')).toBe(true);
|
|
402
|
+
});
|
|
403
|
+
it('removes orphaned dependencies, the default answer', async () => {
|
|
404
|
+
const p = await import('@clack/prompts');
|
|
405
|
+
const { removeCommand } = await import('./remove');
|
|
406
|
+
await removeCommand('button', {});
|
|
407
|
+
expect(p.confirm).not.toHaveBeenCalled();
|
|
408
|
+
expect(installed('button')).toBe(false);
|
|
409
|
+
expect(installed('spinner')).toBe(false);
|
|
410
|
+
});
|
|
411
|
+
});
|
|
361
412
|
//# sourceMappingURL=remove.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remove.test.js","sourceRoot":"","sources":["../../src/commands/remove.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"remove.test.js","sourceRoot":"","sources":["../../src/commands/remove.test.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/theme.js
CHANGED
|
@@ -57,7 +57,7 @@ const createTheme = (name, themeDir) => {
|
|
|
57
57
|
// Replace only the first block comment (the header). The lazy `*?` is
|
|
58
58
|
// critical — without it, the greedy version would consume everything from
|
|
59
59
|
// the first `/*` to the LAST `*/` in the file, wiping all comments.
|
|
60
|
-
const content = template.replace(/\/\*[\s\S]*?\*\//, `/* Custom theme: ${name}\n *\n * Edit the CSS variables below to customize your theme.\n * Values are complete rgba() colors (e.g., "rgba(24, 24, 27, 1)") referenced\n * directly via var(--x); Lynx drops Tailwind's space-separated hsl(var() / a).\n */`);
|
|
60
|
+
const content = template.replace(/\/\*[\s\S]*?\*\//, `/* Custom theme: ${name}\n *\n * Edit the CSS variables below to customize your theme.\n * Values are complete rgba() colors (e.g., "rgba(24, 24, 27, 1)") referenced\n * directly via var(--x); Lynx drops Tailwind's space-separated hsl(var() / a).\n * Each color's -rgb twin holds the same color's channels (e.g., "24, 24, 27")\n * for opacity modifiers such as bg-primary/50, so change both together.\n */`);
|
|
61
61
|
writeFileSync(destPath, content);
|
|
62
62
|
p.log.success(`Created ${pc.bold(fileName)} in ${pc.dim(themeDir)}`);
|
|
63
63
|
p.log.info(`Import it in your global styles:\n ${pc.cyan(`@import './${fileName}';`)}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme.js","sourceRoot":"","sources":["../../src/commands/theme.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"theme.js","sourceRoot":"","sources":["../../src/commands/theme.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,9 +16,20 @@
|
|
|
16
16
|
* - **conflict** — current differs from base AND upstream differs
|
|
17
17
|
* from base (both sides moved → prompt the user).
|
|
18
18
|
*
|
|
19
|
+
* A file the lockfile tracks that upstream no longer ships gets the same
|
|
20
|
+
* statuses from `analyzeRemovedFile`, with "no file" as upstream's version:
|
|
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.
|
|
23
|
+
*
|
|
19
24
|
* `--force` bypasses all prompts and overwrites every file with upstream,
|
|
20
25
|
* which is destructive but useful for resetting to a clean baseline.
|
|
21
26
|
*
|
|
27
|
+
* Without a terminal nobody can answer, so auto-updates apply (the default
|
|
28
|
+
* answer) and conflicts are left as they are, file and lockfile hash, for an
|
|
29
|
+
* update in a terminal to ask about. Like a `git merge` with conflicts, the
|
|
30
|
+
* run then exits 1. Keeping the user's version instead would advance the base,
|
|
31
|
+
* so the upstream change would never be offered again, and nobody chose that.
|
|
32
|
+
*
|
|
22
33
|
* After the apply phase, the lockfile is updated to record the new upstream
|
|
23
34
|
* hash for every file — even ones the user chose to keep. This intentionally
|
|
24
35
|
* "advances the base" so the user only sees the same conflict once: next
|
package/dist/commands/update.js
CHANGED
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
import * as p from '@clack/prompts';
|
|
2
|
-
import { existsSync, mkdirSync, readFileSync,
|
|
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
6
|
import { configExists, readConfig } from '../config.js';
|
|
6
|
-
import {
|
|
7
|
+
import { resolveDependencies } from '../registry.js';
|
|
7
8
|
import { getComponentFiles, getComponentSourceDir, getUiSourceDir, rewriteImports, } from '../utils/resolve-paths.js';
|
|
8
9
|
import { formatContent } from '../utils/format.js';
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
10
|
+
import { droppedFiles, trackedComponents, untrackedComponents, } from '../utils/installed.js';
|
|
11
|
+
import { isInteractive } from '../utils/interactive.js';
|
|
12
|
+
import { copiesTests } from '../utils/packages.js';
|
|
13
|
+
import { installComponentPackages } from './install-packages.js';
|
|
14
|
+
import { getOrCreateLockfile, hashContent, themeBase, writeLockfile, } from '../lockfile.js';
|
|
15
|
+
import { analyzeFile, analyzeRemovedFile, formatDiff, formatHunk, getHunks, applySelectedHunks, summarizeComponent, STATUS_ICONS, STATUS_LABELS, } from '../utils/analyze.js';
|
|
11
16
|
/**
|
|
12
17
|
* Walks through each hunk in a diff and asks the user to accept or reject it.
|
|
13
18
|
* "Show more context" re-computes the hunk with doubled context lines so the
|
|
@@ -91,49 +96,69 @@ const reviewHunks = async (componentName, fileName, currentContent, newContent)
|
|
|
91
96
|
* upstream", while auto-updates and new files in selective mode get "apply /
|
|
92
97
|
* skip for now". The "Show diff" option loops back into the same prompt so the
|
|
93
98
|
* user can inspect before committing. "Review by hunk" lets the user
|
|
94
|
-
* accept/reject individual changes within the file.
|
|
99
|
+
* accept/reject individual changes within the file. For a file upstream no
|
|
100
|
+
* longer ships, taking upstream's version deletes it.
|
|
95
101
|
*/
|
|
96
102
|
const reviewFile = async (componentName, analysis) => {
|
|
97
103
|
const isNewFile = analysis.status === 'new-upstream';
|
|
98
104
|
const isConflict = analysis.status === 'conflict';
|
|
99
105
|
const isUserModified = analysis.status === 'user-modified';
|
|
100
|
-
const
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
? '—
|
|
104
|
-
:
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
106
|
+
const isRemoved = analysis.removed === true;
|
|
107
|
+
const suffix = isRemoved
|
|
108
|
+
? isConflict
|
|
109
|
+
? '— you modified it, and upstream no longer ships it'
|
|
110
|
+
: '— upstream no longer ships it'
|
|
111
|
+
: isConflict
|
|
112
|
+
? '— how to resolve?'
|
|
113
|
+
: isNewFile
|
|
114
|
+
? '— new file from upstream'
|
|
115
|
+
: isUserModified
|
|
116
|
+
? '— you modified this file'
|
|
117
|
+
: '— upstream changed';
|
|
118
|
+
const applyOption = isRemoved
|
|
108
119
|
? {
|
|
109
120
|
value: 'upstream',
|
|
110
|
-
label: '
|
|
111
|
-
hint:
|
|
112
|
-
? 'revert to upstream'
|
|
113
|
-
: 'discard my changes for this file',
|
|
121
|
+
label: 'Delete it',
|
|
122
|
+
hint: isConflict ? 'discard my changes' : 'remove the file',
|
|
114
123
|
}
|
|
115
|
-
:
|
|
124
|
+
: isConflict || isUserModified
|
|
116
125
|
? {
|
|
117
126
|
value: 'upstream',
|
|
118
|
-
label: '
|
|
119
|
-
hint:
|
|
127
|
+
label: 'Take upstream version',
|
|
128
|
+
hint: isUserModified
|
|
129
|
+
? 'revert to upstream'
|
|
130
|
+
: 'discard my changes for this file',
|
|
120
131
|
}
|
|
121
|
-
:
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
132
|
+
: isNewFile
|
|
133
|
+
? {
|
|
134
|
+
value: 'upstream',
|
|
135
|
+
label: 'Add this file',
|
|
136
|
+
hint: 'create the file',
|
|
137
|
+
}
|
|
138
|
+
: {
|
|
139
|
+
value: 'upstream',
|
|
140
|
+
label: 'Apply update',
|
|
141
|
+
hint: 'overwrite with upstream',
|
|
142
|
+
};
|
|
143
|
+
// Keeping a file upstream no longer ships makes it the app's own: there's
|
|
144
|
+
// nothing left to merge it with, so dolan stops tracking it.
|
|
145
|
+
const skipOption = isRemoved && isConflict
|
|
127
146
|
? {
|
|
128
147
|
value: 'keep',
|
|
129
148
|
label: 'Keep my version',
|
|
130
|
-
hint: '
|
|
149
|
+
hint: 'keep it as my own file',
|
|
131
150
|
}
|
|
132
|
-
:
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
151
|
+
: isConflict || isUserModified
|
|
152
|
+
? {
|
|
153
|
+
value: 'keep',
|
|
154
|
+
label: 'Keep my version',
|
|
155
|
+
hint: 'skip upstream changes for this file',
|
|
156
|
+
}
|
|
157
|
+
: {
|
|
158
|
+
value: 'keep',
|
|
159
|
+
label: 'Skip for now',
|
|
160
|
+
hint: 'keep current, ask again next time',
|
|
161
|
+
};
|
|
137
162
|
const options = [
|
|
138
163
|
{
|
|
139
164
|
value: 'diff',
|
|
@@ -143,8 +168,9 @@ const reviewFile = async (componentName, analysis) => {
|
|
|
143
168
|
skipOption,
|
|
144
169
|
applyOption,
|
|
145
170
|
];
|
|
146
|
-
// New files have nothing to compare hunk-by-hunk — it's all new content
|
|
147
|
-
|
|
171
|
+
// New files have nothing to compare hunk-by-hunk — it's all new content —
|
|
172
|
+
// and a deletion is all or nothing.
|
|
173
|
+
if (!isNewFile && !isRemoved) {
|
|
148
174
|
options.push({
|
|
149
175
|
value: 'hunk-review',
|
|
150
176
|
label: 'Review by hunk',
|
|
@@ -199,9 +225,20 @@ const reviewFile = async (componentName, analysis) => {
|
|
|
199
225
|
* - **conflict** — current differs from base AND upstream differs
|
|
200
226
|
* from base (both sides moved → prompt the user).
|
|
201
227
|
*
|
|
228
|
+
* A file the lockfile tracks that upstream no longer ships gets the same
|
|
229
|
+
* statuses from `analyzeRemovedFile`, with "no file" as upstream's version:
|
|
230
|
+
* 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.
|
|
232
|
+
*
|
|
202
233
|
* `--force` bypasses all prompts and overwrites every file with upstream,
|
|
203
234
|
* which is destructive but useful for resetting to a clean baseline.
|
|
204
235
|
*
|
|
236
|
+
* Without a terminal nobody can answer, so auto-updates apply (the default
|
|
237
|
+
* answer) and conflicts are left as they are, file and lockfile hash, for an
|
|
238
|
+
* update in a terminal to ask about. Like a `git merge` with conflicts, the
|
|
239
|
+
* run then exits 1. Keeping the user's version instead would advance the base,
|
|
240
|
+
* so the upstream change would never be offered again, and nobody chose that.
|
|
241
|
+
*
|
|
205
242
|
* After the apply phase, the lockfile is updated to record the new upstream
|
|
206
243
|
* hash for every file — even ones the user chose to keep. This intentionally
|
|
207
244
|
* "advances the base" so the user only sees the same conflict once: next
|
|
@@ -210,11 +247,17 @@ const reviewFile = async (componentName, analysis) => {
|
|
|
210
247
|
*/
|
|
211
248
|
export const updateCommand = async (options) => {
|
|
212
249
|
const cwd = process.cwd();
|
|
250
|
+
const interactive = isInteractive();
|
|
213
251
|
p.intro(pc.bold('dolan update'));
|
|
214
252
|
if (!configExists(cwd)) {
|
|
215
253
|
p.log.error(`No ${pc.cyan('dolan.config.json')} found. Run ${pc.bold('dolan init')} first.`);
|
|
216
254
|
process.exit(1);
|
|
217
255
|
}
|
|
256
|
+
// Selective mode is nothing but questions, and `--force` wins over it.
|
|
257
|
+
if (options.selective && !options.force && !interactive) {
|
|
258
|
+
p.log.error(`${pc.bold('--selective')} asks about each file, so it needs a terminal.`);
|
|
259
|
+
process.exit(1);
|
|
260
|
+
}
|
|
218
261
|
const config = readConfig(cwd);
|
|
219
262
|
const componentsDir = resolve(cwd, config.aliases.components);
|
|
220
263
|
// Theme files are tracked independently of components (see the shared-file
|
|
@@ -225,25 +268,26 @@ export const updateCommand = async (options) => {
|
|
|
225
268
|
// destructive `--force` reset the user explicitly asked for. We compute the
|
|
226
269
|
// installed list defensively (empty when the dir is absent) and let the
|
|
227
270
|
// normal "nothing to do" checks below decide whether there's real work.
|
|
228
|
-
const allKnown = new Set(getComponentNames());
|
|
229
|
-
// v8 ignore-comment defensive fallback: tested paths always seed componentsDir
|
|
230
|
-
// via createFixture. The `[]` branch only fires in production when the app
|
|
231
|
-
// deletes the components/ tree by hand.
|
|
232
|
-
/* v8 ignore next 6 */
|
|
233
|
-
const installed = existsSync(componentsDir)
|
|
234
|
-
? readdirSync(componentsDir, { withFileTypes: true })
|
|
235
|
-
.filter((entry) => entry.isDirectory() && allKnown.has(entry.name))
|
|
236
|
-
.map((entry) => entry.name)
|
|
237
|
-
.sort()
|
|
238
|
-
: [];
|
|
239
271
|
const lockfile = getOrCreateLockfile(cwd);
|
|
272
|
+
// Only the components dolan tracks. An ejected one is the app's own code
|
|
273
|
+
// now, so it's neither analyzed nor overwritten, even with --force.
|
|
274
|
+
const tracked = trackedComponents(componentsDir, lockfile);
|
|
275
|
+
const ejected = new Set(untrackedComponents(componentsDir, lockfile));
|
|
276
|
+
// A component's new version can depend on one the project doesn't have yet
|
|
277
|
+
// (the chart presets now build on `chart`). Bring those along, as `add`
|
|
278
|
+
// would: their files all show up as new, so they're simply written. An
|
|
279
|
+
// ejected dependency stays the app's.
|
|
280
|
+
const installed = resolveDependencies(tracked)
|
|
281
|
+
.filter((name) => !ejected.has(name))
|
|
282
|
+
.sort();
|
|
283
|
+
const tests = copiesTests(cwd);
|
|
240
284
|
// --- Analysis phase ---
|
|
241
285
|
const s = p.spinner();
|
|
242
286
|
s.start('Analyzing changes...');
|
|
243
287
|
const componentAnalyses = [];
|
|
244
288
|
for (const name of installed) {
|
|
245
289
|
const destDir = resolve(componentsDir, name);
|
|
246
|
-
const files = getComponentFiles(name);
|
|
290
|
+
const files = getComponentFiles(name, { tests });
|
|
247
291
|
const lockedComponent = lockfile.components[name] ?? {};
|
|
248
292
|
const fileAnalyses = [];
|
|
249
293
|
for (const file of files) {
|
|
@@ -264,6 +308,22 @@ export const updateCommand = async (options) => {
|
|
|
264
308
|
newContent,
|
|
265
309
|
});
|
|
266
310
|
}
|
|
311
|
+
// Files dolan copied that upstream has since stopped shipping. Taking
|
|
312
|
+
// upstream's version deletes them, by the same rules as a change: quietly
|
|
313
|
+
// when nobody edited them, after asking when someone did.
|
|
314
|
+
for (const file of droppedFiles(name, lockfile)) {
|
|
315
|
+
const destPath = join(destDir, file);
|
|
316
|
+
const currentContent = existsSync(destPath)
|
|
317
|
+
? readFileSync(destPath, 'utf-8')
|
|
318
|
+
: null;
|
|
319
|
+
fileAnalyses.push({
|
|
320
|
+
file,
|
|
321
|
+
status: analyzeRemovedFile(currentContent, lockedComponent[file].hash, hashContent),
|
|
322
|
+
currentContent: currentContent ?? '',
|
|
323
|
+
newContent: '',
|
|
324
|
+
removed: true,
|
|
325
|
+
});
|
|
326
|
+
}
|
|
267
327
|
componentAnalyses.push({ name, files: fileAnalyses });
|
|
268
328
|
}
|
|
269
329
|
// Analyze shared files (theme only — utils now come from @blotch/dolan)
|
|
@@ -271,8 +331,7 @@ export const updateCommand = async (options) => {
|
|
|
271
331
|
const sharedAnalyses = [];
|
|
272
332
|
// Theme files
|
|
273
333
|
const themeDir = resolve(cwd, config.aliases.theme);
|
|
274
|
-
const
|
|
275
|
-
for (const file of themeFiles) {
|
|
334
|
+
for (const file of themeFilesFor(cwd, { tests })) {
|
|
276
335
|
const src = join(uiSrc, 'theme', file);
|
|
277
336
|
if (!existsSync(src))
|
|
278
337
|
continue;
|
|
@@ -283,7 +342,9 @@ export const updateCommand = async (options) => {
|
|
|
283
342
|
const currentContent = existsSync(destPath)
|
|
284
343
|
? readFileSync(destPath, 'utf-8')
|
|
285
344
|
: null;
|
|
286
|
-
|
|
345
|
+
// A lockfile an older `init` wrote has no theme hashes, so an untouched
|
|
346
|
+
// copy gets its release's hash as the base instead (see themeBase).
|
|
347
|
+
const storedHash = themeBase(lockfile, file, currentContent);
|
|
287
348
|
sharedAnalyses.push({
|
|
288
349
|
file: `theme/${file}`,
|
|
289
350
|
status: analyzeFile(currentContent, newContent, storedHash, hashContent),
|
|
@@ -292,12 +353,22 @@ export const updateCommand = async (options) => {
|
|
|
292
353
|
});
|
|
293
354
|
}
|
|
294
355
|
s.stop('Analysis complete.');
|
|
356
|
+
installComponentPackages(cwd, installed);
|
|
295
357
|
// --- Display summary ---
|
|
296
358
|
if (componentAnalyses.length > 0) {
|
|
297
359
|
p.log.message(pc.bold('\nComponents:'));
|
|
298
360
|
for (const comp of componentAnalyses) {
|
|
299
361
|
const overall = summarizeComponent(comp);
|
|
300
362
|
p.log.message(` ${STATUS_ICONS[overall]} ${pc.bold(comp.name)} — ${STATUS_LABELS[overall]}`);
|
|
363
|
+
// Name each file a deletion would take, since the component's line
|
|
364
|
+
// reads like an ordinary update.
|
|
365
|
+
for (const file of comp.files) {
|
|
366
|
+
if (!file.removed || file.status === 'up-to-date')
|
|
367
|
+
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')}`);
|
|
371
|
+
}
|
|
301
372
|
}
|
|
302
373
|
}
|
|
303
374
|
if (sharedAnalyses.length > 0) {
|
|
@@ -347,7 +418,7 @@ export const updateCommand = async (options) => {
|
|
|
347
418
|
writeLockfile(cwd, buildLockfile(componentAnalyses, sharedAnalyses, lockfile));
|
|
348
419
|
return;
|
|
349
420
|
}
|
|
350
|
-
if (!options.force && !isSelective && autoUpdateCount > 0) {
|
|
421
|
+
if (!options.force && !isSelective && autoUpdateCount > 0 && interactive) {
|
|
351
422
|
const confirm = await p.confirm({
|
|
352
423
|
message: `Apply ${autoUpdateCount} auto-update(s)?`,
|
|
353
424
|
initialValue: true,
|
|
@@ -364,7 +435,10 @@ export const updateCommand = async (options) => {
|
|
|
364
435
|
// --- Resolve conflicts ---
|
|
365
436
|
const resolutions = new Map();
|
|
366
437
|
const partialContents = new Map();
|
|
367
|
-
|
|
438
|
+
// Conflicts nobody could be asked about. They get no resolution, which the
|
|
439
|
+
// apply phase reads as "leave the file and its lockfile hash alone".
|
|
440
|
+
const unresolvedCount = options.force || interactive ? 0 : conflictCount;
|
|
441
|
+
if (!options.force && interactive) {
|
|
368
442
|
for (const comp of componentAnalyses) {
|
|
369
443
|
for (const file of comp.files) {
|
|
370
444
|
if (file.status === 'conflict') {
|
|
@@ -420,6 +494,7 @@ export const updateCommand = async (options) => {
|
|
|
420
494
|
const applySpinner = p.spinner();
|
|
421
495
|
applySpinner.start('Applying updates...');
|
|
422
496
|
let appliedCount = 0;
|
|
497
|
+
let deletedCount = 0;
|
|
423
498
|
let skippedCount = 0;
|
|
424
499
|
const newLockfile = getOrCreateLockfile(cwd);
|
|
425
500
|
for (const comp of componentAnalyses) {
|
|
@@ -432,6 +507,12 @@ export const updateCommand = async (options) => {
|
|
|
432
507
|
const destPath = join(destDir, file.file);
|
|
433
508
|
const key = `${comp.name}/${file.file}`;
|
|
434
509
|
const resolution = resolutions.get(key)?.decision;
|
|
510
|
+
// A conflict nobody was asked about: neither the file nor its lockfile
|
|
511
|
+
// hash changes (newLockfile was read from disk), so the next update
|
|
512
|
+
// still sees a conflict and asks.
|
|
513
|
+
if (file.status === 'conflict' && !resolution && !options.force) {
|
|
514
|
+
continue;
|
|
515
|
+
}
|
|
435
516
|
// In selective mode, auto-update/new-upstream files need explicit
|
|
436
517
|
// approval — "skip for now" means don't touch file OR lockfile hash
|
|
437
518
|
// so the change surfaces again on the next run.
|
|
@@ -451,6 +532,27 @@ export const updateCommand = async (options) => {
|
|
|
451
532
|
(options.force || resolution === 'upstream')) ||
|
|
452
533
|
(file.status === 'conflict' &&
|
|
453
534
|
(options.force || resolution === 'upstream')));
|
|
535
|
+
if (file.removed) {
|
|
536
|
+
// "Skip for now" leaves the file and its lockfile entry (newLockfile
|
|
537
|
+
// was read from disk), so the next update asks again.
|
|
538
|
+
if (selectivelySkipped) {
|
|
539
|
+
skippedCount++;
|
|
540
|
+
continue;
|
|
541
|
+
}
|
|
542
|
+
if (shouldOverwrite) {
|
|
543
|
+
rmSync(destPath, { force: true });
|
|
544
|
+
deletedCount++;
|
|
545
|
+
}
|
|
546
|
+
else if (file.status === 'conflict') {
|
|
547
|
+
// Kept: upstream has nothing to merge into it any more, so it's the
|
|
548
|
+
// app's own file now, like an ejected component's.
|
|
549
|
+
skippedCount++;
|
|
550
|
+
}
|
|
551
|
+
// Deleted, kept as the app's, or already gone: dolan stops tracking
|
|
552
|
+
// it either way. The entry used to stay forever.
|
|
553
|
+
delete newLockfile.components[comp.name][file.file];
|
|
554
|
+
continue;
|
|
555
|
+
}
|
|
454
556
|
if (resolution === 'partial') {
|
|
455
557
|
// User accepted some hunks but not all — write reconstructed
|
|
456
558
|
// content and advance lockfile to upstream hash. On next update
|
|
@@ -515,6 +617,10 @@ export const updateCommand = async (options) => {
|
|
|
515
617
|
mkdirSync(themeDir, { recursive: true });
|
|
516
618
|
const destPath = join(themeDir, fileName);
|
|
517
619
|
const sharedResolution = resolutions.get(file.file)?.decision;
|
|
620
|
+
// As for components: a conflict nobody was asked about stays as it is.
|
|
621
|
+
if (file.status === 'conflict' && !sharedResolution && !options.force) {
|
|
622
|
+
continue;
|
|
623
|
+
}
|
|
518
624
|
// Shared-file (theme) apply branches: the tested paths cover the common
|
|
519
625
|
// apply, force-overwrite, and up-to-date flows. The remaining branch-level
|
|
520
626
|
// permutations (selective-skip with an existing lockfile entry vs missing,
|
|
@@ -568,28 +674,38 @@ export const updateCommand = async (options) => {
|
|
|
568
674
|
if (appliedCount > 0) {
|
|
569
675
|
p.log.success(`${pc.bold(String(appliedCount))} file(s) updated.`);
|
|
570
676
|
}
|
|
677
|
+
if (deletedCount > 0) {
|
|
678
|
+
p.log.success(`${pc.bold(String(deletedCount))} file(s) deleted: upstream no longer ships them.`);
|
|
679
|
+
}
|
|
571
680
|
if (skippedCount > 0 && isSelective) {
|
|
572
681
|
p.log.info(`${pc.bold(String(skippedCount))} file(s) skipped — they'll appear again on next update.`);
|
|
573
682
|
}
|
|
574
683
|
else if (skippedCount > 0) {
|
|
575
684
|
p.log.info(`${pc.bold(String(skippedCount))} file(s) kept as-is.`);
|
|
576
685
|
}
|
|
686
|
+
if (unresolvedCount > 0) {
|
|
687
|
+
p.log.warn(`${pc.bold(String(unresolvedCount))} conflict(s) left as they are. Run ${pc.bold('dolan update')} in a terminal to resolve them, or ${pc.bold('dolan update --force')} to take upstream's version.`);
|
|
688
|
+
p.outro('Update incomplete.');
|
|
689
|
+
process.exit(1);
|
|
690
|
+
}
|
|
577
691
|
p.outro('Update complete.');
|
|
578
692
|
};
|
|
579
693
|
/**
|
|
580
|
-
* Build a fresh lockfile snapshot for the "nothing to apply" case
|
|
694
|
+
* Build a fresh lockfile snapshot for the "nothing to apply" case. The only
|
|
695
|
+
* files upstream no longer ships that get here are already gone from disk
|
|
696
|
+
* (any other is an auto-update or a conflict), so their entries are dropped.
|
|
581
697
|
*/
|
|
582
698
|
const buildLockfile = (components, shared, existing) => {
|
|
583
699
|
const lockfile = { ...existing };
|
|
584
700
|
for (const comp of components) {
|
|
585
|
-
|
|
586
|
-
lockfile.components[comp.name] = {};
|
|
587
|
-
}
|
|
701
|
+
const entries = { ...lockfile.components[comp.name] };
|
|
588
702
|
for (const file of comp.files) {
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
703
|
+
if (file.removed)
|
|
704
|
+
delete entries[file.file];
|
|
705
|
+
else
|
|
706
|
+
entries[file.file] = { hash: hashContent(file.newContent) };
|
|
592
707
|
}
|
|
708
|
+
lockfile.components[comp.name] = entries;
|
|
593
709
|
}
|
|
594
710
|
for (const file of shared) {
|
|
595
711
|
const fileName = file.file.split('/').pop();
|