deeplake 0.3.5 → 0.3.7

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.
@@ -1,11 +1,8 @@
1
1
  /**
2
2
  * Browser storage client factory for the WASM deeplake engine.
3
3
  *
4
- * Creates a JS client object with methods (download, exists, list, metadata,
5
- * remove, saveWithCompletion, copyGetter, copyWriter, generateGetPresignedUrl)
6
- * that the C++ js_storage layer calls via EM_JS wrappers.
7
- *
8
- * Uses fetch() for all S3 operations — no AWS SDK dependency in the browser.
4
+ * Uses @aws-sdk/client-s3 for all S3 operations handles SigV4 signing,
5
+ * retries, and edge cases automatically.
9
6
  */
10
7
  export declare function createBrowserStorageFactory(wasmMod?: any): (type: string, config?: any, _mode?: string) => {
11
8
  download(url: string, range: string, index: number, _callback: any): void;
@@ -1 +1 @@
1
- {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../src/browser/storage.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA2TH,wBAAgB,2BAA2B,CAAC,OAAO,CAAC,EAAE,GAAG,IAC/B,MAAM,MAAM,EAAE,SAAS,GAAG,EAAE,QAAQ,MAAM;kBA9LlD,MAAM,SAAS,MAAM,SAAS,MAAM,aAAa,GAAG;gBAsBtD,MAAM,aAAa,GAAG;mBAenB,MAAM,QAAQ,MAAM,aAAa,GAAG;eAyBxC,MAAM,UAAU,MAAM,cAAc,MAAM,aAAa,GAAG;mBAoFtD,MAAM,UAAU,MAAM,aAAa,GAAG;iCAKxB,MAAM,aAAa,GAAG;gBAMvC,MAAM,aAAa,GAAG;4BAQV,MAAM,QAAQ,UAAU,aAAa,GAAG;;;;cA0CnE"}
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../src/browser/storage.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAoKH,wBAAgB,2BAA2B,CAAC,OAAO,CAAC,EAAE,GAAG,IAC/B,MAAM,MAAM,EAAE,SAAS,GAAG,EAAE,QAAQ,MAAM;kBAtHlD,MAAM,SAAS,MAAM,SAAS,MAAM,aAAa,GAAG;gBAyBtD,MAAM,aAAa,GAAG;mBAQnB,MAAM,QAAQ,MAAM,aAAa,GAAG;eAoBxC,MAAM,UAAU,MAAM,cAAc,MAAM,aAAa,GAAG;mBAsBtD,MAAM,UAAU,MAAM,aAAa,GAAG;iCAKxB,MAAM,aAAa,GAAG;gBAKvC,MAAM,aAAa,GAAG;4BAQV,MAAM,QAAQ,UAAU,aAAa,GAAG;;;;cAuCnE"}
@@ -1,14 +1,11 @@
1
1
  /**
2
2
  * Browser storage client factory for the WASM deeplake engine.
3
3
  *
4
- * Creates a JS client object with methods (download, exists, list, metadata,
5
- * remove, saveWithCompletion, copyGetter, copyWriter, generateGetPresignedUrl)
6
- * that the C++ js_storage layer calls via EM_JS wrappers.
7
- *
8
- * Uses fetch() for all S3 operations — no AWS SDK dependency in the browser.
4
+ * Uses @aws-sdk/client-s3 for all S3 operations handles SigV4 signing,
5
+ * retries, and edge cases automatically.
9
6
  */
7
+ import { S3Client, GetObjectCommand, HeadObjectCommand, ListObjectsV2Command, DeleteObjectCommand, PutObjectCommand, } from '@aws-sdk/client-s3';
10
8
  function parseS3Url(url) {
11
- // s3://bucket/key or just bucket/key
12
9
  const clean = url.replace(/^s3:\/\//, '');
13
10
  const idx = clean.indexOf('/');
14
11
  if (idx === -1)
@@ -16,16 +13,13 @@ function parseS3Url(url) {
16
13
  return { bucket: clean.substring(0, idx), key: clean.substring(idx + 1) };
17
14
  }
18
15
  // Embind wraps std::function as an object with an invoke-like interface.
19
- // Normalize to a plain JS function.
20
16
  function asCallable(cb) {
21
17
  if (typeof cb === 'function')
22
18
  return cb;
23
- // embind std::function wrapper — call it directly
24
19
  if (cb && typeof cb.opcall === 'function')
25
20
  return (arg) => cb.opcall(arg);
26
21
  if (cb && typeof cb.call === 'function')
27
22
  return (arg) => cb.call(arg);
28
- // If it's an emval-wrapped function, try calling it directly
29
23
  return (arg) => { try {
30
24
  cb(arg);
31
25
  }
@@ -33,212 +27,83 @@ function asCallable(cb) {
33
27
  }
34
28
  function createBrowserStorageClient(config, wasmMod) {
35
29
  const region = config.region || 'us-east-1';
36
- const endpoint = config.endpoint || `https://s3.${region}.amazonaws.com`;
37
- const accessKeyId = config.aws_access_key_id;
38
- const secretAccessKey = config.aws_secret_access_key;
39
- const sessionToken = config.aws_session_token;
40
- // AWS Signature V4 — header-based auth (simpler and more reliable than presigned URLs)
41
- async function signedFetch(method, bucket, key, opts = {}) {
42
- const host = `${bucket}.s3.${region}.amazonaws.com`;
43
- const encodedKey = key.split('/').map(s => encodeURIComponent(s)).join('/');
44
- const url = `https://${host}/${encodedKey}`;
45
- const enc = new TextEncoder();
46
- async function hmac(k, msg) {
47
- const key = await crypto.subtle.importKey('raw', k, { name: 'HMAC', hash: 'SHA-256' }, false, ['sign']);
48
- return crypto.subtle.sign('HMAC', key, enc.encode(msg));
49
- }
50
- function hex(buf) {
51
- return Array.from(new Uint8Array(buf)).map(b => b.toString(16).padStart(2, '0')).join('');
52
- }
53
- async function sha256(data) {
54
- const buf = typeof data === 'string' ? enc.encode(data) : data;
55
- return hex(await crypto.subtle.digest('SHA-256', buf));
56
- }
57
- const now = new Date();
58
- const dateStr = now.toISOString().replace(/[:-]|\.\d{3}/g, '').slice(0, 15) + 'Z';
59
- const shortDate = dateStr.substring(0, 8);
60
- const emptyHash = 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855';
61
- const payloadHash = opts.body ? await sha256(opts.body) : emptyHash;
62
- const headers = {
63
- 'host': host,
64
- 'x-amz-content-sha256': payloadHash,
65
- 'x-amz-date': dateStr,
66
- };
67
- if (sessionToken) {
68
- headers['x-amz-security-token'] = sessionToken;
69
- }
70
- if (opts.range) {
71
- headers['range'] = opts.range;
72
- }
73
- const signedHeaderNames = Object.keys(headers).sort().join(';');
74
- const canonicalHeaders = Object.keys(headers).sort()
75
- .map(k => `${k}:${headers[k]}\n`).join('');
76
- const canonicalRequest = [
77
- method,
78
- '/' + encodedKey,
79
- '', // no query string
80
- canonicalHeaders,
81
- signedHeaderNames,
82
- payloadHash,
83
- ].join('\n');
84
- const scope = `${shortDate}/${region}/s3/aws4_request`;
85
- const stringToSign = [
86
- 'AWS4-HMAC-SHA256',
87
- dateStr,
88
- scope,
89
- await sha256(canonicalRequest),
90
- ].join('\n');
91
- const seedKey = enc.encode('AWS4' + secretAccessKey);
92
- let signingKey = await hmac(seedKey.buffer.slice(seedKey.byteOffset, seedKey.byteOffset + seedKey.byteLength), shortDate);
93
- signingKey = await hmac(signingKey, region);
94
- signingKey = await hmac(signingKey, 's3');
95
- signingKey = await hmac(signingKey, 'aws4_request');
96
- const signature = hex(await crypto.subtle.sign('HMAC', await crypto.subtle.importKey('raw', signingKey, { name: 'HMAC', hash: 'SHA-256' }, false, ['sign']), enc.encode(stringToSign)));
97
- const authHeader = `AWS4-HMAC-SHA256 Credential=${accessKeyId}/${scope}, SignedHeaders=${signedHeaderNames}, Signature=${signature}`;
98
- const fetchHeaders = {
99
- ...headers,
100
- 'Authorization': authHeader,
101
- };
102
- delete fetchHeaders['host']; // browser sets Host automatically
103
- const fetchOpts = { method, headers: fetchHeaders };
104
- if (opts.body) {
105
- fetchOpts.body = opts.body;
106
- }
107
- return fetch(url, fetchOpts);
108
- }
30
+ const s3 = new S3Client({
31
+ region,
32
+ credentials: {
33
+ accessKeyId: config.aws_access_key_id.trim(),
34
+ secretAccessKey: config.aws_secret_access_key.trim(),
35
+ ...(config.aws_session_token ? { sessionToken: config.aws_session_token.trim() } : {}),
36
+ },
37
+ });
109
38
  const client = {
110
39
  download(url, range, index, _callback) {
111
40
  const callback = asCallable(_callback);
112
41
  const { bucket, key } = parseS3Url(url);
113
- // C++ passes range as "bytes=0-32767" (already includes "bytes=" prefix)
114
42
  const rangeHeader = range && range.length > 0 ? range : undefined;
115
- signedFetch('GET', bucket, key, { range: rangeHeader })
43
+ s3.send(new GetObjectCommand({
44
+ Bucket: bucket,
45
+ Key: key,
46
+ ...(rangeHeader ? { Range: rangeHeader } : {}),
47
+ }))
116
48
  .then(async (resp) => {
117
- if (!resp.ok) {
118
- callback({ responseCode: resp.status });
119
- return;
120
- }
121
- const data = await resp.arrayBuffer();
122
- if (wasmMod?.provideResponseBuffer) {
49
+ const data = await new Response(resp.Body).arrayBuffer();
50
+ if (data.byteLength > 0 && wasmMod?.provideResponseBuffer) {
123
51
  const buf = wasmMod.provideResponseBuffer(index, data.byteLength);
124
52
  buf.set(new Uint8Array(data));
125
53
  }
126
- callback({ responseCode: resp.status });
54
+ callback({ responseCode: resp.$metadata.httpStatusCode ?? 200 });
127
55
  })
128
- .catch(() => callback({ responseCode: 1000 }));
56
+ .catch((err) => {
57
+ const code = err.$metadata?.httpStatusCode ?? 1000;
58
+ console.error(`[deeplake-storage] download ${bucket}/${key} failed:`, err.message ?? err);
59
+ callback({ responseCode: code });
60
+ });
129
61
  },
130
62
  exists(url, _callback) {
131
63
  const callback = asCallable(_callback);
132
64
  const { bucket, key } = parseS3Url(url);
133
- signedFetch('HEAD', bucket, key)
134
- .then((resp) => {
135
- if (!resp.ok) {
136
- callback(-1);
137
- return;
138
- }
139
- const len = parseInt(resp.headers.get('content-length') || '0', 10);
140
- callback(len);
141
- })
65
+ s3.send(new HeadObjectCommand({ Bucket: bucket, Key: key }))
66
+ .then((resp) => callback(resp.ContentLength ?? 0))
142
67
  .catch(() => callback(-1));
143
68
  },
144
69
  metadata(root, path, _callback) {
145
70
  const callback = asCallable(_callback);
146
71
  const { bucket, key } = parseS3Url(root + path);
147
- signedFetch('HEAD', bucket, key)
72
+ s3.send(new HeadObjectCommand({ Bucket: bucket, Key: key }))
148
73
  .then((resp) => {
149
- if (!resp.ok) {
150
- callback({ responseCode: resp.status });
151
- return;
152
- }
153
- const lastModified = new Date(resp.headers.get('last-modified') || '');
154
- const size = parseInt(resp.headers.get('content-length') || '0', 10);
155
- const etag = resp.headers.get('etag') || '';
156
74
  callback({
157
75
  responseCode: 200,
158
76
  data: {
159
77
  path: root + path,
160
- size,
161
- lastModified,
162
- etag,
78
+ size: resp.ContentLength ?? 0,
79
+ lastModified: resp.LastModified ?? new Date(),
80
+ etag: (resp.ETag ?? '').replace(/"/g, ''),
163
81
  },
164
82
  });
165
83
  })
166
- .catch(() => callback({ responseCode: 1000 }));
84
+ .catch((err) => {
85
+ callback({ responseCode: err.$metadata?.httpStatusCode ?? 1000 });
86
+ });
167
87
  },
168
88
  list(root, prefix, _delimiter, _callback) {
169
89
  const callback = asCallable(_callback);
170
90
  const { bucket } = parseS3Url(root);
171
- // root is "bucket/path/to/dataset/", prefix is relative like "_deeplake_log/_meta/"
172
- const rootKey = root.replace(/^[^/]+\//, ''); // strip bucket name
91
+ const rootKey = root.replace(/^[^/]+\//, '');
173
92
  const fullPrefix = rootKey + prefix;
174
- // S3 ListObjectsV2 via signed GET with query params
175
- const listUrl = `https://${bucket}.s3.${region}.amazonaws.com/?list-type=2&prefix=${encodeURIComponent(fullPrefix)}`;
176
- const enc = new TextEncoder();
177
- // Sign the list request
178
- (async () => {
179
- try {
180
- const now = new Date();
181
- const dateStr = now.toISOString().replace(/[:-]|\.\d{3}/g, '').slice(0, 15) + 'Z';
182
- const shortDate = dateStr.substring(0, 8);
183
- const emptyHash = 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855';
184
- const host = `${bucket}.s3.${region}.amazonaws.com`;
185
- const headers = {
186
- 'host': host,
187
- 'x-amz-content-sha256': emptyHash,
188
- 'x-amz-date': dateStr,
189
- };
190
- if (sessionToken)
191
- headers['x-amz-security-token'] = sessionToken;
192
- const signedHeaderNames = Object.keys(headers).sort().join(';');
193
- const canonicalHeaders = Object.keys(headers).sort().map(k => `${k}:${headers[k]}\n`).join('');
194
- const queryString = `list-type=2&prefix=${encodeURIComponent(fullPrefix)}`;
195
- async function hmacSign(k, msg) {
196
- const key = await crypto.subtle.importKey('raw', k, { name: 'HMAC', hash: 'SHA-256' }, false, ['sign']);
197
- return crypto.subtle.sign('HMAC', key, enc.encode(msg));
198
- }
199
- function hex(buf) {
200
- return Array.from(new Uint8Array(buf)).map(b => b.toString(16).padStart(2, '0')).join('');
201
- }
202
- async function sha256str(s) {
203
- return hex(await crypto.subtle.digest('SHA-256', enc.encode(s)));
204
- }
205
- const canonicalRequest = ['GET', '/', queryString, canonicalHeaders, signedHeaderNames, emptyHash].join('\n');
206
- const scope = `${shortDate}/${region}/s3/aws4_request`;
207
- const stringToSign = ['AWS4-HMAC-SHA256', dateStr, scope, await sha256str(canonicalRequest)].join('\n');
208
- const seedKey = enc.encode('AWS4' + secretAccessKey);
209
- let sigKey = await hmacSign(seedKey.buffer.slice(seedKey.byteOffset, seedKey.byteOffset + seedKey.byteLength), shortDate);
210
- sigKey = await hmacSign(sigKey, region);
211
- sigKey = await hmacSign(sigKey, 's3');
212
- sigKey = await hmacSign(sigKey, 'aws4_request');
213
- const signature = hex(await crypto.subtle.sign('HMAC', await crypto.subtle.importKey('raw', sigKey, { name: 'HMAC', hash: 'SHA-256' }, false, ['sign']), enc.encode(stringToSign)));
214
- const authHeader = `AWS4-HMAC-SHA256 Credential=${accessKeyId}/${scope}, SignedHeaders=${signedHeaderNames}, Signature=${signature}`;
215
- const fetchHeaders = { ...headers, 'Authorization': authHeader };
216
- delete fetchHeaders['host'];
217
- const resp = await fetch(listUrl, { headers: fetchHeaders });
218
- if (!resp.ok) {
219
- callback({ responseCode: resp.status, data: [] });
220
- return;
221
- }
222
- const xml = await resp.text();
223
- // Parse XML response for <Key>, <Size>, <LastModified>, <ETag>
224
- const entries = [];
225
- const regex = /<Contents>[\s\S]*?<Key>(.*?)<\/Key>[\s\S]*?<LastModified>(.*?)<\/LastModified>[\s\S]*?<ETag>(.*?)<\/ETag>[\s\S]*?<Size>(.*?)<\/Size>[\s\S]*?<\/Contents>/g;
226
- let match;
227
- while ((match = regex.exec(xml)) !== null) {
228
- const key = match[1].replace(rootKey, ''); // make relative to root
229
- entries.push({
230
- path: key,
231
- size: parseInt(match[4], 10),
232
- lastModified: new Date(match[2]),
233
- etag: match[3].replace(/"/g, ''),
234
- });
235
- }
236
- callback({ responseCode: 200, data: entries });
237
- }
238
- catch {
239
- callback({ responseCode: 1000, data: [] });
240
- }
241
- })();
93
+ s3.send(new ListObjectsV2Command({ Bucket: bucket, Prefix: fullPrefix }))
94
+ .then((resp) => {
95
+ const entries = (resp.Contents ?? []).map((item) => ({
96
+ path: (item.Key ?? '').replace(rootKey, ''),
97
+ size: item.Size ?? 0,
98
+ lastModified: item.LastModified ?? new Date(),
99
+ etag: (item.ETag ?? '').replace(/"/g, ''),
100
+ }));
101
+ callback({ responseCode: 200, data: entries });
102
+ })
103
+ .catch((err) => {
104
+ console.error(`[deeplake-storage] list ${bucket}/${fullPrefix} failed:`, err.message ?? err);
105
+ callback({ responseCode: err.$metadata?.httpStatusCode ?? 1000, data: [] });
106
+ });
242
107
  },
243
108
  listDirs(root, prefix, _callback) {
244
109
  const callback = asCallable(_callback);
@@ -246,21 +111,20 @@ function createBrowserStorageClient(config, wasmMod) {
246
111
  },
247
112
  generateGetPresignedUrl(url, _callback) {
248
113
  const callback = asCallable(_callback);
249
- // Return the URL as-is for now
250
114
  callback(url);
251
115
  },
252
116
  remove(url, _callback) {
253
117
  const callback = asCallable(_callback);
254
118
  const { bucket, key } = parseS3Url(url);
255
- signedFetch('DELETE', bucket, key)
256
- .then((resp) => callback({ responseCode: resp.status }))
119
+ s3.send(new DeleteObjectCommand({ Bucket: bucket, Key: key }))
120
+ .then((resp) => callback({ responseCode: resp.$metadata.httpStatusCode ?? 200 }))
257
121
  .catch(() => callback({ responseCode: 1000 }));
258
122
  },
259
123
  saveWithCompletion(url, data, _callback) {
260
124
  const callback = asCallable(_callback);
261
125
  const { bucket, key } = parseS3Url(url);
262
- signedFetch('PUT', bucket, key, { body: data })
263
- .then((resp) => callback({ responseCode: resp.status }))
126
+ s3.send(new PutObjectCommand({ Bucket: bucket, Key: key, Body: data }))
127
+ .then((resp) => callback({ responseCode: resp.$metadata.httpStatusCode ?? 200 }))
264
128
  .catch(() => callback({ responseCode: 1000 }));
265
129
  },
266
130
  copyGetter() {
@@ -279,9 +143,6 @@ export function createBrowserStorageFactory(wasmMod) {
279
143
  return function factory(type, config, _mode) {
280
144
  if (!config)
281
145
  return undefined;
282
- // Config can come in two shapes:
283
- // 1. { credentials: { accessKeyId, secretAccessKey, sessionToken }, region, ... }
284
- // 2. { aws_access_key_id, aws_secret_access_key, aws_session_token, region, ... }
285
146
  const creds = config.credentials || config;
286
147
  const storageConfig = {
287
148
  aws_access_key_id: creds.accessKeyId || creds.aws_access_key_id || config.aws_access_key_id || '',
@@ -1 +1 @@
1
- {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../../src/browser/storage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../../src/browser/storage.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "deeplake",
3
- "version": "0.3.5",
3
+ "version": "0.3.7",
4
4
  "description": "DeepLake database SDK for Node.js and browsers",
5
5
  "exports": {
6
6
  ".": {
@@ -37,8 +37,10 @@
37
37
  "engines": {
38
38
  "node": ">=18.0.0"
39
39
  },
40
+ "dependencies": {
41
+ "@aws-sdk/client-s3": "^3.1000.0"
42
+ },
40
43
  "optionalDependencies": {
41
- "@aws-sdk/client-s3": "^3.1000.0",
42
44
  "@aws-sdk/s3-request-presigner": "^3.1000.0",
43
45
  "pg": "^8.11.0",
44
46
  "sharp": "^0.34.5"