@agentuity/storage 3.1.1 → 3.1.3
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 +17 -1
- package/dist/bun.d.ts.map +1 -1
- package/dist/bun.js +27 -4
- package/dist/bun.js.map +1 -1
- package/package.json +1 -1
- package/src/bun.ts +30 -4
package/dist/bun.d.ts
CHANGED
|
@@ -11,9 +11,25 @@
|
|
|
11
11
|
* That is intentional and matches the contract of the `bun` exports
|
|
12
12
|
* condition.
|
|
13
13
|
*/
|
|
14
|
-
import type { BucketConfig, S3ClientLike } from './types.ts';
|
|
14
|
+
import type { BucketConfig, S3Body, S3ClientLike } from './types.ts';
|
|
15
15
|
export type { BucketConfig, S3ClientLike } from './types.ts';
|
|
16
16
|
export { bucketConfigFromEnv } from './types.ts';
|
|
17
|
+
/**
|
|
18
|
+
* Normalize a write body into a shape `Bun.S3Client.write` stores
|
|
19
|
+
* losslessly.
|
|
20
|
+
*
|
|
21
|
+
* Bun 1.3.x's `S3Client.write` does not consume a Web `ReadableStream`:
|
|
22
|
+
* it string-coerces it to the 23-byte literal `"[object ReadableStream]"`
|
|
23
|
+
* and stores that instead of the stream's bytes. Buffer a stream to bytes
|
|
24
|
+
* first (a `Uint8Array` round-trips correctly); every other accepted
|
|
25
|
+
* shape (string/Uint8Array/ArrayBuffer/Blob) is already stored losslessly
|
|
26
|
+
* and passes through untouched.
|
|
27
|
+
*
|
|
28
|
+
* Exported for regression testing: Bun's built-in `bun` module can't be
|
|
29
|
+
* overridden via `mock.module`, so the buffering is verified here rather
|
|
30
|
+
* than through a mocked `write`.
|
|
31
|
+
*/
|
|
32
|
+
export declare function normalizeWriteBody(body: S3Body): Promise<Exclude<S3Body, ReadableStream<Uint8Array>>>;
|
|
17
33
|
/**
|
|
18
34
|
* Create an S3 client backed by `Bun.S3Client`.
|
|
19
35
|
*
|
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;AAIH,OAAO,KAAK,EACX,YAAY,
|
|
1
|
+
{"version":3,"file":"bun.d.ts","sourceRoot":"","sources":["../src/bun.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,EACX,YAAY,EACZ,MAAM,EACN,YAAY,EAMZ,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,kBAAkB,CACvC,IAAI,EAAE,MAAM,GACV,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,CAOtD;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,CAiFjE"}
|
package/dist/bun.js
CHANGED
|
@@ -14,6 +14,29 @@
|
|
|
14
14
|
import { S3Client } from 'bun';
|
|
15
15
|
import { resolveEndpoint } from "./types.js";
|
|
16
16
|
export { bucketConfigFromEnv } from "./types.js";
|
|
17
|
+
/**
|
|
18
|
+
* Normalize a write body into a shape `Bun.S3Client.write` stores
|
|
19
|
+
* losslessly.
|
|
20
|
+
*
|
|
21
|
+
* Bun 1.3.x's `S3Client.write` does not consume a Web `ReadableStream`:
|
|
22
|
+
* it string-coerces it to the 23-byte literal `"[object ReadableStream]"`
|
|
23
|
+
* and stores that instead of the stream's bytes. Buffer a stream to bytes
|
|
24
|
+
* first (a `Uint8Array` round-trips correctly); every other accepted
|
|
25
|
+
* shape (string/Uint8Array/ArrayBuffer/Blob) is already stored losslessly
|
|
26
|
+
* and passes through untouched.
|
|
27
|
+
*
|
|
28
|
+
* Exported for regression testing: Bun's built-in `bun` module can't be
|
|
29
|
+
* overridden via `mock.module`, so the buffering is verified here rather
|
|
30
|
+
* than through a mocked `write`.
|
|
31
|
+
*/
|
|
32
|
+
export async function normalizeWriteBody(body) {
|
|
33
|
+
if (body instanceof ReadableStream) {
|
|
34
|
+
// Buffer the stream to bytes; a Uint8Array round-trips correctly
|
|
35
|
+
// where a raw Web stream is silently corrupted.
|
|
36
|
+
return new Uint8Array(await new Response(body).arrayBuffer());
|
|
37
|
+
}
|
|
38
|
+
return body;
|
|
39
|
+
}
|
|
17
40
|
/**
|
|
18
41
|
* Create an S3 client backed by `Bun.S3Client`.
|
|
19
42
|
*
|
|
@@ -78,10 +101,10 @@ export function createS3Client(bucket) {
|
|
|
78
101
|
};
|
|
79
102
|
},
|
|
80
103
|
async write(key, body, opts) {
|
|
81
|
-
// `Bun.S3Client.write`
|
|
82
|
-
//
|
|
83
|
-
//
|
|
84
|
-
return client.write(key, body, opts);
|
|
104
|
+
// `Bun.S3Client.write` cannot consume a Web `ReadableStream` (it
|
|
105
|
+
// string-coerces it to "[object ReadableStream]"), so normalize
|
|
106
|
+
// the body to a shape Bun stores losslessly before writing.
|
|
107
|
+
return client.write(key, await normalizeWriteBody(body), opts);
|
|
85
108
|
},
|
|
86
109
|
async delete(key) {
|
|
87
110
|
await client.delete(key);
|
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,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAa7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,MAAoB;IAClD,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAEzC,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,gEAAgE;YAChE,4DAA4D;YAC5D,wBAAwB;YACxB,MAAM,OAAO,GAAG,IAAI;gBACnB,CAAC,CAAC;oBACA,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;iBACzC;gBACF,CAAC,CAAE,IAAY,CAAC;YACjB,MAAM,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAStC,CAAC;YACF,OAAO;gBACN,QAAQ,EAAE,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC1C,GAAG,EAAE,CAAC,CAAC,GAAG;oBACV,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC;oBACjB,YAAY,EAAE,kBAAkB,CAAC,CAAC,CAAC,YAAY,CAAC;oBAChD,IAAI,EAAE,CAAC,CAAC,IAAI;iBACZ,CAAC,CAAC;gBACH,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,KAAK;gBACrC,qBAAqB,EAAE,GAAG,CAAC,qBAAqB;aAChD,CAAC;QACH,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,GAAW;YACrB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACnC,OAAO;gBACN,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC;gBACnB,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,YAAY,EAAE,GAAG,CAAC,YAAY;gBAC9B,iEAAiE;gBACjE,IAAI,EAAG,GAAW,CAAC,IAAI,IAAK,GAAW,CAAC,IAAI;aAC5C,CAAC;QACH,CAAC;QAED,IAAI,CAAC,GAAW;YACf,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC3B,OAAO;gBACN,8DAA8D;gBAC9D,wDAAwD;gBACxD,IAAI,IAAI;oBACP,OAAQ,CAAuB,CAAC,IAAI,CAAC;gBACtC,CAAC;gBACD,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE;gBAClC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE;gBACpB,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,EAAgC;aACtD,CAAC;QACH,CAAC;QAED,KAAK,CAAC,KAAK,CAAC,GAAW,EAAE,IAAY,EAAE,IAAqB;YAC3D,gEAAgE;YAChE
|
|
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,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAa7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACvC,IAAY;IAEZ,IAAI,IAAI,YAAY,cAAc,EAAE,CAAC;QACpC,iEAAiE;QACjE,gDAAgD;QAChD,OAAO,IAAI,UAAU,CAAC,MAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,MAAoB;IAClD,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAEzC,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,gEAAgE;YAChE,4DAA4D;YAC5D,wBAAwB;YACxB,MAAM,OAAO,GAAG,IAAI;gBACnB,CAAC,CAAC;oBACA,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;iBACzC;gBACF,CAAC,CAAE,IAAY,CAAC;YACjB,MAAM,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAStC,CAAC;YACF,OAAO;gBACN,QAAQ,EAAE,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC1C,GAAG,EAAE,CAAC,CAAC,GAAG;oBACV,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC;oBACjB,YAAY,EAAE,kBAAkB,CAAC,CAAC,CAAC,YAAY,CAAC;oBAChD,IAAI,EAAE,CAAC,CAAC,IAAI;iBACZ,CAAC,CAAC;gBACH,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,KAAK;gBACrC,qBAAqB,EAAE,GAAG,CAAC,qBAAqB;aAChD,CAAC;QACH,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,GAAW;YACrB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACnC,OAAO;gBACN,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC;gBACnB,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,YAAY,EAAE,GAAG,CAAC,YAAY;gBAC9B,iEAAiE;gBACjE,IAAI,EAAG,GAAW,CAAC,IAAI,IAAK,GAAW,CAAC,IAAI;aAC5C,CAAC;QACH,CAAC;QAED,IAAI,CAAC,GAAW;YACf,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC3B,OAAO;gBACN,8DAA8D;gBAC9D,wDAAwD;gBACxD,IAAI,IAAI;oBACP,OAAQ,CAAuB,CAAC,IAAI,CAAC;gBACtC,CAAC;gBACD,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE;gBAClC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE;gBACpB,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,EAAgC;aACtD,CAAC;QACH,CAAC;QAED,KAAK,CAAC,KAAK,CAAC,GAAW,EAAE,IAAY,EAAE,IAAqB;YAC3D,iEAAiE;YACjE,gEAAgE;YAChE,4DAA4D;YAC5D,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,kBAAkB,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;QAChE,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,GAAW;YACvB,MAAM,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;KACD,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAgC;IAC3D,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;AAC5B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agentuity/storage",
|
|
3
|
-
"version": "3.1.
|
|
3
|
+
"version": "3.1.3",
|
|
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.",
|
package/src/bun.ts
CHANGED
|
@@ -28,6 +28,32 @@ import type {
|
|
|
28
28
|
export type { BucketConfig, S3ClientLike } from './types.ts';
|
|
29
29
|
export { bucketConfigFromEnv } from './types.ts';
|
|
30
30
|
|
|
31
|
+
/**
|
|
32
|
+
* Normalize a write body into a shape `Bun.S3Client.write` stores
|
|
33
|
+
* losslessly.
|
|
34
|
+
*
|
|
35
|
+
* Bun 1.3.x's `S3Client.write` does not consume a Web `ReadableStream`:
|
|
36
|
+
* it string-coerces it to the 23-byte literal `"[object ReadableStream]"`
|
|
37
|
+
* and stores that instead of the stream's bytes. Buffer a stream to bytes
|
|
38
|
+
* first (a `Uint8Array` round-trips correctly); every other accepted
|
|
39
|
+
* shape (string/Uint8Array/ArrayBuffer/Blob) is already stored losslessly
|
|
40
|
+
* and passes through untouched.
|
|
41
|
+
*
|
|
42
|
+
* Exported for regression testing: Bun's built-in `bun` module can't be
|
|
43
|
+
* overridden via `mock.module`, so the buffering is verified here rather
|
|
44
|
+
* than through a mocked `write`.
|
|
45
|
+
*/
|
|
46
|
+
export async function normalizeWriteBody(
|
|
47
|
+
body: S3Body
|
|
48
|
+
): Promise<Exclude<S3Body, ReadableStream<Uint8Array>>> {
|
|
49
|
+
if (body instanceof ReadableStream) {
|
|
50
|
+
// Buffer the stream to bytes; a Uint8Array round-trips correctly
|
|
51
|
+
// where a raw Web stream is silently corrupted.
|
|
52
|
+
return new Uint8Array(await new Response(body).arrayBuffer());
|
|
53
|
+
}
|
|
54
|
+
return body;
|
|
55
|
+
}
|
|
56
|
+
|
|
31
57
|
/**
|
|
32
58
|
* Create an S3 client backed by `Bun.S3Client`.
|
|
33
59
|
*
|
|
@@ -106,10 +132,10 @@ export function createS3Client(bucket: BucketConfig): S3ClientLike {
|
|
|
106
132
|
},
|
|
107
133
|
|
|
108
134
|
async write(key: string, body: S3Body, opts?: S3WriteOptions): Promise<number> {
|
|
109
|
-
// `Bun.S3Client.write`
|
|
110
|
-
//
|
|
111
|
-
//
|
|
112
|
-
return client.write(key, body
|
|
135
|
+
// `Bun.S3Client.write` cannot consume a Web `ReadableStream` (it
|
|
136
|
+
// string-coerces it to "[object ReadableStream]"), so normalize
|
|
137
|
+
// the body to a shape Bun stores losslessly before writing.
|
|
138
|
+
return client.write(key, await normalizeWriteBody(body), opts);
|
|
113
139
|
},
|
|
114
140
|
|
|
115
141
|
async delete(key: string): Promise<void> {
|