@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.
Files changed (186) hide show
  1. package/AGENTS.md +880 -0
  2. package/LICENSE +21 -0
  3. package/README.md +335 -0
  4. package/dist/__tests__/e2e.spec.d.ts +8 -0
  5. package/dist/__tests__/e2e.spec.d.ts.map +1 -0
  6. package/dist/__tests__/e2e.spec.js +253 -0
  7. package/dist/__tests__/e2e.spec.js.map +1 -0
  8. package/dist/__tests__/integration.spec.d.ts +8 -0
  9. package/dist/__tests__/integration.spec.d.ts.map +1 -0
  10. package/dist/__tests__/integration.spec.js +274 -0
  11. package/dist/__tests__/integration.spec.js.map +1 -0
  12. package/dist/cli.d.ts +6 -0
  13. package/dist/cli.d.ts.map +1 -0
  14. package/dist/cli.js +610 -0
  15. package/dist/cli.js.map +1 -0
  16. package/dist/commands/consumers.d.ts +37 -0
  17. package/dist/commands/consumers.d.ts.map +1 -0
  18. package/dist/commands/consumers.js +107 -0
  19. package/dist/commands/consumers.js.map +1 -0
  20. package/dist/commands/docs.d.ts +59 -0
  21. package/dist/commands/docs.d.ts.map +1 -0
  22. package/dist/commands/docs.js +262 -0
  23. package/dist/commands/docs.js.map +1 -0
  24. package/dist/commands/docs.spec.d.ts +5 -0
  25. package/dist/commands/docs.spec.d.ts.map +1 -0
  26. package/dist/commands/docs.spec.js +213 -0
  27. package/dist/commands/docs.spec.js.map +1 -0
  28. package/dist/commands/index.d.ts +13 -0
  29. package/dist/commands/index.d.ts.map +1 -0
  30. package/dist/commands/index.js +13 -0
  31. package/dist/commands/index.js.map +1 -0
  32. package/dist/commands/install.d.ts +31 -0
  33. package/dist/commands/install.d.ts.map +1 -0
  34. package/dist/commands/install.js +234 -0
  35. package/dist/commands/install.js.map +1 -0
  36. package/dist/commands/list.d.ts +22 -0
  37. package/dist/commands/list.d.ts.map +1 -0
  38. package/dist/commands/list.js +45 -0
  39. package/dist/commands/list.js.map +1 -0
  40. package/dist/commands/list.spec.d.ts +5 -0
  41. package/dist/commands/list.spec.d.ts.map +1 -0
  42. package/dist/commands/list.spec.js +95 -0
  43. package/dist/commands/list.spec.js.map +1 -0
  44. package/dist/commands/prune.d.ts +27 -0
  45. package/dist/commands/prune.d.ts.map +1 -0
  46. package/dist/commands/prune.js +74 -0
  47. package/dist/commands/prune.js.map +1 -0
  48. package/dist/commands/publish.d.ts +16 -0
  49. package/dist/commands/publish.d.ts.map +1 -0
  50. package/dist/commands/publish.js +225 -0
  51. package/dist/commands/publish.js.map +1 -0
  52. package/dist/commands/publish.spec.d.ts +5 -0
  53. package/dist/commands/publish.spec.d.ts.map +1 -0
  54. package/dist/commands/publish.spec.js +98 -0
  55. package/dist/commands/publish.spec.js.map +1 -0
  56. package/dist/commands/push.d.ts +16 -0
  57. package/dist/commands/push.d.ts.map +1 -0
  58. package/dist/commands/push.js +164 -0
  59. package/dist/commands/push.js.map +1 -0
  60. package/dist/commands/remove.d.ts +24 -0
  61. package/dist/commands/remove.d.ts.map +1 -0
  62. package/dist/commands/remove.js +80 -0
  63. package/dist/commands/remove.js.map +1 -0
  64. package/dist/commands/remove.spec.d.ts +5 -0
  65. package/dist/commands/remove.spec.d.ts.map +1 -0
  66. package/dist/commands/remove.spec.js +87 -0
  67. package/dist/commands/remove.spec.js.map +1 -0
  68. package/dist/commands/resolve.d.ts +20 -0
  69. package/dist/commands/resolve.d.ts.map +1 -0
  70. package/dist/commands/resolve.js +52 -0
  71. package/dist/commands/resolve.js.map +1 -0
  72. package/dist/commands/resolve.spec.d.ts +5 -0
  73. package/dist/commands/resolve.spec.d.ts.map +1 -0
  74. package/dist/commands/resolve.spec.js +87 -0
  75. package/dist/commands/resolve.spec.js.map +1 -0
  76. package/dist/commands/verify.d.ts +32 -0
  77. package/dist/commands/verify.d.ts.map +1 -0
  78. package/dist/commands/verify.js +127 -0
  79. package/dist/commands/verify.js.map +1 -0
  80. package/dist/config.d.ts +22 -0
  81. package/dist/config.d.ts.map +1 -0
  82. package/dist/config.js +70 -0
  83. package/dist/config.js.map +1 -0
  84. package/dist/constants.d.ts +65 -0
  85. package/dist/constants.d.ts.map +1 -0
  86. package/dist/constants.js +116 -0
  87. package/dist/constants.js.map +1 -0
  88. package/dist/constants.spec.d.ts +5 -0
  89. package/dist/constants.spec.d.ts.map +1 -0
  90. package/dist/constants.spec.js +72 -0
  91. package/dist/constants.spec.js.map +1 -0
  92. package/dist/core/index.d.ts +9 -0
  93. package/dist/core/index.d.ts.map +1 -0
  94. package/dist/core/index.js +9 -0
  95. package/dist/core/index.js.map +1 -0
  96. package/dist/core/installations.d.ts +79 -0
  97. package/dist/core/installations.d.ts.map +1 -0
  98. package/dist/core/installations.js +207 -0
  99. package/dist/core/installations.js.map +1 -0
  100. package/dist/core/installations.spec.d.ts +5 -0
  101. package/dist/core/installations.spec.d.ts.map +1 -0
  102. package/dist/core/installations.spec.js +261 -0
  103. package/dist/core/installations.spec.js.map +1 -0
  104. package/dist/core/lock.d.ts +37 -0
  105. package/dist/core/lock.d.ts.map +1 -0
  106. package/dist/core/lock.js +198 -0
  107. package/dist/core/lock.js.map +1 -0
  108. package/dist/core/lock.spec.d.ts +5 -0
  109. package/dist/core/lock.spec.d.ts.map +1 -0
  110. package/dist/core/lock.spec.js +161 -0
  111. package/dist/core/lock.spec.js.map +1 -0
  112. package/dist/core/registry.d.ts +80 -0
  113. package/dist/core/registry.d.ts.map +1 -0
  114. package/dist/core/registry.js +231 -0
  115. package/dist/core/registry.js.map +1 -0
  116. package/dist/core/registry.spec.d.ts +5 -0
  117. package/dist/core/registry.spec.d.ts.map +1 -0
  118. package/dist/core/registry.spec.js +281 -0
  119. package/dist/core/registry.spec.js.map +1 -0
  120. package/dist/core/resolver.d.ts +55 -0
  121. package/dist/core/resolver.d.ts.map +1 -0
  122. package/dist/core/resolver.js +127 -0
  123. package/dist/core/resolver.js.map +1 -0
  124. package/dist/core/resolver.spec.d.ts +5 -0
  125. package/dist/core/resolver.spec.d.ts.map +1 -0
  126. package/dist/core/resolver.spec.js +202 -0
  127. package/dist/core/resolver.spec.js.map +1 -0
  128. package/dist/core/store.d.ts +65 -0
  129. package/dist/core/store.d.ts.map +1 -0
  130. package/dist/core/store.js +245 -0
  131. package/dist/core/store.js.map +1 -0
  132. package/dist/core/store.spec.d.ts +5 -0
  133. package/dist/core/store.spec.d.ts.map +1 -0
  134. package/dist/core/store.spec.js +195 -0
  135. package/dist/core/store.spec.js.map +1 -0
  136. package/dist/formatters/flat.d.ts +41 -0
  137. package/dist/formatters/flat.d.ts.map +1 -0
  138. package/dist/formatters/flat.js +131 -0
  139. package/dist/formatters/flat.js.map +1 -0
  140. package/dist/formatters/flat.spec.d.ts +5 -0
  141. package/dist/formatters/flat.spec.d.ts.map +1 -0
  142. package/dist/formatters/flat.spec.js +130 -0
  143. package/dist/formatters/flat.spec.js.map +1 -0
  144. package/dist/formatters/index.d.ts +6 -0
  145. package/dist/formatters/index.d.ts.map +1 -0
  146. package/dist/formatters/index.js +6 -0
  147. package/dist/formatters/index.js.map +1 -0
  148. package/dist/formatters/tree.d.ts +29 -0
  149. package/dist/formatters/tree.d.ts.map +1 -0
  150. package/dist/formatters/tree.js +256 -0
  151. package/dist/formatters/tree.js.map +1 -0
  152. package/dist/formatters/tree.spec.d.ts +5 -0
  153. package/dist/formatters/tree.spec.d.ts.map +1 -0
  154. package/dist/formatters/tree.spec.js +127 -0
  155. package/dist/formatters/tree.spec.js.map +1 -0
  156. package/dist/index.d.ts +11 -0
  157. package/dist/index.d.ts.map +1 -0
  158. package/dist/index.js +13 -0
  159. package/dist/index.js.map +1 -0
  160. package/dist/installer.d.ts +13 -0
  161. package/dist/installer.d.ts.map +1 -0
  162. package/dist/installer.js +171 -0
  163. package/dist/installer.js.map +1 -0
  164. package/dist/store.d.ts +78 -0
  165. package/dist/store.d.ts.map +1 -0
  166. package/dist/store.js +344 -0
  167. package/dist/store.js.map +1 -0
  168. package/dist/types.d.ts +235 -0
  169. package/dist/types.d.ts.map +1 -0
  170. package/dist/types.js +5 -0
  171. package/dist/types.js.map +1 -0
  172. package/docs/README.md +68 -0
  173. package/docs/inspection/consumers.md +178 -0
  174. package/docs/inspection/list.md +182 -0
  175. package/docs/inspection/resolve.md +172 -0
  176. package/docs/installation/configuration.md +238 -0
  177. package/docs/installation/install.md +184 -0
  178. package/docs/maintenance/prune.md +159 -0
  179. package/docs/maintenance/remove.md +174 -0
  180. package/docs/maintenance/verify.md +174 -0
  181. package/docs/publishing/publish.md +146 -0
  182. package/docs/publishing/push.md +146 -0
  183. package/docs/store/locking.md +118 -0
  184. package/docs/store/namespaces.md +141 -0
  185. package/docs/store/structure.md +163 -0
  186. 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,5 @@
1
+ /**
2
+ * Publish Command - Integration tests
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=publish.spec.d.ts.map
@@ -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"}