@tier0/sdk-v2 0.9.10 → 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.
Files changed (238) hide show
  1. package/CHANGELOG.md +102 -0
  2. package/LICENSE +21 -21
  3. package/README.md +162 -24
  4. package/dist/cjs/client.d.ts +83 -3
  5. package/dist/cjs/client.js +4 -6
  6. package/dist/cjs/client.js.map +1 -1
  7. package/dist/cjs/cloud-server.d.ts +33 -26
  8. package/dist/cjs/cloud-server.js +102 -100
  9. package/dist/cjs/cloud-server.js.map +1 -1
  10. package/dist/cjs/cloud-transport.d.ts +15 -20
  11. package/dist/cjs/cloud-transport.js +87 -68
  12. package/dist/cjs/cloud-transport.js.map +1 -1
  13. package/dist/cjs/data/bootstrap.js +3 -4
  14. package/dist/cjs/data/bootstrap.js.map +1 -1
  15. package/dist/cjs/data/call.d.ts +1 -3
  16. package/dist/cjs/data/call.js +8 -12
  17. package/dist/cjs/data/call.js.map +1 -1
  18. package/dist/cjs/data/client.d.ts +8 -7
  19. package/dist/cjs/data/client.js +24 -11
  20. package/dist/cjs/data/client.js.map +1 -1
  21. package/dist/cjs/data/collection.d.ts +3 -5
  22. package/dist/cjs/data/collection.js +3 -4
  23. package/dist/cjs/data/collection.js.map +1 -1
  24. package/dist/cjs/data/context.d.ts +5 -11
  25. package/dist/cjs/data/context.js +21 -36
  26. package/dist/cjs/data/context.js.map +1 -1
  27. package/dist/cjs/data/error.js +1 -1
  28. package/dist/cjs/data/error.js.map +1 -1
  29. package/dist/cjs/data/index.d.ts +5 -3
  30. package/dist/cjs/data/index.js +5 -5
  31. package/dist/cjs/data/index.js.map +1 -1
  32. package/dist/cjs/data/relay.d.ts +51 -0
  33. package/dist/cjs/data/relay.js +371 -0
  34. package/dist/cjs/data/relay.js.map +1 -0
  35. package/dist/cjs/data/subscribe.d.ts +22 -38
  36. package/dist/cjs/data/subscribe.js +22 -28
  37. package/dist/cjs/data/subscribe.js.map +1 -1
  38. package/dist/cjs/event-stream.d.ts +28 -0
  39. package/dist/cjs/event-stream.js +222 -0
  40. package/dist/cjs/event-stream.js.map +1 -0
  41. package/dist/cjs/mq/client.d.ts +32 -1
  42. package/dist/cjs/mq/client.js +404 -69
  43. package/dist/cjs/mq/client.js.map +1 -1
  44. package/dist/cjs/mq/index.d.ts +1 -0
  45. package/dist/cjs/mq/index.js +3 -1
  46. package/dist/cjs/mq/index.js.map +1 -1
  47. package/dist/cjs/mq/topic.d.ts +29 -0
  48. package/dist/cjs/mq/topic.js +48 -0
  49. package/dist/cjs/mq/topic.js.map +1 -0
  50. package/dist/cjs/mq/types.d.ts +21 -1
  51. package/dist/cjs/mq/types.js.map +1 -1
  52. package/dist/cjs/openapi/api.generated.d.ts +21 -0
  53. package/dist/cjs/openapi/api.generated.js +11 -0
  54. package/dist/cjs/openapi/api.generated.js.map +1 -1
  55. package/dist/cjs/openapi/client.d.ts +46 -0
  56. package/dist/cjs/openapi/client.js +158 -10
  57. package/dist/cjs/openapi/client.js.map +1 -1
  58. package/dist/cjs/openapi/codecs.generated.d.ts +75 -0
  59. package/dist/cjs/openapi/codecs.generated.js +1 -1
  60. package/dist/cjs/openapi/codecs.generated.js.map +1 -1
  61. package/dist/cjs/openapi/types.generated.d.ts +206 -1
  62. package/dist/cjs/openapi/types.generated.js.map +1 -1
  63. package/dist/cjs/page-runtime.d.ts +48 -0
  64. package/dist/cjs/page-runtime.js +74 -0
  65. package/dist/cjs/page-runtime.js.map +1 -0
  66. package/dist/cjs/platform-proxy.d.ts +17 -0
  67. package/dist/cjs/platform-proxy.js +52 -0
  68. package/dist/cjs/platform-proxy.js.map +1 -0
  69. package/dist/cjs/runtime-context.d.ts +2 -1
  70. package/dist/cjs/runtime-context.js +6 -2
  71. package/dist/cjs/runtime-context.js.map +1 -1
  72. package/dist/cjs/runtime-env.js.map +1 -1
  73. package/dist/cjs/source.d.ts +19 -1
  74. package/dist/cjs/source.js +9 -3
  75. package/dist/cjs/source.js.map +1 -1
  76. package/dist/cjs/stream.js +3 -2
  77. package/dist/cjs/stream.js.map +1 -1
  78. package/dist/cjs/streams/contract.generated.d.ts +7 -1
  79. package/dist/cjs/streams/contract.generated.js.map +1 -1
  80. package/dist/cjs/streams/messages.js +1 -10
  81. package/dist/cjs/streams/messages.js.map +1 -1
  82. package/dist/cjs/streams/requests.d.ts +3 -0
  83. package/dist/cjs/streams/requests.js +5 -2
  84. package/dist/cjs/streams/requests.js.map +1 -1
  85. package/dist/cjs/streams/transport.d.ts +1 -13
  86. package/dist/cjs/streams/transport.js +2 -18
  87. package/dist/cjs/streams/transport.js.map +1 -1
  88. package/dist/cjs/uns-v2/client.d.ts +1 -6
  89. package/dist/cjs/uns-v2/client.js +30 -6
  90. package/dist/cjs/uns-v2/client.js.map +1 -1
  91. package/dist/cjs/uns-v2/data-client.d.ts +5 -2
  92. package/dist/cjs/uns-v2/data-client.js +7 -4
  93. package/dist/cjs/uns-v2/data-client.js.map +1 -1
  94. package/dist/cjs/uns-v2/generated.d.ts +6783 -4655
  95. package/dist/cjs/uns-v2/generated.js +221 -65
  96. package/dist/cjs/uns-v2/generated.js.map +1 -1
  97. package/dist/cjs/uns-v2/sse.d.ts +7 -1
  98. package/dist/cjs/uns-v2/sse.js +12 -2
  99. package/dist/cjs/uns-v2/sse.js.map +1 -1
  100. package/dist/esm/client.d.ts +83 -3
  101. package/dist/esm/client.js +5 -7
  102. package/dist/esm/client.js.map +1 -1
  103. package/dist/esm/cloud-server.d.ts +33 -26
  104. package/dist/esm/cloud-server.js +99 -97
  105. package/dist/esm/cloud-server.js.map +1 -1
  106. package/dist/esm/cloud-transport.d.ts +15 -20
  107. package/dist/esm/cloud-transport.js +86 -67
  108. package/dist/esm/cloud-transport.js.map +1 -1
  109. package/dist/esm/data/bootstrap.js +3 -4
  110. package/dist/esm/data/bootstrap.js.map +1 -1
  111. package/dist/esm/data/call.d.ts +1 -3
  112. package/dist/esm/data/call.js +9 -13
  113. package/dist/esm/data/call.js.map +1 -1
  114. package/dist/esm/data/client.d.ts +8 -7
  115. package/dist/esm/data/client.js +22 -9
  116. package/dist/esm/data/client.js.map +1 -1
  117. package/dist/esm/data/collection.d.ts +3 -5
  118. package/dist/esm/data/collection.js +3 -4
  119. package/dist/esm/data/collection.js.map +1 -1
  120. package/dist/esm/data/context.d.ts +5 -11
  121. package/dist/esm/data/context.js +19 -33
  122. package/dist/esm/data/context.js.map +1 -1
  123. package/dist/esm/data/error.js +1 -1
  124. package/dist/esm/data/error.js.map +1 -1
  125. package/dist/esm/data/index.d.ts +5 -3
  126. package/dist/esm/data/index.js +3 -2
  127. package/dist/esm/data/index.js.map +1 -1
  128. package/dist/esm/data/relay.d.ts +51 -0
  129. package/dist/esm/data/relay.js +368 -0
  130. package/dist/esm/data/relay.js.map +1 -0
  131. package/dist/esm/data/subscribe.d.ts +22 -38
  132. package/dist/esm/data/subscribe.js +22 -27
  133. package/dist/esm/data/subscribe.js.map +1 -1
  134. package/dist/esm/event-stream.d.ts +28 -0
  135. package/dist/esm/event-stream.js +217 -0
  136. package/dist/esm/event-stream.js.map +1 -0
  137. package/dist/esm/mq/client.d.ts +32 -1
  138. package/dist/esm/mq/client.js +404 -69
  139. package/dist/esm/mq/client.js.map +1 -1
  140. package/dist/esm/mq/index.d.ts +1 -0
  141. package/dist/esm/mq/index.js +1 -0
  142. package/dist/esm/mq/index.js.map +1 -1
  143. package/dist/esm/mq/topic.d.ts +29 -0
  144. package/dist/esm/mq/topic.js +44 -0
  145. package/dist/esm/mq/topic.js.map +1 -0
  146. package/dist/esm/mq/types.d.ts +21 -1
  147. package/dist/esm/mq/types.js.map +1 -1
  148. package/dist/esm/openapi/api.generated.d.ts +21 -0
  149. package/dist/esm/openapi/api.generated.js +11 -0
  150. package/dist/esm/openapi/api.generated.js.map +1 -1
  151. package/dist/esm/openapi/client.d.ts +46 -0
  152. package/dist/esm/openapi/client.js +157 -10
  153. package/dist/esm/openapi/client.js.map +1 -1
  154. package/dist/esm/openapi/codecs.generated.d.ts +75 -0
  155. package/dist/esm/openapi/codecs.generated.js +1 -1
  156. package/dist/esm/openapi/codecs.generated.js.map +1 -1
  157. package/dist/esm/openapi/types.generated.d.ts +206 -1
  158. package/dist/esm/openapi/types.generated.js.map +1 -1
  159. package/dist/esm/page-runtime.d.ts +48 -0
  160. package/dist/esm/page-runtime.js +65 -0
  161. package/dist/esm/page-runtime.js.map +1 -0
  162. package/dist/esm/platform-proxy.d.ts +17 -0
  163. package/dist/esm/platform-proxy.js +47 -0
  164. package/dist/esm/platform-proxy.js.map +1 -0
  165. package/dist/esm/runtime-context.d.ts +2 -1
  166. package/dist/esm/runtime-context.js +6 -2
  167. package/dist/esm/runtime-context.js.map +1 -1
  168. package/dist/esm/runtime-env.js.map +1 -1
  169. package/dist/esm/source.d.ts +19 -1
  170. package/dist/esm/source.js +10 -4
  171. package/dist/esm/source.js.map +1 -1
  172. package/dist/esm/stream.js +4 -3
  173. package/dist/esm/stream.js.map +1 -1
  174. package/dist/esm/streams/contract.generated.d.ts +7 -1
  175. package/dist/esm/streams/contract.generated.js.map +1 -1
  176. package/dist/esm/streams/messages.js +1 -10
  177. package/dist/esm/streams/messages.js.map +1 -1
  178. package/dist/esm/streams/requests.d.ts +3 -0
  179. package/dist/esm/streams/requests.js +5 -2
  180. package/dist/esm/streams/requests.js.map +1 -1
  181. package/dist/esm/streams/transport.d.ts +1 -13
  182. package/dist/esm/streams/transport.js +1 -17
  183. package/dist/esm/streams/transport.js.map +1 -1
  184. package/dist/esm/uns-v2/client.d.ts +1 -6
  185. package/dist/esm/uns-v2/client.js +30 -6
  186. package/dist/esm/uns-v2/client.js.map +1 -1
  187. package/dist/esm/uns-v2/data-client.d.ts +5 -2
  188. package/dist/esm/uns-v2/data-client.js +8 -5
  189. package/dist/esm/uns-v2/data-client.js.map +1 -1
  190. package/dist/esm/uns-v2/generated.d.ts +6783 -4655
  191. package/dist/esm/uns-v2/generated.js +221 -65
  192. package/dist/esm/uns-v2/generated.js.map +1 -1
  193. package/dist/esm/uns-v2/sse.d.ts +7 -1
  194. package/dist/esm/uns-v2/sse.js +12 -2
  195. package/dist/esm/uns-v2/sse.js.map +1 -1
  196. package/package.json +25 -12
  197. package/skills/tier0-sdk-v2/SKILL.md +11 -5
  198. package/skills/tier0-sdk-v2/references/integration.md +14 -24
  199. package/skills/tier0-sdk-v2/tier0-sdk-v2-data/SKILL.md +11 -5
  200. package/skills/tier0-sdk-v2/tier0-sdk-v2-data/references/consistency.md +6 -10
  201. package/skills/tier0-sdk-v2/tier0-sdk-v2-data/references/errors.md +20 -3
  202. package/skills/tier0-sdk-v2/tier0-sdk-v2-data/references/read-write.md +46 -13
  203. package/skills/tier0-sdk-v2/tier0-sdk-v2-members/SKILL.md +2 -2
  204. package/skills/tier0-sdk-v2/tier0-sdk-v2-members/references/app-members.md +5 -1
  205. package/skills/tier0-sdk-v2/tier0-sdk-v2-mq/SKILL.md +25 -0
  206. package/skills/tier0-sdk-v2/tier0-sdk-v2-mq/references/quickstart.md +1 -1
  207. package/skills/tier0-sdk-v2/tier0-sdk-v2-notifications/SKILL.md +3 -3
  208. package/skills/tier0-sdk-v2/tier0-sdk-v2-notifications/references/send.md +6 -6
  209. package/skills/tier0-sdk-v2/tier0-sdk-v2-source/SKILL.md +4 -4
  210. package/skills/tier0-sdk-v2/tier0-sdk-v2-source/references/changes.md +2 -2
  211. package/skills/tier0-sdk-v2/tier0-sdk-v2-source/references/create.md +26 -36
  212. package/skills/tier0-sdk-v2/tier0-sdk-v2-source/references/delete.md +9 -23
  213. package/skills/tier0-sdk-v2/tier0-sdk-v2-source/references/protocols.md +12 -29
  214. package/skills/tier0-sdk-v2/tier0-sdk-v2-source/references/read.md +4 -5
  215. package/skills/tier0-sdk-v2/tier0-sdk-v2-source/references/update.md +5 -5
  216. package/skills/tier0-sdk-v2/tier0-sdk-v2-stream/SKILL.md +3 -3
  217. package/skills/tier0-sdk-v2/tier0-sdk-v2-stream/references/create.md +23 -9
  218. package/skills/tier0-sdk-v2/tier0-sdk-v2-stream/references/deploy.md +14 -12
  219. package/skills/tier0-sdk-v2/tier0-sdk-v2-stream/references/http-server.md +4 -4
  220. package/skills/tier0-sdk-v2/tier0-sdk-v2-stream/references/read.md +4 -3
  221. package/skills/tier0-sdk-v2/tier0-sdk-v2-streams/SKILL.md +14 -12
  222. package/skills/tier0-sdk-v2/tier0-sdk-v2-uns/SKILL.md +3 -1
  223. package/skills/tier0-sdk-v2/tier0-sdk-v2-uns/references/create.md +2 -2
  224. package/skills/tier0-sdk-v2/tier0-sdk-v2-uns/references/delete.md +22 -1
  225. package/skills/tier0-sdk-v2/tier0-sdk-v2-uns/references/read.md +5 -6
  226. package/skills/tier0-sdk-v2/tier0-sdk-v2-uns/references/update.md +11 -0
  227. package/dist/cjs/app-identity-contract.generated.d.ts +0 -22
  228. package/dist/cjs/app-identity-contract.generated.js +0 -51
  229. package/dist/cjs/app-identity-contract.generated.js.map +0 -1
  230. package/dist/cjs/runtime.d.ts +0 -13
  231. package/dist/cjs/runtime.js +0 -51
  232. package/dist/cjs/runtime.js.map +0 -1
  233. package/dist/esm/app-identity-contract.generated.d.ts +0 -22
  234. package/dist/esm/app-identity-contract.generated.js +0 -48
  235. package/dist/esm/app-identity-contract.generated.js.map +0 -1
  236. package/dist/esm/runtime.d.ts +0 -13
  237. package/dist/esm/runtime.js +0 -46
  238. package/dist/esm/runtime.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/uns-v2/client.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n CloudTransport,\n CloudTransportError,\n UNS_V2_MAX_REQUEST_BYTES,\n type CloudTransportConfig,\n} from '../cloud-transport.js';\nimport { getClient, type HttpClient, type RequestOptions } from '../openapi/client.js';\nimport { invalidResponseHint } from '../connection-diagnostics.js';\nimport { decodeUnsV2JSON, encodeUnsV2JSON } from './codec.js';\nimport { parseServerSentEvents, ServerSentEventsError } from './sse.js';\nimport {\n UNS_V2_OPERATIONS,\n UNS_V2_STREAM_OPERATIONS,\n type CloudRecordSubscribeReq,\n type UnsV2OperationName,\n type UnsV2StreamOperationName,\n type UnsV2Operations,\n type UnsV2Request,\n type UnsV2Response,\n} from './generated.js';\n\ntype RecordValue = Record<string, unknown>;\n\n/**\n * How far a failed request got. `unknown` only for a mutation whose commit\n * cannot be confirmed; a read is never `unknown`.\n */\nexport type UnsV2Execution = 'notStarted' | 'rolledBack' | 'committed' | 'unknown';\nexport const UNS_V2_EXECUTIONS: readonly UnsV2Execution[] = ['notStarted', 'rolledBack', 'committed', 'unknown'];\n\n/** Whether the identical request (same idempotency key) may be sent again, and after how long. */\nexport interface UnsV2Retry {\n safe: boolean;\n afterMs?: number;\n}\n\n/** Generated POST operations, or a GET event stream such as `recordSubscribe`. */\nexport type UnsV2ErrorOperation = UnsV2OperationName | UnsV2StreamOperationName;\n\nexport interface UnsV2ErrorInfo {\n status?: number;\n operation: UnsV2ErrorOperation;\n code: string;\n requestId?: string;\n execution: UnsV2Execution;\n retry: UnsV2Retry;\n opId?: string;\n path?: string;\n details?: RecordValue[];\n repair?: string;\n reason?: string;\n queryId?: string;\n /** The error envelope's `data`, verbatim; stable access codes such as `data.reason` live here. */\n data?: unknown;\n}\n\n/**\n * A failed UNS v2 call. `execution` and `retry` come from the error body; for\n * failures without one (timeout, network, invalid response) the SDK fills them\n * like the gateway does: a read `rolledBack` and safe to resend, a mutation\n * `unknown` and not safe. This client never retries; it exposes the advice.\n */\nexport class UnsV2Error extends Error implements UnsV2ErrorInfo {\n readonly status?: number;\n readonly operation: UnsV2ErrorOperation;\n readonly code: string;\n readonly requestId?: string;\n readonly execution: UnsV2Execution;\n readonly retry: UnsV2Retry;\n readonly opId?: string;\n readonly path?: string;\n readonly details?: RecordValue[];\n readonly repair?: string;\n readonly reason?: string;\n readonly queryId?: string;\n readonly data?: unknown;\n\n constructor(message: string, info: UnsV2ErrorInfo) {\n super(message);\n this.name = 'UnsV2Error';\n Object.assign(this, info);\n this.status = info.status;\n this.operation = info.operation;\n this.code = info.code;\n this.execution = info.execution;\n this.retry = info.retry;\n }\n\n get outcomeUnknown(): boolean {\n return this.execution === 'unknown';\n }\n}\n\n/**\n * `execution: \"unknown\"`: a mutation may have committed. Reconcile (read back,\n * or replay with the same idempotency key when `retry.safe`) before acting again.\n */\nexport class UnsV2OutcomeUnknownError extends UnsV2Error {\n constructor(message: string, info: UnsV2ErrorInfo) {\n super(message, info);\n this.name = 'UnsV2OutcomeUnknownError';\n }\n}\n\nfunction record(value: unknown): value is RecordValue {\n return value !== null && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction resourcePath(operation: { path: string; readonly pathParams: readonly string[] }, request: unknown): string {\n let path = operation.path;\n for (const key of operation.pathParams) {\n const value = record(request) && Object.prototype.hasOwnProperty.call(request, key) ? request[key] : undefined;\n if (typeof value !== 'string' || value.length < 1 || value.length > 128 ||\n value === '.' || value === '..' || /[/\\\\\\u0000-\\u001f\\u007f]/.test(value)) {\n throw new TypeError(`Tier0 SDK: invalid UNS v2 path identity ${key}.`);\n }\n path = path.replace(`:${key}`, encodeURIComponent(value));\n }\n return path;\n}\n\nfunction afterMs(value: unknown): number | undefined {\n return typeof value === 'number' && Number.isSafeInteger(value) && value >= 0 ? value : undefined;\n}\n\n/** The wire error object (an envelope's `error`, a batch item's `error`); undefined when it is not one. */\nexport function parseUnsV2Fault(value: unknown): Omit<UnsV2ErrorInfo, 'status' | 'operation' | 'requestId' | 'data'> | undefined {\n if (!record(value) || typeof value.code !== 'string' || !Array.isArray(value.details) ||\n !UNS_V2_EXECUTIONS.includes(value.execution as UnsV2Execution) ||\n !record(value.retry) || typeof value.retry.safe !== 'boolean') return undefined;\n const wait = afterMs(value.retry.afterMs);\n return {\n code: value.code,\n execution: value.execution as UnsV2Execution,\n retry: { safe: value.retry.safe, ...(wait === undefined ? {} : { afterMs: wait }) },\n opId: typeof value.opId === 'string' ? value.opId : undefined,\n path: typeof value.path === 'string' ? value.path : undefined,\n details: value.details.every(record) ? value.details : undefined,\n repair: typeof value.repair === 'string' ? value.repair : undefined,\n reason: typeof value.reason === 'string' ? value.reason : undefined,\n queryId: typeof value.queryId === 'string' ? value.queryId : undefined,\n };\n}\n\nfunction errorInfo(value: unknown, status: number, operation: UnsV2ErrorOperation): UnsV2ErrorInfo | undefined {\n if (!record(value)) return undefined;\n const fault = parseUnsV2Fault(value.error);\n if (!fault) return undefined;\n return {\n ...fault,\n status,\n operation,\n requestId: typeof value.requestId === 'string' ? value.requestId : undefined,\n data: value.data ?? undefined,\n };\n}\n\n/**\n * Builds the error for a failure without a UNS error body. The gateway's rule\n * applies: a read is `rolledBack` (safe to resend when `safeRead`), a mutation\n * `unknown` and not safe. `notStarted` overrides both for answers that prove\n * the request never reached UNS.\n */\nfunction localError(\n message: string,\n operation: UnsV2ErrorOperation,\n mutation: boolean,\n code: string,\n status?: number,\n safeRead = true,\n extra: { notStarted?: boolean; afterMs?: number } = {},\n): UnsV2Error {\n const info: UnsV2ErrorInfo = {\n status,\n operation,\n code,\n execution: extra.notStarted ? 'notStarted' : mutation ? 'unknown' : 'rolledBack',\n retry: { safe: !mutation && safeRead, ...(extra.afterMs === undefined || mutation ? {} : { afterMs: extra.afterMs }) },\n };\n return info.execution === 'unknown' ? new UnsV2OutcomeUnknownError(message, info) : new UnsV2Error(message, info);\n}\n\n/** `Retry-After` as delay-seconds or an HTTP date, in milliseconds from now. */\nfunction retryAfterMs(value: string | undefined): number | undefined {\n if (value === undefined) return undefined;\n if (/^\\d+$/.test(value.trim())) return Number(value.trim()) * 1000;\n const at = Date.parse(value);\n return Number.isNaN(at) ? undefined : Math.max(0, at - Date.now());\n}\n\n/**\n * UNS v2 routes answer every error with the envelope, so a 4xx whose body is\n * no envelope at all comes from an intermediary (edge 401 / 413 page) that\n * never forwarded the request; 408 is the exception, the request may have\n * been forwarded.\n */\nconst rejectedBeforeUns = (status: number) => status >= 400 && status < 500 && status !== 408;\n\n/** Contract limits of one `records:subscribe` stream. */\nexport const UNS_V2_SUBSCRIBE_MAX_COLLECTIONS = 64;\nexport const UNS_V2_SUBSCRIBE_MAX_RECORD_IDS = 100;\nconst EVENT_ID_MAX_LENGTH = 8192;\n\n/**\n * Rejects a resume position that cannot be an event id (1–8192 visible ASCII\n * characters), such as a `Last-Event-ID` with CR/LF taken from a browser:\n * sent as a header it would fail every connection.\n */\nexport function assertEventId(value: string): void {\n if (typeof value !== 'string' || value.length < 1 || value.length > EVENT_ID_MAX_LENGTH || !/^[\\x21-\\x7e]+$/.test(value)) {\n throw new TypeError(`Tier0 SDK: lastEventId must be 1–${EVENT_ID_MAX_LENGTH} visible ASCII characters.`);\n }\n}\n\n/**\n * Query of `records:subscribe`; the resume position travels as `lastEventId`\n * (the `Last-Event-ID` header). Without `collectionIds` the stream covers every\n * collection the caller may read (an App key: every collection granted to the App).\n */\nexport type UnsV2RecordSubscribeRequest = Pick<CloudRecordSubscribeReq, 'collectionIds' | 'recordIds'>;\n\n/**\n * A committed record change. Events carry identities only: read the record to\n * see its data. `restricted`: the collection has employee data rules, so who\n * may see this record depends on the employee (see `data.subscribe`).\n */\nexport interface UnsV2RecordChangeEvent {\n type: 'change';\n /** Stream position (also the frame id); resume after it with `lastEventId`. */\n eventId: string;\n collectionId: string;\n recordId: string;\n revision: number;\n change: 'record' | 'delete';\n occurredAt: number;\n restricted: boolean;\n}\n\nexport type UnsV2SubscriptionEvent =\n | UnsV2RecordChangeEvent\n /** Sent on connect and every 15 s; `eventId` is the current position, resumable like a change's. */\n | { type: 'heartbeat'; eventId?: string }\n /**\n * The server closes the stream after it. `CURSOR_EXPIRED`: the position is\n * outside the 24 h retention; `SCOPE_CHANGED`: access narrowed. Reload, then\n * subscribe again without `lastEventId`.\n */\n | { type: 'reset'; reason: string; message?: string };\n\nfunction changeEvent(value: unknown): UnsV2RecordChangeEvent | undefined {\n if (!record(value) || typeof value.eventId !== 'string' || typeof value.collectionId !== 'string' ||\n typeof value.recordId !== 'string' || typeof value.revision !== 'number' || !Number.isSafeInteger(value.revision) ||\n (value.change !== 'record' && value.change !== 'delete') || typeof value.occurredAt !== 'number' ||\n typeof value.restricted !== 'boolean') return undefined;\n return {\n type: 'change',\n eventId: value.eventId,\n collectionId: value.collectionId,\n recordId: value.recordId,\n revision: value.revision,\n change: value.change,\n occurredAt: value.occurredAt,\n restricted: value.restricted,\n };\n}\n\nexport class UnsV2ClientCore {\n private readonly transport: CloudTransport;\n\n constructor(resolveClient: () => HttpClient = getClient, config: CloudTransportConfig = {}) {\n this.transport = new CloudTransport(resolveClient, config);\n }\n\n async call<Name extends UnsV2OperationName>(name: Name, request: UnsV2Request<Name>, options: RequestOptions = {}): Promise<UnsV2Response<Name>> {\n options.signal?.throwIfAborted();\n if (typeof name !== 'string' || !Object.prototype.hasOwnProperty.call(UNS_V2_OPERATIONS, name)) {\n throw new TypeError('Tier0 SDK: unknown UNS v2 operation.');\n }\n const operation = UNS_V2_OPERATIONS[name];\n const mutation = operation.mutation;\n const path = resourcePath(operation, request);\n const body = encodeUnsV2JSON(request, operation.request);\n if (new TextEncoder().encode(body).byteLength > UNS_V2_MAX_REQUEST_BYTES) {\n throw new TypeError('Tier0 SDK: UNS v2 request body exceeds the 16777216-byte contract limit.');\n }\n let response: Awaited<ReturnType<CloudTransport['postText']>>;\n try {\n response = await this.transport.postText(path, body, options, name);\n } catch (error) {\n if (!(error instanceof CloudTransportError)) throw error;\n const message = error.kind === 'TRANSPORT_TIMEOUT'\n ? 'UNS v2 HTTP transport deadline exceeded.'\n : error.kind === 'PROTOCOL_ERROR' ? 'Invalid UNS v2 HTTP response.'\n : error.kind === 'TRANSPORT_ABORTED' ? 'UNS v2 request aborted.' : 'UNS v2 transport failed.';\n const resendable = error.kind === 'TRANSPORT_TIMEOUT' || error.kind === 'TRANSPORT_ERROR';\n throw localError(message, name, mutation, `UNS_V2_${error.kind}`, error.status, resendable);\n }\n\n // An ingress answers 502/503/504 without the UNS envelope during rollouts and restarts.\n const unavailable = response.status === 502 || response.status === 503 || response.status === 504;\n // `enveloped`: the body looks like a UNS envelope, so UNS may have answered it.\n const invalid = (message: string, enveloped: boolean) => localError(message, name, mutation, 'UNS_V2_PROTOCOL_ERROR', response.status, unavailable, {\n notStarted: !enveloped && rejectedBeforeUns(response.status),\n afterMs: unavailable ? retryAfterMs(response.retryAfter) : undefined,\n });\n let value: unknown;\n try {\n value = decodeUnsV2JSON(response.text, response.status === 200 ? operation.response : 'UnsV2ErrorResponse');\n } catch {\n throw invalid(`Invalid UNS v2 response. ${invalidResponseHint(response.status)}`, false);\n }\n\n if (response.status !== 200) {\n const info = errorInfo(value, response.status, name);\n if (!info || !record(value) || value.code !== response.status) {\n throw invalid('Invalid UNS v2 error response.', record(value) && typeof value.code === 'number');\n }\n // A read never has an unknown outcome; hold UNS to the rule it states for itself.\n if (!mutation && info.execution === 'unknown') info.execution = 'rolledBack';\n const message = typeof value.msg === 'string' ? value.msg : info.code;\n throw info.execution === 'unknown' ? new UnsV2OutcomeUnknownError(message, info) : new UnsV2Error(message, info);\n }\n\n if (!record(value) || value.code !== 200 || typeof value.msg !== 'string' ||\n typeof value.requestId !== 'string' || !Object.prototype.hasOwnProperty.call(value, 'data')) {\n throw localError('Invalid UNS v2 success envelope.', name, mutation, 'UNS_V2_PROTOCOL_ERROR', response.status, false);\n }\n return value as UnsV2Response<Name>;\n }\n\n /**\n * Opens one `records:subscribe` event stream and yields its events until\n * the server ends it or `signal` aborts (the generator then returns). It\n * neither reconnects nor watches heartbeats; `data.subscribe` does. A\n * refused or broken connection throws UnsV2Error (operation\n * `recordSubscribe`, a read: `retry.safe` says whether to reconnect).\n */\n async *subscribeRecords(request: UnsV2RecordSubscribeRequest, options: RequestOptions & { lastEventId?: string } = {}): AsyncGenerator<UnsV2SubscriptionEvent> {\n const name = 'recordSubscribe';\n const { collectionIds, recordIds } = request;\n if (collectionIds !== undefined && (!Array.isArray(collectionIds) || collectionIds.length < 1 || collectionIds.length > UNS_V2_SUBSCRIBE_MAX_COLLECTIONS)) {\n throw new TypeError(`Tier0 SDK: records:subscribe lists 1–${UNS_V2_SUBSCRIBE_MAX_COLLECTIONS} collections, or none for all.`);\n }\n if (recordIds !== undefined && (recordIds.length < 1 || recordIds.length > UNS_V2_SUBSCRIBE_MAX_RECORD_IDS || collectionIds?.length !== 1)) {\n throw new TypeError(`Tier0 SDK: records:subscribe takes 1–${UNS_V2_SUBSCRIBE_MAX_RECORD_IDS} recordIds of exactly one collection.`);\n }\n if (options.lastEventId !== undefined) assertEventId(options.lastEventId);\n // Repeated query parameters, as the contract specifies.\n const query = new URLSearchParams();\n for (const id of collectionIds ?? []) query.append('collectionIds', id);\n for (const id of recordIds ?? []) query.append('recordIds', id);\n const path = UNS_V2_STREAM_OPERATIONS.recordSubscribe.path + (query.size ? `?${query}` : '');\n let opened: Awaited<ReturnType<CloudTransport['getEventStream']>>;\n try {\n opened = await this.transport.getEventStream(path, options, name);\n } catch (error) {\n if (!(error instanceof CloudTransportError)) throw error;\n if (error.kind === 'TRANSPORT_ABORTED') return;\n const resendable = error.kind === 'TRANSPORT_TIMEOUT' || error.kind === 'TRANSPORT_ERROR';\n throw localError('UNS v2 event stream could not be opened.', name, false, `UNS_V2_${error.kind}`, error.status, resendable);\n }\n if ('text' in opened) {\n const unavailable = opened.status === 502 || opened.status === 503 || opened.status === 504;\n const invalid = (enveloped: boolean) => localError(`Invalid UNS v2 event stream response. ${invalidResponseHint(opened.status)}`, name, false, 'UNS_V2_PROTOCOL_ERROR', opened.status, unavailable, {\n notStarted: !enveloped && rejectedBeforeUns(opened.status),\n });\n let value: unknown;\n try {\n value = decodeUnsV2JSON(opened.text, 'UnsV2ErrorResponse');\n } catch {\n throw invalid(false);\n }\n const info = opened.status === 200 ? undefined : errorInfo(value, opened.status, name);\n if (!info || !record(value) || value.code !== opened.status) throw invalid(record(value) && typeof value.code === 'number');\n // A subscription is a read: never an unknown outcome.\n if (info.execution === 'unknown') info.execution = 'rolledBack';\n throw new UnsV2Error(typeof value.msg === 'string' ? value.msg : info.code, info);\n }\n try {\n for await (const event of parseServerSentEvents(opened.stream)) {\n // A keep-alive comment counts as a heartbeat too.\n if ('comment' in event) {\n yield { type: 'heartbeat' };\n } else if (event.event === 'heartbeat') {\n yield event.id === undefined ? { type: 'heartbeat' } : { type: 'heartbeat', eventId: event.id };\n } else if (event.event === 'reset') {\n let body: unknown;\n try { body = JSON.parse(event.data); } catch { body = undefined; }\n if (!record(body) || typeof body.reason !== 'string') {\n throw localError('Invalid UNS v2 reset event.', name, false, 'UNS_V2_PROTOCOL_ERROR', 200, true);\n }\n yield typeof body.message === 'string'\n ? { type: 'reset', reason: body.reason, message: body.message }\n : { type: 'reset', reason: body.reason };\n } else if (event.event === 'change') {\n let parsed: UnsV2RecordChangeEvent | undefined;\n try { parsed = changeEvent(JSON.parse(event.data)); } catch { parsed = undefined; }\n if (!parsed) throw localError('Invalid UNS v2 change event.', name, false, 'UNS_V2_PROTOCOL_ERROR', 200, true);\n yield parsed;\n }\n }\n } catch (error) {\n if (options.signal?.aborted) return;\n if (error instanceof UnsV2Error) throw error;\n if (error instanceof ServerSentEventsError) throw localError(error.message, name, false, 'UNS_V2_PROTOCOL_ERROR', 200, true);\n throw localError('UNS v2 event stream broke.', name, false, 'UNS_V2_TRANSPORT_ERROR', 200, true);\n } finally {\n opened.close();\n }\n }\n}\n\nexport type UnsV2Client = UnsV2ClientCore & UnsV2Operations;\n\nexport function createUnsV2Client(resolveClient: () => HttpClient = getClient, config: CloudTransportConfig = {}): UnsV2Client {\n const core = new UnsV2ClientCore(resolveClient, config);\n const methods = Object.fromEntries(Object.keys(UNS_V2_OPERATIONS).map(name => [name, (request: unknown, options?: RequestOptions) =>\n core.call(name as UnsV2OperationName, request as UnsV2Request<UnsV2OperationName>, options)]));\n return Object.assign(core, methods) as unknown as UnsV2Client;\n}\n\n/** Uses configureClient()/TIER0_API_HOST/TIER0_API_KEY and does not imply v2 readiness. */\nexport const unsV2 = createUnsV2Client();\n"]}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/uns-v2/client.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n CloudTransport,\n CloudTransportError,\n UNS_V2_MAX_REQUEST_BYTES,\n type CloudTransportConfig,\n} from '../cloud-transport.js';\nimport { getClient, type HttpClient, type RequestOptions } from '../openapi/client.js';\nimport { invalidResponseHint } from '../connection-diagnostics.js';\nimport { decodeUnsV2JSON, encodeUnsV2JSON } from './codec.js';\nimport { parseServerSentEvents, ServerSentEventsError } from './sse.js';\nimport {\n UNS_V2_OPERATIONS,\n UNS_V2_STREAM_OPERATIONS,\n type CloudRecordSubscribeReq,\n type UnsV2OperationName,\n type UnsV2StreamOperationName,\n type UnsV2Operations,\n type UnsV2Request,\n type UnsV2Response,\n} from './generated.js';\n\ntype RecordValue = Record<string, unknown>;\n\n/**\n * How far a failed request got. `unknown` only for a mutation whose commit\n * cannot be confirmed; a read is never `unknown`.\n */\nexport type UnsV2Execution = 'notStarted' | 'rolledBack' | 'committed' | 'unknown';\nexport const UNS_V2_EXECUTIONS: readonly UnsV2Execution[] = ['notStarted', 'rolledBack', 'committed', 'unknown'];\n\n/** Whether the identical request (same idempotency key) may be sent again, and after how long. */\nexport interface UnsV2Retry {\n safe: boolean;\n afterMs?: number;\n}\n\n/** Generated POST operations, or a GET event stream such as `recordSubscribe`. */\nexport type UnsV2ErrorOperation = UnsV2OperationName | UnsV2StreamOperationName;\n\nexport interface UnsV2ErrorInfo {\n status?: number;\n operation: UnsV2ErrorOperation;\n code: string;\n requestId?: string;\n execution: UnsV2Execution;\n retry: UnsV2Retry;\n opId?: string;\n path?: string;\n details?: RecordValue[];\n repair?: string;\n reason?: string;\n queryId?: string;\n /** The error envelope's `data`, verbatim; stable access codes such as `data.reason` live here. */\n data?: unknown;\n}\n\n/**\n * A failed UNS v2 call. `execution` and `retry` come from the error body; for\n * failures without one (timeout, network, invalid response) the SDK fills them\n * like the gateway does: a read `rolledBack` and safe to resend, a mutation\n * `unknown` and not safe. This client never retries; it exposes the advice.\n */\nexport class UnsV2Error extends Error implements UnsV2ErrorInfo {\n readonly status?: number;\n readonly operation: UnsV2ErrorOperation;\n readonly code: string;\n readonly requestId?: string;\n readonly execution: UnsV2Execution;\n readonly retry: UnsV2Retry;\n readonly opId?: string;\n readonly path?: string;\n readonly details?: RecordValue[];\n readonly repair?: string;\n readonly reason?: string;\n readonly queryId?: string;\n readonly data?: unknown;\n\n constructor(message: string, info: UnsV2ErrorInfo) {\n super(message);\n this.name = 'UnsV2Error';\n Object.assign(this, info);\n this.status = info.status;\n this.operation = info.operation;\n this.code = info.code;\n this.execution = info.execution;\n this.retry = info.retry;\n }\n\n get outcomeUnknown(): boolean {\n return this.execution === 'unknown';\n }\n}\n\n/**\n * `execution: \"unknown\"`: a mutation may have committed. Reconcile (read back,\n * or replay with the same idempotency key when `retry.safe`) before acting again.\n */\nexport class UnsV2OutcomeUnknownError extends UnsV2Error {\n constructor(message: string, info: UnsV2ErrorInfo) {\n super(message, info);\n this.name = 'UnsV2OutcomeUnknownError';\n }\n}\n\nfunction record(value: unknown): value is RecordValue {\n return value !== null && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction resourcePath(operation: { path: string; readonly pathParams: readonly string[] }, request: unknown): string {\n let path = operation.path;\n for (const key of operation.pathParams) {\n const value = record(request) && Object.prototype.hasOwnProperty.call(request, key) ? request[key] : undefined;\n if (typeof value !== 'string' || value.length < 1 || value.length > 128 ||\n value === '.' || value === '..' || /[/\\\\\\u0000-\\u001f\\u007f]/.test(value)) {\n throw new TypeError(`Tier0 SDK: invalid UNS v2 path identity ${key}.`);\n }\n path = path.replace(`:${key}`, encodeURIComponent(value));\n }\n return path;\n}\n\nfunction afterMs(value: unknown): number | undefined {\n return typeof value === 'number' && Number.isSafeInteger(value) && value >= 0 ? value : undefined;\n}\n\n/** The wire error object (an envelope's `error`, a batch item's `error`); undefined when it is not one. */\nexport function parseUnsV2Fault(value: unknown): Omit<UnsV2ErrorInfo, 'status' | 'operation' | 'requestId' | 'data'> | undefined {\n if (!record(value) || typeof value.code !== 'string' || !Array.isArray(value.details) ||\n !UNS_V2_EXECUTIONS.includes(value.execution as UnsV2Execution) ||\n !record(value.retry) || typeof value.retry.safe !== 'boolean') return undefined;\n const wait = afterMs(value.retry.afterMs);\n return {\n code: value.code,\n execution: value.execution as UnsV2Execution,\n retry: { safe: value.retry.safe, ...(wait === undefined ? {} : { afterMs: wait }) },\n opId: typeof value.opId === 'string' ? value.opId : undefined,\n path: typeof value.path === 'string' ? value.path : undefined,\n details: value.details.every(record) ? value.details : undefined,\n repair: typeof value.repair === 'string' ? value.repair : undefined,\n reason: typeof value.reason === 'string' ? value.reason : undefined,\n queryId: typeof value.queryId === 'string' ? value.queryId : undefined,\n };\n}\n\nfunction errorInfo(value: unknown, status: number, operation: UnsV2ErrorOperation): UnsV2ErrorInfo | undefined {\n if (!record(value)) return undefined;\n const fault = parseUnsV2Fault(value.error);\n if (!fault) return undefined;\n return {\n ...fault,\n status,\n operation,\n requestId: typeof value.requestId === 'string' ? value.requestId : undefined,\n data: value.data ?? undefined,\n };\n}\n\n/**\n * Builds the error for a failure without a UNS error body. The gateway's rule\n * applies: a read is `rolledBack` (safe to resend when `safeRead`), a mutation\n * `unknown` and not safe. `notStarted` overrides both for answers that prove\n * the request never reached UNS.\n */\nfunction localError(\n message: string,\n operation: UnsV2ErrorOperation,\n mutation: boolean,\n code: string,\n status?: number,\n safeRead = true,\n extra: { notStarted?: boolean; afterMs?: number } = {},\n): UnsV2Error {\n const info: UnsV2ErrorInfo = {\n status,\n operation,\n code,\n execution: extra.notStarted ? 'notStarted' : mutation ? 'unknown' : 'rolledBack',\n retry: { safe: !mutation && safeRead, ...(extra.afterMs === undefined || mutation ? {} : { afterMs: extra.afterMs }) },\n };\n return info.execution === 'unknown' ? new UnsV2OutcomeUnknownError(message, info) : new UnsV2Error(message, info);\n}\n\n/** `Retry-After` as delay-seconds or an HTTP date, in milliseconds from now. */\nfunction retryAfterMs(value: string | undefined): number | undefined {\n if (value === undefined) return undefined;\n if (/^\\d+$/.test(value.trim())) return Number(value.trim()) * 1000;\n const at = Date.parse(value);\n return Number.isNaN(at) ? undefined : Math.max(0, at - Date.now());\n}\n\n/**\n * UNS v2 routes answer every error with the envelope, so a 4xx whose body is\n * no envelope at all comes from an intermediary (edge 401 / 413 page) that\n * never forwarded the request; 408 is the exception, the request may have\n * been forwarded.\n */\nconst rejectedBeforeUns = (status: number) => status >= 400 && status < 500 && status !== 408;\n\n/**\n * An answer of the node proxy (design 21.28, `X-Tier0-Proxy: not-forwarded`):\n * `{code: \"sbx_proxy_*\", message, retry_after_ms?}`. UNS never saw the request,\n * so it is `notStarted`, a write included. The HTTP client already resent a\n * 503 or 429 three times; `retry.safe` is false so that no caller multiplies\n * those resends.\n */\nfunction proxyError(text: string, status: number, operation: UnsV2ErrorOperation): UnsV2Error {\n let value: unknown;\n try { value = JSON.parse(text); } catch { value = undefined; }\n const code = record(value) && typeof value.code === 'string' && /^sbx_proxy_[a-z_]+$/.test(value.code) ? value.code : 'UNS_V2_PROTOCOL_ERROR';\n const message = record(value) && typeof value.message === 'string' ? value.message : 'Rejected by the Tier0 node proxy.';\n return localError(message, operation, false, code, status, false, { notStarted: true });\n}\n\n/** Contract limits of one `records:subscribe` stream. */\nexport const UNS_V2_SUBSCRIBE_MAX_COLLECTIONS = 64;\nexport const UNS_V2_SUBSCRIBE_MAX_RECORD_IDS = 100;\nconst EVENT_ID_MAX_LENGTH = 8192;\n\n/**\n * Rejects a resume position that cannot be an event id (1–8192 visible ASCII\n * characters), such as a `Last-Event-ID` with CR/LF taken from a browser:\n * sent as a header it would fail every connection.\n */\nexport function assertEventId(value: string): void {\n if (typeof value !== 'string' || value.length < 1 || value.length > EVENT_ID_MAX_LENGTH || !/^[\\x21-\\x7e]+$/.test(value)) {\n throw new TypeError(`Tier0 SDK: lastEventId must be 1–${EVENT_ID_MAX_LENGTH} visible ASCII characters.`);\n }\n}\n\n/**\n * Query of `records:subscribe`; the resume position travels as `lastEventId`\n * (the `Last-Event-ID` header). Without `collectionIds` the stream covers every\n * collection the caller may read (an App key: every collection granted to the App).\n */\nexport type UnsV2RecordSubscribeRequest = Pick<CloudRecordSubscribeReq, 'collectionIds' | 'recordIds'>;\n\n/** A committed record change. Events carry identities only: read the record to see its data. */\nexport interface UnsV2RecordChangeEvent {\n type: 'change';\n /** Stream position (also the frame id); resume after it with `lastEventId`. */\n eventId: string;\n collectionId: string;\n recordId: string;\n revision: number;\n change: 'record' | 'delete';\n occurredAt: number;\n}\n\nexport type UnsV2SubscriptionEvent =\n | UnsV2RecordChangeEvent\n /** Sent on connect and every 15 s; `eventId` is the current position, resumable like a change's. */\n | { type: 'heartbeat'; eventId?: string }\n /**\n * The server closes the stream after it. `CURSOR_EXPIRED`: the position is\n * outside the 24 h retention; `SCOPE_CHANGED`: access narrowed. Reload, then\n * subscribe again without `lastEventId`.\n */\n | { type: 'reset'; reason: string; message?: string };\n\nfunction changeEvent(value: unknown): UnsV2RecordChangeEvent | undefined {\n if (!record(value) || typeof value.eventId !== 'string' || typeof value.collectionId !== 'string' ||\n typeof value.recordId !== 'string' || typeof value.revision !== 'number' || !Number.isSafeInteger(value.revision) ||\n (value.change !== 'record' && value.change !== 'delete') || typeof value.occurredAt !== 'number') return undefined;\n return {\n type: 'change',\n eventId: value.eventId,\n collectionId: value.collectionId,\n recordId: value.recordId,\n revision: value.revision,\n change: value.change,\n occurredAt: value.occurredAt,\n };\n}\n\nexport class UnsV2ClientCore {\n private readonly transport: CloudTransport;\n\n constructor(resolveClient: () => HttpClient = getClient, config: CloudTransportConfig = {}) {\n this.transport = new CloudTransport(resolveClient, config);\n }\n\n async call<Name extends UnsV2OperationName>(name: Name, request: UnsV2Request<Name>, options: RequestOptions = {}): Promise<UnsV2Response<Name>> {\n options.signal?.throwIfAborted();\n if (typeof name !== 'string' || !Object.prototype.hasOwnProperty.call(UNS_V2_OPERATIONS, name)) {\n throw new TypeError('Tier0 SDK: unknown UNS v2 operation.');\n }\n const operation = UNS_V2_OPERATIONS[name];\n const mutation = operation.mutation;\n const path = resourcePath(operation, request);\n const body = encodeUnsV2JSON(request, operation.request);\n if (new TextEncoder().encode(body).byteLength > UNS_V2_MAX_REQUEST_BYTES) {\n throw new TypeError('Tier0 SDK: UNS v2 request body exceeds the 16777216-byte contract limit.');\n }\n let response: Awaited<ReturnType<CloudTransport['postText']>>;\n try {\n response = await this.transport.postText(path, body, options);\n } catch (error) {\n if (!(error instanceof CloudTransportError)) throw error;\n const message = error.kind === 'TRANSPORT_TIMEOUT'\n ? 'UNS v2 HTTP transport deadline exceeded.'\n : error.kind === 'PROTOCOL_ERROR' ? 'Invalid UNS v2 HTTP response.'\n : error.kind === 'TRANSPORT_ABORTED' ? 'UNS v2 request aborted.' : 'UNS v2 transport failed.';\n const resendable = error.kind === 'TRANSPORT_TIMEOUT' || error.kind === 'TRANSPORT_ERROR';\n throw localError(message, name, mutation, `UNS_V2_${error.kind}`, error.status, resendable, { notStarted: error.notStarted });\n }\n\n if (response.notForwarded) throw proxyError(response.text, response.status, name);\n // An ingress answers 502/503/504 without the UNS envelope during rollouts and restarts.\n const unavailable = response.status === 502 || response.status === 503 || response.status === 504;\n // `enveloped`: the body looks like a UNS envelope, so UNS may have answered it.\n const invalid = (message: string, enveloped: boolean) => localError(message, name, mutation, 'UNS_V2_PROTOCOL_ERROR', response.status, unavailable, {\n notStarted: !enveloped && rejectedBeforeUns(response.status),\n afterMs: unavailable ? retryAfterMs(response.retryAfter) : undefined,\n });\n let value: unknown;\n try {\n value = decodeUnsV2JSON(response.text, response.status === 200 ? operation.response : 'UnsV2ErrorResponse');\n } catch {\n throw invalid(`Invalid UNS v2 response. ${invalidResponseHint(response.status)}`, false);\n }\n\n if (response.status !== 200) {\n const info = errorInfo(value, response.status, name);\n if (!info || !record(value) || value.code !== response.status) {\n throw invalid('Invalid UNS v2 error response.', record(value) && typeof value.code === 'number');\n }\n // A read never has an unknown outcome; hold UNS to the rule it states for itself.\n if (!mutation && info.execution === 'unknown') info.execution = 'rolledBack';\n const message = typeof value.msg === 'string' ? value.msg : info.code;\n throw info.execution === 'unknown' ? new UnsV2OutcomeUnknownError(message, info) : new UnsV2Error(message, info);\n }\n\n if (!record(value) || value.code !== 200 || typeof value.msg !== 'string' ||\n typeof value.requestId !== 'string' || !Object.prototype.hasOwnProperty.call(value, 'data')) {\n throw localError('Invalid UNS v2 success envelope.', name, mutation, 'UNS_V2_PROTOCOL_ERROR', response.status, false);\n }\n return value as UnsV2Response<Name>;\n }\n\n /**\n * Opens one `records:subscribe` event stream and yields its events until\n * the server ends it or `signal` aborts (the generator then returns). It\n * neither reconnects nor watches heartbeats; `data.subscribe` does. A\n * refused or broken connection throws UnsV2Error (operation\n * `recordSubscribe`, a read: `retry.safe` says whether to reconnect).\n */\n async *subscribeRecords(request: UnsV2RecordSubscribeRequest, options: RequestOptions & { lastEventId?: string } = {}): AsyncGenerator<UnsV2SubscriptionEvent> {\n const name = 'recordSubscribe';\n const { collectionIds, recordIds } = request;\n if (collectionIds !== undefined && (!Array.isArray(collectionIds) || collectionIds.length < 1 || collectionIds.length > UNS_V2_SUBSCRIBE_MAX_COLLECTIONS)) {\n throw new TypeError(`Tier0 SDK: records:subscribe lists 1–${UNS_V2_SUBSCRIBE_MAX_COLLECTIONS} collections, or none for all.`);\n }\n if (recordIds !== undefined && (recordIds.length < 1 || recordIds.length > UNS_V2_SUBSCRIBE_MAX_RECORD_IDS || collectionIds?.length !== 1)) {\n throw new TypeError(`Tier0 SDK: records:subscribe takes 1–${UNS_V2_SUBSCRIBE_MAX_RECORD_IDS} recordIds of exactly one collection.`);\n }\n if (options.lastEventId !== undefined) assertEventId(options.lastEventId);\n // Repeated query parameters, as the contract specifies.\n const query = new URLSearchParams();\n for (const id of collectionIds ?? []) query.append('collectionIds', id);\n for (const id of recordIds ?? []) query.append('recordIds', id);\n const path = UNS_V2_STREAM_OPERATIONS.recordSubscribe.path + (query.size ? `?${query}` : '');\n let opened: Awaited<ReturnType<CloudTransport['getEventStream']>>;\n try {\n opened = await this.transport.getEventStream(path, options);\n } catch (error) {\n if (!(error instanceof CloudTransportError)) throw error;\n if (error.kind === 'TRANSPORT_ABORTED') return;\n const resendable = error.kind === 'TRANSPORT_TIMEOUT' || error.kind === 'TRANSPORT_ERROR';\n throw localError('UNS v2 event stream could not be opened.', name, false, `UNS_V2_${error.kind}`, error.status, resendable);\n }\n if ('text' in opened) {\n if (opened.notForwarded) throw proxyError(opened.text, opened.status, name);\n const unavailable = opened.status === 502 || opened.status === 503 || opened.status === 504;\n const invalid = (enveloped: boolean) => localError(`Invalid UNS v2 event stream response. ${invalidResponseHint(opened.status)}`, name, false, 'UNS_V2_PROTOCOL_ERROR', opened.status, unavailable, {\n notStarted: !enveloped && rejectedBeforeUns(opened.status),\n });\n let value: unknown;\n try {\n value = decodeUnsV2JSON(opened.text, 'UnsV2ErrorResponse');\n } catch {\n throw invalid(false);\n }\n const info = opened.status === 200 ? undefined : errorInfo(value, opened.status, name);\n if (!info || !record(value) || value.code !== opened.status) throw invalid(record(value) && typeof value.code === 'number');\n // A subscription is a read: never an unknown outcome.\n if (info.execution === 'unknown') info.execution = 'rolledBack';\n throw new UnsV2Error(typeof value.msg === 'string' ? value.msg : info.code, info);\n }\n try {\n for await (const event of parseServerSentEvents(opened.stream)) {\n // A keep-alive comment counts as a heartbeat too.\n if ('comment' in event) {\n yield { type: 'heartbeat' };\n } else if (!('event' in event)) {\n continue;\n } else if (event.event === 'heartbeat') {\n yield event.id === undefined ? { type: 'heartbeat' } : { type: 'heartbeat', eventId: event.id };\n } else if (event.event === 'reset') {\n let body: unknown;\n try { body = JSON.parse(event.data); } catch { body = undefined; }\n if (!record(body) || typeof body.reason !== 'string') {\n throw localError('Invalid UNS v2 reset event.', name, false, 'UNS_V2_PROTOCOL_ERROR', 200, true);\n }\n yield typeof body.message === 'string'\n ? { type: 'reset', reason: body.reason, message: body.message }\n : { type: 'reset', reason: body.reason };\n } else if (event.event === 'change') {\n let parsed: UnsV2RecordChangeEvent | undefined;\n try { parsed = changeEvent(JSON.parse(event.data)); } catch { parsed = undefined; }\n if (!parsed) throw localError('Invalid UNS v2 change event.', name, false, 'UNS_V2_PROTOCOL_ERROR', 200, true);\n yield parsed;\n }\n }\n } catch (error) {\n if (options.signal?.aborted) return;\n if (error instanceof UnsV2Error) throw error;\n if (error instanceof ServerSentEventsError) throw localError(error.message, name, false, 'UNS_V2_PROTOCOL_ERROR', 200, true);\n throw localError('UNS v2 event stream broke.', name, false, 'UNS_V2_TRANSPORT_ERROR', 200, true);\n } finally {\n opened.close();\n }\n }\n}\n\nexport type UnsV2Client = UnsV2ClientCore & UnsV2Operations;\n\nexport function createUnsV2Client(resolveClient: () => HttpClient = getClient, config: CloudTransportConfig = {}): UnsV2Client {\n const core = new UnsV2ClientCore(resolveClient, config);\n const methods = Object.fromEntries(Object.keys(UNS_V2_OPERATIONS).map(name => [name, (request: unknown, options?: RequestOptions) =>\n core.call(name as UnsV2OperationName, request as UnsV2Request<UnsV2OperationName>, options)]));\n return Object.assign(core, methods) as unknown as UnsV2Client;\n}\n\n/** Uses configureClient()/TIER0_API_HOST/TIER0_API_KEY and does not imply v2 readiness. */\nexport const unsV2 = createUnsV2Client();\n"]}
@@ -2,9 +2,12 @@ import { type ClientConfig } from '../openapi/client.js';
2
2
  import type { CloudTransportConfig } from '../cloud-transport.js';
3
3
  import { type UnsV2Client } from './client.js';
4
4
  import { type UnsV2Operations, type UnsV2OperationName } from './generated.js';
5
- export type UnsDataOperationName = Exclude<UnsV2OperationName, `source${string}` | `stream${string}` | `control${string}`>;
5
+ /** Fleet inventory is center-only and belongs to no application facade; only the raw operation table carries it. */
6
+ declare const FLEET_OPERATIONS: readonly ["edgeNodesList"];
7
+ export type UnsDataOperationName = Exclude<UnsV2OperationName, `source${string}` | `stream${string}` | `control${string}` | typeof FLEET_OPERATIONS[number]>;
6
8
  export type UnsDataClient = Readonly<Pick<UnsV2Operations, UnsDataOperationName>>;
7
- /** Excludes Source, Stream and Control management from the application data facade. */
9
+ /** Excludes Source, Stream and Control management and Fleet inventory from the application data facade. */
8
10
  export declare function bindUnsDataClient(raw: UnsV2Client): UnsDataClient;
9
11
  export type UnsDataClientConfig = ClientConfig & CloudTransportConfig;
10
12
  export declare function createUnsDataClient(config?: UnsDataClientConfig): UnsDataClient;
13
+ export {};
@@ -1,14 +1,17 @@
1
- import { HttpClient } from '../openapi/client.js';
1
+ import { HttpClient, snapshotClientConfig } from '../openapi/client.js';
2
2
  import { createUnsV2Client } from './client.js';
3
3
  import { UNS_V2_OPERATIONS } from './generated.js';
4
- /** Excludes Source, Stream and Control management from the application data facade. */
4
+ /** Fleet inventory is center-only and belongs to no application facade; only the raw operation table carries it. */
5
+ const FLEET_OPERATIONS = ['edgeNodesList'];
6
+ /** Excludes Source, Stream and Control management and Fleet inventory from the application data facade. */
5
7
  export function bindUnsDataClient(raw) {
6
8
  return Object.freeze(Object.fromEntries(Object.keys(UNS_V2_OPERATIONS)
7
- .filter(name => !/^(source|stream|control)/.test(name))
9
+ .filter(name => !/^(source|stream|control)/.test(name) && !FLEET_OPERATIONS.includes(name))
8
10
  .map(name => [name, raw[name]])));
9
11
  }
10
12
  export function createUnsDataClient(config = {}) {
11
- const http = new HttpClient(config);
12
- return bindUnsDataClient(createUnsV2Client(() => http, config));
13
+ const snapshot = snapshotClientConfig(config, ['transportTimeoutMs', 'unsV2MaxResponseBytes']);
14
+ const http = new HttpClient(snapshot);
15
+ return bindUnsDataClient(createUnsV2Client(() => http, snapshot));
13
16
  }
14
17
  //# sourceMappingURL=data-client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"data-client.js","sourceRoot":"","sources":["../../../src/uns-v2/data-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAqB,MAAM,sBAAsB,CAAC;AAErE,OAAO,EAAE,iBAAiB,EAAoB,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAiD,MAAM,gBAAgB,CAAC;AAIlG,uFAAuF;AACvF,MAAM,UAAU,iBAAiB,CAAC,GAAgB;IAChD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CACrC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC;SAC3B,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACtD,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,IAA0B,CAAC,CAAC,CAAC,CACxD,CAAkB,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,SAA8B,EAAE;IAClE,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;IACpC,OAAO,iBAAiB,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;AAClE,CAAC","sourcesContent":["import { HttpClient, type ClientConfig } from '../openapi/client.js';\nimport type { CloudTransportConfig } from '../cloud-transport.js';\nimport { createUnsV2Client, type UnsV2Client } from './client.js';\nimport { UNS_V2_OPERATIONS, type UnsV2Operations, type UnsV2OperationName } from './generated.js';\n\nexport type UnsDataOperationName = Exclude<UnsV2OperationName, `source${string}` | `stream${string}` | `control${string}`>;\nexport type UnsDataClient = Readonly<Pick<UnsV2Operations, UnsDataOperationName>>;\n/** Excludes Source, Stream and Control management from the application data facade. */\nexport function bindUnsDataClient(raw: UnsV2Client): UnsDataClient {\n return Object.freeze(Object.fromEntries(\n Object.keys(UNS_V2_OPERATIONS)\n .filter(name => !/^(source|stream|control)/.test(name))\n .map(name => [name, raw[name as UnsV2OperationName]]),\n )) as UnsDataClient;\n}\nexport type UnsDataClientConfig = ClientConfig & CloudTransportConfig;\nexport function createUnsDataClient(config: UnsDataClientConfig = {}): UnsDataClient {\n const http = new HttpClient(config);\n return bindUnsDataClient(createUnsV2Client(() => http, config));\n}\n"]}
1
+ {"version":3,"file":"data-client.js","sourceRoot":"","sources":["../../../src/uns-v2/data-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAqB,MAAM,sBAAsB,CAAC;AAE3F,OAAO,EAAE,iBAAiB,EAAoB,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAiD,MAAM,gBAAgB,CAAC;AAElG,oHAAoH;AACpH,MAAM,gBAAgB,GAAG,CAAC,eAAe,CAAU,CAAC;AAGpD,2GAA2G;AAC3G,MAAM,UAAU,iBAAiB,CAAC,GAAgB;IAChD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CACrC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC;SAC3B,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAE,gBAAsC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SACjH,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,IAA0B,CAAC,CAAC,CAAC,CACxD,CAAkB,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,SAA8B,EAAE;IAClE,MAAM,QAAQ,GAAG,oBAAoB,CAAC,MAAM,EAAE,CAAC,oBAAoB,EAAE,uBAAuB,CAAC,CAAC,CAAC;IAC/F,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC;IACtC,OAAO,iBAAiB,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;AACpE,CAAC","sourcesContent":["import { HttpClient, snapshotClientConfig, type ClientConfig } from '../openapi/client.js';\nimport type { CloudTransportConfig } from '../cloud-transport.js';\nimport { createUnsV2Client, type UnsV2Client } from './client.js';\nimport { UNS_V2_OPERATIONS, type UnsV2Operations, type UnsV2OperationName } from './generated.js';\n\n/** Fleet inventory is center-only and belongs to no application facade; only the raw operation table carries it. */\nconst FLEET_OPERATIONS = ['edgeNodesList'] as const;\nexport type UnsDataOperationName = Exclude<UnsV2OperationName, `source${string}` | `stream${string}` | `control${string}` | typeof FLEET_OPERATIONS[number]>;\nexport type UnsDataClient = Readonly<Pick<UnsV2Operations, UnsDataOperationName>>;\n/** Excludes Source, Stream and Control management and Fleet inventory from the application data facade. */\nexport function bindUnsDataClient(raw: UnsV2Client): UnsDataClient {\n return Object.freeze(Object.fromEntries(\n Object.keys(UNS_V2_OPERATIONS)\n .filter(name => !/^(source|stream|control)/.test(name) && !(FLEET_OPERATIONS as readonly string[]).includes(name))\n .map(name => [name, raw[name as UnsV2OperationName]]),\n )) as UnsDataClient;\n}\nexport type UnsDataClientConfig = ClientConfig & CloudTransportConfig;\nexport function createUnsDataClient(config: UnsDataClientConfig = {}): UnsDataClient {\n const snapshot = snapshotClientConfig(config, ['transportTimeoutMs', 'unsV2MaxResponseBytes']);\n const http = new HttpClient(snapshot);\n return bindUnsDataClient(createUnsV2Client(() => http, snapshot));\n}\n"]}