@agentuity/storage 3.0.0-alpha.7 → 3.0.0-beta.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/bun.d.ts.map +1 -1
- package/dist/bun.js +17 -2
- package/dist/bun.js.map +1 -1
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +13 -0
- package/dist/node.js.map +1 -1
- package/dist/types.d.ts +20 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -2
- package/src/bun.ts +18 -2
- package/src/node.ts +11 -0
- package/src/types.ts +20 -0
package/dist/bun.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bun.d.ts","sourceRoot":"","sources":["../src/bun.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EACX,YAAY,EAEZ,YAAY,EAMZ,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE7D;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,
|
|
1
|
+
{"version":3,"file":"bun.d.ts","sourceRoot":"","sources":["../src/bun.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EACX,YAAY,EAEZ,YAAY,EAMZ,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE7D;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,CAmFjE"}
|
package/dist/bun.js
CHANGED
|
@@ -32,8 +32,17 @@ export function createS3Client(bucket) {
|
|
|
32
32
|
});
|
|
33
33
|
return {
|
|
34
34
|
async list(opts) {
|
|
35
|
-
// `Bun.S3Client.list` accepts `null` for "no filter".
|
|
36
|
-
|
|
35
|
+
// `Bun.S3Client.list` accepts `null` for "no filter". Translate
|
|
36
|
+
// our camelCase shape (continuationToken, maxKeys) to Bun's
|
|
37
|
+
// expected option keys.
|
|
38
|
+
const bunOpts = opts
|
|
39
|
+
? {
|
|
40
|
+
prefix: opts.prefix,
|
|
41
|
+
maxKeys: opts.maxKeys,
|
|
42
|
+
continuationToken: opts.continuationToken,
|
|
43
|
+
}
|
|
44
|
+
: null;
|
|
45
|
+
const out = (await client.list(bunOpts));
|
|
37
46
|
return {
|
|
38
47
|
contents: (out.contents ?? []).map((o) => ({
|
|
39
48
|
key: o.key,
|
|
@@ -42,6 +51,7 @@ export function createS3Client(bucket) {
|
|
|
42
51
|
etag: o.etag,
|
|
43
52
|
})),
|
|
44
53
|
isTruncated: out.isTruncated ?? false,
|
|
54
|
+
nextContinuationToken: out.nextContinuationToken,
|
|
45
55
|
};
|
|
46
56
|
},
|
|
47
57
|
async stat(key) {
|
|
@@ -57,6 +67,11 @@ export function createS3Client(bucket) {
|
|
|
57
67
|
file(key) {
|
|
58
68
|
const f = client.file(key);
|
|
59
69
|
return {
|
|
70
|
+
// Bun's S3File exposes `type` as a getter that the underlying
|
|
71
|
+
// client populates as it sees fit. Forward it directly.
|
|
72
|
+
get type() {
|
|
73
|
+
return f.type;
|
|
74
|
+
},
|
|
60
75
|
arrayBuffer: () => f.arrayBuffer(),
|
|
61
76
|
text: () => f.text(),
|
|
62
77
|
stream: () => f.stream(),
|
package/dist/bun.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bun.js","sourceRoot":"","sources":["../src/bun.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAc/B;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,MAAoB;IAClD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC;QAClD,CAAC,CAAC,MAAM,CAAC,QAAQ;QACjB,CAAC,CAAC,WAAW,MAAM,CAAC,QAAQ,EAAE,CAAC;IAEhC,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC;QAC3B,QAAQ;QACR,WAAW,EAAE,MAAM,CAAC,UAAU;QAC9B,eAAe,EAAE,MAAM,CAAC,UAAU;QAClC,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,MAAM;QAC/B,kBAAkB,EAAE,IAAI;KACxB,CAAC,CAAC;IAEH,OAAO;QACN,KAAK,CAAC,IAAI,CAAC,IAA2B;YACrC,
|
|
1
|
+
{"version":3,"file":"bun.js","sourceRoot":"","sources":["../src/bun.ts"],"names":[],"mappings":"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"}
|
package/dist/node.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAKH,OAAO,KAAK,EACX,YAAY,EAEZ,YAAY,EAMZ,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AA4B7D,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,
|
|
1
|
+
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAKH,OAAO,KAAK,EACX,YAAY,EAEZ,YAAY,EAMZ,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AA4B7D,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,CAsJjE"}
|
package/dist/node.js
CHANGED
|
@@ -82,6 +82,7 @@ export function createS3Client(bucket) {
|
|
|
82
82
|
Bucket: state.bucketLabel,
|
|
83
83
|
Prefix: opts?.prefix,
|
|
84
84
|
MaxKeys: opts?.maxKeys,
|
|
85
|
+
ContinuationToken: opts?.continuationToken,
|
|
85
86
|
}));
|
|
86
87
|
return {
|
|
87
88
|
contents: (out.Contents ?? []).map((o) => ({
|
|
@@ -91,6 +92,7 @@ export function createS3Client(bucket) {
|
|
|
91
92
|
etag: o.ETag,
|
|
92
93
|
})),
|
|
93
94
|
isTruncated: out.IsTruncated ?? false,
|
|
95
|
+
nextContinuationToken: out.NextContinuationToken,
|
|
94
96
|
};
|
|
95
97
|
},
|
|
96
98
|
async stat(key) {
|
|
@@ -105,11 +107,20 @@ export function createS3Client(bucket) {
|
|
|
105
107
|
};
|
|
106
108
|
},
|
|
107
109
|
file(key) {
|
|
110
|
+
// Mutable holder for the most recently observed Content-Type.
|
|
111
|
+
// Populated by the first arrayBuffer/text/stream call; matches
|
|
112
|
+
// the contract documented on S3FileLike.type.
|
|
113
|
+
const meta = {};
|
|
108
114
|
return {
|
|
115
|
+
get type() {
|
|
116
|
+
return meta.type;
|
|
117
|
+
},
|
|
109
118
|
async arrayBuffer() {
|
|
110
119
|
const sdk = await loadSdk();
|
|
111
120
|
const client = await getClient();
|
|
112
121
|
const out = await client.send(new sdk.GetObjectCommand({ Bucket: state.bucketLabel, Key: key }));
|
|
122
|
+
if (out.ContentType)
|
|
123
|
+
meta.type = out.ContentType;
|
|
113
124
|
return readBodyAsArrayBuffer(out.Body);
|
|
114
125
|
},
|
|
115
126
|
async text() {
|
|
@@ -130,6 +141,8 @@ export function createS3Client(bucket) {
|
|
|
130
141
|
Bucket: state.bucketLabel,
|
|
131
142
|
Key: key,
|
|
132
143
|
}));
|
|
144
|
+
if (out.ContentType)
|
|
145
|
+
meta.type = out.ContentType;
|
|
133
146
|
inner = bodyToWebStream(out.Body);
|
|
134
147
|
reader = inner.getReader();
|
|
135
148
|
}
|
package/dist/node.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAkBlD,IAAI,SAAS,GAAqB,IAAI,CAAC;AACvC,IAAI,UAAU,GAA8B,IAAI,CAAC;AAEjD,KAAK,UAAU,OAAO;IACrB,IAAI,SAAS;QAAE,OAAO,SAAS,CAAC;IAChC,IAAI,CAAC,UAAU,EAAE,CAAC;QACjB,UAAU,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YACtD,SAAS,GAAG,GAAG,CAAC;YAChB,OAAO,GAAG,CAAC;QACZ,CAAC,CAAC,CAAC;IACJ,CAAC;IACD,OAAO,UAAU,CAAC;AACnB,CAAC;AAWD,MAAM,UAAU,cAAc,CAAC,MAAoB;IAClD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC;QAClD,CAAC,CAAC,MAAM,CAAC,QAAQ;QACjB,CAAC,CAAC,WAAW,MAAM,CAAC,QAAQ,EAAE,CAAC;IAEhC,sEAAsE;IACtE,qEAAqE;IACrE,oEAAoE;IACpE,iCAAiC;IACjC,MAAM,WAAW,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAEjD,MAAM,KAAK,GAAkB;QAC5B,QAAQ;QACR,WAAW;QACX,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,MAAM;QAC/B,WAAW,EAAE;YACZ,WAAW,EAAE,MAAM,CAAC,UAAU;YAC9B,eAAe,EAAE,MAAM,CAAC,UAAU;SAClC;QACD,aAAa,EAAE,IAAI;KACnB,CAAC;IAEF,MAAM,SAAS,GAAG,KAAK,IAAI,EAAE;QAC5B,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;YAC1B,MAAM,GAAG,GAAG,MAAM,OAAO,EAAE,CAAC;YAC5B,KAAK,CAAC,aAAa,GAAG,OAAO,CAAC,OAAO,CACpC,IAAI,GAAG,CAAC,QAAQ,CAAC;gBAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,cAAc,EAAE,KAAK;aACrB,CAAC,CACF,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC,aAAa,CAAC;IAC5B,CAAC,CAAC;IAEF,OAAO;QACN,KAAK,CAAC,IAAI,CAAC,IAA2B;YACrC,MAAM,GAAG,GAAG,MAAM,OAAO,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;YACjC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAC5B,IAAI,GAAG,CAAC,oBAAoB,CAAC;gBAC5B,MAAM,EAAE,KAAK,CAAC,WAAW;gBACzB,MAAM,EAAE,IAAI,EAAE,MAAM;gBACpB,OAAO,EAAE,IAAI,EAAE,OAAO;
|
|
1
|
+
{"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -27,6 +27,12 @@ export interface S3ListOptions {
|
|
|
27
27
|
prefix?: string;
|
|
28
28
|
/** Maximum number of objects to return in this response. */
|
|
29
29
|
maxKeys?: number;
|
|
30
|
+
/**
|
|
31
|
+
* Pagination token. If the previous `list()` call returned an
|
|
32
|
+
* `S3ListResult` with `isTruncated: true`, pass its
|
|
33
|
+
* `nextContinuationToken` here to fetch the next page.
|
|
34
|
+
*/
|
|
35
|
+
continuationToken?: string;
|
|
30
36
|
}
|
|
31
37
|
/** A single object entry in a list result. */
|
|
32
38
|
export interface S3Object {
|
|
@@ -43,6 +49,11 @@ export interface S3Object {
|
|
|
43
49
|
export interface S3ListResult {
|
|
44
50
|
contents: S3Object[];
|
|
45
51
|
isTruncated: boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Token to pass as `continuationToken` on the next `list()` call to
|
|
54
|
+
* fetch the next page. Undefined when `isTruncated` is `false`.
|
|
55
|
+
*/
|
|
56
|
+
nextContinuationToken?: string;
|
|
46
57
|
}
|
|
47
58
|
/** Result of a `stat()` (HEAD) call. */
|
|
48
59
|
export interface S3StatResult {
|
|
@@ -67,6 +78,15 @@ export interface S3WriteOptions {
|
|
|
67
78
|
export type S3Body = string | Uint8Array | ArrayBuffer | Blob | ReadableStream<Uint8Array>;
|
|
68
79
|
/** A handle to an object on the server. Returned by `client.file(key)`. */
|
|
69
80
|
export interface S3FileLike {
|
|
81
|
+
/**
|
|
82
|
+
* Content-Type of the object, when known.
|
|
83
|
+
*
|
|
84
|
+
* Bun's S3File populates this lazily via the underlying client; the
|
|
85
|
+
* Node backend captures it from the most recent `arrayBuffer()`,
|
|
86
|
+
* `text()`, or `stream()` call. May be `undefined` until one of
|
|
87
|
+
* those methods has been called at least once.
|
|
88
|
+
*/
|
|
89
|
+
readonly type: string | undefined;
|
|
70
90
|
/** Read the entire object into memory as an `ArrayBuffer`. */
|
|
71
91
|
arrayBuffer(): Promise<ArrayBuffer>;
|
|
72
92
|
/** Read the entire object as UTF-8 text. */
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,uCAAuC;AACvC,MAAM,WAAW,YAAY;IAC5B;;;;OAIG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,wBAAwB;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,4BAA4B;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,kEAAkE;IAClE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,4BAA4B;AAC5B,MAAM,WAAW,aAAa;IAC7B,6DAA6D;IAC7D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,uCAAuC;AACvC,MAAM,WAAW,YAAY;IAC5B;;;;OAIG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,wBAAwB;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,4BAA4B;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,kEAAkE;IAClE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,4BAA4B;AAC5B,MAAM,WAAW,aAAa;IAC7B,6DAA6D;IAC7D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,8CAA8C;AAC9C,MAAM,WAAW,QAAQ;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAED,iCAAiC;AACjC,MAAM,WAAW,YAAY;IAC5B,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,wCAAwC;AACxC,MAAM,WAAW,YAAY;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,gDAAgD;IAChD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,IAAI,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAED,6BAA6B;AAC7B,MAAM,WAAW,cAAc;IAC9B,4CAA4C;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;;;GAMG;AACH,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,IAAI,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;AAE3F,2EAA2E;AAC3E,MAAM,WAAW,UAAU;IAC1B;;;;;;;OAOG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,8DAA8D;IAC9D,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;IACpC,4CAA4C;IAC5C,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACxB,sDAAsD;IACtD,MAAM,IAAI,cAAc,CAAC,UAAU,CAAC,CAAC;CACrC;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,YAAY;IAC5B;;;OAGG;IACH,IAAI,CAAC,IAAI,CAAC,EAAE,aAAa,GAAG,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACzD,kCAAkC;IAClC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACzC,qDAAqD;IACrD,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAC;IAC9B;;;;;OAKG;IACH,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACzE,wEAAwE;IACxE,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agentuity/storage",
|
|
3
|
-
"version": "3.0.0-
|
|
3
|
+
"version": "3.0.0-beta.1",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"author": "Agentuity employees and contributors",
|
|
6
6
|
"description": "Dual-runtime S3 client for Agentuity storage buckets. Bun backend uses Bun.S3Client; Node backend uses @aws-sdk/client-s3.",
|
|
@@ -52,7 +52,6 @@
|
|
|
52
52
|
},
|
|
53
53
|
"devDependencies": {
|
|
54
54
|
"@types/bun": "latest",
|
|
55
|
-
"bun-types": "latest",
|
|
56
55
|
"typescript": "^5.9.0"
|
|
57
56
|
},
|
|
58
57
|
"publishConfig": {
|
package/src/bun.ts
CHANGED
|
@@ -48,8 +48,17 @@ export function createS3Client(bucket: BucketConfig): S3ClientLike {
|
|
|
48
48
|
|
|
49
49
|
return {
|
|
50
50
|
async list(opts?: S3ListOptions | null): Promise<S3ListResult> {
|
|
51
|
-
// `Bun.S3Client.list` accepts `null` for "no filter".
|
|
52
|
-
|
|
51
|
+
// `Bun.S3Client.list` accepts `null` for "no filter". Translate
|
|
52
|
+
// our camelCase shape (continuationToken, maxKeys) to Bun's
|
|
53
|
+
// expected option keys.
|
|
54
|
+
const bunOpts = opts
|
|
55
|
+
? {
|
|
56
|
+
prefix: opts.prefix,
|
|
57
|
+
maxKeys: opts.maxKeys,
|
|
58
|
+
continuationToken: opts.continuationToken,
|
|
59
|
+
}
|
|
60
|
+
: (null as any);
|
|
61
|
+
const out = (await client.list(bunOpts)) as {
|
|
53
62
|
contents?: Array<{
|
|
54
63
|
key: string;
|
|
55
64
|
size?: number;
|
|
@@ -57,6 +66,7 @@ export function createS3Client(bucket: BucketConfig): S3ClientLike {
|
|
|
57
66
|
etag?: string;
|
|
58
67
|
}>;
|
|
59
68
|
isTruncated?: boolean;
|
|
69
|
+
nextContinuationToken?: string;
|
|
60
70
|
};
|
|
61
71
|
return {
|
|
62
72
|
contents: (out.contents ?? []).map((o) => ({
|
|
@@ -66,6 +76,7 @@ export function createS3Client(bucket: BucketConfig): S3ClientLike {
|
|
|
66
76
|
etag: o.etag,
|
|
67
77
|
})),
|
|
68
78
|
isTruncated: out.isTruncated ?? false,
|
|
79
|
+
nextContinuationToken: out.nextContinuationToken,
|
|
69
80
|
};
|
|
70
81
|
},
|
|
71
82
|
|
|
@@ -83,6 +94,11 @@ export function createS3Client(bucket: BucketConfig): S3ClientLike {
|
|
|
83
94
|
file(key: string): S3FileLike {
|
|
84
95
|
const f = client.file(key);
|
|
85
96
|
return {
|
|
97
|
+
// Bun's S3File exposes `type` as a getter that the underlying
|
|
98
|
+
// client populates as it sees fit. Forward it directly.
|
|
99
|
+
get type(): string | undefined {
|
|
100
|
+
return (f as { type?: string }).type;
|
|
101
|
+
},
|
|
86
102
|
arrayBuffer: () => f.arrayBuffer(),
|
|
87
103
|
text: () => f.text(),
|
|
88
104
|
stream: () => f.stream() as ReadableStream<Uint8Array>,
|
package/src/node.ts
CHANGED
|
@@ -117,6 +117,7 @@ export function createS3Client(bucket: BucketConfig): S3ClientLike {
|
|
|
117
117
|
Bucket: state.bucketLabel,
|
|
118
118
|
Prefix: opts?.prefix,
|
|
119
119
|
MaxKeys: opts?.maxKeys,
|
|
120
|
+
ContinuationToken: opts?.continuationToken,
|
|
120
121
|
})
|
|
121
122
|
);
|
|
122
123
|
return {
|
|
@@ -127,6 +128,7 @@ export function createS3Client(bucket: BucketConfig): S3ClientLike {
|
|
|
127
128
|
etag: o.ETag,
|
|
128
129
|
})),
|
|
129
130
|
isTruncated: out.IsTruncated ?? false,
|
|
131
|
+
nextContinuationToken: out.NextContinuationToken,
|
|
130
132
|
};
|
|
131
133
|
},
|
|
132
134
|
|
|
@@ -145,13 +147,21 @@ export function createS3Client(bucket: BucketConfig): S3ClientLike {
|
|
|
145
147
|
},
|
|
146
148
|
|
|
147
149
|
file(key: string): S3FileLike {
|
|
150
|
+
// Mutable holder for the most recently observed Content-Type.
|
|
151
|
+
// Populated by the first arrayBuffer/text/stream call; matches
|
|
152
|
+
// the contract documented on S3FileLike.type.
|
|
153
|
+
const meta: { type?: string } = {};
|
|
148
154
|
return {
|
|
155
|
+
get type(): string | undefined {
|
|
156
|
+
return meta.type;
|
|
157
|
+
},
|
|
149
158
|
async arrayBuffer(): Promise<ArrayBuffer> {
|
|
150
159
|
const sdk = await loadSdk();
|
|
151
160
|
const client = await getClient();
|
|
152
161
|
const out = await client.send(
|
|
153
162
|
new sdk.GetObjectCommand({ Bucket: state.bucketLabel, Key: key })
|
|
154
163
|
);
|
|
164
|
+
if (out.ContentType) meta.type = out.ContentType;
|
|
155
165
|
return readBodyAsArrayBuffer(out.Body);
|
|
156
166
|
},
|
|
157
167
|
async text(): Promise<string> {
|
|
@@ -174,6 +184,7 @@ export function createS3Client(bucket: BucketConfig): S3ClientLike {
|
|
|
174
184
|
Key: key,
|
|
175
185
|
})
|
|
176
186
|
);
|
|
187
|
+
if (out.ContentType) meta.type = out.ContentType;
|
|
177
188
|
inner = bodyToWebStream(out.Body);
|
|
178
189
|
reader = inner.getReader() as ReadableStreamDefaultReader<Uint8Array>;
|
|
179
190
|
}
|
package/src/types.ts
CHANGED
|
@@ -29,6 +29,12 @@ export interface S3ListOptions {
|
|
|
29
29
|
prefix?: string;
|
|
30
30
|
/** Maximum number of objects to return in this response. */
|
|
31
31
|
maxKeys?: number;
|
|
32
|
+
/**
|
|
33
|
+
* Pagination token. If the previous `list()` call returned an
|
|
34
|
+
* `S3ListResult` with `isTruncated: true`, pass its
|
|
35
|
+
* `nextContinuationToken` here to fetch the next page.
|
|
36
|
+
*/
|
|
37
|
+
continuationToken?: string;
|
|
32
38
|
}
|
|
33
39
|
|
|
34
40
|
/** A single object entry in a list result. */
|
|
@@ -47,6 +53,11 @@ export interface S3Object {
|
|
|
47
53
|
export interface S3ListResult {
|
|
48
54
|
contents: S3Object[];
|
|
49
55
|
isTruncated: boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Token to pass as `continuationToken` on the next `list()` call to
|
|
58
|
+
* fetch the next page. Undefined when `isTruncated` is `false`.
|
|
59
|
+
*/
|
|
60
|
+
nextContinuationToken?: string;
|
|
50
61
|
}
|
|
51
62
|
|
|
52
63
|
/** Result of a `stat()` (HEAD) call. */
|
|
@@ -75,6 +86,15 @@ export type S3Body = string | Uint8Array | ArrayBuffer | Blob | ReadableStream<U
|
|
|
75
86
|
|
|
76
87
|
/** A handle to an object on the server. Returned by `client.file(key)`. */
|
|
77
88
|
export interface S3FileLike {
|
|
89
|
+
/**
|
|
90
|
+
* Content-Type of the object, when known.
|
|
91
|
+
*
|
|
92
|
+
* Bun's S3File populates this lazily via the underlying client; the
|
|
93
|
+
* Node backend captures it from the most recent `arrayBuffer()`,
|
|
94
|
+
* `text()`, or `stream()` call. May be `undefined` until one of
|
|
95
|
+
* those methods has been called at least once.
|
|
96
|
+
*/
|
|
97
|
+
readonly type: string | undefined;
|
|
78
98
|
/** Read the entire object into memory as an `ArrayBuffer`. */
|
|
79
99
|
arrayBuffer(): Promise<ArrayBuffer>;
|
|
80
100
|
/** Read the entire object as UTF-8 text. */
|