zerobucket 0.10.0 → 0.10.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.js CHANGED
@@ -150,17 +150,17 @@ INSERT INTO zerobucket_images
150
150
  VALUES ($1, $2, $3, $4, $5, $6, $7)
151
151
  RETURNING id;`;
152
152
  var SELECT_FULL = `
153
- SELECT id, data, mime_type, original_filename, size_bytes, width, height,
153
+ SELECT id, encode(data, 'base64') AS data_b64, mime_type, original_filename, size_bytes, width, height,
154
154
  checksum_sha256, storage_backend, object_storage_bucket, object_storage_key
155
155
  FROM zerobucket_images WHERE id = $1;`;
156
156
  var SELECT_MANY = `
157
- SELECT id, data, mime_type, original_filename, size_bytes, width, height,
157
+ SELECT id, encode(data, 'base64') AS data_b64, mime_type, original_filename, size_bytes, width, height,
158
158
  checksum_sha256, storage_backend, object_storage_bucket, object_storage_key
159
159
  FROM zerobucket_images WHERE id = ANY($1::uuid[]);`;
160
160
  var SELECT_METADATA = `
161
161
  SELECT id, mime_type, original_filename, size_bytes, width, height, checksum_sha256
162
162
  FROM zerobucket_images WHERE id = $1;`;
163
- var SELECT_CHUNK = `SELECT substring(data FROM $1::int FOR $2::int) AS chunk FROM zerobucket_images WHERE id = $3;`;
163
+ var SELECT_CHUNK = `SELECT encode(substring(data FROM $1::int FOR $2::int), 'base64') AS chunk FROM zerobucket_images WHERE id = $3;`;
164
164
  var SELECT_STREAM_INFO = `SELECT size_bytes, storage_backend, object_storage_key FROM zerobucket_images WHERE id = $1;`;
165
165
  var DELETE_RETURNING = `DELETE FROM zerobucket_images WHERE id = $1 RETURNING storage_backend, object_storage_key;`;
166
166
  var DELETE_MANY = `DELETE FROM zerobucket_images WHERE id = ANY($1::uuid[]) RETURNING id, storage_backend, object_storage_key;`;
@@ -193,7 +193,7 @@ INSERT INTO zerobucket_blobs (checksum_sha256, data, mime_type, size_bytes, widt
193
193
  VALUES ($1, $2, $3, $4, $5, $6, $7)
194
194
  ON CONFLICT (checksum_sha256) DO UPDATE SET ref_count = zerobucket_blobs.ref_count + EXCLUDED.ref_count;`;
195
195
  var D_INSERT_REF = `INSERT INTO zerobucket_image_refs (checksum_sha256, original_filename) VALUES ($1, $2) RETURNING id;`;
196
- var D_COLS = `r.id, b.data, b.mime_type, r.original_filename, b.size_bytes, b.width, b.height, r.checksum_sha256,
196
+ var D_COLS = `r.id, encode(b.data, 'base64') AS data_b64, b.mime_type, r.original_filename, b.size_bytes, b.width, b.height, r.checksum_sha256,
197
197
  'postgres'::text AS storage_backend, NULL::text AS object_storage_bucket, NULL::text AS object_storage_key`;
198
198
  var D_FROM = `FROM zerobucket_image_refs r JOIN zerobucket_blobs b ON r.checksum_sha256 = b.checksum_sha256`;
199
199
  var D_DELETE_REF = `DELETE FROM zerobucket_image_refs WHERE id = $1 RETURNING checksum_sha256;`;
@@ -215,7 +215,7 @@ var DEDUP_SQL = {
215
215
  selectMany: `SELECT ${D_COLS} ${D_FROM} WHERE r.id = ANY($1::uuid[]);`,
216
216
  selectMetadata: `SELECT r.id, b.mime_type, r.original_filename, b.size_bytes, b.width, b.height, r.checksum_sha256 ${D_FROM} WHERE r.id = $1;`,
217
217
  selectStreamInfo: `SELECT b.size_bytes, 'postgres'::text AS storage_backend, NULL::text AS object_storage_key ${D_FROM} WHERE r.id = $1;`,
218
- selectChunk: `SELECT substring(b.data FROM $1::int FOR $2::int) AS chunk ${D_FROM} WHERE r.id = $3;`,
218
+ selectChunk: `SELECT encode(substring(b.data FROM $1::int FOR $2::int), 'base64') AS chunk ${D_FROM} WHERE r.id = $3;`,
219
219
  exists: `SELECT 1 FROM zerobucket_image_refs WHERE id = $1;`
220
220
  };
221
221
  var RETRYABLE_SQLSTATES = /* @__PURE__ */ new Set([
@@ -672,7 +672,7 @@ var PostgresBackend = class {
672
672
  `Image ${JSON.stringify(id)} was deleted while streaming (delivered ${delivered} of ${wanted} bytes). Pass connection with your own open transaction if you need a consistent read across concurrent writers.`
673
673
  );
674
674
  }
675
- const chunk = row.chunk;
675
+ const chunk = row.chunk == null ? null : Buffer.from(row.chunk, "base64");
676
676
  if (!chunk || chunk.length === 0) {
677
677
  throw new StorageError(
678
678
  `Image ${JSON.stringify(id)} ended early while streaming (delivered ${delivered} of ${wanted} bytes).`
@@ -996,6 +996,8 @@ var PostgresBackend = class {
996
996
  }
997
997
  // ---- helpers ---------------------------------------------------------
998
998
  hydrate(row, id) {
999
+ row.data = row.data_b64 == null ? null : Buffer.from(row.data_b64, "base64");
1000
+ delete row.data_b64;
999
1001
  return hydrateRow(row, id, this.opts.objectStorage);
1000
1002
  }
1001
1003
  /**