@tinycloud/sdk-services 3.11.0 → 3.12.0-beta.16

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 (71) hide show
  1. package/dist/{BaseService-Ma2MwJAd.d.ts → BaseService-BRDG69KR.d.ts} +1 -1
  2. package/dist/{BaseService-O0iyuFLk.d.cts → BaseService-CdBkfPGE.d.cts} +1 -1
  3. package/dist/{IHooksService-4QNODVy6.d.cts → IHooksService-C9p3stsB.d.cts} +1 -1
  4. package/dist/{IHooksService-CvTpJbQD.d.ts → IHooksService-D6eyZat1.d.ts} +1 -1
  5. package/dist/{ISQLService-Aly1CBsW.d.ts → ISQLService-B_4KcGA-.d.ts} +1 -1
  6. package/dist/{ISQLService-BOgWzHLT.d.cts → ISQLService-C6nNpcls.d.cts} +1 -1
  7. package/dist/context.cjs +4 -0
  8. package/dist/context.cjs.map +1 -1
  9. package/dist/context.d.cts +1 -1
  10. package/dist/context.d.ts +1 -1
  11. package/dist/context.js +4 -0
  12. package/dist/context.js.map +1 -1
  13. package/dist/encryption/index.cjs +276 -14
  14. package/dist/encryption/index.cjs.map +1 -1
  15. package/dist/encryption/index.d.cts +26 -28
  16. package/dist/encryption/index.d.ts +26 -28
  17. package/dist/encryption/index.js +268 -14
  18. package/dist/encryption/index.js.map +1 -1
  19. package/dist/encryption/named-keys.cjs +225 -14
  20. package/dist/encryption/named-keys.cjs.map +1 -1
  21. package/dist/encryption/named-keys.d.cts +7 -2
  22. package/dist/encryption/named-keys.d.ts +7 -2
  23. package/dist/encryption/named-keys.js +225 -14
  24. package/dist/encryption/named-keys.js.map +1 -1
  25. package/dist/encryption/resource.cjs.map +1 -1
  26. package/dist/encryption/resource.js.map +1 -1
  27. package/dist/feed/index.cjs +4 -0
  28. package/dist/feed/index.cjs.map +1 -1
  29. package/dist/feed/index.d.cts +3 -3
  30. package/dist/feed/index.d.ts +3 -3
  31. package/dist/feed/index.js +4 -0
  32. package/dist/feed/index.js.map +1 -1
  33. package/dist/index.cjs +523 -29
  34. package/dist/index.cjs.map +1 -1
  35. package/dist/index.d.cts +14 -12
  36. package/dist/index.d.ts +14 -12
  37. package/dist/index.js +513 -29
  38. package/dist/index.js.map +1 -1
  39. package/dist/internal/decrypt-transport-response-error.d.cts +1 -1
  40. package/dist/internal/decrypt-transport-response-error.d.ts +1 -1
  41. package/dist/kv/index.cjs +48 -11
  42. package/dist/kv/index.cjs.map +1 -1
  43. package/dist/kv/index.d.cts +5 -5
  44. package/dist/kv/index.d.ts +5 -5
  45. package/dist/kv/index.js +48 -11
  46. package/dist/kv/index.js.map +1 -1
  47. package/dist/kv/replication/index.cjs +39 -8
  48. package/dist/kv/replication/index.cjs.map +1 -1
  49. package/dist/kv/replication/index.d.cts +3 -3
  50. package/dist/kv/replication/index.d.ts +3 -3
  51. package/dist/kv/replication/index.js +38 -7
  52. package/dist/kv/replication/index.js.map +1 -1
  53. package/dist/{scope-DEgc9f-W.d.cts → scope-DtcbyRKY.d.cts} +1 -1
  54. package/dist/{scope-BZr0QwxX.d.ts → scope-J20PQP3u.d.ts} +1 -1
  55. package/dist/sql/index.cjs +36 -0
  56. package/dist/sql/index.cjs.map +1 -1
  57. package/dist/sql/index.d.cts +4 -4
  58. package/dist/sql/index.d.ts +4 -4
  59. package/dist/sql/index.js +36 -0
  60. package/dist/sql/index.js.map +1 -1
  61. package/dist/telemetry/requestLog.cjs +4 -0
  62. package/dist/telemetry/requestLog.cjs.map +1 -1
  63. package/dist/telemetry/requestLog.d.cts +1 -1
  64. package/dist/telemetry/requestLog.d.ts +1 -1
  65. package/dist/telemetry/requestLog.js +4 -0
  66. package/dist/telemetry/requestLog.js.map +1 -1
  67. package/dist/{types-D4XbIfFJ.d.cts → types-DfqNz9Nu.d.cts} +135 -6
  68. package/dist/{types-CSd0RYir.d.ts → types-DjAP8dve.d.cts} +4 -0
  69. package/dist/{types-CSd0RYir.d.cts → types-DjAP8dve.d.ts} +4 -0
  70. package/dist/{types-Bf91gup6.d.ts → types-Nvi_RckJ.d.ts} +135 -6
  71. package/package.json +4 -1
@@ -95,6 +95,34 @@ function requiresSecretsOptIn(space, prefix) {
95
95
  // src/errors.ts
96
96
  var import_bootstrap = require("@tinycloud/bootstrap");
97
97
 
98
+ // src/resourceRouting.ts
99
+ var ROUTING_FAILURE_CODES = {
100
+ NODE_NOT_RESPONDING: true,
101
+ PARTIAL_NODE_WRITE: true,
102
+ NODE_IDENTITY_MISMATCH: true,
103
+ RESOURCE_NOT_ROUTED: true,
104
+ DECRYPTION_DEPENDENCY_UNAVAILABLE: true,
105
+ registry_unavailable: true,
106
+ node_not_found: true,
107
+ node_registry_entry_exists: true
108
+ };
109
+ function isRoutingFailureCode(code) {
110
+ return Object.prototype.hasOwnProperty.call(ROUTING_FAILURE_CODES, code);
111
+ }
112
+ function routingFailure(error) {
113
+ if (typeof error === "object" && error !== null && "code" in error && "message" in error && typeof error.code === "string" && typeof error.message === "string" && isRoutingFailureCode(error.code)) {
114
+ const candidate = "meta" in error ? error.meta : void 0;
115
+ let meta = typeof candidate === "object" && candidate !== null && !Array.isArray(candidate) ? candidate : void 0;
116
+ if (error.code === "NODE_NOT_RESPONDING" && "hosts" in error && Array.isArray(error.hosts)) {
117
+ meta = { ...meta, hosts: error.hosts };
118
+ } else if (error.code === "PARTIAL_NODE_WRITE" && "succeeded" in error && Array.isArray(error.succeeded) && "failed" in error && Array.isArray(error.failed)) {
119
+ meta = { ...meta, succeeded: error.succeeded, failed: error.failed };
120
+ }
121
+ return { code: error.code, message: error.message, ...error instanceof Error ? { cause: error } : {}, ...meta ? { meta } : {} };
122
+ }
123
+ return void 0;
124
+ }
125
+
98
126
  // src/types.ts
99
127
  var ErrorCodes = {
100
128
  // Common errors
@@ -107,6 +135,10 @@ var ErrorCodes = {
107
135
  /** HTTP 401: a delegation the cited one rests on was revoked. */
108
136
  AUTH_DELEGATION_ANCESTOR_REVOKED: "AUTH_DELEGATION_ANCESTOR_REVOKED",
109
137
  NETWORK_ERROR: "NETWORK_ERROR",
138
+ NODE_NOT_RESPONDING: "NODE_NOT_RESPONDING",
139
+ NODE_IDENTITY_MISMATCH: "NODE_IDENTITY_MISMATCH",
140
+ PARTIAL_NODE_WRITE: "PARTIAL_NODE_WRITE",
141
+ RESOURCE_NOT_ROUTED: "RESOURCE_NOT_ROUTED",
110
142
  TIMEOUT: "TIMEOUT",
111
143
  ABORTED: "ABORTED",
112
144
  INVALID_INPUT: "INVALID_INPUT",
@@ -219,6 +251,8 @@ var capabilityServices = new Set(
219
251
  import_bootstrap.CAPABILITY_REGISTRY.map(({ service }) => service.slice("tinycloud.".length))
220
252
  );
221
253
  function wrapError(service, error, defaultCode = ErrorCodes.NETWORK_ERROR) {
254
+ const routing = routingFailure(error);
255
+ if (routing) return { ...routing, service };
222
256
  if (error instanceof Error) {
223
257
  if (isRequestTimeoutError(error)) {
224
258
  return timeoutError(service, error.timeoutMs, error);
@@ -256,14 +290,11 @@ function classifyWriteOutcome(op, result, options = {}) {
256
290
  if (result.ok) return "committed";
257
291
  const { code, meta } = result.error;
258
292
  if (op === "delete" && code === ErrorCodes.KV_NOT_FOUND) {
259
- return options.conditional === true ? "failed" : "committed";
260
- }
261
- if (meta?.requestMayHaveDispatched === false) return "failed";
262
- if (DEFINITIVE_FAILURES.has(code)) return "failed";
263
- if (meta?.outcome === "batch-unconfirmed") return "ambiguous";
264
- const status = typeof meta?.status === "number" ? meta.status : void 0;
265
- if (status !== void 0 && status >= 400 && status < 500) return "failed";
266
- return "ambiguous";
293
+ return options.conditional ? "failed" : "committed";
294
+ }
295
+ if (meta?.requestMayHaveDispatched === false || DEFINITIVE_FAILURES.has(code) || code === ErrorCodes.NODE_BUSY) return "failed";
296
+ const status = meta?.status;
297
+ return meta?.outcome !== "batch-unconfirmed" && typeof status === "number" && status >= 400 && status < 500 ? "failed" : "ambiguous";
267
298
  }
268
299
 
269
300
  // src/kv/replication/pendingWrites.ts