@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
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Publish Command - Publicar paquete al store
|
|
3
|
+
*/
|
|
4
|
+
import type { PublishResult } from "../types.js";
|
|
5
|
+
/**
|
|
6
|
+
* Publish a package to the store
|
|
7
|
+
*/
|
|
8
|
+
export declare function publishPackage(workingDir: string, namespace?: string): Promise<PublishResult>;
|
|
9
|
+
/**
|
|
10
|
+
* CLI handler for publish command
|
|
11
|
+
*/
|
|
12
|
+
export declare function handlePublish(args: {
|
|
13
|
+
namespace?: string;
|
|
14
|
+
cwd?: string;
|
|
15
|
+
}): Promise<void>;
|
|
16
|
+
//# sourceMappingURL=publish.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../src/commands/publish.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAmB,aAAa,EAAgB,MAAM,aAAa,CAAC;AA8KhF;;GAEG;AACH,wBAAsB,cAAc,CAClC,UAAU,EAAE,MAAM,EAClB,SAAS,GAAE,MAA0B,GACpC,OAAO,CAAC,aAAa,CAAC,CAmDxB;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBhB"}
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Publish Command - Publicar paquete al store
|
|
3
|
+
*/
|
|
4
|
+
import fs from "fs/promises";
|
|
5
|
+
import path from "path";
|
|
6
|
+
import crypto from "crypto";
|
|
7
|
+
import { withStoreLock } from "../core/lock.js";
|
|
8
|
+
import { readRegistry, writeRegistry, addPackageToRegistry } from "../core/registry.js";
|
|
9
|
+
import { ensureNamespace, writePackageSignature } from "../core/store.js";
|
|
10
|
+
import { getPackagePath, DEFAULT_NAMESPACE } from "../constants.js";
|
|
11
|
+
/**
|
|
12
|
+
* Read package.json from directory
|
|
13
|
+
*/
|
|
14
|
+
async function readPackageManifest(dir) {
|
|
15
|
+
const manifestPath = path.join(dir, "package.json");
|
|
16
|
+
const content = await fs.readFile(manifestPath, "utf-8");
|
|
17
|
+
return JSON.parse(content);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Get files to publish based on package.json files field or defaults
|
|
21
|
+
*/
|
|
22
|
+
async function getFilesToPublish(dir, manifest) {
|
|
23
|
+
const files = ["package.json"];
|
|
24
|
+
if (manifest.files && manifest.files.length > 0) {
|
|
25
|
+
// Use files field from package.json
|
|
26
|
+
for (const pattern of manifest.files) {
|
|
27
|
+
const matches = await globFiles(dir, pattern);
|
|
28
|
+
files.push(...matches);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
// Default: include common directories
|
|
33
|
+
const defaultDirs = ["dist", "lib", "build", "src"];
|
|
34
|
+
for (const d of defaultDirs) {
|
|
35
|
+
const dirPath = path.join(dir, d);
|
|
36
|
+
try {
|
|
37
|
+
const stat = await fs.stat(dirPath);
|
|
38
|
+
if (stat.isDirectory()) {
|
|
39
|
+
const dirFiles = await getAllFiles(dirPath, dir);
|
|
40
|
+
files.push(...dirFiles);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
// Directory doesn't exist
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
// Always include README and LICENSE if present
|
|
49
|
+
for (const f of ["README.md", "README", "LICENSE", "LICENSE.md"]) {
|
|
50
|
+
try {
|
|
51
|
+
await fs.access(path.join(dir, f));
|
|
52
|
+
if (!files.includes(f))
|
|
53
|
+
files.push(f);
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
// File doesn't exist
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return [...new Set(files)];
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Simple glob implementation for file patterns
|
|
63
|
+
*/
|
|
64
|
+
async function globFiles(baseDir, pattern) {
|
|
65
|
+
const results = [];
|
|
66
|
+
// Handle directory patterns
|
|
67
|
+
if (!pattern.includes("*")) {
|
|
68
|
+
const fullPath = path.join(baseDir, pattern);
|
|
69
|
+
try {
|
|
70
|
+
const stat = await fs.stat(fullPath);
|
|
71
|
+
if (stat.isDirectory()) {
|
|
72
|
+
const files = await getAllFiles(fullPath, baseDir);
|
|
73
|
+
results.push(...files);
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
results.push(pattern);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
// Path doesn't exist
|
|
81
|
+
}
|
|
82
|
+
return results;
|
|
83
|
+
}
|
|
84
|
+
// Handle glob patterns (simplified)
|
|
85
|
+
const dir = path.dirname(pattern);
|
|
86
|
+
const filePattern = path.basename(pattern);
|
|
87
|
+
const searchDir = path.join(baseDir, dir === "." ? "" : dir);
|
|
88
|
+
try {
|
|
89
|
+
const entries = await fs.readdir(searchDir, { withFileTypes: true });
|
|
90
|
+
const regex = new RegExp("^" + filePattern.replace(/\*/g, ".*") + "$");
|
|
91
|
+
for (const entry of entries) {
|
|
92
|
+
if (regex.test(entry.name)) {
|
|
93
|
+
const relativePath = dir === "." ? entry.name : path.join(dir, entry.name);
|
|
94
|
+
if (entry.isDirectory()) {
|
|
95
|
+
const files = await getAllFiles(path.join(searchDir, entry.name), baseDir);
|
|
96
|
+
results.push(...files);
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
results.push(relativePath);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
catch {
|
|
105
|
+
// Directory doesn't exist
|
|
106
|
+
}
|
|
107
|
+
return results;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Get all files in directory recursively
|
|
111
|
+
*/
|
|
112
|
+
async function getAllFiles(dir, baseDir) {
|
|
113
|
+
const results = [];
|
|
114
|
+
const entries = await fs.readdir(dir, { withFileTypes: true });
|
|
115
|
+
for (const entry of entries) {
|
|
116
|
+
const fullPath = path.join(dir, entry.name);
|
|
117
|
+
const relativePath = path.relative(baseDir, fullPath);
|
|
118
|
+
if (entry.isDirectory()) {
|
|
119
|
+
results.push(...await getAllFiles(fullPath, baseDir));
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
results.push(relativePath);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return results;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Copy files to destination
|
|
129
|
+
*/
|
|
130
|
+
async function copyFiles(srcDir, destDir, files) {
|
|
131
|
+
await fs.mkdir(destDir, { recursive: true });
|
|
132
|
+
for (const file of files) {
|
|
133
|
+
const srcPath = path.join(srcDir, file);
|
|
134
|
+
const destPath = path.join(destDir, file);
|
|
135
|
+
// Ensure destination directory exists
|
|
136
|
+
await fs.mkdir(path.dirname(destPath), { recursive: true });
|
|
137
|
+
// Copy file
|
|
138
|
+
await fs.copyFile(srcPath, destPath);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Calculate signature (MD5 hash) of package contents
|
|
143
|
+
*/
|
|
144
|
+
async function calculateSignature(dir, files) {
|
|
145
|
+
const hash = crypto.createHash("md5");
|
|
146
|
+
// Sort files for deterministic hash
|
|
147
|
+
const sortedFiles = [...files].sort();
|
|
148
|
+
for (const file of sortedFiles) {
|
|
149
|
+
const filePath = path.join(dir, file);
|
|
150
|
+
try {
|
|
151
|
+
const content = await fs.readFile(filePath);
|
|
152
|
+
hash.update(file);
|
|
153
|
+
hash.update(content);
|
|
154
|
+
}
|
|
155
|
+
catch {
|
|
156
|
+
// Skip files that can't be read
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
return hash.digest("hex");
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Publish a package to the store
|
|
163
|
+
*/
|
|
164
|
+
export async function publishPackage(workingDir, namespace = DEFAULT_NAMESPACE) {
|
|
165
|
+
// Read package.json
|
|
166
|
+
const manifest = await readPackageManifest(workingDir);
|
|
167
|
+
if (!manifest.name || !manifest.version) {
|
|
168
|
+
throw new Error("package.json must have name and version fields");
|
|
169
|
+
}
|
|
170
|
+
// Get files to publish
|
|
171
|
+
const files = await getFilesToPublish(workingDir, manifest);
|
|
172
|
+
if (files.length === 0) {
|
|
173
|
+
throw new Error("No files to publish");
|
|
174
|
+
}
|
|
175
|
+
// Calculate destination path
|
|
176
|
+
const destDir = getPackagePath(namespace, manifest.name, manifest.version);
|
|
177
|
+
// Perform publish with lock
|
|
178
|
+
return withStoreLock(async () => {
|
|
179
|
+
// Ensure namespace exists
|
|
180
|
+
await ensureNamespace(namespace);
|
|
181
|
+
// Copy files
|
|
182
|
+
await copyFiles(workingDir, destDir, files);
|
|
183
|
+
// Calculate signature
|
|
184
|
+
const signature = await calculateSignature(destDir, files);
|
|
185
|
+
// Write signature file
|
|
186
|
+
await writePackageSignature(namespace, manifest.name, manifest.version, signature);
|
|
187
|
+
// Update registry
|
|
188
|
+
const registry = await readRegistry();
|
|
189
|
+
const entry = {
|
|
190
|
+
signature,
|
|
191
|
+
published: new Date().toISOString(),
|
|
192
|
+
files: files.length,
|
|
193
|
+
};
|
|
194
|
+
addPackageToRegistry(registry, namespace, manifest.name, manifest.version, entry);
|
|
195
|
+
await writeRegistry(registry);
|
|
196
|
+
return {
|
|
197
|
+
name: manifest.name,
|
|
198
|
+
version: manifest.version,
|
|
199
|
+
namespace,
|
|
200
|
+
signature,
|
|
201
|
+
path: destDir,
|
|
202
|
+
files: files.length,
|
|
203
|
+
};
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* CLI handler for publish command
|
|
208
|
+
*/
|
|
209
|
+
export async function handlePublish(args) {
|
|
210
|
+
const workingDir = args.cwd || process.cwd();
|
|
211
|
+
const namespace = args.namespace || DEFAULT_NAMESPACE;
|
|
212
|
+
console.log(`š¦ Publishing from ${workingDir} to namespace '${namespace}'...`);
|
|
213
|
+
try {
|
|
214
|
+
const result = await publishPackage(workingDir, namespace);
|
|
215
|
+
console.log(`ā Published ${result.name}@${result.version}`);
|
|
216
|
+
console.log(` Namespace: ${result.namespace}`);
|
|
217
|
+
console.log(` Signature: ${result.signature.slice(0, 8)}`);
|
|
218
|
+
console.log(` Files: ${result.files}`);
|
|
219
|
+
}
|
|
220
|
+
catch (error) {
|
|
221
|
+
console.error(`ā Publish failed: ${error.message}`);
|
|
222
|
+
process.exit(1);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
//# sourceMappingURL=publish.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../src/commands/publish.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish.spec.d.ts","sourceRoot":"","sources":["../../src/commands/publish.spec.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Publish Command - Integration tests
|
|
3
|
+
*/
|
|
4
|
+
import { describe, it, expect, beforeEach, afterEach, vi } from "vitest";
|
|
5
|
+
import fs from "fs/promises";
|
|
6
|
+
import path from "path";
|
|
7
|
+
import os from "os";
|
|
8
|
+
import { publishPackage } from "./publish.js";
|
|
9
|
+
import { readRegistry } from "../core/registry.js";
|
|
10
|
+
const TEST_STORE_PATH = path.join(os.tmpdir(), "devlink-publish-test-" + Date.now());
|
|
11
|
+
const TEST_PROJECT_PATH = path.join(os.tmpdir(), "devlink-publish-project-" + Date.now());
|
|
12
|
+
vi.mock("../constants.js", async () => {
|
|
13
|
+
const actual = await vi.importActual("../constants.js");
|
|
14
|
+
return {
|
|
15
|
+
...actual,
|
|
16
|
+
getStorePath: () => TEST_STORE_PATH,
|
|
17
|
+
getNamespacesPath: () => path.join(TEST_STORE_PATH, "namespaces"),
|
|
18
|
+
getNamespacePath: (ns) => path.join(TEST_STORE_PATH, "namespaces", ns),
|
|
19
|
+
getPackagePath: (ns, pkg, ver) => path.join(TEST_STORE_PATH, "namespaces", ns, pkg, ver),
|
|
20
|
+
getRegistryPath: () => path.join(TEST_STORE_PATH, "registry.json"),
|
|
21
|
+
getLockPath: () => path.join(TEST_STORE_PATH, ".lock"),
|
|
22
|
+
};
|
|
23
|
+
});
|
|
24
|
+
describe("Publish Command", () => {
|
|
25
|
+
beforeEach(async () => {
|
|
26
|
+
await fs.mkdir(TEST_STORE_PATH, { recursive: true });
|
|
27
|
+
await fs.mkdir(TEST_PROJECT_PATH, { recursive: true });
|
|
28
|
+
// Create a test package
|
|
29
|
+
await fs.writeFile(path.join(TEST_PROJECT_PATH, "package.json"), JSON.stringify({
|
|
30
|
+
name: "@test/my-package",
|
|
31
|
+
version: "1.0.0",
|
|
32
|
+
main: "dist/index.js",
|
|
33
|
+
files: ["dist"],
|
|
34
|
+
}));
|
|
35
|
+
// Create dist directory with a file
|
|
36
|
+
await fs.mkdir(path.join(TEST_PROJECT_PATH, "dist"), { recursive: true });
|
|
37
|
+
await fs.writeFile(path.join(TEST_PROJECT_PATH, "dist", "index.js"), "module.exports = {};");
|
|
38
|
+
});
|
|
39
|
+
afterEach(async () => {
|
|
40
|
+
await fs.rm(TEST_STORE_PATH, { recursive: true, force: true });
|
|
41
|
+
await fs.rm(TEST_PROJECT_PATH, { recursive: true, force: true });
|
|
42
|
+
});
|
|
43
|
+
it("should publish package to global namespace", async () => {
|
|
44
|
+
const result = await publishPackage(TEST_PROJECT_PATH);
|
|
45
|
+
expect(result.name).toBe("@test/my-package");
|
|
46
|
+
expect(result.version).toBe("1.0.0");
|
|
47
|
+
expect(result.namespace).toBe("global");
|
|
48
|
+
expect(result.signature).toBeDefined();
|
|
49
|
+
expect(result.files).toBeGreaterThan(0);
|
|
50
|
+
});
|
|
51
|
+
it("should publish package to custom namespace", async () => {
|
|
52
|
+
const result = await publishPackage(TEST_PROJECT_PATH, "feature-branch");
|
|
53
|
+
expect(result.namespace).toBe("feature-branch");
|
|
54
|
+
});
|
|
55
|
+
it("should update registry after publish", async () => {
|
|
56
|
+
await publishPackage(TEST_PROJECT_PATH);
|
|
57
|
+
const registry = await readRegistry();
|
|
58
|
+
expect(registry.namespaces.global.packages["@test/my-package"]).toBeDefined();
|
|
59
|
+
expect(registry.namespaces.global.packages["@test/my-package"].versions["1.0.0"]).toBeDefined();
|
|
60
|
+
});
|
|
61
|
+
it("should copy files to store", async () => {
|
|
62
|
+
const result = await publishPackage(TEST_PROJECT_PATH);
|
|
63
|
+
const packageJsonPath = path.join(result.path, "package.json");
|
|
64
|
+
const indexPath = path.join(result.path, "dist", "index.js");
|
|
65
|
+
await expect(fs.access(packageJsonPath)).resolves.not.toThrow();
|
|
66
|
+
await expect(fs.access(indexPath)).resolves.not.toThrow();
|
|
67
|
+
});
|
|
68
|
+
it("should write signature file", async () => {
|
|
69
|
+
const result = await publishPackage(TEST_PROJECT_PATH);
|
|
70
|
+
const sigPath = path.join(result.path, "devlink.sig");
|
|
71
|
+
const sig = await fs.readFile(sigPath, "utf-8");
|
|
72
|
+
expect(sig.trim()).toBe(result.signature);
|
|
73
|
+
});
|
|
74
|
+
it("should throw if package.json is missing", async () => {
|
|
75
|
+
await fs.rm(path.join(TEST_PROJECT_PATH, "package.json"));
|
|
76
|
+
await expect(publishPackage(TEST_PROJECT_PATH)).rejects.toThrow();
|
|
77
|
+
});
|
|
78
|
+
it("should throw if name or version is missing", async () => {
|
|
79
|
+
await fs.writeFile(path.join(TEST_PROJECT_PATH, "package.json"), JSON.stringify({ name: "@test/pkg" }) // Missing version
|
|
80
|
+
);
|
|
81
|
+
await expect(publishPackage(TEST_PROJECT_PATH)).rejects.toThrow("package.json must have name and version fields");
|
|
82
|
+
});
|
|
83
|
+
it("should publish multiple versions", async () => {
|
|
84
|
+
await publishPackage(TEST_PROJECT_PATH);
|
|
85
|
+
// Update version
|
|
86
|
+
await fs.writeFile(path.join(TEST_PROJECT_PATH, "package.json"), JSON.stringify({
|
|
87
|
+
name: "@test/my-package",
|
|
88
|
+
version: "2.0.0",
|
|
89
|
+
files: ["dist"],
|
|
90
|
+
}));
|
|
91
|
+
await publishPackage(TEST_PROJECT_PATH);
|
|
92
|
+
const registry = await readRegistry();
|
|
93
|
+
const versions = Object.keys(registry.namespaces.global.packages["@test/my-package"].versions);
|
|
94
|
+
expect(versions).toContain("1.0.0");
|
|
95
|
+
expect(versions).toContain("2.0.0");
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
//# sourceMappingURL=publish.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish.spec.js","sourceRoot":"","sources":["../../src/commands/publish.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Push Command - Publicar y actualizar consumidores
|
|
3
|
+
*/
|
|
4
|
+
import type { PushResult } from "../types.js";
|
|
5
|
+
/**
|
|
6
|
+
* Push a package: publish and update all consumers
|
|
7
|
+
*/
|
|
8
|
+
export declare function pushPackage(workingDir: string, namespace?: string): Promise<PushResult>;
|
|
9
|
+
/**
|
|
10
|
+
* CLI handler for push command
|
|
11
|
+
*/
|
|
12
|
+
export declare function handlePush(args: {
|
|
13
|
+
namespace?: string;
|
|
14
|
+
cwd?: string;
|
|
15
|
+
}): Promise<void>;
|
|
16
|
+
//# sourceMappingURL=push.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../src/commands/push.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,UAAU,EAA8B,MAAM,aAAa,CAAC;AA8F1E;;GAEG;AACH,wBAAsB,WAAW,CAC/B,UAAU,EAAE,MAAM,EAClB,SAAS,GAAE,MAA0B,GACpC,OAAO,CAAC,UAAU,CAAC,CA2DrB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAAC,IAAI,CAAC,CA6BhB"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Push Command - Publicar y actualizar consumidores
|
|
3
|
+
*/
|
|
4
|
+
import fs from "fs/promises";
|
|
5
|
+
import path from "path";
|
|
6
|
+
import { withStoreLock } from "../core/lock.js";
|
|
7
|
+
import { readInstallations, writeInstallations, getConsumers, updateProjectPackage, } from "../core/installations.js";
|
|
8
|
+
import { getPackagePath, DEFAULT_NAMESPACE, LOCKFILE_NAME } from "../constants.js";
|
|
9
|
+
import { publishPackage } from "./publish.js";
|
|
10
|
+
/**
|
|
11
|
+
* Read lockfile from project
|
|
12
|
+
*/
|
|
13
|
+
async function readLockfile(projectPath) {
|
|
14
|
+
const lockfilePath = path.join(projectPath, LOCKFILE_NAME);
|
|
15
|
+
try {
|
|
16
|
+
const content = await fs.readFile(lockfilePath, "utf-8");
|
|
17
|
+
return JSON.parse(content);
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
return { packages: {} };
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Write lockfile to project
|
|
25
|
+
*/
|
|
26
|
+
async function writeLockfile(projectPath, lockfile) {
|
|
27
|
+
const lockfilePath = path.join(projectPath, LOCKFILE_NAME);
|
|
28
|
+
await fs.writeFile(lockfilePath, JSON.stringify(lockfile, null, 2));
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Check if project directory exists
|
|
32
|
+
*/
|
|
33
|
+
async function projectExists(projectPath) {
|
|
34
|
+
try {
|
|
35
|
+
const stat = await fs.stat(projectPath);
|
|
36
|
+
return stat.isDirectory();
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Link package to project's node_modules
|
|
44
|
+
*/
|
|
45
|
+
async function linkPackageToProject(projectPath, packageName, sourcePath) {
|
|
46
|
+
const nodeModulesPath = path.join(projectPath, "node_modules");
|
|
47
|
+
let targetPath;
|
|
48
|
+
if (packageName.startsWith("@")) {
|
|
49
|
+
// Scoped package
|
|
50
|
+
const [scope, name] = packageName.split("/");
|
|
51
|
+
targetPath = path.join(nodeModulesPath, scope, name);
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
targetPath = path.join(nodeModulesPath, packageName);
|
|
55
|
+
}
|
|
56
|
+
// Remove existing
|
|
57
|
+
await fs.rm(targetPath, { recursive: true, force: true });
|
|
58
|
+
// Create parent directory
|
|
59
|
+
await fs.mkdir(path.dirname(targetPath), { recursive: true });
|
|
60
|
+
// Copy package
|
|
61
|
+
await copyDir(sourcePath, targetPath);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Copy directory recursively
|
|
65
|
+
*/
|
|
66
|
+
async function copyDir(src, dest) {
|
|
67
|
+
await fs.mkdir(dest, { recursive: true });
|
|
68
|
+
const entries = await fs.readdir(src, { withFileTypes: true });
|
|
69
|
+
for (const entry of entries) {
|
|
70
|
+
const srcPath = path.join(src, entry.name);
|
|
71
|
+
const destPath = path.join(dest, entry.name);
|
|
72
|
+
if (entry.isDirectory()) {
|
|
73
|
+
await copyDir(srcPath, destPath);
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
await fs.copyFile(srcPath, destPath);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Push a package: publish and update all consumers
|
|
82
|
+
*/
|
|
83
|
+
export async function pushPackage(workingDir, namespace = DEFAULT_NAMESPACE) {
|
|
84
|
+
// First, publish the package
|
|
85
|
+
const publishResult = await publishPackage(workingDir, namespace);
|
|
86
|
+
const updatedProjects = [];
|
|
87
|
+
const skippedProjects = [];
|
|
88
|
+
// Then update consumers (with lock)
|
|
89
|
+
await withStoreLock(async () => {
|
|
90
|
+
const installations = await readInstallations();
|
|
91
|
+
const consumers = getConsumers(installations, publishResult.name);
|
|
92
|
+
for (const consumer of consumers) {
|
|
93
|
+
const { projectPath, info } = consumer;
|
|
94
|
+
// Check if project still exists
|
|
95
|
+
if (!(await projectExists(projectPath))) {
|
|
96
|
+
skippedProjects.push(projectPath);
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
try {
|
|
100
|
+
// Link package to project
|
|
101
|
+
const sourcePath = getPackagePath(namespace, publishResult.name, publishResult.version);
|
|
102
|
+
await linkPackageToProject(projectPath, publishResult.name, sourcePath);
|
|
103
|
+
// Update installations tracking
|
|
104
|
+
const newInfo = {
|
|
105
|
+
version: publishResult.version,
|
|
106
|
+
namespace,
|
|
107
|
+
signature: publishResult.signature,
|
|
108
|
+
installedAt: new Date().toISOString(),
|
|
109
|
+
};
|
|
110
|
+
updateProjectPackage(installations, projectPath, publishResult.name, newInfo);
|
|
111
|
+
// Update project's lockfile
|
|
112
|
+
const lockfile = await readLockfile(projectPath);
|
|
113
|
+
lockfile.packages[publishResult.name] = {
|
|
114
|
+
version: publishResult.version,
|
|
115
|
+
signature: publishResult.signature,
|
|
116
|
+
namespace,
|
|
117
|
+
};
|
|
118
|
+
await writeLockfile(projectPath, lockfile);
|
|
119
|
+
updatedProjects.push(projectPath);
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
skippedProjects.push(projectPath);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
// Save updated installations
|
|
126
|
+
await writeInstallations(installations);
|
|
127
|
+
});
|
|
128
|
+
return {
|
|
129
|
+
...publishResult,
|
|
130
|
+
updatedProjects,
|
|
131
|
+
skippedProjects,
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* CLI handler for push command
|
|
136
|
+
*/
|
|
137
|
+
export async function handlePush(args) {
|
|
138
|
+
const workingDir = args.cwd || process.cwd();
|
|
139
|
+
const namespace = args.namespace || DEFAULT_NAMESPACE;
|
|
140
|
+
console.log(`š Pushing from ${workingDir} to namespace '${namespace}'...`);
|
|
141
|
+
try {
|
|
142
|
+
const result = await pushPackage(workingDir, namespace);
|
|
143
|
+
console.log(`ā Published ${result.name}@${result.version}`);
|
|
144
|
+
console.log(` Namespace: ${result.namespace}`);
|
|
145
|
+
console.log(` Signature: ${result.signature.slice(0, 8)}`);
|
|
146
|
+
if (result.updatedProjects.length > 0) {
|
|
147
|
+
console.log(`\nš¦ Updated ${result.updatedProjects.length} project(s):`);
|
|
148
|
+
for (const project of result.updatedProjects) {
|
|
149
|
+
console.log(` ā ${project}`);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
if (result.skippedProjects.length > 0) {
|
|
153
|
+
console.log(`\nā ļø Skipped ${result.skippedProjects.length} project(s):`);
|
|
154
|
+
for (const project of result.skippedProjects) {
|
|
155
|
+
console.log(` - ${project}`);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
catch (error) {
|
|
160
|
+
console.error(`ā Push failed: ${error.message}`);
|
|
161
|
+
process.exit(1);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=push.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"push.js","sourceRoot":"","sources":["../../src/commands/push.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Remove Command - Eliminar paquetes del store
|
|
3
|
+
*/
|
|
4
|
+
export interface RemoveOptions {
|
|
5
|
+
namespace?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface RemoveResult {
|
|
8
|
+
type: "version" | "package" | "namespace";
|
|
9
|
+
name: string;
|
|
10
|
+
version?: string;
|
|
11
|
+
namespace?: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Remove a package version, package, or namespace
|
|
15
|
+
*/
|
|
16
|
+
export declare function removeFromStore(target: string, options?: RemoveOptions): Promise<RemoveResult>;
|
|
17
|
+
/**
|
|
18
|
+
* CLI handler for remove command
|
|
19
|
+
*/
|
|
20
|
+
export declare function handleRemove(args: {
|
|
21
|
+
target: string;
|
|
22
|
+
namespace?: string;
|
|
23
|
+
}): Promise<void>;
|
|
24
|
+
//# sourceMappingURL=remove.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove.d.ts","sourceRoot":"","sources":["../../src/commands/remove.ts"],"names":[],"mappings":"AAAA;;GAEG;AAoBH,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,CAAC,CAsDvB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBhB"}
|