@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.
- package/README.md +165 -0
- package/dist/artifact-client.d.ts +112 -0
- package/dist/artifact-client.d.ts.map +1 -0
- package/dist/artifact-client.js +167 -0
- package/dist/artifact-client.js.map +1 -0
- package/dist/cli/config-manager.d.ts +27 -0
- package/dist/cli/config-manager.d.ts.map +1 -0
- package/dist/cli/config-manager.js +107 -0
- package/dist/cli/config-manager.js.map +1 -0
- package/dist/cli/setup.d.ts +7 -0
- package/dist/cli/setup.d.ts.map +1 -0
- package/dist/cli/setup.js +366 -0
- package/dist/cli/setup.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +7 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/providers/azure-provider.d.ts +40 -0
- package/dist/providers/azure-provider.d.ts.map +1 -0
- package/dist/providers/azure-provider.js +336 -0
- package/dist/providers/azure-provider.js.map +1 -0
- package/dist/providers/oss-provider.d.ts +39 -0
- package/dist/providers/oss-provider.d.ts.map +1 -0
- package/dist/providers/oss-provider.js +342 -0
- package/dist/providers/oss-provider.js.map +1 -0
- package/dist/providers/storage-provider.d.ts +50 -0
- package/dist/providers/storage-provider.d.ts.map +1 -0
- package/dist/providers/storage-provider.js +11 -0
- package/dist/providers/storage-provider.js.map +1 -0
- package/dist/types.d.ts +62 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/format.d.ts +9 -0
- package/dist/utils/format.d.ts.map +1 -0
- package/dist/utils/format.js +17 -0
- package/dist/utils/format.js.map +1 -0
- package/dist/utils/semver.d.ts +46 -0
- package/dist/utils/semver.d.ts.map +1 -0
- package/dist/utils/semver.js +112 -0
- package/dist/utils/semver.js.map +1 -0
- package/package.json +43 -0
|
@@ -0,0 +1,366 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createProgram = createProgram;
|
|
4
|
+
const commander_1 = require("commander");
|
|
5
|
+
const artifact_client_1 = require("../artifact-client");
|
|
6
|
+
const config_manager_1 = require("./config-manager");
|
|
7
|
+
/**
|
|
8
|
+
* Build and configure the CLI program.
|
|
9
|
+
* Returns the configured Command instance.
|
|
10
|
+
*/
|
|
11
|
+
function createProgram() {
|
|
12
|
+
const program = new commander_1.Command();
|
|
13
|
+
program
|
|
14
|
+
.name('afm')
|
|
15
|
+
.description('Manage artifacts on Azure Storage and Aliyun OSS')
|
|
16
|
+
.version('1.0.0');
|
|
17
|
+
// ============================================================
|
|
18
|
+
// Azure commands
|
|
19
|
+
// ============================================================
|
|
20
|
+
const azProgram = new commander_1.Command('az')
|
|
21
|
+
.description('Azure Storage operations');
|
|
22
|
+
addSharedCommands(azProgram, 'az');
|
|
23
|
+
program.addCommand(azProgram);
|
|
24
|
+
// ============================================================
|
|
25
|
+
// OSS commands
|
|
26
|
+
// ============================================================
|
|
27
|
+
const ossProgram = new commander_1.Command('oss')
|
|
28
|
+
.description('Aliyun OSS operations');
|
|
29
|
+
addSharedCommands(ossProgram, 'oss');
|
|
30
|
+
program.addCommand(ossProgram);
|
|
31
|
+
return program;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Add shared commands to a storage-specific program ('az' or 'oss').
|
|
35
|
+
*/
|
|
36
|
+
function addSharedCommands(program, type) {
|
|
37
|
+
// --- login ---
|
|
38
|
+
program
|
|
39
|
+
.command('login')
|
|
40
|
+
.description('Save authentication credentials to local config')
|
|
41
|
+
.option('--sasurl <url>', 'Azure SAS URL (az only)')
|
|
42
|
+
.option('--keyid <id>', 'OSS Key ID (oss only)')
|
|
43
|
+
.option('--key <key>', 'OSS Key Secret (oss only)')
|
|
44
|
+
.option('--bucket <bucket>', 'OSS bucket name (oss only)')
|
|
45
|
+
.option('--region <region>', 'OSS region (oss only)')
|
|
46
|
+
.action((options) => {
|
|
47
|
+
if (type === 'az') {
|
|
48
|
+
if (!options.sasurl) {
|
|
49
|
+
console.error('Error: --sasurl is required for Azure login.');
|
|
50
|
+
process.exit(1);
|
|
51
|
+
}
|
|
52
|
+
(0, config_manager_1.saveAzureConfig)({ sasUrl: options.sasurl });
|
|
53
|
+
console.log('Azure credentials saved to ' + (0, config_manager_1.getConfigPath)());
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
if (!options.keyid || !options.key) {
|
|
57
|
+
console.error('Error: --keyid and --key are required for OSS login.');
|
|
58
|
+
process.exit(1);
|
|
59
|
+
}
|
|
60
|
+
(0, config_manager_1.saveOSSConfig)({
|
|
61
|
+
keyId: options.keyid,
|
|
62
|
+
key: options.key,
|
|
63
|
+
bucket: options.bucket,
|
|
64
|
+
region: options.region,
|
|
65
|
+
});
|
|
66
|
+
console.log('OSS credentials saved to ' + (0, config_manager_1.getConfigPath)());
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
// --- config ---
|
|
70
|
+
program
|
|
71
|
+
.command('config')
|
|
72
|
+
.description('Manage stored configuration')
|
|
73
|
+
.argument('[action]', 'Action: show (default) or clear', 'show')
|
|
74
|
+
.action((action) => {
|
|
75
|
+
const config = (0, config_manager_1.readConfig)();
|
|
76
|
+
const target = config[type];
|
|
77
|
+
switch (action) {
|
|
78
|
+
case 'clear':
|
|
79
|
+
if (type === 'az') {
|
|
80
|
+
delete config.az;
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
delete config.oss;
|
|
84
|
+
}
|
|
85
|
+
(0, config_manager_1.writeConfig)(config);
|
|
86
|
+
console.log(`${type.toUpperCase()} config cleared.`);
|
|
87
|
+
break;
|
|
88
|
+
case 'show':
|
|
89
|
+
default:
|
|
90
|
+
if (target) {
|
|
91
|
+
console.log(JSON.stringify(target, null, 2));
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
console.log(`No ${type.toUpperCase()} config found.`);
|
|
95
|
+
}
|
|
96
|
+
break;
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
// --- list-plugins ---
|
|
100
|
+
program
|
|
101
|
+
.command('list-plugins')
|
|
102
|
+
.description('List all plugins')
|
|
103
|
+
.option('--size', 'Include total storage size in MB')
|
|
104
|
+
.option('--sasurl <url>', 'Azure SAS URL')
|
|
105
|
+
.option('--keyid <id>', 'OSS Key ID')
|
|
106
|
+
.option('--key <key>', 'OSS Key Secret')
|
|
107
|
+
.option('--bucket <bucket>', 'OSS bucket')
|
|
108
|
+
.option('--region <region>', 'OSS region')
|
|
109
|
+
.action(async (options) => {
|
|
110
|
+
const client = createClient(type, options);
|
|
111
|
+
try {
|
|
112
|
+
const plugins = await client.listPlugins({ includeSize: options.size });
|
|
113
|
+
if (plugins.length === 0) {
|
|
114
|
+
console.log('No plugins found.');
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
for (const p of plugins) {
|
|
118
|
+
if (options.size && p.totalSizeMB !== undefined) {
|
|
119
|
+
console.log(`${p.name}\t${p.totalSizeMB.toFixed(2)} MB\t${p.path}`);
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
console.log(`${p.name}\t${p.path}`);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
catch (err) {
|
|
127
|
+
console.error('Error:', err.message);
|
|
128
|
+
process.exit(1);
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
// --- list-majors ---
|
|
132
|
+
program
|
|
133
|
+
.command('list-majors')
|
|
134
|
+
.description('List major versions for a plugin')
|
|
135
|
+
.argument('<plugin>', 'Plugin name')
|
|
136
|
+
.option('--size', 'Include total storage size in MB')
|
|
137
|
+
.option('--sort <order>', 'Sort order: asc or desc', 'desc')
|
|
138
|
+
.option('--sasurl <url>', 'Azure SAS URL')
|
|
139
|
+
.option('--keyid <id>', 'OSS Key ID')
|
|
140
|
+
.option('--key <key>', 'OSS Key Secret')
|
|
141
|
+
.option('--bucket <bucket>', 'OSS bucket')
|
|
142
|
+
.option('--region <region>', 'OSS region')
|
|
143
|
+
.action(async (plugin, options) => {
|
|
144
|
+
const client = createClient(type, options);
|
|
145
|
+
try {
|
|
146
|
+
const majors = await client.listMajorVersions(plugin, {
|
|
147
|
+
includeSize: options.size,
|
|
148
|
+
sortOrder: options.sort,
|
|
149
|
+
});
|
|
150
|
+
if (majors.length === 0) {
|
|
151
|
+
console.log(`No major versions found for plugin "${plugin}".`);
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
for (const m of majors) {
|
|
155
|
+
const parts = [m.majorVersion];
|
|
156
|
+
if (m.latestVersion)
|
|
157
|
+
parts.push(`(latest: ${m.latestVersion})`);
|
|
158
|
+
parts.push(`minors: ${m.minorCount}`);
|
|
159
|
+
if (options.size && m.totalSizeMB !== undefined) {
|
|
160
|
+
parts.push(`${m.totalSizeMB.toFixed(2)} MB`);
|
|
161
|
+
}
|
|
162
|
+
parts.push(m.path);
|
|
163
|
+
console.log(parts.join('\t'));
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
catch (err) {
|
|
167
|
+
console.error('Error:', err.message);
|
|
168
|
+
process.exit(1);
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
// --- get-latest ---
|
|
172
|
+
program
|
|
173
|
+
.command('get-latest')
|
|
174
|
+
.description('Get the latest minor version for a major version')
|
|
175
|
+
.argument('<plugin>', 'Plugin name')
|
|
176
|
+
.argument('<major>', 'Major version (e.g., "1.0" or "dev")')
|
|
177
|
+
.option('--size', 'Include total storage size in MB')
|
|
178
|
+
.option('--sasurl <url>', 'Azure SAS URL')
|
|
179
|
+
.option('--keyid <id>', 'OSS Key ID')
|
|
180
|
+
.option('--key <key>', 'OSS Key Secret')
|
|
181
|
+
.option('--bucket <bucket>', 'OSS bucket')
|
|
182
|
+
.option('--region <region>', 'OSS region')
|
|
183
|
+
.action(async (plugin, major, options) => {
|
|
184
|
+
const client = createClient(type, options);
|
|
185
|
+
try {
|
|
186
|
+
const info = await client.getLatestVersion(plugin, major, { includeSize: options.size });
|
|
187
|
+
const parts = [info.version, info.path];
|
|
188
|
+
if (options.size && info.totalSizeMB !== undefined) {
|
|
189
|
+
parts.push(`${info.totalSizeMB.toFixed(2)} MB`);
|
|
190
|
+
}
|
|
191
|
+
console.log(parts.join('\t'));
|
|
192
|
+
}
|
|
193
|
+
catch (err) {
|
|
194
|
+
console.error('Error:', err.message);
|
|
195
|
+
process.exit(1);
|
|
196
|
+
}
|
|
197
|
+
});
|
|
198
|
+
// --- list-minors ---
|
|
199
|
+
program
|
|
200
|
+
.command('list-minors')
|
|
201
|
+
.description('List minor versions for a major version')
|
|
202
|
+
.argument('<plugin>', 'Plugin name')
|
|
203
|
+
.argument('<major>', 'Major version (e.g., "1.0" or "dev")')
|
|
204
|
+
.option('--size', 'Include total storage size in MB')
|
|
205
|
+
.option('--sort <order>', 'Sort order: asc or desc', 'desc')
|
|
206
|
+
.option('--sasurl <url>', 'Azure SAS URL')
|
|
207
|
+
.option('--keyid <id>', 'OSS Key ID')
|
|
208
|
+
.option('--key <key>', 'OSS Key Secret')
|
|
209
|
+
.option('--bucket <bucket>', 'OSS bucket')
|
|
210
|
+
.option('--region <region>', 'OSS region')
|
|
211
|
+
.action(async (plugin, major, options) => {
|
|
212
|
+
const client = createClient(type, options);
|
|
213
|
+
try {
|
|
214
|
+
const versions = await client.listMinorVersions(plugin, major, {
|
|
215
|
+
includeSize: options.size,
|
|
216
|
+
sortOrder: options.sort,
|
|
217
|
+
});
|
|
218
|
+
if (versions.length === 0) {
|
|
219
|
+
console.log(`No minor versions found for plugin "${plugin}" major "${major}".`);
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
for (const v of versions) {
|
|
223
|
+
const parts = [v.version];
|
|
224
|
+
if (options.size && v.totalSizeMB !== undefined) {
|
|
225
|
+
parts.push(`${v.totalSizeMB.toFixed(2)} MB`);
|
|
226
|
+
}
|
|
227
|
+
parts.push(v.path);
|
|
228
|
+
console.log(parts.join('\t'));
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
catch (err) {
|
|
232
|
+
console.error('Error:', err.message);
|
|
233
|
+
process.exit(1);
|
|
234
|
+
}
|
|
235
|
+
});
|
|
236
|
+
// --- list-artifacts ---
|
|
237
|
+
program
|
|
238
|
+
.command('list-artifacts')
|
|
239
|
+
.description('List all artifacts for a specific version')
|
|
240
|
+
.argument('<plugin>', 'Plugin name')
|
|
241
|
+
.argument('<version>', 'Full version (e.g., "1.0.5")')
|
|
242
|
+
.option('--size', 'Include file size in MB')
|
|
243
|
+
.option('--sasurl <url>', 'Azure SAS URL')
|
|
244
|
+
.option('--keyid <id>', 'OSS Key ID')
|
|
245
|
+
.option('--key <key>', 'OSS Key Secret')
|
|
246
|
+
.option('--bucket <bucket>', 'OSS bucket')
|
|
247
|
+
.option('--region <region>', 'OSS region')
|
|
248
|
+
.action(async (plugin, version, options) => {
|
|
249
|
+
const client = createClient(type, options);
|
|
250
|
+
try {
|
|
251
|
+
const artifacts = await client.listArtifacts(plugin, version, {
|
|
252
|
+
includeSize: options.size,
|
|
253
|
+
});
|
|
254
|
+
if (artifacts.length === 0) {
|
|
255
|
+
console.log(`No artifacts found for plugin "${plugin}" version "${version}".`);
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
258
|
+
for (const a of artifacts) {
|
|
259
|
+
const parts = [a.name];
|
|
260
|
+
if (options.size && a.sizeMB !== undefined) {
|
|
261
|
+
parts.push(`${a.sizeMB.toFixed(2)} MB`);
|
|
262
|
+
}
|
|
263
|
+
parts.push(a.path);
|
|
264
|
+
console.log(parts.join('\t'));
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
catch (err) {
|
|
268
|
+
console.error('Error:', err.message);
|
|
269
|
+
process.exit(1);
|
|
270
|
+
}
|
|
271
|
+
});
|
|
272
|
+
// --- upload ---
|
|
273
|
+
program
|
|
274
|
+
.command('upload')
|
|
275
|
+
.description('Upload an artifact to a plugin version')
|
|
276
|
+
.argument('<plugin>', 'Plugin name')
|
|
277
|
+
.argument('<version>', 'Version (e.g., "1.0.5")')
|
|
278
|
+
.argument('<artifact-name>', 'Artifact file name to store')
|
|
279
|
+
.argument('<local-file>', 'Local file path to upload')
|
|
280
|
+
.option('--sasurl <url>', 'Azure SAS URL')
|
|
281
|
+
.option('--keyid <id>', 'OSS Key ID')
|
|
282
|
+
.option('--key <key>', 'OSS Key Secret')
|
|
283
|
+
.option('--bucket <bucket>', 'OSS bucket')
|
|
284
|
+
.option('--region <region>', 'OSS region')
|
|
285
|
+
.action(async (plugin, version, artifactName, localFile, options) => {
|
|
286
|
+
const client = createClient(type, options);
|
|
287
|
+
try {
|
|
288
|
+
await client.uploadArtifact(plugin, version, artifactName, localFile);
|
|
289
|
+
console.log(`Uploaded: ${localFile} -> plugin_artifacts/${plugin}/${version}/${artifactName}`);
|
|
290
|
+
}
|
|
291
|
+
catch (err) {
|
|
292
|
+
console.error('Error:', err.message);
|
|
293
|
+
process.exit(1);
|
|
294
|
+
}
|
|
295
|
+
});
|
|
296
|
+
// --- download ---
|
|
297
|
+
program
|
|
298
|
+
.command('download')
|
|
299
|
+
.description('Download an artifact')
|
|
300
|
+
.option('--path <fullPath>', 'Full storage path of the artifact')
|
|
301
|
+
.option('--plugin <name>', 'Plugin name')
|
|
302
|
+
.option('--version <ver>', 'Version (e.g., "1.0.5")')
|
|
303
|
+
.option('--file <name>', 'Artifact file name')
|
|
304
|
+
.option('--out <dir>', 'Local output directory', './')
|
|
305
|
+
.option('--sasurl <url>', 'Azure SAS URL')
|
|
306
|
+
.option('--keyid <id>', 'OSS Key ID')
|
|
307
|
+
.option('--key <key>', 'OSS Key Secret')
|
|
308
|
+
.option('--bucket <bucket>', 'OSS bucket')
|
|
309
|
+
.option('--region <region>', 'OSS region')
|
|
310
|
+
.action(async (options) => {
|
|
311
|
+
const client = createClient(type, options);
|
|
312
|
+
try {
|
|
313
|
+
if (options.path) {
|
|
314
|
+
// Download by full path
|
|
315
|
+
await client.downloadArtifactByPath(options.path, options.out);
|
|
316
|
+
const fileName = options.path.split('/').pop();
|
|
317
|
+
console.log(`Downloaded: ${options.path} -> ${options.out}/${fileName}`);
|
|
318
|
+
}
|
|
319
|
+
else if (options.plugin && options.version && options.file) {
|
|
320
|
+
// Download by plugin + version + file
|
|
321
|
+
await client.downloadArtifact(options.plugin, options.version, options.file, options.out);
|
|
322
|
+
console.log(`Downloaded: plugin_artifacts/${options.plugin}/${options.version}/${options.file} -> ${options.out}/${options.file}`);
|
|
323
|
+
}
|
|
324
|
+
else {
|
|
325
|
+
console.error('Error: Specify either --path for full path download, or --plugin, --version, and --file.');
|
|
326
|
+
process.exit(1);
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
catch (err) {
|
|
330
|
+
console.error('Error:', err.message);
|
|
331
|
+
process.exit(1);
|
|
332
|
+
}
|
|
333
|
+
});
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* Create an ArtifactClient based on CLI options and stored config.
|
|
337
|
+
*/
|
|
338
|
+
function createClient(type, cliOptions) {
|
|
339
|
+
const storedConfig = (0, config_manager_1.readConfig)();
|
|
340
|
+
const stored = storedConfig[type];
|
|
341
|
+
if (type === 'az') {
|
|
342
|
+
const azStored = stored;
|
|
343
|
+
const sasUrl = cliOptions.sasurl || azStored?.sasUrl;
|
|
344
|
+
if (!sasUrl) {
|
|
345
|
+
console.error('Error: Azure SAS URL is required. Provide --sasurl or run "afm az login".');
|
|
346
|
+
process.exit(1);
|
|
347
|
+
}
|
|
348
|
+
return new artifact_client_1.ArtifactClient('az', { sasUrl });
|
|
349
|
+
}
|
|
350
|
+
else {
|
|
351
|
+
const ossStored = stored;
|
|
352
|
+
const keyId = cliOptions.keyid || ossStored?.keyId;
|
|
353
|
+
const key = cliOptions.key || ossStored?.key;
|
|
354
|
+
if (!keyId || !key) {
|
|
355
|
+
console.error('Error: OSS key ID and key are required. Provide --keyid and --key or run "afm oss login".');
|
|
356
|
+
process.exit(1);
|
|
357
|
+
}
|
|
358
|
+
return new artifact_client_1.ArtifactClient('oss', {
|
|
359
|
+
keyId,
|
|
360
|
+
key,
|
|
361
|
+
bucket: cliOptions.bucket || ossStored?.bucket,
|
|
362
|
+
region: cliOptions.region || ossStored?.region,
|
|
363
|
+
});
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
//# sourceMappingURL=setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|
package/dist/cli.js
ADDED
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;AAEA,uCAA4C;AAE5C,MAAM,OAAO,GAAG,IAAA,qBAAa,GAAE,CAAC;AAChC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { ArtifactClient } from './artifact-client';
|
|
2
|
+
export { StorageProvider } from './providers/storage-provider';
|
|
3
|
+
export { AzureProvider } from './providers/azure-provider';
|
|
4
|
+
export { OSSProvider } from './providers/oss-provider';
|
|
5
|
+
export { StorageType, AzureConfig, OSSConfig, StorageConfig, CLIConfig, PluginInfo, MajorVersionInfo, VersionInfo, ArtifactInfo, ListOptions, GetLatestOptions, } from './types';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EACL,WAAW,EACX,WAAW,EACX,SAAS,EACT,aAAa,EACb,SAAS,EACT,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,WAAW,EACX,gBAAgB,GACjB,MAAM,SAAS,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OSSProvider = exports.AzureProvider = exports.StorageProvider = exports.ArtifactClient = void 0;
|
|
4
|
+
// Library entry point
|
|
5
|
+
var artifact_client_1 = require("./artifact-client");
|
|
6
|
+
Object.defineProperty(exports, "ArtifactClient", { enumerable: true, get: function () { return artifact_client_1.ArtifactClient; } });
|
|
7
|
+
var storage_provider_1 = require("./providers/storage-provider");
|
|
8
|
+
Object.defineProperty(exports, "StorageProvider", { enumerable: true, get: function () { return storage_provider_1.StorageProvider; } });
|
|
9
|
+
var azure_provider_1 = require("./providers/azure-provider");
|
|
10
|
+
Object.defineProperty(exports, "AzureProvider", { enumerable: true, get: function () { return azure_provider_1.AzureProvider; } });
|
|
11
|
+
var oss_provider_1 = require("./providers/oss-provider");
|
|
12
|
+
Object.defineProperty(exports, "OSSProvider", { enumerable: true, get: function () { return oss_provider_1.OSSProvider; } });
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,sBAAsB;AACtB,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AACvB,iEAA+D;AAAtD,mHAAA,eAAe,OAAA;AACxB,6DAA2D;AAAlD,+GAAA,aAAa,OAAA;AACtB,yDAAuD;AAA9C,2GAAA,WAAW,OAAA"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { StorageProvider } from './storage-provider';
|
|
2
|
+
import { AzureConfig, PluginInfo, MajorVersionInfo, VersionInfo, ArtifactInfo, ListOptions, GetLatestOptions } from '../types';
|
|
3
|
+
/**
|
|
4
|
+
* Azure Blob Storage provider.
|
|
5
|
+
* Connects via SAS URL and operates within a single container.
|
|
6
|
+
*/
|
|
7
|
+
export declare class AzureProvider extends StorageProvider {
|
|
8
|
+
private containerClient;
|
|
9
|
+
constructor(config: AzureConfig);
|
|
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 blobs under a given prefix.
|
|
24
|
+
*/
|
|
25
|
+
private calculatePrefixSize;
|
|
26
|
+
/**
|
|
27
|
+
* Read the latestversion metadata from a version file.
|
|
28
|
+
* Returns null if the file does not exist or has no latestversion metadata.
|
|
29
|
+
*/
|
|
30
|
+
private readLatestVersionFromFile;
|
|
31
|
+
/**
|
|
32
|
+
* Create or update a version file with the latestversion metadata.
|
|
33
|
+
*/
|
|
34
|
+
private updateLatestVersion;
|
|
35
|
+
/**
|
|
36
|
+
* Compare two major version strings (e.g., "1.0" vs "2.3").
|
|
37
|
+
*/
|
|
38
|
+
private compareMajorVersions;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=azure-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"azure-provider.d.ts","sourceRoot":"","sources":["../../src/providers/azure-provider.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EACL,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,WAAW,EACX,gBAAgB,EACjB,MAAM,UAAU,CAAC;AAclB;;;GAGG;AACH,qBAAa,aAAc,SAAQ,eAAe;IAChD,OAAO,CAAC,eAAe,CAAkB;gBAE7B,MAAM,EAAE,WAAW;IASzB,WAAW,CAAC,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAmCvE,iBAAiB,CACrB,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,gBAAgB,EAAE,CAAC;IA0ExB,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;IA8CnB,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;IA+BpB,cAAc,CAClB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC;IAgBV,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBzE,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;IAYjC;;;OAGG;YACW,yBAAyB;IAkBvC;;OAEG;YACW,mBAAmB;IAkCjC;;OAEG;IACH,OAAO,CAAC,oBAAoB;CAY7B"}
|