@detergent-software/atk 3.0.0-dev.5 → 3.0.0-dev.9
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/README.md +361 -0
- package/build/commands/audit.d.ts.map +1 -1
- package/build/commands/audit.js +2 -3
- package/build/commands/audit.js.map +1 -1
- package/build/commands/browse.d.ts.map +1 -1
- package/build/commands/browse.js +12 -2
- package/build/commands/browse.js.map +1 -1
- package/build/commands/diff.d.ts.map +1 -1
- package/build/commands/diff.js +2 -3
- package/build/commands/diff.js.map +1 -1
- package/build/commands/info.d.ts.map +1 -1
- package/build/commands/info.js +2 -15
- package/build/commands/info.js.map +1 -1
- package/build/commands/install.js +1 -1
- package/build/commands/install.js.map +1 -1
- package/build/commands/list.d.ts +2 -2
- package/build/commands/list.d.ts.map +1 -1
- package/build/commands/list.js +132 -38
- package/build/commands/list.js.map +1 -1
- package/build/commands/prune.d.ts.map +1 -1
- package/build/commands/prune.js +2 -7
- package/build/commands/prune.js.map +1 -1
- package/build/commands/sync.js +4 -4
- package/build/commands/sync.js.map +1 -1
- package/build/components/AssetTable.d.ts +4 -3
- package/build/components/AssetTable.d.ts.map +1 -1
- package/build/components/AssetTable.js +30 -40
- package/build/components/AssetTable.js.map +1 -1
- package/build/components/FilterBar.d.ts +10 -3
- package/build/components/FilterBar.d.ts.map +1 -1
- package/build/components/FilterBar.js +4 -4
- package/build/components/FilterBar.js.map +1 -1
- package/build/components/Link.d.ts +7 -0
- package/build/components/Link.d.ts.map +1 -0
- package/build/components/Link.js +6 -0
- package/build/components/Link.js.map +1 -0
- package/build/components/ListActionBar.d.ts +9 -0
- package/build/components/ListActionBar.d.ts.map +1 -0
- package/build/components/ListActionBar.js +30 -0
- package/build/components/ListActionBar.js.map +1 -0
- package/build/components/ListBrowseList.d.ts +25 -0
- package/build/components/ListBrowseList.d.ts.map +1 -0
- package/build/components/ListBrowseList.js +55 -0
- package/build/components/ListBrowseList.js.map +1 -0
- package/build/components/ListExpandedRow.d.ts +36 -0
- package/build/components/ListExpandedRow.d.ts.map +1 -0
- package/build/components/ListExpandedRow.js +46 -0
- package/build/components/ListExpandedRow.js.map +1 -0
- package/build/components/ListHelpBar.d.ts +19 -0
- package/build/components/ListHelpBar.d.ts.map +1 -0
- package/build/components/ListHelpBar.js +11 -0
- package/build/components/ListHelpBar.js.map +1 -0
- package/build/components/index.d.ts +5 -0
- package/build/components/index.d.ts.map +1 -1
- package/build/components/index.js +5 -0
- package/build/components/index.js.map +1 -1
- package/build/hooks/useListActions.d.ts +14 -0
- package/build/hooks/useListActions.d.ts.map +1 -0
- package/build/hooks/useListActions.js +151 -0
- package/build/hooks/useListActions.js.map +1 -0
- package/build/hooks/useListState.d.ts +147 -0
- package/build/hooks/useListState.d.ts.map +1 -0
- package/build/hooks/useListState.js +445 -0
- package/build/hooks/useListState.js.map +1 -0
- package/build/lib/format.d.ts +6 -0
- package/build/lib/format.d.ts.map +1 -0
- package/build/lib/format.js +18 -0
- package/build/lib/format.js.map +1 -0
- package/build/lib/github.d.ts +8 -0
- package/build/lib/github.d.ts.map +1 -1
- package/build/lib/github.js +9 -0
- package/build/lib/github.js.map +1 -1
- package/build/lib/installer.js +1 -1
- package/build/lib/installer.js.map +1 -1
- package/build/lib/lockfile.d.ts +13 -13
- package/build/lib/lockfile.d.ts.map +1 -1
- package/build/lib/lockfile.js +37 -39
- package/build/lib/lockfile.js.map +1 -1
- package/build/lib/schemas/lockfile.d.ts +2 -2
- package/build/lib/schemas/lockfile.js +1 -1
- package/build/lib/schemas/lockfile.js.map +1 -1
- package/build/lib/uninstaller.d.ts.map +1 -1
- package/build/lib/uninstaller.js +2 -5
- package/build/lib/uninstaller.js.map +1 -1
- package/build/lib/updater.d.ts.map +1 -1
- package/build/lib/updater.js +1 -4
- package/build/lib/updater.js.map +1 -1
- package/package.json +78 -65
- package/tool-adapters/claude-code.json +1 -1
- package/tool-adapters/copilot-cli.json +1 -1
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type RefObject } from 'react';
|
|
2
|
+
import type { Adapter } from '../lib/schemas/adapter.js';
|
|
3
|
+
import type { ListAction, ListState } from './useListState.js';
|
|
4
|
+
/**
|
|
5
|
+
* Encapsulates the action execution side-effect for the list command.
|
|
6
|
+
*
|
|
7
|
+
* Handles freeze-toggle, pin-toggle, uninstall, and update actions,
|
|
8
|
+
* each following a lock-read-act-write-dispatch pattern.
|
|
9
|
+
*/
|
|
10
|
+
export declare function useListActions(state: ListState, dispatch: React.Dispatch<ListAction>, projectDirRef: RefObject<string>, resolvedToolRef: RefObject<null | {
|
|
11
|
+
adapter: Adapter;
|
|
12
|
+
tool: string;
|
|
13
|
+
}>): void;
|
|
14
|
+
//# sourceMappingURL=useListActions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useListActions.d.ts","sourceRoot":"","sources":["../../src/hooks/useListActions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAqB,MAAM,OAAO,CAAC;AAE1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAe/D;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,EACpC,aAAa,EAAE,SAAS,CAAC,MAAM,CAAC,EAChC,eAAe,EAAE,SAAS,CAAC,IAAI,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,GACpE,IAAI,CAoJN"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { useEffect, useRef } from 'react';
|
|
2
|
+
import { freezeAsset, LockfileLockedError, pinAssetVersion, readLockfile, thawAsset, unpinAssetVersion, withLockfileLock, writeLockfile, } from '../lib/lockfile.js';
|
|
3
|
+
import { uninstallAsset } from '../lib/uninstaller.js';
|
|
4
|
+
import { updateAsset } from '../lib/updater.js';
|
|
5
|
+
/**
|
|
6
|
+
* Encapsulates the action execution side-effect for the list command.
|
|
7
|
+
*
|
|
8
|
+
* Handles freeze-toggle, pin-toggle, uninstall, and update actions,
|
|
9
|
+
* each following a lock-read-act-write-dispatch pattern.
|
|
10
|
+
*/
|
|
11
|
+
export function useListActions(state, dispatch, projectDirRef, resolvedToolRef) {
|
|
12
|
+
const isExecutingAction = state.status === 'ready' && state.mode.kind === 'executing-action';
|
|
13
|
+
const stateRef = useRef(state);
|
|
14
|
+
stateRef.current = state;
|
|
15
|
+
useEffect(() => {
|
|
16
|
+
if (!isExecutingAction)
|
|
17
|
+
return;
|
|
18
|
+
let cancelled = false;
|
|
19
|
+
const currentState = stateRef.current;
|
|
20
|
+
if (currentState.status !== 'ready')
|
|
21
|
+
return;
|
|
22
|
+
if (currentState.mode.kind !== 'executing-action')
|
|
23
|
+
return;
|
|
24
|
+
const { actionKind, asset } = currentState.mode;
|
|
25
|
+
(async () => {
|
|
26
|
+
try {
|
|
27
|
+
switch (actionKind) {
|
|
28
|
+
case 'freeze-toggle': {
|
|
29
|
+
await withLockfileLock(projectDirRef.current, async () => {
|
|
30
|
+
let lockfile = await readLockfile(projectDirRef.current);
|
|
31
|
+
if (asset.frozen) {
|
|
32
|
+
lockfile = thawAsset(lockfile, asset.name, asset.type, asset.org);
|
|
33
|
+
if (!cancelled) {
|
|
34
|
+
dispatch({ message: `Thawing ${asset.name}...`, type: 'ACTION_PROGRESS' });
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
lockfile = freezeAsset(lockfile, asset.name, asset.type, asset.org);
|
|
39
|
+
if (!cancelled) {
|
|
40
|
+
dispatch({ message: `Freezing ${asset.name}...`, type: 'ACTION_PROGRESS' });
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
await writeLockfile(projectDirRef.current, lockfile);
|
|
44
|
+
});
|
|
45
|
+
if (!cancelled) {
|
|
46
|
+
const newLockfile = await readLockfile(projectDirRef.current);
|
|
47
|
+
const action = asset.frozen ? 'Thawed' : 'Froze';
|
|
48
|
+
dispatch({ message: `${action} ${asset.name}`, success: true, type: 'ACTION_COMPLETE' });
|
|
49
|
+
dispatch({ lockfile: newLockfile, type: 'REFRESH_LOCKFILE' });
|
|
50
|
+
}
|
|
51
|
+
break;
|
|
52
|
+
}
|
|
53
|
+
case 'pin-toggle': {
|
|
54
|
+
await withLockfileLock(projectDirRef.current, async () => {
|
|
55
|
+
let lockfile = await readLockfile(projectDirRef.current);
|
|
56
|
+
if (asset.pinnedVersion) {
|
|
57
|
+
lockfile = unpinAssetVersion(lockfile, asset.name, asset.type, asset.org);
|
|
58
|
+
if (!cancelled) {
|
|
59
|
+
dispatch({ message: `Unpinning ${asset.name}...`, type: 'ACTION_PROGRESS' });
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
lockfile = pinAssetVersion(lockfile, asset.name, asset.version, asset.type, asset.org);
|
|
64
|
+
if (!cancelled) {
|
|
65
|
+
dispatch({ message: `Pinning ${asset.name} to ${asset.version}...`, type: 'ACTION_PROGRESS' });
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
await writeLockfile(projectDirRef.current, lockfile);
|
|
69
|
+
});
|
|
70
|
+
if (!cancelled) {
|
|
71
|
+
const newLockfile = await readLockfile(projectDirRef.current);
|
|
72
|
+
const action = asset.pinnedVersion ? 'Unpinned' : 'Pinned';
|
|
73
|
+
dispatch({ message: `${action} ${asset.name}`, success: true, type: 'ACTION_COMPLETE' });
|
|
74
|
+
dispatch({ lockfile: newLockfile, type: 'REFRESH_LOCKFILE' });
|
|
75
|
+
}
|
|
76
|
+
break;
|
|
77
|
+
}
|
|
78
|
+
case 'uninstall': {
|
|
79
|
+
const resolved = resolvedToolRef.current;
|
|
80
|
+
if (!resolved) {
|
|
81
|
+
throw new Error('No tools configured. Run `atk setup` to select your AI coding tool.');
|
|
82
|
+
}
|
|
83
|
+
if (!cancelled) {
|
|
84
|
+
dispatch({ message: `Uninstalling ${asset.name}...`, type: 'ACTION_PROGRESS' });
|
|
85
|
+
}
|
|
86
|
+
await uninstallAsset(asset.name, {
|
|
87
|
+
adapter: resolved.adapter,
|
|
88
|
+
onProgress: (message) => {
|
|
89
|
+
if (!cancelled)
|
|
90
|
+
dispatch({ message, type: 'ACTION_PROGRESS' });
|
|
91
|
+
},
|
|
92
|
+
projectDir: projectDirRef.current,
|
|
93
|
+
});
|
|
94
|
+
if (!cancelled) {
|
|
95
|
+
const newLockfile = await readLockfile(projectDirRef.current);
|
|
96
|
+
dispatch({ message: `Uninstalled ${asset.name}`, success: true, type: 'ACTION_COMPLETE' });
|
|
97
|
+
dispatch({ lockfile: newLockfile, type: 'REFRESH_LOCKFILE' });
|
|
98
|
+
}
|
|
99
|
+
break;
|
|
100
|
+
}
|
|
101
|
+
case 'update': {
|
|
102
|
+
const resolved = resolvedToolRef.current;
|
|
103
|
+
if (!resolved) {
|
|
104
|
+
throw new Error('No tools configured. Run `atk setup` to select your AI coding tool.');
|
|
105
|
+
}
|
|
106
|
+
await withLockfileLock(projectDirRef.current, async () => {
|
|
107
|
+
const lockfile = await readLockfile(projectDirRef.current);
|
|
108
|
+
const registry = currentState.registry;
|
|
109
|
+
const installed = (lockfile.assets ?? []).find((a) => a.name === asset.name && a.type === asset.type);
|
|
110
|
+
if (!installed) {
|
|
111
|
+
throw new Error(`Asset "${asset.name}" is no longer installed.`);
|
|
112
|
+
}
|
|
113
|
+
if (!cancelled) {
|
|
114
|
+
dispatch({ message: `Updating ${asset.name}...`, type: 'ACTION_PROGRESS' });
|
|
115
|
+
}
|
|
116
|
+
await updateAsset(asset.name, installed, registry, {
|
|
117
|
+
adapter: resolved.adapter,
|
|
118
|
+
lockfile,
|
|
119
|
+
onProgress: (message) => {
|
|
120
|
+
if (!cancelled)
|
|
121
|
+
dispatch({ message, type: 'ACTION_PROGRESS' });
|
|
122
|
+
},
|
|
123
|
+
projectDir: projectDirRef.current,
|
|
124
|
+
});
|
|
125
|
+
});
|
|
126
|
+
if (!cancelled) {
|
|
127
|
+
const newLockfile = await readLockfile(projectDirRef.current);
|
|
128
|
+
dispatch({ message: `Updated ${asset.name} successfully`, success: true, type: 'ACTION_COMPLETE' });
|
|
129
|
+
dispatch({ lockfile: newLockfile, type: 'REFRESH_LOCKFILE' });
|
|
130
|
+
}
|
|
131
|
+
break;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
catch (err) {
|
|
136
|
+
if (!cancelled) {
|
|
137
|
+
const message = err instanceof LockfileLockedError
|
|
138
|
+
? 'Another ATK process is currently modifying this project. Please wait and try again.'
|
|
139
|
+
: err instanceof Error
|
|
140
|
+
? err.message
|
|
141
|
+
: String(err);
|
|
142
|
+
dispatch({ message, success: false, type: 'ACTION_COMPLETE' });
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
})();
|
|
146
|
+
return () => {
|
|
147
|
+
cancelled = true;
|
|
148
|
+
};
|
|
149
|
+
}, [isExecutingAction, dispatch, projectDirRef, resolvedToolRef]);
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=useListActions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useListActions.js","sourceRoot":"","sources":["../../src/hooks/useListActions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import type { InstalledAsset, Lockfile } from '../lib/schemas/lockfile.js';
|
|
2
|
+
import type { AssetType } from '../lib/schemas/manifest.js';
|
|
3
|
+
import type { Registry } from '../lib/schemas/registry.js';
|
|
4
|
+
export type ListTypeFilter = 'all' | AssetType;
|
|
5
|
+
export declare const LIST_TYPE_TABS: ListTypeFilter[];
|
|
6
|
+
export declare const LIST_TYPE_TAB_LABELS: Record<ListTypeFilter, string>;
|
|
7
|
+
export type ActionResultMode = {
|
|
8
|
+
actionKind: ListActionKind;
|
|
9
|
+
asset: InstalledAsset;
|
|
10
|
+
kind: 'action-result';
|
|
11
|
+
message: string;
|
|
12
|
+
success: boolean;
|
|
13
|
+
};
|
|
14
|
+
export type BrowsingMode = {
|
|
15
|
+
inputMode: 'filter' | 'navigate';
|
|
16
|
+
kind: 'browsing';
|
|
17
|
+
};
|
|
18
|
+
export type ConfirmingActionMode = {
|
|
19
|
+
actionKind: ListActionKind;
|
|
20
|
+
asset: InstalledAsset;
|
|
21
|
+
kind: 'confirming-action';
|
|
22
|
+
};
|
|
23
|
+
export type ErrorState = {
|
|
24
|
+
message: string;
|
|
25
|
+
status: 'error';
|
|
26
|
+
};
|
|
27
|
+
export type ExecutingActionMode = {
|
|
28
|
+
actionKind: ListActionKind;
|
|
29
|
+
asset: InstalledAsset;
|
|
30
|
+
kind: 'executing-action';
|
|
31
|
+
message: string;
|
|
32
|
+
};
|
|
33
|
+
export type ListAction = {
|
|
34
|
+
actionKind: ListActionKind;
|
|
35
|
+
type: 'BEGIN_ACTION';
|
|
36
|
+
} | {
|
|
37
|
+
char: string;
|
|
38
|
+
type: 'APPEND_FILTER_CHAR';
|
|
39
|
+
} | {
|
|
40
|
+
filter: ListTypeFilter;
|
|
41
|
+
type: 'SET_TYPE_FILTER';
|
|
42
|
+
} | {
|
|
43
|
+
height: number;
|
|
44
|
+
type: 'SET_VIEWPORT_HEIGHT';
|
|
45
|
+
} | {
|
|
46
|
+
lockfile: Lockfile;
|
|
47
|
+
org?: string;
|
|
48
|
+
outdatedMap: Map<string, string>;
|
|
49
|
+
registry: Registry;
|
|
50
|
+
type: 'LOAD_SUCCESS';
|
|
51
|
+
} | {
|
|
52
|
+
lockfile: Lockfile;
|
|
53
|
+
type: 'REFRESH_LOCKFILE';
|
|
54
|
+
} | {
|
|
55
|
+
message: string;
|
|
56
|
+
success: boolean;
|
|
57
|
+
type: 'ACTION_COMPLETE';
|
|
58
|
+
} | {
|
|
59
|
+
message: string;
|
|
60
|
+
type: 'ACTION_PROGRESS';
|
|
61
|
+
} | {
|
|
62
|
+
message: string;
|
|
63
|
+
type: 'LOAD_ERROR';
|
|
64
|
+
} | {
|
|
65
|
+
type: 'CANCEL_ACTION';
|
|
66
|
+
} | {
|
|
67
|
+
type: 'COLLAPSE';
|
|
68
|
+
} | {
|
|
69
|
+
type: 'CONFIRM_ACTION';
|
|
70
|
+
} | {
|
|
71
|
+
type: 'CURSOR_DOWN';
|
|
72
|
+
} | {
|
|
73
|
+
type: 'CURSOR_UP';
|
|
74
|
+
} | {
|
|
75
|
+
type: 'CYCLE_SORT';
|
|
76
|
+
} | {
|
|
77
|
+
type: 'CYCLE_TYPE';
|
|
78
|
+
} | {
|
|
79
|
+
type: 'DELETE_FILTER_CHAR';
|
|
80
|
+
} | {
|
|
81
|
+
type: 'DISMISS_RESULT';
|
|
82
|
+
} | {
|
|
83
|
+
type: 'ENTER_FILTER_MODE';
|
|
84
|
+
} | {
|
|
85
|
+
type: 'EXIT_FILTER_MODE';
|
|
86
|
+
} | {
|
|
87
|
+
type: 'EXPAND_TOGGLE';
|
|
88
|
+
} | {
|
|
89
|
+
type: 'TOGGLE_ORG_FILTER';
|
|
90
|
+
};
|
|
91
|
+
export type ListActionKind = 'freeze-toggle' | 'pin-toggle' | 'uninstall' | 'update';
|
|
92
|
+
export type ListInputResult = null | {
|
|
93
|
+
action: ListAction;
|
|
94
|
+
} | {
|
|
95
|
+
quit: true;
|
|
96
|
+
};
|
|
97
|
+
export type ListMode = ActionResultMode | BrowsingMode | ConfirmingActionMode | ExecutingActionMode;
|
|
98
|
+
export type ListState = ErrorState | LoadingState | ReadyState;
|
|
99
|
+
export type LoadingState = {
|
|
100
|
+
message: string;
|
|
101
|
+
status: 'loading';
|
|
102
|
+
viewportHeight: number;
|
|
103
|
+
};
|
|
104
|
+
export type ReadyState = {
|
|
105
|
+
allAssets: InstalledAsset[];
|
|
106
|
+
cursorIndex: number;
|
|
107
|
+
expandedIndex: null | number;
|
|
108
|
+
filteredAssets: InstalledAsset[];
|
|
109
|
+
filterText: string;
|
|
110
|
+
lockfile: Lockfile;
|
|
111
|
+
mode: ListMode;
|
|
112
|
+
org?: string;
|
|
113
|
+
orgOnly: boolean;
|
|
114
|
+
outdatedMap: Map<string, string>;
|
|
115
|
+
registry: Registry;
|
|
116
|
+
scrollOffset: number;
|
|
117
|
+
sortDirection: SortDirection;
|
|
118
|
+
sortField: SortField;
|
|
119
|
+
status: 'ready';
|
|
120
|
+
typeFilter: ListTypeFilter;
|
|
121
|
+
viewportHeight: number;
|
|
122
|
+
};
|
|
123
|
+
export type SortDirection = 'asc' | 'desc';
|
|
124
|
+
export type SortField = 'installDate' | 'name' | 'type' | 'version';
|
|
125
|
+
export declare function computeFilteredAssets(allAssets: InstalledAsset[], typeFilter: ListTypeFilter, filterText: string, orgOnly?: boolean, org?: string): InstalledAsset[];
|
|
126
|
+
export declare function computeSortedAssets(assets: InstalledAsset[], sortField: SortField, sortDirection: SortDirection): InstalledAsset[];
|
|
127
|
+
type InkKey = {
|
|
128
|
+
backspace: boolean;
|
|
129
|
+
ctrl: boolean;
|
|
130
|
+
delete: boolean;
|
|
131
|
+
downArrow: boolean;
|
|
132
|
+
escape: boolean;
|
|
133
|
+
meta: boolean;
|
|
134
|
+
return: boolean;
|
|
135
|
+
tab: boolean;
|
|
136
|
+
upArrow: boolean;
|
|
137
|
+
};
|
|
138
|
+
export declare function listReducer(state: ListState, action: ListAction): ListState;
|
|
139
|
+
/**
|
|
140
|
+
* Pure function mapping keyboard input to a list action (or quit signal).
|
|
141
|
+
* Returns null when the input should be ignored.
|
|
142
|
+
*/
|
|
143
|
+
export declare function mapListInput(input: string, key: InkKey, state: ReadyState): ListInputResult;
|
|
144
|
+
export declare function useListInput(state: ListState, dispatch: React.Dispatch<ListAction>, onQuit: () => void): void;
|
|
145
|
+
export declare function useListState(): readonly [ListState, import("react").ActionDispatch<[action: ListAction]>, (registry: Registry, lockfile: Lockfile, outdatedMap: Map<string, string>, org?: string) => void];
|
|
146
|
+
export {};
|
|
147
|
+
//# sourceMappingURL=useListState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useListState.d.ts","sourceRoot":"","sources":["../../src/hooks/useListState.ts"],"names":[],"mappings":"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"}
|