@unlimitechcloud/devlink 1.0.2
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/AGENTS.md +880 -0
- package/LICENSE +21 -0
- package/README.md +335 -0
- package/dist/__tests__/e2e.spec.d.ts +8 -0
- package/dist/__tests__/e2e.spec.d.ts.map +1 -0
- package/dist/__tests__/e2e.spec.js +253 -0
- package/dist/__tests__/e2e.spec.js.map +1 -0
- package/dist/__tests__/integration.spec.d.ts +8 -0
- package/dist/__tests__/integration.spec.d.ts.map +1 -0
- package/dist/__tests__/integration.spec.js +274 -0
- package/dist/__tests__/integration.spec.js.map +1 -0
- package/dist/cli.d.ts +6 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +610 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/consumers.d.ts +37 -0
- package/dist/commands/consumers.d.ts.map +1 -0
- package/dist/commands/consumers.js +107 -0
- package/dist/commands/consumers.js.map +1 -0
- package/dist/commands/docs.d.ts +59 -0
- package/dist/commands/docs.d.ts.map +1 -0
- package/dist/commands/docs.js +262 -0
- package/dist/commands/docs.js.map +1 -0
- package/dist/commands/docs.spec.d.ts +5 -0
- package/dist/commands/docs.spec.d.ts.map +1 -0
- package/dist/commands/docs.spec.js +213 -0
- package/dist/commands/docs.spec.js.map +1 -0
- package/dist/commands/index.d.ts +13 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +13 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/install.d.ts +31 -0
- package/dist/commands/install.d.ts.map +1 -0
- package/dist/commands/install.js +234 -0
- package/dist/commands/install.js.map +1 -0
- package/dist/commands/list.d.ts +22 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +45 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/list.spec.d.ts +5 -0
- package/dist/commands/list.spec.d.ts.map +1 -0
- package/dist/commands/list.spec.js +95 -0
- package/dist/commands/list.spec.js.map +1 -0
- package/dist/commands/prune.d.ts +27 -0
- package/dist/commands/prune.d.ts.map +1 -0
- package/dist/commands/prune.js +74 -0
- package/dist/commands/prune.js.map +1 -0
- package/dist/commands/publish.d.ts +16 -0
- package/dist/commands/publish.d.ts.map +1 -0
- package/dist/commands/publish.js +225 -0
- package/dist/commands/publish.js.map +1 -0
- package/dist/commands/publish.spec.d.ts +5 -0
- package/dist/commands/publish.spec.d.ts.map +1 -0
- package/dist/commands/publish.spec.js +98 -0
- package/dist/commands/publish.spec.js.map +1 -0
- package/dist/commands/push.d.ts +16 -0
- package/dist/commands/push.d.ts.map +1 -0
- package/dist/commands/push.js +164 -0
- package/dist/commands/push.js.map +1 -0
- package/dist/commands/remove.d.ts +24 -0
- package/dist/commands/remove.d.ts.map +1 -0
- package/dist/commands/remove.js +80 -0
- package/dist/commands/remove.js.map +1 -0
- package/dist/commands/remove.spec.d.ts +5 -0
- package/dist/commands/remove.spec.d.ts.map +1 -0
- package/dist/commands/remove.spec.js +87 -0
- package/dist/commands/remove.spec.js.map +1 -0
- package/dist/commands/resolve.d.ts +20 -0
- package/dist/commands/resolve.d.ts.map +1 -0
- package/dist/commands/resolve.js +52 -0
- package/dist/commands/resolve.js.map +1 -0
- package/dist/commands/resolve.spec.d.ts +5 -0
- package/dist/commands/resolve.spec.d.ts.map +1 -0
- package/dist/commands/resolve.spec.js +87 -0
- package/dist/commands/resolve.spec.js.map +1 -0
- package/dist/commands/verify.d.ts +32 -0
- package/dist/commands/verify.d.ts.map +1 -0
- package/dist/commands/verify.js +127 -0
- package/dist/commands/verify.js.map +1 -0
- package/dist/config.d.ts +22 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +70 -0
- package/dist/config.js.map +1 -0
- package/dist/constants.d.ts +65 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +116 -0
- package/dist/constants.js.map +1 -0
- package/dist/constants.spec.d.ts +5 -0
- package/dist/constants.spec.d.ts.map +1 -0
- package/dist/constants.spec.js +72 -0
- package/dist/constants.spec.js.map +1 -0
- package/dist/core/index.d.ts +9 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +9 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/installations.d.ts +79 -0
- package/dist/core/installations.d.ts.map +1 -0
- package/dist/core/installations.js +207 -0
- package/dist/core/installations.js.map +1 -0
- package/dist/core/installations.spec.d.ts +5 -0
- package/dist/core/installations.spec.d.ts.map +1 -0
- package/dist/core/installations.spec.js +261 -0
- package/dist/core/installations.spec.js.map +1 -0
- package/dist/core/lock.d.ts +37 -0
- package/dist/core/lock.d.ts.map +1 -0
- package/dist/core/lock.js +198 -0
- package/dist/core/lock.js.map +1 -0
- package/dist/core/lock.spec.d.ts +5 -0
- package/dist/core/lock.spec.d.ts.map +1 -0
- package/dist/core/lock.spec.js +161 -0
- package/dist/core/lock.spec.js.map +1 -0
- package/dist/core/registry.d.ts +80 -0
- package/dist/core/registry.d.ts.map +1 -0
- package/dist/core/registry.js +231 -0
- package/dist/core/registry.js.map +1 -0
- package/dist/core/registry.spec.d.ts +5 -0
- package/dist/core/registry.spec.d.ts.map +1 -0
- package/dist/core/registry.spec.js +281 -0
- package/dist/core/registry.spec.js.map +1 -0
- package/dist/core/resolver.d.ts +55 -0
- package/dist/core/resolver.d.ts.map +1 -0
- package/dist/core/resolver.js +127 -0
- package/dist/core/resolver.js.map +1 -0
- package/dist/core/resolver.spec.d.ts +5 -0
- package/dist/core/resolver.spec.d.ts.map +1 -0
- package/dist/core/resolver.spec.js +202 -0
- package/dist/core/resolver.spec.js.map +1 -0
- package/dist/core/store.d.ts +65 -0
- package/dist/core/store.d.ts.map +1 -0
- package/dist/core/store.js +245 -0
- package/dist/core/store.js.map +1 -0
- package/dist/core/store.spec.d.ts +5 -0
- package/dist/core/store.spec.d.ts.map +1 -0
- package/dist/core/store.spec.js +195 -0
- package/dist/core/store.spec.js.map +1 -0
- package/dist/formatters/flat.d.ts +41 -0
- package/dist/formatters/flat.d.ts.map +1 -0
- package/dist/formatters/flat.js +131 -0
- package/dist/formatters/flat.js.map +1 -0
- package/dist/formatters/flat.spec.d.ts +5 -0
- package/dist/formatters/flat.spec.d.ts.map +1 -0
- package/dist/formatters/flat.spec.js +130 -0
- package/dist/formatters/flat.spec.js.map +1 -0
- package/dist/formatters/index.d.ts +6 -0
- package/dist/formatters/index.d.ts.map +1 -0
- package/dist/formatters/index.js +6 -0
- package/dist/formatters/index.js.map +1 -0
- package/dist/formatters/tree.d.ts +29 -0
- package/dist/formatters/tree.d.ts.map +1 -0
- package/dist/formatters/tree.js +256 -0
- package/dist/formatters/tree.js.map +1 -0
- package/dist/formatters/tree.spec.d.ts +5 -0
- package/dist/formatters/tree.spec.d.ts.map +1 -0
- package/dist/formatters/tree.spec.js +127 -0
- package/dist/formatters/tree.spec.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/installer.d.ts +13 -0
- package/dist/installer.d.ts.map +1 -0
- package/dist/installer.js +171 -0
- package/dist/installer.js.map +1 -0
- package/dist/store.d.ts +78 -0
- package/dist/store.d.ts.map +1 -0
- package/dist/store.js +344 -0
- package/dist/store.js.map +1 -0
- package/dist/types.d.ts +235 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/docs/README.md +68 -0
- package/docs/inspection/consumers.md +178 -0
- package/docs/inspection/list.md +182 -0
- package/docs/inspection/resolve.md +172 -0
- package/docs/installation/configuration.md +238 -0
- package/docs/installation/install.md +184 -0
- package/docs/maintenance/prune.md +159 -0
- package/docs/maintenance/remove.md +174 -0
- package/docs/maintenance/verify.md +174 -0
- package/docs/publishing/publish.md +146 -0
- package/docs/publishing/push.md +146 -0
- package/docs/store/locking.md +118 -0
- package/docs/store/namespaces.md +141 -0
- package/docs/store/structure.md +163 -0
- package/package.json +58 -0
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types - Definiciones de tipos para DevLink
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Registry principal del store
|
|
6
|
+
*/
|
|
7
|
+
export interface Registry {
|
|
8
|
+
version: string;
|
|
9
|
+
namespaces: Record<string, NamespaceEntry>;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Entrada de un namespace en el registry
|
|
13
|
+
*/
|
|
14
|
+
export interface NamespaceEntry {
|
|
15
|
+
created: string;
|
|
16
|
+
packages: Record<string, PackageEntry>;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Entrada de un paquete en el registry
|
|
20
|
+
*/
|
|
21
|
+
export interface PackageEntry {
|
|
22
|
+
versions: Record<string, VersionEntry>;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Entrada de una versión en el registry
|
|
26
|
+
*/
|
|
27
|
+
export interface VersionEntry {
|
|
28
|
+
signature: string;
|
|
29
|
+
published: string;
|
|
30
|
+
files: number;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Tracking de instalaciones
|
|
34
|
+
*/
|
|
35
|
+
export interface Installations {
|
|
36
|
+
version: string;
|
|
37
|
+
projects: Record<string, ProjectEntry>;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Entrada de un proyecto en installations
|
|
41
|
+
*/
|
|
42
|
+
export interface ProjectEntry {
|
|
43
|
+
registered: string;
|
|
44
|
+
packages: Record<string, InstalledPackage>;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Información de un paquete instalado en un proyecto
|
|
48
|
+
*/
|
|
49
|
+
export interface InstalledPackage {
|
|
50
|
+
version: string;
|
|
51
|
+
namespace: string;
|
|
52
|
+
signature: string;
|
|
53
|
+
installedAt: string;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Información del lock file
|
|
57
|
+
*/
|
|
58
|
+
export interface LockInfo {
|
|
59
|
+
pid: number;
|
|
60
|
+
acquired: string;
|
|
61
|
+
command: string;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Opciones para adquirir lock
|
|
65
|
+
*/
|
|
66
|
+
export interface LockOptions {
|
|
67
|
+
timeout: number;
|
|
68
|
+
retryInterval: number;
|
|
69
|
+
stale: number;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Handle de un lock adquirido
|
|
73
|
+
*/
|
|
74
|
+
export interface LockHandle {
|
|
75
|
+
fd: number;
|
|
76
|
+
release: () => Promise<void>;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Resultado de resolución de un paquete
|
|
80
|
+
*/
|
|
81
|
+
export interface ResolutionResult {
|
|
82
|
+
package: string;
|
|
83
|
+
version: string;
|
|
84
|
+
found: boolean;
|
|
85
|
+
namespace?: string;
|
|
86
|
+
path?: string;
|
|
87
|
+
signature?: string;
|
|
88
|
+
searchedNamespaces: string[];
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Contexto disponible para las factories
|
|
92
|
+
*/
|
|
93
|
+
export interface FactoryContext {
|
|
94
|
+
env: NodeJS.ProcessEnv;
|
|
95
|
+
args: string[];
|
|
96
|
+
cwd: string;
|
|
97
|
+
packages: Record<string, PackageVersions>;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Versiones por modo para un paquete
|
|
101
|
+
*/
|
|
102
|
+
export interface PackageVersions {
|
|
103
|
+
dev?: string;
|
|
104
|
+
prod?: string;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Información de un paquete resuelto para instalación
|
|
108
|
+
*/
|
|
109
|
+
export interface ResolvedPackage {
|
|
110
|
+
name: string;
|
|
111
|
+
version: string;
|
|
112
|
+
qname: string;
|
|
113
|
+
namespace?: string;
|
|
114
|
+
path?: string;
|
|
115
|
+
signature?: string;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Configuración de modo retornada por factory
|
|
119
|
+
*/
|
|
120
|
+
export interface ModeConfig {
|
|
121
|
+
manager: "store" | "npm";
|
|
122
|
+
namespaces?: string[];
|
|
123
|
+
args?: string[];
|
|
124
|
+
/** @deprecated Use namespaces instead */
|
|
125
|
+
storeFolder?: string;
|
|
126
|
+
beforeAll?: () => Promise<void> | void;
|
|
127
|
+
afterAll?: () => Promise<void> | void;
|
|
128
|
+
beforeEach?: (pkg: ResolvedPackage) => Promise<void> | void;
|
|
129
|
+
afterEach?: (pkg: ResolvedPackage) => Promise<void> | void;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Factory de modo
|
|
133
|
+
*/
|
|
134
|
+
export type ModeFactory = (ctx: FactoryContext) => ModeConfig;
|
|
135
|
+
/**
|
|
136
|
+
* Configuración completa del archivo devlink.config.mjs
|
|
137
|
+
*/
|
|
138
|
+
export interface DevLinkConfig {
|
|
139
|
+
packages: Record<string, PackageVersions>;
|
|
140
|
+
dev: ModeFactory;
|
|
141
|
+
prod: ModeFactory;
|
|
142
|
+
detectMode?: (ctx: FactoryContext) => "dev" | "prod";
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Manifest de un paquete (package.json)
|
|
146
|
+
*/
|
|
147
|
+
export interface PackageManifest {
|
|
148
|
+
name: string;
|
|
149
|
+
version: string;
|
|
150
|
+
private?: boolean;
|
|
151
|
+
files?: string[];
|
|
152
|
+
main?: string;
|
|
153
|
+
bin?: string | Record<string, string>;
|
|
154
|
+
dependencies?: Record<string, string>;
|
|
155
|
+
devDependencies?: Record<string, string>;
|
|
156
|
+
peerDependencies?: Record<string, string>;
|
|
157
|
+
scripts?: Record<string, string>;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Información de un paquete publicado
|
|
161
|
+
*/
|
|
162
|
+
export interface StoredPackage {
|
|
163
|
+
name: string;
|
|
164
|
+
version: string;
|
|
165
|
+
namespace: string;
|
|
166
|
+
signature: string;
|
|
167
|
+
path: string;
|
|
168
|
+
files: number;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Resultado de publicación
|
|
172
|
+
*/
|
|
173
|
+
export interface PublishResult {
|
|
174
|
+
name: string;
|
|
175
|
+
version: string;
|
|
176
|
+
namespace: string;
|
|
177
|
+
signature: string;
|
|
178
|
+
path: string;
|
|
179
|
+
files: number;
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Resultado de push
|
|
183
|
+
*/
|
|
184
|
+
export interface PushResult extends PublishResult {
|
|
185
|
+
updatedProjects: string[];
|
|
186
|
+
skippedProjects: string[];
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Entrada en el lockfile del proyecto
|
|
190
|
+
*/
|
|
191
|
+
export interface LockfileEntry {
|
|
192
|
+
version: string;
|
|
193
|
+
signature: string;
|
|
194
|
+
namespace?: string;
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Lockfile de un proyecto cliente
|
|
198
|
+
*/
|
|
199
|
+
export interface Lockfile {
|
|
200
|
+
packages: Record<string, LockfileEntry>;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Argumentos parseados del CLI
|
|
204
|
+
*/
|
|
205
|
+
export interface ParsedArgs {
|
|
206
|
+
command: string;
|
|
207
|
+
positional: string[];
|
|
208
|
+
flags: {
|
|
209
|
+
namespace?: string;
|
|
210
|
+
namespaces?: string[];
|
|
211
|
+
packages?: string[];
|
|
212
|
+
flat?: boolean;
|
|
213
|
+
fix?: boolean;
|
|
214
|
+
dryRun?: boolean;
|
|
215
|
+
dev?: boolean;
|
|
216
|
+
prod?: boolean;
|
|
217
|
+
prune?: boolean;
|
|
218
|
+
all?: boolean;
|
|
219
|
+
help?: boolean;
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Consumer info para comando consumers
|
|
224
|
+
*/
|
|
225
|
+
export interface ConsumerInfo {
|
|
226
|
+
projectPath: string;
|
|
227
|
+
registered: string;
|
|
228
|
+
packages: {
|
|
229
|
+
name: string;
|
|
230
|
+
version: string;
|
|
231
|
+
namespace: string;
|
|
232
|
+
signature: string;
|
|
233
|
+
}[];
|
|
234
|
+
}
|
|
235
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
package/docs/README.md
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# DevLink Documentation
|
|
2
|
+
|
|
3
|
+
Complete documentation for DevLink v2 - Local package development tool with namespaces.
|
|
4
|
+
|
|
5
|
+
## Documentation Index
|
|
6
|
+
|
|
7
|
+
### Getting Started
|
|
8
|
+
- [Quick Start](../README.md) - Installation and basic usage
|
|
9
|
+
- [Configuration](installation/configuration.md) - Project configuration with devlink.config.mjs
|
|
10
|
+
|
|
11
|
+
### Store & Repository
|
|
12
|
+
- [Store Structure](store/structure.md) - How the DevLink store is organized
|
|
13
|
+
- [Namespaces](store/namespaces.md) - Isolated package contexts
|
|
14
|
+
- [File Locking](store/locking.md) - Concurrency and serialization
|
|
15
|
+
|
|
16
|
+
### Publishing Packages
|
|
17
|
+
- [Publish Command](publishing/publish.md) - Publishing packages to the store
|
|
18
|
+
- [Push Command](publishing/push.md) - Publishing and updating consumers
|
|
19
|
+
|
|
20
|
+
### Installing Packages
|
|
21
|
+
- [Install Command](installation/install.md) - Installing packages from the store
|
|
22
|
+
- [Configuration](installation/configuration.md) - devlink.config.mjs reference
|
|
23
|
+
|
|
24
|
+
### Inspecting the Store
|
|
25
|
+
- [List Command](inspection/list.md) - Listing packages in the store
|
|
26
|
+
- [Resolve Command](inspection/resolve.md) - Debugging package resolution
|
|
27
|
+
- [Consumers Command](inspection/consumers.md) - Tracking consumer projects
|
|
28
|
+
|
|
29
|
+
### Maintenance
|
|
30
|
+
- [Remove Command](maintenance/remove.md) - Removing packages and namespaces
|
|
31
|
+
- [Verify Command](maintenance/verify.md) - Verifying store integrity
|
|
32
|
+
- [Prune Command](maintenance/prune.md) - Cleaning up orphaned packages
|
|
33
|
+
|
|
34
|
+
### Technical Reference
|
|
35
|
+
- [Design Document](DESIGN-namespaces.md) - Technical design and architecture
|
|
36
|
+
- [Agent Guide](../AGENTS.md) - Comprehensive guide for AI agents
|
|
37
|
+
|
|
38
|
+
## Quick Reference
|
|
39
|
+
|
|
40
|
+
### Global Options
|
|
41
|
+
|
|
42
|
+
All commands support these options:
|
|
43
|
+
|
|
44
|
+
| Option | Description |
|
|
45
|
+
|--------|-------------|
|
|
46
|
+
| `--repo <path>` | Use custom repo path instead of `~/.devlink` |
|
|
47
|
+
| `-h, --help` | Show help |
|
|
48
|
+
| `-v, --version` | Show version |
|
|
49
|
+
|
|
50
|
+
### Environment Variables
|
|
51
|
+
|
|
52
|
+
| Variable | Description |
|
|
53
|
+
|----------|-------------|
|
|
54
|
+
| `DEVLINK_REPO` | Custom repo path (alternative to `--repo`) |
|
|
55
|
+
|
|
56
|
+
### Commands Overview
|
|
57
|
+
|
|
58
|
+
| Command | Description | Requires Lock |
|
|
59
|
+
|---------|-------------|---------------|
|
|
60
|
+
| `publish` | Publish package to store | ✓ |
|
|
61
|
+
| `push` | Publish and update consumers | ✓ |
|
|
62
|
+
| `install` | Install packages from store | ✓ |
|
|
63
|
+
| `list` | List packages in store | ✗ |
|
|
64
|
+
| `resolve` | Debug package resolution | ✗ |
|
|
65
|
+
| `consumers` | List consumer projects | ✗ |
|
|
66
|
+
| `remove` | Remove packages/namespaces | ✓ |
|
|
67
|
+
| `verify` | Verify store integrity | ✗/✓ |
|
|
68
|
+
| `prune` | Remove orphaned packages | ✓ |
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
# Consumers Command
|
|
2
|
+
|
|
3
|
+
Lists projects that have installed packages from the DevLink store.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
devlink consumers [options]
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Options
|
|
12
|
+
|
|
13
|
+
| Option | Description |
|
|
14
|
+
|--------|-------------|
|
|
15
|
+
| `-p, --package <name>` | Filter by package name |
|
|
16
|
+
| `-n, --namespace <name>` | Filter by namespace |
|
|
17
|
+
| `--prune` | Remove projects that no longer exist |
|
|
18
|
+
| `--flat` | Use flat output format |
|
|
19
|
+
| `--repo <path>` | Use custom repo path |
|
|
20
|
+
|
|
21
|
+
## Description
|
|
22
|
+
|
|
23
|
+
The `consumers` command shows which projects have installed packages from the store. This information is tracked in `installations.json` and is used by the `push` command to update consumers.
|
|
24
|
+
|
|
25
|
+
## Examples
|
|
26
|
+
|
|
27
|
+
### List All Consumers
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
devlink consumers
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Output:
|
|
34
|
+
```
|
|
35
|
+
📦 Consumer Projects
|
|
36
|
+
|
|
37
|
+
/home/user/project-a
|
|
38
|
+
├── @scope/core@1.0.0 (global)
|
|
39
|
+
├── @scope/utils@1.0.0 (global)
|
|
40
|
+
└── Registered: 2026-02-12T10:00:00Z
|
|
41
|
+
|
|
42
|
+
/home/user/project-b
|
|
43
|
+
├── @scope/core@1.0.0 (feature-v2)
|
|
44
|
+
└── Registered: 2026-02-12T11:00:00Z
|
|
45
|
+
|
|
46
|
+
Total: 2 projects, 3 installations
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### Filter by Package
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
devlink consumers -p @scope/core
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Shows only projects that have installed `@scope/core`.
|
|
56
|
+
|
|
57
|
+
### Filter by Namespace
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
devlink consumers -n feature-v2
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Shows only projects using packages from the `feature-v2` namespace.
|
|
64
|
+
|
|
65
|
+
### Flat Output
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
devlink consumers --flat
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Output:
|
|
72
|
+
```
|
|
73
|
+
/home/user/project-a @scope/core@1.0.0 global
|
|
74
|
+
/home/user/project-a @scope/utils@1.0.0 global
|
|
75
|
+
/home/user/project-b @scope/core@1.0.0 feature-v2
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### Prune Dead Projects
|
|
79
|
+
|
|
80
|
+
Remove projects that no longer exist on disk:
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
devlink consumers --prune
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Output:
|
|
87
|
+
```
|
|
88
|
+
🧹 Pruning dead projects...
|
|
89
|
+
|
|
90
|
+
Removed: /home/user/deleted-project
|
|
91
|
+
- @scope/core@1.0.0 (global)
|
|
92
|
+
|
|
93
|
+
Pruned 1 project(s)
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Consumer Tracking
|
|
97
|
+
|
|
98
|
+
Projects become consumers when they run `devlink install`. The installation is recorded with:
|
|
99
|
+
|
|
100
|
+
- Project path
|
|
101
|
+
- Installed packages
|
|
102
|
+
- Package versions
|
|
103
|
+
- Source namespaces
|
|
104
|
+
- Package signatures
|
|
105
|
+
- Installation timestamp
|
|
106
|
+
|
|
107
|
+
## Use Cases
|
|
108
|
+
|
|
109
|
+
### Before Publishing Breaking Changes
|
|
110
|
+
|
|
111
|
+
Check who would be affected:
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
devlink consumers -p @scope/core
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### Verify Push Targets
|
|
118
|
+
|
|
119
|
+
See which projects will be updated by `push`:
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
# Publish to feature-v2
|
|
123
|
+
devlink publish -n feature-v2
|
|
124
|
+
|
|
125
|
+
# Check who uses feature-v2
|
|
126
|
+
devlink consumers -n feature-v2
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### Clean Up Stale Data
|
|
130
|
+
|
|
131
|
+
Remove references to deleted projects:
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
devlink consumers --prune
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### Audit Package Usage
|
|
138
|
+
|
|
139
|
+
See all projects using a specific package:
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
devlink consumers -p @scope/core --flat | wc -l
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
## Data Location
|
|
146
|
+
|
|
147
|
+
Consumer data is stored in `~/.devlink/installations.json`:
|
|
148
|
+
|
|
149
|
+
```json
|
|
150
|
+
{
|
|
151
|
+
"version": "1.0.0",
|
|
152
|
+
"projects": {
|
|
153
|
+
"/home/user/project-a": {
|
|
154
|
+
"registered": "2026-02-12T10:00:00Z",
|
|
155
|
+
"packages": {
|
|
156
|
+
"@scope/core": {
|
|
157
|
+
"version": "1.0.0",
|
|
158
|
+
"namespace": "global",
|
|
159
|
+
"signature": "6761ca1f...",
|
|
160
|
+
"installedAt": "2026-02-12T10:05:00Z"
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
## Notes
|
|
169
|
+
|
|
170
|
+
- The `--prune` flag requires a lock (modifies `installations.json`)
|
|
171
|
+
- Projects are automatically registered during `devlink install`
|
|
172
|
+
- Projects are not automatically unregistered when deleted
|
|
173
|
+
|
|
174
|
+
## See Also
|
|
175
|
+
|
|
176
|
+
- [Push Command](../publishing/push.md) - How push uses consumer data
|
|
177
|
+
- [Install Command](../installation/install.md) - How projects become consumers
|
|
178
|
+
- [Store Structure](../store/structure.md) - Where consumer data is stored
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
# List Command
|
|
2
|
+
|
|
3
|
+
Lists packages in the DevLink store.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
devlink list [options]
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Options
|
|
12
|
+
|
|
13
|
+
| Option | Description |
|
|
14
|
+
|--------|-------------|
|
|
15
|
+
| `-n, --namespaces <list>` | Filter by namespaces (comma-separated) |
|
|
16
|
+
| `-p, --packages [list]` | Group by package, optionally filter |
|
|
17
|
+
| `--flat` | Use flat output format (default: tree) |
|
|
18
|
+
| `--repo <path>` | Use custom repo path |
|
|
19
|
+
|
|
20
|
+
## Output Formats
|
|
21
|
+
|
|
22
|
+
### Tree Format (Default)
|
|
23
|
+
|
|
24
|
+
Hierarchical view with visual tree structure:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
devlink list
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
📦 DevLink Store
|
|
32
|
+
|
|
33
|
+
global/
|
|
34
|
+
├── @scope/
|
|
35
|
+
│ ├── core/
|
|
36
|
+
│ │ ├── 1.0.0 (6761ca1f)
|
|
37
|
+
│ │ └── 2.0.0 (a1b2c3d4)
|
|
38
|
+
│ └── utils/
|
|
39
|
+
│ └── 1.0.0 (b2c3d4e5)
|
|
40
|
+
└── simple-pkg/
|
|
41
|
+
└── 1.0.0 (c3d4e5f6)
|
|
42
|
+
|
|
43
|
+
feature-v2/
|
|
44
|
+
└── @scope/
|
|
45
|
+
└── core/
|
|
46
|
+
└── 1.0.0 (different1)
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### Flat Format
|
|
50
|
+
|
|
51
|
+
One line per package, suitable for scripting:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
devlink list --flat
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
```
|
|
58
|
+
global @scope/core@1.0.0 6761ca1f
|
|
59
|
+
global @scope/core@2.0.0 a1b2c3d4
|
|
60
|
+
global @scope/utils@1.0.0 b2c3d4e5
|
|
61
|
+
global simple-pkg@1.0.0 c3d4e5f6
|
|
62
|
+
feature-v2 @scope/core@1.0.0 different1
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Grouping
|
|
66
|
+
|
|
67
|
+
### By Namespace (Default)
|
|
68
|
+
|
|
69
|
+
Packages grouped under their namespace:
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
devlink list
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### By Package
|
|
76
|
+
|
|
77
|
+
Packages grouped by name, showing which namespaces contain them:
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
devlink list -p
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
📦 DevLink Store (by package)
|
|
85
|
+
|
|
86
|
+
@scope/
|
|
87
|
+
├── core/
|
|
88
|
+
│ ├── global/
|
|
89
|
+
│ │ ├── 1.0.0 (6761ca1f)
|
|
90
|
+
│ │ └── 2.0.0 (a1b2c3d4)
|
|
91
|
+
│ └── feature-v2/
|
|
92
|
+
│ └── 1.0.0 (different1)
|
|
93
|
+
└── utils/
|
|
94
|
+
└── global/
|
|
95
|
+
└── 1.0.0 (b2c3d4e5)
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## Filtering
|
|
99
|
+
|
|
100
|
+
### Filter by Namespace
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
# Single namespace
|
|
104
|
+
devlink list -n global
|
|
105
|
+
|
|
106
|
+
# Multiple namespaces
|
|
107
|
+
devlink list -n global,feature-v2
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### Filter by Package
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
# Specific packages
|
|
114
|
+
devlink list -p @scope/core,@scope/utils
|
|
115
|
+
|
|
116
|
+
# By scope (all packages in scope)
|
|
117
|
+
devlink list -p @scope
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### Combined Filters
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
# Packages in specific namespace
|
|
124
|
+
devlink list -n global -p @scope/core
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## Examples
|
|
128
|
+
|
|
129
|
+
### List Everything
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
devlink list
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### List Only Global Namespace
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
devlink list -n global
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### List Packages by a Scope
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
devlink list -p @myorg
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### Flat Output for Scripting
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
# Count packages
|
|
151
|
+
devlink list --flat | wc -l
|
|
152
|
+
|
|
153
|
+
# Find specific package
|
|
154
|
+
devlink list --flat | grep "@scope/core"
|
|
155
|
+
|
|
156
|
+
# List all versions of a package
|
|
157
|
+
devlink list --flat | grep "@scope/core@"
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### Compare Namespaces
|
|
161
|
+
|
|
162
|
+
```bash
|
|
163
|
+
# See what's in feature branch vs global
|
|
164
|
+
devlink list -n feature-v2
|
|
165
|
+
devlink list -n global
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
## Empty Store
|
|
169
|
+
|
|
170
|
+
If the store is empty or has no packages:
|
|
171
|
+
|
|
172
|
+
```
|
|
173
|
+
📦 DevLink Store
|
|
174
|
+
|
|
175
|
+
└── global/
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
## See Also
|
|
179
|
+
|
|
180
|
+
- [Resolve Command](resolve.md) - Debug package resolution
|
|
181
|
+
- [Store Structure](../store/structure.md) - Understanding the store layout
|
|
182
|
+
- [Namespaces](../store/namespaces.md) - Understanding namespaces
|