opkg 0.6.0 → 0.6.1
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 +35 -15
- package/dist/commands/duplicate.js +5 -2
- package/dist/commands/duplicate.js.map +1 -1
- package/dist/commands/init.js +4 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/install.js +8 -7
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/list.js +9 -3
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/login.js +58 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/logout.js +28 -0
- package/dist/commands/logout.js.map +1 -0
- package/dist/commands/pull.js +5 -299
- package/dist/commands/pull.js.map +1 -1
- package/dist/commands/push.js +5 -245
- package/dist/commands/push.js.map +1 -1
- package/dist/commands/save.js +20 -4
- package/dist/commands/save.js.map +1 -1
- package/dist/commands/show.js +18 -5
- package/dist/commands/show.js.map +1 -1
- package/dist/commands/status.js +19 -6
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/tui.js +61 -0
- package/dist/commands/tui.js.map +1 -0
- package/dist/constants/index.js +1 -0
- package/dist/constants/index.js.map +1 -1
- package/dist/core/add/package-index-updater.js +4 -3
- package/dist/core/add/package-index-updater.js.map +1 -1
- package/dist/core/api-keys.js +6 -2
- package/dist/core/api-keys.js.map +1 -1
- package/dist/core/auth.js +25 -40
- package/dist/core/auth.js.map +1 -1
- package/dist/core/config.js +11 -3
- package/dist/core/config.js.map +1 -1
- package/dist/core/dependency-resolver.js +21 -10
- package/dist/core/dependency-resolver.js.map +1 -1
- package/dist/core/device-auth.js +81 -0
- package/dist/core/device-auth.js.map +1 -0
- package/dist/core/directory.js +14 -8
- package/dist/core/directory.js.map +1 -1
- package/dist/core/install/bulk-install-pipeline.js +2 -1
- package/dist/core/install/bulk-install-pipeline.js.map +1 -1
- package/dist/core/install/canonical-plan.js +11 -5
- package/dist/core/install/canonical-plan.js.map +1 -1
- package/dist/core/install/download-keys.js +2 -2
- package/dist/core/install/download-keys.js.map +1 -1
- package/dist/core/install/install-flow.js +6 -4
- package/dist/core/install/install-flow.js.map +1 -1
- package/dist/core/install/install-pipeline.js +74 -6
- package/dist/core/install/install-pipeline.js.map +1 -1
- package/dist/core/install/remote-flow.js +17 -6
- package/dist/core/install/remote-flow.js.map +1 -1
- package/dist/core/install/version-selection.js +25 -8
- package/dist/core/install/version-selection.js.map +1 -1
- package/dist/core/openpackage.js +6 -6
- package/dist/core/openpackage.js.map +1 -1
- package/dist/core/package.js +71 -8
- package/dist/core/package.js.map +1 -1
- package/dist/core/profiles.js +60 -3
- package/dist/core/profiles.js.map +1 -1
- package/dist/core/pull/pull-errors.js +62 -0
- package/dist/core/pull/pull-errors.js.map +1 -0
- package/dist/core/pull/pull-options.js +2 -0
- package/dist/core/pull/pull-options.js.map +1 -0
- package/dist/core/pull/pull-output.js +50 -0
- package/dist/core/pull/pull-output.js.map +1 -0
- package/dist/core/pull/pull-pipeline.js +141 -0
- package/dist/core/pull/pull-pipeline.js.map +1 -0
- package/dist/core/pull/pull-strategies.js +103 -0
- package/dist/core/pull/pull-strategies.js.map +1 -0
- package/dist/core/pull/pull-types.js +2 -0
- package/dist/core/pull/pull-types.js.map +1 -0
- package/dist/core/push/push-context.js +95 -0
- package/dist/core/push/push-context.js.map +1 -0
- package/dist/core/push/push-errors.js +133 -0
- package/dist/core/push/push-errors.js.map +1 -0
- package/dist/core/push/push-output.js +44 -0
- package/dist/core/push/push-output.js.map +1 -0
- package/dist/core/push/push-pipeline.js +74 -0
- package/dist/core/push/push-pipeline.js.map +1 -0
- package/dist/core/push/push-single-file.js +56 -0
- package/dist/core/push/push-single-file.js.map +1 -0
- package/dist/core/push/push-types.js +2 -0
- package/dist/core/push/push-types.js.map +1 -0
- package/dist/core/push/push-upload.js +68 -0
- package/dist/core/push/push-upload.js.map +1 -0
- package/dist/core/registry.js +4 -2
- package/dist/core/registry.js.map +1 -1
- package/dist/core/remote-pull.js +163 -35
- package/dist/core/remote-pull.js.map +1 -1
- package/dist/core/save/package-saver.js +37 -1
- package/dist/core/save/package-saver.js.map +1 -1
- package/dist/core/save/package-yml-generator.js +5 -4
- package/dist/core/save/package-yml-generator.js.map +1 -1
- package/dist/core/save/save-pipeline.js +17 -6
- package/dist/core/save/save-pipeline.js.map +1 -1
- package/dist/core/save/save-single-file.js +124 -0
- package/dist/core/save/save-single-file.js.map +1 -0
- package/dist/core/scoping/package-scoping.js +1 -1
- package/dist/core/scoping/package-scoping.js.map +1 -1
- package/dist/core/token-store.js +73 -0
- package/dist/core/token-store.js.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/tui/app.js +95 -0
- package/dist/tui/app.js.map +1 -0
- package/dist/tui/components/package-list.js +73 -0
- package/dist/tui/components/package-list.js.map +1 -0
- package/dist/tui/controller.js +365 -0
- package/dist/tui/controller.js.map +1 -0
- package/dist/tui/index.js +12 -0
- package/dist/tui/index.js.map +1 -0
- package/dist/tui/services/file-index.js +64 -0
- package/dist/tui/services/file-index.js.map +1 -0
- package/dist/tui/services/packages.js +18 -0
- package/dist/tui/services/packages.js.map +1 -0
- package/dist/tui/services/save.js +21 -0
- package/dist/tui/services/save.js.map +1 -0
- package/dist/tui/state/app-state.js +15 -0
- package/dist/tui/state/app-state.js.map +1 -0
- package/dist/tui/state.js +17 -0
- package/dist/tui/state.js.map +1 -0
- package/dist/tui/types.js +2 -0
- package/dist/tui/types.js.map +1 -0
- package/dist/tui/views/add-file-modal.js +129 -0
- package/dist/tui/views/add-file-modal.js.map +1 -0
- package/dist/tui/views/file-preview.js +44 -0
- package/dist/tui/views/file-preview.js.map +1 -0
- package/dist/tui/views/list-packages.js +73 -0
- package/dist/tui/views/list-packages.js.map +1 -0
- package/dist/tui/views/main-menu.js +29 -0
- package/dist/tui/views/main-menu.js.map +1 -0
- package/dist/tui/views/manage-view.js +81 -0
- package/dist/tui/views/manage-view.js.map +1 -0
- package/dist/tui/views/package-hub.js +120 -0
- package/dist/tui/views/package-hub.js.map +1 -0
- package/dist/tui/views/placeholder.js +24 -0
- package/dist/tui/views/placeholder.js.map +1 -0
- package/dist/types/index.js.map +1 -1
- package/dist/utils/bun-bootstrap.js +72 -0
- package/dist/utils/bun-bootstrap.js.map +1 -0
- package/dist/utils/formatters.js +3 -1
- package/dist/utils/formatters.js.map +1 -1
- package/dist/utils/http-client.js +27 -5
- package/dist/utils/http-client.js.map +1 -1
- package/dist/utils/index-based-installer.js +25 -2
- package/dist/utils/index-based-installer.js.map +1 -1
- package/dist/utils/install-file-discovery.js +17 -23
- package/dist/utils/install-file-discovery.js.map +1 -1
- package/dist/utils/manifest-paths.js +27 -0
- package/dist/utils/manifest-paths.js.map +1 -0
- package/dist/utils/package-management.js +139 -45
- package/dist/utils/package-management.js.map +1 -1
- package/dist/utils/package-merge.js +48 -0
- package/dist/utils/package-merge.js.map +1 -0
- package/dist/utils/package-name.js +29 -0
- package/dist/utils/package-name.js.map +1 -1
- package/dist/utils/package-versioning.js +16 -4
- package/dist/utils/package-versioning.js.map +1 -1
- package/dist/utils/package-yml.js +17 -12
- package/dist/utils/package-yml.js.map +1 -1
- package/dist/utils/prompts.js +0 -31
- package/dist/utils/prompts.js.map +1 -1
- package/dist/utils/registry-entry-filter.js +2 -2
- package/dist/utils/registry-entry-filter.js.map +1 -1
- package/dist/utils/registry-paths.js +38 -0
- package/dist/utils/registry-paths.js.map +1 -1
- package/dist/utils/tarball.js +6 -2
- package/dist/utils/tarball.js.map +1 -1
- package/dist/utils/version-ranges.js +11 -8
- package/dist/utils/version-ranges.js.map +1 -1
- package/package.json +2 -2
- package/specs/auth/auth-device-flow.md +70 -0
- package/specs/install/install-behavior.md +30 -0
- package/specs/install/package-yml-canonical.md +21 -1
- package/specs/install/version-resolution.md +9 -7
- package/specs/login/login-device-flow.md +70 -0
- package/specs/push/push-behavior.md +38 -10
- package/specs/push/push-errors-and-hints.md +19 -6
- package/specs/push/push-remote-upload.md +3 -0
- package/specs/push/push-scoping.md +14 -22
- package/specs/push/push-version-selection.md +18 -16
- package/specs/save/save-modes-inputs.md +3 -1
- package/specs/save-pack.md +1 -0
package/dist/commands/pull.js
CHANGED
|
@@ -1,243 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { withErrorHandling, UserCancellationError } from '../utils/errors.js';
|
|
5
|
-
import { parsePackageInput } from '../utils/package-name.js';
|
|
6
|
-
import { promptOverwriteConfirmation } from '../utils/prompts.js';
|
|
7
|
-
import { formatFileSize } from '../utils/formatters.js';
|
|
8
|
-
import { fetchRemotePackageMetadata, pullPackageFromRemote, pullDownloadsBatchFromRemote } from '../core/remote-pull.js';
|
|
9
|
-
import { Spinner } from '../utils/spinner.js';
|
|
10
|
-
import { planRemoteDownloadsForPackage } from '../core/install/remote-flow.js';
|
|
11
|
-
import { recordBatchOutcome } from '../core/install/remote-reporting.js';
|
|
12
|
-
/**
|
|
13
|
-
* Fetch package metadata with spinner and error handling
|
|
14
|
-
*/
|
|
15
|
-
async function fetchPackageMetadata(parsedName, parsedVersion, pullOptions) {
|
|
16
|
-
const metadataSpinner = new Spinner('Querying registry for package...');
|
|
17
|
-
metadataSpinner.start();
|
|
18
|
-
try {
|
|
19
|
-
const result = await fetchRemotePackageMetadata(parsedName, parsedVersion, pullOptions);
|
|
20
|
-
metadataSpinner.stop();
|
|
21
|
-
return result;
|
|
22
|
-
}
|
|
23
|
-
catch (error) {
|
|
24
|
-
metadataSpinner.stop();
|
|
25
|
-
throw error;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Display package information and warnings
|
|
30
|
-
*/
|
|
31
|
-
function displayPackageInfo(response, parsedVersion, versionToPull, profile) {
|
|
32
|
-
const inaccessibleDownloads = (response.downloads ?? []).filter((download) => !download.downloadUrl);
|
|
33
|
-
if (inaccessibleDownloads.length > 0) {
|
|
34
|
-
console.log(`⚠️ Skipping ${inaccessibleDownloads.length} downloads:`);
|
|
35
|
-
inaccessibleDownloads.forEach((download) => {
|
|
36
|
-
console.log(` • ${download.name}: not found or insufficient permissions`);
|
|
37
|
-
});
|
|
38
|
-
console.log('');
|
|
39
|
-
}
|
|
40
|
-
console.log('✓ Package found in registry');
|
|
41
|
-
console.log(`✓ Version: ${parsedVersion ?? 'latest'} (resolved: ${versionToPull})`);
|
|
42
|
-
console.log(`✓ Profile: ${profile}`);
|
|
43
|
-
console.log('');
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Handle version existence checks and overwrite confirmation
|
|
47
|
-
*/
|
|
48
|
-
async function handleVersionChecks(parsedName, versionToPull) {
|
|
49
|
-
const localVersionExists = await hasPackageVersion(parsedName, versionToPull);
|
|
50
|
-
if (localVersionExists) {
|
|
51
|
-
console.log(`⚠️ Version '${versionToPull}' of package '${parsedName}' already exists locally`);
|
|
52
|
-
console.log('');
|
|
53
|
-
const shouldProceed = await promptOverwriteConfirmation(parsedName, versionToPull);
|
|
54
|
-
if (!shouldProceed) {
|
|
55
|
-
throw new UserCancellationError('User declined to overwrite existing package version');
|
|
56
|
-
}
|
|
57
|
-
console.log('');
|
|
58
|
-
}
|
|
59
|
-
// Check if any version of the package exists (for informational purposes)
|
|
60
|
-
const localExists = await packageManager.packageExists(parsedName);
|
|
61
|
-
if (localExists && !localVersionExists) {
|
|
62
|
-
console.log(`✓ Package '${parsedName}' has other versions locally`);
|
|
63
|
-
console.log('Pulling will add a new version.');
|
|
64
|
-
console.log('');
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Perform recursive pull with batch downloading
|
|
69
|
-
*/
|
|
70
|
-
async function performRecursivePull(parsedName, versionToPull, response, context, registryUrl, profile) {
|
|
71
|
-
const { downloadKeys, warnings: planWarnings } = await planRemoteDownloadsForPackage({ success: true, context, response }, { forceRemote: true, dryRun: false });
|
|
72
|
-
if (planWarnings.length > 0) {
|
|
73
|
-
planWarnings.forEach(warning => console.log(`⚠️ ${warning}`));
|
|
74
|
-
console.log('');
|
|
75
|
-
}
|
|
76
|
-
if (downloadKeys.size === 0) {
|
|
77
|
-
console.log('✓ All packages already exist locally, nothing to pull');
|
|
78
|
-
console.log('');
|
|
79
|
-
return {
|
|
80
|
-
packageName: parsedName,
|
|
81
|
-
version: versionToPull,
|
|
82
|
-
files: 0,
|
|
83
|
-
size: 0,
|
|
84
|
-
checksum: '',
|
|
85
|
-
registry: registryUrl,
|
|
86
|
-
profile,
|
|
87
|
-
isPrivate: response.package.isPrivate,
|
|
88
|
-
downloadUrl: '',
|
|
89
|
-
message: 'All packages already exist locally'
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
const downloadSpinner = new Spinner(`Downloading ${downloadKeys.size} package(s) from remote registry...`);
|
|
93
|
-
downloadSpinner.start();
|
|
94
|
-
try {
|
|
95
|
-
const batchResult = await pullDownloadsBatchFromRemote(response, {
|
|
96
|
-
httpClient: context.httpClient,
|
|
97
|
-
profile: context.profile,
|
|
98
|
-
dryRun: false,
|
|
99
|
-
filter: (dependencyName, dependencyVersion) => {
|
|
100
|
-
const downloadKey = `${dependencyName}@${dependencyVersion}`;
|
|
101
|
-
return downloadKeys.has(downloadKey);
|
|
102
|
-
}
|
|
103
|
-
});
|
|
104
|
-
downloadSpinner.stop();
|
|
105
|
-
recordBatchOutcome('Pulled packages', batchResult, [], false);
|
|
106
|
-
if (!batchResult.success) {
|
|
107
|
-
throw {
|
|
108
|
-
success: false,
|
|
109
|
-
reason: 'network',
|
|
110
|
-
message: `Failed to pull ${batchResult.failed.length} package(s)`
|
|
111
|
-
};
|
|
112
|
-
}
|
|
113
|
-
const mainPackageResult = batchResult.pulled.find(item => item.name === parsedName && item.version === versionToPull);
|
|
114
|
-
return {
|
|
115
|
-
packageName: parsedName,
|
|
116
|
-
version: versionToPull,
|
|
117
|
-
files: mainPackageResult ? 0 : 0,
|
|
118
|
-
size: response.version.tarballSize,
|
|
119
|
-
checksum: '',
|
|
120
|
-
registry: registryUrl,
|
|
121
|
-
profile,
|
|
122
|
-
isPrivate: response.package.isPrivate,
|
|
123
|
-
downloadUrl: mainPackageResult?.downloadUrl || '',
|
|
124
|
-
message: `Successfully pulled ${batchResult.pulled.length} package(s) (${batchResult.failed.length} failed)`
|
|
125
|
-
};
|
|
126
|
-
}
|
|
127
|
-
catch (error) {
|
|
128
|
-
downloadSpinner.stop();
|
|
129
|
-
throw error;
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
/**
|
|
133
|
-
* Perform single package pull
|
|
134
|
-
*/
|
|
135
|
-
async function performSinglePull(parsedName, parsedVersion, response, context, pullOptions, registryUrl, profile) {
|
|
136
|
-
const downloadSpinner = new Spinner('Downloading package tarball...');
|
|
137
|
-
downloadSpinner.start();
|
|
138
|
-
try {
|
|
139
|
-
const pullResult = await pullPackageFromRemote(parsedName, parsedVersion, {
|
|
140
|
-
...pullOptions,
|
|
141
|
-
preFetchedResponse: response,
|
|
142
|
-
httpClient: context.httpClient
|
|
143
|
-
});
|
|
144
|
-
downloadSpinner.stop();
|
|
145
|
-
if (!pullResult.success) {
|
|
146
|
-
throw pullResult;
|
|
147
|
-
}
|
|
148
|
-
const extracted = pullResult.extracted;
|
|
149
|
-
return {
|
|
150
|
-
packageName: pullResult.response.package.name,
|
|
151
|
-
version: pullResult.response.version.version,
|
|
152
|
-
files: extracted.files.length,
|
|
153
|
-
size: pullResult.response.version.tarballSize,
|
|
154
|
-
checksum: extracted.checksum,
|
|
155
|
-
registry: registryUrl,
|
|
156
|
-
profile,
|
|
157
|
-
isPrivate: pullResult.response.package.isPrivate,
|
|
158
|
-
downloadUrl: pullResult.downloadUrl,
|
|
159
|
-
message: 'Package pulled and installed successfully'
|
|
160
|
-
};
|
|
161
|
-
}
|
|
162
|
-
catch (error) {
|
|
163
|
-
downloadSpinner.stop();
|
|
164
|
-
throw error;
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
/**
|
|
168
|
-
* Display pull results
|
|
169
|
-
*/
|
|
170
|
-
function displayPullResults(result, response) {
|
|
171
|
-
console.log('✓ Pull successful');
|
|
172
|
-
console.log('');
|
|
173
|
-
console.log('✓ Package Details:');
|
|
174
|
-
console.log(` • Name: ${result.packageName}`);
|
|
175
|
-
console.log(` • Version: ${result.version}`);
|
|
176
|
-
console.log(` • Description: ${response.package.description || '(no description)'}`);
|
|
177
|
-
console.log(` • Size: ${formatFileSize(result.size)}`);
|
|
178
|
-
const keywords = Array.isArray(response.package.keywords) ? response.package.keywords : [];
|
|
179
|
-
if (keywords.length > 0) {
|
|
180
|
-
console.log(` • Keywords: ${keywords.join(', ')}`);
|
|
181
|
-
}
|
|
182
|
-
console.log(` • Private: ${result.isPrivate ? 'Yes' : 'No'}`);
|
|
183
|
-
console.log(` • Files: ${result.files}`);
|
|
184
|
-
if (result.checksum) {
|
|
185
|
-
console.log(` • Checksum: ${result.checksum.substring(0, 16)}...`);
|
|
186
|
-
}
|
|
187
|
-
console.log('');
|
|
188
|
-
console.log('✓ Next steps:');
|
|
189
|
-
console.log(` opkg show ${result.packageName} # View package details`);
|
|
190
|
-
console.log(` opkg install ${result.packageName} # Install package to current project`);
|
|
191
|
-
}
|
|
192
|
-
/**
|
|
193
|
-
* Pull package command implementation
|
|
194
|
-
*/
|
|
1
|
+
import { withErrorHandling } from '../utils/errors.js';
|
|
2
|
+
import { parsePathsOption } from '../core/pull/pull-options.js';
|
|
3
|
+
import { runPullPipeline } from '../core/pull/pull-pipeline.js';
|
|
195
4
|
async function pullPackageCommand(packageInput, options) {
|
|
196
|
-
|
|
197
|
-
logger.info(`Pulling package '${parsedName}' from remote registry`, { options });
|
|
198
|
-
try {
|
|
199
|
-
const pullOptions = {
|
|
200
|
-
profile: options.profile,
|
|
201
|
-
apiKey: options.apiKey,
|
|
202
|
-
recursive: !!options.recursive,
|
|
203
|
-
};
|
|
204
|
-
console.log(`✓ Pulling package '${parsedName}' from remote registry...`);
|
|
205
|
-
console.log(`✓ Version: ${parsedVersion ?? 'latest'}`);
|
|
206
|
-
console.log('');
|
|
207
|
-
// Fetch package metadata
|
|
208
|
-
const metadataResult = await fetchPackageMetadata(parsedName, parsedVersion, pullOptions);
|
|
209
|
-
if (!metadataResult.success) {
|
|
210
|
-
return handleMetadataFailure(metadataResult, parsedName, parsedVersion);
|
|
211
|
-
}
|
|
212
|
-
const { response, context } = metadataResult;
|
|
213
|
-
const registryUrl = context.registryUrl;
|
|
214
|
-
const profile = context.profile;
|
|
215
|
-
const versionToPull = response.version.version;
|
|
216
|
-
// Display package information
|
|
217
|
-
displayPackageInfo(response, parsedVersion, versionToPull, profile);
|
|
218
|
-
// Handle version checks and overwrite confirmation (only for non-recursive pulls)
|
|
219
|
-
if (!options.recursive) {
|
|
220
|
-
await handleVersionChecks(parsedName, versionToPull);
|
|
221
|
-
}
|
|
222
|
-
// Perform the actual pull operation
|
|
223
|
-
const result = options.recursive
|
|
224
|
-
? await performRecursivePull(parsedName, versionToPull, response, context, registryUrl, profile)
|
|
225
|
-
: await performSinglePull(parsedName, parsedVersion, response, context, pullOptions, registryUrl, profile);
|
|
226
|
-
// Display results
|
|
227
|
-
displayPullResults(result, response);
|
|
228
|
-
return {
|
|
229
|
-
success: true,
|
|
230
|
-
data: result
|
|
231
|
-
};
|
|
232
|
-
}
|
|
233
|
-
catch (error) {
|
|
234
|
-
logger.debug('Pull command failed', { error, packageName: parsedName });
|
|
235
|
-
return handleUnexpectedError(error, parsedName, parsedVersion);
|
|
236
|
-
}
|
|
5
|
+
return runPullPipeline(packageInput, options);
|
|
237
6
|
}
|
|
238
|
-
/**
|
|
239
|
-
* Setup the pull command
|
|
240
|
-
*/
|
|
241
7
|
export function setupPullCommand(program) {
|
|
242
8
|
program
|
|
243
9
|
.command('pull')
|
|
@@ -246,6 +12,7 @@ export function setupPullCommand(program) {
|
|
|
246
12
|
.option('--profile <profile>', 'profile to use for authentication')
|
|
247
13
|
.option('--api-key <key>', 'API key for authentication (overrides profile)')
|
|
248
14
|
.option('--recursive', 'include dependency metadata (no additional downloads)')
|
|
15
|
+
.option('--paths <list>', 'comma-separated registry paths for partial pull', parsePathsOption)
|
|
249
16
|
.action(withErrorHandling(async (packageName, options) => {
|
|
250
17
|
const result = await pullPackageCommand(packageName, options);
|
|
251
18
|
if (!result.success) {
|
|
@@ -253,65 +20,4 @@ export function setupPullCommand(program) {
|
|
|
253
20
|
}
|
|
254
21
|
}));
|
|
255
22
|
}
|
|
256
|
-
function handleMetadataFailure(failure, packageName, requestedVersion) {
|
|
257
|
-
switch (failure.reason) {
|
|
258
|
-
case 'not-found':
|
|
259
|
-
console.error(`❌ Package '${packageName}' not found in registry`);
|
|
260
|
-
if (requestedVersion) {
|
|
261
|
-
console.log(`Version '${requestedVersion}' does not exist.`);
|
|
262
|
-
}
|
|
263
|
-
else {
|
|
264
|
-
console.log('Package does not exist in the registry.');
|
|
265
|
-
}
|
|
266
|
-
console.log('');
|
|
267
|
-
console.log('💡 Try one of these options:');
|
|
268
|
-
console.log(' • Check the package name spelling');
|
|
269
|
-
console.log(' • Use opkg search to find available packages');
|
|
270
|
-
console.log(' • Verify you have access to this package if it\'s private');
|
|
271
|
-
return { success: false, error: 'Package not found' };
|
|
272
|
-
case 'access-denied':
|
|
273
|
-
console.error(failure.message);
|
|
274
|
-
console.log('');
|
|
275
|
-
if (failure.statusCode === 403) {
|
|
276
|
-
console.log('💡 This may be a private package. Ensure you have VIEWER permissions.');
|
|
277
|
-
}
|
|
278
|
-
console.log('💡 To configure authentication:');
|
|
279
|
-
console.log(' opkg configure');
|
|
280
|
-
console.log(' opkg configure --profile <name>');
|
|
281
|
-
return { success: false, error: 'Access denied' };
|
|
282
|
-
case 'network':
|
|
283
|
-
console.log('');
|
|
284
|
-
console.log('💡 Try one of these options:');
|
|
285
|
-
console.log(' • Check your internet connection');
|
|
286
|
-
console.log(' • Try again (temporary network issue)');
|
|
287
|
-
console.log(' • Set OPENPACKAGEAPI_TIMEOUT environment variable for longer timeout');
|
|
288
|
-
return { success: false, error: 'Download failed' };
|
|
289
|
-
case 'integrity':
|
|
290
|
-
console.error(`❌ Package integrity verification failed: ${failure.message}`);
|
|
291
|
-
console.log('');
|
|
292
|
-
console.log('💡 The downloaded package may be corrupted. Try pulling again.');
|
|
293
|
-
return { success: false, error: 'Integrity verification failed' };
|
|
294
|
-
default:
|
|
295
|
-
return { success: false, error: failure.message };
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
function handleUnexpectedError(error, packageName, requestedVersion) {
|
|
299
|
-
if (error && typeof error === 'object' && 'success' in error) {
|
|
300
|
-
return handleMetadataFailure(error, packageName, requestedVersion);
|
|
301
|
-
}
|
|
302
|
-
if (error instanceof Error) {
|
|
303
|
-
return handleMetadataFailure({
|
|
304
|
-
success: false,
|
|
305
|
-
reason: 'unknown',
|
|
306
|
-
message: error.message,
|
|
307
|
-
error
|
|
308
|
-
}, packageName, requestedVersion);
|
|
309
|
-
}
|
|
310
|
-
return handleMetadataFailure({
|
|
311
|
-
success: false,
|
|
312
|
-
reason: 'unknown',
|
|
313
|
-
message: 'Unknown error occurred',
|
|
314
|
-
error
|
|
315
|
-
}, packageName, requestedVersion);
|
|
316
|
-
}
|
|
317
23
|
//# sourceMappingURL=pull.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pull.js","sourceRoot":"","sources":["../../src/commands/pull.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pull.js","sourceRoot":"","sources":["../../src/commands/pull.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,KAAK,UAAU,kBAAkB,CAC/B,YAAoB,EACpB,OAAoB;IAEpB,OAAO,eAAe,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAC/C,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,uEAAuE,CAAC;SACpF,QAAQ,CAAC,gBAAgB,EAAE,+DAA+D,CAAC;SAC3F,MAAM,CAAC,qBAAqB,EAAE,mCAAmC,CAAC;SAClE,MAAM,CAAC,iBAAiB,EAAE,gDAAgD,CAAC;SAC3E,MAAM,CAAC,aAAa,EAAE,uDAAuD,CAAC;SAC9E,MAAM,CAAC,gBAAgB,EAAE,iDAAiD,EAAE,gBAAgB,CAAC;SAC7F,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,WAAmB,EAAE,OAAoB,EAAE,EAAE;QAC5E,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAC9D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,uBAAuB,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC,CAAC,CAAC,CAAC;AACR,CAAC"}
|
package/dist/commands/push.js
CHANGED
|
@@ -1,250 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { authManager } from '../core/auth.js';
|
|
5
|
-
import { logger } from '../utils/logger.js';
|
|
6
|
-
import { withErrorHandling, UserCancellationError, PackageNotFoundError } from '../utils/errors.js';
|
|
7
|
-
import { createHttpClient } from '../utils/http-client.js';
|
|
8
|
-
import { createTarballFromPackage, createFormDataForUpload } from '../utils/tarball.js';
|
|
9
|
-
import * as semver from 'semver';
|
|
10
|
-
import { parsePackageInput } from '../utils/package-name.js';
|
|
11
|
-
import { promptConfirmation } from '../utils/prompts.js';
|
|
12
|
-
import { formatFileSize } from '../utils/formatters.js';
|
|
13
|
-
import { Spinner } from '../utils/spinner.js';
|
|
14
|
-
import { showApiKeySignupMessage } from '../utils/messages.js';
|
|
15
|
-
import { getLatestStableVersion } from '../utils/package-versioning.js';
|
|
16
|
-
import { resolveScopedNameForPushWithUserScope, isScopedName } from '../core/scoping/package-scoping.js';
|
|
17
|
-
import { renameRegistryPackage } from '../core/registry/registry-rename.js';
|
|
18
|
-
import { getLocalPackageDir } from '../utils/paths.js';
|
|
19
|
-
import { FILE_PATTERNS, DIR_PATTERNS } from '../constants/index.js';
|
|
20
|
-
import { exists } from '../utils/fs.js';
|
|
21
|
-
import { parsePackageYml } from '../utils/package-yml.js';
|
|
22
|
-
import { applyWorkspacePackageRename } from '../core/save/workspace-rename.js';
|
|
23
|
-
import { getCurrentUsername } from '../core/api-keys.js';
|
|
24
|
-
async function tryRenameWorkspacePackage(cwd, oldName, newName) {
|
|
25
|
-
try {
|
|
26
|
-
const packageRootDir = getLocalPackageDir(cwd, oldName);
|
|
27
|
-
const packageYmlPath = join(packageRootDir, DIR_PATTERNS.OPENPACKAGE, FILE_PATTERNS.PACKAGE_YML);
|
|
28
|
-
if (!(await exists(packageYmlPath))) {
|
|
29
|
-
return;
|
|
30
|
-
}
|
|
31
|
-
const config = await parsePackageYml(packageYmlPath);
|
|
32
|
-
// Construct full PackageContext for nested package
|
|
33
|
-
const packageContext = {
|
|
34
|
-
name: config.name,
|
|
35
|
-
version: config.version,
|
|
36
|
-
config,
|
|
37
|
-
packageYmlPath,
|
|
38
|
-
packageRootDir,
|
|
39
|
-
packageFilesDir: join(packageRootDir, DIR_PATTERNS.OPENPACKAGE),
|
|
40
|
-
location: 'nested',
|
|
41
|
-
isCwdPackage: false,
|
|
42
|
-
isNew: false
|
|
43
|
-
};
|
|
44
|
-
await applyWorkspacePackageRename(cwd, packageContext, newName);
|
|
45
|
-
console.log(`✓ Updated workspace package name: ${oldName} → ${newName}`);
|
|
46
|
-
}
|
|
47
|
-
catch (error) {
|
|
48
|
-
logger.debug('Workspace package rename skipped', {
|
|
49
|
-
oldName,
|
|
50
|
-
newName,
|
|
51
|
-
error: error instanceof Error ? error.message : String(error)
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
}
|
|
1
|
+
import { withErrorHandling } from '../utils/errors.js';
|
|
2
|
+
import { runPushPipeline } from '../core/push/push-pipeline.js';
|
|
3
|
+
import { parsePathsOption } from '../utils/registry-paths.js';
|
|
55
4
|
async function pushPackageCommand(packageInput, options) {
|
|
56
|
-
|
|
57
|
-
const cwd = process.cwd();
|
|
58
|
-
const { name: parsedName, version: parsedVersion } = parsePackageInput(packageInput);
|
|
59
|
-
let packageNameToPush = parsedName;
|
|
60
|
-
let attemptedVersion;
|
|
61
|
-
try {
|
|
62
|
-
// Ensure registry directories exist
|
|
63
|
-
await ensureRegistryDirectories();
|
|
64
|
-
// Verify package exists locally
|
|
65
|
-
const packageExists = await packageManager.packageExists(packageNameToPush);
|
|
66
|
-
if (!packageExists) {
|
|
67
|
-
console.error(`❌ Package '${packageNameToPush}' not found in local registry`);
|
|
68
|
-
return { success: false, error: 'Package not found' };
|
|
69
|
-
}
|
|
70
|
-
const authOptions = {
|
|
71
|
-
profile: options.profile,
|
|
72
|
-
apiKey: options.apiKey
|
|
73
|
-
};
|
|
74
|
-
// Authentication required for push operation (also needed for scope resolution)
|
|
75
|
-
await authManager.validateAuth(authOptions);
|
|
76
|
-
if (!isScopedName(packageNameToPush)) {
|
|
77
|
-
const username = await getCurrentUsername(authOptions);
|
|
78
|
-
const scopedName = await resolveScopedNameForPushWithUserScope(packageNameToPush, username, options.profile);
|
|
79
|
-
await renameRegistryPackage(packageNameToPush, scopedName);
|
|
80
|
-
await tryRenameWorkspacePackage(cwd, packageNameToPush, scopedName);
|
|
81
|
-
packageNameToPush = scopedName;
|
|
82
|
-
}
|
|
83
|
-
// Determine which version to push
|
|
84
|
-
let pkg;
|
|
85
|
-
let versionToPush;
|
|
86
|
-
if (parsedVersion) {
|
|
87
|
-
// Explicit version flow
|
|
88
|
-
if (semver.prerelease(parsedVersion)) {
|
|
89
|
-
console.error(`❌ Prerelease versions cannot be pushed: ${parsedVersion}`);
|
|
90
|
-
console.log('Only stable versions (x.y.z) can be pushed to the remote registry.');
|
|
91
|
-
console.log('💡 Create a stable version using "opkg pack <package>".');
|
|
92
|
-
return { success: false, error: 'Only stable versions can be pushed' };
|
|
93
|
-
}
|
|
94
|
-
try {
|
|
95
|
-
pkg = await packageManager.loadPackage(packageNameToPush, parsedVersion);
|
|
96
|
-
}
|
|
97
|
-
catch (error) {
|
|
98
|
-
if (error instanceof PackageNotFoundError) {
|
|
99
|
-
console.error(`❌ Version ${parsedVersion} not found for package '${packageNameToPush}'`);
|
|
100
|
-
console.log('💡 Create this stable version using "opkg pack <package>" and push again.');
|
|
101
|
-
return { success: false, error: 'Version not found' };
|
|
102
|
-
}
|
|
103
|
-
throw error;
|
|
104
|
-
}
|
|
105
|
-
versionToPush = pkg.metadata.version;
|
|
106
|
-
}
|
|
107
|
-
else {
|
|
108
|
-
// Implicit version flow - use latest stable only
|
|
109
|
-
const allVersions = await listPackageVersions(packageNameToPush);
|
|
110
|
-
const latestStable = getLatestStableVersion(allVersions);
|
|
111
|
-
if (!latestStable) {
|
|
112
|
-
console.error(`❌ No stable versions found for package '${packageNameToPush}'`);
|
|
113
|
-
console.log('💡 Stable versions can be created using "opkg pack <package>".');
|
|
114
|
-
// Treat as a graceful, non-error exit to avoid duplicate plain error output
|
|
115
|
-
return { success: true };
|
|
116
|
-
}
|
|
117
|
-
const proceed = await promptConfirmation(`Push latest stable version '${latestStable}'?`, true);
|
|
118
|
-
if (!proceed) {
|
|
119
|
-
throw new UserCancellationError('User declined pushing the stable version');
|
|
120
|
-
}
|
|
121
|
-
pkg = await packageManager.loadPackage(packageNameToPush, latestStable);
|
|
122
|
-
versionToPush = pkg.metadata.version;
|
|
123
|
-
}
|
|
124
|
-
attemptedVersion = versionToPush;
|
|
125
|
-
if (semver.prerelease(versionToPush)) {
|
|
126
|
-
console.error(`❌ Prerelease versions cannot be pushed: ${versionToPush}`);
|
|
127
|
-
console.log('Only stable versions (x.y.z) can be pushed to the remote registry.');
|
|
128
|
-
console.log('💡 Create a stable version using "opkg pack <package>".');
|
|
129
|
-
return { success: false, error: 'Only stable versions can be pushed' };
|
|
130
|
-
}
|
|
131
|
-
// Authenticate and create HTTP client
|
|
132
|
-
const httpClient = await createHttpClient(authOptions);
|
|
133
|
-
const registryUrl = authManager.getRegistryUrl();
|
|
134
|
-
const profile = authManager.getCurrentProfile(authOptions);
|
|
135
|
-
console.log(`✓ Pushing package '${packageNameToPush}' to remote registry...`);
|
|
136
|
-
console.log(`✓ Version: ${versionToPush}`);
|
|
137
|
-
console.log(`✓ Profile: ${profile}`);
|
|
138
|
-
console.log('');
|
|
139
|
-
// Step 1: Validate package completeness
|
|
140
|
-
console.log('✓ Package validation complete');
|
|
141
|
-
console.log(` • Name: ${pkg.metadata.name}`);
|
|
142
|
-
console.log(` • Version: ${versionToPush}`);
|
|
143
|
-
console.log(` • Description: ${pkg.metadata.description || '(no description)'}`);
|
|
144
|
-
console.log(` • Files: ${pkg.files.length}`);
|
|
145
|
-
// Step 2: Create tarball
|
|
146
|
-
console.log('✓ Creating tarball...');
|
|
147
|
-
const tarballInfo = await createTarballFromPackage(pkg);
|
|
148
|
-
console.log(`✓ Created tarball (${pkg.files.length} files, ${formatFileSize(tarballInfo.size)})`);
|
|
149
|
-
// Step 3: Prepare upload data
|
|
150
|
-
const formData = createFormDataForUpload(packageNameToPush, versionToPush, tarballInfo);
|
|
151
|
-
// Step 4: Upload to registry
|
|
152
|
-
const uploadSpinner = new Spinner('Uploading to registry...');
|
|
153
|
-
uploadSpinner.start();
|
|
154
|
-
let response;
|
|
155
|
-
try {
|
|
156
|
-
response = await httpClient.uploadFormData('/packages/push', formData);
|
|
157
|
-
uploadSpinner.stop();
|
|
158
|
-
}
|
|
159
|
-
catch (error) {
|
|
160
|
-
uploadSpinner.stop();
|
|
161
|
-
throw error;
|
|
162
|
-
}
|
|
163
|
-
// Step 5: Success!
|
|
164
|
-
console.log('✓ Push successful');
|
|
165
|
-
console.log('');
|
|
166
|
-
console.log('✓ Package Details:');
|
|
167
|
-
console.log(` • Name: ${response.package.name}`);
|
|
168
|
-
console.log(` • Version: ${response.version.version}`);
|
|
169
|
-
console.log(` • Size: ${formatFileSize(tarballInfo.size)}`);
|
|
170
|
-
const keywords = Array.isArray(response.package.keywords) ? response.package.keywords : [];
|
|
171
|
-
if (keywords.length > 0) {
|
|
172
|
-
console.log(` • Keywords: ${keywords.join(', ')}`);
|
|
173
|
-
}
|
|
174
|
-
console.log(` • Private: ${response.package.isPrivate ? 'Yes' : 'No'}`);
|
|
175
|
-
console.log(` • Created: ${new Date(response.version.createdAt).toLocaleString()}`);
|
|
176
|
-
return {
|
|
177
|
-
success: true,
|
|
178
|
-
data: {
|
|
179
|
-
packageName: response.package.name,
|
|
180
|
-
version: response.version.version,
|
|
181
|
-
size: tarballInfo.size,
|
|
182
|
-
checksum: tarballInfo.checksum,
|
|
183
|
-
registry: registryUrl,
|
|
184
|
-
profile,
|
|
185
|
-
message: response.message
|
|
186
|
-
}
|
|
187
|
-
};
|
|
188
|
-
}
|
|
189
|
-
catch (error) {
|
|
190
|
-
logger.debug('Push command failed', { error, packageName: packageNameToPush });
|
|
191
|
-
// Handle specific error cases
|
|
192
|
-
if (error instanceof Error) {
|
|
193
|
-
const apiError = error.apiError;
|
|
194
|
-
if (apiError?.statusCode === 409) {
|
|
195
|
-
console.error(`❌ Version ${attemptedVersion || 'latest'} already exists for package '${packageNameToPush}'`);
|
|
196
|
-
console.log('💡 Try one of these options:');
|
|
197
|
-
console.log(' • Increment version with command "opkg pack <package>"');
|
|
198
|
-
console.log(' • Update version with command "opkg pack <package>@<version>"');
|
|
199
|
-
console.log(' • Specify a version explicitly using <package>@<version>');
|
|
200
|
-
return { success: false, error: 'Version already exists' };
|
|
201
|
-
}
|
|
202
|
-
if (apiError?.statusCode === 401) {
|
|
203
|
-
console.error(`❌ Authentication failed: ${error.message}`);
|
|
204
|
-
showApiKeySignupMessage();
|
|
205
|
-
console.log('💡 To configure authentication:');
|
|
206
|
-
console.log(' opkg configure');
|
|
207
|
-
console.log(' opkg configure --profile <name>');
|
|
208
|
-
return { success: false, error: 'Authentication failed' };
|
|
209
|
-
}
|
|
210
|
-
if (apiError?.statusCode === 403) {
|
|
211
|
-
console.error(`❌ Access denied: ${error.message}`);
|
|
212
|
-
showApiKeySignupMessage();
|
|
213
|
-
console.log('💡 To configure authentication:');
|
|
214
|
-
console.log(' opkg configure');
|
|
215
|
-
console.log(' opkg configure --profile <name>');
|
|
216
|
-
return { success: false, error: 'Access denied' };
|
|
217
|
-
}
|
|
218
|
-
if (apiError?.statusCode === 422) {
|
|
219
|
-
console.error(`❌ Package validation failed: ${error.message}`);
|
|
220
|
-
if (apiError.details) {
|
|
221
|
-
console.log('Validation errors:');
|
|
222
|
-
if (Array.isArray(apiError.details)) {
|
|
223
|
-
apiError.details.forEach((detail) => {
|
|
224
|
-
console.log(` • ${detail.message || detail}`);
|
|
225
|
-
});
|
|
226
|
-
}
|
|
227
|
-
else {
|
|
228
|
-
console.log(` • ${apiError.details}`);
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
return { success: false, error: 'Validation failed' };
|
|
232
|
-
}
|
|
233
|
-
// Generic error handling (do not print here; global handler will print once)
|
|
234
|
-
if (error.message.includes('timeout')) {
|
|
235
|
-
console.log('💡 The upload may have timed out. You can:');
|
|
236
|
-
console.log(' • Try again (the upload may have succeeded)');
|
|
237
|
-
console.log(' • Check your internet connection');
|
|
238
|
-
console.log(' • Set OPENPACKAGEAPI_TIMEOUT environment variable for longer timeout');
|
|
239
|
-
}
|
|
240
|
-
return { success: false, error: error.message };
|
|
241
|
-
}
|
|
242
|
-
return { success: false, error: 'Unknown error occurred' };
|
|
243
|
-
}
|
|
5
|
+
return runPushPipeline(packageInput, options);
|
|
244
6
|
}
|
|
245
|
-
/**
|
|
246
|
-
* Setup the push command
|
|
247
|
-
*/
|
|
248
7
|
export function setupPushCommand(program) {
|
|
249
8
|
program
|
|
250
9
|
.command('push')
|
|
@@ -252,6 +11,7 @@ export function setupPushCommand(program) {
|
|
|
252
11
|
.argument('<package-name>', 'name of the package to push. Supports package@version syntax.')
|
|
253
12
|
.option('--profile <profile>', 'profile to use for authentication')
|
|
254
13
|
.option('--api-key <key>', 'API key for authentication (overrides profile)')
|
|
14
|
+
.option('--paths <list>', 'comma-separated registry paths for partial push', parsePathsOption)
|
|
255
15
|
.action(withErrorHandling(async (packageName, options) => {
|
|
256
16
|
const result = await pushPackageCommand(packageName, options);
|
|
257
17
|
if (!result.success) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"push.js","sourceRoot":"","sources":["../../src/commands/push.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"push.js","sourceRoot":"","sources":["../../src/commands/push.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D,KAAK,UAAU,kBAAkB,CAC/B,YAAoB,EACpB,OAAoB;IAEpB,OAAO,eAAe,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAC/C,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,qEAAqE,CAAC;SAClF,QAAQ,CAAC,gBAAgB,EAAE,+DAA+D,CAAC;SAC3F,MAAM,CAAC,qBAAqB,EAAE,mCAAmC,CAAC;SAClE,MAAM,CAAC,iBAAiB,EAAE,gDAAgD,CAAC;SAC3E,MAAM,CAAC,gBAAgB,EAAE,iDAAiD,EAAE,gBAAgB,CAAC;SAC7F,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,WAAmB,EAAE,OAAoB,EAAE,EAAE;QAC5E,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAC9D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,uBAAuB,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC,CAAC,CAAC,CAAC;AACR,CAAC"}
|