@detergent-software/atk 3.0.0-dev.20 → 3.0.0-dev.21
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/build/commands/setup.d.ts.map +1 -1
- package/build/commands/setup.js +6 -18
- package/build/commands/setup.js.map +1 -1
- package/build/commands/sync.d.ts.map +1 -1
- package/build/commands/sync.js +44 -163
- package/build/commands/sync.js.map +1 -1
- package/build/components/FrozenSkippedHint.d.ts +11 -0
- package/build/components/FrozenSkippedHint.d.ts.map +1 -0
- package/build/components/FrozenSkippedHint.js +12 -0
- package/build/components/FrozenSkippedHint.js.map +1 -0
- package/build/components/SyncAllInSync.d.ts +14 -0
- package/build/components/SyncAllInSync.d.ts.map +1 -0
- package/build/components/SyncAllInSync.js +10 -0
- package/build/components/SyncAllInSync.js.map +1 -0
- package/build/components/SyncDriftedList.d.ts +24 -0
- package/build/components/SyncDriftedList.d.ts.map +1 -0
- package/build/components/SyncDriftedList.js +17 -0
- package/build/components/SyncDriftedList.js.map +1 -0
- package/build/components/SyncNoAssets.d.ts +12 -0
- package/build/components/SyncNoAssets.d.ts.map +1 -0
- package/build/components/SyncNoAssets.js +9 -0
- package/build/components/SyncNoAssets.js.map +1 -0
- package/build/components/index.d.ts +4 -0
- package/build/components/index.d.ts.map +1 -1
- package/build/components/index.js +4 -0
- package/build/components/index.js.map +1 -1
- package/build/hooks/useSetupState.d.ts +2 -4
- package/build/hooks/useSetupState.d.ts.map +1 -1
- package/build/hooks/useSetupState.js +40 -99
- package/build/hooks/useSetupState.js.map +1 -1
- package/build/lib/adapter.d.ts +21 -0
- package/build/lib/adapter.d.ts.map +1 -1
- package/build/lib/adapter.js +59 -1
- package/build/lib/adapter.js.map +1 -1
- package/build/lib/detector.d.ts +2 -11
- package/build/lib/detector.d.ts.map +1 -1
- package/build/lib/detector.js +2 -64
- package/build/lib/detector.js.map +1 -1
- package/build/lib/gitignore.d.ts +17 -0
- package/build/lib/gitignore.d.ts.map +1 -1
- package/build/lib/gitignore.js +17 -1
- package/build/lib/gitignore.js.map +1 -1
- package/build/lib/setup.d.ts +28 -0
- package/build/lib/setup.d.ts.map +1 -0
- package/build/lib/setup.js +98 -0
- package/build/lib/setup.js.map +1 -0
- package/build/lib/sync.d.ts +109 -0
- package/build/lib/sync.d.ts.map +1 -0
- package/build/lib/sync.js +221 -0
- package/build/lib/sync.js.map +1 -0
- package/package.json +1 -1
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type { Adapter } from '../lib/schemas/adapter.js';
|
|
2
|
+
import type { SummaryAction } from '../lib/setup.js';
|
|
3
|
+
export type { SummaryAction } from '../lib/setup.js';
|
|
2
4
|
export type SetupAction = {
|
|
3
5
|
actions: SummaryAction[];
|
|
4
6
|
type: 'CREATE_DONE';
|
|
@@ -49,10 +51,6 @@ export interface SetupState {
|
|
|
49
51
|
selectedTools: string[];
|
|
50
52
|
summaryActions: SummaryAction[];
|
|
51
53
|
}
|
|
52
|
-
export interface SummaryAction {
|
|
53
|
-
detail?: string;
|
|
54
|
-
label: string;
|
|
55
|
-
}
|
|
56
54
|
export declare function createInitialState(flags: SetupFlags): SetupState;
|
|
57
55
|
export declare function setupReducer(state: SetupState, action: SetupAction): SetupState;
|
|
58
56
|
export declare function useSetupState(flags: SetupFlags): readonly [SetupState, React.Dispatch<SetupAction>];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSetupState.d.ts","sourceRoot":"","sources":["../../src/hooks/useSetupState.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useSetupState.d.ts","sourceRoot":"","sources":["../../src/hooks/useSetupState.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AASrD,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAMrD,MAAM,MAAM,WAAW,GACnB;IAAE,OAAO,EAAE,aAAa,EAAE,CAAC;IAAC,IAAI,EAAE,aAAa,CAAA;CAAE,GACjD;IACE,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,UAAU,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,IAAI,EAAE,WAAW,CAAC;CACnB,GACD;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,aAAa,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,eAAe,CAAA;CAAE,GACzB;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,GACvB;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GACrB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,CAAC;AAE3B,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,OAAO,CAAC;CACd;AAED,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,WAAW,GAAG,aAAa,CAAC;AAEjG,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,UAAU,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,UAAU,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,cAAc,EAAE,aAAa,EAAE,CAAC;CACjC;AAMD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,CAahE;AAMD,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,GAAG,UAAU,CA+D/E;AAMD,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAoKnG"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import { existsSync } from 'node:fs';
|
|
2
1
|
import { useEffect, useReducer } from 'react';
|
|
3
|
-
import {
|
|
4
|
-
import { loadConfig, loadProjectConfig
|
|
5
|
-
import {
|
|
6
|
-
import { getLockfilePath, readLockfile, writeLockfile } from '../lib/lockfile.js';
|
|
2
|
+
import { loadAllAdapters } from '../lib/adapter.js';
|
|
3
|
+
import { loadConfig, loadProjectConfig } from '../lib/config.js';
|
|
4
|
+
import { readLockfile } from '../lib/lockfile.js';
|
|
7
5
|
import { findProjectRoot } from '../lib/paths.js';
|
|
6
|
+
import { performSetupCreation } from '../lib/setup.js';
|
|
8
7
|
// ---------------------------------------------------------------------------
|
|
9
8
|
// Initial state factory
|
|
10
9
|
// ---------------------------------------------------------------------------
|
|
@@ -30,7 +29,13 @@ export function setupReducer(state, action) {
|
|
|
30
29
|
case 'CONFIRM_TOOLS': {
|
|
31
30
|
if (state.selectedTools.length === 0)
|
|
32
31
|
return state;
|
|
33
|
-
|
|
32
|
+
let nextPhase;
|
|
33
|
+
if (state.orgLocked) {
|
|
34
|
+
nextPhase = 'creating';
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
nextPhase = 'org-input';
|
|
38
|
+
}
|
|
34
39
|
return { ...state, phase: nextPhase };
|
|
35
40
|
}
|
|
36
41
|
case 'CREATE_DONE':
|
|
@@ -92,10 +97,11 @@ export function useSetupState(flags) {
|
|
|
92
97
|
const load = async () => {
|
|
93
98
|
const { flags: f } = state;
|
|
94
99
|
const resolvedDir = findProjectRoot(f.projectRoot);
|
|
95
|
-
const [allAdapters, config, existingLockfile] = await Promise.all([
|
|
100
|
+
const [allAdapters, config, existingLockfile, projConfig] = await Promise.all([
|
|
96
101
|
loadAllAdapters(),
|
|
97
102
|
loadConfig(),
|
|
98
103
|
readLockfile(resolvedDir),
|
|
104
|
+
loadProjectConfig(resolvedDir),
|
|
99
105
|
]);
|
|
100
106
|
if (cancelled)
|
|
101
107
|
return;
|
|
@@ -111,13 +117,24 @@ export function useSetupState(flags) {
|
|
|
111
117
|
orgValue = f.orgFlag ?? config.org ?? '';
|
|
112
118
|
orgLocked = false;
|
|
113
119
|
}
|
|
114
|
-
// Load existing project config
|
|
115
|
-
const projConfig = await loadProjectConfig(resolvedDir);
|
|
116
|
-
if (cancelled)
|
|
117
|
-
return;
|
|
118
120
|
// Determine next phase and selected tools based on flags
|
|
119
121
|
if (f.toolFlag) {
|
|
120
|
-
|
|
122
|
+
// Validate the --tool flag against available adapters
|
|
123
|
+
const availableToolNames = allAdapters.map((a) => a.tool);
|
|
124
|
+
if (!availableToolNames.includes(f.toolFlag)) {
|
|
125
|
+
dispatch({
|
|
126
|
+
message: `Unknown tool "${f.toolFlag}". Available tools: ${availableToolNames.join(', ')}`,
|
|
127
|
+
type: 'ERROR',
|
|
128
|
+
});
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
let nextPhase;
|
|
132
|
+
if (f.yes || f.orgFlag !== undefined || !f.isTTY || existingOrg) {
|
|
133
|
+
nextPhase = 'creating';
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
nextPhase = 'org-input';
|
|
137
|
+
}
|
|
121
138
|
dispatch({
|
|
122
139
|
adapters: allAdapters,
|
|
123
140
|
orgLocked,
|
|
@@ -188,95 +205,19 @@ export function useSetupState(flags) {
|
|
|
188
205
|
return;
|
|
189
206
|
let cancelled = false;
|
|
190
207
|
const create = async () => {
|
|
191
|
-
const
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
const lockfilePath = getLockfilePath(state.projectDir);
|
|
198
|
-
if (existsSync(lockfilePath)) {
|
|
199
|
-
// Preserve existing assets and org
|
|
200
|
-
const existing = await readLockfile(state.projectDir);
|
|
201
|
-
// Only update org if it's not already set and we have a new one
|
|
202
|
-
const updatedLockfile = {
|
|
203
|
-
...existing,
|
|
204
|
-
lockVersion: 1,
|
|
205
|
-
...(resolvedOrg !== undefined && !existing.org ? { org: resolvedOrg } : {}),
|
|
206
|
-
};
|
|
207
|
-
await writeLockfile(state.projectDir, updatedLockfile);
|
|
208
|
-
actions.push({
|
|
209
|
-
detail: `${(existing.assets ?? []).length} existing asset(s) preserved`,
|
|
210
|
-
label: 'Updated .atk-lock.json',
|
|
211
|
-
});
|
|
212
|
-
}
|
|
213
|
-
else {
|
|
214
|
-
await writeLockfile(state.projectDir, {
|
|
215
|
-
assets: [],
|
|
216
|
-
lockVersion: 1,
|
|
217
|
-
...(resolvedOrg !== undefined ? { org: resolvedOrg } : {}),
|
|
218
|
-
});
|
|
219
|
-
actions.push({
|
|
220
|
-
detail: resolvedOrg ? `org: ${resolvedOrg}` : 'no org',
|
|
221
|
-
label: 'Created .atk-lock.json',
|
|
222
|
-
});
|
|
223
|
-
}
|
|
224
|
-
// 3. Ensure .atkrc.json is in .gitignore via the adapters' gitignore entries
|
|
225
|
-
const allAdded = [];
|
|
226
|
-
let anyAdapterLoaded = false;
|
|
227
|
-
for (const tool of state.selectedTools) {
|
|
228
|
-
try {
|
|
229
|
-
const adapter = await loadAdapter(tool);
|
|
230
|
-
anyAdapterLoaded = true;
|
|
231
|
-
const { added } = await ensureGitignoreEntries(state.projectDir, adapter);
|
|
232
|
-
allAdded.push(...added);
|
|
233
|
-
}
|
|
234
|
-
catch {
|
|
235
|
-
// Individual adapter load failure is non-fatal; continue with others
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
if (!anyAdapterLoaded) {
|
|
239
|
-
// If no adapters could be loaded, manually ensure .atkrc.json is gitignored
|
|
240
|
-
try {
|
|
241
|
-
const { readFile: readFileAsync, writeFile: writeFileAsync } = await import('node:fs/promises');
|
|
242
|
-
const { join } = await import('node:path');
|
|
243
|
-
const gitignorePath = join(state.projectDir, '.gitignore');
|
|
244
|
-
let content = '';
|
|
245
|
-
if (existsSync(gitignorePath)) {
|
|
246
|
-
content = await readFileAsync(gitignorePath, 'utf-8');
|
|
247
|
-
}
|
|
248
|
-
if (!content.includes('.atkrc.json')) {
|
|
249
|
-
const atkHeader = '# ATK managed assets';
|
|
250
|
-
if (content.includes(atkHeader)) {
|
|
251
|
-
const lines = content.split('\n');
|
|
252
|
-
const headerIndex = lines.findIndex((line) => line.trim() === atkHeader);
|
|
253
|
-
let insertIndex = headerIndex + 1;
|
|
254
|
-
while (insertIndex < lines.length &&
|
|
255
|
-
lines[insertIndex].trim() !== '' &&
|
|
256
|
-
!lines[insertIndex].startsWith('#')) {
|
|
257
|
-
insertIndex++;
|
|
258
|
-
}
|
|
259
|
-
lines.splice(insertIndex, 0, '.atkrc.json');
|
|
260
|
-
await writeFileAsync(gitignorePath, lines.join('\n'), 'utf-8');
|
|
261
|
-
}
|
|
262
|
-
else {
|
|
263
|
-
const separator = content.length > 0 && !content.endsWith('\n') ? '\n\n' : content.length > 0 ? '\n' : '';
|
|
264
|
-
await writeFileAsync(gitignorePath, `${content}${separator}# ATK managed assets\n.atkrc.json\n`, 'utf-8');
|
|
265
|
-
}
|
|
266
|
-
allAdded.push('.atkrc.json');
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
catch {
|
|
270
|
-
// Non-fatal
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
if (allAdded.length > 0) {
|
|
274
|
-
// Deduplicate entries
|
|
275
|
-
const uniqueAdded = [...new Set(allAdded)];
|
|
276
|
-
actions.push({ detail: uniqueAdded.join(', '), label: 'Updated .gitignore' });
|
|
277
|
-
}
|
|
208
|
+
const result = await performSetupCreation({
|
|
209
|
+
orgLocked: state.orgLocked,
|
|
210
|
+
orgValue: state.orgValue,
|
|
211
|
+
projectDir: state.projectDir,
|
|
212
|
+
selectedTools: state.selectedTools,
|
|
213
|
+
});
|
|
278
214
|
if (cancelled)
|
|
279
215
|
return;
|
|
216
|
+
// Append any warnings as summary actions
|
|
217
|
+
const actions = [...result.actions];
|
|
218
|
+
for (const warning of result.warnings) {
|
|
219
|
+
actions.push({ detail: warning, label: 'Warning' });
|
|
220
|
+
}
|
|
280
221
|
dispatch({ actions, type: 'CREATE_DONE' });
|
|
281
222
|
};
|
|
282
223
|
create().catch((err) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSetupState.js","sourceRoot":"","sources":["../../src/hooks/useSetupState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"useSetupState.js","sourceRoot":"","sources":["../../src/hooks/useSetupState.ts"],"names":[],"mappings":"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"}
|
package/build/lib/adapter.d.ts
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
import type { AssetType } from './schemas/manifest.js';
|
|
2
2
|
import { type Adapter, type PlacementConfig } from './schemas/adapter.js';
|
|
3
|
+
export interface AdapterDiagnostics {
|
|
4
|
+
adaptersDir: string;
|
|
5
|
+
adaptersLoaded: number;
|
|
6
|
+
directoryExists: boolean;
|
|
7
|
+
failures: AdapterLoadFailure[];
|
|
8
|
+
filesFound: number;
|
|
9
|
+
}
|
|
10
|
+
export interface AdapterLoadFailure {
|
|
11
|
+
filename: string;
|
|
12
|
+
reason: string;
|
|
13
|
+
}
|
|
3
14
|
export declare class AdapterError extends Error {
|
|
4
15
|
constructor(message: string);
|
|
5
16
|
}
|
|
@@ -33,6 +44,16 @@ export declare function loadAdapter(tool: string): Promise<Adapter>;
|
|
|
33
44
|
* Leverages the adapter cache to avoid redundant file reads.
|
|
34
45
|
*/
|
|
35
46
|
export declare function loadAllAdapters(): Promise<Adapter[]>;
|
|
47
|
+
/**
|
|
48
|
+
* Load all adapter JSON files from the tool-adapters directory,
|
|
49
|
+
* tracking diagnostic information about the loading process.
|
|
50
|
+
* Uses safeParseJson for the non-throwing path and populates the
|
|
51
|
+
* adapter cache for successfully parsed entries.
|
|
52
|
+
*/
|
|
53
|
+
export declare function loadAllAdaptersWithDiagnostics(): Promise<{
|
|
54
|
+
adapters: Adapter[];
|
|
55
|
+
diagnostics: AdapterDiagnostics;
|
|
56
|
+
}>;
|
|
36
57
|
/**
|
|
37
58
|
* Resolve the installed file paths and config entries for an asset, given the adapter
|
|
38
59
|
* and project directory. This is the single source of truth for where an asset's files
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/lib/adapter.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAIvD,OAAO,EAAE,KAAK,OAAO,EAAiB,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/lib/adapter.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAIvD,OAAO,EAAE,KAAK,OAAO,EAAiB,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEzF,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,OAAO,CAAC;IACzB,QAAQ,EAAE,kBAAkB,EAAE,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAOD,qBAAa,YAAa,SAAQ,KAAK;gBACzB,OAAO,EAAE,MAAM;CAI5B;AAKD;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAExC;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,GAAG,eAAe,GAAG,SAAS,CAEhG;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,EAAE,CAEpE;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAiB7E;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAoBhE;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAoC1D;AAED;;;;;GAKG;AACH,wBAAsB,8BAA8B,IAAI,OAAO,CAAC;IAC9D,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,WAAW,EAAE,kBAAkB,CAAC;CACjC,CAAC,CAwDD;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE;IAAE,KAAK,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAC7F,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,MAAM,GACjB;IACD,aAAa,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpD,KAAK,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC/E,CA0DA;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAG5G;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAEjF"}
|
package/build/lib/adapter.js
CHANGED
|
@@ -2,7 +2,7 @@ import { existsSync } from 'node:fs';
|
|
|
2
2
|
import { readdir, readFile } from 'node:fs/promises';
|
|
3
3
|
import { dirname, join } from 'node:path';
|
|
4
4
|
import { fileURLToPath } from 'node:url';
|
|
5
|
-
import { parseAndValidate } from './parse-json.js';
|
|
5
|
+
import { parseAndValidate, safeParseJson } from './parse-json.js';
|
|
6
6
|
import { toRelativePosix } from './paths.js';
|
|
7
7
|
import { AdapterSchema } from './schemas/adapter.js';
|
|
8
8
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
@@ -116,6 +116,64 @@ export async function loadAllAdapters() {
|
|
|
116
116
|
}
|
|
117
117
|
return adapters;
|
|
118
118
|
}
|
|
119
|
+
/**
|
|
120
|
+
* Load all adapter JSON files from the tool-adapters directory,
|
|
121
|
+
* tracking diagnostic information about the loading process.
|
|
122
|
+
* Uses safeParseJson for the non-throwing path and populates the
|
|
123
|
+
* adapter cache for successfully parsed entries.
|
|
124
|
+
*/
|
|
125
|
+
export async function loadAllAdaptersWithDiagnostics() {
|
|
126
|
+
const diagnostics = {
|
|
127
|
+
adaptersDir: ADAPTERS_DIR,
|
|
128
|
+
adaptersLoaded: 0,
|
|
129
|
+
directoryExists: false,
|
|
130
|
+
failures: [],
|
|
131
|
+
filesFound: 0,
|
|
132
|
+
};
|
|
133
|
+
if (!existsSync(ADAPTERS_DIR)) {
|
|
134
|
+
return { adapters: [], diagnostics };
|
|
135
|
+
}
|
|
136
|
+
diagnostics.directoryExists = true;
|
|
137
|
+
const entries = await readdir(ADAPTERS_DIR);
|
|
138
|
+
const adapters = [];
|
|
139
|
+
for (const entry of entries) {
|
|
140
|
+
if (entry.startsWith('_') || !entry.endsWith('.json')) {
|
|
141
|
+
continue;
|
|
142
|
+
}
|
|
143
|
+
diagnostics.filesFound++;
|
|
144
|
+
const tool = entry.replace(/\.json$/, '');
|
|
145
|
+
// Use cache if already loaded
|
|
146
|
+
const cached = adapterCache.get(tool);
|
|
147
|
+
if (cached) {
|
|
148
|
+
adapters.push(cached);
|
|
149
|
+
diagnostics.adaptersLoaded++;
|
|
150
|
+
continue;
|
|
151
|
+
}
|
|
152
|
+
const filePath = join(ADAPTERS_DIR, entry);
|
|
153
|
+
try {
|
|
154
|
+
const raw = await readFile(filePath, 'utf-8');
|
|
155
|
+
const result = safeParseJson(raw, AdapterSchema, `Schema validation failed`);
|
|
156
|
+
if (result.success) {
|
|
157
|
+
adapterCache.set(tool, result.data);
|
|
158
|
+
adapters.push(result.data);
|
|
159
|
+
diagnostics.adaptersLoaded++;
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
diagnostics.failures.push({
|
|
163
|
+
filename: entry,
|
|
164
|
+
reason: result.error,
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
catch (err) {
|
|
169
|
+
diagnostics.failures.push({
|
|
170
|
+
filename: entry,
|
|
171
|
+
reason: err instanceof Error ? err.message : 'Unknown parse error',
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
return { adapters, diagnostics };
|
|
176
|
+
}
|
|
119
177
|
/**
|
|
120
178
|
* Resolve the installed file paths and config entries for an asset, given the adapter
|
|
121
179
|
* and project directory. This is the single source of truth for where an asset's files
|
package/build/lib/adapter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/lib/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAIzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/lib/adapter.ts"],"names":[],"mappings":"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"}
|
package/build/lib/detector.d.ts
CHANGED
|
@@ -1,14 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
adaptersLoaded: number;
|
|
4
|
-
directoryExists: boolean;
|
|
5
|
-
failures: AdapterLoadFailure[];
|
|
6
|
-
filesFound: number;
|
|
7
|
-
}
|
|
8
|
-
export interface AdapterLoadFailure {
|
|
9
|
-
filename: string;
|
|
10
|
-
reason: string;
|
|
11
|
-
}
|
|
1
|
+
import { type AdapterDiagnostics } from './adapter.js';
|
|
2
|
+
export type { AdapterDiagnostics, AdapterLoadFailure } from './adapter.js';
|
|
12
3
|
export interface DetectionResult {
|
|
13
4
|
confidence: 'high' | 'low' | 'medium';
|
|
14
5
|
displayName: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detector.d.ts","sourceRoot":"","sources":["../../src/lib/detector.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"detector.d.ts","sourceRoot":"","sources":["../../src/lib/detector.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,kBAAkB,EAGxB,MAAM,cAAc,CAAC;AAEtB,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAE3E,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAG3F;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAyChF;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAGzE"}
|
package/build/lib/detector.js
CHANGED
|
@@ -1,13 +1,6 @@
|
|
|
1
1
|
import { existsSync } from 'node:fs';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { dirname, join } from 'node:path';
|
|
5
|
-
import { fileURLToPath } from 'node:url';
|
|
6
|
-
import { safeParseJson } from './parse-json.js';
|
|
7
|
-
import { AdapterSchema } from './schemas/adapter.js';
|
|
8
|
-
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
9
|
-
/** Resolve tool-adapters directory relative to the package root (works both in dev and when installed via npm). */
|
|
10
|
-
const ADAPTERS_DIR = join(__dirname, '..', '..', 'tool-adapters');
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { loadAllAdapters, loadAllAdaptersWithDiagnostics, } from './adapter.js';
|
|
11
4
|
/**
|
|
12
5
|
* Detect the primary tool in use. Returns the highest-confidence match,
|
|
13
6
|
* or null if no tool is detected.
|
|
@@ -67,59 +60,4 @@ export async function getAdapterDiagnostics() {
|
|
|
67
60
|
const { diagnostics } = await loadAllAdaptersWithDiagnostics();
|
|
68
61
|
return diagnostics;
|
|
69
62
|
}
|
|
70
|
-
/**
|
|
71
|
-
* Load all adapter JSON files from the tool-adapters directory.
|
|
72
|
-
*/
|
|
73
|
-
async function loadAllAdapters() {
|
|
74
|
-
const { adapters } = await loadAllAdaptersWithDiagnostics();
|
|
75
|
-
return adapters;
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Load all adapter JSON files from the tool-adapters directory,
|
|
79
|
-
* tracking diagnostic information about the loading process.
|
|
80
|
-
*/
|
|
81
|
-
async function loadAllAdaptersWithDiagnostics() {
|
|
82
|
-
const diagnostics = {
|
|
83
|
-
adaptersDir: ADAPTERS_DIR,
|
|
84
|
-
adaptersLoaded: 0,
|
|
85
|
-
directoryExists: false,
|
|
86
|
-
failures: [],
|
|
87
|
-
filesFound: 0,
|
|
88
|
-
};
|
|
89
|
-
if (!existsSync(ADAPTERS_DIR)) {
|
|
90
|
-
return { adapters: [], diagnostics };
|
|
91
|
-
}
|
|
92
|
-
diagnostics.directoryExists = true;
|
|
93
|
-
const entries = await readdir(ADAPTERS_DIR);
|
|
94
|
-
const adapters = [];
|
|
95
|
-
for (const entry of entries) {
|
|
96
|
-
// Skip schema files and non-JSON files
|
|
97
|
-
if (entry.startsWith('_') || !entry.endsWith('.json')) {
|
|
98
|
-
continue;
|
|
99
|
-
}
|
|
100
|
-
diagnostics.filesFound++;
|
|
101
|
-
const filePath = join(ADAPTERS_DIR, entry);
|
|
102
|
-
try {
|
|
103
|
-
const raw = await readFile(filePath, 'utf-8');
|
|
104
|
-
const result = safeParseJson(raw, AdapterSchema, `Schema validation failed`);
|
|
105
|
-
if (result.success) {
|
|
106
|
-
adapters.push(result.data);
|
|
107
|
-
diagnostics.adaptersLoaded++;
|
|
108
|
-
}
|
|
109
|
-
else {
|
|
110
|
-
diagnostics.failures.push({
|
|
111
|
-
filename: entry,
|
|
112
|
-
reason: result.error,
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
catch (err) {
|
|
117
|
-
diagnostics.failures.push({
|
|
118
|
-
filename: entry,
|
|
119
|
-
reason: err instanceof Error ? err.message : 'Unknown parse error',
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
return { adapters, diagnostics };
|
|
124
|
-
}
|
|
125
63
|
//# sourceMappingURL=detector.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detector.js","sourceRoot":"","sources":["../../src/lib/detector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"detector.js","sourceRoot":"","sources":["../../src/lib/detector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAEL,eAAe,EACf,8BAA8B,GAC/B,MAAM,cAAc,CAAC;AAWtB;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,UAAkB;IACxD,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,CAAC;IAC9C,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC5B,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,UAAkB;IAClD,MAAM,QAAQ,GAAG,MAAM,eAAe,EAAE,CAAC;IACzC,MAAM,OAAO,GAAsB,EAAE,CAAC;IAEtC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAa,EAAE,CAAC;QAE7B,KAAK,MAAM,SAAS,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;YAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YAC7C,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACzB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC;YAC7C,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC;YAErC,IAAI,UAAqC,CAAC;YAC1C,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;gBAClB,UAAU,GAAG,MAAM,CAAC;YACtB,CAAC;iBAAM,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC;gBACxB,UAAU,GAAG,QAAQ,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACN,UAAU,GAAG,KAAK,CAAC;YACrB,CAAC;YAED,OAAO,CAAC,IAAI,CAAC;gBACX,UAAU;gBACV,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,iBAAiB,EAAE,OAAO;gBAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;aACnB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,0CAA0C;IAC1C,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;IAElE,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB;IACzC,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,8BAA8B,EAAE,CAAC;IAC/D,OAAO,WAAW,CAAC;AACrB,CAAC"}
|
package/build/lib/gitignore.d.ts
CHANGED
|
@@ -14,6 +14,23 @@ export declare function ensureGitignoreEntries(projectDir: string, adapter: Adap
|
|
|
14
14
|
added: string[];
|
|
15
15
|
alreadyPresent: string[];
|
|
16
16
|
}>;
|
|
17
|
+
/**
|
|
18
|
+
* Ensure that the given gitignore patterns are present in the project's
|
|
19
|
+
* `.gitignore` file.
|
|
20
|
+
*
|
|
21
|
+
* - Reads `.gitignore` from `projectDir` (creates it if missing)
|
|
22
|
+
* - Checks which patterns are already present
|
|
23
|
+
* - Appends missing entries under a `# ATK managed assets` comment header
|
|
24
|
+
*
|
|
25
|
+
* This is the low-level API that accepts raw string patterns, making it
|
|
26
|
+
* usable without an adapter (e.g., from the setup fallback path).
|
|
27
|
+
*
|
|
28
|
+
* Returns which entries were added vs already present.
|
|
29
|
+
*/
|
|
30
|
+
export declare function ensureGitignorePatterns(projectDir: string, patterns: string[]): Promise<{
|
|
31
|
+
added: string[];
|
|
32
|
+
alreadyPresent: string[];
|
|
33
|
+
}>;
|
|
17
34
|
/**
|
|
18
35
|
* Extract gitignore patterns from an adapter's placements.
|
|
19
36
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitignore.d.ts","sourceRoot":"","sources":["../../src/lib/gitignore.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAIpD;;;;;;;;;;GAUG;AACH,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,cAAc,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"gitignore.d.ts","sourceRoot":"","sources":["../../src/lib/gitignore.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAIpD;;;;;;;;;;GAUG;AACH,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,cAAc,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAcxD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAAE,GACjB,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,cAAc,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CA4DxD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,EAAE,CA+B/D;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,gBAAgB,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAYjF"}
|
package/build/lib/gitignore.js
CHANGED
|
@@ -14,7 +14,6 @@ const ATK_HEADER = '# ATK managed assets';
|
|
|
14
14
|
* Returns which entries were added vs already present.
|
|
15
15
|
*/
|
|
16
16
|
export async function ensureGitignoreEntries(projectDir, adapter) {
|
|
17
|
-
const gitignorePath = join(projectDir, '.gitignore');
|
|
18
17
|
const patterns = getGitignorePatterns(adapter);
|
|
19
18
|
// Always include lockfile sentinel pattern to prevent committing lock files
|
|
20
19
|
if (!patterns.includes('.atk-lock.json.lock')) {
|
|
@@ -24,9 +23,26 @@ export async function ensureGitignoreEntries(projectDir, adapter) {
|
|
|
24
23
|
if (!patterns.includes('.atkrc.json')) {
|
|
25
24
|
patterns.push('.atkrc.json');
|
|
26
25
|
}
|
|
26
|
+
return ensureGitignorePatterns(projectDir, patterns);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Ensure that the given gitignore patterns are present in the project's
|
|
30
|
+
* `.gitignore` file.
|
|
31
|
+
*
|
|
32
|
+
* - Reads `.gitignore` from `projectDir` (creates it if missing)
|
|
33
|
+
* - Checks which patterns are already present
|
|
34
|
+
* - Appends missing entries under a `# ATK managed assets` comment header
|
|
35
|
+
*
|
|
36
|
+
* This is the low-level API that accepts raw string patterns, making it
|
|
37
|
+
* usable without an adapter (e.g., from the setup fallback path).
|
|
38
|
+
*
|
|
39
|
+
* Returns which entries were added vs already present.
|
|
40
|
+
*/
|
|
41
|
+
export async function ensureGitignorePatterns(projectDir, patterns) {
|
|
27
42
|
if (patterns.length === 0) {
|
|
28
43
|
return { added: [], alreadyPresent: [] };
|
|
29
44
|
}
|
|
45
|
+
const gitignorePath = join(projectDir, '.gitignore');
|
|
30
46
|
// Read existing content or start with empty string
|
|
31
47
|
let content = '';
|
|
32
48
|
if (existsSync(gitignorePath)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitignore.js","sourceRoot":"","sources":["../../src/lib/gitignore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC,MAAM,UAAU,GAAG,sBAAsB,CAAC;AAE1C;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,UAAkB,EAClB,OAAgB;IAEhB,MAAM,
|
|
1
|
+
{"version":3,"file":"gitignore.js","sourceRoot":"","sources":["../../src/lib/gitignore.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Regex for valid org identifiers. Must start with a letter, then letters,
|
|
3
|
+
* digits, or hyphens. Matches the constraint in the manifest schema.
|
|
4
|
+
*/
|
|
5
|
+
export declare const ORG_PATTERN: RegExp;
|
|
6
|
+
export interface SetupCreationOptions {
|
|
7
|
+
orgLocked: boolean;
|
|
8
|
+
orgValue: string;
|
|
9
|
+
projectDir: string;
|
|
10
|
+
selectedTools: string[];
|
|
11
|
+
}
|
|
12
|
+
export interface SetupCreationResult {
|
|
13
|
+
actions: SummaryAction[];
|
|
14
|
+
warnings: string[];
|
|
15
|
+
}
|
|
16
|
+
export interface SummaryAction {
|
|
17
|
+
detail?: string;
|
|
18
|
+
label: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Perform the setup creation step: write project config, write/update the
|
|
22
|
+
* lockfile, and ensure gitignore entries are present for the selected tools.
|
|
23
|
+
*
|
|
24
|
+
* This is the extracted business logic from the `useSetupState` creating
|
|
25
|
+
* effect, made independently testable without React rendering overhead.
|
|
26
|
+
*/
|
|
27
|
+
export declare function performSetupCreation(options: SetupCreationOptions): Promise<SetupCreationResult>;
|
|
28
|
+
//# sourceMappingURL=setup.d.ts.map
|