@superbee/core 0.2.0-pre.14 → 0.2.0-pre.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 (145) hide show
  1. package/README.md +213 -0
  2. package/dist/backend.d.ts +3 -0
  3. package/dist/backend.d.ts.map +1 -1
  4. package/dist/backend.js +7 -0
  5. package/dist/backend.js.map +1 -1
  6. package/dist/blob-contract.d.ts +80 -0
  7. package/dist/blob-contract.d.ts.map +1 -0
  8. package/dist/blob-contract.js +131 -0
  9. package/dist/blob-contract.js.map +1 -0
  10. package/dist/blob-journal.d.ts +117 -0
  11. package/dist/blob-journal.d.ts.map +1 -0
  12. package/dist/blob-journal.js +168 -0
  13. package/dist/blob-journal.js.map +1 -0
  14. package/dist/engine.d.ts +1 -1
  15. package/dist/engine.d.ts.map +1 -1
  16. package/dist/engine.js.map +1 -1
  17. package/dist/file-journaled-backend-internal.d.ts +2 -0
  18. package/dist/file-journaled-backend-internal.d.ts.map +1 -1
  19. package/dist/file-journaled-backend-internal.js +2 -0
  20. package/dist/file-journaled-backend-internal.js.map +1 -1
  21. package/dist/file-journaled-backend.d.ts +14 -2
  22. package/dist/file-journaled-backend.d.ts.map +1 -1
  23. package/dist/file-journaled-backend.js +245 -37
  24. package/dist/file-journaled-backend.js.map +1 -1
  25. package/dist/hosted-client/binding.d.ts +7 -0
  26. package/dist/hosted-client/binding.d.ts.map +1 -0
  27. package/dist/hosted-client/binding.js +10 -0
  28. package/dist/hosted-client/binding.js.map +1 -0
  29. package/dist/hosted-client/blob-delivery.d.ts +61 -0
  30. package/dist/hosted-client/blob-delivery.d.ts.map +1 -0
  31. package/dist/hosted-client/blob-delivery.js +147 -0
  32. package/dist/hosted-client/blob-delivery.js.map +1 -0
  33. package/dist/hosted-client/bundle-listing.d.ts +46 -0
  34. package/dist/hosted-client/bundle-listing.d.ts.map +1 -0
  35. package/dist/hosted-client/bundle-listing.js +36 -0
  36. package/dist/hosted-client/bundle-listing.js.map +1 -0
  37. package/dist/hosted-client/client.d.ts +155 -0
  38. package/dist/hosted-client/client.d.ts.map +1 -0
  39. package/dist/hosted-client/client.js +278 -0
  40. package/dist/hosted-client/client.js.map +1 -0
  41. package/dist/hosted-client/errors.d.ts +16 -0
  42. package/dist/hosted-client/errors.d.ts.map +1 -0
  43. package/dist/hosted-client/errors.js +22 -0
  44. package/dist/hosted-client/errors.js.map +1 -0
  45. package/dist/hosted-client/index.d.ts +23 -0
  46. package/dist/hosted-client/index.d.ts.map +1 -0
  47. package/dist/hosted-client/index.js +25 -0
  48. package/dist/hosted-client/index.js.map +1 -0
  49. package/dist/hosted-client/node.d.ts +70 -0
  50. package/dist/hosted-client/node.d.ts.map +1 -0
  51. package/dist/hosted-client/node.js +214 -0
  52. package/dist/hosted-client/node.js.map +1 -0
  53. package/dist/hosted-client/reference.d.ts +12 -0
  54. package/dist/hosted-client/reference.d.ts.map +1 -0
  55. package/dist/hosted-client/reference.js +29 -0
  56. package/dist/hosted-client/reference.js.map +1 -0
  57. package/dist/hosted-client/write.d.ts +191 -0
  58. package/dist/hosted-client/write.d.ts.map +1 -0
  59. package/dist/hosted-client/write.js +396 -0
  60. package/dist/hosted-client/write.js.map +1 -0
  61. package/dist/hosted-transport/answer-rows.d.ts +26 -0
  62. package/dist/hosted-transport/answer-rows.d.ts.map +1 -1
  63. package/dist/hosted-transport/answer-rows.js +59 -1
  64. package/dist/hosted-transport/answer-rows.js.map +1 -1
  65. package/dist/hosted-transport/blob-reads.d.ts +35 -0
  66. package/dist/hosted-transport/blob-reads.d.ts.map +1 -0
  67. package/dist/hosted-transport/blob-reads.js +179 -0
  68. package/dist/hosted-transport/blob-reads.js.map +1 -0
  69. package/dist/hosted-transport/blob-write.d.ts +34 -0
  70. package/dist/hosted-transport/blob-write.d.ts.map +1 -0
  71. package/dist/hosted-transport/blob-write.js +115 -0
  72. package/dist/hosted-transport/blob-write.js.map +1 -0
  73. package/dist/hosted-transport/carrier.d.ts +8 -9
  74. package/dist/hosted-transport/carrier.d.ts.map +1 -1
  75. package/dist/hosted-transport/carrier.js +40 -41
  76. package/dist/hosted-transport/carrier.js.map +1 -1
  77. package/dist/hosted-transport/index.d.ts +4 -4
  78. package/dist/hosted-transport/index.d.ts.map +1 -1
  79. package/dist/hosted-transport/index.js +4 -4
  80. package/dist/hosted-transport/index.js.map +1 -1
  81. package/dist/hosted-transport/read-adapter.d.ts +6 -0
  82. package/dist/hosted-transport/read-adapter.d.ts.map +1 -1
  83. package/dist/hosted-transport/read-adapter.js +11 -0
  84. package/dist/hosted-transport/read-adapter.js.map +1 -1
  85. package/dist/hosted-transport/whole-document-transport.d.ts +9 -8
  86. package/dist/hosted-transport/whole-document-transport.d.ts.map +1 -1
  87. package/dist/hosted-transport/whole-document-transport.js +10 -9
  88. package/dist/hosted-transport/whole-document-transport.js.map +1 -1
  89. package/dist/index.d.ts +3 -1
  90. package/dist/index.d.ts.map +1 -1
  91. package/dist/index.js +4 -1
  92. package/dist/index.js.map +1 -1
  93. package/dist/journaled-backend.d.ts +10 -2
  94. package/dist/journaled-backend.d.ts.map +1 -1
  95. package/dist/journaled-backend.js +3 -3
  96. package/dist/journaled-backend.js.map +1 -1
  97. package/dist/link-types.d.ts +26 -0
  98. package/dist/link-types.d.ts.map +1 -0
  99. package/dist/link-types.js +57 -0
  100. package/dist/link-types.js.map +1 -0
  101. package/dist/platform.d.ts +4 -0
  102. package/dist/platform.d.ts.map +1 -1
  103. package/dist/platform.js +16 -0
  104. package/dist/platform.js.map +1 -1
  105. package/dist/recipe-lifecycle/errors.d.ts +77 -0
  106. package/dist/recipe-lifecycle/errors.d.ts.map +1 -0
  107. package/dist/recipe-lifecycle/errors.js +96 -0
  108. package/dist/recipe-lifecycle/errors.js.map +1 -0
  109. package/dist/recipe-lifecycle/evolution.d.ts +71 -0
  110. package/dist/recipe-lifecycle/evolution.d.ts.map +1 -0
  111. package/dist/recipe-lifecycle/evolution.js +659 -0
  112. package/dist/recipe-lifecycle/evolution.js.map +1 -0
  113. package/dist/recipe-lifecycle/index.d.ts +23 -0
  114. package/dist/recipe-lifecycle/index.d.ts.map +1 -0
  115. package/dist/recipe-lifecycle/index.js +19 -0
  116. package/dist/recipe-lifecycle/index.js.map +1 -0
  117. package/dist/recipe-lifecycle/install.d.ts +111 -0
  118. package/dist/recipe-lifecycle/install.d.ts.map +1 -0
  119. package/dist/recipe-lifecycle/install.js +412 -0
  120. package/dist/recipe-lifecycle/install.js.map +1 -0
  121. package/dist/recipe-lifecycle/legacy-aliases.d.ts +16 -0
  122. package/dist/recipe-lifecycle/legacy-aliases.d.ts.map +1 -0
  123. package/dist/recipe-lifecycle/legacy-aliases.js +51 -0
  124. package/dist/recipe-lifecycle/legacy-aliases.js.map +1 -0
  125. package/dist/recipe-lifecycle/stamp.d.ts +98 -0
  126. package/dist/recipe-lifecycle/stamp.d.ts.map +1 -0
  127. package/dist/recipe-lifecycle/stamp.js +260 -0
  128. package/dist/recipe-lifecycle/stamp.js.map +1 -0
  129. package/dist/recipes.d.ts +5 -0
  130. package/dist/recipes.d.ts.map +1 -1
  131. package/dist/recipes.js +5 -0
  132. package/dist/recipes.js.map +1 -1
  133. package/dist/storage.d.ts +3 -0
  134. package/dist/storage.d.ts.map +1 -1
  135. package/dist/storage.js +3 -0
  136. package/dist/storage.js.map +1 -1
  137. package/dist/uncertain-write.d.ts +70 -2
  138. package/dist/uncertain-write.d.ts.map +1 -1
  139. package/dist/uncertain-write.js +45 -32
  140. package/dist/uncertain-write.js.map +1 -1
  141. package/dist/write-identity.d.ts +5 -0
  142. package/dist/write-identity.d.ts.map +1 -0
  143. package/dist/write-identity.js +9 -0
  144. package/dist/write-identity.js.map +1 -0
  145. package/package.json +13 -1
@@ -41,6 +41,8 @@ export function stateForOutcome(outcome) {
41
41
  return "conflict";
42
42
  case "refused":
43
43
  return "refused";
44
+ case "not-executed":
45
+ return "pending";
44
46
  case "unknown":
45
47
  return "unknown";
46
48
  }
@@ -120,64 +122,73 @@ async function submitOnce(transport, intent, deadlineMs, sleep) {
120
122
  controller.abort();
121
123
  return UNKNOWN;
122
124
  }
123
- /**
124
- * Deliver `intent` and settle it against the authority's recorded outcome.
125
- *
126
- * Flow: when the intent has never been submitted, submit it; when it has (`attempts > 0`), or
127
- * when a submission's outcome is unknown, look the request identity up. A positive lookup
128
- * settles the intent. A `null` lookup is taken as proof that the authority never recorded the
129
- * request, so a resubmission with the same `requestId` is the first delivery and is allowed, up
130
- * to `maxSubmissions`. A lookup that fails leaves the outcome unknown and the intent for a later
131
- * call.
132
- *
133
- * No resubmission happens without a `null` lookup because a blind retry after an unknown
134
- * outcome is unsound: on an authority without request identity the retry applies the write
135
- * twice, and even on one with it the retry can only ever learn what the lookup already knew.
136
- * The lookup is what turns "unknown" into a fact before any second delivery.
137
- *
138
- * That fact is only as good as the transport's `null`. An authority that has expired or lost a
139
- * record answers as if it never recorded it, and the reference wire transport returns `null`
140
- * then. The resubmission is guarded only by its `base`, and versions are content hashes: if the
141
- * write had landed and a third party has since restored `base` exactly, the premise matches, the
142
- * write is applied a second time over that revert, and the outcome is `committed`. The hosted
143
- * transport never answers `null` for an absent record once the intent is older than the host's
144
- * stated retention window, less a skew margin, so it does not resubmit there.
145
- *
146
- * By default every outcome passes through {@link settleAgainstIntent}, so a conflict naming the
147
- * intent's own version is committed. `recorded-only` preserves the recorded outcome instead.
148
- */
149
125
  export async function performUncertainWrite(transport, intent, options = {}) {
126
+ const explicitStart = "start" in options;
127
+ if (explicitStart) {
128
+ if (options.settlement !== "recorded-only" || (options.start !== "submit-claimed" && options.start !== "lookup") ||
129
+ !Number.isSafeInteger(intent.attempts) || intent.attempts < 0 ||
130
+ !["pending", "in_flight", "acknowledged", "conflict", "refused", "unknown"].includes(intent.state) ||
131
+ (options.start === "submit-claimed" && (intent.state !== "in_flight" || intent.attempts < 1)))
132
+ throw new Error("Invalid recorded-only delivery start or durable claim.");
133
+ if (intent.notAppliedThrough !== undefined && (!Number.isSafeInteger(intent.notAppliedThrough) || intent.notAppliedThrough < 0 || intent.notAppliedThrough > intent.attempts || options.start === "submit-claimed" && intent.notAppliedThrough !== intent.attempts - 1))
134
+ throw new Error("Invalid recorded-only non-execution prefix or durable claim.");
135
+ // Capture the descriptor before the first asynchronous boundary. Additional prepared data
136
+ // belongs to the typed caller; the primitive neither fabricates nor interprets its fields.
137
+ intent = { ...intent };
138
+ options = { ...options };
139
+ }
150
140
  if (options.settlement !== undefined && options.settlement !== "exact-content" && options.settlement !== "recorded-only") {
151
141
  throw new Error("Unknown uncertain-write settlement mode.");
152
142
  }
153
143
  const sleep = options.sleep ?? defaultSleep;
154
144
  const maxLookups = Math.max(1, options.maxLookups ?? 3);
155
- const maxSubmissions = Math.max(1, options.maxSubmissions ?? 2);
145
+ const maxSubmissions = explicitStart ? 1 : Math.max(1, options.maxSubmissions ?? 2);
156
146
  const lookupDelayMs = options.lookupDelayMs ?? 250;
147
+ const { signal } = options;
148
+ // Whether a submission of this identity may still be held by the authority unanswered.
149
+ let unclear = options.earlierDeliveryUnclear === true && intent.attempts > 0;
157
150
  let attempts = intent.attempts;
158
151
  let submissions = 0;
159
152
  let lookups = 0;
160
153
  const finish = (raw) => {
154
+ // Only the compatibility overload admits exact-content settlement and it requires the
155
+ // original full OperationIntent/Outcome contract. Explicit starts never use those fields.
161
156
  const outcome = options.settlement === "recorded-only" ? raw : settleAgainstIntent(raw, intent);
162
157
  return { intent: { ...intent, attempts, state: stateForOutcome(outcome) }, outcome, lookups };
163
158
  };
164
159
  // A previously submitted intent starts at the lookup, never at a submission.
165
- let needSubmission = attempts === 0;
160
+ let needSubmission = explicitStart ? options.start === "submit-claimed" : attempts === 0;
166
161
  for (;;) {
167
162
  if (needSubmission) {
168
- if (submissions >= maxSubmissions)
163
+ if (submissions >= maxSubmissions || ((explicitStart || submissions > 0) && signal?.aborted))
169
164
  return finish(UNKNOWN);
170
165
  submissions += 1;
171
- attempts += 1;
166
+ if (!explicitStart)
167
+ attempts += 1;
172
168
  const outcome = await submitOnce(transport, { ...intent, attempts, state: "in_flight" }, options.deadlineMs, sleep);
169
+ if (outcome.kind === "not-executed") {
170
+ if (!explicitStart || intent.notAppliedThrough === undefined || intent.notAppliedThrough !== attempts - 1 || outcome.attempts !== attempts || signal?.aborted)
171
+ return finish(UNKNOWN);
172
+ return finish(outcome);
173
+ }
174
+ // A resend refused before it reached execution (no credential, access withdrawn, a spent
175
+ // quota) is evidence about that resend only: an earlier, unclear delivery may still be held
176
+ // by the authority and commit, so the identity stays unknown and the intent is kept.
177
+ if (unclear && isAuthorizationRefusal(outcome))
178
+ return finish(UNKNOWN);
173
179
  if (outcome.kind !== "unknown")
174
180
  return finish(outcome);
181
+ unclear = true;
175
182
  }
176
183
  needSubmission = false;
177
184
  let recorded;
178
185
  for (let round = 0; round < maxLookups; round++) {
186
+ if (signal?.aborted)
187
+ break;
179
188
  if (round > 0)
180
- await sleep(lookupDelayMs);
189
+ await sleep(lookupDelayMs, signal);
190
+ if (signal?.aborted)
191
+ break;
181
192
  lookups += 1;
182
193
  try {
183
194
  recorded = await transport.lookup(intent.requestId);
@@ -191,7 +202,9 @@ export async function performUncertainWrite(transport, intent, options = {}) {
191
202
  if (recorded === undefined)
192
203
  return finish(UNKNOWN);
193
204
  if (recorded !== null)
194
- return finish(recorded);
205
+ return finish(recorded.kind === "not-executed" ? UNKNOWN : recorded);
206
+ if (explicitStart)
207
+ return finish(UNKNOWN);
195
208
  needSubmission = true;
196
209
  }
197
210
  }
@@ -1 +1 @@
1
- {"version":3,"file":"uncertain-write.js","sourceRoot":"","sources":["../src/uncertain-write.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"uncertain-write.js","sourceRoot":"","sources":["../src/uncertain-write.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAgJH;;;;GAIG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAwB,IAAI,GAAG,CAAC;IACtE,eAAe;IACf,WAAW;IACX,cAAc;IACd,mBAAmB;IACnB,4BAA4B;IAC5B,yBAAyB;CAC1B,CAAC,CAAC;AAEH,2FAA2F;AAC3F,MAAM,UAAU,sBAAsB,CAAC,OAAuC;IAC5E,OAAO,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,2BAA2B,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACrF,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,eAAe,CAAC,OAAuC;IACrE,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,WAAW;YACd,OAAO,cAAc,CAAC;QACxB,KAAK,UAAU;YACb,OAAO,UAAU,CAAC;QACpB,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;QACnB,KAAK,cAAc;YACjB,OAAO,SAAS,CAAC;QACnB,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,0EAA0E;AAC1E,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAEzC;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAClD,OAAO,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,qBAAqB,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9F,CAAC;AAED,mGAAmG;AACnG,MAAM,UAAU,aAAa;IAC3B,MAAM,SAAS,GAAI,UAAyD,CAAC,MAAM,CAAC;IACpF,IAAI,SAAS,IAAI,OAAO,SAAS,CAAC,UAAU,KAAK,UAAU;QAAE,OAAO,SAAS,CAAC,UAAU,EAAE,CAAC;IAC3F,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,YAAY,GAAU,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CACzC,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;IAC5B,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;QACpB,OAAO,EAAE,CAAC;QACV,OAAO;IACT,CAAC;IACD,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;QAC5B,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC9C,OAAO,EAAE,CAAC;IACZ,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,SAAS,OAAO;QACd,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AAC7D,CAAC,CAAC,CAAC;AAEL,MAAM,OAAO,GAAY,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AAE7C;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAgB,EAAE,MAAuB;IAC3E,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC;QAC9F,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;IACxD,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,UAAU,CAAgE,SAAuC,EAAE,MAAS,EAAE,UAA8B,EAAE,KAAY;IACvL,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAC1E,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAa,EAAE,OAAO,EAAE,CAAC,EAClD,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAa,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CACrD,CAAC;IACF,IAAI,UAAU,KAAK,SAAS;QAAE,OAAO,CAAC,MAAM,OAAO,CAAC,CAAC,OAAO,CAAC;IAC7D,MAAM,YAAY,GAAG,IAAI,eAAe,EAAE,CAAC;IAC3C,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAc,EAAE,CAAC,CAAC,CAAC;IAClG,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;IACtD,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,YAAY,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC,OAAO,CAAC;IACvB,CAAC;IACD,UAAU,CAAC,KAAK,EAAE,CAAC;IACnB,OAAO,OAAO,CAAC;AACjB,CAAC;AAyCD,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,SAA4E,EAAE,MAA2B,EACzG,UAA2E,EAAE;IAE7E,MAAM,aAAa,GAAG,OAAO,IAAI,OAAO,CAAC;IACzC,IAAI,aAAa,EAAE,CAAC;QAClB,IAAI,OAAO,CAAC,UAAU,KAAK,eAAe,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,gBAAgB,IAAI,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC;YAC5G,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,QAAQ,GAAG,CAAC;YAC7D,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;YAClG,CAAC,OAAO,CAAC,KAAK,KAAK,gBAAgB,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,WAAW,IAAI,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;QAC7K,IAAI,MAAM,CAAC,iBAAiB,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,MAAM,CAAC,iBAAiB,GAAG,CAAC,IAAI,MAAM,CAAC,iBAAiB,GAAG,MAAM,CAAC,QAAQ,IAAI,OAAO,CAAC,KAAK,KAAK,gBAAgB,IAAI,MAAM,CAAC,iBAAiB,KAAK,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;QACzV,0FAA0F;QAC1F,2FAA2F;QAC3F,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;QACvB,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;IAC3B,CAAC;IACD,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,IAAI,OAAO,CAAC,UAAU,KAAK,eAAe,IAAI,OAAO,CAAC,UAAU,KAAK,eAAe,EAAE,CAAC;QACzH,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,YAAY,CAAC;IAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC;IACxD,MAAM,cAAc,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,cAAc,IAAI,CAAC,CAAC,CAAC;IACpF,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,GAAG,CAAC;IACnD,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAC3B,uFAAuF;IACvF,IAAI,OAAO,GAAG,OAAO,CAAC,sBAAsB,KAAK,IAAI,IAAI,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;IAE7E,IAAI,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IAC/B,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,MAAM,MAAM,GAAG,CAAC,GAAyB,EAAkE,EAAE;QAC3G,sFAAsF;QACtF,0FAA0F;QAC1F,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,KAAK,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,mBAAmB,CAAC,GAAc,EAAE,MAAyB,CAAC,CAAC;QAC9H,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IAChG,CAAC,CAAC;IAEF,6EAA6E;IAC7E,IAAI,cAAc,GAAG,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,KAAK,gBAAgB,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC;IACzF,SAAS,CAAC;QACR,IAAI,cAAc,EAAE,CAAC;YACnB,IAAI,WAAW,IAAI,cAAc,IAAI,CAAC,CAAC,aAAa,IAAI,WAAW,GAAG,CAAC,CAAC,IAAI,MAAM,EAAE,OAAO,CAAC;gBAAE,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC;YACrH,WAAW,IAAI,CAAC,CAAC;YACjB,IAAI,CAAC,aAAa;gBAAE,QAAQ,IAAI,CAAC,CAAC;YAClC,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,SAAS,EAAE,EAAE,GAAG,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;YACpH,IAAI,OAAO,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;gBACpC,IAAI,CAAC,aAAa,IAAI,MAAM,CAAC,iBAAiB,KAAK,SAAS,IAAI,MAAM,CAAC,iBAAiB,KAAK,QAAQ,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,IAAI,MAAM,EAAE,OAAO;oBAAE,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC;gBACtL,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC;YACzB,CAAC;YACD,yFAAyF;YACzF,4FAA4F;YAC5F,qFAAqF;YACrF,IAAI,OAAO,IAAI,sBAAsB,CAAC,OAAO,CAAC;gBAAE,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC;YACvE,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;gBAAE,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC;YACvD,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;QACD,cAAc,GAAG,KAAK,CAAC;QACvB,IAAI,QAAiD,CAAC;QACtD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,UAAU,EAAE,KAAK,EAAE,EAAE,CAAC;YAChD,IAAI,MAAM,EAAE,OAAO;gBAAE,MAAM;YAC3B,IAAI,KAAK,GAAG,CAAC;gBAAE,MAAM,KAAK,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;YAClD,IAAI,MAAM,EAAE,OAAO;gBAAE,MAAM;YAC3B,OAAO,IAAI,CAAC,CAAC;YACb,IAAI,CAAC;gBACH,QAAQ,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACtD,CAAC;YAAC,MAAM,CAAC;gBACP,QAAQ,GAAG,SAAS,CAAC;gBACrB,SAAS;YACX,CAAC;YACD,MAAM;QACR,CAAC;QACD,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC;QACnD,IAAI,QAAQ,KAAK,IAAI;YAAE,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC5F,IAAI,aAAa;YAAE,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC;QAC1C,cAAc,GAAG,IAAI,CAAC;IACxB,CAAC;AACH,CAAC"}
@@ -0,0 +1,5 @@
1
+ /** Lexical write identity rules, independent of transport and payload families. */
2
+ export declare function isWriteRequestId(value: string): boolean;
3
+ export declare function isWriteBinding(value: string): boolean;
4
+ export declare function isAgentLabelVia(value: unknown): value is string;
5
+ //# sourceMappingURL=write-identity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write-identity.d.ts","sourceRoot":"","sources":["../src/write-identity.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEvD;AACD,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAgD;AACtG,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAE/D"}
@@ -0,0 +1,9 @@
1
+ /** Lexical write identity rules, independent of transport and payload families. */
2
+ export function isWriteRequestId(value) {
3
+ return /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/.test(value);
4
+ }
5
+ export function isWriteBinding(value) { return /^sha256:[a-f0-9]{64}$/.test(value); }
6
+ export function isAgentLabelVia(value) {
7
+ return typeof value === "string" && /^[a-z0-9._-]{1,32}$/.test(value) && !value.startsWith("superbee");
8
+ }
9
+ //# sourceMappingURL=write-identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write-identity.js","sourceRoot":"","sources":["../src/write-identity.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,OAAO,uEAAuE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7F,CAAC;AACD,MAAM,UAAU,cAAc,CAAC,KAAa,IAAa,OAAO,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACtG,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AACzG,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@superbee/core",
3
- "version": "0.2.0-pre.14",
3
+ "version": "0.2.0-pre.16",
4
4
  "type": "module",
5
5
  "description": "OKF store engine \u2014 bundle I/O, cross-links, derived backlinks, freshness, and versioned writes.",
6
6
  "license": "Apache-2.0",
@@ -47,6 +47,10 @@
47
47
  "types": "./dist/recipes.d.ts",
48
48
  "default": "./dist/recipes.js"
49
49
  },
50
+ "./recipe-lifecycle": {
51
+ "types": "./dist/recipe-lifecycle/index.d.ts",
52
+ "default": "./dist/recipe-lifecycle/index.js"
53
+ },
50
54
  "./kinds": {
51
55
  "types": "./dist/kinds.d.ts",
52
56
  "default": "./dist/kinds.js"
@@ -111,6 +115,14 @@
111
115
  "types": "./dist/hosted-transport/index.d.ts",
112
116
  "default": "./dist/hosted-transport/index.js"
113
117
  },
118
+ "./hosted-client": {
119
+ "types": "./dist/hosted-client/index.d.ts",
120
+ "default": "./dist/hosted-client/index.js"
121
+ },
122
+ "./hosted-client/node": {
123
+ "types": "./dist/hosted-client/node.d.ts",
124
+ "default": "./dist/hosted-client/node.js"
125
+ },
114
126
  "./storage": {
115
127
  "types": "./dist/storage.d.ts",
116
128
  "default": "./dist/storage.js"