@kevisual/oss 0.0.10 → 0.0.11
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-By4Dj6k_.d.ts → index-BGsBfWH-.d.ts} +4 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +124 -21
- package/dist/services/config.d.ts +1 -1
- package/dist/services/config.js +124 -21
- package/dist/services/index.d.ts +5 -3
- package/dist/services/index.js +127 -23
- package/package.json +1 -1
|
@@ -140,10 +140,13 @@ declare class OssBase implements OssBaseOperation {
|
|
|
140
140
|
* @param hash
|
|
141
141
|
* @returns
|
|
142
142
|
*/
|
|
143
|
-
checkObjectHash(objectName: string, hash: string): Promise<{
|
|
143
|
+
checkObjectHash(objectName: string, hash: string, meta?: ItemBucketMetadata): Promise<{
|
|
144
144
|
success: boolean;
|
|
145
145
|
metaData: ItemBucketMetadata | null;
|
|
146
|
+
obj: any;
|
|
147
|
+
equalMeta?: boolean;
|
|
146
148
|
}>;
|
|
149
|
+
getMetadata(pathname: string, meta?: ItemBucketMetadata): ItemBucketMetadata;
|
|
147
150
|
copyObject(sourceObject: any, targetObject: any): Promise<minio_dist_esm_internal_type_mjs.CopyObjectResult>;
|
|
148
151
|
replaceObject(objectName: string, meta: {
|
|
149
152
|
[key: string]: string;
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -2007,11 +2007,11 @@ var require_baseGet = __commonJS({
|
|
|
2007
2007
|
"../../node_modules/lodash/_baseGet.js"(exports, module) {
|
|
2008
2008
|
var castPath = require_castPath();
|
|
2009
2009
|
var toKey = require_toKey();
|
|
2010
|
-
function baseGet(object,
|
|
2011
|
-
|
|
2012
|
-
var index = 0, length =
|
|
2010
|
+
function baseGet(object, path2) {
|
|
2011
|
+
path2 = castPath(path2, object);
|
|
2012
|
+
var index = 0, length = path2.length;
|
|
2013
2013
|
while (object != null && index < length) {
|
|
2014
|
-
object = object[toKey(
|
|
2014
|
+
object = object[toKey(path2[index++])];
|
|
2015
2015
|
}
|
|
2016
2016
|
return index && index == length ? object : void 0;
|
|
2017
2017
|
}
|
|
@@ -2048,8 +2048,8 @@ var require_parent = __commonJS({
|
|
|
2048
2048
|
"../../node_modules/lodash/_parent.js"(exports, module) {
|
|
2049
2049
|
var baseGet = require_baseGet();
|
|
2050
2050
|
var baseSlice = require_baseSlice();
|
|
2051
|
-
function parent(object,
|
|
2052
|
-
return
|
|
2051
|
+
function parent(object, path2) {
|
|
2052
|
+
return path2.length < 2 ? object : baseGet(object, baseSlice(path2, 0, -1));
|
|
2053
2053
|
}
|
|
2054
2054
|
module.exports = parent;
|
|
2055
2055
|
}
|
|
@@ -2062,10 +2062,10 @@ var require_baseUnset = __commonJS({
|
|
|
2062
2062
|
var last = require_last();
|
|
2063
2063
|
var parent = require_parent();
|
|
2064
2064
|
var toKey = require_toKey();
|
|
2065
|
-
function baseUnset(object,
|
|
2066
|
-
|
|
2067
|
-
object = parent(object,
|
|
2068
|
-
return object == null || delete object[toKey(last(
|
|
2065
|
+
function baseUnset(object, path2) {
|
|
2066
|
+
path2 = castPath(path2, object);
|
|
2067
|
+
object = parent(object, path2);
|
|
2068
|
+
return object == null || delete object[toKey(last(path2))];
|
|
2069
2069
|
}
|
|
2070
2070
|
module.exports = baseUnset;
|
|
2071
2071
|
}
|
|
@@ -2315,10 +2315,10 @@ var require_omit = __commonJS({
|
|
|
2315
2315
|
return result;
|
|
2316
2316
|
}
|
|
2317
2317
|
var isDeep = false;
|
|
2318
|
-
paths = arrayMap(paths, function(
|
|
2319
|
-
|
|
2320
|
-
isDeep || (isDeep =
|
|
2321
|
-
return
|
|
2318
|
+
paths = arrayMap(paths, function(path2) {
|
|
2319
|
+
path2 = castPath(path2, object);
|
|
2320
|
+
isDeep || (isDeep = path2.length > 1);
|
|
2321
|
+
return path2;
|
|
2322
2322
|
});
|
|
2323
2323
|
copyObject2(object, getAllKeysIn(object), result);
|
|
2324
2324
|
if (isDeep) {
|
|
@@ -2338,7 +2338,9 @@ var require_omit = __commonJS({
|
|
|
2338
2338
|
import crypto from "node:crypto";
|
|
2339
2339
|
var hash = (str) => {
|
|
2340
2340
|
let hashStr;
|
|
2341
|
-
if (
|
|
2341
|
+
if (str instanceof Buffer) {
|
|
2342
|
+
hashStr = str;
|
|
2343
|
+
} else if (str instanceof Object) {
|
|
2342
2344
|
hashStr = JSON.stringify(str, null, 2);
|
|
2343
2345
|
} else {
|
|
2344
2346
|
hashStr = str;
|
|
@@ -2364,6 +2366,87 @@ var copyObject = async ({ bucketName, newMetadata, objectName, client }) => {
|
|
|
2364
2366
|
|
|
2365
2367
|
// src/index.ts
|
|
2366
2368
|
var import_omit = __toESM(require_omit(), 1);
|
|
2369
|
+
|
|
2370
|
+
// src/util/get-content-type.ts
|
|
2371
|
+
import path from "node:path";
|
|
2372
|
+
var getContentType = (filePath) => {
|
|
2373
|
+
const extname = path.extname(filePath);
|
|
2374
|
+
const contentType = {
|
|
2375
|
+
".html": "text/html; charset=utf-8",
|
|
2376
|
+
".js": "text/javascript; charset=utf-8",
|
|
2377
|
+
".css": "text/css; charset=utf-8",
|
|
2378
|
+
".txt": "text/plain; charset=utf-8",
|
|
2379
|
+
".json": "application/json; charset=utf-8",
|
|
2380
|
+
".png": "image/png",
|
|
2381
|
+
".jpg": "image/jpg",
|
|
2382
|
+
".gif": "image/gif",
|
|
2383
|
+
".svg": "image/svg+xml",
|
|
2384
|
+
".wav": "audio/wav",
|
|
2385
|
+
".mp4": "video/mp4",
|
|
2386
|
+
".md": "text/markdown; charset=utf-8",
|
|
2387
|
+
// utf-8配置
|
|
2388
|
+
".ico": "image/x-icon",
|
|
2389
|
+
// Favicon 图标
|
|
2390
|
+
".webp": "image/webp",
|
|
2391
|
+
// WebP 图像格式
|
|
2392
|
+
".webm": "video/webm",
|
|
2393
|
+
// WebM 视频格式
|
|
2394
|
+
".ogg": "audio/ogg",
|
|
2395
|
+
// Ogg 音频格式
|
|
2396
|
+
".mp3": "audio/mpeg",
|
|
2397
|
+
// MP3 音频格式
|
|
2398
|
+
".m4a": "audio/mp4",
|
|
2399
|
+
// M4A 音频格式
|
|
2400
|
+
".m3u8": "application/vnd.apple.mpegurl",
|
|
2401
|
+
// HLS 播放列表
|
|
2402
|
+
".ts": "video/mp2t",
|
|
2403
|
+
// MPEG Transport Stream
|
|
2404
|
+
".pdf": "application/pdf",
|
|
2405
|
+
// PDF 文档
|
|
2406
|
+
".doc": "application/msword",
|
|
2407
|
+
// Word 文档
|
|
2408
|
+
".docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
|
2409
|
+
// Word 文档 (新版)
|
|
2410
|
+
".ppt": "application/vnd.ms-powerpoint",
|
|
2411
|
+
// PowerPoint 演示文稿
|
|
2412
|
+
".pptx": "application/vnd.openxmlformats-officedocument.presentationml.presentation",
|
|
2413
|
+
// PowerPoint (新版)
|
|
2414
|
+
".xls": "application/vnd.ms-excel",
|
|
2415
|
+
// Excel 表格
|
|
2416
|
+
".xlsx": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
|
|
2417
|
+
// Excel 表格 (新版)
|
|
2418
|
+
".csv": "text/csv; charset=utf-8",
|
|
2419
|
+
// CSV 文件
|
|
2420
|
+
".xml": "application/xml; charset=utf-8",
|
|
2421
|
+
// XML 文件
|
|
2422
|
+
".rtf": "application/rtf",
|
|
2423
|
+
// RTF 文本文件
|
|
2424
|
+
".eot": "application/vnd.ms-fontobject",
|
|
2425
|
+
// Embedded OpenType 字体
|
|
2426
|
+
".ttf": "font/ttf",
|
|
2427
|
+
// TrueType 字体
|
|
2428
|
+
".woff": "font/woff",
|
|
2429
|
+
// Web Open Font Format 1.0
|
|
2430
|
+
".woff2": "font/woff2",
|
|
2431
|
+
// Web Open Font Format 2.0
|
|
2432
|
+
".otf": "font/otf",
|
|
2433
|
+
// OpenType 字体
|
|
2434
|
+
".wasm": "application/wasm",
|
|
2435
|
+
// WebAssembly 文件
|
|
2436
|
+
".pem": "application/x-pem-file",
|
|
2437
|
+
// PEM 证书文件
|
|
2438
|
+
".crt": "application/x-x509-ca-cert",
|
|
2439
|
+
// CRT 证书文件
|
|
2440
|
+
".yaml": "application/x-yaml; charset=utf-8",
|
|
2441
|
+
// YAML 文件
|
|
2442
|
+
".yml": "application/x-yaml; charset=utf-8",
|
|
2443
|
+
// YAML 文件(别名)
|
|
2444
|
+
".zip": "application/octet-stream"
|
|
2445
|
+
};
|
|
2446
|
+
return contentType[extname] || "application/octet-stream";
|
|
2447
|
+
};
|
|
2448
|
+
|
|
2449
|
+
// src/index.ts
|
|
2367
2450
|
var OssBase = class {
|
|
2368
2451
|
client;
|
|
2369
2452
|
bucketName;
|
|
@@ -2502,19 +2585,39 @@ var OssBase = class {
|
|
|
2502
2585
|
* @param hash
|
|
2503
2586
|
* @returns
|
|
2504
2587
|
*/
|
|
2505
|
-
async checkObjectHash(objectName, hash2) {
|
|
2588
|
+
async checkObjectHash(objectName, hash2, meta) {
|
|
2506
2589
|
const obj = await this.statObject(`${this.prefix}${objectName}`, true);
|
|
2507
2590
|
if (!obj) {
|
|
2508
|
-
return { success: false, metaData: null };
|
|
2591
|
+
return { success: false, metaData: null, obj: null, equalMeta: false };
|
|
2509
2592
|
}
|
|
2510
2593
|
let metaData = {};
|
|
2511
|
-
const omitMeda = ["
|
|
2594
|
+
const omitMeda = ["content-type", "cache-control", "app-source"];
|
|
2512
2595
|
const objMeta = (0, import_omit.default)(obj.metaData, omitMeda);
|
|
2513
2596
|
metaData = {
|
|
2514
|
-
...objMeta
|
|
2515
|
-
...metaData
|
|
2597
|
+
...objMeta
|
|
2516
2598
|
};
|
|
2517
|
-
|
|
2599
|
+
let equalMeta = false;
|
|
2600
|
+
if (meta) {
|
|
2601
|
+
equalMeta = JSON.stringify(metaData) === JSON.stringify(meta);
|
|
2602
|
+
}
|
|
2603
|
+
return { success: obj.etag === hash2, metaData, obj, equalMeta };
|
|
2604
|
+
}
|
|
2605
|
+
getMetadata(pathname, meta = { "app-source": "user-app" }) {
|
|
2606
|
+
const isHtml = pathname.endsWith(".html");
|
|
2607
|
+
if (isHtml) {
|
|
2608
|
+
meta = {
|
|
2609
|
+
...meta,
|
|
2610
|
+
"content-type": "text/html; charset=utf-8",
|
|
2611
|
+
"cache-control": "no-cache"
|
|
2612
|
+
};
|
|
2613
|
+
} else {
|
|
2614
|
+
meta = {
|
|
2615
|
+
...meta,
|
|
2616
|
+
"content-type": getContentType(pathname),
|
|
2617
|
+
"cache-control": "max-age=31536000, immutable"
|
|
2618
|
+
};
|
|
2619
|
+
}
|
|
2620
|
+
return meta;
|
|
2518
2621
|
}
|
|
2519
2622
|
async copyObject(sourceObject, targetObject) {
|
|
2520
2623
|
const bucketName = this.bucketName;
|
|
@@ -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, e as OssService, a as OssBaseOptions, L as ListFileObject, c as ListObjectResult } from '../index-
|
|
2
|
+
import { O as OssBase, e as OssService, a as OssBaseOptions, L as ListFileObject, c as ListObjectResult } from '../index-BGsBfWH-.js';
|
|
3
3
|
import 'minio';
|
|
4
4
|
import 'stream';
|
|
5
5
|
|
package/dist/services/config.js
CHANGED
|
@@ -2007,11 +2007,11 @@ var require_baseGet = __commonJS({
|
|
|
2007
2007
|
"../../node_modules/lodash/_baseGet.js"(exports, module) {
|
|
2008
2008
|
var castPath = require_castPath();
|
|
2009
2009
|
var toKey = require_toKey();
|
|
2010
|
-
function baseGet(object,
|
|
2011
|
-
|
|
2012
|
-
var index = 0, length =
|
|
2010
|
+
function baseGet(object, path2) {
|
|
2011
|
+
path2 = castPath(path2, object);
|
|
2012
|
+
var index = 0, length = path2.length;
|
|
2013
2013
|
while (object != null && index < length) {
|
|
2014
|
-
object = object[toKey(
|
|
2014
|
+
object = object[toKey(path2[index++])];
|
|
2015
2015
|
}
|
|
2016
2016
|
return index && index == length ? object : void 0;
|
|
2017
2017
|
}
|
|
@@ -2048,8 +2048,8 @@ var require_parent = __commonJS({
|
|
|
2048
2048
|
"../../node_modules/lodash/_parent.js"(exports, module) {
|
|
2049
2049
|
var baseGet = require_baseGet();
|
|
2050
2050
|
var baseSlice = require_baseSlice();
|
|
2051
|
-
function parent(object,
|
|
2052
|
-
return
|
|
2051
|
+
function parent(object, path2) {
|
|
2052
|
+
return path2.length < 2 ? object : baseGet(object, baseSlice(path2, 0, -1));
|
|
2053
2053
|
}
|
|
2054
2054
|
module.exports = parent;
|
|
2055
2055
|
}
|
|
@@ -2062,10 +2062,10 @@ var require_baseUnset = __commonJS({
|
|
|
2062
2062
|
var last = require_last();
|
|
2063
2063
|
var parent = require_parent();
|
|
2064
2064
|
var toKey = require_toKey();
|
|
2065
|
-
function baseUnset(object,
|
|
2066
|
-
|
|
2067
|
-
object = parent(object,
|
|
2068
|
-
return object == null || delete object[toKey(last(
|
|
2065
|
+
function baseUnset(object, path2) {
|
|
2066
|
+
path2 = castPath(path2, object);
|
|
2067
|
+
object = parent(object, path2);
|
|
2068
|
+
return object == null || delete object[toKey(last(path2))];
|
|
2069
2069
|
}
|
|
2070
2070
|
module.exports = baseUnset;
|
|
2071
2071
|
}
|
|
@@ -2315,10 +2315,10 @@ var require_omit = __commonJS({
|
|
|
2315
2315
|
return result;
|
|
2316
2316
|
}
|
|
2317
2317
|
var isDeep = false;
|
|
2318
|
-
paths = arrayMap(paths, function(
|
|
2319
|
-
|
|
2320
|
-
isDeep || (isDeep =
|
|
2321
|
-
return
|
|
2318
|
+
paths = arrayMap(paths, function(path2) {
|
|
2319
|
+
path2 = castPath(path2, object);
|
|
2320
|
+
isDeep || (isDeep = path2.length > 1);
|
|
2321
|
+
return path2;
|
|
2322
2322
|
});
|
|
2323
2323
|
copyObject2(object, getAllKeysIn(object), result);
|
|
2324
2324
|
if (isDeep) {
|
|
@@ -2338,7 +2338,9 @@ var require_omit = __commonJS({
|
|
|
2338
2338
|
import crypto from "node:crypto";
|
|
2339
2339
|
var hash = (str) => {
|
|
2340
2340
|
let hashStr;
|
|
2341
|
-
if (
|
|
2341
|
+
if (str instanceof Buffer) {
|
|
2342
|
+
hashStr = str;
|
|
2343
|
+
} else if (str instanceof Object) {
|
|
2342
2344
|
hashStr = JSON.stringify(str, null, 2);
|
|
2343
2345
|
} else {
|
|
2344
2346
|
hashStr = str;
|
|
@@ -2367,6 +2369,87 @@ var copyObject = async ({ bucketName, newMetadata, objectName, client }) => {
|
|
|
2367
2369
|
|
|
2368
2370
|
// src/index.ts
|
|
2369
2371
|
var import_omit = __toESM(require_omit(), 1);
|
|
2372
|
+
|
|
2373
|
+
// src/util/get-content-type.ts
|
|
2374
|
+
import path from "node:path";
|
|
2375
|
+
var getContentType = (filePath) => {
|
|
2376
|
+
const extname = path.extname(filePath);
|
|
2377
|
+
const contentType = {
|
|
2378
|
+
".html": "text/html; charset=utf-8",
|
|
2379
|
+
".js": "text/javascript; charset=utf-8",
|
|
2380
|
+
".css": "text/css; charset=utf-8",
|
|
2381
|
+
".txt": "text/plain; charset=utf-8",
|
|
2382
|
+
".json": "application/json; charset=utf-8",
|
|
2383
|
+
".png": "image/png",
|
|
2384
|
+
".jpg": "image/jpg",
|
|
2385
|
+
".gif": "image/gif",
|
|
2386
|
+
".svg": "image/svg+xml",
|
|
2387
|
+
".wav": "audio/wav",
|
|
2388
|
+
".mp4": "video/mp4",
|
|
2389
|
+
".md": "text/markdown; charset=utf-8",
|
|
2390
|
+
// utf-8配置
|
|
2391
|
+
".ico": "image/x-icon",
|
|
2392
|
+
// Favicon 图标
|
|
2393
|
+
".webp": "image/webp",
|
|
2394
|
+
// WebP 图像格式
|
|
2395
|
+
".webm": "video/webm",
|
|
2396
|
+
// WebM 视频格式
|
|
2397
|
+
".ogg": "audio/ogg",
|
|
2398
|
+
// Ogg 音频格式
|
|
2399
|
+
".mp3": "audio/mpeg",
|
|
2400
|
+
// MP3 音频格式
|
|
2401
|
+
".m4a": "audio/mp4",
|
|
2402
|
+
// M4A 音频格式
|
|
2403
|
+
".m3u8": "application/vnd.apple.mpegurl",
|
|
2404
|
+
// HLS 播放列表
|
|
2405
|
+
".ts": "video/mp2t",
|
|
2406
|
+
// MPEG Transport Stream
|
|
2407
|
+
".pdf": "application/pdf",
|
|
2408
|
+
// PDF 文档
|
|
2409
|
+
".doc": "application/msword",
|
|
2410
|
+
// Word 文档
|
|
2411
|
+
".docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
|
2412
|
+
// Word 文档 (新版)
|
|
2413
|
+
".ppt": "application/vnd.ms-powerpoint",
|
|
2414
|
+
// PowerPoint 演示文稿
|
|
2415
|
+
".pptx": "application/vnd.openxmlformats-officedocument.presentationml.presentation",
|
|
2416
|
+
// PowerPoint (新版)
|
|
2417
|
+
".xls": "application/vnd.ms-excel",
|
|
2418
|
+
// Excel 表格
|
|
2419
|
+
".xlsx": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
|
|
2420
|
+
// Excel 表格 (新版)
|
|
2421
|
+
".csv": "text/csv; charset=utf-8",
|
|
2422
|
+
// CSV 文件
|
|
2423
|
+
".xml": "application/xml; charset=utf-8",
|
|
2424
|
+
// XML 文件
|
|
2425
|
+
".rtf": "application/rtf",
|
|
2426
|
+
// RTF 文本文件
|
|
2427
|
+
".eot": "application/vnd.ms-fontobject",
|
|
2428
|
+
// Embedded OpenType 字体
|
|
2429
|
+
".ttf": "font/ttf",
|
|
2430
|
+
// TrueType 字体
|
|
2431
|
+
".woff": "font/woff",
|
|
2432
|
+
// Web Open Font Format 1.0
|
|
2433
|
+
".woff2": "font/woff2",
|
|
2434
|
+
// Web Open Font Format 2.0
|
|
2435
|
+
".otf": "font/otf",
|
|
2436
|
+
// OpenType 字体
|
|
2437
|
+
".wasm": "application/wasm",
|
|
2438
|
+
// WebAssembly 文件
|
|
2439
|
+
".pem": "application/x-pem-file",
|
|
2440
|
+
// PEM 证书文件
|
|
2441
|
+
".crt": "application/x-x509-ca-cert",
|
|
2442
|
+
// CRT 证书文件
|
|
2443
|
+
".yaml": "application/x-yaml; charset=utf-8",
|
|
2444
|
+
// YAML 文件
|
|
2445
|
+
".yml": "application/x-yaml; charset=utf-8",
|
|
2446
|
+
// YAML 文件(别名)
|
|
2447
|
+
".zip": "application/octet-stream"
|
|
2448
|
+
};
|
|
2449
|
+
return contentType[extname] || "application/octet-stream";
|
|
2450
|
+
};
|
|
2451
|
+
|
|
2452
|
+
// src/index.ts
|
|
2370
2453
|
var OssBase = class {
|
|
2371
2454
|
client;
|
|
2372
2455
|
bucketName;
|
|
@@ -2505,19 +2588,39 @@ var OssBase = class {
|
|
|
2505
2588
|
* @param hash
|
|
2506
2589
|
* @returns
|
|
2507
2590
|
*/
|
|
2508
|
-
async checkObjectHash(objectName, hash2) {
|
|
2591
|
+
async checkObjectHash(objectName, hash2, meta) {
|
|
2509
2592
|
const obj = await this.statObject(`${this.prefix}${objectName}`, true);
|
|
2510
2593
|
if (!obj) {
|
|
2511
|
-
return { success: false, metaData: null };
|
|
2594
|
+
return { success: false, metaData: null, obj: null, equalMeta: false };
|
|
2512
2595
|
}
|
|
2513
2596
|
let metaData = {};
|
|
2514
|
-
const omitMeda = ["
|
|
2597
|
+
const omitMeda = ["content-type", "cache-control", "app-source"];
|
|
2515
2598
|
const objMeta = (0, import_omit.default)(obj.metaData, omitMeda);
|
|
2516
2599
|
metaData = {
|
|
2517
|
-
...objMeta
|
|
2518
|
-
...metaData
|
|
2600
|
+
...objMeta
|
|
2519
2601
|
};
|
|
2520
|
-
|
|
2602
|
+
let equalMeta = false;
|
|
2603
|
+
if (meta) {
|
|
2604
|
+
equalMeta = JSON.stringify(metaData) === JSON.stringify(meta);
|
|
2605
|
+
}
|
|
2606
|
+
return { success: obj.etag === hash2, metaData, obj, equalMeta };
|
|
2607
|
+
}
|
|
2608
|
+
getMetadata(pathname, meta = { "app-source": "user-app" }) {
|
|
2609
|
+
const isHtml = pathname.endsWith(".html");
|
|
2610
|
+
if (isHtml) {
|
|
2611
|
+
meta = {
|
|
2612
|
+
...meta,
|
|
2613
|
+
"content-type": "text/html; charset=utf-8",
|
|
2614
|
+
"cache-control": "no-cache"
|
|
2615
|
+
};
|
|
2616
|
+
} else {
|
|
2617
|
+
meta = {
|
|
2618
|
+
...meta,
|
|
2619
|
+
"content-type": getContentType(pathname),
|
|
2620
|
+
"cache-control": "max-age=31536000, immutable"
|
|
2621
|
+
};
|
|
2622
|
+
}
|
|
2623
|
+
return meta;
|
|
2521
2624
|
}
|
|
2522
2625
|
async copyObject(sourceObject, targetObject) {
|
|
2523
2626
|
const bucketName = this.bucketName;
|
package/dist/services/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { O as OssBase } from '../index-
|
|
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-
|
|
1
|
+
import { O as OssBase } from '../index-BGsBfWH-.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-BGsBfWH-.js';
|
|
3
3
|
export { ConfigOssService } from './config.js';
|
|
4
4
|
import * as stream from 'stream';
|
|
5
5
|
import { ServerResponse } from 'node:http';
|
|
@@ -33,4 +33,6 @@ declare const downloadObject: ({ objectName, client, filePath }: Pick<SendObject
|
|
|
33
33
|
declare const hash: (str: string | Buffer | Object) => string;
|
|
34
34
|
declare const hashSringify: (str: Object) => string;
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
declare const getContentType: (filePath: string) => any;
|
|
37
|
+
|
|
38
|
+
export { NotFoundFile, OssBase, downloadObject, filterMetaDataKeys, getContentType, hash, hashSringify, sendObject };
|
package/dist/services/index.js
CHANGED
|
@@ -2007,11 +2007,11 @@ var require_baseGet = __commonJS({
|
|
|
2007
2007
|
"../../node_modules/lodash/_baseGet.js"(exports, module) {
|
|
2008
2008
|
var castPath = require_castPath();
|
|
2009
2009
|
var toKey = require_toKey();
|
|
2010
|
-
function baseGet(object,
|
|
2011
|
-
|
|
2012
|
-
var index = 0, length =
|
|
2010
|
+
function baseGet(object, path3) {
|
|
2011
|
+
path3 = castPath(path3, object);
|
|
2012
|
+
var index = 0, length = path3.length;
|
|
2013
2013
|
while (object != null && index < length) {
|
|
2014
|
-
object = object[toKey(
|
|
2014
|
+
object = object[toKey(path3[index++])];
|
|
2015
2015
|
}
|
|
2016
2016
|
return index && index == length ? object : void 0;
|
|
2017
2017
|
}
|
|
@@ -2048,8 +2048,8 @@ var require_parent = __commonJS({
|
|
|
2048
2048
|
"../../node_modules/lodash/_parent.js"(exports, module) {
|
|
2049
2049
|
var baseGet = require_baseGet();
|
|
2050
2050
|
var baseSlice = require_baseSlice();
|
|
2051
|
-
function parent(object,
|
|
2052
|
-
return
|
|
2051
|
+
function parent(object, path3) {
|
|
2052
|
+
return path3.length < 2 ? object : baseGet(object, baseSlice(path3, 0, -1));
|
|
2053
2053
|
}
|
|
2054
2054
|
module.exports = parent;
|
|
2055
2055
|
}
|
|
@@ -2062,10 +2062,10 @@ var require_baseUnset = __commonJS({
|
|
|
2062
2062
|
var last = require_last();
|
|
2063
2063
|
var parent = require_parent();
|
|
2064
2064
|
var toKey = require_toKey();
|
|
2065
|
-
function baseUnset(object,
|
|
2066
|
-
|
|
2067
|
-
object = parent(object,
|
|
2068
|
-
return object == null || delete object[toKey(last(
|
|
2065
|
+
function baseUnset(object, path3) {
|
|
2066
|
+
path3 = castPath(path3, object);
|
|
2067
|
+
object = parent(object, path3);
|
|
2068
|
+
return object == null || delete object[toKey(last(path3))];
|
|
2069
2069
|
}
|
|
2070
2070
|
module.exports = baseUnset;
|
|
2071
2071
|
}
|
|
@@ -2315,10 +2315,10 @@ var require_omit = __commonJS({
|
|
|
2315
2315
|
return result;
|
|
2316
2316
|
}
|
|
2317
2317
|
var isDeep = false;
|
|
2318
|
-
paths = arrayMap(paths, function(
|
|
2319
|
-
|
|
2320
|
-
isDeep || (isDeep =
|
|
2321
|
-
return
|
|
2318
|
+
paths = arrayMap(paths, function(path3) {
|
|
2319
|
+
path3 = castPath(path3, object);
|
|
2320
|
+
isDeep || (isDeep = path3.length > 1);
|
|
2321
|
+
return path3;
|
|
2322
2322
|
});
|
|
2323
2323
|
copyObject2(object, getAllKeysIn(object), result);
|
|
2324
2324
|
if (isDeep) {
|
|
@@ -2338,7 +2338,9 @@ var require_omit = __commonJS({
|
|
|
2338
2338
|
import crypto from "node:crypto";
|
|
2339
2339
|
var hash = (str) => {
|
|
2340
2340
|
let hashStr;
|
|
2341
|
-
if (
|
|
2341
|
+
if (str instanceof Buffer) {
|
|
2342
|
+
hashStr = str;
|
|
2343
|
+
} else if (str instanceof Object) {
|
|
2342
2344
|
hashStr = JSON.stringify(str, null, 2);
|
|
2343
2345
|
} else {
|
|
2344
2346
|
hashStr = str;
|
|
@@ -2367,6 +2369,87 @@ var copyObject = async ({ bucketName, newMetadata, objectName, client }) => {
|
|
|
2367
2369
|
|
|
2368
2370
|
// src/index.ts
|
|
2369
2371
|
var import_omit = __toESM(require_omit(), 1);
|
|
2372
|
+
|
|
2373
|
+
// src/util/get-content-type.ts
|
|
2374
|
+
import path from "node:path";
|
|
2375
|
+
var getContentType = (filePath) => {
|
|
2376
|
+
const extname = path.extname(filePath);
|
|
2377
|
+
const contentType = {
|
|
2378
|
+
".html": "text/html; charset=utf-8",
|
|
2379
|
+
".js": "text/javascript; charset=utf-8",
|
|
2380
|
+
".css": "text/css; charset=utf-8",
|
|
2381
|
+
".txt": "text/plain; charset=utf-8",
|
|
2382
|
+
".json": "application/json; charset=utf-8",
|
|
2383
|
+
".png": "image/png",
|
|
2384
|
+
".jpg": "image/jpg",
|
|
2385
|
+
".gif": "image/gif",
|
|
2386
|
+
".svg": "image/svg+xml",
|
|
2387
|
+
".wav": "audio/wav",
|
|
2388
|
+
".mp4": "video/mp4",
|
|
2389
|
+
".md": "text/markdown; charset=utf-8",
|
|
2390
|
+
// utf-8配置
|
|
2391
|
+
".ico": "image/x-icon",
|
|
2392
|
+
// Favicon 图标
|
|
2393
|
+
".webp": "image/webp",
|
|
2394
|
+
// WebP 图像格式
|
|
2395
|
+
".webm": "video/webm",
|
|
2396
|
+
// WebM 视频格式
|
|
2397
|
+
".ogg": "audio/ogg",
|
|
2398
|
+
// Ogg 音频格式
|
|
2399
|
+
".mp3": "audio/mpeg",
|
|
2400
|
+
// MP3 音频格式
|
|
2401
|
+
".m4a": "audio/mp4",
|
|
2402
|
+
// M4A 音频格式
|
|
2403
|
+
".m3u8": "application/vnd.apple.mpegurl",
|
|
2404
|
+
// HLS 播放列表
|
|
2405
|
+
".ts": "video/mp2t",
|
|
2406
|
+
// MPEG Transport Stream
|
|
2407
|
+
".pdf": "application/pdf",
|
|
2408
|
+
// PDF 文档
|
|
2409
|
+
".doc": "application/msword",
|
|
2410
|
+
// Word 文档
|
|
2411
|
+
".docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
|
2412
|
+
// Word 文档 (新版)
|
|
2413
|
+
".ppt": "application/vnd.ms-powerpoint",
|
|
2414
|
+
// PowerPoint 演示文稿
|
|
2415
|
+
".pptx": "application/vnd.openxmlformats-officedocument.presentationml.presentation",
|
|
2416
|
+
// PowerPoint (新版)
|
|
2417
|
+
".xls": "application/vnd.ms-excel",
|
|
2418
|
+
// Excel 表格
|
|
2419
|
+
".xlsx": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
|
|
2420
|
+
// Excel 表格 (新版)
|
|
2421
|
+
".csv": "text/csv; charset=utf-8",
|
|
2422
|
+
// CSV 文件
|
|
2423
|
+
".xml": "application/xml; charset=utf-8",
|
|
2424
|
+
// XML 文件
|
|
2425
|
+
".rtf": "application/rtf",
|
|
2426
|
+
// RTF 文本文件
|
|
2427
|
+
".eot": "application/vnd.ms-fontobject",
|
|
2428
|
+
// Embedded OpenType 字体
|
|
2429
|
+
".ttf": "font/ttf",
|
|
2430
|
+
// TrueType 字体
|
|
2431
|
+
".woff": "font/woff",
|
|
2432
|
+
// Web Open Font Format 1.0
|
|
2433
|
+
".woff2": "font/woff2",
|
|
2434
|
+
// Web Open Font Format 2.0
|
|
2435
|
+
".otf": "font/otf",
|
|
2436
|
+
// OpenType 字体
|
|
2437
|
+
".wasm": "application/wasm",
|
|
2438
|
+
// WebAssembly 文件
|
|
2439
|
+
".pem": "application/x-pem-file",
|
|
2440
|
+
// PEM 证书文件
|
|
2441
|
+
".crt": "application/x-x509-ca-cert",
|
|
2442
|
+
// CRT 证书文件
|
|
2443
|
+
".yaml": "application/x-yaml; charset=utf-8",
|
|
2444
|
+
// YAML 文件
|
|
2445
|
+
".yml": "application/x-yaml; charset=utf-8",
|
|
2446
|
+
// YAML 文件(别名)
|
|
2447
|
+
".zip": "application/octet-stream"
|
|
2448
|
+
};
|
|
2449
|
+
return contentType[extname] || "application/octet-stream";
|
|
2450
|
+
};
|
|
2451
|
+
|
|
2452
|
+
// src/index.ts
|
|
2370
2453
|
var OssBase = class {
|
|
2371
2454
|
client;
|
|
2372
2455
|
bucketName;
|
|
@@ -2505,19 +2588,39 @@ var OssBase = class {
|
|
|
2505
2588
|
* @param hash
|
|
2506
2589
|
* @returns
|
|
2507
2590
|
*/
|
|
2508
|
-
async checkObjectHash(objectName, hash2) {
|
|
2591
|
+
async checkObjectHash(objectName, hash2, meta) {
|
|
2509
2592
|
const obj = await this.statObject(`${this.prefix}${objectName}`, true);
|
|
2510
2593
|
if (!obj) {
|
|
2511
|
-
return { success: false, metaData: null };
|
|
2594
|
+
return { success: false, metaData: null, obj: null, equalMeta: false };
|
|
2512
2595
|
}
|
|
2513
2596
|
let metaData = {};
|
|
2514
|
-
const omitMeda = ["
|
|
2597
|
+
const omitMeda = ["content-type", "cache-control", "app-source"];
|
|
2515
2598
|
const objMeta = (0, import_omit.default)(obj.metaData, omitMeda);
|
|
2516
2599
|
metaData = {
|
|
2517
|
-
...objMeta
|
|
2518
|
-
...metaData
|
|
2600
|
+
...objMeta
|
|
2519
2601
|
};
|
|
2520
|
-
|
|
2602
|
+
let equalMeta = false;
|
|
2603
|
+
if (meta) {
|
|
2604
|
+
equalMeta = JSON.stringify(metaData) === JSON.stringify(meta);
|
|
2605
|
+
}
|
|
2606
|
+
return { success: obj.etag === hash2, metaData, obj, equalMeta };
|
|
2607
|
+
}
|
|
2608
|
+
getMetadata(pathname, meta = { "app-source": "user-app" }) {
|
|
2609
|
+
const isHtml = pathname.endsWith(".html");
|
|
2610
|
+
if (isHtml) {
|
|
2611
|
+
meta = {
|
|
2612
|
+
...meta,
|
|
2613
|
+
"content-type": "text/html; charset=utf-8",
|
|
2614
|
+
"cache-control": "no-cache"
|
|
2615
|
+
};
|
|
2616
|
+
} else {
|
|
2617
|
+
meta = {
|
|
2618
|
+
...meta,
|
|
2619
|
+
"content-type": getContentType(pathname),
|
|
2620
|
+
"cache-control": "max-age=31536000, immutable"
|
|
2621
|
+
};
|
|
2622
|
+
}
|
|
2623
|
+
return meta;
|
|
2521
2624
|
}
|
|
2522
2625
|
async copyObject(sourceObject, targetObject) {
|
|
2523
2626
|
const bucketName = this.bucketName;
|
|
@@ -2605,7 +2708,7 @@ var ConfigOssService = class extends OssBase {
|
|
|
2605
2708
|
|
|
2606
2709
|
// src/util/download.ts
|
|
2607
2710
|
import fs from "node:fs";
|
|
2608
|
-
import
|
|
2711
|
+
import path2 from "node:path";
|
|
2609
2712
|
var viewableExtensions = ["jpg", "jpeg", "png", "gif", "svg", "webp", "mp4", "webm", "mp3", "wav", "ogg", "pdf", "doc", "docx", "xls", "xlsx", "ppt", "pptx"];
|
|
2610
2713
|
var filterMetaDataKeys = (metaData, clearKeys = []) => {
|
|
2611
2714
|
const keys = Object.keys(metaData);
|
|
@@ -2651,7 +2754,7 @@ var sendObject = async ({ res, objectName, client, isDownload = false }) => {
|
|
|
2651
2754
|
};
|
|
2652
2755
|
var downloadObject = async ({ objectName, client, filePath }) => {
|
|
2653
2756
|
const objectStream = await client.getObject(objectName);
|
|
2654
|
-
const dir =
|
|
2757
|
+
const dir = path2.dirname(filePath);
|
|
2655
2758
|
if (!fs.existsSync(dir)) {
|
|
2656
2759
|
fs.mkdirSync(dir, { recursive: true });
|
|
2657
2760
|
}
|
|
@@ -2664,6 +2767,7 @@ export {
|
|
|
2664
2767
|
OssBase,
|
|
2665
2768
|
downloadObject,
|
|
2666
2769
|
filterMetaDataKeys,
|
|
2770
|
+
getContentType,
|
|
2667
2771
|
hash,
|
|
2668
2772
|
hashSringify,
|
|
2669
2773
|
sendObject
|