sa2kit 1.6.44 → 1.6.45
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/AliyunOSSProvider-2FARPAQD.js +15 -0
- package/dist/{AliyunOSSProvider-HCNGDJL7.js.map → AliyunOSSProvider-2FARPAQD.js.map} +1 -1
- package/dist/AliyunOSSProvider-UMVGVBDJ.mjs +9 -0
- package/dist/{AliyunOSSProvider-4W47OFEK.mjs.map → AliyunOSSProvider-UMVGVBDJ.mjs.map} +1 -1
- package/dist/CollisionBalls-BpHufX3H.d.mts +41 -0
- package/dist/CollisionBalls-BpHufX3H.d.ts +41 -0
- package/dist/ConfigService-QR67WYNK.mjs +4 -0
- package/dist/{ConfigService-V6ZK273Z.mjs.map → ConfigService-QR67WYNK.mjs.map} +1 -1
- package/dist/{ConfigService-3DIC6C3Q.js → ConfigService-UYC6ZTCM.js} +3 -3
- package/dist/{ConfigService-3DIC6C3Q.js.map → ConfigService-UYC6ZTCM.js.map} +1 -1
- package/dist/GenericOrderManager-e4WizpNf.d.mts +28 -0
- package/dist/GenericOrderManager-e4WizpNf.d.ts +28 -0
- package/dist/LocalStorageProvider-JQF5WK5H.js +15 -0
- package/dist/{LocalStorageProvider-PP7MA5OT.js.map → LocalStorageProvider-JQF5WK5H.js.map} +1 -1
- package/dist/LocalStorageProvider-PYOHETJV.mjs +9 -0
- package/dist/{LocalStorageProvider-3RVPCQB3.mjs.map → LocalStorageProvider-PYOHETJV.mjs.map} +1 -1
- package/dist/PMXParser-RLBDO7YK.mjs +4 -0
- package/dist/{PMXParser-RNVQL76A.mjs.map → PMXParser-RLBDO7YK.mjs.map} +1 -1
- package/dist/{PMXParser-2VTA737I.js → PMXParser-XHNO2KNI.js} +3 -3
- package/dist/{PMXParser-2VTA737I.js.map → PMXParser-XHNO2KNI.js.map} +1 -1
- package/dist/UniversalFileService-RBV6EN5J.js +15 -0
- package/dist/UniversalFileService-RBV6EN5J.js.map +1 -0
- package/dist/UniversalFileService-TNYKO6JN.mjs +9 -0
- package/dist/UniversalFileService-TNYKO6JN.mjs.map +1 -0
- package/dist/analytics/index.js +1 -1
- package/dist/analytics/index.mjs +1 -1
- package/dist/analytics/server/index.js +1 -1
- package/dist/analytics/server/index.mjs +1 -1
- package/dist/api/index.js +1 -1
- package/dist/api/index.mjs +1 -1
- package/dist/audioDetection/index.js +1 -1
- package/dist/audioDetection/index.mjs +1 -1
- package/dist/auth/client/index.js +1 -1
- package/dist/auth/client/index.mjs +1 -1
- package/dist/auth/components/index.js +1 -1
- package/dist/auth/components/index.mjs +1 -1
- package/dist/auth/hooks/index.js +1 -1
- package/dist/auth/hooks/index.mjs +1 -1
- package/dist/auth/index.js +1 -1
- package/dist/auth/index.mjs +1 -1
- package/dist/auth/middleware/index.js +1 -1
- package/dist/auth/middleware/index.mjs +1 -1
- package/dist/auth/routes/index.js +1 -1
- package/dist/auth/routes/index.mjs +1 -1
- package/dist/auth/schema/index.js +1 -1
- package/dist/auth/schema/index.mjs +1 -1
- package/dist/auth/services/index.js +1 -1
- package/dist/auth/services/index.mjs +1 -1
- package/dist/calendar/index.js +12 -12
- package/dist/calendar/index.mjs +5 -5
- package/dist/calendar/routes/index.js +1 -1
- package/dist/calendar/routes/index.mjs +1 -1
- package/dist/calendar/server.js +1 -1
- package/dist/calendar/server.mjs +1 -1
- package/dist/chunk-2PS5PIXV.mjs +443 -0
- package/dist/chunk-2PS5PIXV.mjs.map +1 -0
- package/dist/chunk-35CXIK5Y.js +277 -0
- package/dist/chunk-35CXIK5Y.js.map +1 -0
- package/dist/{chunk-GMIUSZXC.mjs → chunk-3JW4X3AC.mjs} +3 -3
- package/dist/{chunk-GMIUSZXC.mjs.map → chunk-3JW4X3AC.mjs.map} +1 -1
- package/dist/chunk-3M6T5KVD.js +453 -0
- package/dist/chunk-3M6T5KVD.js.map +1 -0
- package/dist/chunk-3TNR6IMC.js +168 -0
- package/dist/chunk-3TNR6IMC.js.map +1 -0
- package/dist/chunk-4NFOSCM6.js +34 -0
- package/dist/chunk-4NFOSCM6.js.map +1 -0
- package/dist/{chunk-3NHAT7D4.mjs → chunk-4VJQZSPU.mjs} +4 -3
- package/dist/chunk-4VJQZSPU.mjs.map +1 -0
- package/dist/{chunk-SCDDMIF6.js → chunk-4XXIBWCO.js} +66 -66
- package/dist/{chunk-SCDDMIF6.js.map → chunk-4XXIBWCO.js.map} +1 -1
- package/dist/chunk-6AHYPPUP.js +344 -0
- package/dist/chunk-6AHYPPUP.js.map +1 -0
- package/dist/{chunk-EGJPS7OL.mjs → chunk-6BJ76BYC.mjs} +3 -3
- package/dist/{chunk-EGJPS7OL.mjs.map → chunk-6BJ76BYC.mjs.map} +1 -1
- package/dist/chunk-76V7EKBX.mjs +796 -0
- package/dist/chunk-76V7EKBX.mjs.map +1 -0
- package/dist/chunk-ACLOJXXE.js +195 -0
- package/dist/chunk-ACLOJXXE.js.map +1 -0
- package/dist/chunk-AEXPAH7Z.mjs +32 -0
- package/dist/chunk-AEXPAH7Z.mjs.map +1 -0
- package/dist/chunk-CFGX3EKK.js +560 -0
- package/dist/chunk-CFGX3EKK.js.map +1 -0
- package/dist/chunk-D2HXMGXS.js +46 -0
- package/dist/chunk-D2HXMGXS.js.map +1 -0
- package/dist/chunk-DM2GUVUH.js +1201 -0
- package/dist/chunk-DM2GUVUH.js.map +1 -0
- package/dist/{chunk-ZWQJSZEY.js → chunk-DVENFCQY.js} +5 -4
- package/dist/chunk-DVENFCQY.js.map +1 -0
- package/dist/chunk-EONPKLEJ.mjs +163 -0
- package/dist/chunk-EONPKLEJ.mjs.map +1 -0
- package/dist/{chunk-L47ZOYHL.js → chunk-EUIXQPPU.js} +4 -4
- package/dist/{chunk-L47ZOYHL.js.map → chunk-EUIXQPPU.js.map} +1 -1
- package/dist/chunk-K7WNCB4V.mjs +554 -0
- package/dist/chunk-K7WNCB4V.mjs.map +1 -0
- package/dist/chunk-L4ZYBFB2.mjs +44 -0
- package/dist/chunk-L4ZYBFB2.mjs.map +1 -0
- package/dist/chunk-M4HGHTIC.js +820 -0
- package/dist/chunk-M4HGHTIC.js.map +1 -0
- package/dist/{chunk-HHVDOIPV.js → chunk-MZKATHB7.js} +4 -4
- package/dist/{chunk-HHVDOIPV.js.map → chunk-MZKATHB7.js.map} +1 -1
- package/dist/{chunk-UKT3PLON.mjs → chunk-NXQVTAOP.mjs} +3 -3
- package/dist/{chunk-UKT3PLON.mjs.map → chunk-NXQVTAOP.mjs.map} +1 -1
- package/dist/chunk-OBIPI4GU.mjs +266 -0
- package/dist/chunk-OBIPI4GU.mjs.map +1 -0
- package/dist/chunk-PAX4S7QM.mjs +94 -0
- package/dist/chunk-PAX4S7QM.mjs.map +1 -0
- package/dist/chunk-PXWDQFWV.mjs +192 -0
- package/dist/chunk-PXWDQFWV.mjs.map +1 -0
- package/dist/chunk-QROLPPXP.mjs +5797 -0
- package/dist/chunk-QROLPPXP.mjs.map +1 -0
- package/dist/chunk-TGNUEULF.mjs +1158 -0
- package/dist/chunk-TGNUEULF.mjs.map +1 -0
- package/dist/chunk-VBQFVXOW.mjs +2772 -0
- package/dist/chunk-VBQFVXOW.mjs.map +1 -0
- package/dist/chunk-VLZ5N6XZ.js +5888 -0
- package/dist/chunk-VLZ5N6XZ.js.map +1 -0
- package/dist/chunk-VTGPHE4Z.mjs +322 -0
- package/dist/chunk-VTGPHE4Z.mjs.map +1 -0
- package/dist/chunk-WMJKH4XE.mjs +30 -0
- package/dist/{chunk-BJTO5JO5.mjs.map → chunk-WMJKH4XE.mjs.map} +1 -1
- package/dist/chunk-XYQMAF7H.js +96 -0
- package/dist/chunk-XYQMAF7H.js.map +1 -0
- package/dist/chunk-Z3G3IXEF.js +2814 -0
- package/dist/chunk-Z3G3IXEF.js.map +1 -0
- package/dist/chunk-Z6ZWNWWR.js +35 -0
- package/dist/{chunk-DGUM43GV.js.map → chunk-Z6ZWNWWR.js.map} +1 -1
- package/dist/components/index.d.mts +378 -0
- package/dist/components/index.d.ts +378 -0
- package/dist/components/index.js +414 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/index.mjs +9 -0
- package/dist/components/index.mjs.map +1 -0
- package/dist/config/index.js +1 -1
- package/dist/config/index.mjs +1 -1
- package/dist/config/server/index.js +1 -1
- package/dist/config/server/index.mjs +1 -1
- package/dist/fileService-O3W6YXCI.mjs +4 -0
- package/dist/fileService-O3W6YXCI.mjs.map +1 -0
- package/dist/fileService-YUDIYOAS.js +13 -0
- package/dist/fileService-YUDIYOAS.js.map +1 -0
- package/dist/i18n/index.js +7 -7
- package/dist/i18n/index.mjs +1 -1
- package/dist/imageCrop/index.js +1 -1
- package/dist/imageCrop/index.mjs +1 -1
- package/dist/index.d.mts +9 -580
- package/dist/index.d.ts +9 -580
- package/dist/index.js +297 -956
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +103 -789
- package/dist/index.mjs.map +1 -1
- package/dist/logger/index.js +8 -8
- package/dist/logger/index.mjs +5 -2
- package/dist/mikuFireworks3D/index.js +1 -1
- package/dist/mikuFireworks3D/index.mjs +1 -1
- package/dist/mikuFireworks3D/server/index.js +1 -1
- package/dist/mikuFireworks3D/server/index.mjs +1 -1
- package/dist/mikuFusionGame/index.js +5 -5
- package/dist/mikuFusionGame/index.mjs +4 -4
- package/dist/mmd/admin/index.js +1 -1
- package/dist/mmd/admin/index.mjs +1 -1
- package/dist/mmd/index.js +2 -2
- package/dist/mmd/index.mjs +2 -2
- package/dist/mmd/server/index.js +1 -1
- package/dist/mmd/server/index.mjs +1 -1
- package/dist/music/index.js +1 -1
- package/dist/music/index.mjs +1 -1
- package/dist/music/server/index.js +1 -1
- package/dist/music/server/index.mjs +1 -1
- package/dist/navigation/index.d.mts +93 -0
- package/dist/navigation/index.d.ts +93 -0
- package/dist/navigation/index.js +29 -0
- package/dist/navigation/index.js.map +1 -0
- package/dist/navigation/index.mjs +4 -0
- package/dist/navigation/index.mjs.map +1 -0
- package/dist/popupConfig-BznThU1O.d.mts +330 -0
- package/dist/popupConfig-BznThU1O.d.ts +330 -0
- package/dist/portfolio/index.d.mts +57 -0
- package/dist/portfolio/index.d.ts +57 -0
- package/dist/portfolio/index.js +35 -0
- package/dist/portfolio/index.js.map +1 -0
- package/dist/portfolio/index.mjs +10 -0
- package/dist/portfolio/index.mjs.map +1 -0
- package/dist/request/index.js +1 -1
- package/dist/request/index.mjs +1 -1
- package/dist/showmasterpiece/index.d.mts +2524 -0
- package/dist/showmasterpiece/index.d.ts +2524 -0
- package/dist/showmasterpiece/index.js +9681 -0
- package/dist/showmasterpiece/index.js.map +1 -0
- package/dist/showmasterpiece/index.mjs +9631 -0
- package/dist/showmasterpiece/index.mjs.map +1 -0
- package/dist/showmasterpiece/migration/index.d.mts +120 -0
- package/dist/showmasterpiece/migration/index.d.ts +120 -0
- package/dist/showmasterpiece/migration/index.js +595 -0
- package/dist/showmasterpiece/migration/index.js.map +1 -0
- package/dist/showmasterpiece/migration/index.mjs +589 -0
- package/dist/showmasterpiece/migration/index.mjs.map +1 -0
- package/dist/showmasterpiece/scripts/index.d.mts +28 -0
- package/dist/showmasterpiece/scripts/index.d.ts +28 -0
- package/dist/showmasterpiece/scripts/index.js +327 -0
- package/dist/showmasterpiece/scripts/index.js.map +1 -0
- package/dist/showmasterpiece/scripts/index.mjs +325 -0
- package/dist/showmasterpiece/scripts/index.mjs.map +1 -0
- package/dist/showmasterpiece/server/index.d.mts +2698 -0
- package/dist/showmasterpiece/server/index.d.ts +2698 -0
- package/dist/showmasterpiece/server/index.js +179 -0
- package/dist/showmasterpiece/server/index.js.map +1 -0
- package/dist/showmasterpiece/server/index.mjs +6 -0
- package/dist/showmasterpiece/server/index.mjs.map +1 -0
- package/dist/storage/index.js +8 -8
- package/dist/storage/index.mjs +2 -2
- package/dist/testYourself/admin/index.js +1 -1
- package/dist/testYourself/admin/index.mjs +1 -1
- package/dist/testYourself/index.js +2 -2
- package/dist/testYourself/index.mjs +2 -2
- package/dist/testYourself/server/index.js +1 -1
- package/dist/testYourself/server/index.mjs +1 -1
- package/dist/universalExport/index.js +154 -1195
- package/dist/universalExport/index.js.map +1 -1
- package/dist/universalExport/index.mjs +2 -1157
- package/dist/universalExport/index.mjs.map +1 -1
- package/dist/universalExport/server/index.js +5 -3
- package/dist/universalExport/server/index.js.map +1 -1
- package/dist/universalExport/server/index.mjs +4 -2
- package/dist/universalExport/server/index.mjs.map +1 -1
- package/dist/universalFile/index.js +10 -7
- package/dist/universalFile/index.js.map +1 -1
- package/dist/universalFile/index.mjs +6 -2
- package/dist/universalFile/index.mjs.map +1 -1
- package/dist/universalFile/server/index.d.mts +592 -265
- package/dist/universalFile/server/index.d.ts +592 -265
- package/dist/universalFile/server/index.js +298 -5637
- package/dist/universalFile/server/index.js.map +1 -1
- package/dist/universalFile/server/index.mjs +8 -5559
- package/dist/universalFile/server/index.mjs.map +1 -1
- package/dist/utils/index.js +12 -12
- package/dist/utils/index.mjs +3 -3
- package/package.json +36 -1
- package/dist/AliyunOSSProvider-4W47OFEK.mjs +0 -6
- package/dist/AliyunOSSProvider-HCNGDJL7.js +0 -15
- package/dist/ConfigService-V6ZK273Z.mjs +0 -4
- package/dist/LocalStorageProvider-3RVPCQB3.mjs +0 -6
- package/dist/LocalStorageProvider-PP7MA5OT.js +0 -15
- package/dist/PMXParser-RNVQL76A.mjs +0 -4
- package/dist/chunk-25OFOKNF.js +0 -171
- package/dist/chunk-25OFOKNF.js.map +0 -1
- package/dist/chunk-3DXPQ4YV.mjs +0 -165
- package/dist/chunk-3DXPQ4YV.mjs.map +0 -1
- package/dist/chunk-3NHAT7D4.mjs.map +0 -1
- package/dist/chunk-BJTO5JO5.mjs +0 -10
- package/dist/chunk-CIVO4R6N.mjs +0 -37
- package/dist/chunk-CIVO4R6N.mjs.map +0 -1
- package/dist/chunk-DGUM43GV.js +0 -12
- package/dist/chunk-HDMIOOZY.mjs +0 -546
- package/dist/chunk-HDMIOOZY.mjs.map +0 -1
- package/dist/chunk-HJ6MH7J7.js +0 -552
- package/dist/chunk-HJ6MH7J7.js.map +0 -1
- package/dist/chunk-KH6RQ4J5.js +0 -28
- package/dist/chunk-KH6RQ4J5.js.map +0 -1
- package/dist/chunk-Q5EDCKQA.js +0 -336
- package/dist/chunk-Q5EDCKQA.js.map +0 -1
- package/dist/chunk-YOTQG4NP.mjs +0 -314
- package/dist/chunk-YOTQG4NP.mjs.map +0 -1
- package/dist/chunk-ZGVB35L2.mjs +0 -25
- package/dist/chunk-ZGVB35L2.mjs.map +0 -1
- package/dist/chunk-ZRAW3HXA.js +0 -43
- package/dist/chunk-ZRAW3HXA.js.map +0 -1
- package/dist/chunk-ZWQJSZEY.js.map +0 -1
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { a as UniversalFileServiceConfig, S as StorageConfig, I as IStorageProvider, b as StorageType, c as UploadFileInfo, d as StorageResult, e as ICDNProvider, C as CDNType, f as CDNConfig, g as CDNResult, h as IFileProcessor, P as ProcessorType, i as ProcessingOptions, j as ProcessingResult, k as IFileMetadataRepository, A as AliyunOSSConfig, l as AliyunCDNConfig, L as LocalStorageConfig
|
|
1
|
+
import { a as UniversalFileServiceConfig, S as StorageConfig, I as IStorageProvider, b as StorageType, c as UploadFileInfo, d as StorageResult, e as ICDNProvider, C as CDNType, f as CDNConfig, g as CDNResult, h as IFileProcessor, P as ProcessorType, i as ProcessingOptions, j as ProcessingResult, k as IFileMetadataRepository, U as UniversalFileService, A as AliyunOSSConfig, l as AliyunCDNConfig, L as LocalStorageConfig } from '../../UniversalFileService-Ct4baUMz.js';
|
|
2
2
|
export { B as CDNProviderError, o as CDNStats, m as CacheConfig, t as FileEvent, u as FileEventListener, v as FileEventType, y as FileProcessingError, r as FileQueryOptions, q as FileRecord, w as FileServiceError, F as FileServicePersistenceConfig, x as FileUploadError, s as PaginatedResult, p as ProcessorInfo, n as StorageMetadata, z as StorageProviderError } from '../../UniversalFileService-Ct4baUMz.js';
|
|
3
3
|
import { I as ImageProcessingOptions, l as AudioProcessingOptions, V as VideoProcessingOptions } from '../../types-CK4We_aI.js';
|
|
4
4
|
import { EventEmitter } from 'events';
|
|
5
5
|
import { NextResponse } from 'next/server';
|
|
6
|
+
import { drizzle } from 'drizzle-orm/postgres-js';
|
|
6
7
|
import * as drizzle_orm from 'drizzle-orm';
|
|
7
8
|
import * as drizzle_orm_pg_core from 'drizzle-orm/pg-core';
|
|
8
9
|
|
|
@@ -1105,6 +1106,10 @@ declare class CacheManager {
|
|
|
1105
1106
|
*/
|
|
1106
1107
|
close(): Promise<void>;
|
|
1107
1108
|
}
|
|
1109
|
+
/**
|
|
1110
|
+
* 单例缓存管理器实例
|
|
1111
|
+
*/
|
|
1112
|
+
declare const cacheManager: CacheManager;
|
|
1108
1113
|
|
|
1109
1114
|
/**
|
|
1110
1115
|
* 通用文件服务性能监控器
|
|
@@ -1301,6 +1306,10 @@ declare class PerformanceMonitor {
|
|
|
1301
1306
|
*/
|
|
1302
1307
|
reset(): void;
|
|
1303
1308
|
}
|
|
1309
|
+
/**
|
|
1310
|
+
* 单例性能监控器实例
|
|
1311
|
+
*/
|
|
1312
|
+
declare const performanceMonitor: PerformanceMonitor;
|
|
1304
1313
|
|
|
1305
1314
|
/**
|
|
1306
1315
|
* CDN缓存策略管理
|
|
@@ -1903,6 +1912,152 @@ declare class ApiError extends Error {
|
|
|
1903
1912
|
*/
|
|
1904
1913
|
toNextResponse(): NextResponse;
|
|
1905
1914
|
}
|
|
1915
|
+
/**
|
|
1916
|
+
* API错误工厂类
|
|
1917
|
+
* 提供便捷的错误创建方法
|
|
1918
|
+
*/
|
|
1919
|
+
declare class ApiErrorFactory {
|
|
1920
|
+
/**
|
|
1921
|
+
* 创建文件不存在错误
|
|
1922
|
+
*/
|
|
1923
|
+
static fileNotFound(fileId?: string): ApiError;
|
|
1924
|
+
/**
|
|
1925
|
+
* 创建文件过大错误
|
|
1926
|
+
*/
|
|
1927
|
+
static fileTooLarge(maxSize: number, actualSize: number): ApiError;
|
|
1928
|
+
/**
|
|
1929
|
+
* 创建不支持的文件类型错误
|
|
1930
|
+
*/
|
|
1931
|
+
static fileTypeNotSupported(mimeType: string, supportedTypes?: string[]): ApiError;
|
|
1932
|
+
/**
|
|
1933
|
+
* 创建文件上传失败错误
|
|
1934
|
+
*/
|
|
1935
|
+
static fileUploadFailed(reason?: string): ApiError;
|
|
1936
|
+
/**
|
|
1937
|
+
* 创建文件夹不存在错误
|
|
1938
|
+
*/
|
|
1939
|
+
static folderNotFound(folderId?: string): ApiError;
|
|
1940
|
+
/**
|
|
1941
|
+
* 创建文件夹不为空错误
|
|
1942
|
+
*/
|
|
1943
|
+
static folderNotEmpty(folderId: string, fileCount: number, subfolderCount: number): ApiError;
|
|
1944
|
+
/**
|
|
1945
|
+
* 创建参数验证错误
|
|
1946
|
+
*/
|
|
1947
|
+
static validationError(field: string, value: any, rule: string): ApiError;
|
|
1948
|
+
/**
|
|
1949
|
+
* 创建身份验证错误
|
|
1950
|
+
*/
|
|
1951
|
+
static authenticationError(reason?: string): ApiError;
|
|
1952
|
+
/**
|
|
1953
|
+
* 创建权限不足错误
|
|
1954
|
+
*/
|
|
1955
|
+
static authorizationError(resource?: string, action?: string): ApiError;
|
|
1956
|
+
/**
|
|
1957
|
+
* 创建资源冲突错误
|
|
1958
|
+
*/
|
|
1959
|
+
static conflict(resource: string, reason?: string): ApiError;
|
|
1960
|
+
/**
|
|
1961
|
+
* 创建请求频率超限错误
|
|
1962
|
+
*/
|
|
1963
|
+
static rateLimitExceeded(limit: number, windowMs: number): ApiError;
|
|
1964
|
+
/**
|
|
1965
|
+
* 创建存储服务错误
|
|
1966
|
+
*/
|
|
1967
|
+
static storageProviderError(provider: string, reason?: string): ApiError;
|
|
1968
|
+
/**
|
|
1969
|
+
* 创建存储配额已满错误
|
|
1970
|
+
*/
|
|
1971
|
+
static storageQuotaExceeded(used: number, limit: number): ApiError;
|
|
1972
|
+
/**
|
|
1973
|
+
* 创建分享不存在错误
|
|
1974
|
+
*/
|
|
1975
|
+
static shareNotFound(shareCode?: string): ApiError;
|
|
1976
|
+
/**
|
|
1977
|
+
* 创建分享已过期错误
|
|
1978
|
+
*/
|
|
1979
|
+
static shareExpired(shareCode: string, expiredAt: string): ApiError;
|
|
1980
|
+
/**
|
|
1981
|
+
* 创建分享密码错误
|
|
1982
|
+
*/
|
|
1983
|
+
static sharePasswordIncorrect(shareCode: string): ApiError;
|
|
1984
|
+
/**
|
|
1985
|
+
* 创建分享下载次数超限错误
|
|
1986
|
+
*/
|
|
1987
|
+
static shareDownloadLimitExceeded(shareCode: string, maxDownloads: number): ApiError;
|
|
1988
|
+
}
|
|
1989
|
+
/**
|
|
1990
|
+
* API响应工具类
|
|
1991
|
+
* 提供标准化的成功响应格式
|
|
1992
|
+
*/
|
|
1993
|
+
declare class ApiResponseHelper {
|
|
1994
|
+
/**
|
|
1995
|
+
* 创建成功响应
|
|
1996
|
+
*/
|
|
1997
|
+
static success<T>(data?: T, meta?: {
|
|
1998
|
+
total?: number;
|
|
1999
|
+
page?: number;
|
|
2000
|
+
pageSize?: number;
|
|
2001
|
+
totalPages?: number;
|
|
2002
|
+
requestId?: string;
|
|
2003
|
+
}): ApiResponse<T>;
|
|
2004
|
+
/**
|
|
2005
|
+
* 创建分页响应
|
|
2006
|
+
*/
|
|
2007
|
+
static paginated<T>(data: T[], total: number, page: number, pageSize: number, requestId?: string): ApiResponse<{
|
|
2008
|
+
items: T[];
|
|
2009
|
+
pagination: any;
|
|
2010
|
+
}>;
|
|
2011
|
+
/**
|
|
2012
|
+
* 创建空响应
|
|
2013
|
+
*/
|
|
2014
|
+
static empty(requestId?: string): ApiResponse<null>;
|
|
2015
|
+
/**
|
|
2016
|
+
* 转换为NextResponse
|
|
2017
|
+
*/
|
|
2018
|
+
static toNextResponse<T>(response: ApiResponse<T>, status?: number): NextResponse;
|
|
2019
|
+
}
|
|
2020
|
+
/**
|
|
2021
|
+
* 参数验证工具
|
|
2022
|
+
*/
|
|
2023
|
+
declare class ValidationHelper {
|
|
2024
|
+
/**
|
|
2025
|
+
* 验证必填参数
|
|
2026
|
+
*/
|
|
2027
|
+
static required(value: any, fieldName: string): void;
|
|
2028
|
+
/**
|
|
2029
|
+
* 验证字符串长度
|
|
2030
|
+
*/
|
|
2031
|
+
static stringLength(value: string, fieldName: string, min?: number, max?: number): void;
|
|
2032
|
+
/**
|
|
2033
|
+
* 验证数字范围
|
|
2034
|
+
*/
|
|
2035
|
+
static numberRange(value: number, fieldName: string, min?: number, max?: number): void;
|
|
2036
|
+
/**
|
|
2037
|
+
* 验证数组长度
|
|
2038
|
+
*/
|
|
2039
|
+
static arrayLength(value: any[], fieldName: string, min?: number, max?: number): void;
|
|
2040
|
+
/**
|
|
2041
|
+
* 验证文件类型
|
|
2042
|
+
*/
|
|
2043
|
+
static fileType(mimeType: string, allowedTypes: string[]): void;
|
|
2044
|
+
/**
|
|
2045
|
+
* 验证文件大小
|
|
2046
|
+
*/
|
|
2047
|
+
static fileSize(size: number, maxSize: number): void;
|
|
2048
|
+
/**
|
|
2049
|
+
* 验证UUID格式
|
|
2050
|
+
*/
|
|
2051
|
+
static uuid(value: string, fieldName: string): void;
|
|
2052
|
+
/**
|
|
2053
|
+
* 验证邮箱格式
|
|
2054
|
+
*/
|
|
2055
|
+
static email(value: string, fieldName: string): void;
|
|
2056
|
+
/**
|
|
2057
|
+
* 验证URL格式
|
|
2058
|
+
*/
|
|
2059
|
+
static url(value: string, fieldName: string): void;
|
|
2060
|
+
}
|
|
1906
2061
|
|
|
1907
2062
|
/**
|
|
1908
2063
|
* Drizzle ORM 文件元数据持久化适配器
|
|
@@ -1978,281 +2133,50 @@ interface DrizzleRepositoryConfig {
|
|
|
1978
2133
|
declare function createDrizzleRepository(config: DrizzleRepositoryConfig): IFileMetadataRepository;
|
|
1979
2134
|
|
|
1980
2135
|
/**
|
|
1981
|
-
*
|
|
2136
|
+
* Drizzle ORM 适配器
|
|
1982
2137
|
*
|
|
1983
|
-
*
|
|
2138
|
+
* 实现 IFileMetadataRepository 接口
|
|
1984
2139
|
*/
|
|
1985
2140
|
|
|
1986
|
-
|
|
1987
|
-
|
|
1988
|
-
|
|
1989
|
-
|
|
1990
|
-
/**
|
|
1991
|
-
* 默认允许的 MIME 类型
|
|
1992
|
-
*/
|
|
1993
|
-
declare const DEFAULT_ALLOWED_MIME_TYPES: string[];
|
|
1994
|
-
/**
|
|
1995
|
-
* 默认缓存配置
|
|
1996
|
-
*/
|
|
1997
|
-
declare const DEFAULT_CACHE_CONFIG: {
|
|
1998
|
-
enabled: boolean;
|
|
1999
|
-
metadataTTL: number;
|
|
2000
|
-
urlTTL: number;
|
|
2001
|
-
};
|
|
2002
|
-
/**
|
|
2003
|
-
* 默认文件服务配置
|
|
2004
|
-
*/
|
|
2005
|
-
declare const DEFAULT_FILE_SERVICE_CONFIG: {
|
|
2006
|
-
readonly maxFileSize: 104857600;
|
|
2007
|
-
readonly allowedMimeTypes: string[];
|
|
2008
|
-
readonly cache: {
|
|
2009
|
-
enabled: boolean;
|
|
2010
|
-
metadataTTL: number;
|
|
2011
|
-
urlTTL: number;
|
|
2012
|
-
};
|
|
2013
|
-
readonly enableMonitoring: false;
|
|
2014
|
-
};
|
|
2015
|
-
/**
|
|
2016
|
-
* 从环境变量加载阿里云 OSS 配置
|
|
2017
|
-
*
|
|
2018
|
-
* 支持的环境变量:
|
|
2019
|
-
* - ALIYUN_OSS_REGION
|
|
2020
|
-
* - ALIYUN_OSS_BUCKET
|
|
2021
|
-
* - ALIYUN_OSS_ACCESS_KEY_ID
|
|
2022
|
-
* - ALIYUN_OSS_ACCESS_KEY_SECRET
|
|
2023
|
-
* - ALIYUN_OSS_CUSTOM_DOMAIN (可选)
|
|
2024
|
-
* - ALIYUN_OSS_SECURE (可选,默认 false)
|
|
2025
|
-
* - ALIYUN_OSS_INTERNAL (可选,默认 false)
|
|
2026
|
-
*/
|
|
2027
|
-
declare function loadOSSConfigFromEnv(): AliyunOSSConfig | null;
|
|
2028
|
-
/**
|
|
2029
|
-
* 从环境变量加载阿里云 CDN 配置
|
|
2030
|
-
*
|
|
2031
|
-
* 支持的环境变量:
|
|
2032
|
-
* - ALIYUN_CDN_DOMAIN
|
|
2033
|
-
* - ALIYUN_CDN_ACCESS_KEY_ID
|
|
2034
|
-
* - ALIYUN_CDN_ACCESS_KEY_SECRET
|
|
2035
|
-
* - ALIYUN_CDN_REGION (可选)
|
|
2036
|
-
*/
|
|
2037
|
-
declare function loadCDNConfigFromEnv(): AliyunCDNConfig | null;
|
|
2038
|
-
/**
|
|
2039
|
-
* 获取默认本地存储配置
|
|
2040
|
-
*
|
|
2041
|
-
* 支持的环境变量:
|
|
2042
|
-
* - FILE_STORAGE_PATH (可选,默认 'uploads')
|
|
2043
|
-
* - FILE_BASE_URL (可选,默认 '/uploads')
|
|
2044
|
-
*/
|
|
2045
|
-
declare function getDefaultLocalStorage(): LocalStorageConfig;
|
|
2046
|
-
/**
|
|
2047
|
-
* 从环境变量加载完整的文件服务配置
|
|
2048
|
-
*
|
|
2049
|
-
* 配置优先级:
|
|
2050
|
-
* 1. 阿里云 OSS(如果配置完整)
|
|
2051
|
-
* 2. 本地存储(备用方案)
|
|
2052
|
-
*
|
|
2053
|
-
* 支持的环境变量:
|
|
2054
|
-
* - MAX_FILE_SIZE (可选,默认 100MB)
|
|
2055
|
-
* - ENABLE_CACHE (可选,默认 false)
|
|
2056
|
-
* - METADATA_CACHE_TTL (可选,默认 3600秒)
|
|
2057
|
-
* - URL_CACHE_TTL (可选,默认 1800秒)
|
|
2058
|
-
* - ENABLE_FILE_MONITORING (可选,默认 false)
|
|
2059
|
-
*/
|
|
2060
|
-
declare function loadConfigFromEnv(): Partial<UniversalFileServiceConfig>;
|
|
2061
|
-
/**
|
|
2062
|
-
* 配置服务接口
|
|
2063
|
-
*
|
|
2064
|
-
* 用于从配置管理系统加载配置
|
|
2065
|
-
*/
|
|
2066
|
-
interface IConfigService {
|
|
2067
|
-
/**
|
|
2068
|
-
* 获取配置值
|
|
2069
|
-
*/
|
|
2070
|
-
getConfig(key: string, defaultValue?: any): Promise<any>;
|
|
2071
|
-
}
|
|
2072
|
-
/**
|
|
2073
|
-
* 配置键映射
|
|
2074
|
-
*/
|
|
2075
|
-
interface OSSConfigKeyMapping {
|
|
2076
|
-
region: string;
|
|
2077
|
-
bucket: string;
|
|
2078
|
-
accessKeyId: string;
|
|
2079
|
-
accessKeySecret: string;
|
|
2080
|
-
customDomain?: string;
|
|
2081
|
-
secure?: string;
|
|
2082
|
-
internal?: string;
|
|
2141
|
+
interface DrizzleAdapterOptions {
|
|
2142
|
+
db: any;
|
|
2143
|
+
fileMetadata: any;
|
|
2144
|
+
fileStorageProviders: any;
|
|
2083
2145
|
}
|
|
2146
|
+
declare function createDrizzleFileRepository(options: DrizzleAdapterOptions): IFileMetadataRepository;
|
|
2147
|
+
|
|
2084
2148
|
/**
|
|
2085
|
-
*
|
|
2086
|
-
*/
|
|
2087
|
-
declare const DEFAULT_OSS_CONFIG_KEYS: OSSConfigKeyMapping;
|
|
2088
|
-
/**
|
|
2089
|
-
* 从配置服务加载 OSS 配置
|
|
2149
|
+
* 通用文件服务 - PostgreSQL 数据库表结构定义
|
|
2090
2150
|
*
|
|
2091
|
-
*
|
|
2151
|
+
* 这个文件定义了通用文件服务的完整数据库表结构,使用Drizzle ORM框架。
|
|
2152
|
+
* 支持多模块文件管理、版本控制、分享功能、处理记录等。
|
|
2092
2153
|
*
|
|
2093
|
-
*
|
|
2094
|
-
*
|
|
2154
|
+
* 表结构概览:
|
|
2155
|
+
* - file_storage_providers: 存储提供者配置表
|
|
2156
|
+
* - file_folders: 文件夹表(支持层级结构)
|
|
2157
|
+
* - file_metadata: 文件元数据主表
|
|
2158
|
+
* - file_versions: 文件版本表
|
|
2159
|
+
* - file_processing_records: 文件处理记录表
|
|
2160
|
+
* - file_shares: 文件分享表
|
|
2161
|
+
* - file_access_logs: 文件访问日志表
|
|
2162
|
+
* - file_thumbnails: 文件缩略图表
|
|
2095
2163
|
*
|
|
2096
|
-
*
|
|
2097
|
-
*
|
|
2098
|
-
*
|
|
2164
|
+
* 设计特点:
|
|
2165
|
+
* - 支持多存储提供者(本地、OSS、CDN等)
|
|
2166
|
+
* - 完整的文件版本管理
|
|
2167
|
+
* - 灵活的文件夹层级结构
|
|
2168
|
+
* - 详细的访问日志和统计
|
|
2169
|
+
* - 文件处理流水线记录
|
|
2170
|
+
* - 安全的分享机制
|
|
2099
2171
|
*
|
|
2100
|
-
*
|
|
2101
|
-
*
|
|
2102
|
-
* bucket: 'oss_bucket',
|
|
2103
|
-
* // ...
|
|
2104
|
-
* });
|
|
2105
|
-
* ```
|
|
2172
|
+
* @fileoverview 数据库表结构 - 通用文件服务 (PostgreSQL)
|
|
2173
|
+
* @package sa2kit/universalFile/server
|
|
2106
2174
|
*/
|
|
2107
|
-
declare function loadOSSConfigFromService(configService: IConfigService, keyMapping?: Partial<OSSConfigKeyMapping>): Promise<AliyunOSSConfig | null>;
|
|
2108
2175
|
/**
|
|
2109
|
-
*
|
|
2110
|
-
*
|
|
2111
|
-
* 按优先级顺序尝试加载配置,返回第一个成功的配置
|
|
2112
|
-
*
|
|
2113
|
-
* @param loaders - 配置加载器数组(按优先级排序)
|
|
2176
|
+
* 存储提供者配置表 (file_storage_providers)
|
|
2114
2177
|
*
|
|
2115
|
-
*
|
|
2116
|
-
*
|
|
2117
|
-
* const config = await loadConfigWithFallback([
|
|
2118
|
-
* async () => loadOSSConfigFromService(configService),
|
|
2119
|
-
* () => loadOSSConfigFromEnv(),
|
|
2120
|
-
* ]);
|
|
2121
|
-
* ```
|
|
2122
|
-
*/
|
|
2123
|
-
declare function loadConfigWithFallback<T>(loaders: Array<() => Promise<T | null>>): Promise<T | null>;
|
|
2124
|
-
/**
|
|
2125
|
-
* 文件服务工厂选项
|
|
2126
|
-
*/
|
|
2127
|
-
interface FileServiceFactoryOptions {
|
|
2128
|
-
/**
|
|
2129
|
-
* 配置加载器(按优先级排序)
|
|
2130
|
-
*/
|
|
2131
|
-
configLoaders?: Array<() => Promise<Partial<UniversalFileServiceConfig> | null>>;
|
|
2132
|
-
/**
|
|
2133
|
-
* 持久化仓储(可选)
|
|
2134
|
-
*/
|
|
2135
|
-
repository?: any;
|
|
2136
|
-
/**
|
|
2137
|
-
* 自定义配置(会覆盖加载的配置)
|
|
2138
|
-
*/
|
|
2139
|
-
customConfig?: Partial<UniversalFileServiceConfig>;
|
|
2140
|
-
/**
|
|
2141
|
-
* 是否自动初始化服务
|
|
2142
|
-
*/
|
|
2143
|
-
autoInitialize?: boolean;
|
|
2144
|
-
}
|
|
2145
|
-
/**
|
|
2146
|
-
* 创建文件服务(工厂函数)
|
|
2147
|
-
*
|
|
2148
|
-
* 通用的服务创建函数,支持多种配置源和可选的持久化
|
|
2149
|
-
*
|
|
2150
|
-
* @param options - 工厂选项
|
|
2151
|
-
*
|
|
2152
|
-
* @example
|
|
2153
|
-
* ```typescript
|
|
2154
|
-
* import {
|
|
2155
|
-
* createFileServiceWithFactory,
|
|
2156
|
-
* loadOSSConfigFromService,
|
|
2157
|
-
* loadConfigFromEnv
|
|
2158
|
-
* } from 'sa2kit/universalFile/server';
|
|
2159
|
-
*
|
|
2160
|
-
* const service = await createFileServiceWithFactory({
|
|
2161
|
-
* configLoaders: [
|
|
2162
|
-
* async () => {
|
|
2163
|
-
* const ossConfig = await loadOSSConfigFromService(configService);
|
|
2164
|
-
* return ossConfig ? { storage: ossConfig, defaultStorage: 'aliyun-oss' } : null;
|
|
2165
|
-
* },
|
|
2166
|
-
* () => Promise.resolve(loadConfigFromEnv()),
|
|
2167
|
-
* ],
|
|
2168
|
-
* repository: myRepository,
|
|
2169
|
-
* autoInitialize: true,
|
|
2170
|
-
* });
|
|
2171
|
-
* ```
|
|
2172
|
-
*/
|
|
2173
|
-
declare function createFileServiceWithFactory(options?: FileServiceFactoryOptions): Promise<UniversalFileService>;
|
|
2174
|
-
/**
|
|
2175
|
-
* 单例工厂返回值
|
|
2176
|
-
*/
|
|
2177
|
-
interface SingletonFactory<T> {
|
|
2178
|
-
/**
|
|
2179
|
-
* 获取单例实例
|
|
2180
|
-
*/
|
|
2181
|
-
get(): Promise<T>;
|
|
2182
|
-
/**
|
|
2183
|
-
* 重置单例(主要用于测试)
|
|
2184
|
-
*/
|
|
2185
|
-
reset(): void;
|
|
2186
|
-
/**
|
|
2187
|
-
* 检查单例是否已创建
|
|
2188
|
-
*/
|
|
2189
|
-
isCreated(): boolean;
|
|
2190
|
-
}
|
|
2191
|
-
/**
|
|
2192
|
-
* 创建单例工厂
|
|
2193
|
-
*
|
|
2194
|
-
* 提供单例模式的通用实现,适用于需要单例的服务
|
|
2195
|
-
*
|
|
2196
|
-
* @param factory - 创建实例的工厂函数
|
|
2197
|
-
* @param options - 单例选项
|
|
2198
|
-
*
|
|
2199
|
-
* @example
|
|
2200
|
-
* ```typescript
|
|
2201
|
-
* const fileServiceSingleton = createSingleton(
|
|
2202
|
-
* async () => {
|
|
2203
|
-
* const service = new UniversalFileService(config);
|
|
2204
|
-
* await service.initialize();
|
|
2205
|
-
* return service;
|
|
2206
|
-
* },
|
|
2207
|
-
* { autoInitialize: true }
|
|
2208
|
-
* );
|
|
2209
|
-
*
|
|
2210
|
-
* // 获取单例
|
|
2211
|
-
* const service = await fileServiceSingleton.get();
|
|
2212
|
-
*
|
|
2213
|
-
* // 重置(测试用)
|
|
2214
|
-
* fileServiceSingleton.reset();
|
|
2215
|
-
* ```
|
|
2216
|
-
*/
|
|
2217
|
-
declare function createSingleton<T>(factory: () => Promise<T>, options?: {
|
|
2218
|
-
/** 是否在第一次获取时自动初始化(默认 true) */
|
|
2219
|
-
autoInitialize?: boolean;
|
|
2220
|
-
/** 单例名称(用于日志) */
|
|
2221
|
-
name?: string;
|
|
2222
|
-
}): SingletonFactory<T>;
|
|
2223
|
-
|
|
2224
|
-
/**
|
|
2225
|
-
* 通用文件服务 - PostgreSQL 数据库表结构定义
|
|
2226
|
-
*
|
|
2227
|
-
* 这个文件定义了通用文件服务的完整数据库表结构,使用Drizzle ORM框架。
|
|
2228
|
-
* 支持多模块文件管理、版本控制、分享功能、处理记录等。
|
|
2229
|
-
*
|
|
2230
|
-
* 表结构概览:
|
|
2231
|
-
* - file_storage_providers: 存储提供者配置表
|
|
2232
|
-
* - file_folders: 文件夹表(支持层级结构)
|
|
2233
|
-
* - file_metadata: 文件元数据主表
|
|
2234
|
-
* - file_versions: 文件版本表
|
|
2235
|
-
* - file_processing_records: 文件处理记录表
|
|
2236
|
-
* - file_shares: 文件分享表
|
|
2237
|
-
* - file_access_logs: 文件访问日志表
|
|
2238
|
-
* - file_thumbnails: 文件缩略图表
|
|
2239
|
-
*
|
|
2240
|
-
* 设计特点:
|
|
2241
|
-
* - 支持多存储提供者(本地、OSS、CDN等)
|
|
2242
|
-
* - 完整的文件版本管理
|
|
2243
|
-
* - 灵活的文件夹层级结构
|
|
2244
|
-
* - 详细的访问日志和统计
|
|
2245
|
-
* - 文件处理流水线记录
|
|
2246
|
-
* - 安全的分享机制
|
|
2247
|
-
*
|
|
2248
|
-
* @fileoverview 数据库表结构 - 通用文件服务 (PostgreSQL)
|
|
2249
|
-
* @package sa2kit/universalFile/server
|
|
2250
|
-
*/
|
|
2251
|
-
/**
|
|
2252
|
-
* 存储提供者配置表 (file_storage_providers)
|
|
2253
|
-
*
|
|
2254
|
-
* 管理不同的文件存储提供者配置,支持本地存储、云存储等多种方式。
|
|
2255
|
-
* 每个提供者有独立的配置和优先级设置。
|
|
2178
|
+
* 管理不同的文件存储提供者配置,支持本地存储、云存储等多种方式。
|
|
2179
|
+
* 每个提供者有独立的配置和优先级设置。
|
|
2256
2180
|
*/
|
|
2257
2181
|
declare const fileStorageProviders: drizzle_orm_pg_core.PgTableWithColumns<{
|
|
2258
2182
|
name: "file_storage_providers";
|
|
@@ -4513,4 +4437,407 @@ type NewFileAccessLog = typeof fileAccessLogs.$inferInsert;
|
|
|
4513
4437
|
type FileThumbnail = typeof fileThumbnails.$inferSelect;
|
|
4514
4438
|
type NewFileThumbnail = typeof fileThumbnails.$inferInsert;
|
|
4515
4439
|
|
|
4516
|
-
|
|
4440
|
+
/**
|
|
4441
|
+
* 通用文件服务数据库操作类
|
|
4442
|
+
* 提供基础的文件数据库CRUD操作
|
|
4443
|
+
*/
|
|
4444
|
+
|
|
4445
|
+
interface FileQueryOptions {
|
|
4446
|
+
moduleId?: string;
|
|
4447
|
+
businessId?: string;
|
|
4448
|
+
folderId?: string;
|
|
4449
|
+
offset?: number;
|
|
4450
|
+
limit?: number;
|
|
4451
|
+
isDeleted?: boolean;
|
|
4452
|
+
uploaderId?: string;
|
|
4453
|
+
}
|
|
4454
|
+
declare class FileDbService {
|
|
4455
|
+
private db;
|
|
4456
|
+
constructor(db: ReturnType<typeof drizzle>);
|
|
4457
|
+
getDefaultStorageProvider(): Promise<FileStorageProvider | null>;
|
|
4458
|
+
createStorageProvider(provider: NewFileStorageProvider): Promise<FileStorageProvider>;
|
|
4459
|
+
getFolderByPath(path: string, moduleId?: string): Promise<FileFolder | null>;
|
|
4460
|
+
createFolder(folder: NewFileFolder): Promise<FileFolder>;
|
|
4461
|
+
getFiles(options?: FileQueryOptions): Promise<{
|
|
4462
|
+
files: FileMetadata[];
|
|
4463
|
+
total: number;
|
|
4464
|
+
}>;
|
|
4465
|
+
getFileById(id: string): Promise<FileMetadata | null>;
|
|
4466
|
+
createFile(file: NewFileMetadata): Promise<FileMetadata>;
|
|
4467
|
+
updateFile(id: string, updates: Partial<FileMetadata>): Promise<FileMetadata>;
|
|
4468
|
+
deleteFile(id: string): Promise<void>;
|
|
4469
|
+
getFolderById(folderId: string): Promise<FileFolder | null>;
|
|
4470
|
+
getFolders(moduleId?: string, businessId?: string): Promise<FileFolder[]>;
|
|
4471
|
+
updateFolder(folderId: string, updates: Partial<FileFolder>): Promise<FileFolder>;
|
|
4472
|
+
deleteFolder(folderId: string): Promise<void>;
|
|
4473
|
+
countFolderContents(folderId: string): Promise<{
|
|
4474
|
+
files: number;
|
|
4475
|
+
folders: number;
|
|
4476
|
+
}>;
|
|
4477
|
+
createFileVersion(version: NewFileVersion): Promise<void>;
|
|
4478
|
+
createProcessingRecord(record: NewFileProcessingRecord): Promise<void>;
|
|
4479
|
+
createShare(share: NewFileShare): Promise<void>;
|
|
4480
|
+
createAccessLog(log: NewFileAccessLog): Promise<void>;
|
|
4481
|
+
createThumbnail(thumbnail: NewFileThumbnail): Promise<void>;
|
|
4482
|
+
listDeletedFiles(): Promise<FileMetadata[]>;
|
|
4483
|
+
clearDeletedFiles(days?: number): Promise<number>;
|
|
4484
|
+
getStorageStats(): Promise<{
|
|
4485
|
+
totalFiles: number;
|
|
4486
|
+
totalSize: number;
|
|
4487
|
+
byStorage: {
|
|
4488
|
+
storageProviderId: number;
|
|
4489
|
+
count: number;
|
|
4490
|
+
totalSize: number;
|
|
4491
|
+
}[];
|
|
4492
|
+
}>;
|
|
4493
|
+
}
|
|
4494
|
+
|
|
4495
|
+
/**
|
|
4496
|
+
* 数据库查询优化中间件
|
|
4497
|
+
*/
|
|
4498
|
+
declare class QueryOptimizer {
|
|
4499
|
+
private queryHistory;
|
|
4500
|
+
private readonly maxHistorySize;
|
|
4501
|
+
private readonly slowQueryThreshold;
|
|
4502
|
+
monitorQuery<T>(queryFn: () => Promise<T>, sql: string, params?: any[]): Promise<T>;
|
|
4503
|
+
private getQueryType;
|
|
4504
|
+
private addQueryToHistory;
|
|
4505
|
+
getQueryStats(): {
|
|
4506
|
+
total: number;
|
|
4507
|
+
byType: Record<string, number>;
|
|
4508
|
+
slowQueries: number;
|
|
4509
|
+
averageDuration: number;
|
|
4510
|
+
maxDuration: number;
|
|
4511
|
+
minDuration: number;
|
|
4512
|
+
};
|
|
4513
|
+
}
|
|
4514
|
+
declare const queryOptimizer: QueryOptimizer;
|
|
4515
|
+
|
|
4516
|
+
/**
|
|
4517
|
+
* 通用文件服务配置管理
|
|
4518
|
+
*/
|
|
4519
|
+
|
|
4520
|
+
interface FileServiceConfig {
|
|
4521
|
+
defaultStorage: StorageType;
|
|
4522
|
+
storageProviders: Record<string, StorageConfig>;
|
|
4523
|
+
defaultCDN: CDNType;
|
|
4524
|
+
cdnProviders: Record<string, CDNConfig>;
|
|
4525
|
+
maxFileSize: number;
|
|
4526
|
+
allowedMimeTypes: string[];
|
|
4527
|
+
enableProcessing: boolean;
|
|
4528
|
+
processingQueueSize: number;
|
|
4529
|
+
cache: {
|
|
4530
|
+
metadataTTL: number;
|
|
4531
|
+
urlTTL: number;
|
|
4532
|
+
};
|
|
4533
|
+
}
|
|
4534
|
+
/**
|
|
4535
|
+
* 配置管理器
|
|
4536
|
+
*/
|
|
4537
|
+
declare class FileServiceConfigManager {
|
|
4538
|
+
private config;
|
|
4539
|
+
constructor(customConfig?: Partial<FileServiceConfig>);
|
|
4540
|
+
/**
|
|
4541
|
+
* 获取完整配置
|
|
4542
|
+
*/
|
|
4543
|
+
getConfig(): FileServiceConfig;
|
|
4544
|
+
/**
|
|
4545
|
+
* 获取存储提供者配置
|
|
4546
|
+
*/
|
|
4547
|
+
getStorageConfig(type: StorageType): StorageConfig | undefined;
|
|
4548
|
+
/**
|
|
4549
|
+
* 获取CDN提供者配置
|
|
4550
|
+
*/
|
|
4551
|
+
getCDNConfig(type: CDNType): CDNConfig | undefined;
|
|
4552
|
+
/**
|
|
4553
|
+
* 更新配置
|
|
4554
|
+
*/
|
|
4555
|
+
updateConfig(updates: Partial<FileServiceConfig>): void;
|
|
4556
|
+
/**
|
|
4557
|
+
* 启用存储提供者
|
|
4558
|
+
*/
|
|
4559
|
+
enableStorageProvider(type: StorageType, config?: Partial<StorageConfig>): void;
|
|
4560
|
+
/**
|
|
4561
|
+
* 禁用存储提供者
|
|
4562
|
+
*/
|
|
4563
|
+
disableStorageProvider(type: StorageType): void;
|
|
4564
|
+
/**
|
|
4565
|
+
* 启用CDN提供者
|
|
4566
|
+
*/
|
|
4567
|
+
enableCDNProvider(type: CDNType, config?: Partial<CDNConfig>): void;
|
|
4568
|
+
/**
|
|
4569
|
+
* 禁用CDN提供者
|
|
4570
|
+
*/
|
|
4571
|
+
disableCDNProvider(type: CDNType): void;
|
|
4572
|
+
/**
|
|
4573
|
+
* 从环境变量加载阿里云OSS配置
|
|
4574
|
+
*/
|
|
4575
|
+
loadAliyunOSSFromEnv(): void;
|
|
4576
|
+
/**
|
|
4577
|
+
* 从环境变量加载阿里云CDN配置
|
|
4578
|
+
*/
|
|
4579
|
+
loadAliyunCDNFromEnv(): void;
|
|
4580
|
+
/**
|
|
4581
|
+
* 验证配置
|
|
4582
|
+
*/
|
|
4583
|
+
private validateConfig;
|
|
4584
|
+
/**
|
|
4585
|
+
* 深度合并配置
|
|
4586
|
+
*/
|
|
4587
|
+
private mergeConfig;
|
|
4588
|
+
}
|
|
4589
|
+
/**
|
|
4590
|
+
* 创建配置管理器
|
|
4591
|
+
*/
|
|
4592
|
+
declare function createFileServiceConfigWithConfigManager(customConfig?: Partial<FileServiceConfig>): Promise<FileServiceConfigManager>;
|
|
4593
|
+
|
|
4594
|
+
/**
|
|
4595
|
+
* 创建支持动态配置加载的通用文件服务
|
|
4596
|
+
*/
|
|
4597
|
+
declare function createUniversalFileServiceWithConfigManager(): Promise<UniversalFileService>;
|
|
4598
|
+
|
|
4599
|
+
/**
|
|
4600
|
+
* 文件服务配置加载辅助工具
|
|
4601
|
+
*
|
|
4602
|
+
* 提供从环境变量加载配置、默认配置常量等通用功能
|
|
4603
|
+
*/
|
|
4604
|
+
|
|
4605
|
+
/**
|
|
4606
|
+
* 默认文件大小限制(字节)
|
|
4607
|
+
*/
|
|
4608
|
+
declare const DEFAULT_MAX_FILE_SIZE = 104857600;
|
|
4609
|
+
/**
|
|
4610
|
+
* 默认允许的 MIME 类型
|
|
4611
|
+
*/
|
|
4612
|
+
declare const DEFAULT_ALLOWED_MIME_TYPES: string[];
|
|
4613
|
+
/**
|
|
4614
|
+
* 默认缓存配置
|
|
4615
|
+
*/
|
|
4616
|
+
declare const DEFAULT_CACHE_CONFIG: {
|
|
4617
|
+
enabled: boolean;
|
|
4618
|
+
metadataTTL: number;
|
|
4619
|
+
urlTTL: number;
|
|
4620
|
+
};
|
|
4621
|
+
/**
|
|
4622
|
+
* 默认文件服务配置
|
|
4623
|
+
*/
|
|
4624
|
+
declare const DEFAULT_FILE_SERVICE_CONFIG: {
|
|
4625
|
+
readonly maxFileSize: 104857600;
|
|
4626
|
+
readonly allowedMimeTypes: string[];
|
|
4627
|
+
readonly cache: {
|
|
4628
|
+
enabled: boolean;
|
|
4629
|
+
metadataTTL: number;
|
|
4630
|
+
urlTTL: number;
|
|
4631
|
+
};
|
|
4632
|
+
readonly enableMonitoring: false;
|
|
4633
|
+
};
|
|
4634
|
+
/**
|
|
4635
|
+
* 从环境变量加载阿里云 OSS 配置
|
|
4636
|
+
*
|
|
4637
|
+
* 支持的环境变量:
|
|
4638
|
+
* - ALIYUN_OSS_REGION
|
|
4639
|
+
* - ALIYUN_OSS_BUCKET
|
|
4640
|
+
* - ALIYUN_OSS_ACCESS_KEY_ID
|
|
4641
|
+
* - ALIYUN_OSS_ACCESS_KEY_SECRET
|
|
4642
|
+
* - ALIYUN_OSS_CUSTOM_DOMAIN (可选)
|
|
4643
|
+
* - ALIYUN_OSS_SECURE (可选,默认 false)
|
|
4644
|
+
* - ALIYUN_OSS_INTERNAL (可选,默认 false)
|
|
4645
|
+
*/
|
|
4646
|
+
declare function loadOSSConfigFromEnv(): AliyunOSSConfig | null;
|
|
4647
|
+
/**
|
|
4648
|
+
* 从环境变量加载阿里云 CDN 配置
|
|
4649
|
+
*
|
|
4650
|
+
* 支持的环境变量:
|
|
4651
|
+
* - ALIYUN_CDN_DOMAIN
|
|
4652
|
+
* - ALIYUN_CDN_ACCESS_KEY_ID
|
|
4653
|
+
* - ALIYUN_CDN_ACCESS_KEY_SECRET
|
|
4654
|
+
* - ALIYUN_CDN_REGION (可选)
|
|
4655
|
+
*/
|
|
4656
|
+
declare function loadCDNConfigFromEnv(): AliyunCDNConfig | null;
|
|
4657
|
+
/**
|
|
4658
|
+
* 获取默认本地存储配置
|
|
4659
|
+
*
|
|
4660
|
+
* 支持的环境变量:
|
|
4661
|
+
* - FILE_STORAGE_PATH (可选,默认 'uploads')
|
|
4662
|
+
* - FILE_BASE_URL (可选,默认 '/uploads')
|
|
4663
|
+
*/
|
|
4664
|
+
declare function getDefaultLocalStorage(): LocalStorageConfig;
|
|
4665
|
+
/**
|
|
4666
|
+
* 从环境变量加载完整的文件服务配置
|
|
4667
|
+
*
|
|
4668
|
+
* 配置优先级:
|
|
4669
|
+
* 1. 阿里云 OSS(如果配置完整)
|
|
4670
|
+
* 2. 本地存储(备用方案)
|
|
4671
|
+
*
|
|
4672
|
+
* 支持的环境变量:
|
|
4673
|
+
* - MAX_FILE_SIZE (可选,默认 100MB)
|
|
4674
|
+
* - ENABLE_CACHE (可选,默认 false)
|
|
4675
|
+
* - METADATA_CACHE_TTL (可选,默认 3600秒)
|
|
4676
|
+
* - URL_CACHE_TTL (可选,默认 1800秒)
|
|
4677
|
+
* - ENABLE_FILE_MONITORING (可选,默认 false)
|
|
4678
|
+
*/
|
|
4679
|
+
declare function loadConfigFromEnv(): Partial<UniversalFileServiceConfig>;
|
|
4680
|
+
/**
|
|
4681
|
+
* 配置服务接口
|
|
4682
|
+
*
|
|
4683
|
+
* 用于从配置管理系统加载配置
|
|
4684
|
+
*/
|
|
4685
|
+
interface IConfigService {
|
|
4686
|
+
/**
|
|
4687
|
+
* 获取配置值
|
|
4688
|
+
*/
|
|
4689
|
+
getConfig(key: string, defaultValue?: any): Promise<any>;
|
|
4690
|
+
}
|
|
4691
|
+
/**
|
|
4692
|
+
* 配置键映射
|
|
4693
|
+
*/
|
|
4694
|
+
interface OSSConfigKeyMapping {
|
|
4695
|
+
region: string;
|
|
4696
|
+
bucket: string;
|
|
4697
|
+
accessKeyId: string;
|
|
4698
|
+
accessKeySecret: string;
|
|
4699
|
+
customDomain?: string;
|
|
4700
|
+
secure?: string;
|
|
4701
|
+
internal?: string;
|
|
4702
|
+
}
|
|
4703
|
+
/**
|
|
4704
|
+
* 默认的 OSS 配置键映射(阿里云标准)
|
|
4705
|
+
*/
|
|
4706
|
+
declare const DEFAULT_OSS_CONFIG_KEYS: OSSConfigKeyMapping;
|
|
4707
|
+
/**
|
|
4708
|
+
* 从配置服务加载 OSS 配置
|
|
4709
|
+
*
|
|
4710
|
+
* 通用函数,可用于任何实现了 IConfigService 接口的配置系统
|
|
4711
|
+
*
|
|
4712
|
+
* @param configService - 配置服务实例
|
|
4713
|
+
* @param keyMapping - 配置键映射(可选,默认使用标准键名)
|
|
4714
|
+
*
|
|
4715
|
+
* @example
|
|
4716
|
+
* ```typescript
|
|
4717
|
+
* import { loadOSSConfigFromService } from 'sa2kit/universalFile/server';
|
|
4718
|
+
*
|
|
4719
|
+
* const config = await loadOSSConfigFromService(myConfigService, {
|
|
4720
|
+
* region: 'oss_region',
|
|
4721
|
+
* bucket: 'oss_bucket',
|
|
4722
|
+
* // ...
|
|
4723
|
+
* });
|
|
4724
|
+
* ```
|
|
4725
|
+
*/
|
|
4726
|
+
declare function loadOSSConfigFromService(configService: IConfigService, keyMapping?: Partial<OSSConfigKeyMapping>): Promise<AliyunOSSConfig | null>;
|
|
4727
|
+
/**
|
|
4728
|
+
* 组合多个配置源
|
|
4729
|
+
*
|
|
4730
|
+
* 按优先级顺序尝试加载配置,返回第一个成功的配置
|
|
4731
|
+
*
|
|
4732
|
+
* @param loaders - 配置加载器数组(按优先级排序)
|
|
4733
|
+
*
|
|
4734
|
+
* @example
|
|
4735
|
+
* ```typescript
|
|
4736
|
+
* const config = await loadConfigWithFallback([
|
|
4737
|
+
* async () => loadOSSConfigFromService(configService),
|
|
4738
|
+
* () => loadOSSConfigFromEnv(),
|
|
4739
|
+
* ]);
|
|
4740
|
+
* ```
|
|
4741
|
+
*/
|
|
4742
|
+
declare function loadConfigWithFallback<T>(loaders: Array<() => Promise<T | null>>): Promise<T | null>;
|
|
4743
|
+
/**
|
|
4744
|
+
* 文件服务工厂选项
|
|
4745
|
+
*/
|
|
4746
|
+
interface FileServiceFactoryOptions {
|
|
4747
|
+
/**
|
|
4748
|
+
* 配置加载器(按优先级排序)
|
|
4749
|
+
*/
|
|
4750
|
+
configLoaders?: Array<() => Promise<Partial<UniversalFileServiceConfig> | null>>;
|
|
4751
|
+
/**
|
|
4752
|
+
* 持久化仓储(可选)
|
|
4753
|
+
*/
|
|
4754
|
+
repository?: any;
|
|
4755
|
+
/**
|
|
4756
|
+
* 自定义配置(会覆盖加载的配置)
|
|
4757
|
+
*/
|
|
4758
|
+
customConfig?: Partial<UniversalFileServiceConfig>;
|
|
4759
|
+
/**
|
|
4760
|
+
* 是否自动初始化服务
|
|
4761
|
+
*/
|
|
4762
|
+
autoInitialize?: boolean;
|
|
4763
|
+
}
|
|
4764
|
+
/**
|
|
4765
|
+
* 创建文件服务(工厂函数)
|
|
4766
|
+
*
|
|
4767
|
+
* 通用的服务创建函数,支持多种配置源和可选的持久化
|
|
4768
|
+
*
|
|
4769
|
+
* @param options - 工厂选项
|
|
4770
|
+
*
|
|
4771
|
+
* @example
|
|
4772
|
+
* ```typescript
|
|
4773
|
+
* import {
|
|
4774
|
+
* createFileServiceWithFactory,
|
|
4775
|
+
* loadOSSConfigFromService,
|
|
4776
|
+
* loadConfigFromEnv
|
|
4777
|
+
* } from 'sa2kit/universalFile/server';
|
|
4778
|
+
*
|
|
4779
|
+
* const service = await createFileServiceWithFactory({
|
|
4780
|
+
* configLoaders: [
|
|
4781
|
+
* async () => {
|
|
4782
|
+
* const ossConfig = await loadOSSConfigFromService(configService);
|
|
4783
|
+
* return ossConfig ? { storage: ossConfig, defaultStorage: 'aliyun-oss' } : null;
|
|
4784
|
+
* },
|
|
4785
|
+
* () => Promise.resolve(loadConfigFromEnv()),
|
|
4786
|
+
* ],
|
|
4787
|
+
* repository: myRepository,
|
|
4788
|
+
* autoInitialize: true,
|
|
4789
|
+
* });
|
|
4790
|
+
* ```
|
|
4791
|
+
*/
|
|
4792
|
+
declare function createFileServiceWithFactory(options?: FileServiceFactoryOptions): Promise<UniversalFileService>;
|
|
4793
|
+
/**
|
|
4794
|
+
* 单例工厂返回值
|
|
4795
|
+
*/
|
|
4796
|
+
interface SingletonFactory<T> {
|
|
4797
|
+
/**
|
|
4798
|
+
* 获取单例实例
|
|
4799
|
+
*/
|
|
4800
|
+
get(): Promise<T>;
|
|
4801
|
+
/**
|
|
4802
|
+
* 重置单例(主要用于测试)
|
|
4803
|
+
*/
|
|
4804
|
+
reset(): void;
|
|
4805
|
+
/**
|
|
4806
|
+
* 检查单例是否已创建
|
|
4807
|
+
*/
|
|
4808
|
+
isCreated(): boolean;
|
|
4809
|
+
}
|
|
4810
|
+
/**
|
|
4811
|
+
* 创建单例工厂
|
|
4812
|
+
*
|
|
4813
|
+
* 提供单例模式的通用实现,适用于需要单例的服务
|
|
4814
|
+
*
|
|
4815
|
+
* @param factory - 创建实例的工厂函数
|
|
4816
|
+
* @param options - 单例选项
|
|
4817
|
+
*
|
|
4818
|
+
* @example
|
|
4819
|
+
* ```typescript
|
|
4820
|
+
* const fileServiceSingleton = createSingleton(
|
|
4821
|
+
* async () => {
|
|
4822
|
+
* const service = new UniversalFileService(config);
|
|
4823
|
+
* await service.initialize();
|
|
4824
|
+
* return service;
|
|
4825
|
+
* },
|
|
4826
|
+
* { autoInitialize: true }
|
|
4827
|
+
* );
|
|
4828
|
+
*
|
|
4829
|
+
* // 获取单例
|
|
4830
|
+
* const service = await fileServiceSingleton.get();
|
|
4831
|
+
*
|
|
4832
|
+
* // 重置(测试用)
|
|
4833
|
+
* fileServiceSingleton.reset();
|
|
4834
|
+
* ```
|
|
4835
|
+
*/
|
|
4836
|
+
declare function createSingleton<T>(factory: () => Promise<T>, options?: {
|
|
4837
|
+
/** 是否在第一次获取时自动初始化(默认 true) */
|
|
4838
|
+
autoInitialize?: boolean;
|
|
4839
|
+
/** 单例名称(用于日志) */
|
|
4840
|
+
name?: string;
|
|
4841
|
+
}): SingletonFactory<T>;
|
|
4842
|
+
|
|
4843
|
+
export { AliyunCDNConfig, AliyunCDNProvider, AliyunOSSConfig, AliyunOSSProvider, ApiError, ApiErrorCode, ApiErrorFactory, type ApiResponse, ApiResponseHelper, AudioProcessor, CDNConfig, CDNResult, CDNType, CacheManager, CacheStrategyType$1 as CacheStrategyType, CdnCacheStrategy, ConfigValidationError, DEFAULT_ALLOWED_MIME_TYPES, DEFAULT_CACHE_CONFIG, DEFAULT_FILE_SERVICE_CONFIG, DEFAULT_MAX_FILE_SIZE, DEFAULT_OSS_CONFIG_KEYS, type DrizzleDb, type DrizzleRepositoryConfig, type DrizzleTable, ErrorHttpStatusMap, ErrorMessages, type FieldMapping, type FileAccessLog, FileDbService, type FileFolder, type FileInfo, type FileListResponse, type FileMetadata, type FileProcessParams, type FileProcessingRecord, type FileQueryParams, FileServiceConfigManager, type FileServiceFactoryOptions, type FileShare, type FileStats, type FileStorageProvider, type FileThumbnail, type FileUpdateParams, type FileUploadParams, type FileVersion, type FolderCreateParams, type FolderInfo, type FolderUpdateParams, ICDNProvider, type IConfigService, IFileMetadataRepository, IFileProcessor, IStorageProvider, ImageProcessor, LocalStorageConfig, LocalStorageProvider, type NewFileAccessLog, type NewFileFolder, type NewFileMetadata, type NewFileProcessingRecord, type NewFileShare, type NewFileStorageProvider, type NewFileThumbnail, type NewFileVersion, type OSSConfigKeyMapping, type PaginationParams, PerformanceMonitor, ProcessingOptions, ProcessingQueue, ProcessingResult, type ProcessingStatus, ProcessorType, QueryOptimizer, type ShareAccessParams, type ShareCreateParams, type ShareInfo, type SingletonFactory, StorageConfig, StorageResult, StorageType, UniversalFileService, UniversalFileServiceConfig, UploadFileInfo, type UploadResponse, ValidationHelper, VideoProcessor, cacheManager, cdnCacheStrategy, createAliyunOSSPreset, createDocumentServicePreset, createDrizzleFileRepository, createDrizzleRepository, createFileServiceConfig, createFileServiceConfigWithConfigManager, createFileServiceFromEnv, createFileServiceWithFactory, createImageServicePreset, createLocalDevPreset, createSingleton, createSmartPreset, createUniversalFileService, createUniversalFileServiceWithConfigManager, createVideoServicePreset, fileAccessLogs, fileAccessLogsRelations, fileFolders, fileFoldersRelations, fileMetadata, fileMetadataRelations, fileProcessingRecords, fileProcessingRecordsRelations, fileShares, fileSharesRelations, fileStorageProviders, fileStorageProvidersRelations, fileThumbnails, fileThumbnailsRelations, fileVersions, fileVersionsRelations, getDefaultLocalStorage, getMimeType, getRequiredEnvVars, loadCDNConfigFromEnv, loadConfigFromEnv, loadConfigWithFallback, loadOSSConfigFromEnv, loadOSSConfigFromService, performanceMonitor, queryOptimizer, validateEnvironment, validateServiceConfig, validateStorageConfig };
|