@guanjinke/artifact-client 1.0.0

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 (46) hide show
  1. package/README.md +165 -0
  2. package/dist/artifact-client.d.ts +112 -0
  3. package/dist/artifact-client.d.ts.map +1 -0
  4. package/dist/artifact-client.js +167 -0
  5. package/dist/artifact-client.js.map +1 -0
  6. package/dist/cli/config-manager.d.ts +27 -0
  7. package/dist/cli/config-manager.d.ts.map +1 -0
  8. package/dist/cli/config-manager.js +107 -0
  9. package/dist/cli/config-manager.js.map +1 -0
  10. package/dist/cli/setup.d.ts +7 -0
  11. package/dist/cli/setup.d.ts.map +1 -0
  12. package/dist/cli/setup.js +366 -0
  13. package/dist/cli/setup.js.map +1 -0
  14. package/dist/cli.d.ts +3 -0
  15. package/dist/cli.d.ts.map +1 -0
  16. package/dist/cli.js +7 -0
  17. package/dist/cli.js.map +1 -0
  18. package/dist/index.d.ts +6 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +13 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/providers/azure-provider.d.ts +40 -0
  23. package/dist/providers/azure-provider.d.ts.map +1 -0
  24. package/dist/providers/azure-provider.js +336 -0
  25. package/dist/providers/azure-provider.js.map +1 -0
  26. package/dist/providers/oss-provider.d.ts +39 -0
  27. package/dist/providers/oss-provider.d.ts.map +1 -0
  28. package/dist/providers/oss-provider.js +342 -0
  29. package/dist/providers/oss-provider.js.map +1 -0
  30. package/dist/providers/storage-provider.d.ts +50 -0
  31. package/dist/providers/storage-provider.d.ts.map +1 -0
  32. package/dist/providers/storage-provider.js +11 -0
  33. package/dist/providers/storage-provider.js.map +1 -0
  34. package/dist/types.d.ts +62 -0
  35. package/dist/types.d.ts.map +1 -0
  36. package/dist/types.js +6 -0
  37. package/dist/types.js.map +1 -0
  38. package/dist/utils/format.d.ts +9 -0
  39. package/dist/utils/format.d.ts.map +1 -0
  40. package/dist/utils/format.js +17 -0
  41. package/dist/utils/format.js.map +1 -0
  42. package/dist/utils/semver.d.ts +46 -0
  43. package/dist/utils/semver.d.ts.map +1 -0
  44. package/dist/utils/semver.js +112 -0
  45. package/dist/utils/semver.js.map +1 -0
  46. package/package.json +43 -0
@@ -0,0 +1,336 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.AzureProvider = void 0;
37
+ const fs = __importStar(require("fs/promises"));
38
+ const path = __importStar(require("path"));
39
+ const storage_blob_1 = require("@azure/storage-blob");
40
+ const storage_provider_1 = require("./storage-provider");
41
+ const semver_1 = require("../utils/semver");
42
+ const format_1 = require("../utils/format");
43
+ const PLUGIN_ARTIFACTS_PREFIX = 'plugin_artifacts/';
44
+ /**
45
+ * Azure Blob Storage provider.
46
+ * Connects via SAS URL and operates within a single container.
47
+ */
48
+ class AzureProvider extends storage_provider_1.StorageProvider {
49
+ containerClient;
50
+ constructor(config) {
51
+ super();
52
+ this.containerClient = new storage_blob_1.ContainerClient(config.sasUrl);
53
+ }
54
+ // ============================================================
55
+ // listPlugins
56
+ // ============================================================
57
+ async listPlugins(options) {
58
+ const plugins = [];
59
+ const includeSize = options?.includeSize ?? false;
60
+ for await (const item of this.containerClient.listBlobsByHierarchy('/', {
61
+ prefix: PLUGIN_ARTIFACTS_PREFIX,
62
+ })) {
63
+ if (item.kind === 'prefix') {
64
+ // Prefix looks like "plugin_artifacts/myPlugin/"
65
+ const name = item.name
66
+ .slice(PLUGIN_ARTIFACTS_PREFIX.length)
67
+ .replace(/\/$/, '');
68
+ if (!name)
69
+ continue;
70
+ const plugin = {
71
+ name,
72
+ path: item.name,
73
+ };
74
+ if (includeSize) {
75
+ plugin.totalSizeMB = await this.calculatePrefixSize(item.name);
76
+ }
77
+ plugins.push(plugin);
78
+ }
79
+ }
80
+ return plugins.sort((a, b) => a.name.localeCompare(b.name));
81
+ }
82
+ // ============================================================
83
+ // listMajorVersions
84
+ // ============================================================
85
+ async listMajorVersions(pluginName, options) {
86
+ const includeSize = options?.includeSize ?? false;
87
+ const majorMap = new Map();
88
+ // Scan all entries under the plugin directory
89
+ const pluginPrefix = (0, semver_1.getPluginPrefix)(pluginName);
90
+ for await (const item of this.containerClient.listBlobsByHierarchy('/', {
91
+ prefix: pluginPrefix,
92
+ })) {
93
+ if (item.kind === 'prefix') {
94
+ // This is a version directory, e.g. "plugin_artifacts/myPlugin/1.0.5/"
95
+ const dirName = item.name
96
+ .slice(pluginPrefix.length)
97
+ .replace(/\/$/, '');
98
+ if (!dirName)
99
+ continue;
100
+ const major = (0, semver_1.extractMajorMinor)(dirName);
101
+ if (!majorMap.has(major)) {
102
+ majorMap.set(major, {
103
+ majorVersion: major,
104
+ minorCount: 0,
105
+ path: `${pluginPrefix}${major}/`,
106
+ });
107
+ }
108
+ const entry = majorMap.get(major);
109
+ entry.minorCount++;
110
+ if (includeSize) {
111
+ const dirSize = await this.calculatePrefixSize(item.name);
112
+ entry.totalSizeMB = (entry.totalSizeMB ?? 0) + dirSize;
113
+ }
114
+ }
115
+ }
116
+ // Read latest version from version files for each major
117
+ for (const [major, info] of majorMap) {
118
+ try {
119
+ const latestVersion = await this.readLatestVersionFromFile(pluginName, major);
120
+ if (latestVersion) {
121
+ info.latestVersion = latestVersion;
122
+ }
123
+ }
124
+ catch {
125
+ // Version file may not exist yet — that's ok
126
+ }
127
+ }
128
+ const result = Array.from(majorMap.values());
129
+ // Sort by semantic version (major.minor), special case "dev" at the end
130
+ if (options?.sortOrder !== 'asc') {
131
+ result.sort((a, b) => {
132
+ if (a.majorVersion === 'dev')
133
+ return 1;
134
+ if (b.majorVersion === 'dev')
135
+ return -1;
136
+ return -this.compareMajorVersions(a.majorVersion, b.majorVersion);
137
+ });
138
+ }
139
+ else {
140
+ result.sort((a, b) => {
141
+ if (a.majorVersion === 'dev')
142
+ return 1;
143
+ if (b.majorVersion === 'dev')
144
+ return -1;
145
+ return this.compareMajorVersions(a.majorVersion, b.majorVersion);
146
+ });
147
+ }
148
+ return result;
149
+ }
150
+ // ============================================================
151
+ // getLatestVersion
152
+ // ============================================================
153
+ async getLatestVersion(pluginName, majorVersion, options) {
154
+ const latestVersion = await this.readLatestVersionFromFile(pluginName, majorVersion);
155
+ if (!latestVersion) {
156
+ throw new Error(`No latest version found for plugin "${pluginName}" major "${majorVersion}". ` +
157
+ `The version file may not exist or has no latestversion metadata.`);
158
+ }
159
+ const version = {
160
+ version: latestVersion,
161
+ path: (0, semver_1.getVersionPrefix)(pluginName, latestVersion),
162
+ };
163
+ if (options?.includeSize) {
164
+ version.totalSizeMB = await this.calculatePrefixSize(version.path);
165
+ }
166
+ return version;
167
+ }
168
+ // ============================================================
169
+ // listMinorVersions
170
+ // ============================================================
171
+ async listMinorVersions(pluginName, majorVersion, options) {
172
+ const includeSize = options?.includeSize ?? false;
173
+ const versions = [];
174
+ const pluginPrefix = (0, semver_1.getPluginPrefix)(pluginName);
175
+ for await (const item of this.containerClient.listBlobsByHierarchy('/', {
176
+ prefix: pluginPrefix,
177
+ })) {
178
+ if (item.kind === 'prefix') {
179
+ const dirName = item.name
180
+ .slice(pluginPrefix.length)
181
+ .replace(/\/$/, '');
182
+ if (!dirName)
183
+ continue;
184
+ const major = (0, semver_1.extractMajorMinor)(dirName);
185
+ // Only include versions matching the requested major
186
+ if (major !== majorVersion)
187
+ continue;
188
+ const version = {
189
+ version: dirName,
190
+ path: item.name,
191
+ };
192
+ if (includeSize) {
193
+ version.totalSizeMB = await this.calculatePrefixSize(item.name);
194
+ }
195
+ versions.push(version);
196
+ }
197
+ }
198
+ // Sort by semver
199
+ const versionStrings = versions.map(v => v.version);
200
+ const sorted = (0, semver_1.sortVersions)(versionStrings, options?.sortOrder ?? 'desc');
201
+ // Reorder the versions array according to sorted order
202
+ const versionMap = new Map(versions.map(v => [v.version, v]));
203
+ return sorted.map(v => versionMap.get(v)).filter(Boolean);
204
+ }
205
+ // ============================================================
206
+ // listArtifacts
207
+ // ============================================================
208
+ async listArtifacts(pluginName, version, options) {
209
+ const includeSize = options?.includeSize ?? false;
210
+ const artifacts = [];
211
+ const versionPrefix = (0, semver_1.getVersionPrefix)(pluginName, version);
212
+ for await (const blob of this.containerClient.listBlobsFlat({
213
+ prefix: versionPrefix,
214
+ })) {
215
+ const fileName = blob.name.slice(versionPrefix.length);
216
+ if (!fileName)
217
+ continue; // Skip the directory marker itself
218
+ const artifact = {
219
+ name: fileName,
220
+ path: blob.name,
221
+ };
222
+ if (includeSize && blob.properties.contentLength !== undefined) {
223
+ artifact.sizeMB = (0, format_1.bytesToMB)(blob.properties.contentLength);
224
+ }
225
+ artifacts.push(artifact);
226
+ }
227
+ return artifacts.sort((a, b) => a.name.localeCompare(b.name));
228
+ }
229
+ // ============================================================
230
+ // uploadArtifact
231
+ // ============================================================
232
+ async uploadArtifact(pluginName, version, artifactName, localFilePath) {
233
+ const blobPath = (0, semver_1.getArtifactPath)(pluginName, version, artifactName);
234
+ const blockBlobClient = this.containerClient.getBlockBlobClient(blobPath);
235
+ // Upload the file
236
+ await blockBlobClient.uploadFile(localFilePath);
237
+ // Update the version file with the latest version
238
+ const major = (0, semver_1.extractMajorMinor)(version);
239
+ await this.updateLatestVersion(pluginName, major, version);
240
+ }
241
+ // ============================================================
242
+ // downloadArtifactByPath
243
+ // ============================================================
244
+ async downloadArtifactByPath(fullPath, localDir) {
245
+ const blockBlobClient = this.containerClient.getBlockBlobClient(fullPath);
246
+ // Extract file name from path
247
+ const fileName = fullPath.split('/').pop() || 'artifact';
248
+ await fs.mkdir(localDir, { recursive: true });
249
+ const localPath = path.join(localDir, fileName);
250
+ await blockBlobClient.downloadToFile(localPath);
251
+ }
252
+ // ============================================================
253
+ // downloadArtifact
254
+ // ============================================================
255
+ async downloadArtifact(pluginName, version, fileName, localDir) {
256
+ const blobPath = (0, semver_1.getArtifactPath)(pluginName, version, fileName);
257
+ return this.downloadArtifactByPath(blobPath, localDir);
258
+ }
259
+ // ============================================================
260
+ // Private helpers
261
+ // ============================================================
262
+ /**
263
+ * Calculate the total size in MB of all blobs under a given prefix.
264
+ */
265
+ async calculatePrefixSize(prefix) {
266
+ let totalBytes = 0;
267
+ for await (const blob of this.containerClient.listBlobsFlat({ prefix })) {
268
+ if (blob.properties.contentLength) {
269
+ totalBytes += blob.properties.contentLength;
270
+ }
271
+ }
272
+ return (0, format_1.bytesToMB)(totalBytes);
273
+ }
274
+ /**
275
+ * Read the latestversion metadata from a version file.
276
+ * Returns null if the file does not exist or has no latestversion metadata.
277
+ */
278
+ async readLatestVersionFromFile(pluginName, majorVersion) {
279
+ const filePath = (0, semver_1.getVersionFilePath)(pluginName, majorVersion);
280
+ const blockBlobClient = this.containerClient.getBlockBlobClient(filePath);
281
+ try {
282
+ const properties = await blockBlobClient.getProperties();
283
+ return properties.metadata?.latestversion ?? null;
284
+ }
285
+ catch (err) {
286
+ if (err?.statusCode === 404 || err?.code === 'BlobNotFound') {
287
+ return null;
288
+ }
289
+ throw err;
290
+ }
291
+ }
292
+ /**
293
+ * Create or update a version file with the latestversion metadata.
294
+ */
295
+ async updateLatestVersion(pluginName, majorVersion, latestVersion) {
296
+ const filePath = (0, semver_1.getVersionFilePath)(pluginName, majorVersion);
297
+ const blockBlobClient = this.containerClient.getBlockBlobClient(filePath);
298
+ // Check if the version file exists
299
+ let exists = false;
300
+ try {
301
+ await blockBlobClient.getProperties();
302
+ exists = true;
303
+ }
304
+ catch (err) {
305
+ if (err?.statusCode !== 404 && err?.code !== 'BlobNotFound') {
306
+ throw err;
307
+ }
308
+ }
309
+ if (exists) {
310
+ // Update metadata only
311
+ await blockBlobClient.setMetadata({ latestversion: latestVersion });
312
+ }
313
+ else {
314
+ // Create the file with the version as content and set metadata
315
+ await blockBlobClient.upload(latestVersion, latestVersion.length, {
316
+ metadata: { latestversion: latestVersion },
317
+ });
318
+ }
319
+ }
320
+ /**
321
+ * Compare two major version strings (e.g., "1.0" vs "2.3").
322
+ */
323
+ compareMajorVersions(a, b) {
324
+ const partsA = a.split('.').map(Number);
325
+ const partsB = b.split('.').map(Number);
326
+ for (let i = 0; i < Math.max(partsA.length, partsB.length); i++) {
327
+ const numA = partsA[i] ?? 0;
328
+ const numB = partsB[i] ?? 0;
329
+ if (numA !== numB)
330
+ return numA - numB;
331
+ }
332
+ return 0;
333
+ }
334
+ }
335
+ exports.AzureProvider = AzureProvider;
336
+ //# sourceMappingURL=azure-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"azure-provider.js","sourceRoot":"","sources":["../../src/providers/azure-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import { StorageProvider } from './storage-provider';
2
+ import { OSSConfig, PluginInfo, MajorVersionInfo, VersionInfo, ArtifactInfo, ListOptions, GetLatestOptions } from '../types';
3
+ /**
4
+ * Aliyun OSS (Object Storage Service) provider.
5
+ * Connects via access key ID + access key secret.
6
+ */
7
+ export declare class OSSProvider extends StorageProvider {
8
+ private client;
9
+ constructor(config: OSSConfig);
10
+ listPlugins(options?: {
11
+ includeSize?: boolean;
12
+ }): Promise<PluginInfo[]>;
13
+ listMajorVersions(pluginName: string, options?: ListOptions): Promise<MajorVersionInfo[]>;
14
+ getLatestVersion(pluginName: string, majorVersion: string, options?: GetLatestOptions): Promise<VersionInfo>;
15
+ listMinorVersions(pluginName: string, majorVersion: string, options?: ListOptions): Promise<VersionInfo[]>;
16
+ listArtifacts(pluginName: string, version: string, options?: {
17
+ includeSize?: boolean;
18
+ }): Promise<ArtifactInfo[]>;
19
+ uploadArtifact(pluginName: string, version: string, artifactName: string, localFilePath: string): Promise<void>;
20
+ downloadArtifactByPath(fullPath: string, localDir: string): Promise<void>;
21
+ downloadArtifact(pluginName: string, version: string, fileName: string, localDir: string): Promise<void>;
22
+ /**
23
+ * Calculate the total size in MB of all objects under a given prefix.
24
+ */
25
+ private calculatePrefixSize;
26
+ /**
27
+ * Read the latestversion tag from a version file.
28
+ */
29
+ private readLatestVersionFromFile;
30
+ /**
31
+ * Create or update a version file with the latestversion tag.
32
+ */
33
+ private updateLatestVersion;
34
+ /**
35
+ * Compare two major version strings.
36
+ */
37
+ private compareMajorVersions;
38
+ }
39
+ //# sourceMappingURL=oss-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oss-provider.d.ts","sourceRoot":"","sources":["../../src/providers/oss-provider.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EACL,SAAS,EACT,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,WAAW,EACX,gBAAgB,EACjB,MAAM,UAAU,CAAC;AAalB;;;GAGG;AACH,qBAAa,WAAY,SAAQ,eAAe;IAC9C,OAAO,CAAC,MAAM,CAAM;gBAER,MAAM,EAAE,SAAS;IAmBvB,WAAW,CAAC,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAsCvE,iBAAiB,CACrB,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,gBAAgB,EAAE,CAAC;IA2ExB,gBAAgB,CACpB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,WAAW,CAAC;IA0BjB,iBAAiB,CACrB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,WAAW,EAAE,CAAC;IA4CnB,aAAa,CACjB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,GAClC,OAAO,CAAC,YAAY,EAAE,CAAC;IAoCpB,cAAc,CAClB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC;IAeV,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAazE,gBAAgB,CACpB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC;IAShB;;OAEG;YACW,mBAAmB;IA4BjC;;OAEG;YACW,yBAAyB;IAiBvC;;OAEG;YACW,mBAAmB;IA2BjC;;OAEG;IACH,OAAO,CAAC,oBAAoB;CAY7B"}