@kevisual/oss 0.0.16 → 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.
@@ -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 };