@kevisual/oss 0.0.2 → 0.0.5

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.
@@ -92,7 +92,7 @@ type OssBaseOptions<T = {
92
92
  /**
93
93
  * 已经初始化好的minio client
94
94
  */
95
- client?: Client;
95
+ client: Client;
96
96
  /**
97
97
  * 桶名
98
98
  */
@@ -114,14 +114,31 @@ declare class OssBase implements OssBaseOperation {
114
114
  setPrefix(prefix: string): void;
115
115
  getObject(objectName: string): Promise<stream.Readable>;
116
116
  getJson(objectName: string): Promise<Record<string, any>>;
117
- putObject(objectName: string, data: Buffer | string | Object, metaData?: ItemBucketMetadata): Promise<minio_dist_esm_internal_type_mjs.UploadedObjectInfo>;
117
+ /**
118
+ * 上传文件,
119
+ * @param objectName
120
+ * @param data
121
+ * @param metaData
122
+ * @param options 如果文件本身存在,则复制原有的meta的内容
123
+ * @returns
124
+ */
125
+ putObject(objectName: string, data: Buffer | string | Object, metaData?: ItemBucketMetadata, options?: {
126
+ check?: boolean;
127
+ }): Promise<minio_dist_esm_internal_type_mjs.UploadedObjectInfo>;
118
128
  deleteObject(objectName: string): Promise<void>;
119
129
  listObjects<IS_FILE = false>(objectName: string, opts?: {
120
130
  recursive?: boolean;
121
131
  startAfter?: string;
122
132
  }): Promise<IS_FILE extends true ? ListFileObject[] : ListObjectResult[]>;
123
133
  fPutObject(objectName: string, filePath: string, metaData?: ItemBucketMetadata): Promise<any>;
124
- statObject(objectName: string): Promise<minio.BucketItemStat>;
134
+ statObject(objectName: string, checkFile?: boolean): Promise<minio.BucketItemStat>;
135
+ /**
136
+ * 检查文件hash是否一致
137
+ * @param objectName
138
+ * @param hash
139
+ * @returns
140
+ */
141
+ checkObjectHash(objectName: string, hash: string): Promise<boolean>;
125
142
  copyObject(sourceObject: any, targetObject: any): Promise<minio_dist_esm_internal_type_mjs.CopyObjectResult>;
126
143
  replaceObject(objectName: string, meta: {
127
144
  [key: string]: string;
@@ -133,4 +150,4 @@ declare class OssBase implements OssBaseOperation {
133
150
  }): T;
134
151
  }
135
152
 
136
- export { type ListFileObject as L, OssBase as O, type OssBaseOptions as a, type OssService as b, type ListObjectResult as c };
153
+ export { type ListFileObject as L, OssBase as O, type StatObjectResult as S, type UploadedObjectInfo as U, type OssBaseOptions as a, type ListDirectoryObject as b, type ListObjectResult as c, type OssBaseOperation as d, type OssService as e };
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  import 'minio';
2
2
  import 'minio/dist/esm/internal/type.mjs';
3
3
  import 'stream';
4
- export { O as OssBase, a as OssBaseOptions } from './index-CQoepWCw.js';
4
+ export { O as OssBase, a as OssBaseOptions } from './index-CcgwzWpW.js';
package/dist/index.js CHANGED
@@ -71,7 +71,15 @@ var OssBase = class {
71
71
  });
72
72
  });
73
73
  }
74
- async putObject(objectName, data, metaData) {
74
+ /**
75
+ * 上传文件,
76
+ * @param objectName
77
+ * @param data
78
+ * @param metaData
79
+ * @param options 如果文件本身存在,则复制原有的meta的内容
80
+ * @returns
81
+ */
82
+ async putObject(objectName, data, metaData = {}, options) {
75
83
  let putData;
76
84
  let size;
77
85
  if (typeof data === "object") {
@@ -80,6 +88,17 @@ var OssBase = class {
80
88
  } else if (typeof data === "string") {
81
89
  putData = data;
82
90
  size = putData.length;
91
+ } else {
92
+ putData = data;
93
+ }
94
+ if (options?.check) {
95
+ const obj2 = await this.statObject(objectName, true);
96
+ if (obj2) {
97
+ metaData = {
98
+ ...obj2.metaData,
99
+ ...metaData
100
+ };
101
+ }
83
102
  }
84
103
  const bucketName = this.bucketName;
85
104
  const obj = await this.client.putObject(bucketName, `${this.prefix}${objectName}`, putData, size, metaData);
@@ -117,10 +136,13 @@ var OssBase = class {
117
136
  const obj = await this.client.fPutObject(bucketName, `${this.prefix}${objectName}`, filePath, metaData);
118
137
  return obj;
119
138
  }
120
- async statObject(objectName) {
139
+ async statObject(objectName, checkFile = true) {
121
140
  const bucketName = this.bucketName;
122
141
  try {
123
142
  const obj = await this.client.statObject(bucketName, `${this.prefix}${objectName}`);
143
+ if (obj && checkFile && obj.size === 0) {
144
+ return null;
145
+ }
124
146
  return obj;
125
147
  } catch (e) {
126
148
  if (e.code === "NotFound") {
@@ -129,6 +151,19 @@ var OssBase = class {
129
151
  throw e;
130
152
  }
131
153
  }
154
+ /**
155
+ * 检查文件hash是否一致
156
+ * @param objectName
157
+ * @param hash
158
+ * @returns
159
+ */
160
+ async checkObjectHash(objectName, hash2) {
161
+ const obj = await this.statObject(`${this.prefix}${objectName}`, true);
162
+ if (!obj) {
163
+ return false;
164
+ }
165
+ return obj.etag === hash2;
166
+ }
132
167
  async copyObject(sourceObject, targetObject) {
133
168
  const bucketName = this.bucketName;
134
169
  const obj = await this.client.copyObject(bucketName, sourceObject, targetObject);
@@ -1,5 +1,5 @@
1
1
  import * as minio_dist_esm_internal_type_mjs from 'minio/dist/esm/internal/type.mjs';
2
- import { O as OssBase, b as OssService, a as OssBaseOptions, L as ListFileObject, c as ListObjectResult } from '../index-CQoepWCw.js';
2
+ import { O as OssBase, e as OssService, a as OssBaseOptions, L as ListFileObject, c as ListObjectResult } from '../index-CcgwzWpW.js';
3
3
  import 'minio';
4
4
  import 'stream';
5
5
 
@@ -74,7 +74,15 @@ var OssBase = class {
74
74
  });
75
75
  });
76
76
  }
77
- async putObject(objectName, data, metaData) {
77
+ /**
78
+ * 上传文件,
79
+ * @param objectName
80
+ * @param data
81
+ * @param metaData
82
+ * @param options 如果文件本身存在,则复制原有的meta的内容
83
+ * @returns
84
+ */
85
+ async putObject(objectName, data, metaData = {}, options) {
78
86
  let putData;
79
87
  let size;
80
88
  if (typeof data === "object") {
@@ -83,6 +91,17 @@ var OssBase = class {
83
91
  } else if (typeof data === "string") {
84
92
  putData = data;
85
93
  size = putData.length;
94
+ } else {
95
+ putData = data;
96
+ }
97
+ if (options?.check) {
98
+ const obj2 = await this.statObject(objectName, true);
99
+ if (obj2) {
100
+ metaData = {
101
+ ...obj2.metaData,
102
+ ...metaData
103
+ };
104
+ }
86
105
  }
87
106
  const bucketName = this.bucketName;
88
107
  const obj = await this.client.putObject(bucketName, `${this.prefix}${objectName}`, putData, size, metaData);
@@ -120,10 +139,13 @@ var OssBase = class {
120
139
  const obj = await this.client.fPutObject(bucketName, `${this.prefix}${objectName}`, filePath, metaData);
121
140
  return obj;
122
141
  }
123
- async statObject(objectName) {
142
+ async statObject(objectName, checkFile = true) {
124
143
  const bucketName = this.bucketName;
125
144
  try {
126
145
  const obj = await this.client.statObject(bucketName, `${this.prefix}${objectName}`);
146
+ if (obj && checkFile && obj.size === 0) {
147
+ return null;
148
+ }
127
149
  return obj;
128
150
  } catch (e) {
129
151
  if (e.code === "NotFound") {
@@ -132,6 +154,19 @@ var OssBase = class {
132
154
  throw e;
133
155
  }
134
156
  }
157
+ /**
158
+ * 检查文件hash是否一致
159
+ * @param objectName
160
+ * @param hash
161
+ * @returns
162
+ */
163
+ async checkObjectHash(objectName, hash2) {
164
+ const obj = await this.statObject(`${this.prefix}${objectName}`, true);
165
+ if (!obj) {
166
+ return false;
167
+ }
168
+ return obj.etag === hash2;
169
+ }
135
170
  async copyObject(sourceObject, targetObject) {
136
171
  const bucketName = this.bucketName;
137
172
  const obj = await this.client.copyObject(bucketName, sourceObject, targetObject);
@@ -1,5 +1,5 @@
1
- import { O as OssBase } from '../index-CQoepWCw.js';
2
- export { a as OssBaseOptions } from '../index-CQoepWCw.js';
1
+ import { O as OssBase } from '../index-CcgwzWpW.js';
2
+ export { b as ListDirectoryObject, L as ListFileObject, c as ListObjectResult, d as OssBaseOperation, a as OssBaseOptions, e as OssService, S as StatObjectResult, U as UploadedObjectInfo } from '../index-CcgwzWpW.js';
3
3
  export { ConfigOssService } from './config.js';
4
4
  import * as stream from 'stream';
5
5
  import { ServerResponse } from 'node:http';
@@ -74,7 +74,15 @@ var OssBase = class {
74
74
  });
75
75
  });
76
76
  }
77
- async putObject(objectName, data, metaData) {
77
+ /**
78
+ * 上传文件,
79
+ * @param objectName
80
+ * @param data
81
+ * @param metaData
82
+ * @param options 如果文件本身存在,则复制原有的meta的内容
83
+ * @returns
84
+ */
85
+ async putObject(objectName, data, metaData = {}, options) {
78
86
  let putData;
79
87
  let size;
80
88
  if (typeof data === "object") {
@@ -83,6 +91,17 @@ var OssBase = class {
83
91
  } else if (typeof data === "string") {
84
92
  putData = data;
85
93
  size = putData.length;
94
+ } else {
95
+ putData = data;
96
+ }
97
+ if (options?.check) {
98
+ const obj2 = await this.statObject(objectName, true);
99
+ if (obj2) {
100
+ metaData = {
101
+ ...obj2.metaData,
102
+ ...metaData
103
+ };
104
+ }
86
105
  }
87
106
  const bucketName = this.bucketName;
88
107
  const obj = await this.client.putObject(bucketName, `${this.prefix}${objectName}`, putData, size, metaData);
@@ -120,10 +139,13 @@ var OssBase = class {
120
139
  const obj = await this.client.fPutObject(bucketName, `${this.prefix}${objectName}`, filePath, metaData);
121
140
  return obj;
122
141
  }
123
- async statObject(objectName) {
142
+ async statObject(objectName, checkFile = true) {
124
143
  const bucketName = this.bucketName;
125
144
  try {
126
145
  const obj = await this.client.statObject(bucketName, `${this.prefix}${objectName}`);
146
+ if (obj && checkFile && obj.size === 0) {
147
+ return null;
148
+ }
127
149
  return obj;
128
150
  } catch (e) {
129
151
  if (e.code === "NotFound") {
@@ -132,6 +154,19 @@ var OssBase = class {
132
154
  throw e;
133
155
  }
134
156
  }
157
+ /**
158
+ * 检查文件hash是否一致
159
+ * @param objectName
160
+ * @param hash
161
+ * @returns
162
+ */
163
+ async checkObjectHash(objectName, hash2) {
164
+ const obj = await this.statObject(`${this.prefix}${objectName}`, true);
165
+ if (!obj) {
166
+ return false;
167
+ }
168
+ return obj.etag === hash2;
169
+ }
135
170
  async copyObject(sourceObject, targetObject) {
136
171
  const bucketName = this.bucketName;
137
172
  const obj = await this.client.copyObject(bucketName, sourceObject, targetObject);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kevisual/oss",
3
- "version": "0.0.2",
3
+ "version": "0.0.5",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {