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/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# OpenPackage
|
|
2
2
|
|
|
3
3
|
<a href="https://www.npmjs.com/package/opkg " target="blank">
|
|
4
|
-
<img src="https://img.shields.io/npm/v/opkg
|
|
4
|
+
<img src="https://img.shields.io/npm/v/opkg?style=flat-square" alt="Npm package for OpenPackage">
|
|
5
5
|
</a>
|
|
6
6
|
<a href="https://discord.gg/W5H54HZ8Fm" target="blank">
|
|
7
7
|
<img src="https://img.shields.io/badge/Discord-%235865F2.svg?&logo=discord&logoColor=white&style=flat-square" alt="OpenPackage Discord">
|
|
@@ -32,6 +32,16 @@ npm install -g opkg
|
|
|
32
32
|
|
|
33
33
|
### Reuse files across multiple codebases
|
|
34
34
|
Reuse rules, slash commands, and more across multiple codebases.
|
|
35
|
+
|
|
36
|
+
#### Single file
|
|
37
|
+
```bash title="Terminal"
|
|
38
|
+
# In current codebase
|
|
39
|
+
opkg save f specs/nextjs.md
|
|
40
|
+
# In another codebase
|
|
41
|
+
opkg install f/specs/nextjs.md
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
#### Multiple files via package
|
|
35
45
|
```bash title="Terminal"
|
|
36
46
|
# In current codebase
|
|
37
47
|
opkg save essentials
|
|
@@ -50,32 +60,28 @@ opkg save essentials .cursor/commands/essentials
|
|
|
50
60
|
# OpenPackage CLI automatically generates/syncs the same command files across all platforms.
|
|
51
61
|
|
|
52
62
|
# Before save:
|
|
53
|
-
# .cursor/commands/essentials/
|
|
63
|
+
# .cursor/commands/essentials/cleanup.md
|
|
54
64
|
|
|
55
65
|
# After save:
|
|
56
|
-
# .cursor/commands/essentials/
|
|
57
|
-
# .claude/commands/essentials/
|
|
58
|
-
# .opencode/command/essentials/
|
|
66
|
+
# .cursor/commands/essentials/cleanup.md
|
|
67
|
+
# .claude/commands/essentials/cleanup.md
|
|
68
|
+
# .opencode/command/essentials/cleanup.md
|
|
59
69
|
```
|
|
60
70
|
|
|
61
71
|
### Modular management of files
|
|
62
72
|
Create domain specific packages for modular reuse.
|
|
63
73
|
```bash title="Terminal"
|
|
64
74
|
# Create typescript package
|
|
65
|
-
opkg
|
|
66
|
-
opkg save typescript
|
|
75
|
+
opkg save typescript .cursor/rules/typescript
|
|
67
76
|
|
|
68
77
|
# Create scalable-nextjs package
|
|
69
|
-
opkg
|
|
70
|
-
opkg save scalable-nextjs
|
|
78
|
+
opkg save scalable-nextjs .cursor/rules/nextjs
|
|
71
79
|
|
|
72
80
|
# Create scalable-nestjs package
|
|
73
|
-
opkg
|
|
74
|
-
opkg save scalable-nestjs
|
|
81
|
+
opkg save scalable-nestjs .cursor/rules/nestjs
|
|
75
82
|
|
|
76
83
|
# Create mongodb package
|
|
77
|
-
opkg
|
|
78
|
-
opkg save mongodb
|
|
84
|
+
opkg save mongodb .cursor/rules/mongodb
|
|
79
85
|
|
|
80
86
|
# In your NextJS codebase
|
|
81
87
|
opkg install typescript
|
|
@@ -92,9 +98,17 @@ opkg install mongodb
|
|
|
92
98
|
> [!TIP]
|
|
93
99
|
> We highly recommend reading [the packages doc](https://openpackage.dev/docs/packages) to understand how packages work.
|
|
94
100
|
|
|
101
|
+
### Save a file
|
|
102
|
+
|
|
103
|
+
```bash title="Terminal"
|
|
104
|
+
opkg save <package> <path-to-dir-or-file>
|
|
105
|
+
```
|
|
106
|
+
Adds the file to the specified package and saves to local registry for reuse and sharing.
|
|
107
|
+
|
|
95
108
|
### Create a package
|
|
96
109
|
|
|
97
|
-
#### In a project/workspace
|
|
110
|
+
#### In a project/workspace
|
|
111
|
+
|
|
98
112
|
```bash title="Terminal"
|
|
99
113
|
opkg init <package>
|
|
100
114
|
```
|
|
@@ -149,6 +163,12 @@ opkg uninstall <package>
|
|
|
149
163
|
```
|
|
150
164
|
Use the uninstall command to remove all files for the specified package from the codebase at cwd.
|
|
151
165
|
|
|
166
|
+
### Authenticate CLI
|
|
167
|
+
```bash title="Terminal"
|
|
168
|
+
opkg login
|
|
169
|
+
```
|
|
170
|
+
Use the `login` command to authenticate the CLI for pushing packages to the [official OpenPackage registry](https://openpackage.dev).
|
|
171
|
+
|
|
152
172
|
### Push a package to remote
|
|
153
173
|
```bash title="Terminal"
|
|
154
174
|
opkg push <package>
|
|
@@ -170,7 +190,7 @@ Packages are composed using the following directory structure:
|
|
|
170
190
|
|
|
171
191
|
```txt title="Structure"
|
|
172
192
|
<package>
|
|
173
|
-
├── .openpackage
|
|
193
|
+
├── .openpackage/
|
|
174
194
|
│ ├── package.yml # The OpenPackage manifest, required
|
|
175
195
|
│ ├── rules/
|
|
176
196
|
│ │ └── # Rule files
|
|
@@ -5,6 +5,7 @@ import { logger } from '../utils/logger.js';
|
|
|
5
5
|
import { withErrorHandling, PackageNotFoundError } from '../utils/errors.js';
|
|
6
6
|
import { parsePackageInput } from '../utils/package-name.js';
|
|
7
7
|
import { transformPackageFilesMetadata } from '../utils/package-versioning.js';
|
|
8
|
+
import { UNVERSIONED } from '../constants/index.js';
|
|
8
9
|
async function duplicatePackageCommand(sourceInput, newInput) {
|
|
9
10
|
logger.info(`Duplicating package: ${sourceInput} -> ${newInput}`);
|
|
10
11
|
// Ensure registry directories
|
|
@@ -45,8 +46,10 @@ async function duplicatePackageCommand(sourceInput, newInput) {
|
|
|
45
46
|
};
|
|
46
47
|
// Save duplicated package
|
|
47
48
|
await packageManager.savePackage(newPackage);
|
|
48
|
-
|
|
49
|
-
|
|
49
|
+
const fromLabel = sourcePackage.metadata.version ? `${sourceName}@${sourcePackage.metadata.version}` : `${sourceName} (${UNVERSIONED})`;
|
|
50
|
+
const toLabel = newVersion ? `${newName}@${newVersion}` : `${newName} (${UNVERSIONED})`;
|
|
51
|
+
console.log(`✓ Duplicated '${fromLabel}' -> '${toLabel}'`);
|
|
52
|
+
return { success: true, data: { from: fromLabel, to: toLabel } };
|
|
50
53
|
}
|
|
51
54
|
export function setupDuplicateCommand(program) {
|
|
52
55
|
program
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"duplicate.js","sourceRoot":"","sources":["../../src/commands/duplicate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,6BAA6B,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"duplicate.js","sourceRoot":"","sources":["../../src/commands/duplicate.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/init.js
CHANGED
|
@@ -71,7 +71,10 @@ async function initNestedPackage(packageName, force) {
|
|
|
71
71
|
logger.info(`Initializing nested package '${normalizedName}' in: ${packageFilesDir}`);
|
|
72
72
|
try {
|
|
73
73
|
await ensureDir(packageFilesDir);
|
|
74
|
-
const packageConfig =
|
|
74
|
+
const packageConfig = {
|
|
75
|
+
...(await promptPackageDetailsForNamed(normalizedName)),
|
|
76
|
+
partial: true
|
|
77
|
+
};
|
|
75
78
|
// Ensure include pattern is set
|
|
76
79
|
if (!packageConfig.include || packageConfig.include.length === 0) {
|
|
77
80
|
packageConfig.include = ['**'];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/install.js
CHANGED
|
@@ -3,7 +3,7 @@ import { runBulkInstallPipeline } from '../core/install/bulk-install-pipeline.js
|
|
|
3
3
|
import { runInstallPipeline, determineResolutionMode } from '../core/install/install-pipeline.js';
|
|
4
4
|
import { withErrorHandling } from '../utils/errors.js';
|
|
5
5
|
import { normalizePlatforms } from '../utils/platform-mapper.js';
|
|
6
|
-
import {
|
|
6
|
+
import { parsePackageInstallSpec } from '../utils/package-name.js';
|
|
7
7
|
import { logger } from '../utils/logger.js';
|
|
8
8
|
import { normalizePathForProcessing } from '../utils/path-normalization.js';
|
|
9
9
|
function assertTargetDirOutsideMetadata(targetDir) {
|
|
@@ -21,18 +21,20 @@ export function validateResolutionFlags(options) {
|
|
|
21
21
|
throw new Error('--remote and --local cannot be used together. Choose one resolution mode.');
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
|
-
async function installCommand(packageName,
|
|
24
|
+
async function installCommand(packageName, options) {
|
|
25
|
+
const targetDir = '.';
|
|
25
26
|
assertTargetDirOutsideMetadata(targetDir);
|
|
26
27
|
options.resolutionMode = determineResolutionMode(options);
|
|
27
28
|
logger.debug('Install resolution mode selected', { mode: options.resolutionMode });
|
|
28
29
|
if (!packageName) {
|
|
29
|
-
return await runBulkInstallPipeline(
|
|
30
|
+
return await runBulkInstallPipeline(options);
|
|
30
31
|
}
|
|
31
|
-
const { name, version } =
|
|
32
|
+
const { name, version, registryPath } = parsePackageInstallSpec(packageName);
|
|
32
33
|
return await runInstallPipeline({
|
|
33
34
|
...options,
|
|
34
35
|
packageName: name,
|
|
35
36
|
version,
|
|
37
|
+
registryPath,
|
|
36
38
|
targetDir
|
|
37
39
|
});
|
|
38
40
|
}
|
|
@@ -42,7 +44,6 @@ export function setupInstallCommand(program) {
|
|
|
42
44
|
.alias('i')
|
|
43
45
|
.description('Install packages from the local (and optional remote) registry into this workspace. Works with WIP copies from `opkg save` and stable releases from `opkg pack`.')
|
|
44
46
|
.argument('[package-name]', 'name of the package to install (optional - installs all from package.yml if not specified). Supports package@version syntax.')
|
|
45
|
-
.argument('[target-dir]', 'target directory relative to the workspace install root (defaults to ./ai)', '.')
|
|
46
47
|
.option('--dry-run', 'preview changes without applying them')
|
|
47
48
|
.option('--force', 'overwrite existing files')
|
|
48
49
|
.option('--conflicts <strategy>', 'conflict handling strategy: keep-both, overwrite, skip, or ask')
|
|
@@ -53,7 +54,7 @@ export function setupInstallCommand(program) {
|
|
|
53
54
|
.option('--stable', 'prefer the latest stable version when resolving; ignore newer prerelease/WIP versions if a satisfying stable exists')
|
|
54
55
|
.option('--profile <profile>', 'profile to use for authentication')
|
|
55
56
|
.option('--api-key <key>', 'API key for authentication (overrides profile)')
|
|
56
|
-
.action(withErrorHandling(async (packageName,
|
|
57
|
+
.action(withErrorHandling(async (packageName, options) => {
|
|
57
58
|
options.platforms = normalizePlatforms(options.platforms);
|
|
58
59
|
const commandOptions = options;
|
|
59
60
|
const rawConflictStrategy = commandOptions.conflicts ?? options.conflictStrategy;
|
|
@@ -67,7 +68,7 @@ export function setupInstallCommand(program) {
|
|
|
67
68
|
}
|
|
68
69
|
validateResolutionFlags(options);
|
|
69
70
|
options.resolutionMode = determineResolutionMode(options);
|
|
70
|
-
const result = await installCommand(packageName,
|
|
71
|
+
const result = await installCommand(packageName, options);
|
|
71
72
|
if (!result.success) {
|
|
72
73
|
if (result.error === 'Package not found') {
|
|
73
74
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAC;AAClF,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAClG,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAC;AAClF,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAClG,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAE5E,SAAS,8BAA8B,CAAC,SAAiB;IACvD,MAAM,UAAU,GAAG,0BAA0B,CAAC,SAAS,IAAI,GAAG,CAAC,CAAC;IAChE,IAAI,CAAC,UAAU,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;QACtC,OAAO,CAAC,uBAAuB;IACjC,CAAC;IAED,IACE,UAAU,KAAK,YAAY,CAAC,WAAW;QACvC,UAAU,CAAC,UAAU,CAAC,GAAG,YAAY,CAAC,WAAW,GAAG,CAAC,EACrD,CAAC;QACD,MAAM,IAAI,KAAK,CACb,wBAAwB,SAAS,yBAAyB,YAAY,CAAC,WAAW,gCAAgC,aAAa,CAAC,cAAc,8CAA8C,CAC7L,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,OAA+D;IACrG,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAC;IAC/F,CAAC;AACH,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,WAA+B,EAC/B,OAAuB;IAEvB,MAAM,SAAS,GAAG,GAAG,CAAC;IACtB,8BAA8B,CAAC,SAAS,CAAC,CAAC;IAC1C,OAAO,CAAC,cAAc,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAC1D,MAAM,CAAC,KAAK,CAAC,kCAAkC,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAEnF,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,MAAM,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,uBAAuB,CAAC,WAAW,CAAC,CAAC;IAC7E,OAAO,MAAM,kBAAkB,CAAC;QAC9B,GAAG,OAAO;QACV,WAAW,EAAE,IAAI;QACjB,OAAO;QACP,YAAY;QACZ,SAAS;KACV,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,KAAK,CAAC,GAAG,CAAC;SACV,WAAW,CACV,kKAAkK,CACnK;SACA,QAAQ,CAAC,gBAAgB,EAAE,8HAA8H,CAAC;SAC1J,MAAM,CAAC,WAAW,EAAE,uCAAuC,CAAC;SAC5D,MAAM,CAAC,SAAS,EAAE,0BAA0B,CAAC;SAC7C,MAAM,CAAC,wBAAwB,EAAE,gEAAgE,CAAC;SAClG,MAAM,CAAC,OAAO,EAAE,iDAAiD,CAAC;SAClE,MAAM,CAAC,4BAA4B,EAAE,+DAA+D,CAAC;SACrG,MAAM,CAAC,UAAU,EAAE,gEAAgE,CAAC;SACpF,MAAM,CAAC,SAAS,EAAE,4FAA4F,CAAC;SAC/G,MAAM,CAAC,UAAU,EAAE,qHAAqH,CAAC;SACzI,MAAM,CAAC,qBAAqB,EAAE,mCAAmC,CAAC;SAClE,MAAM,CAAC,iBAAiB,EAAE,gDAAgD,CAAC;SAC3E,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,WAA+B,EAAE,OAAuB,EAAE,EAAE;QAC3F,OAAO,CAAC,SAAS,GAAG,kBAAkB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAE1D,MAAM,cAAc,GAAG,OAAkD,CAAC;QAC1E,MAAM,mBAAmB,GAAG,cAAc,CAAC,SAAS,IAAI,OAAO,CAAC,gBAAgB,CAAC;QACjF,IAAI,mBAAmB,EAAE,CAAC;YACxB,MAAM,kBAAkB,GAAI,mBAA8B,CAAC,WAAW,EAAE,CAAC;YACzE,MAAM,iBAAiB,GAAyC,CAAC,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;YAC1G,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,kBAAwD,CAAC,EAAE,CAAC;gBAC1F,MAAM,IAAI,KAAK,CAAC,8BAA8B,mBAAmB,iDAAiD,CAAC,CAAC;YACtH,CAAC;YACD,OAAO,CAAC,gBAAgB,GAAG,kBAAwD,CAAC;QACtF,CAAC;QAED,uBAAuB,CAAC,OAAO,CAAC,CAAC;QACjC,OAAO,CAAC,cAAc,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;QAE1D,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAC1D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,IAAI,MAAM,CAAC,KAAK,KAAK,mBAAmB,EAAE,CAAC;gBACzC,OAAO;YACT,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,+BAA+B,CAAC,CAAC;QACnE,CAAC;IACH,CAAC,CAAC,CAAC,CAAC;AACR,CAAC"}
|
package/dist/commands/list.js
CHANGED
|
@@ -4,6 +4,7 @@ import { logger } from '../utils/logger.js';
|
|
|
4
4
|
import { withErrorHandling } from '../utils/errors.js';
|
|
5
5
|
import { displayPackageTable } from '../utils/formatters.js';
|
|
6
6
|
import { arePackageNamesEquivalent } from '../utils/package-name.js';
|
|
7
|
+
import { isUnversionedVersion } from '../utils/package-versioning.js';
|
|
7
8
|
/**
|
|
8
9
|
* List packages command implementation
|
|
9
10
|
*/
|
|
@@ -17,12 +18,17 @@ async function listPackagesCommand(options) {
|
|
|
17
18
|
// When package name is specified, show all versions automatically
|
|
18
19
|
const showAllVersions = options.packageName ? true : options.all;
|
|
19
20
|
const entries = await registryManager.listPackages(filter, showAllVersions);
|
|
21
|
+
const formatVersionDisplay = (version) => (isUnversionedVersion(version) ? 'Unversioned' : (version ?? 'Unversioned'));
|
|
20
22
|
// If a specific package name was provided, filter for exact matches only
|
|
21
23
|
let filteredEntries = entries;
|
|
22
24
|
if (options.packageName) {
|
|
23
25
|
const target = options.packageName;
|
|
24
26
|
filteredEntries = entries.filter(entry => arePackageNamesEquivalent(entry.name, target));
|
|
25
27
|
}
|
|
28
|
+
const displayEntries = filteredEntries.map(entry => ({
|
|
29
|
+
...entry,
|
|
30
|
+
version: formatVersionDisplay(entry.version)
|
|
31
|
+
}));
|
|
26
32
|
if (filteredEntries.length === 0) {
|
|
27
33
|
if (options.packageName) {
|
|
28
34
|
console.log(`Package not found: ${options.packageName}`);
|
|
@@ -37,11 +43,11 @@ async function listPackagesCommand(options) {
|
|
|
37
43
|
}
|
|
38
44
|
// Display results
|
|
39
45
|
if (options.format === 'json') {
|
|
40
|
-
console.log(JSON.stringify(
|
|
46
|
+
console.log(JSON.stringify(displayEntries, null, 2));
|
|
41
47
|
}
|
|
42
48
|
else {
|
|
43
49
|
// Table format using shared formatter
|
|
44
|
-
const tableEntries =
|
|
50
|
+
const tableEntries = displayEntries.map(entry => ({
|
|
45
51
|
name: entry.name,
|
|
46
52
|
version: entry.version,
|
|
47
53
|
description: entry.description
|
|
@@ -57,7 +63,7 @@ async function listPackagesCommand(options) {
|
|
|
57
63
|
}
|
|
58
64
|
return {
|
|
59
65
|
success: true,
|
|
60
|
-
data:
|
|
66
|
+
data: displayEntries
|
|
61
67
|
};
|
|
62
68
|
}
|
|
63
69
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAqB,MAAM,wBAAwB,CAAC;AAChF,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAqB,MAAM,wBAAwB,CAAC;AAChF,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAEtE;;GAEG;AACH,KAAK,UAAU,mBAAmB,CAAC,OAAoB;IACrD,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IAEtC,oCAAoC;IACpC,MAAM,yBAAyB,EAAE,CAAC;IAElC,IAAI,CAAC;QACH,wEAAwE;QACxE,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;QACrD,kEAAkE;QAClE,MAAM,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;QACjE,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,YAAY,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QAC5E,MAAM,oBAAoB,GAAG,CAAC,OAAgB,EAAE,EAAE,CAAC,CACjD,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,aAAa,CAAC,CAC3E,CAAC;QAEF,yEAAyE;QACzE,IAAI,eAAe,GAAG,OAAO,CAAC;QAC9B,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACxB,MAAM,MAAM,GAAE,OAAO,CAAC,WAAW,CAAC;YAClC,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,yBAAyB,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QAC3F,CAAC;QACD,MAAM,cAAc,GAAG,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACnD,GAAG,KAAK;YACR,OAAO,EAAE,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC;SAC7C,CAAC,CAAC,CAAC;QAEJ,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,sBAAsB,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;YAC3D,CAAC;iBAAM,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBAC1B,OAAO,CAAC,GAAG,CAAC,sCAAsC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YACtE,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,kEAAkE,CAAC,CAAC;YAClF,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QACrC,CAAC;QAED,kBAAkB;QAClB,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YACN,sCAAsC;YACtC,MAAM,YAAY,GAAwB,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACrE,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,WAAW,EAAE,KAAK,CAAC,WAAW;aAC/B,CAAC,CAAC,CAAC;YAEJ,IAAI,KAAa,CAAC;YAClB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;gBACxB,KAAK,GAAG,YAAY,OAAO,CAAC,WAAW,mBAAmB,CAAC;YAC7D,CAAC;iBAAM,CAAC;gBACN,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,mCAAmC,CAAC;YAC/F,CAAC;YAED,mBAAmB,CAAC,YAAY,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC;QAC5D,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,cAAc;SACrB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QACnD,MAAM,IAAI,KAAK,CAAC,4BAA4B,KAAK,EAAE,CAAC,CAAC;IACvD,CAAC;AACH,CAAC;AAGD;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAC/C,OAAO;SACJ,OAAO,CAAC,qBAAqB,CAAC;SAC9B,KAAK,CAAC,IAAI,CAAC;SACX,WAAW,CAAC,+EAA+E,CAAC;SAC5F,MAAM,CAAC,mBAAmB,EAAE,4BAA4B,EAAE,OAAO,CAAC;SAClE,MAAM,CAAC,oBAAoB,EAAE,iCAAiC,CAAC;SAC/D,MAAM,CAAC,OAAO,EAAE,+CAA+C,CAAC;SAChE,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,WAA+B,EAAE,OAAoB,EAAE,EAAE;QACxF,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC;QAClC,MAAM,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC,CAAC;AACR,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { withErrorHandling } from '../utils/errors.js';
|
|
2
|
+
import { authManager } from '../core/auth.js';
|
|
3
|
+
import { startDeviceAuthorization, pollForDeviceToken, persistTokens, openBrowser, } from '../core/device-auth.js';
|
|
4
|
+
import { profileManager } from '../core/profiles.js';
|
|
5
|
+
import { logger } from '../utils/logger.js';
|
|
6
|
+
import { getCurrentUsername } from '../core/api-keys.js';
|
|
7
|
+
export function setupLoginCommand(program) {
|
|
8
|
+
program
|
|
9
|
+
.command('login')
|
|
10
|
+
.description('Authenticate with OpenPackage using the device authorization flow')
|
|
11
|
+
.option('--profile <profile>', 'profile to use for authentication')
|
|
12
|
+
.action(withErrorHandling(async (options) => {
|
|
13
|
+
const profileName = authManager.getCurrentProfile({
|
|
14
|
+
profile: options.profile,
|
|
15
|
+
});
|
|
16
|
+
console.log(`Using profile: ${profileName}`);
|
|
17
|
+
const authorization = await startDeviceAuthorization();
|
|
18
|
+
console.log('A browser will open for you to confirm sign-in.');
|
|
19
|
+
console.log(`User code: ${authorization.userCode}`);
|
|
20
|
+
console.log(`Verification URL: ${authorization.verificationUri}`);
|
|
21
|
+
console.log('');
|
|
22
|
+
console.log('If the browser does not open, visit the URL and enter the code above.');
|
|
23
|
+
openBrowser(authorization.verificationUriComplete);
|
|
24
|
+
try {
|
|
25
|
+
const tokens = await pollForDeviceToken({
|
|
26
|
+
deviceCode: authorization.deviceCode,
|
|
27
|
+
intervalSeconds: authorization.interval,
|
|
28
|
+
expiresInSeconds: authorization.expiresIn,
|
|
29
|
+
});
|
|
30
|
+
await persistTokens(profileName, tokens);
|
|
31
|
+
const username = tokens.username ?? (await resolveUsername(profileName));
|
|
32
|
+
if (username) {
|
|
33
|
+
await profileManager.setProfileDefaultScope(profileName, `@${username}`);
|
|
34
|
+
console.log(`✓ Default scope set to @${username} for profile "${profileName}".`);
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
logger.debug('Could not derive username from API key; default scope not set');
|
|
38
|
+
}
|
|
39
|
+
console.log('');
|
|
40
|
+
console.log('✓ Login successful.');
|
|
41
|
+
console.log(`✓ API key stored for profile "${profileName}".`);
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
logger.debug('Device login failed', { error });
|
|
45
|
+
throw error;
|
|
46
|
+
}
|
|
47
|
+
}));
|
|
48
|
+
}
|
|
49
|
+
async function resolveUsername(profileName) {
|
|
50
|
+
try {
|
|
51
|
+
return await getCurrentUsername({ profile: profileName });
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
logger.debug('Unable to resolve username from API key', { error });
|
|
55
|
+
return undefined;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=login.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { withErrorHandling } from '../utils/errors.js';
|
|
2
|
+
import { authManager } from '../core/auth.js';
|
|
3
|
+
import { profileManager } from '../core/profiles.js';
|
|
4
|
+
import { logger } from '../utils/logger.js';
|
|
5
|
+
export function setupLogoutCommand(program) {
|
|
6
|
+
program
|
|
7
|
+
.command('logout')
|
|
8
|
+
.description('Remove stored API key for a profile')
|
|
9
|
+
.option('--profile <profile>', 'profile to log out')
|
|
10
|
+
.action(withErrorHandling(async (options) => {
|
|
11
|
+
const profileName = authManager.getCurrentProfile({
|
|
12
|
+
profile: options.profile,
|
|
13
|
+
});
|
|
14
|
+
if (profileName === '<api-key>') {
|
|
15
|
+
console.log('No stored credentials when using --api-key directly.');
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
try {
|
|
19
|
+
await profileManager.clearProfileCredentials(profileName);
|
|
20
|
+
console.log(`✓ Credentials removed for profile "${profileName}".`);
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
logger.debug('Failed to clear credentials during logout', { error });
|
|
24
|
+
throw error;
|
|
25
|
+
}
|
|
26
|
+
}));
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=logout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logout.js","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAM3C,MAAM,UAAU,kBAAkB,CAAC,OAAgB;IAClD,OAAO;SACL,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,qCAAqC,CAAC;SAClD,MAAM,CAAC,qBAAqB,EAAE,oBAAoB,CAAC;SACnD,MAAM,CACN,iBAAiB,CAAC,KAAK,EAAE,OAAsB,EAAE,EAAE;QAClD,MAAM,WAAW,GAAG,WAAW,CAAC,iBAAiB,CAAC;YACjD,OAAO,EAAE,OAAO,CAAC,OAAO;SACxB,CAAC,CAAA;QAEF,IAAI,WAAW,KAAK,WAAW,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAA;YACnE,OAAM;QACP,CAAC;QAED,IAAI,CAAC;YACJ,MAAM,cAAc,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAA;YACzD,OAAO,CAAC,GAAG,CAAC,sCAAsC,WAAW,IAAI,CAAC,CAAA;QACnE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,CAAC,KAAK,CAAC,2CAA2C,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;YACpE,MAAM,KAAK,CAAA;QACZ,CAAC;IACF,CAAC,CAAC,CACF,CAAA;AACH,CAAC"}
|