@tinycloud/sdk-services 3.2.0-beta.5 → 3.2.0-beta.8

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.
Files changed (39) hide show
  1. package/dist/{BaseService-BDQXjWMx.d.cts → BaseService-4wwJq1Gn.d.cts} +1 -1
  2. package/dist/{BaseService-Di_hVfUV.d.ts → BaseService-BGr2slUz.d.ts} +1 -1
  3. package/dist/encryption/index.cjs +5 -1
  4. package/dist/encryption/index.cjs.map +1 -1
  5. package/dist/encryption/index.d.cts +2 -2
  6. package/dist/encryption/index.d.ts +2 -2
  7. package/dist/encryption/index.js +5 -1
  8. package/dist/encryption/index.js.map +1 -1
  9. package/dist/index.cjs +180 -9
  10. package/dist/index.cjs.map +1 -1
  11. package/dist/index.d.cts +156 -6
  12. package/dist/index.d.ts +156 -6
  13. package/dist/index.js +174 -9
  14. package/dist/index.js.map +1 -1
  15. package/dist/internal/decrypt-transport-response-error.d.cts +1 -1
  16. package/dist/internal/decrypt-transport-response-error.d.ts +1 -1
  17. package/dist/kv/index.cjs +42 -3
  18. package/dist/kv/index.cjs.map +1 -1
  19. package/dist/kv/index.d.cts +4 -4
  20. package/dist/kv/index.d.ts +4 -4
  21. package/dist/kv/index.js +42 -3
  22. package/dist/kv/index.js.map +1 -1
  23. package/dist/kv/replication/index.cjs +2 -0
  24. package/dist/kv/replication/index.cjs.map +1 -1
  25. package/dist/kv/replication/index.d.cts +3 -3
  26. package/dist/kv/replication/index.d.ts +3 -3
  27. package/dist/kv/replication/index.js +2 -0
  28. package/dist/kv/replication/index.js.map +1 -1
  29. package/dist/{scope-BKge7zDT.d.ts → scope-CoKKmMiI.d.ts} +1 -1
  30. package/dist/{scope-C05VVAXH.d.cts → scope-D7wmjbMH.d.cts} +1 -1
  31. package/dist/sql/index.cjs +44 -2
  32. package/dist/sql/index.cjs.map +1 -1
  33. package/dist/sql/index.d.cts +2 -2
  34. package/dist/sql/index.d.ts +2 -2
  35. package/dist/sql/index.js +44 -2
  36. package/dist/sql/index.js.map +1 -1
  37. package/dist/{types-7A5rHWRY.d.cts → types-D-9A3Sut.d.cts} +6 -0
  38. package/dist/{types-7A5rHWRY.d.ts → types-D-9A3Sut.d.ts} +6 -0
  39. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
- import { B as BaseService } from '../BaseService-BDQXjWMx.cjs';
2
- import { R as Result, I as IService } from '../types-7A5rHWRY.cjs';
3
- import { Y as KVGetOptions, a1 as KVResponse, Q as KVBatchReadResponse, a0 as KVPutOptions, M as KVBatchPutItem, N as KVBatchPutOptions, O as KVBatchPutResponse, _ as KVListOptions, $ as KVListResponse, U as KVChangesOptions, V as KVChangesResponse, X as KVDeleteOptions, Z as KVHeadOptions, W as KVCreateSignedReadUrlOptions, a4 as KVSignedReadUrlResponse, a3 as KVServiceConfig, c as KVReadThrough } from '../scope-C05VVAXH.cjs';
4
- export { A as AuthorityRefusal, C as CLEAR_PENDING_WARNING, H as DEFAULT_SIGNED_READ_URL_EXPIRY_MS, I as KVAction, J as KVActionType, S as KVChange, T as KVChangesAuthority, b as KVListPage, d as KVReplicaHandle, e as KVReplicaSpec, f as KVReplicaStorage, a as KVReplicationController, K as KVReplicationDeps, a2 as KVResponseHeaders, L as LocalGetResult, g as LocalListResult, h as LocalReadMeta, i as LocalReplicaStatus, j as LocalSyncResult, k as PendingWriteRecord, l as PendingWriteState, P as PendingWriteStore, m as PinnedKey, n as PurgeTarget, o as ReplicaAuthorityState, p as ReplicaCoverage, q as ReplicaDevice, r as ReplicaGrantInfo, s as ReplicaState, t as ReplicaStatusEntry, u as ReplicationAuthority, v as ReplicationControl, w as ReplicationEvent, R as ReplicationIdentity, x as ReplicationOptions, y as ReplicationPurgeReport, z as ReplicationReason, B as ReplicationScheduler, D as ResolvedReplicationOptions, E as canonicalReplicationIdentity, F as replicationIdentityKey, G as requiresSecretsOptIn } from '../scope-C05VVAXH.cjs';
1
+ import { B as BaseService } from '../BaseService-4wwJq1Gn.cjs';
2
+ import { R as Result, I as IService } from '../types-D-9A3Sut.cjs';
3
+ import { Y as KVGetOptions, a1 as KVResponse, Q as KVBatchReadResponse, a0 as KVPutOptions, M as KVBatchPutItem, N as KVBatchPutOptions, O as KVBatchPutResponse, _ as KVListOptions, $ as KVListResponse, U as KVChangesOptions, V as KVChangesResponse, X as KVDeleteOptions, Z as KVHeadOptions, W as KVCreateSignedReadUrlOptions, a4 as KVSignedReadUrlResponse, a3 as KVServiceConfig, c as KVReadThrough } from '../scope-D7wmjbMH.cjs';
4
+ export { A as AuthorityRefusal, C as CLEAR_PENDING_WARNING, H as DEFAULT_SIGNED_READ_URL_EXPIRY_MS, I as KVAction, J as KVActionType, S as KVChange, T as KVChangesAuthority, b as KVListPage, d as KVReplicaHandle, e as KVReplicaSpec, f as KVReplicaStorage, a as KVReplicationController, K as KVReplicationDeps, a2 as KVResponseHeaders, L as LocalGetResult, g as LocalListResult, h as LocalReadMeta, i as LocalReplicaStatus, j as LocalSyncResult, k as PendingWriteRecord, l as PendingWriteState, P as PendingWriteStore, m as PinnedKey, n as PurgeTarget, o as ReplicaAuthorityState, p as ReplicaCoverage, q as ReplicaDevice, r as ReplicaGrantInfo, s as ReplicaState, t as ReplicaStatusEntry, u as ReplicationAuthority, v as ReplicationControl, w as ReplicationEvent, R as ReplicationIdentity, x as ReplicationOptions, y as ReplicationPurgeReport, z as ReplicationReason, B as ReplicationScheduler, D as ResolvedReplicationOptions, E as canonicalReplicationIdentity, F as replicationIdentityKey, G as requiresSecretsOptIn } from '../scope-D7wmjbMH.cjs';
5
5
  export { kvPrefixCovers } from './replication/prefix.cjs';
6
6
 
7
7
  /**
@@ -1,7 +1,7 @@
1
- import { B as BaseService } from '../BaseService-Di_hVfUV.js';
2
- import { R as Result, I as IService } from '../types-7A5rHWRY.js';
3
- import { Y as KVGetOptions, a1 as KVResponse, Q as KVBatchReadResponse, a0 as KVPutOptions, M as KVBatchPutItem, N as KVBatchPutOptions, O as KVBatchPutResponse, _ as KVListOptions, $ as KVListResponse, U as KVChangesOptions, V as KVChangesResponse, X as KVDeleteOptions, Z as KVHeadOptions, W as KVCreateSignedReadUrlOptions, a4 as KVSignedReadUrlResponse, a3 as KVServiceConfig, c as KVReadThrough } from '../scope-BKge7zDT.js';
4
- export { A as AuthorityRefusal, C as CLEAR_PENDING_WARNING, H as DEFAULT_SIGNED_READ_URL_EXPIRY_MS, I as KVAction, J as KVActionType, S as KVChange, T as KVChangesAuthority, b as KVListPage, d as KVReplicaHandle, e as KVReplicaSpec, f as KVReplicaStorage, a as KVReplicationController, K as KVReplicationDeps, a2 as KVResponseHeaders, L as LocalGetResult, g as LocalListResult, h as LocalReadMeta, i as LocalReplicaStatus, j as LocalSyncResult, k as PendingWriteRecord, l as PendingWriteState, P as PendingWriteStore, m as PinnedKey, n as PurgeTarget, o as ReplicaAuthorityState, p as ReplicaCoverage, q as ReplicaDevice, r as ReplicaGrantInfo, s as ReplicaState, t as ReplicaStatusEntry, u as ReplicationAuthority, v as ReplicationControl, w as ReplicationEvent, R as ReplicationIdentity, x as ReplicationOptions, y as ReplicationPurgeReport, z as ReplicationReason, B as ReplicationScheduler, D as ResolvedReplicationOptions, E as canonicalReplicationIdentity, F as replicationIdentityKey, G as requiresSecretsOptIn } from '../scope-BKge7zDT.js';
1
+ import { B as BaseService } from '../BaseService-BGr2slUz.js';
2
+ import { R as Result, I as IService } from '../types-D-9A3Sut.js';
3
+ import { Y as KVGetOptions, a1 as KVResponse, Q as KVBatchReadResponse, a0 as KVPutOptions, M as KVBatchPutItem, N as KVBatchPutOptions, O as KVBatchPutResponse, _ as KVListOptions, $ as KVListResponse, U as KVChangesOptions, V as KVChangesResponse, X as KVDeleteOptions, Z as KVHeadOptions, W as KVCreateSignedReadUrlOptions, a4 as KVSignedReadUrlResponse, a3 as KVServiceConfig, c as KVReadThrough } from '../scope-CoKKmMiI.js';
4
+ export { A as AuthorityRefusal, C as CLEAR_PENDING_WARNING, H as DEFAULT_SIGNED_READ_URL_EXPIRY_MS, I as KVAction, J as KVActionType, S as KVChange, T as KVChangesAuthority, b as KVListPage, d as KVReplicaHandle, e as KVReplicaSpec, f as KVReplicaStorage, a as KVReplicationController, K as KVReplicationDeps, a2 as KVResponseHeaders, L as LocalGetResult, g as LocalListResult, h as LocalReadMeta, i as LocalReplicaStatus, j as LocalSyncResult, k as PendingWriteRecord, l as PendingWriteState, P as PendingWriteStore, m as PinnedKey, n as PurgeTarget, o as ReplicaAuthorityState, p as ReplicaCoverage, q as ReplicaDevice, r as ReplicaGrantInfo, s as ReplicaState, t as ReplicaStatusEntry, u as ReplicationAuthority, v as ReplicationControl, w as ReplicationEvent, R as ReplicationIdentity, x as ReplicationOptions, y as ReplicationPurgeReport, z as ReplicationReason, B as ReplicationScheduler, D as ResolvedReplicationOptions, E as canonicalReplicationIdentity, F as replicationIdentityKey, G as requiresSecretsOptIn } from '../scope-CoKKmMiI.js';
5
5
  export { kvPrefixCovers } from './replication/prefix.js';
6
6
 
7
7
  /**
package/dist/kv/index.js CHANGED
@@ -36,6 +36,8 @@ var ErrorCodes = {
36
36
  // Storage quota errors
37
37
  STORAGE_QUOTA_EXCEEDED: "STORAGE_QUOTA_EXCEEDED",
38
38
  STORAGE_LIMIT_REACHED: "STORAGE_LIMIT_REACHED",
39
+ /** The node answered the usage read without usage numbers (it predates the read). */
40
+ STORAGE_STATUS_UNAVAILABLE: "STORAGE_STATUS_UNAVAILABLE",
39
41
  // DuckDB-specific errors
40
42
  DUCKDB_ERROR: "DUCKDB_ERROR",
41
43
  DUCKDB_PERMISSION_DENIED: "DUCKDB_PERMISSION_DENIED",
@@ -65,7 +67,9 @@ var TelemetryEvents = {
65
67
  REPLICATION_WRITE: "replication.write",
66
68
  REPLICATION_SYNC: "replication.sync",
67
69
  REPLICATION_STATE: "replication.state",
68
- REPLICATION_DIVERGENCE: "replication.divergence"
70
+ REPLICATION_DIVERGENCE: "replication.divergence",
71
+ /** Emitted once, on the first write rejected because storage is full. */
72
+ STORAGE_FULL: "storage.full"
69
73
  };
70
74
  function ok(data) {
71
75
  return { ok: true, data };
@@ -341,8 +345,43 @@ function parseStorageQuotaBytes(responseText) {
341
345
  limitBytes: parseInt(match[2], 10)
342
346
  };
343
347
  }
348
+ var STORAGE_REJECTION_BODY_ERRORS = {
349
+ storage_quota_exceeded: true,
350
+ storage_limit_reached: true
351
+ };
352
+ function isByteCount(value) {
353
+ return typeof value === "number" && Number.isSafeInteger(value) && value >= 0;
354
+ }
355
+ function byteCountsOf(value) {
356
+ if (typeof value !== "object" || value === null) return void 0;
357
+ const { usedBytes, limitBytes } = value;
358
+ return isByteCount(usedBytes) && isByteCount(limitBytes) ? { usedBytes, limitBytes } : void 0;
359
+ }
360
+ function parseStorageRejection(responseText) {
361
+ let body;
362
+ try {
363
+ body = JSON.parse(responseText);
364
+ } catch {
365
+ return parseStorageQuotaBytes(responseText);
366
+ }
367
+ if (typeof body !== "object" || body === null) return void 0;
368
+ const record = body;
369
+ const message = typeof record.message === "string" ? record.message : "";
370
+ const space = byteCountsOf(record.space) ?? parseStorageQuotaBytes(message);
371
+ const isStorageBody = typeof record.error === "string" && STORAGE_REJECTION_BODY_ERRORS[record.error] === true;
372
+ if (!space && !isStorageBody) {
373
+ return void 0;
374
+ }
375
+ const details = { ...space };
376
+ const account = byteCountsOf(record.account);
377
+ if (account) {
378
+ const plan = record.account.plan;
379
+ details.account = typeof plan === "string" && plan !== "" ? { ...account, plan } : account;
380
+ }
381
+ return details;
382
+ }
344
383
  function storageRejectionError(service, status, meta, responseText) {
345
- const quotaMeta = { ...meta, ...parseStorageQuotaBytes(responseText) };
384
+ const quotaMeta = { ...meta, ...parseStorageRejection(responseText) };
346
385
  return status === 402 ? storageQuotaExceededError(service, STORAGE_FULL_MESSAGE, quotaMeta) : storageLimitReachedError(service, STORAGE_WRITE_TOO_LARGE_MESSAGE, quotaMeta);
347
386
  }
348
387
  function wrapError(service, error, defaultCode = ErrorCodes.NETWORK_ERROR) {
@@ -865,7 +904,7 @@ var KVService = class extends BaseService {
865
904
  if (response.status !== 402 && response.status !== 413) {
866
905
  return void 0;
867
906
  }
868
- if (response.status === 413 && !parseStorageQuotaBytes(errorText)) {
907
+ if (response.status === 413 && !parseStorageRejection(errorText)) {
869
908
  return void 0;
870
909
  }
871
910
  return err(