@fengsoft/storage-core-adapter-r2 0.1.0 → 0.1.1
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.d.ts +30 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +189 -0
- package/dist/index.js.map +1 -0
- package/package.json +2 -2
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { DeleteObjectCommand, GetObjectCommand, type GetObjectCommandOutput, HeadObjectCommand, type HeadObjectCommandOutput, ListObjectsV2Command, type ListObjectsV2CommandOutput, PutObjectCommand, type PutObjectCommandOutput } from "@aws-sdk/client-s3";
|
|
2
|
+
import { type CreatePresignedUploadInput, type DeleteObjectInput, type GetObjectResult, type HeadObjectResult, type ListObjectsInput, type ListObjectsResult, type PresignedUpload, type PutObjectInput, type StorageDriver } from "@fengsoft/storage-core";
|
|
3
|
+
type S3CompatibleClient = {
|
|
4
|
+
send(command: GetObjectCommand | HeadObjectCommand | ListObjectsV2Command | PutObjectCommand | DeleteObjectCommand): Promise<GetObjectCommandOutput | HeadObjectCommandOutput | ListObjectsV2CommandOutput | PutObjectCommandOutput | Record<string, unknown>>;
|
|
5
|
+
};
|
|
6
|
+
type PresignFunction = (command: PutObjectCommand, expiresInSeconds: number) => Promise<string>;
|
|
7
|
+
export type R2StorageDriverOptions = {
|
|
8
|
+
bucket: string;
|
|
9
|
+
accountId?: string;
|
|
10
|
+
region?: string;
|
|
11
|
+
endpoint?: string;
|
|
12
|
+
accessKeyId?: string;
|
|
13
|
+
secretAccessKey?: string;
|
|
14
|
+
publicBaseUrl?: string;
|
|
15
|
+
client?: S3CompatibleClient;
|
|
16
|
+
presign?: PresignFunction;
|
|
17
|
+
};
|
|
18
|
+
export declare class R2StorageDriver implements StorageDriver {
|
|
19
|
+
#private;
|
|
20
|
+
constructor(options: R2StorageDriverOptions);
|
|
21
|
+
putObject(input: PutObjectInput): Promise<HeadObjectResult>;
|
|
22
|
+
deleteObject(input: DeleteObjectInput): Promise<void>;
|
|
23
|
+
headObject(input: DeleteObjectInput): Promise<HeadObjectResult>;
|
|
24
|
+
getObject(input: DeleteObjectInput): Promise<GetObjectResult>;
|
|
25
|
+
listObjects(input?: ListObjectsInput): Promise<ListObjectsResult>;
|
|
26
|
+
createPresignedUpload(input: CreatePresignedUploadInput): Promise<PresignedUpload>;
|
|
27
|
+
resolvePublicUrl(key: string): string | null;
|
|
28
|
+
}
|
|
29
|
+
export {};
|
|
30
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,mBAAmB,EACnB,gBAAgB,EAChB,KAAK,sBAAsB,EAC3B,iBAAiB,EACjB,KAAK,uBAAuB,EAC5B,oBAAoB,EACpB,KAAK,0BAA0B,EAC/B,gBAAgB,EAChB,KAAK,sBAAsB,EAE3B,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAEN,KAAK,0BAA0B,EAC/B,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,aAAa,EAGlB,MAAM,wBAAwB,CAAC;AAEhC,KAAK,kBAAkB,GAAG;IACzB,IAAI,CACH,OAAO,EACJ,gBAAgB,GAChB,iBAAiB,GACjB,oBAAoB,GACpB,gBAAgB,GAChB,mBAAmB,GACpB,OAAO,CACP,sBAAsB,GACtB,uBAAuB,GACvB,0BAA0B,GAC1B,sBAAsB,GACtB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CACzB,CAAC;CACF,CAAC;AAEF,KAAK,eAAe,GAAG,CACtB,OAAO,EAAE,gBAAgB,EACzB,gBAAgB,EAAE,MAAM,KACpB,OAAO,CAAC,MAAM,CAAC,CAAC;AAErB,MAAM,MAAM,sBAAsB,GAAG;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,OAAO,CAAC,EAAE,eAAe,CAAC;CAC1B,CAAC;AAiFF,qBAAa,eAAgB,YAAW,aAAa;;gBAMxC,OAAO,EAAE,sBAAsB;IAqBrC,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAc3D,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IASrD,UAAU,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAiB/D,SAAS,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,eAAe,CAAC;IAoB7D,WAAW,CAAC,KAAK,GAAE,gBAAqB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA6BrE,qBAAqB,CAC1B,KAAK,EAAE,0BAA0B,GAC/B,OAAO,CAAC,eAAe,CAAC;IA4B3B,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAG5C"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
import { DeleteObjectCommand, GetObjectCommand, HeadObjectCommand, ListObjectsV2Command, PutObjectCommand, S3Client, } from "@aws-sdk/client-s3";
|
|
2
|
+
import { getSignedUrl } from "@aws-sdk/s3-request-presigner";
|
|
3
|
+
import { buildPublicUrl, StorageObjectNotFoundError, toBuffer, } from "@fengsoft/storage-core";
|
|
4
|
+
function hasByteArrayTransform(value) {
|
|
5
|
+
return (typeof value === "object" &&
|
|
6
|
+
value !== null &&
|
|
7
|
+
"transformToByteArray" in value &&
|
|
8
|
+
typeof value
|
|
9
|
+
.transformToByteArray === "function");
|
|
10
|
+
}
|
|
11
|
+
async function readBodyToBuffer(body) {
|
|
12
|
+
if (!body) {
|
|
13
|
+
throw new Error("R2 object body is empty");
|
|
14
|
+
}
|
|
15
|
+
if (hasByteArrayTransform(body)) {
|
|
16
|
+
const bytes = await body.transformToByteArray();
|
|
17
|
+
return Buffer.from(bytes);
|
|
18
|
+
}
|
|
19
|
+
const chunks = [];
|
|
20
|
+
for await (const chunk of body) {
|
|
21
|
+
if (Buffer.isBuffer(chunk)) {
|
|
22
|
+
chunks.push(chunk);
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
chunks.push(Buffer.from(chunk));
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return Buffer.concat(chunks);
|
|
29
|
+
}
|
|
30
|
+
function isNotFoundError(error) {
|
|
31
|
+
if (typeof error !== "object" || error === null) {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
const candidate = error;
|
|
35
|
+
return (candidate.name === "NoSuchKey" ||
|
|
36
|
+
candidate.Code === "NoSuchKey" ||
|
|
37
|
+
candidate.$metadata?.httpStatusCode === 404);
|
|
38
|
+
}
|
|
39
|
+
function toHeadObjectResult(key, output) {
|
|
40
|
+
return {
|
|
41
|
+
key,
|
|
42
|
+
contentLength: typeof output.ContentLength === "number" ? output.ContentLength : null,
|
|
43
|
+
contentType: output.ContentType ?? null,
|
|
44
|
+
cacheControl: output.CacheControl ?? null,
|
|
45
|
+
etag: output.ETag ?? null,
|
|
46
|
+
lastModified: output.LastModified ?? null,
|
|
47
|
+
metadata: { ...(output.Metadata ?? {}) },
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
function buildEndpoint(options) {
|
|
51
|
+
if (options.endpoint) {
|
|
52
|
+
return options.endpoint;
|
|
53
|
+
}
|
|
54
|
+
if (!options.accountId) {
|
|
55
|
+
throw new Error("R2 accountId or endpoint must be provided");
|
|
56
|
+
}
|
|
57
|
+
return `https://${options.accountId}.r2.cloudflarestorage.com`;
|
|
58
|
+
}
|
|
59
|
+
export class R2StorageDriver {
|
|
60
|
+
#bucket;
|
|
61
|
+
#publicBaseUrl;
|
|
62
|
+
#client;
|
|
63
|
+
#presign;
|
|
64
|
+
constructor(options) {
|
|
65
|
+
this.#bucket = options.bucket;
|
|
66
|
+
this.#publicBaseUrl = options.publicBaseUrl ?? null;
|
|
67
|
+
this.#client =
|
|
68
|
+
options.client ??
|
|
69
|
+
new S3Client({
|
|
70
|
+
region: options.region ?? "auto",
|
|
71
|
+
endpoint: buildEndpoint(options),
|
|
72
|
+
credentials: {
|
|
73
|
+
accessKeyId: options.accessKeyId ?? "",
|
|
74
|
+
secretAccessKey: options.secretAccessKey ?? "",
|
|
75
|
+
},
|
|
76
|
+
});
|
|
77
|
+
this.#presign =
|
|
78
|
+
options.presign ??
|
|
79
|
+
((command, expiresInSeconds) => getSignedUrl(this.#client, command, {
|
|
80
|
+
expiresIn: expiresInSeconds,
|
|
81
|
+
}));
|
|
82
|
+
}
|
|
83
|
+
async putObject(input) {
|
|
84
|
+
await this.#client.send(new PutObjectCommand({
|
|
85
|
+
Bucket: this.#bucket,
|
|
86
|
+
Key: input.key,
|
|
87
|
+
Body: toBuffer(input.body),
|
|
88
|
+
ContentType: input.contentType,
|
|
89
|
+
CacheControl: input.cacheControl,
|
|
90
|
+
Metadata: input.metadata,
|
|
91
|
+
}));
|
|
92
|
+
return this.headObject({ key: input.key });
|
|
93
|
+
}
|
|
94
|
+
async deleteObject(input) {
|
|
95
|
+
await this.#client.send(new DeleteObjectCommand({
|
|
96
|
+
Bucket: this.#bucket,
|
|
97
|
+
Key: input.key,
|
|
98
|
+
}));
|
|
99
|
+
}
|
|
100
|
+
async headObject(input) {
|
|
101
|
+
try {
|
|
102
|
+
const output = await this.#client.send(new HeadObjectCommand({
|
|
103
|
+
Bucket: this.#bucket,
|
|
104
|
+
Key: input.key,
|
|
105
|
+
}));
|
|
106
|
+
return toHeadObjectResult(input.key, output);
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
if (isNotFoundError(error)) {
|
|
110
|
+
throw new StorageObjectNotFoundError(input.key);
|
|
111
|
+
}
|
|
112
|
+
throw error;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
async getObject(input) {
|
|
116
|
+
try {
|
|
117
|
+
const output = (await this.#client.send(new GetObjectCommand({
|
|
118
|
+
Bucket: this.#bucket,
|
|
119
|
+
Key: input.key,
|
|
120
|
+
})));
|
|
121
|
+
return {
|
|
122
|
+
...toHeadObjectResult(input.key, output),
|
|
123
|
+
body: await readBodyToBuffer(output.Body),
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
catch (error) {
|
|
127
|
+
if (isNotFoundError(error)) {
|
|
128
|
+
throw new StorageObjectNotFoundError(input.key);
|
|
129
|
+
}
|
|
130
|
+
throw error;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
async listObjects(input = {}) {
|
|
134
|
+
const limit = input.limit ?? 1000;
|
|
135
|
+
const output = (await this.#client.send(new ListObjectsV2Command({
|
|
136
|
+
Bucket: this.#bucket,
|
|
137
|
+
Prefix: input.prefix,
|
|
138
|
+
ContinuationToken: input.cursor ?? undefined,
|
|
139
|
+
MaxKeys: limit,
|
|
140
|
+
})));
|
|
141
|
+
return {
|
|
142
|
+
items: output.Contents?.flatMap((entry) => {
|
|
143
|
+
if (!entry.Key) {
|
|
144
|
+
return [];
|
|
145
|
+
}
|
|
146
|
+
return [
|
|
147
|
+
{
|
|
148
|
+
key: entry.Key,
|
|
149
|
+
contentLength: typeof entry.Size === "number" ? entry.Size : 0,
|
|
150
|
+
lastModified: entry.LastModified ?? null,
|
|
151
|
+
etag: entry.ETag ?? null,
|
|
152
|
+
},
|
|
153
|
+
];
|
|
154
|
+
}) ?? [],
|
|
155
|
+
nextCursor: output.NextContinuationToken ?? null,
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
async createPresignedUpload(input) {
|
|
159
|
+
const expiresInSeconds = input.expiresInSeconds ?? 900;
|
|
160
|
+
const command = new PutObjectCommand({
|
|
161
|
+
Bucket: this.#bucket,
|
|
162
|
+
Key: input.key,
|
|
163
|
+
ContentType: input.contentType,
|
|
164
|
+
CacheControl: input.cacheControl,
|
|
165
|
+
Metadata: input.metadata,
|
|
166
|
+
});
|
|
167
|
+
const headers = {};
|
|
168
|
+
if (input.contentType) {
|
|
169
|
+
headers["content-type"] = input.contentType;
|
|
170
|
+
}
|
|
171
|
+
if (input.cacheControl) {
|
|
172
|
+
headers["cache-control"] = input.cacheControl;
|
|
173
|
+
}
|
|
174
|
+
for (const [key, value] of Object.entries(input.metadata ?? {})) {
|
|
175
|
+
headers[`x-amz-meta-${key}`] = value;
|
|
176
|
+
}
|
|
177
|
+
return {
|
|
178
|
+
key: input.key,
|
|
179
|
+
method: "PUT",
|
|
180
|
+
url: await this.#presign(command, expiresInSeconds),
|
|
181
|
+
headers,
|
|
182
|
+
expiresAt: new Date(Date.now() + expiresInSeconds * 1000),
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
resolvePublicUrl(key) {
|
|
186
|
+
return buildPublicUrl(this.#publicBaseUrl, key);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fengsoft/storage-core-adapter-r2",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.js",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"dependencies": {
|
|
35
35
|
"@aws-sdk/client-s3": "^3.926.0",
|
|
36
36
|
"@aws-sdk/s3-request-presigner": "^3.926.0",
|
|
37
|
-
"@fengsoft/storage-core": "0.1.
|
|
37
|
+
"@fengsoft/storage-core": "0.1.1"
|
|
38
38
|
},
|
|
39
39
|
"publishConfig": {
|
|
40
40
|
"access": "public"
|