@kevisual/oss 0.0.15 → 0.0.17
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/dist/index.d.ts +255 -152
- package/dist/index.js +36502 -111
- package/dist/services.d.ts +428 -0
- package/dist/services.js +36791 -0
- package/package.json +13 -17
- package/src/core/core.ts +244 -0
- package/src/index.ts +1 -244
- package/src/s3/core.ts +24 -8
- package/src/services/config.ts +2 -2
- package/src/test/common.ts +1 -1
- package/src/test/test-s3.ts +3 -1
- package/dist/services/config.d.ts +0 -190
- package/dist/services/config.js +0 -358
- package/dist/services/index.d.ts +0 -235
- package/dist/services/index.js +0 -421
|
@@ -0,0 +1,428 @@
|
|
|
1
|
+
import * as _aws_sdk_client_s3 from '@aws-sdk/client-s3';
|
|
2
|
+
import { CopyObjectCommandOutput, S3Client, GetObjectCommandOutput } from '@aws-sdk/client-s3';
|
|
3
|
+
import { Readable } from 'node:stream';
|
|
4
|
+
import { ServerResponse } from 'node:http';
|
|
5
|
+
import { ItemBucketMetadata as ItemBucketMetadata$1, Client } from 'minio';
|
|
6
|
+
|
|
7
|
+
type ItemBucketMetadata = Record<string, string>;
|
|
8
|
+
type UploadedObjectInfo$1 = {
|
|
9
|
+
etag: string;
|
|
10
|
+
lastModified?: Date;
|
|
11
|
+
size?: number;
|
|
12
|
+
versionId: string;
|
|
13
|
+
metadata?: ItemBucketMetadata;
|
|
14
|
+
};
|
|
15
|
+
type StatObjectResult$1 = {
|
|
16
|
+
size: number;
|
|
17
|
+
etag: string;
|
|
18
|
+
lastModified: Date;
|
|
19
|
+
metaData: ItemBucketMetadata;
|
|
20
|
+
versionId?: string | null;
|
|
21
|
+
};
|
|
22
|
+
type ListFileObject$1 = {
|
|
23
|
+
name: string;
|
|
24
|
+
size: number;
|
|
25
|
+
lastModified: Date;
|
|
26
|
+
etag: string;
|
|
27
|
+
};
|
|
28
|
+
type ListDirectoryObject$1 = {
|
|
29
|
+
prefix: string;
|
|
30
|
+
size: number;
|
|
31
|
+
};
|
|
32
|
+
type ListObjectResult$1 = ListFileObject$1 | ListDirectoryObject$1;
|
|
33
|
+
interface OssBaseOperation$1 {
|
|
34
|
+
prefix: string;
|
|
35
|
+
/**
|
|
36
|
+
* 设置前缀
|
|
37
|
+
* @param prefix 前缀
|
|
38
|
+
*/
|
|
39
|
+
setPrefix(prefix: string): void;
|
|
40
|
+
/**
|
|
41
|
+
* 获取对象
|
|
42
|
+
* @param objectName 对象名
|
|
43
|
+
*/
|
|
44
|
+
getObject(objectName: string): Promise<any>;
|
|
45
|
+
/**
|
|
46
|
+
* 获取对象内容为字符串
|
|
47
|
+
* @param objectName 对象名
|
|
48
|
+
*/
|
|
49
|
+
getObjectAsString?(objectName: string): Promise<string>;
|
|
50
|
+
/**
|
|
51
|
+
* 获取对象内容为 JSON
|
|
52
|
+
* @param objectName 对象名
|
|
53
|
+
*/
|
|
54
|
+
getJson?(objectName: string): Promise<Record<string, any>>;
|
|
55
|
+
/**
|
|
56
|
+
* 上传对象
|
|
57
|
+
* @param objectName 对象名
|
|
58
|
+
* @param data 数据
|
|
59
|
+
* @param metaData 元数据
|
|
60
|
+
* @param opts 选项
|
|
61
|
+
*/
|
|
62
|
+
putObject(objectName: string, data: Buffer | string | Object | Readable, metaData?: ItemBucketMetadata, opts?: {
|
|
63
|
+
check?: boolean;
|
|
64
|
+
isStream?: boolean;
|
|
65
|
+
size?: number;
|
|
66
|
+
contentType?: string;
|
|
67
|
+
}): Promise<UploadedObjectInfo$1>;
|
|
68
|
+
/**
|
|
69
|
+
* 上传文件
|
|
70
|
+
* @param objectName 对象名
|
|
71
|
+
* @param filePath 文件路径
|
|
72
|
+
* @param metaData 元数据
|
|
73
|
+
*/
|
|
74
|
+
fPutObject(objectName: string, filePath: string, metaData?: ItemBucketMetadata): Promise<UploadedObjectInfo$1>;
|
|
75
|
+
/**
|
|
76
|
+
* 获取对象信息
|
|
77
|
+
* @param objectName 对象名
|
|
78
|
+
* @param checkFile 是否检查文件存在(不存在返回null而非抛错)
|
|
79
|
+
*/
|
|
80
|
+
statObject(objectName: string, checkFile?: boolean): Promise<StatObjectResult$1 | null>;
|
|
81
|
+
/**
|
|
82
|
+
* 删除对象
|
|
83
|
+
* @param objectName 对象名
|
|
84
|
+
*/
|
|
85
|
+
deleteObject(objectName: string): Promise<any>;
|
|
86
|
+
/**
|
|
87
|
+
* 列出对象
|
|
88
|
+
* @param objectName 前缀
|
|
89
|
+
* @param opts 选项
|
|
90
|
+
*/
|
|
91
|
+
listObjects(objectName: string, opts?: {
|
|
92
|
+
/** 是否递归 */
|
|
93
|
+
recursive?: boolean;
|
|
94
|
+
/** 开始位置 */
|
|
95
|
+
startAfter?: string;
|
|
96
|
+
/** 最大返回数量 */
|
|
97
|
+
maxKeys?: number;
|
|
98
|
+
}): Promise<ListObjectResult$1[]>;
|
|
99
|
+
/**
|
|
100
|
+
* 获取完整的对象名称
|
|
101
|
+
* @param objectName 对象名
|
|
102
|
+
*/
|
|
103
|
+
getObjectName?(objectName: string): string;
|
|
104
|
+
/**
|
|
105
|
+
* 检查文件hash是否一致
|
|
106
|
+
* @param objectName 对象名
|
|
107
|
+
* @param hash hash值
|
|
108
|
+
* @param meta 元数据
|
|
109
|
+
*/
|
|
110
|
+
checkObjectHash?(objectName: string, hash: string, meta?: ItemBucketMetadata): Promise<{
|
|
111
|
+
success: boolean;
|
|
112
|
+
metaData: ItemBucketMetadata | null;
|
|
113
|
+
obj: StatObjectResult$1 | null;
|
|
114
|
+
equalMeta?: boolean;
|
|
115
|
+
}>;
|
|
116
|
+
/**
|
|
117
|
+
* 获取元数据
|
|
118
|
+
* @param pathname 路径名
|
|
119
|
+
* @param meta 元数据
|
|
120
|
+
*/
|
|
121
|
+
getMetadata?(pathname: string, meta?: ItemBucketMetadata): ItemBucketMetadata;
|
|
122
|
+
/**
|
|
123
|
+
* 复制对象
|
|
124
|
+
* @param sourceObject 源对象
|
|
125
|
+
* @param targetObject 目标对象
|
|
126
|
+
*/
|
|
127
|
+
copyObject(sourceObject: string, targetObject: string): Promise<CopyObjectCommandOutput>;
|
|
128
|
+
/**
|
|
129
|
+
* 替换对象元数据
|
|
130
|
+
* @param objectName 对象名
|
|
131
|
+
* @param meta 新元数据
|
|
132
|
+
*/
|
|
133
|
+
replaceObject?(objectName: string, meta: ItemBucketMetadata): Promise<any>;
|
|
134
|
+
}
|
|
135
|
+
interface OssService$1 extends OssBaseOperation$1 {
|
|
136
|
+
owner: string;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
type OssBaseOptions<T = {
|
|
140
|
+
[key: string]: any;
|
|
141
|
+
}> = {
|
|
142
|
+
/**
|
|
143
|
+
* 已经初始化好的 S3Client
|
|
144
|
+
*/
|
|
145
|
+
client: S3Client;
|
|
146
|
+
/**
|
|
147
|
+
* 桶名
|
|
148
|
+
*/
|
|
149
|
+
bucketName: string;
|
|
150
|
+
/**
|
|
151
|
+
* 前缀
|
|
152
|
+
*/
|
|
153
|
+
prefix?: string;
|
|
154
|
+
} & T;
|
|
155
|
+
declare class OssBase implements OssBaseOperation$1 {
|
|
156
|
+
client: S3Client;
|
|
157
|
+
bucketName: string;
|
|
158
|
+
prefix: string;
|
|
159
|
+
/**
|
|
160
|
+
* 计算字符串或者对象的的md5值
|
|
161
|
+
*/
|
|
162
|
+
hash: (str: string | Buffer | Object) => string;
|
|
163
|
+
constructor(opts: OssBaseOptions);
|
|
164
|
+
setPrefix(prefix: string): void;
|
|
165
|
+
/**
|
|
166
|
+
* 获取对象
|
|
167
|
+
* @param objectName 对象名
|
|
168
|
+
*/
|
|
169
|
+
getObject(objectName: string): Promise<GetObjectCommandOutput>;
|
|
170
|
+
/**
|
|
171
|
+
* 获取对象内容为字符串
|
|
172
|
+
* @param objectName 对象名
|
|
173
|
+
*/
|
|
174
|
+
getObjectAsString(objectName: string): Promise<string>;
|
|
175
|
+
/**
|
|
176
|
+
* 获取对象内容为 JSON
|
|
177
|
+
* @param objectName 对象名
|
|
178
|
+
*/
|
|
179
|
+
getJson(objectName: string): Promise<Record<string, any>>;
|
|
180
|
+
/**
|
|
181
|
+
* 上传对象
|
|
182
|
+
* @param objectName 对象名
|
|
183
|
+
* @param data 数据
|
|
184
|
+
* @param metaData 元数据
|
|
185
|
+
* @param opts 选项
|
|
186
|
+
*/
|
|
187
|
+
putObject(objectName: string, data: Buffer | string | Object | Readable, metaData?: ItemBucketMetadata, opts?: {
|
|
188
|
+
check?: boolean;
|
|
189
|
+
isStream?: boolean;
|
|
190
|
+
size?: number;
|
|
191
|
+
contentType?: string;
|
|
192
|
+
}): Promise<UploadedObjectInfo$1>;
|
|
193
|
+
/**
|
|
194
|
+
* 上传文件
|
|
195
|
+
* @param objectName 对象名
|
|
196
|
+
* @param filePath 文件路径
|
|
197
|
+
* @param metaData 元数据
|
|
198
|
+
*/
|
|
199
|
+
fPutObject(objectName: string, filePath: string, metaData?: ItemBucketMetadata): Promise<UploadedObjectInfo$1>;
|
|
200
|
+
/**
|
|
201
|
+
* 删除对象
|
|
202
|
+
* @param objectName 对象名
|
|
203
|
+
*/
|
|
204
|
+
deleteObject(objectName: string): Promise<void>;
|
|
205
|
+
deleteObjects(objectNameList: string[]): Promise<void>;
|
|
206
|
+
/**
|
|
207
|
+
* 列出对象
|
|
208
|
+
* @param objectName 前缀
|
|
209
|
+
* @param opts 选项
|
|
210
|
+
*/
|
|
211
|
+
listObjects<IS_FILE = false>(objectName: string, opts?: {
|
|
212
|
+
recursive?: boolean;
|
|
213
|
+
startAfter?: string;
|
|
214
|
+
maxKeys?: number;
|
|
215
|
+
}): Promise<IS_FILE extends true ? ListFileObject$1[] : ListObjectResult$1[]>;
|
|
216
|
+
/**
|
|
217
|
+
* 获取对象信息
|
|
218
|
+
* @param objectName 对象名
|
|
219
|
+
* @param checkFile 是否检查文件存在(不存在返回null而非抛错)
|
|
220
|
+
*/
|
|
221
|
+
statObject(objectName: string, checkFile?: boolean): Promise<StatObjectResult$1 | null>;
|
|
222
|
+
/**
|
|
223
|
+
* 获取完整的对象名称
|
|
224
|
+
* @param objectName 对象名
|
|
225
|
+
*/
|
|
226
|
+
getObjectName(objectName: string): string;
|
|
227
|
+
/**
|
|
228
|
+
* 检查文件hash是否一致
|
|
229
|
+
* @param objectName 对象名
|
|
230
|
+
* @param hash hash值
|
|
231
|
+
* @param meta 元数据
|
|
232
|
+
*/
|
|
233
|
+
checkObjectHash(objectName: string, hash: string, meta?: ItemBucketMetadata): Promise<{
|
|
234
|
+
success: boolean;
|
|
235
|
+
metaData: ItemBucketMetadata | null;
|
|
236
|
+
obj: StatObjectResult$1 | null;
|
|
237
|
+
equalMeta?: boolean;
|
|
238
|
+
}>;
|
|
239
|
+
/**
|
|
240
|
+
* 获取元数据
|
|
241
|
+
* @param pathname 路径名
|
|
242
|
+
* @param meta 元数据
|
|
243
|
+
*/
|
|
244
|
+
getMetadata(pathname: string, meta?: ItemBucketMetadata): ItemBucketMetadata;
|
|
245
|
+
/**
|
|
246
|
+
* 复制对象
|
|
247
|
+
* @param sourceObject 源对象
|
|
248
|
+
* @param targetObject 目标对象
|
|
249
|
+
*/
|
|
250
|
+
copyObject(sourceObject: string, targetObject: string): Promise<any>;
|
|
251
|
+
/**
|
|
252
|
+
* 替换对象元数据
|
|
253
|
+
* @param objectName 对象名
|
|
254
|
+
* @param meta 新元数据
|
|
255
|
+
*/
|
|
256
|
+
replaceObject(objectName: string, meta: ItemBucketMetadata): Promise<any>;
|
|
257
|
+
/**
|
|
258
|
+
* 创建实例
|
|
259
|
+
*/
|
|
260
|
+
static create<T extends OssBase, U>(this: new (opts: OssBaseOptions<U>) => T, opts: OssBaseOptions<U>): T;
|
|
261
|
+
/**
|
|
262
|
+
* 从已有实例创建
|
|
263
|
+
*/
|
|
264
|
+
static fromBase<T extends OssBase, U>(this: new (opts: OssBaseOptions<U>) => T, createOpts: {
|
|
265
|
+
oss: OssBase;
|
|
266
|
+
opts: Partial<OssBaseOptions<U>>;
|
|
267
|
+
}): T;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
declare class ConfigOssService extends OssBase implements OssService$1 {
|
|
271
|
+
owner: string;
|
|
272
|
+
constructor(opts: OssBaseOptions<{
|
|
273
|
+
owner: string;
|
|
274
|
+
}>);
|
|
275
|
+
listAllFile(): Promise<ListFileObject$1[]>;
|
|
276
|
+
listAll(): Promise<ListObjectResult$1[]>;
|
|
277
|
+
configMap: Map<string, any>;
|
|
278
|
+
keys: string[];
|
|
279
|
+
getAllConfigJson(): Promise<ListFileObject$1[]>;
|
|
280
|
+
isEndWithJson(string: string): boolean;
|
|
281
|
+
putJsonObject(key: string, data: any): Promise<UploadedObjectInfo$1>;
|
|
282
|
+
getObjectList(objectNameList: string[]): Promise<Map<string, Record<string, any>>>;
|
|
283
|
+
getList(): Promise<{
|
|
284
|
+
list: {
|
|
285
|
+
key: string;
|
|
286
|
+
name: string;
|
|
287
|
+
size: number;
|
|
288
|
+
lastModified: Date;
|
|
289
|
+
etag: string;
|
|
290
|
+
}[];
|
|
291
|
+
keys: string[];
|
|
292
|
+
keyEtagMap: Map<string, string>;
|
|
293
|
+
}>;
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
/**
|
|
297
|
+
* 过滤 metaData 中的 key, 去除 password, accesskey, secretkey,
|
|
298
|
+
* 并返回过滤后的 metaData
|
|
299
|
+
* @param metaData
|
|
300
|
+
* @returns
|
|
301
|
+
*/
|
|
302
|
+
declare const filterMetaDataKeys: (metaData: Record<string, string>, clearKeys?: string[]) => Record<string, string>;
|
|
303
|
+
type SendObjectOptions = {
|
|
304
|
+
res: ServerResponse;
|
|
305
|
+
client: OssBase;
|
|
306
|
+
objectName: string;
|
|
307
|
+
isDownload?: boolean;
|
|
308
|
+
};
|
|
309
|
+
declare const NotFoundFile: (res: ServerResponse, msg?: string, code?: number) => void;
|
|
310
|
+
declare const sendObject: ({ res, objectName, client, isDownload }: SendObjectOptions) => Promise<void>;
|
|
311
|
+
declare const downloadObject: ({ objectName, client, filePath }: Pick<SendObjectOptions, "objectName" | "client"> & {
|
|
312
|
+
filePath: string;
|
|
313
|
+
}) => Promise<_aws_sdk_client_s3.GetObjectCommandOutput>;
|
|
314
|
+
|
|
315
|
+
/**
|
|
316
|
+
* 计算字符串的md5值
|
|
317
|
+
* @param str
|
|
318
|
+
* @returns
|
|
319
|
+
*/
|
|
320
|
+
declare const hash: (str: string | Buffer | Object) => string;
|
|
321
|
+
declare const hashSringify: (str: Object) => string;
|
|
322
|
+
|
|
323
|
+
declare const getContentType: (filePath: string) => any;
|
|
324
|
+
|
|
325
|
+
declare const standardHeaderKeys: string[];
|
|
326
|
+
type StandardHeaders = {
|
|
327
|
+
ContentType?: string;
|
|
328
|
+
CacheControl?: string;
|
|
329
|
+
ContentDisposition?: string;
|
|
330
|
+
ContentEncoding?: string;
|
|
331
|
+
ContentLanguage?: string;
|
|
332
|
+
Expires?: Date;
|
|
333
|
+
};
|
|
334
|
+
/**
|
|
335
|
+
* 从元数据中提取标准头部和自定义元数据
|
|
336
|
+
* @param metaData 原始元数据
|
|
337
|
+
* @returns 标准头部和自定义元数据
|
|
338
|
+
*/
|
|
339
|
+
declare function extractStandardHeaders(metaData: Record<string, string>): {
|
|
340
|
+
standardHeaders: StandardHeaders;
|
|
341
|
+
customMetadata: Record<string, string>;
|
|
342
|
+
};
|
|
343
|
+
|
|
344
|
+
type UploadedObjectInfo = {
|
|
345
|
+
etag: string;
|
|
346
|
+
lastModified?: Date;
|
|
347
|
+
size?: number;
|
|
348
|
+
versionId: string;
|
|
349
|
+
metadata?: ItemBucketMetadata$1;
|
|
350
|
+
};
|
|
351
|
+
type StatObjectResult = {
|
|
352
|
+
size: number;
|
|
353
|
+
etag: string;
|
|
354
|
+
lastModified: Date;
|
|
355
|
+
metaData: ItemBucketMetadata$1;
|
|
356
|
+
versionId?: string | null;
|
|
357
|
+
};
|
|
358
|
+
type ListFileObject = {
|
|
359
|
+
name: string;
|
|
360
|
+
size: number;
|
|
361
|
+
lastModified: Date;
|
|
362
|
+
etag: string;
|
|
363
|
+
};
|
|
364
|
+
type ListDirectoryObject = {
|
|
365
|
+
prefix: string;
|
|
366
|
+
size: number;
|
|
367
|
+
};
|
|
368
|
+
type ListObjectResult = ListFileObject | ListDirectoryObject;
|
|
369
|
+
interface OssBaseOperation {
|
|
370
|
+
prefix: string;
|
|
371
|
+
setPrefix(prefix: string): void;
|
|
372
|
+
/**
|
|
373
|
+
* 获取对象
|
|
374
|
+
* @param objectName 对象名
|
|
375
|
+
*/
|
|
376
|
+
getObject(objectName: string): Promise<any>;
|
|
377
|
+
/**
|
|
378
|
+
* 上传对象
|
|
379
|
+
* @param objectName 对象名
|
|
380
|
+
* @param data 数据
|
|
381
|
+
*/
|
|
382
|
+
putObject(objectName: string, data: Buffer | string, metaData?: ItemBucketMetadata$1): Promise<UploadedObjectInfo>;
|
|
383
|
+
/**
|
|
384
|
+
* 上传文件
|
|
385
|
+
* @param objectName 对象名
|
|
386
|
+
* @param filePath 文件路径
|
|
387
|
+
*/
|
|
388
|
+
fPutObject(objectName: string, filePath: string, metaData?: ItemBucketMetadata$1): Promise<UploadedObjectInfo>;
|
|
389
|
+
/**
|
|
390
|
+
* 获取对象信息
|
|
391
|
+
* @param objectName 对象名
|
|
392
|
+
*/
|
|
393
|
+
statObject(objectName: string): Promise<StatObjectResult>;
|
|
394
|
+
/**
|
|
395
|
+
* 删除对象
|
|
396
|
+
* @param objectName 对象名
|
|
397
|
+
*/
|
|
398
|
+
deleteObject(objectName: string): Promise<any>;
|
|
399
|
+
/**
|
|
400
|
+
* 列出对象
|
|
401
|
+
* @param objectName 对象名
|
|
402
|
+
* @param opts 选项
|
|
403
|
+
* @param opts.recursive 是否递归
|
|
404
|
+
* @param opts.startAfter 开始位置
|
|
405
|
+
*/
|
|
406
|
+
listObjects(objectName: string, opts?: {
|
|
407
|
+
/**
|
|
408
|
+
* 是否递归
|
|
409
|
+
*/
|
|
410
|
+
recursive?: boolean;
|
|
411
|
+
/**
|
|
412
|
+
* 开始位置
|
|
413
|
+
*/
|
|
414
|
+
startAfter?: string;
|
|
415
|
+
}): Promise<ListObjectResult[]>;
|
|
416
|
+
/**
|
|
417
|
+
* 复制对象
|
|
418
|
+
* @param sourceObject 源对象
|
|
419
|
+
* @param targetObject 目标对象
|
|
420
|
+
*/
|
|
421
|
+
copyObject: Client['copyObject'];
|
|
422
|
+
}
|
|
423
|
+
interface OssService extends OssBaseOperation {
|
|
424
|
+
owner: string;
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
export { ConfigOssService, NotFoundFile, OssBase, downloadObject, extractStandardHeaders, filterMetaDataKeys, getContentType, hash, hashSringify, sendObject, standardHeaderKeys };
|
|
428
|
+
export type { ListDirectoryObject, ListFileObject, ListObjectResult, OssBaseOperation, OssBaseOptions, OssService, StandardHeaders, StatObjectResult, UploadedObjectInfo };
|