@kevisual/oss 0.0.16 → 0.0.18

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,330 @@
1
+ import { CopyObjectCommandOutput, S3Client, GetObjectCommandOutput } from '@aws-sdk/client-s3';
2
+ import { Readable } from 'node:stream';
3
+
4
+ type ItemBucketMetadata = Record<string, string>;
5
+ type UploadedObjectInfo = {
6
+ etag: string;
7
+ lastModified?: Date;
8
+ size?: number;
9
+ versionId: string;
10
+ metadata?: ItemBucketMetadata;
11
+ };
12
+ type StatObjectResult = {
13
+ size: number;
14
+ etag: string;
15
+ lastModified: Date;
16
+ metaData: ItemBucketMetadata;
17
+ versionId?: string | null;
18
+ standardHeaders: {
19
+ contentType?: string;
20
+ cacheControl?: string;
21
+ contentDisposition?: string;
22
+ contentEncoding?: string;
23
+ contentLanguage?: string;
24
+ };
25
+ };
26
+ type ListFileObject = {
27
+ name: string;
28
+ size: number;
29
+ lastModified: Date;
30
+ etag: string;
31
+ };
32
+ type ListDirectoryObject = {
33
+ prefix: string;
34
+ size: number;
35
+ };
36
+ type ListObjectResult = ListFileObject | ListDirectoryObject;
37
+ interface OssBaseOperation {
38
+ prefix: string;
39
+ /**
40
+ * 设置前缀
41
+ * @param prefix 前缀
42
+ */
43
+ setPrefix(prefix: string): void;
44
+ /**
45
+ * 获取对象
46
+ * @param objectName 对象名
47
+ */
48
+ getObject(objectName: string): Promise<any>;
49
+ /**
50
+ * 获取对象内容为字符串
51
+ * @param objectName 对象名
52
+ */
53
+ getObjectAsString?(objectName: string): Promise<string>;
54
+ /**
55
+ * 获取对象内容为 JSON
56
+ * @param objectName 对象名
57
+ */
58
+ getJson?(objectName: string): Promise<Record<string, any>>;
59
+ /**
60
+ * 上传对象
61
+ * @param objectName 对象名
62
+ * @param data 数据
63
+ * @param metaData 元数据
64
+ * @param opts 选项
65
+ */
66
+ putObject(objectName: string, data: Buffer | string | Object | Readable, metaData?: ItemBucketMetadata, opts?: {
67
+ check?: boolean;
68
+ isStream?: boolean;
69
+ size?: number;
70
+ contentType?: string;
71
+ }): Promise<UploadedObjectInfo>;
72
+ /**
73
+ * 上传文件
74
+ * @param objectName 对象名
75
+ * @param filePath 文件路径
76
+ * @param metaData 元数据
77
+ */
78
+ fPutObject(objectName: string, filePath: string, metaData?: ItemBucketMetadata): Promise<UploadedObjectInfo>;
79
+ /**
80
+ * 获取对象信息
81
+ * @param objectName 对象名
82
+ * @param checkFile 是否检查文件存在(不存在返回null而非抛错)
83
+ */
84
+ statObject(objectName: string, checkFile?: boolean): Promise<StatObjectResult | null>;
85
+ /**
86
+ * 删除对象
87
+ * @param objectName 对象名
88
+ */
89
+ deleteObject(objectName: string): Promise<any>;
90
+ /**
91
+ * 列出对象
92
+ * @param objectName 前缀
93
+ * @param opts 选项
94
+ */
95
+ listObjects(objectName: string, opts?: {
96
+ /** 是否递归 */
97
+ recursive?: boolean;
98
+ /** 开始位置 */
99
+ startAfter?: string;
100
+ /** 最大返回数量 */
101
+ maxKeys?: number;
102
+ }): Promise<ListObjectResult[]>;
103
+ /**
104
+ * 获取完整的对象名称
105
+ * @param objectName 对象名
106
+ */
107
+ getObjectName?(objectName: string): string;
108
+ /**
109
+ * 检查文件hash是否一致
110
+ * @param objectName 对象名
111
+ * @param hash hash值
112
+ * @param meta 元数据
113
+ */
114
+ checkObjectHash?(objectName: string, hash: string, meta?: ItemBucketMetadata): Promise<{
115
+ success: boolean;
116
+ metaData: ItemBucketMetadata | null;
117
+ obj: StatObjectResult | null;
118
+ equalMeta?: boolean;
119
+ }>;
120
+ /**
121
+ * 获取元数据
122
+ * @param pathname 路径名
123
+ * @param meta 元数据
124
+ */
125
+ getMetadata?(pathname: string, meta?: ItemBucketMetadata): ItemBucketMetadata;
126
+ /**
127
+ * 复制对象
128
+ * @param sourceObject 源对象
129
+ * @param targetObject 目标对象
130
+ */
131
+ copyObject(sourceObject: string, targetObject: string): Promise<CopyObjectCommandOutput>;
132
+ /**
133
+ * 替换对象元数据
134
+ * @param objectName 对象名
135
+ * @param meta 新元数据
136
+ */
137
+ replaceObject?(objectName: string, meta: ItemBucketMetadata): Promise<any>;
138
+ }
139
+ interface OssService extends OssBaseOperation {
140
+ owner: string;
141
+ }
142
+
143
+ type OssBaseOptions<T = {
144
+ [key: string]: any;
145
+ }> = {
146
+ /**
147
+ * 已经初始化好的 S3Client
148
+ */
149
+ client: S3Client;
150
+ /**
151
+ * 桶名
152
+ */
153
+ bucketName: string;
154
+ /**
155
+ * 前缀
156
+ */
157
+ prefix?: string;
158
+ } & T;
159
+ declare class OssBase implements OssBaseOperation {
160
+ client: S3Client;
161
+ bucketName: string;
162
+ prefix: string;
163
+ /**
164
+ * 计算字符串或者对象的的md5值
165
+ */
166
+ hash: (str: string | Buffer | Object) => string;
167
+ constructor(opts: OssBaseOptions);
168
+ setPrefix(prefix: string): void;
169
+ /**
170
+ * 获取对象
171
+ * @param objectName 对象名
172
+ */
173
+ getObject(objectName: string): Promise<GetObjectCommandOutput>;
174
+ /**
175
+ * 获取对象内容为字符串
176
+ * @param objectName 对象名
177
+ */
178
+ getObjectAsString(objectName: string): Promise<string>;
179
+ /**
180
+ * 获取对象内容为 JSON
181
+ * @param objectName 对象名
182
+ */
183
+ getJson(objectName: string): Promise<Record<string, any>>;
184
+ /**
185
+ * 上传对象
186
+ * @param objectName 对象名
187
+ * @param data 数据
188
+ * @param metaData 元数据
189
+ * @param opts 选项
190
+ */
191
+ putObject(objectName: string, data: Buffer | string | Object | Readable, metaData?: ItemBucketMetadata, opts?: {
192
+ check?: boolean;
193
+ isStream?: boolean;
194
+ size?: number;
195
+ contentType?: string;
196
+ }): Promise<UploadedObjectInfo>;
197
+ /**
198
+ * 上传文件
199
+ * @param objectName 对象名
200
+ * @param filePath 文件路径
201
+ * @param metaData 元数据
202
+ */
203
+ fPutObject(objectName: string, filePath: string, metaData?: ItemBucketMetadata): Promise<UploadedObjectInfo>;
204
+ /**
205
+ * 删除对象
206
+ * @param objectName 对象名
207
+ */
208
+ deleteObject(objectName: string): Promise<void>;
209
+ deleteObjects(objectNameList: string[]): Promise<void>;
210
+ /**
211
+ * 列出对象
212
+ * @param objectName 前缀
213
+ * @param opts 选项
214
+ */
215
+ listObjects<IS_FILE = false>(objectName: string, opts?: {
216
+ recursive?: boolean;
217
+ startAfter?: string;
218
+ maxKeys?: number;
219
+ }): Promise<IS_FILE extends true ? ListFileObject[] : ListObjectResult[]>;
220
+ /**
221
+ * 获取对象信息
222
+ * @param objectName 对象名
223
+ * @param checkFile 是否检查文件存在(不存在返回null而非抛错)
224
+ */
225
+ statObject(objectName: string, checkFile?: boolean): Promise<StatObjectResult | null>;
226
+ /**
227
+ * 获取完整的对象名称
228
+ * @param objectName 对象名
229
+ */
230
+ getObjectName(objectName: string): string;
231
+ /**
232
+ * 检查文件hash是否一致
233
+ * @param objectName 对象名
234
+ * @param hash hash值
235
+ * @param meta 元数据
236
+ */
237
+ checkObjectHash(objectName: string, hash: string, meta?: ItemBucketMetadata): Promise<{
238
+ success: boolean;
239
+ metaData: ItemBucketMetadata | null;
240
+ obj: StatObjectResult | null;
241
+ equalMeta?: boolean;
242
+ }>;
243
+ /**
244
+ * 获取元数据
245
+ * @param pathname 路径名
246
+ * @param meta 元数据
247
+ */
248
+ getMetadata(pathname: string, meta?: ItemBucketMetadata): ItemBucketMetadata;
249
+ /**
250
+ * 复制对象
251
+ * @param sourceObject 源对象
252
+ * @param targetObject 目标对象
253
+ */
254
+ copyObject(sourceObject: string, targetObject: string): Promise<any>;
255
+ /**
256
+ * 替换对象元数据
257
+ * @param objectName 对象名
258
+ * @param meta 新元数据
259
+ */
260
+ replaceObject(objectName: string, meta: ItemBucketMetadata): Promise<any>;
261
+ /**
262
+ * 创建实例
263
+ */
264
+ static create<T extends OssBase, U>(this: new (opts: OssBaseOptions<U>) => T, opts: OssBaseOptions<U>): T;
265
+ /**
266
+ * 从已有实例创建
267
+ */
268
+ static fromBase<T extends OssBase, U>(this: new (opts: OssBaseOptions<U>) => T, createOpts: {
269
+ oss: OssBase;
270
+ opts: Partial<OssBaseOptions<U>>;
271
+ }): T;
272
+ }
273
+
274
+ declare class ConfigOssService extends OssBase implements OssService {
275
+ owner: string;
276
+ constructor(opts: OssBaseOptions<{
277
+ owner: string;
278
+ }>);
279
+ listAllFile(): Promise<ListFileObject[]>;
280
+ listAll(): Promise<ListObjectResult[]>;
281
+ configMap: Map<string, any>;
282
+ keys: string[];
283
+ getAllConfigJson(): Promise<ListFileObject[]>;
284
+ isEndWithJson(string: string): boolean;
285
+ putJsonObject(key: string, data: any): Promise<UploadedObjectInfo>;
286
+ getObjectList(objectNameList: string[]): Promise<Map<string, Record<string, any>>>;
287
+ getList(): Promise<{
288
+ list: {
289
+ key: string;
290
+ name: string;
291
+ size: number;
292
+ lastModified: Date;
293
+ etag: string;
294
+ }[];
295
+ keys: string[];
296
+ keyEtagMap: Map<string, string>;
297
+ }>;
298
+ }
299
+
300
+ /**
301
+ * 计算字符串的md5值
302
+ * @param str
303
+ * @returns
304
+ */
305
+ declare const hash: (str: string | Buffer | Object) => string;
306
+ declare const hashSringify: (str: Object) => string;
307
+
308
+ declare const getContentType: (filePath: string) => any;
309
+
310
+ declare const standardHeaderKeys: string[];
311
+ type StandardHeaders = {
312
+ ContentType?: string;
313
+ CacheControl?: string;
314
+ ContentDisposition?: string;
315
+ ContentEncoding?: string;
316
+ ContentLanguage?: string;
317
+ Expires?: Date;
318
+ };
319
+ /**
320
+ * 从元数据中提取标准头部和自定义元数据
321
+ * @param metaData 原始元数据
322
+ * @returns 标准头部和自定义元数据
323
+ */
324
+ declare function extractStandardHeaders(metaData: Record<string, string>): {
325
+ standardHeaders: StandardHeaders;
326
+ customMetadata: Record<string, string>;
327
+ };
328
+
329
+ export { ConfigOssService, OssBase, extractStandardHeaders, getContentType, hash, hashSringify, standardHeaderKeys };
330
+ export type { ItemBucketMetadata, ListDirectoryObject, ListFileObject, ListObjectResult, OssBaseOperation, OssBaseOptions, OssService, StandardHeaders, StatObjectResult, UploadedObjectInfo };