secure-upload-fastify-sdk 1.0.0
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/README.md +467 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2069 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +2023 -0
- package/dist/index.mjs.map +1 -0
- package/dist/server/adapters/secure-crypto.d.ts +28 -0
- package/dist/server/adapters/secure-crypto.d.ts.map +1 -0
- package/dist/server/errors.d.ts +48 -0
- package/dist/server/errors.d.ts.map +1 -0
- package/dist/server/errors.js +112 -0
- package/dist/server/errors.js.map +1 -0
- package/dist/server/errors.mjs +85 -0
- package/dist/server/errors.mjs.map +1 -0
- package/dist/server/fastify-plugin.d.ts +38 -0
- package/dist/server/fastify-plugin.d.ts.map +1 -0
- package/dist/server/index.d.ts +17 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +2070 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/index.mjs +2024 -0
- package/dist/server/index.mjs.map +1 -0
- package/dist/server/routes/_internal.d.ts +42 -0
- package/dist/server/routes/_internal.d.ts.map +1 -0
- package/dist/server/routes/multipart.d.ts +22 -0
- package/dist/server/routes/multipart.d.ts.map +1 -0
- package/dist/server/routes/smart.d.ts +16 -0
- package/dist/server/routes/smart.d.ts.map +1 -0
- package/dist/server/session.d.ts +19 -0
- package/dist/server/session.d.ts.map +1 -0
- package/dist/server/types.d.ts +233 -0
- package/dist/server/types.d.ts.map +1 -0
- package/dist/server/utils/cleaner.d.ts +20 -0
- package/dist/server/utils/cleaner.d.ts.map +1 -0
- package/dist/server/utils/memory-rate-limit.d.ts +29 -0
- package/dist/server/utils/memory-rate-limit.d.ts.map +1 -0
- package/dist/server/utils/orphan-scanner.d.ts +34 -0
- package/dist/server/utils/orphan-scanner.d.ts.map +1 -0
- package/dist/server/utils/redis-helpers.d.ts +25 -0
- package/dist/server/utils/redis-helpers.d.ts.map +1 -0
- package/dist/server/utils/repository/index.d.ts +27 -0
- package/dist/server/utils/repository/index.d.ts.map +1 -0
- package/dist/server/utils/repository/index.js +501 -0
- package/dist/server/utils/repository/index.js.map +1 -0
- package/dist/server/utils/repository/index.mjs +469 -0
- package/dist/server/utils/repository/index.mjs.map +1 -0
- package/dist/server/utils/repository/memory.d.ts +33 -0
- package/dist/server/utils/repository/memory.d.ts.map +1 -0
- package/dist/server/utils/repository/prisma.d.ts +49 -0
- package/dist/server/utils/repository/prisma.d.ts.map +1 -0
- package/dist/server/utils/repository/types-extra.d.ts +9 -0
- package/dist/server/utils/repository/types-extra.d.ts.map +1 -0
- package/dist/server/utils/repository/types.d.ts +128 -0
- package/dist/server/utils/repository/types.d.ts.map +1 -0
- package/dist/server/utils/storage/index.d.ts +115 -0
- package/dist/server/utils/storage/index.d.ts.map +1 -0
- package/dist/server/utils/storage/index.js +285 -0
- package/dist/server/utils/storage/index.js.map +1 -0
- package/dist/server/utils/storage/index.mjs +247 -0
- package/dist/server/utils/storage/index.mjs.map +1 -0
- package/dist/server/utils/storage/local.d.ts +46 -0
- package/dist/server/utils/storage/local.d.ts.map +1 -0
- package/dist/server/utils/storage/memory.d.ts +34 -0
- package/dist/server/utils/storage/memory.d.ts.map +1 -0
- package/dist/server/utils/storage/types.d.ts +78 -0
- package/dist/server/utils/storage/types.d.ts.map +1 -0
- package/dist/server/utils/strategy.d.ts +64 -0
- package/dist/server/utils/strategy.d.ts.map +1 -0
- package/dist/server/utils/strategy.js +130 -0
- package/dist/server/utils/strategy.js.map +1 -0
- package/dist/server/utils/strategy.mjs +103 -0
- package/dist/server/utils/strategy.mjs.map +1 -0
- package/package.json +97 -0
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
// src/server/errors.ts
|
|
2
|
+
var ErrorCode = /* @__PURE__ */ ((ErrorCode2) => {
|
|
3
|
+
ErrorCode2[ErrorCode2["INVALID_REQUEST"] = 1001] = "INVALID_REQUEST";
|
|
4
|
+
ErrorCode2[ErrorCode2["INTERNAL_ERROR"] = 1500] = "INTERNAL_ERROR";
|
|
5
|
+
ErrorCode2[ErrorCode2["NOT_FOUND"] = 1400] = "NOT_FOUND";
|
|
6
|
+
ErrorCode2[ErrorCode2["FORBIDDEN"] = 1403] = "FORBIDDEN";
|
|
7
|
+
ErrorCode2[ErrorCode2["RATE_LIMITED"] = 1402] = "RATE_LIMITED";
|
|
8
|
+
ErrorCode2[ErrorCode2["BINARY_PAYLOAD_EMPTY"] = 1501] = "BINARY_PAYLOAD_EMPTY";
|
|
9
|
+
ErrorCode2[ErrorCode2["BINARY_PAYLOAD_TOO_LARGE"] = 1502] = "BINARY_PAYLOAD_TOO_LARGE";
|
|
10
|
+
ErrorCode2[ErrorCode2["BINARY_AUTH_REQUIRED"] = 1503] = "BINARY_AUTH_REQUIRED";
|
|
11
|
+
ErrorCode2[ErrorCode2["BINARY_AUTH_FAILED"] = 1504] = "BINARY_AUTH_FAILED";
|
|
12
|
+
ErrorCode2[ErrorCode2["BATCH_EMPTY"] = 1510] = "BATCH_EMPTY";
|
|
13
|
+
ErrorCode2[ErrorCode2["BATCH_TOO_MANY_FILES"] = 1511] = "BATCH_TOO_MANY_FILES";
|
|
14
|
+
ErrorCode2[ErrorCode2["BATCH_TOTAL_TOO_LARGE"] = 1512] = "BATCH_TOTAL_TOO_LARGE";
|
|
15
|
+
ErrorCode2[ErrorCode2["BATCH_FILE_INVALID"] = 1513] = "BATCH_FILE_INVALID";
|
|
16
|
+
ErrorCode2[ErrorCode2["MULTIPART_NOT_FOUND"] = 1520] = "MULTIPART_NOT_FOUND";
|
|
17
|
+
ErrorCode2[ErrorCode2["MULTIPART_ALREADY_COMPLETED"] = 1521] = "MULTIPART_ALREADY_COMPLETED";
|
|
18
|
+
ErrorCode2[ErrorCode2["MULTIPART_ALREADY_ABORTED"] = 1522] = "MULTIPART_ALREADY_ABORTED";
|
|
19
|
+
ErrorCode2[ErrorCode2["MULTIPART_EXPIRED"] = 1523] = "MULTIPART_EXPIRED";
|
|
20
|
+
ErrorCode2[ErrorCode2["MULTIPART_STATUS_INVALID"] = 1524] = "MULTIPART_STATUS_INVALID";
|
|
21
|
+
ErrorCode2[ErrorCode2["MULTIPART_TOTAL_TOO_LARGE"] = 1530] = "MULTIPART_TOTAL_TOO_LARGE";
|
|
22
|
+
ErrorCode2[ErrorCode2["MULTIPART_PART_TOO_LARGE"] = 1531] = "MULTIPART_PART_TOO_LARGE";
|
|
23
|
+
ErrorCode2[ErrorCode2["MULTIPART_PART_TOO_SMALL"] = 1532] = "MULTIPART_PART_TOO_SMALL";
|
|
24
|
+
ErrorCode2[ErrorCode2["MULTIPART_INVALID_PART_NUMBER"] = 1533] = "MULTIPART_INVALID_PART_NUMBER";
|
|
25
|
+
ErrorCode2[ErrorCode2["MULTIPART_DUPLICATE_PART"] = 1534] = "MULTIPART_DUPLICATE_PART";
|
|
26
|
+
ErrorCode2[ErrorCode2["MULTIPART_PART_HASH_MISMATCH"] = 1535] = "MULTIPART_PART_HASH_MISMATCH";
|
|
27
|
+
ErrorCode2[ErrorCode2["MULTIPART_FINAL_HASH_MISMATCH"] = 1536] = "MULTIPART_FINAL_HASH_MISMATCH";
|
|
28
|
+
ErrorCode2[ErrorCode2["MULTIPART_INCOMPLETE_PARTS"] = 1537] = "MULTIPART_INCOMPLETE_PARTS";
|
|
29
|
+
ErrorCode2[ErrorCode2["MULTIPART_AUTH_REQUIRED"] = 1538] = "MULTIPART_AUTH_REQUIRED";
|
|
30
|
+
ErrorCode2[ErrorCode2["MULTIPART_INVALID_ARG"] = 1539] = "MULTIPART_INVALID_ARG";
|
|
31
|
+
return ErrorCode2;
|
|
32
|
+
})(ErrorCode || {});
|
|
33
|
+
var HTTP = {
|
|
34
|
+
[1001 /* INVALID_REQUEST */]: 400,
|
|
35
|
+
[1500 /* INTERNAL_ERROR */]: 500,
|
|
36
|
+
[1400 /* NOT_FOUND */]: 404,
|
|
37
|
+
[1403 /* FORBIDDEN */]: 403,
|
|
38
|
+
[1402 /* RATE_LIMITED */]: 429,
|
|
39
|
+
// binary
|
|
40
|
+
[1501 /* BINARY_PAYLOAD_EMPTY */]: 400,
|
|
41
|
+
[1502 /* BINARY_PAYLOAD_TOO_LARGE */]: 413,
|
|
42
|
+
[1503 /* BINARY_AUTH_REQUIRED */]: 401,
|
|
43
|
+
[1504 /* BINARY_AUTH_FAILED */]: 401,
|
|
44
|
+
// batch
|
|
45
|
+
[1510 /* BATCH_EMPTY */]: 400,
|
|
46
|
+
[1511 /* BATCH_TOO_MANY_FILES */]: 413,
|
|
47
|
+
[1512 /* BATCH_TOTAL_TOO_LARGE */]: 413,
|
|
48
|
+
[1513 /* BATCH_FILE_INVALID */]: 400,
|
|
49
|
+
// multipart
|
|
50
|
+
[1520 /* MULTIPART_NOT_FOUND */]: 404,
|
|
51
|
+
[1521 /* MULTIPART_ALREADY_COMPLETED */]: 409,
|
|
52
|
+
[1522 /* MULTIPART_ALREADY_ABORTED */]: 409,
|
|
53
|
+
[1523 /* MULTIPART_EXPIRED */]: 410,
|
|
54
|
+
[1524 /* MULTIPART_STATUS_INVALID */]: 409,
|
|
55
|
+
[1530 /* MULTIPART_TOTAL_TOO_LARGE */]: 413,
|
|
56
|
+
[1531 /* MULTIPART_PART_TOO_LARGE */]: 413,
|
|
57
|
+
[1532 /* MULTIPART_PART_TOO_SMALL */]: 400,
|
|
58
|
+
[1533 /* MULTIPART_INVALID_PART_NUMBER */]: 400,
|
|
59
|
+
[1534 /* MULTIPART_DUPLICATE_PART */]: 409,
|
|
60
|
+
[1535 /* MULTIPART_PART_HASH_MISMATCH */]: 400,
|
|
61
|
+
[1536 /* MULTIPART_FINAL_HASH_MISMATCH */]: 400,
|
|
62
|
+
[1537 /* MULTIPART_INCOMPLETE_PARTS */]: 409,
|
|
63
|
+
[1538 /* MULTIPART_AUTH_REQUIRED */]: 401,
|
|
64
|
+
[1539 /* MULTIPART_INVALID_ARG */]: 400
|
|
65
|
+
};
|
|
66
|
+
var SecureError = class extends Error {
|
|
67
|
+
constructor(code, message) {
|
|
68
|
+
super(message ?? ErrorCode[code]);
|
|
69
|
+
this.code = code;
|
|
70
|
+
this.name = "SecureError";
|
|
71
|
+
}
|
|
72
|
+
code;
|
|
73
|
+
get statusCode() {
|
|
74
|
+
return HTTP[this.code];
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
function getHttpStatus(code) {
|
|
78
|
+
return HTTP[code];
|
|
79
|
+
}
|
|
80
|
+
export {
|
|
81
|
+
ErrorCode,
|
|
82
|
+
SecureError,
|
|
83
|
+
getHttpStatus
|
|
84
|
+
};
|
|
85
|
+
//# sourceMappingURL=errors.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/server/errors.ts"],"sourcesContent":["/**\r\n * 错误码 + SecureError\r\n *\r\n * 设计:\r\n * - 1000-1099: 通用请求错误(INVALID_REQUEST 等)\r\n * - 1400-1499: HTTP 语义错误(NOT_FOUND / FORBIDDEN / RATE_LIMITED 等)\r\n * - 1500-1599: 上传相关(BINARY / BATCH / MULTIPART)\r\n *\r\n * 独立于 secure-crypto-top-zod-sdk 的错误码空间,\r\n * 即使用户不引入加密 SDK,这套码也能独立用。\r\n */\r\n\r\nexport enum ErrorCode {\r\n // 通用\r\n INVALID_REQUEST = 1001,\r\n INTERNAL_ERROR = 1500,\r\n NOT_FOUND = 1400,\r\n FORBIDDEN = 1403,\r\n RATE_LIMITED = 1402,\r\n\r\n // binary 协议(网关透传场景)\r\n BINARY_PAYLOAD_EMPTY = 1501,\r\n BINARY_PAYLOAD_TOO_LARGE = 1502,\r\n BINARY_AUTH_REQUIRED = 1503,\r\n BINARY_AUTH_FAILED = 1504,\r\n\r\n // 批量上传\r\n BATCH_EMPTY = 1510,\r\n BATCH_TOO_MANY_FILES = 1511,\r\n BATCH_TOTAL_TOO_LARGE = 1512,\r\n BATCH_FILE_INVALID = 1513,\r\n\r\n // 分片上传(1520-1539)\r\n MULTIPART_NOT_FOUND = 1520,\r\n MULTIPART_ALREADY_COMPLETED = 1521,\r\n MULTIPART_ALREADY_ABORTED = 1522,\r\n MULTIPART_EXPIRED = 1523,\r\n MULTIPART_STATUS_INVALID = 1524,\r\n MULTIPART_TOTAL_TOO_LARGE = 1530,\r\n MULTIPART_PART_TOO_LARGE = 1531,\r\n MULTIPART_PART_TOO_SMALL = 1532,\r\n MULTIPART_INVALID_PART_NUMBER = 1533,\r\n MULTIPART_DUPLICATE_PART = 1534,\r\n MULTIPART_PART_HASH_MISMATCH = 1535,\r\n MULTIPART_FINAL_HASH_MISMATCH = 1536,\r\n MULTIPART_INCOMPLETE_PARTS = 1537,\r\n MULTIPART_AUTH_REQUIRED = 1538,\r\n MULTIPART_INVALID_ARG = 1539,\r\n}\r\n\r\nconst HTTP: Record<ErrorCode, number> = {\r\n [ErrorCode.INVALID_REQUEST]: 400,\r\n [ErrorCode.INTERNAL_ERROR]: 500,\r\n [ErrorCode.NOT_FOUND]: 404,\r\n [ErrorCode.FORBIDDEN]: 403,\r\n [ErrorCode.RATE_LIMITED]: 429,\r\n // binary\r\n [ErrorCode.BINARY_PAYLOAD_EMPTY]: 400,\r\n [ErrorCode.BINARY_PAYLOAD_TOO_LARGE]: 413,\r\n [ErrorCode.BINARY_AUTH_REQUIRED]: 401,\r\n [ErrorCode.BINARY_AUTH_FAILED]: 401,\r\n // batch\r\n [ErrorCode.BATCH_EMPTY]: 400,\r\n [ErrorCode.BATCH_TOO_MANY_FILES]: 413,\r\n [ErrorCode.BATCH_TOTAL_TOO_LARGE]: 413,\r\n [ErrorCode.BATCH_FILE_INVALID]: 400,\r\n // multipart\r\n [ErrorCode.MULTIPART_NOT_FOUND]: 404,\r\n [ErrorCode.MULTIPART_ALREADY_COMPLETED]: 409,\r\n [ErrorCode.MULTIPART_ALREADY_ABORTED]: 409,\r\n [ErrorCode.MULTIPART_EXPIRED]: 410,\r\n [ErrorCode.MULTIPART_STATUS_INVALID]: 409,\r\n [ErrorCode.MULTIPART_TOTAL_TOO_LARGE]: 413,\r\n [ErrorCode.MULTIPART_PART_TOO_LARGE]: 413,\r\n [ErrorCode.MULTIPART_PART_TOO_SMALL]: 400,\r\n [ErrorCode.MULTIPART_INVALID_PART_NUMBER]: 400,\r\n [ErrorCode.MULTIPART_DUPLICATE_PART]: 409,\r\n [ErrorCode.MULTIPART_PART_HASH_MISMATCH]: 400,\r\n [ErrorCode.MULTIPART_FINAL_HASH_MISMATCH]: 400,\r\n [ErrorCode.MULTIPART_INCOMPLETE_PARTS]: 409,\r\n [ErrorCode.MULTIPART_AUTH_REQUIRED]: 401,\r\n [ErrorCode.MULTIPART_INVALID_ARG]: 400,\r\n};\r\n\r\nexport class SecureError extends Error {\r\n constructor(public code: ErrorCode, message?: string) {\r\n super(message ?? ErrorCode[code]);\r\n this.name = 'SecureError';\r\n }\r\n get statusCode(): number {\r\n return HTTP[this.code];\r\n }\r\n}\r\n\r\nexport function getHttpStatus(code: ErrorCode): number {\r\n return HTTP[code];\r\n}\r\n"],"mappings":";AAYO,IAAK,YAAL,kBAAKA,eAAL;AAEL,EAAAA,sBAAA,qBAAqB,QAArB;AACA,EAAAA,sBAAA,oBAAqB,QAArB;AACA,EAAAA,sBAAA,eAAqB,QAArB;AACA,EAAAA,sBAAA,eAAqB,QAArB;AACA,EAAAA,sBAAA,kBAAqB,QAArB;AAGA,EAAAA,sBAAA,0BAA2B,QAA3B;AACA,EAAAA,sBAAA,8BAA2B,QAA3B;AACA,EAAAA,sBAAA,0BAA2B,QAA3B;AACA,EAAAA,sBAAA,wBAA2B,QAA3B;AAGA,EAAAA,sBAAA,iBAA2B,QAA3B;AACA,EAAAA,sBAAA,0BAA2B,QAA3B;AACA,EAAAA,sBAAA,2BAA2B,QAA3B;AACA,EAAAA,sBAAA,wBAA2B,QAA3B;AAGA,EAAAA,sBAAA,yBAAmC,QAAnC;AACA,EAAAA,sBAAA,iCAAmC,QAAnC;AACA,EAAAA,sBAAA,+BAAmC,QAAnC;AACA,EAAAA,sBAAA,uBAAmC,QAAnC;AACA,EAAAA,sBAAA,8BAAmC,QAAnC;AACA,EAAAA,sBAAA,+BAAmC,QAAnC;AACA,EAAAA,sBAAA,8BAAmC,QAAnC;AACA,EAAAA,sBAAA,8BAAmC,QAAnC;AACA,EAAAA,sBAAA,mCAAmC,QAAnC;AACA,EAAAA,sBAAA,8BAAmC,QAAnC;AACA,EAAAA,sBAAA,kCAAmC,QAAnC;AACA,EAAAA,sBAAA,mCAAmC,QAAnC;AACA,EAAAA,sBAAA,gCAAmC,QAAnC;AACA,EAAAA,sBAAA,6BAAmC,QAAnC;AACA,EAAAA,sBAAA,2BAAmC,QAAnC;AAnCU,SAAAA;AAAA,GAAA;AAsCZ,IAAM,OAAkC;AAAA,EACtC,CAAC,0BAAyB,GAAG;AAAA,EAC7B,CAAC,yBAAwB,GAAG;AAAA,EAC5B,CAAC,oBAAmB,GAAG;AAAA,EACvB,CAAC,oBAAmB,GAAG;AAAA,EACvB,CAAC,uBAAsB,GAAG;AAAA;AAAA,EAE1B,CAAC,+BAA8B,GAAG;AAAA,EAClC,CAAC,mCAAkC,GAAG;AAAA,EACtC,CAAC,+BAA8B,GAAG;AAAA,EAClC,CAAC,6BAA4B,GAAG;AAAA;AAAA,EAEhC,CAAC,sBAAqB,GAAG;AAAA,EACzB,CAAC,+BAA8B,GAAG;AAAA,EAClC,CAAC,gCAA+B,GAAG;AAAA,EACnC,CAAC,6BAA4B,GAAG;AAAA;AAAA,EAEhC,CAAC,8BAA6B,GAAG;AAAA,EACjC,CAAC,sCAAqC,GAAG;AAAA,EACzC,CAAC,oCAAmC,GAAG;AAAA,EACvC,CAAC,4BAA2B,GAAG;AAAA,EAC/B,CAAC,mCAAkC,GAAG;AAAA,EACtC,CAAC,oCAAmC,GAAG;AAAA,EACvC,CAAC,mCAAkC,GAAG;AAAA,EACtC,CAAC,mCAAkC,GAAG;AAAA,EACtC,CAAC,wCAAuC,GAAG;AAAA,EAC3C,CAAC,mCAAkC,GAAG;AAAA,EACtC,CAAC,uCAAsC,GAAG;AAAA,EAC1C,CAAC,wCAAuC,GAAG;AAAA,EAC3C,CAAC,qCAAoC,GAAG;AAAA,EACxC,CAAC,kCAAiC,GAAG;AAAA,EACrC,CAAC,gCAA+B,GAAG;AACrC;AAEO,IAAM,cAAN,cAA0B,MAAM;AAAA,EACrC,YAAmB,MAAiB,SAAkB;AACpD,UAAM,WAAW,UAAU,IAAI,CAAC;AADf;AAEjB,SAAK,OAAO;AAAA,EACd;AAAA,EAHmB;AAAA,EAInB,IAAI,aAAqB;AACvB,WAAO,KAAK,KAAK,IAAI;AAAA,EACvB;AACF;AAEO,SAAS,cAAc,MAAyB;AACrD,SAAO,KAAK,IAAI;AAClB;","names":["ErrorCode"]}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fastify 主插件
|
|
3
|
+
*
|
|
4
|
+
* 注册 5 + 1 端点:
|
|
5
|
+
* - {pathPrefix.multipart}/init
|
|
6
|
+
* - {pathPrefix.multipart}/part
|
|
7
|
+
* - {pathPrefix.multipart}/complete
|
|
8
|
+
* - {pathPrefix.multipart}/abort
|
|
9
|
+
* - {pathPrefix.multipart}/status
|
|
10
|
+
* - {pathPrefix.smart}/init
|
|
11
|
+
*
|
|
12
|
+
* 用法(详见 README):
|
|
13
|
+
*
|
|
14
|
+
* import Fastify from 'fastify';
|
|
15
|
+
* import uploadPlugin from 'secure-upload-fastify-sdk/server';
|
|
16
|
+
* import { LocalStorage } from 'secure-upload-fastify-sdk/storage';
|
|
17
|
+
* import { PrismaMultipartRepository, PrismaFileRepository } from 'secure-upload-fastify-sdk/repository';
|
|
18
|
+
*
|
|
19
|
+
* const app = Fastify({ logger: true });
|
|
20
|
+
* await app.register(uploadPlugin, {
|
|
21
|
+
* storage: { adapter: 'local', options: { baseDir: '/var/upload' } },
|
|
22
|
+
* repository: { kind: 'prisma', prisma },
|
|
23
|
+
* redis,
|
|
24
|
+
* pathPrefix: { multipart: '/api/v1/upload/multipart', smart: '/api/v1/upload/smart' },
|
|
25
|
+
* fileUrlPrefix: '/api/v1/upload/files',
|
|
26
|
+
* });
|
|
27
|
+
*/
|
|
28
|
+
import type { FastifyInstance } from 'fastify';
|
|
29
|
+
import { LocalStorage } from './utils/storage/local';
|
|
30
|
+
import { InMemoryStorage } from './utils/storage/memory';
|
|
31
|
+
import { PrismaMultipartRepository, PrismaFileRepository } from './utils/repository/prisma';
|
|
32
|
+
import { InMemoryMultipartRepository, InMemoryFileRepository } from './utils/repository/memory';
|
|
33
|
+
import type { SecureUploadOptions } from './types';
|
|
34
|
+
declare function secureUploadPluginImpl(app: FastifyInstance, options: SecureUploadOptions): Promise<void>;
|
|
35
|
+
declare const _default: typeof secureUploadPluginImpl;
|
|
36
|
+
export default _default;
|
|
37
|
+
export { LocalStorage, InMemoryStorage, PrismaMultipartRepository, PrismaFileRepository, InMemoryMultipartRepository, InMemoryFileRepository, };
|
|
38
|
+
//# sourceMappingURL=fastify-plugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fastify-plugin.d.ts","sourceRoot":"","sources":["../../src/server/fastify-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAC5F,OAAO,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAQhG,OAAO,KAAK,EACV,mBAAmB,EAIpB,MAAM,SAAS,CAAC;AAmDjB,iBAAe,sBAAsB,CACnC,GAAG,EAAE,eAAe,EACpB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAqHf;;AAED,wBAGG;AAKH,OAAO,EACL,YAAY,EACZ,eAAe,EACf,yBAAyB,EACzB,oBAAoB,EACpB,2BAA2B,EAC3B,sBAAsB,GACvB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Server 公开 API
|
|
3
|
+
*
|
|
4
|
+
* 主入口:
|
|
5
|
+
* import secureUploadPlugin, { type SecureUploadOptions } from 'secure-upload-fastify-sdk/server';
|
|
6
|
+
* await app.register(secureUploadPlugin, { ... });
|
|
7
|
+
*
|
|
8
|
+
* 工具类:
|
|
9
|
+
* import { LocalStorage, InMemoryStorage } from 'secure-upload-fastify-sdk/storage';
|
|
10
|
+
* import { PrismaMultipartRepository, PrismaFileRepository } from 'secure-upload-fastify-sdk/repository';
|
|
11
|
+
* import { ErrorCode, SecureError } from 'secure-upload-fastify-sdk/errors';
|
|
12
|
+
* import { chooseStrategy, suggestConcurrency, DEFAULT_STRATEGY_CONFIG } from 'secure-upload-fastify-sdk/strategy';
|
|
13
|
+
*/
|
|
14
|
+
export { default, default as secureUploadPlugin, LocalStorage, InMemoryStorage, PrismaMultipartRepository, PrismaFileRepository, InMemoryMultipartRepository, InMemoryFileRepository, } from './fastify-plugin';
|
|
15
|
+
export type { SecureUploadOptions, SecureUploadRuntime, SecureMode, RepositoryConfig, StorageConfig, PathPrefixConfig, SessionValidator, InitResponse, PartResponse, CompleteResponse, AbortResponse, StatusResponse, MultipartRecord, FileRecord, } from './types';
|
|
16
|
+
export { ErrorCode, SecureError, getHttpStatus, } from './errors';
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EACL,OAAO,EACP,OAAO,IAAI,kBAAkB,EAC7B,YAAY,EACZ,eAAe,EACf,yBAAyB,EACzB,oBAAoB,EACpB,2BAA2B,EAC3B,sBAAsB,GACvB,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EACV,mBAAmB,EACnB,mBAAmB,EACnB,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,eAAe,EACf,UAAU,GACX,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,SAAS,EACT,WAAW,EACX,aAAa,GACd,MAAM,UAAU,CAAC"}
|