@detergent-software/atk 8.6.2-dev.1 → 8.7.0-dev.10
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/CHANGELOG.md +109 -0
- package/build/commands/audit.d.ts.map +1 -1
- package/build/commands/audit.js +34 -11
- package/build/commands/audit.js.map +1 -1
- package/build/commands/browse.d.ts.map +1 -1
- package/build/commands/browse.js +23 -15
- package/build/commands/browse.js.map +1 -1
- package/build/commands/freeze.d.ts.map +1 -1
- package/build/commands/freeze.js +11 -6
- package/build/commands/freeze.js.map +1 -1
- package/build/commands/index.d.ts.map +1 -1
- package/build/commands/index.js +1 -0
- package/build/commands/index.js.map +1 -1
- package/build/commands/install.d.ts.map +1 -1
- package/build/commands/install.js +91 -26
- package/build/commands/install.js.map +1 -1
- package/build/commands/list.d.ts +2 -1
- package/build/commands/list.d.ts.map +1 -1
- package/build/commands/list.js +82 -66
- package/build/commands/list.js.map +1 -1
- package/build/commands/move.d.ts +28 -0
- package/build/commands/move.d.ts.map +1 -0
- package/build/commands/move.js +180 -0
- package/build/commands/move.js.map +1 -0
- package/build/commands/outdated.d.ts +2 -1
- package/build/commands/outdated.d.ts.map +1 -1
- package/build/commands/outdated.js +67 -24
- package/build/commands/outdated.js.map +1 -1
- package/build/commands/pin.d.ts.map +1 -1
- package/build/commands/pin.js +12 -7
- package/build/commands/pin.js.map +1 -1
- package/build/commands/prune.d.ts.map +1 -1
- package/build/commands/prune.js +17 -10
- package/build/commands/prune.js.map +1 -1
- package/build/commands/schema.d.ts +1 -1
- package/build/commands/sync.d.ts.map +1 -1
- package/build/commands/sync.js +22 -13
- package/build/commands/sync.js.map +1 -1
- package/build/commands/thaw.d.ts.map +1 -1
- package/build/commands/thaw.js +11 -6
- package/build/commands/thaw.js.map +1 -1
- package/build/commands/uninstall.d.ts.map +1 -1
- package/build/commands/uninstall.js +20 -15
- package/build/commands/uninstall.js.map +1 -1
- package/build/commands/unpin.d.ts.map +1 -1
- package/build/commands/unpin.js +11 -6
- package/build/commands/unpin.js.map +1 -1
- package/build/commands/update.d.ts.map +1 -1
- package/build/commands/update.js +11 -11
- package/build/commands/update.js.map +1 -1
- package/build/components/CrossScopeWarning.d.ts +12 -0
- package/build/components/CrossScopeWarning.d.ts.map +1 -0
- package/build/components/CrossScopeWarning.js +13 -0
- package/build/components/CrossScopeWarning.js.map +1 -0
- package/build/components/DryRunBanner.d.ts +3 -1
- package/build/components/DryRunBanner.d.ts.map +1 -1
- package/build/components/DryRunBanner.js +2 -2
- package/build/components/DryRunBanner.js.map +1 -1
- package/build/components/InstallConfirmBar.d.ts.map +1 -1
- package/build/components/InstallConfirmBar.js +1 -3
- package/build/components/InstallConfirmBar.js.map +1 -1
- package/build/components/InstallSummary.d.ts +3 -1
- package/build/components/InstallSummary.d.ts.map +1 -1
- package/build/components/InstallSummary.js +2 -2
- package/build/components/InstallSummary.js.map +1 -1
- package/build/components/ListActionBar.d.ts +4 -2
- package/build/components/ListActionBar.d.ts.map +1 -1
- package/build/components/ListActionBar.js +5 -4
- package/build/components/ListActionBar.js.map +1 -1
- package/build/components/ListBrowseList.d.ts +7 -6
- package/build/components/ListBrowseList.d.ts.map +1 -1
- package/build/components/ListBrowseList.js +10 -6
- package/build/components/ListBrowseList.js.map +1 -1
- package/build/components/StatusBadge.d.ts +1 -1
- package/build/components/StatusBadge.d.ts.map +1 -1
- package/build/components/StatusBadge.js +1 -0
- package/build/components/StatusBadge.js.map +1 -1
- package/build/components/SyncAllInSync.d.ts +3 -1
- package/build/components/SyncAllInSync.d.ts.map +1 -1
- package/build/components/SyncAllInSync.js +2 -2
- package/build/components/SyncAllInSync.js.map +1 -1
- package/build/components/SyncDriftedList.d.ts +3 -1
- package/build/components/SyncDriftedList.d.ts.map +1 -1
- package/build/components/SyncDriftedList.js +3 -3
- package/build/components/SyncDriftedList.js.map +1 -1
- package/build/components/SyncNoAssets.d.ts +3 -1
- package/build/components/SyncNoAssets.d.ts.map +1 -1
- package/build/components/SyncNoAssets.js +2 -2
- package/build/components/SyncNoAssets.js.map +1 -1
- package/build/components/index.d.ts +1 -0
- package/build/components/index.d.ts.map +1 -1
- package/build/components/index.js +1 -0
- package/build/components/index.js.map +1 -1
- package/build/hooks/useInitState.d.ts.map +1 -1
- package/build/hooks/useInitState.js +4 -2
- package/build/hooks/useInitState.js.map +1 -1
- package/build/hooks/useListActions.d.ts +19 -6
- package/build/hooks/useListActions.d.ts.map +1 -1
- package/build/hooks/useListActions.js +36 -30
- package/build/hooks/useListActions.js.map +1 -1
- package/build/hooks/useListState.d.ts +29 -12
- package/build/hooks/useListState.d.ts.map +1 -1
- package/build/hooks/useListState.js +22 -6
- package/build/hooks/useListState.js.map +1 -1
- package/build/hooks/usePruneState.d.ts +6 -0
- package/build/hooks/usePruneState.d.ts.map +1 -1
- package/build/hooks/usePruneState.js +6 -1
- package/build/hooks/usePruneState.js.map +1 -1
- package/build/hooks/useResolvedScope.d.ts +21 -0
- package/build/hooks/useResolvedScope.d.ts.map +1 -0
- package/build/hooks/useResolvedScope.js +15 -0
- package/build/hooks/useResolvedScope.js.map +1 -0
- package/build/hooks/useUninstallState.d.ts +6 -0
- package/build/hooks/useUninstallState.d.ts.map +1 -1
- package/build/hooks/useUninstallState.js +6 -1
- package/build/hooks/useUninstallState.js.map +1 -1
- package/build/lib/adapter.d.ts +47 -1
- package/build/lib/adapter.d.ts.map +1 -1
- package/build/lib/adapter.js +153 -10
- package/build/lib/adapter.js.map +1 -1
- package/build/lib/checksum.d.ts.map +1 -1
- package/build/lib/checksum.js +2 -1
- package/build/lib/checksum.js.map +1 -1
- package/build/lib/config-entries.d.ts +5 -3
- package/build/lib/config-entries.d.ts.map +1 -1
- package/build/lib/config-entries.js +7 -4
- package/build/lib/config-entries.js.map +1 -1
- package/build/lib/config-file.d.ts +15 -4
- package/build/lib/config-file.d.ts.map +1 -1
- package/build/lib/config-file.js +35 -10
- package/build/lib/config-file.js.map +1 -1
- package/build/lib/config-lock.d.ts +22 -0
- package/build/lib/config-lock.d.ts.map +1 -0
- package/build/lib/config-lock.js +67 -0
- package/build/lib/config-lock.js.map +1 -0
- package/build/lib/cross-scope.d.ts +50 -0
- package/build/lib/cross-scope.d.ts.map +1 -0
- package/build/lib/cross-scope.js +132 -0
- package/build/lib/cross-scope.js.map +1 -0
- package/build/lib/diagnostics.d.ts +15 -2
- package/build/lib/diagnostics.d.ts.map +1 -1
- package/build/lib/diagnostics.js +152 -10
- package/build/lib/diagnostics.js.map +1 -1
- package/build/lib/diff-command.d.ts.map +1 -1
- package/build/lib/diff-command.js +7 -7
- package/build/lib/diff-command.js.map +1 -1
- package/build/lib/hook-config.d.ts +7 -0
- package/build/lib/hook-config.d.ts.map +1 -1
- package/build/lib/hook-config.js +11 -0
- package/build/lib/hook-config.js.map +1 -1
- package/build/lib/init.d.ts.map +1 -1
- package/build/lib/init.js +2 -1
- package/build/lib/init.js.map +1 -1
- package/build/lib/installed-for-tool.d.ts +2 -1
- package/build/lib/installed-for-tool.d.ts.map +1 -1
- package/build/lib/installed-for-tool.js +7 -4
- package/build/lib/installed-for-tool.js.map +1 -1
- package/build/lib/installer.d.ts +8 -4
- package/build/lib/installer.d.ts.map +1 -1
- package/build/lib/installer.js +153 -57
- package/build/lib/installer.js.map +1 -1
- package/build/lib/lockfile.d.ts +1 -1
- package/build/lib/lockfile.d.ts.map +1 -1
- package/build/lib/lockfile.js +2 -2
- package/build/lib/lockfile.js.map +1 -1
- package/build/lib/mover.d.ts +103 -0
- package/build/lib/mover.d.ts.map +1 -0
- package/build/lib/mover.js +375 -0
- package/build/lib/mover.js.map +1 -0
- package/build/lib/multi-tool-install.js +1 -1
- package/build/lib/multi-tool-install.js.map +1 -1
- package/build/lib/owned-paths.d.ts.map +1 -1
- package/build/lib/owned-paths.js +8 -8
- package/build/lib/owned-paths.js.map +1 -1
- package/build/lib/read-scopes.d.ts +32 -0
- package/build/lib/read-scopes.d.ts.map +1 -0
- package/build/lib/read-scopes.js +55 -0
- package/build/lib/read-scopes.js.map +1 -0
- package/build/lib/root-path.d.ts +7 -0
- package/build/lib/root-path.d.ts.map +1 -0
- package/build/lib/root-path.js +10 -0
- package/build/lib/root-path.js.map +1 -0
- package/build/lib/schemas/adapter.d.ts +80 -1
- package/build/lib/schemas/adapter.d.ts.map +1 -1
- package/build/lib/schemas/adapter.js +48 -0
- package/build/lib/schemas/adapter.js.map +1 -1
- package/build/lib/schemas/lockfile.d.ts +2 -0
- package/build/lib/schemas/lockfile.d.ts.map +1 -1
- package/build/lib/schemas/lockfile.js +8 -2
- package/build/lib/schemas/lockfile.js.map +1 -1
- package/build/lib/scope.d.ts +11 -0
- package/build/lib/scope.d.ts.map +1 -1
- package/build/lib/scope.js +12 -0
- package/build/lib/scope.js.map +1 -1
- package/build/lib/sync.d.ts +4 -3
- package/build/lib/sync.d.ts.map +1 -1
- package/build/lib/sync.js +12 -5
- package/build/lib/sync.js.map +1 -1
- package/build/lib/toml-edit.d.ts +10 -0
- package/build/lib/toml-edit.d.ts.map +1 -0
- package/build/lib/toml-edit.js +311 -0
- package/build/lib/toml-edit.js.map +1 -0
- package/build/lib/tool-resolver.d.ts +5 -0
- package/build/lib/tool-resolver.d.ts.map +1 -1
- package/build/lib/tool-resolver.js +16 -12
- package/build/lib/tool-resolver.js.map +1 -1
- package/build/lib/uninstaller.d.ts +14 -1
- package/build/lib/uninstaller.d.ts.map +1 -1
- package/build/lib/uninstaller.js +73 -28
- package/build/lib/uninstaller.js.map +1 -1
- package/build/lib/updater.d.ts +5 -4
- package/build/lib/updater.d.ts.map +1 -1
- package/build/lib/updater.js +18 -12
- package/build/lib/updater.js.map +1 -1
- package/build/lib/write-file.d.ts +17 -4
- package/build/lib/write-file.d.ts.map +1 -1
- package/build/lib/write-file.js +60 -10
- package/build/lib/write-file.js.map +1 -1
- package/package.json +1 -1
- package/tool-adapters/claude-code.json +44 -0
- package/tool-adapters/codex-cli.json +28 -0
- package/tool-adapters/copilot-cli.json +46 -2
|
@@ -0,0 +1,375 @@
|
|
|
1
|
+
import { satisfies } from 'semver';
|
|
2
|
+
import { resolveInstalledPaths } from './adapter.js';
|
|
3
|
+
import { supportsType } from './asset-tools.js';
|
|
4
|
+
import { verifyChecksums, verifyConfigEntries } from './checksum.js';
|
|
5
|
+
import { getConfigEntriesForTool } from './config-entries.js';
|
|
6
|
+
import { freezeAssetInConfig } from './config.js';
|
|
7
|
+
import { errorMessage, GuidedError } from './errors.js';
|
|
8
|
+
import { isInstalledForTool } from './installed-for-tool.js';
|
|
9
|
+
import { rollBackInstalledAssets } from './installer.js';
|
|
10
|
+
import { addAssetToLockfile, findDependencyAsset, findInstalledAsset, findInstalledAssetWithFallback, identityKey, readLockfile, withLockfileErrorHandling, writeLockfile, } from './lockfile.js';
|
|
11
|
+
import { executeInstallPlanForTools, withoutKeptDependencies } from './multi-tool-install.js';
|
|
12
|
+
import { formatOrgName } from './org.js';
|
|
13
|
+
import { isLatestAlias } from './registry.js';
|
|
14
|
+
import { resolveInstallPlan } from './resolver.js';
|
|
15
|
+
import { fromRoot } from './root-path.js';
|
|
16
|
+
import {} from './schemas/config.js';
|
|
17
|
+
import { loadScopeConfig, resolveScope, saveScopeConfig, scopeLabel } from './scope.js';
|
|
18
|
+
import { resolveTools } from './tool-resolver.js';
|
|
19
|
+
import { planUninstall, uninstallAsset } from './uninstaller.js';
|
|
20
|
+
/** Thrown when a move is refused before anything is written. */
|
|
21
|
+
export class MoveError extends GuidedError {
|
|
22
|
+
name = 'MoveError';
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* `plan` with each dependency the source has installed at the source's version, so a dependency
|
|
26
|
+
* that moves keeps its lockfile entry. Only when the registry still has that version, it declares
|
|
27
|
+
* the same dependencies as the version the resolver picked (so the rest of the plan still fits
|
|
28
|
+
* it), and every dependent in the plan accepts it. The others stay as the resolver picked them.
|
|
29
|
+
*/
|
|
30
|
+
export function atSourceVersions(plan, source) {
|
|
31
|
+
const rangesFor = (name, type) => plan.entries.flatMap(({ versionData }) => (versionData.dependencies ?? [])
|
|
32
|
+
.filter((d) => d.name === name && d.type === type && d.version && !isLatestAlias(d.version))
|
|
33
|
+
.map((d) => d.version));
|
|
34
|
+
const entries = plan.entries.map((entry) => {
|
|
35
|
+
if (entry.reason !== 'dependency')
|
|
36
|
+
return entry;
|
|
37
|
+
const installed = findInstalledAsset(source, entry.asset.name, entry.asset.type, entry.asset.org);
|
|
38
|
+
if (!installed || installed.version === entry.version)
|
|
39
|
+
return entry;
|
|
40
|
+
const versionData = entry.asset.versions[installed.version];
|
|
41
|
+
if (!versionData || dependencyKey(versionData) !== dependencyKey(entry.versionData))
|
|
42
|
+
return entry;
|
|
43
|
+
const accepted = rangesFor(entry.asset.name, entry.asset.type).every((range) => satisfies(installed.version, range));
|
|
44
|
+
return accepted ? { ...entry, version: installed.version, versionData } : entry;
|
|
45
|
+
});
|
|
46
|
+
return { entries, totalCount: entries.length };
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Plan and run a move. Both lockfiles stay locked throughout, the user root's first, so two moves
|
|
50
|
+
* in opposite directions take them in the same order, and the plan ({@link planMove}) is worked out
|
|
51
|
+
* under them. The target install runs first and rolls itself back when it fails, so the source is
|
|
52
|
+
* untouched; so is it when giving the new target entries the source's pin, install reason, bundle
|
|
53
|
+
* and freeze fails, which rolls the target back too. Then the source uninstalls the asset and its
|
|
54
|
+
* moving dependencies (a failure there is `source-uninstall-failed`, with both scopes installed),
|
|
55
|
+
* and drops its freeze record.
|
|
56
|
+
*/
|
|
57
|
+
export async function executeMove(request, registry, onProgress) {
|
|
58
|
+
const { project, user } = await moveScopes(request);
|
|
59
|
+
return await withLockfileErrorHandling(user.root, () => withLockfileErrorHandling(project.root, async () => {
|
|
60
|
+
const plan = await planMove(request, registry, onProgress);
|
|
61
|
+
return { ...(await runMove(plan, request.force, onProgress)), plan };
|
|
62
|
+
}));
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* The command that finishes a move whose source half failed: the uninstall in the source scope.
|
|
66
|
+
*/
|
|
67
|
+
export function finishMoveCommand({ asset, from }) {
|
|
68
|
+
const spec = formatOrgName(asset.org, asset.name);
|
|
69
|
+
const where = from.scope === 'user' ? '--user' : `--project-root "${from.root}"`;
|
|
70
|
+
return `atk uninstall ${spec} --type ${asset.type} ${where} --yes`;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Work out a move without writing anything. The target scope is `to`, the source the other one;
|
|
74
|
+
* `-P` (or the marker walk) gives the project side. Refused here: a project root that is the user
|
|
75
|
+
* root, an asset the source doesn't have (or a bundle), one other source assets depend on, one the
|
|
76
|
+
* target has at another version, and a frozen one with local edits unless `force`. A target that
|
|
77
|
+
* already has the asset in place at the same version keeps its copy.
|
|
78
|
+
*/
|
|
79
|
+
export async function planMove(request, registry, onProgress) {
|
|
80
|
+
const { project, user } = await moveScopes(request);
|
|
81
|
+
const [from, to] = request.to === 'user' ? [project, user] : [user, project];
|
|
82
|
+
const [sourceTools, targetTools, source, target] = await Promise.all([
|
|
83
|
+
resolveTools(undefined, from.root),
|
|
84
|
+
resolveTools(undefined, to.root),
|
|
85
|
+
readLockfile(from.root),
|
|
86
|
+
readLockfile(to.root),
|
|
87
|
+
]);
|
|
88
|
+
const asset = findSourceAsset(source, request, from);
|
|
89
|
+
const displayName = formatOrgName(asset.org, asset.name);
|
|
90
|
+
const uninstall = planUninstall(source, asset.name, asset.org, asset.type);
|
|
91
|
+
if (uninstall.dependents.length > 0) {
|
|
92
|
+
const dependents = uninstall.dependents.map((d) => formatOrgName(d.org, d.name)).join(', ');
|
|
93
|
+
throw new MoveError(`"${displayName}" is needed by ${dependents} in ${scopeLabel(from)}, so it can't leave it.`, {
|
|
94
|
+
hint: `Move ${dependents} instead, or install ${displayName} in ${scopeLabel(to)} as well.`,
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
const atTarget = findInstalledAsset(target, asset.name, asset.type, asset.org);
|
|
98
|
+
if (atTarget && atTarget.version !== asset.version) {
|
|
99
|
+
throw new MoveError(`"${displayName}" is already installed in ${scopeLabel(to)} at v${atTarget.version}, not v${asset.version}.`, { hint: `Uninstall or update it in ${scopeLabel(to)} first, so the move doesn't change its version there.` });
|
|
100
|
+
}
|
|
101
|
+
const frozen = isFrozen(await loadScopeConfig(from.root), asset);
|
|
102
|
+
if (frozen && !request.force && (await hasLocalEdits(asset, sourceTools, from.root))) {
|
|
103
|
+
throw new MoveError(`"${displayName}" is frozen and has local edits in ${scopeLabel(from)}; moving it installs the registry's v${asset.version} and loses them.`, { hint: 'Run it again with --force to move it anyway.' });
|
|
104
|
+
}
|
|
105
|
+
const resolved = atSourceVersions(resolveInstallPlan(registry, asset.name, asset.type, asset.version, asset.org), source);
|
|
106
|
+
const inPlace = atTarget !== undefined &&
|
|
107
|
+
targetTools
|
|
108
|
+
.filter(({ adapter }) => supportsType(adapter, asset.type))
|
|
109
|
+
.every(({ adapter }) => isInstalledForTool(atTarget, adapter, to.root));
|
|
110
|
+
const requested = inPlace ? withoutEntry(resolved, asset) : resolved;
|
|
111
|
+
const install = withoutKeptDependencies(requested, target, targetTools, {
|
|
112
|
+
onProgress,
|
|
113
|
+
projectDir: to.root,
|
|
114
|
+
scope: to.scope,
|
|
115
|
+
});
|
|
116
|
+
const moving = uninstall.orphanedDependencies;
|
|
117
|
+
const movingKeys = new Set(moving.map(identityKey));
|
|
118
|
+
const staying = dependencyClosure(source, asset).filter((d) => !movingKeys.has(identityKey(d)));
|
|
119
|
+
return {
|
|
120
|
+
asset,
|
|
121
|
+
dependencies: { moving, staying },
|
|
122
|
+
from,
|
|
123
|
+
frozen,
|
|
124
|
+
install,
|
|
125
|
+
requested,
|
|
126
|
+
sourceTools,
|
|
127
|
+
targetTools,
|
|
128
|
+
to,
|
|
129
|
+
uninstall,
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Give the target's entries what the source's had. A moved asset (the asset and its moving
|
|
134
|
+
* dependencies) the target didn't have gets its install reason, its bundle and, at the same
|
|
135
|
+
* version, its pin; one it had gets a pin it lacks, and a direct install reason when either was
|
|
136
|
+
* direct. A staying dependency the target newly got its own copy of gets its pin. Then freeze the
|
|
137
|
+
* asset when it was frozen: the last step, so a failure before it leaves nothing frozen.
|
|
138
|
+
*/
|
|
139
|
+
async function carryOver(plan, targetBefore) {
|
|
140
|
+
const { to } = plan;
|
|
141
|
+
let lockfile = await readLockfile(to.root);
|
|
142
|
+
const pinOf = (source, placed) => source.pinnedVersion && source.version === placed.version ? { pinnedVersion: source.pinnedVersion } : {};
|
|
143
|
+
for (const moved of [plan.asset, ...plan.dependencies.moving]) {
|
|
144
|
+
const placed = findInstalledAsset(lockfile, moved.name, moved.type, moved.org);
|
|
145
|
+
if (!placed)
|
|
146
|
+
continue;
|
|
147
|
+
const had = findInstalledAsset(targetBefore, moved.name, moved.type, moved.org);
|
|
148
|
+
const direct = (moved.installReason ?? 'direct') === 'direct';
|
|
149
|
+
const entry = had
|
|
150
|
+
? {
|
|
151
|
+
...placed,
|
|
152
|
+
installReason: direct || (had.installReason ?? 'direct') === 'direct' ? 'direct' : 'dependency',
|
|
153
|
+
...(placed.pinnedVersion ? {} : pinOf(moved, placed)),
|
|
154
|
+
}
|
|
155
|
+
: {
|
|
156
|
+
...placed,
|
|
157
|
+
...(moved.bundleOrigin ? { bundleOrigin: moved.bundleOrigin } : {}),
|
|
158
|
+
installReason: direct ? 'direct' : 'dependency',
|
|
159
|
+
...pinOf(moved, placed),
|
|
160
|
+
};
|
|
161
|
+
lockfile = addAssetToLockfile(lockfile, entry);
|
|
162
|
+
}
|
|
163
|
+
for (const staying of plan.dependencies.staying) {
|
|
164
|
+
const placed = findInstalledAsset(lockfile, staying.name, staying.type, staying.org);
|
|
165
|
+
if (!placed || findInstalledAsset(targetBefore, staying.name, staying.type, staying.org))
|
|
166
|
+
continue;
|
|
167
|
+
lockfile = addAssetToLockfile(lockfile, { ...placed, ...pinOf(staying, placed) });
|
|
168
|
+
}
|
|
169
|
+
await writeLockfile(to.root, lockfile);
|
|
170
|
+
if (plan.frozen)
|
|
171
|
+
await freezeAssetInConfig(to.root, plan.asset.name, plan.asset.type, plan.asset.org);
|
|
172
|
+
}
|
|
173
|
+
/** The installed assets `asset` depends on in `lockfile`, directly or through others. */
|
|
174
|
+
function dependencyClosure(lockfile, asset) {
|
|
175
|
+
const found = new Map();
|
|
176
|
+
const queue = [asset];
|
|
177
|
+
while (queue.length > 0) {
|
|
178
|
+
const current = queue.shift();
|
|
179
|
+
for (const dependency of current.dependencies ?? []) {
|
|
180
|
+
const installed = findDependencyAsset(lockfile, dependency, current.org);
|
|
181
|
+
if (!installed || found.has(identityKey(installed)) || identityKey(installed) === identityKey(asset))
|
|
182
|
+
continue;
|
|
183
|
+
found.set(identityKey(installed), installed);
|
|
184
|
+
queue.push(installed);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
return [...found.values()];
|
|
188
|
+
}
|
|
189
|
+
/** A version's dependency declarations, as one comparable string. */
|
|
190
|
+
function dependencyKey({ dependencies = [], }) {
|
|
191
|
+
return dependencies
|
|
192
|
+
.map((d) => `${d.type}:${d.name}@${d.version ?? ''}`)
|
|
193
|
+
.sort()
|
|
194
|
+
.join(',');
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* The source's entry for the requested asset: the org's (the spec's, else the lockfile's), else
|
|
198
|
+
* the global one, as `uninstall` finds it. A name of several types needs `--type`, and a bundle
|
|
199
|
+
* is refused, since a move takes one asset.
|
|
200
|
+
*/
|
|
201
|
+
function findSourceAsset(source, request, from) {
|
|
202
|
+
const org = request.org ?? source.org;
|
|
203
|
+
const installed = findInstalledAssetWithFallback(source, request.name, request.type, org);
|
|
204
|
+
const spec = formatOrgName(request.org, request.name);
|
|
205
|
+
if (!installed) {
|
|
206
|
+
if ((source.assets ?? []).some((a) => a.bundleOrigin?.name === request.name)) {
|
|
207
|
+
throw new MoveError(`"${spec}" is a bundle; atk move moves one asset at a time.`, {
|
|
208
|
+
hint: 'Move each of its assets, or install the bundle in the other scope and uninstall it here.',
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
throw new MoveError(`"${spec}" is not installed in ${scopeLabel(from)}.`);
|
|
212
|
+
}
|
|
213
|
+
if (!request.type) {
|
|
214
|
+
const types = (source.assets ?? [])
|
|
215
|
+
.filter((a) => a.name === installed.name && a.org === installed.org)
|
|
216
|
+
.map((a) => a.type)
|
|
217
|
+
.sort();
|
|
218
|
+
if (types.length > 1) {
|
|
219
|
+
throw new MoveError(`"${spec}" is installed as more than one type (${types.join(', ')}). Name the one to move with --type.`);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
return installed;
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Whether any of the asset's files, or the config entries it registered, differs from what its
|
|
226
|
+
* lockfile entry recorded, for any tool that has it in place.
|
|
227
|
+
*/
|
|
228
|
+
async function hasLocalEdits(asset, tools, root) {
|
|
229
|
+
for (const { adapter } of tools) {
|
|
230
|
+
if (!isInstalledForTool(asset, adapter, root))
|
|
231
|
+
continue;
|
|
232
|
+
const files = resolveInstalledPaths(asset, adapter, root).files.map((f) => ({
|
|
233
|
+
checksum: f.checksum,
|
|
234
|
+
path: fromRoot(root, f.installedPath),
|
|
235
|
+
}));
|
|
236
|
+
if ((await verifyChecksums(files)).some((f) => !f.actual.startsWith('FILE_NOT_FOUND')))
|
|
237
|
+
return true;
|
|
238
|
+
const entries = getConfigEntriesForTool(asset, adapter);
|
|
239
|
+
if ((await verifyConfigEntries(entries, root)).some((f) => f.reason === 'CONFIG_CHECKSUM_MISMATCH'))
|
|
240
|
+
return true;
|
|
241
|
+
}
|
|
242
|
+
return false;
|
|
243
|
+
}
|
|
244
|
+
/** Whether `config` freezes exactly this asset: its org too, so a global asset isn't an org's. */
|
|
245
|
+
function isFrozen(config, asset) {
|
|
246
|
+
return (config?.frozenAssets ?? []).some((entry) => sameIdentity(entry, asset));
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* The two scopes of a move: the project (`-P`, or the marker walk) and the user root. A project
|
|
250
|
+
* root that is the user root leaves no other scope to move to.
|
|
251
|
+
*/
|
|
252
|
+
async function moveScopes(request) {
|
|
253
|
+
const project = await resolveScope({ projectRoot: request.projectRoot });
|
|
254
|
+
if (project.scope === 'user') {
|
|
255
|
+
throw new MoveError(`The project root is the user root (${project.root}), so there is no other scope to move to.`, {
|
|
256
|
+
hint: 'Run atk move from a project, or name one with -P <dir>.',
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
return { project, user: await resolveScope({ user: true }) };
|
|
260
|
+
}
|
|
261
|
+
/** The plan entry an install result is for. */
|
|
262
|
+
function planEntryOf(plan, result) {
|
|
263
|
+
return plan.entries.find(({ asset }) => asset.name === result.name && asset.type === result.type && asset.org === result.org);
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Undo a target install whose follow-up failed, as a failed multi-tool install does: for each
|
|
267
|
+
* tool, the assets its pass added leave the target, and the ones it already had in place get their
|
|
268
|
+
* entries from before back. A pass that moved an asset it had in place to another version stays,
|
|
269
|
+
* since that version may need what the pass added. Best-effort.
|
|
270
|
+
*/
|
|
271
|
+
async function rollBackTarget(plan, toolResults, targetBefore, onProgress) {
|
|
272
|
+
const { to } = plan;
|
|
273
|
+
try {
|
|
274
|
+
let lockfile = await readLockfile(to.root);
|
|
275
|
+
const restore = new Map();
|
|
276
|
+
for (let i = toolResults.length - 1; i >= 0; i--) {
|
|
277
|
+
const { adapter, tool } = plan.targetTools[i];
|
|
278
|
+
const placed = toolResults[i].results.flatMap((result) => {
|
|
279
|
+
const entry = planEntryOf(plan.requested, result);
|
|
280
|
+
if (!entry)
|
|
281
|
+
return [];
|
|
282
|
+
const before = findInstalledAsset(targetBefore, entry.asset.name, entry.asset.type, entry.asset.org);
|
|
283
|
+
const inPlace = before && isInstalledForTool(before, adapter, to.root) ? before : undefined;
|
|
284
|
+
return [{ asset: entry.asset, inPlace, result }];
|
|
285
|
+
});
|
|
286
|
+
if (placed.some(({ inPlace, result }) => inPlace && inPlace.version !== result.version)) {
|
|
287
|
+
onProgress?.(`Keeping the install for ${tool}: it moved an installed asset to another version.`);
|
|
288
|
+
continue;
|
|
289
|
+
}
|
|
290
|
+
const added = placed.filter(({ inPlace }) => !inPlace);
|
|
291
|
+
if (added.length > 0) {
|
|
292
|
+
lockfile = await rollBackInstalledAssets(added, targetBefore, lockfile, {
|
|
293
|
+
adapter,
|
|
294
|
+
onProgress,
|
|
295
|
+
projectDir: to.root,
|
|
296
|
+
});
|
|
297
|
+
}
|
|
298
|
+
for (const { inPlace } of placed)
|
|
299
|
+
if (inPlace)
|
|
300
|
+
restore.set(identityKey(inPlace), inPlace);
|
|
301
|
+
}
|
|
302
|
+
for (const before of restore.values())
|
|
303
|
+
lockfile = addAssetToLockfile(lockfile, before);
|
|
304
|
+
await writeLockfile(to.root, lockfile);
|
|
305
|
+
}
|
|
306
|
+
catch (error) {
|
|
307
|
+
onProgress?.(`Warning: Failed to roll back ${scopeLabel(to)} — ${errorMessage(error)}`);
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
/** Run a move planned under both lockfile locks (see {@link executeMove}). */
|
|
311
|
+
async function runMove(plan, force, onProgress) {
|
|
312
|
+
const { asset, from, to } = plan;
|
|
313
|
+
const targetBefore = await readLockfile(to.root);
|
|
314
|
+
const toolResults = await executeInstallPlanForTools(plan.requested, plan.targetTools, {
|
|
315
|
+
force,
|
|
316
|
+
onProgress,
|
|
317
|
+
onTool: (tool) => onProgress?.(`Installing in ${scopeLabel(to)} for ${tool}...`),
|
|
318
|
+
projectDir: to.root,
|
|
319
|
+
scope: to.scope,
|
|
320
|
+
});
|
|
321
|
+
try {
|
|
322
|
+
await carryOver(plan, targetBefore);
|
|
323
|
+
}
|
|
324
|
+
catch (error) {
|
|
325
|
+
await rollBackTarget(plan, toolResults, targetBefore, onProgress);
|
|
326
|
+
throw error;
|
|
327
|
+
}
|
|
328
|
+
let removed;
|
|
329
|
+
try {
|
|
330
|
+
onProgress?.(`Removing from ${scopeLabel(from)}...`);
|
|
331
|
+
const lockfile = await readLockfile(from.root);
|
|
332
|
+
const [first, ...others] = plan.sourceTools;
|
|
333
|
+
removed = await uninstallAsset(asset.name, {
|
|
334
|
+
adapter: first.adapter,
|
|
335
|
+
additionalAdapters: others.map((t) => t.adapter),
|
|
336
|
+
lockfile,
|
|
337
|
+
onProgress,
|
|
338
|
+
org: asset.org,
|
|
339
|
+
plan: planUninstall(lockfile, asset.name, asset.org, asset.type),
|
|
340
|
+
projectDir: from.root,
|
|
341
|
+
scope: from.scope,
|
|
342
|
+
type: asset.type,
|
|
343
|
+
});
|
|
344
|
+
}
|
|
345
|
+
catch (error) {
|
|
346
|
+
return { error, outcome: 'source-uninstall-failed', toolResults };
|
|
347
|
+
}
|
|
348
|
+
const warnings = [];
|
|
349
|
+
if (plan.frozen) {
|
|
350
|
+
try {
|
|
351
|
+
await thaw(from.root, asset);
|
|
352
|
+
}
|
|
353
|
+
catch (error) {
|
|
354
|
+
warnings.push(`Failed to remove the freeze record from ${scopeLabel(from)}: ${errorMessage(error)}`);
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
return { outcome: 'moved', removed, toolResults, warnings };
|
|
358
|
+
}
|
|
359
|
+
function sameIdentity(a, b) {
|
|
360
|
+
return a.name === b.name && a.type === b.type && a.org === b.org;
|
|
361
|
+
}
|
|
362
|
+
/** Remove exactly this asset's freeze record from the config of the scope at `root`. */
|
|
363
|
+
async function thaw(root, asset) {
|
|
364
|
+
const config = await loadScopeConfig(root);
|
|
365
|
+
if (!config || !isFrozen(config, asset))
|
|
366
|
+
return;
|
|
367
|
+
const frozenAssets = (config.frozenAssets ?? []).filter((entry) => !sameIdentity(entry, asset));
|
|
368
|
+
await saveScopeConfig(root, { ...config, frozenAssets });
|
|
369
|
+
}
|
|
370
|
+
/** `plan` without the entry of `asset`. */
|
|
371
|
+
function withoutEntry(plan, asset) {
|
|
372
|
+
const entries = plan.entries.filter((entry) => !sameIdentity(entry.asset, asset));
|
|
373
|
+
return { entries, totalCount: entries.length };
|
|
374
|
+
}
|
|
375
|
+
//# sourceMappingURL=mover.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mover.js","sourceRoot":"","sources":["../../src/lib/mover.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,7 +46,7 @@ export async function executeInstallPlanForTools(requestedPlan, tools, options)
|
|
|
46
46
|
toolResults.push({ results, tool, ...toolSupportNotes(plan, adapter) });
|
|
47
47
|
}
|
|
48
48
|
if (tools.length > 1)
|
|
49
|
-
assertInstalledByAnyTool(plan, toolResults);
|
|
49
|
+
assertInstalledByAnyTool(plan, toolResults, options.scope);
|
|
50
50
|
if (toolResults.some((r) => r.skipped))
|
|
51
51
|
await excludeSkippedTools(toolResults, tools, before, options.projectDir);
|
|
52
52
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multi-tool-install.js","sourceRoot":"","sources":["../../src/lib/multi-tool-install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAOnC,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAChH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,cAAc,EAEd,gBAAgB,EAEhB,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACpG,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAc,aAAa,EAAE,MAAM,YAAY,CAAC;AA8BvD;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,aAA0B,EAC1B,KAAgD,EAChD,OAAkG;IAElG,MAAM,EAAE,MAAM,EAAE,GAAG,cAAc,EAAE,GAAG,OAAO,CAAC;IAC9C,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACtD,MAAM,IAAI,GAAG,uBAAuB,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAC5E,mGAAmG;IACnG,MAAM,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;QAC9C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAoC,CAAC;QAC5D,KAAK,MAAM,KAAK,IAAI,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;YACpD,MAAM,SAAS,GAAG,kBAAkB,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAClG,IAAI,SAAS,IAAI,kBAAkB,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC;gBAAE,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAC7G,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,MAAM,WAAW,GAAwB,EAAE,CAAC;IAC5C,IAAI,CAAC;QACH,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,KAAK,EAAE,CAAC;YACtC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;YACf,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE;gBAC7C,GAAG,cAAc;gBACjB,OAAO;gBACP,eAAe,EAAE,MAAM;gBACvB,eAAe,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC;aAClC,CAAC,CAAC;YACH,WAAW,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;QAC1E,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,wBAAwB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"multi-tool-install.js","sourceRoot":"","sources":["../../src/lib/multi-tool-install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAOnC,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAChH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,cAAc,EAEd,gBAAgB,EAEhB,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACpG,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAc,aAAa,EAAE,MAAM,YAAY,CAAC;AA8BvD;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,aAA0B,EAC1B,KAAgD,EAChD,OAAkG;IAElG,MAAM,EAAE,MAAM,EAAE,GAAG,cAAc,EAAE,GAAG,OAAO,CAAC;IAC9C,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACtD,MAAM,IAAI,GAAG,uBAAuB,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAC5E,mGAAmG;IACnG,MAAM,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;QAC9C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAoC,CAAC;QAC5D,KAAK,MAAM,KAAK,IAAI,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;YACpD,MAAM,SAAS,GAAG,kBAAkB,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAClG,IAAI,SAAS,IAAI,kBAAkB,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC;gBAAE,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAC7G,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,MAAM,WAAW,GAAwB,EAAE,CAAC;IAC5C,IAAI,CAAC;QACH,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,KAAK,EAAE,CAAC;YACtC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;YACf,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE;gBAC7C,GAAG,cAAc;gBACjB,OAAO;gBACP,eAAe,EAAE,MAAM;gBACvB,eAAe,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC;aAClC,CAAC,CAAC;YACH,WAAW,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;QAC1E,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,wBAAwB,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QACjF,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;YAAE,MAAM,mBAAmB,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IACpH,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,gGAAgG;QAChG,IAAI,KAAK,YAAY,gBAAgB,IAAI,KAAK,CAAC,WAAW;YAAE,MAAM,KAAK,CAAC;QACxE,IAAI,CAAC;YACH,IAAI,QAA8B,CAAC;YACnC,KAAK,IAAI,CAAC,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBACjD,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;gBACpC,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,CAAE,CAAC;gBAClC,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAChD,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;oBACzD,KAAK,EAAE,OAAO,CAAC,CAAC,CAAE,CAAC,KAAK;oBACxB,KAAK,EAAE,OAAO,CAAC,CAAC,CAAE;oBAClB,MAAM;iBACP,CAAC,CAAC,CAAC;gBACJ,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;oBACpG,OAAO,CAAC,UAAU,EAAE,CAAC,2BAA2B,IAAI,mDAAmD,CAAC,CAAC;oBACzG,SAAS;gBACX,CAAC;gBACD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;gBAChE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;oBAAE,SAAS;gBACjC,OAAO,CAAC,UAAU,EAAE,CAAC,gCAAgC,KAAK,CAAC,MAAM,2BAA2B,IAAI,KAAK,CAAC,CAAC;gBACvG,QAAQ,GAAG,MAAM,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,IAAI,CAAC,MAAM,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE;oBAC5G,GAAG,cAAc;oBACjB,OAAO;iBACR,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAAC,OAAO,aAAsB,EAAE,CAAC;YAChC,OAAO,CAAC,UAAU,EAAE,CAAC,kDAAkD,YAAY,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QACxG,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,uBAAuB,CACrC,IAAiB,EACjB,SAAmB,EACnB,KAAkC,EAClC,OAAoE;IAEpE,8FAA8F;IAC9F,4FAA4F;IAC5F,2EAA2E;IAC3E,MAAM,MAAM,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC3C,MAAM,SAAS,GAAG,CAAC,eAAwE,EAAE,EAAE,EAAE;QAC/F,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,YAAY,EAAE,CAAC;YACnD,IAAI,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;gBACpC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;QACvF,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,IAAI,GAAG,EAAoC,CAAC;IACzD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;QAC9C,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC;QACxC,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC,CAAC,kBAAkB,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3G,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;YAC1C,SAAS;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;QAC3G,MAAM,OAAO,GAAG,KAAK;aAClB,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;aAC5E,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;QACpF,IAAI,QAAQ,IAAI,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACzB,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YAChC,SAAS;QACX,CAAC;QAED,IAAI,OAAO,CAAC,aAAa,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC;YAC/D,MAAM,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QACvE,CAAC;QACD,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACjC,KAAK,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC;QAC1D,OAAO,CAAC,UAAU,EAAE,CAAC,WAAW,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,qBAAqB,CAAC,CAAC;IAChH,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IACjE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;AACjD,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,mBAAmB,CAChC,WAAgC,EAChC,KAAgD,EAChD,MAAgB,EAChB,UAAkB;IAElB,IAAI,QAAQ,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,CAAC;IAC9C,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,KAAK,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC;QAChE,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;QAC9B,KAAK,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,OAAO,EAAE,CAAC;YAC1C,MAAM,SAAS,GAAG,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;YAChE,IAAI,CAAC,SAAS,IAAI,iBAAiB,CAAC,SAAS,EAAE,IAAI,CAAC;gBAAE,SAAS;YAC/D,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;YAC7D,IAAI,QAAQ,IAAI,kBAAkB,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC;gBAAE,SAAS;YAC5E,QAAQ,GAAG,kBAAkB,CAAC,QAAQ,EAAE,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;YAC3E,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;IACH,CAAC;IACD,IAAI,OAAO;QAAE,MAAM,aAAa,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AACzD,CAAC;AAED;;;;GAIG;AACH,SAAS,qBAAqB,CAC5B,KAAuB,EACvB,OAAuB,EACvB,QAAiB,EACjB,KAAwB;IAExB,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,MAAM,MAAM,GAAG,IAAI,WAAW,kBAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;IAClE,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,IAAI,cAAc,CACvB,GAAG,MAAM,iEAAiE,KAAK,CAAC,OAAO,GAAG,EAC1F;YACE,OAAO,EAAE,aAAa,CAAC,UAAU,EAAE,KAAK,CAAC;YACzC,IAAI,EAAE,sEAAsE;SAC7E,CACF,CAAC;IACJ,CAAC;IACD,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,sBAAsB,CAAC;IACtF,OAAO,IAAI,cAAc,CAAC,GAAG,MAAM,WAAW,SAAS,8BAA8B,KAAK,CAAC,OAAO,IAAI,EAAE;QACtG,OAAO,EAAE,aAAa,CAAC,aAAa,WAAW,EAAE,EAAE,KAAK,CAAC;QACzD,IAAI,EAAE,6CAA6C;KACpD,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,IAAiB,EAAE,OAAgB;IAC3D,MAAM,OAAO,GAAqB,EAAE,CAAC;IACrC,MAAM,QAAQ,GAA4B,EAAE,CAAC;IAC7C,KAAK,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QAClD,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC;YAAE,SAAS;QAClG,MAAM,QAAQ,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,CAAC;QAC1G,IAAI,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;YACxD,MAAM,OAAO,GACX,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,UAAU,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;gBACjF,OAAO,OAAO,CAAC,IAAI,0BAA0B,CAAC;YAChD,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,GAAG,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QACrF,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;IACD,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AACtG,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"owned-paths.d.ts","sourceRoot":"","sources":["../../src/lib/owned-paths.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"owned-paths.d.ts","sourceRoot":"","sources":["../../src/lib/owned-paths.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAInF,OAAO,EAAE,KAAK,kBAAkB,EAAyD,MAAM,eAAe,CAAC;AAI/G;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;AAEvE,wFAAwF;AACxF,MAAM,WAAW,iBAAiB;IAChC,wFAAwF;IACxF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAClC,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC,EACpD,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,MAAM,GACjB,iBAAiB,CAYnB;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,MAAM,GACjB,iBAAiB,EAAE,CAKrB;AAED;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,iBAAiB,EACxB,MAAM,EAAE,iBAAiB,EACzB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,OAAO,CAAC,CAGlB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAClC,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC,EACpD,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,MAAM,GACjB,GAAG,CAAC,MAAM,CAAC,CAQb;AAED;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,WAAW,EAAE,EACtB,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC,EACpD,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAClC,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAa/B;AAED;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,KAAK,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,EAChD,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC,EACpD,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAClC,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,KAAK,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAmBpE"}
|
package/build/lib/owned-paths.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { readFile } from 'node:fs/promises';
|
|
2
|
-
import {
|
|
3
|
-
import { resolveInstalledPaths } from './adapter.js';
|
|
2
|
+
import { adapterAsPlaced, resolveInstalledPaths } from './adapter.js';
|
|
4
3
|
import { isExcludedForTool, supportsType } from './asset-tools.js';
|
|
5
4
|
import { matchesChecksum, verifyChecksums, verifyConfigEntries } from './checksum.js';
|
|
6
5
|
import { getConfigEntriesForTool } from './config-entries.js';
|
|
6
|
+
import { fromRoot } from './root-path.js';
|
|
7
7
|
/**
|
|
8
8
|
* The config entries, memory-template blocks and hook groups that installed assets other than
|
|
9
9
|
* `asset` placed for the adapter's tool. Like {@link pathsOwnedByOthers}, for the entries a global
|
|
@@ -33,7 +33,7 @@ export function configEntriesToRemove(asset, adapter, projectDir) {
|
|
|
33
33
|
const ownEntries = getConfigEntriesForTool(asset, adapter);
|
|
34
34
|
return ownEntries.length > 0
|
|
35
35
|
? ownEntries.map((e) => ({ checksum: e.checksum, command: e.command, file: e.file, key: e.key }))
|
|
36
|
-
: resolveInstalledPaths(asset, adapter, projectDir).configEntries;
|
|
36
|
+
: resolveInstalledPaths(asset, adapterAsPlaced(adapter, asset), projectDir).configEntries;
|
|
37
37
|
}
|
|
38
38
|
/**
|
|
39
39
|
* Whether `entry`, which an asset being removed placed, now holds the value of another asset that
|
|
@@ -54,8 +54,8 @@ export async function holdsAnotherOwnersValue(entry, owners, projectDir) {
|
|
|
54
54
|
export function pathsOwnedByOthers(lockfile, asset, adapter, projectDir) {
|
|
55
55
|
const paths = new Set();
|
|
56
56
|
for (const other of otherAssetsPlacedFor(lockfile, asset, adapter)) {
|
|
57
|
-
for (const file of resolveInstalledPaths(other, adapter, projectDir).files) {
|
|
58
|
-
paths.add(
|
|
57
|
+
for (const file of resolveInstalledPaths(other, adapterAsPlaced(adapter, other), projectDir).files) {
|
|
58
|
+
paths.add(fromRoot(projectDir, file.installedPath));
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
61
|
return paths;
|
|
@@ -117,15 +117,15 @@ export async function verifyOwnFiles(files, asset, lockfile, adapter, projectDir
|
|
|
117
117
|
* recorded path and an adapter's `./`-prefixed one match.
|
|
118
118
|
*/
|
|
119
119
|
function configEntryKey(entry, projectDir) {
|
|
120
|
-
return `${
|
|
120
|
+
return `${fromRoot(projectDir, entry.file)}#${entry.key}#${entry.command ?? ''}`;
|
|
121
121
|
}
|
|
122
122
|
/**
|
|
123
123
|
* For each installed asset other than `asset` placed for the adapter's tool, the absolute paths of
|
|
124
124
|
* its files mapped to the checksums it recorded for them.
|
|
125
125
|
*/
|
|
126
126
|
function filesPlacedByOthers(lockfile, asset, adapter, projectDir) {
|
|
127
|
-
return otherAssetsPlacedFor(lockfile, asset, adapter).map((other) => new Map(resolveInstalledPaths(other, adapter, projectDir).files.map((file) => [
|
|
128
|
-
|
|
127
|
+
return otherAssetsPlacedFor(lockfile, asset, adapter).map((other) => new Map(resolveInstalledPaths(other, adapterAsPlaced(adapter, other), projectDir).files.map((file) => [
|
|
128
|
+
fromRoot(projectDir, file.installedPath),
|
|
129
129
|
file.checksum,
|
|
130
130
|
])));
|
|
131
131
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"owned-paths.js","sourceRoot":"","sources":["../../src/lib/owned-paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"owned-paths.js","sourceRoot":"","sources":["../../src/lib/owned-paths.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { ProjectConfig } from './schemas/config.js';
|
|
2
|
+
import type { Lockfile } from './schemas/lockfile.js';
|
|
3
|
+
import { type ResolvedScope } from './scope.js';
|
|
4
|
+
/** A scope a read command shows: its root, its lockfile and its config. */
|
|
5
|
+
export interface ReadScope extends ResolvedScope {
|
|
6
|
+
/** The scope's config; null when it has none, or when the command didn't ask for it (`withConfig`). */
|
|
7
|
+
config: null | ProjectConfig;
|
|
8
|
+
lockfile: Lockfile;
|
|
9
|
+
}
|
|
10
|
+
/** The scopes a read command shows, project first, and why the user scope is missing when it can't be read. */
|
|
11
|
+
export interface ReadScopes {
|
|
12
|
+
/** The command's own scope first. */
|
|
13
|
+
scopes: [ReadScope, ...ReadScope[]];
|
|
14
|
+
/** Set when the user root has a lockfile that couldn't be read, so only the project is shown. */
|
|
15
|
+
warning?: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Resolve the scopes `list` and `outdated` show. `--user` (or a root that is the user root)
|
|
19
|
+
* shows the user scope alone, and `--project` the project alone. Otherwise a project also shows
|
|
20
|
+
* the user scope when the user root has installs, so the user's own assets appear beside the
|
|
21
|
+
* project's. The project's lockfile and config load as they always have, and fail the command
|
|
22
|
+
* when they can't; the user scope's only add a warning, so the project view always works.
|
|
23
|
+
* A command that reads no config passes `withConfig: false`, so a config that doesn't load
|
|
24
|
+
* doesn't fail it.
|
|
25
|
+
*/
|
|
26
|
+
export declare function resolveReadScopes({ project, projectRoot, user, withConfig, }: {
|
|
27
|
+
project?: boolean;
|
|
28
|
+
projectRoot?: string;
|
|
29
|
+
user?: boolean;
|
|
30
|
+
withConfig?: boolean;
|
|
31
|
+
}): Promise<ReadScopes>;
|
|
32
|
+
//# sourceMappingURL=read-scopes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read-scopes.d.ts","sourceRoot":"","sources":["../../src/lib/read-scopes.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAItD,OAAO,EAAmB,KAAK,aAAa,EAA6C,MAAM,YAAY,CAAC;AAE5G,2EAA2E;AAC3E,MAAM,WAAW,SAAU,SAAQ,aAAa;IAC9C,uGAAuG;IACvG,MAAM,EAAE,IAAI,GAAG,aAAa,CAAC;IAC7B,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED,+GAA+G;AAC/G,MAAM,WAAW,UAAU;IACzB,qCAAqC;IACrC,MAAM,EAAE,CAAC,SAAS,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC;IACpC,iGAAiG;IACjG,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CAAC,EACtC,OAAe,EACf,WAAW,EACX,IAAY,EACZ,UAAiB,GAClB,EAAE;IACD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,GAAG,OAAO,CAAC,UAAU,CAAC,CAoCtB"}
|