@astrale-os/kernel-protocol 0.5.0-beta.2

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 (390) hide show
  1. package/LICENSE +202 -0
  2. package/dist/artifact/index.d.ts +2 -0
  3. package/dist/artifact/index.d.ts.map +1 -0
  4. package/dist/artifact/index.js +2 -0
  5. package/dist/artifact/index.js.map +1 -0
  6. package/dist/artifact/ref.d.ts +11 -0
  7. package/dist/artifact/ref.d.ts.map +1 -0
  8. package/dist/artifact/ref.js +71 -0
  9. package/dist/artifact/ref.js.map +1 -0
  10. package/dist/codecs/codec.d.ts +14 -0
  11. package/dist/codecs/codec.d.ts.map +1 -0
  12. package/dist/codecs/codec.js +7 -0
  13. package/dist/codecs/codec.js.map +1 -0
  14. package/dist/codecs/index.d.ts +5 -0
  15. package/dist/codecs/index.d.ts.map +1 -0
  16. package/dist/codecs/index.js +5 -0
  17. package/dist/codecs/index.js.map +1 -0
  18. package/dist/codecs/json.d.ts +3 -0
  19. package/dist/codecs/json.d.ts.map +1 -0
  20. package/dist/codecs/json.js +21 -0
  21. package/dist/codecs/json.js.map +1 -0
  22. package/dist/codecs/media-types.d.ts +3 -0
  23. package/dist/codecs/media-types.d.ts.map +1 -0
  24. package/dist/codecs/media-types.js +3 -0
  25. package/dist/codecs/media-types.js.map +1 -0
  26. package/dist/codecs/msgpack.d.ts +5 -0
  27. package/dist/codecs/msgpack.d.ts.map +1 -0
  28. package/dist/codecs/msgpack.js +51 -0
  29. package/dist/codecs/msgpack.js.map +1 -0
  30. package/dist/errors/codes.d.ts +24 -0
  31. package/dist/errors/codes.d.ts.map +1 -0
  32. package/dist/errors/codes.js +23 -0
  33. package/dist/errors/codes.js.map +1 -0
  34. package/dist/errors/http-status.d.ts +3 -0
  35. package/dist/errors/http-status.d.ts.map +1 -0
  36. package/dist/errors/http-status.js +26 -0
  37. package/dist/errors/http-status.js.map +1 -0
  38. package/dist/errors/index.d.ts +6 -0
  39. package/dist/errors/index.d.ts.map +1 -0
  40. package/dist/errors/index.js +6 -0
  41. package/dist/errors/index.js.map +1 -0
  42. package/dist/errors/payload.d.ts +9 -0
  43. package/dist/errors/payload.d.ts.map +1 -0
  44. package/dist/errors/payload.js +37 -0
  45. package/dist/errors/payload.js.map +1 -0
  46. package/dist/errors/protocol-error.d.ts +7 -0
  47. package/dist/errors/protocol-error.d.ts.map +1 -0
  48. package/dist/errors/protocol-error.js +10 -0
  49. package/dist/errors/protocol-error.js.map +1 -0
  50. package/dist/errors/reason.d.ts +8 -0
  51. package/dist/errors/reason.d.ts.map +1 -0
  52. package/dist/errors/reason.js +44 -0
  53. package/dist/errors/reason.js.map +1 -0
  54. package/dist/index.d.ts +9 -0
  55. package/dist/index.d.ts.map +1 -0
  56. package/dist/index.js +9 -0
  57. package/dist/index.js.map +1 -0
  58. package/dist/invocation/admission.d.ts +22 -0
  59. package/dist/invocation/admission.d.ts.map +1 -0
  60. package/dist/invocation/admission.js +169 -0
  61. package/dist/invocation/admission.js.map +1 -0
  62. package/dist/invocation/binary.d.ts +10 -0
  63. package/dist/invocation/binary.d.ts.map +1 -0
  64. package/dist/invocation/binary.js +24 -0
  65. package/dist/invocation/binary.js.map +1 -0
  66. package/dist/invocation/binding-codecs.d.ts +9 -0
  67. package/dist/invocation/binding-codecs.d.ts.map +1 -0
  68. package/dist/invocation/binding-codecs.js +28 -0
  69. package/dist/invocation/binding-codecs.js.map +1 -0
  70. package/dist/invocation/cancellation.d.ts +9 -0
  71. package/dist/invocation/cancellation.d.ts.map +1 -0
  72. package/dist/invocation/cancellation.js +17 -0
  73. package/dist/invocation/cancellation.js.map +1 -0
  74. package/dist/invocation/correlation.d.ts +3 -0
  75. package/dist/invocation/correlation.d.ts.map +1 -0
  76. package/dist/invocation/correlation.js +8 -0
  77. package/dist/invocation/correlation.js.map +1 -0
  78. package/dist/invocation/delegate.d.ts +25 -0
  79. package/dist/invocation/delegate.d.ts.map +1 -0
  80. package/dist/invocation/delegate.js +44 -0
  81. package/dist/invocation/delegate.js.map +1 -0
  82. package/dist/invocation/http/binary.d.ts +6 -0
  83. package/dist/invocation/http/binary.d.ts.map +1 -0
  84. package/dist/invocation/http/binary.js +89 -0
  85. package/dist/invocation/http/binary.js.map +1 -0
  86. package/dist/invocation/http/index.d.ts +5 -0
  87. package/dist/invocation/http/index.d.ts.map +1 -0
  88. package/dist/invocation/http/index.js +5 -0
  89. package/dist/invocation/http/index.js.map +1 -0
  90. package/dist/invocation/http/negotiation.d.ts +4 -0
  91. package/dist/invocation/http/negotiation.d.ts.map +1 -0
  92. package/dist/invocation/http/negotiation.js +208 -0
  93. package/dist/invocation/http/negotiation.js.map +1 -0
  94. package/dist/invocation/http/stream.d.ts +6 -0
  95. package/dist/invocation/http/stream.d.ts.map +1 -0
  96. package/dist/invocation/http/stream.js +16 -0
  97. package/dist/invocation/http/stream.js.map +1 -0
  98. package/dist/invocation/http/trace.d.ts +7 -0
  99. package/dist/invocation/http/trace.d.ts.map +1 -0
  100. package/dist/invocation/http/trace.js +25 -0
  101. package/dist/invocation/http/trace.js.map +1 -0
  102. package/dist/invocation/idempotency.d.ts +11 -0
  103. package/dist/invocation/idempotency.d.ts.map +1 -0
  104. package/dist/invocation/idempotency.js +14 -0
  105. package/dist/invocation/idempotency.js.map +1 -0
  106. package/dist/invocation/index.d.ts +20 -0
  107. package/dist/invocation/index.d.ts.map +1 -0
  108. package/dist/invocation/index.js +20 -0
  109. package/dist/invocation/index.js.map +1 -0
  110. package/dist/invocation/miss.d.ts +8 -0
  111. package/dist/invocation/miss.d.ts.map +1 -0
  112. package/dist/invocation/miss.js +14 -0
  113. package/dist/invocation/miss.js.map +1 -0
  114. package/dist/invocation/redirect.d.ts +33 -0
  115. package/dist/invocation/redirect.d.ts.map +1 -0
  116. package/dist/invocation/redirect.js +68 -0
  117. package/dist/invocation/redirect.js.map +1 -0
  118. package/dist/invocation/request.d.ts +22 -0
  119. package/dist/invocation/request.d.ts.map +1 -0
  120. package/dist/invocation/request.js +55 -0
  121. package/dist/invocation/request.js.map +1 -0
  122. package/dist/invocation/response.d.ts +17 -0
  123. package/dist/invocation/response.d.ts.map +1 -0
  124. package/dist/invocation/response.js +34 -0
  125. package/dist/invocation/response.js.map +1 -0
  126. package/dist/invocation/routing.d.ts +14 -0
  127. package/dist/invocation/routing.d.ts.map +1 -0
  128. package/dist/invocation/routing.js +34 -0
  129. package/dist/invocation/routing.js.map +1 -0
  130. package/dist/invocation/schema.d.ts +10 -0
  131. package/dist/invocation/schema.d.ts.map +1 -0
  132. package/dist/invocation/schema.js +20 -0
  133. package/dist/invocation/schema.js.map +1 -0
  134. package/dist/invocation/service-reason.d.ts +41 -0
  135. package/dist/invocation/service-reason.d.ts.map +1 -0
  136. package/dist/invocation/service-reason.js +74 -0
  137. package/dist/invocation/service-reason.js.map +1 -0
  138. package/dist/invocation/stale-route.d.ts +11 -0
  139. package/dist/invocation/stale-route.d.ts.map +1 -0
  140. package/dist/invocation/stale-route.js +19 -0
  141. package/dist/invocation/stale-route.js.map +1 -0
  142. package/dist/invocation/stream.d.ts +26 -0
  143. package/dist/invocation/stream.d.ts.map +1 -0
  144. package/dist/invocation/stream.js +41 -0
  145. package/dist/invocation/stream.js.map +1 -0
  146. package/dist/invocation/target.d.ts +9 -0
  147. package/dist/invocation/target.d.ts.map +1 -0
  148. package/dist/invocation/target.js +12 -0
  149. package/dist/invocation/target.js.map +1 -0
  150. package/dist/invocation/trace.d.ts +10 -0
  151. package/dist/invocation/trace.d.ts.map +1 -0
  152. package/dist/invocation/trace.js +87 -0
  153. package/dist/invocation/trace.js.map +1 -0
  154. package/dist/invocation/version.d.ts +3 -0
  155. package/dist/invocation/version.d.ts.map +1 -0
  156. package/dist/invocation/version.js +2 -0
  157. package/dist/invocation/version.js.map +1 -0
  158. package/dist/invocation/websocket/binary.d.ts +4 -0
  159. package/dist/invocation/websocket/binary.d.ts.map +1 -0
  160. package/dist/invocation/websocket/binary.js +71 -0
  161. package/dist/invocation/websocket/binary.js.map +1 -0
  162. package/dist/invocation/websocket/index.d.ts +3 -0
  163. package/dist/invocation/websocket/index.d.ts.map +1 -0
  164. package/dist/invocation/websocket/index.js +3 -0
  165. package/dist/invocation/websocket/index.js.map +1 -0
  166. package/dist/invocation/websocket/subprotocol.d.ts +11 -0
  167. package/dist/invocation/websocket/subprotocol.d.ts.map +1 -0
  168. package/dist/invocation/websocket/subprotocol.js +30 -0
  169. package/dist/invocation/websocket/subprotocol.js.map +1 -0
  170. package/dist/issuer/configuration.d.ts +15 -0
  171. package/dist/issuer/configuration.d.ts.map +1 -0
  172. package/dist/issuer/configuration.js +87 -0
  173. package/dist/issuer/configuration.js.map +1 -0
  174. package/dist/issuer/error.d.ts +8 -0
  175. package/dist/issuer/error.d.ts.map +1 -0
  176. package/dist/issuer/error.js +12 -0
  177. package/dist/issuer/error.js.map +1 -0
  178. package/dist/issuer/exchange.d.ts +26 -0
  179. package/dist/issuer/exchange.d.ts.map +1 -0
  180. package/dist/issuer/exchange.js +130 -0
  181. package/dist/issuer/exchange.js.map +1 -0
  182. package/dist/issuer/hosted.d.ts +3 -0
  183. package/dist/issuer/hosted.d.ts.map +1 -0
  184. package/dist/issuer/hosted.js +8 -0
  185. package/dist/issuer/hosted.js.map +1 -0
  186. package/dist/issuer/index.d.ts +7 -0
  187. package/dist/issuer/index.d.ts.map +1 -0
  188. package/dist/issuer/index.js +7 -0
  189. package/dist/issuer/index.js.map +1 -0
  190. package/dist/issuer/key-set.d.ts +7 -0
  191. package/dist/issuer/key-set.d.ts.map +1 -0
  192. package/dist/issuer/key-set.js +48 -0
  193. package/dist/issuer/key-set.js.map +1 -0
  194. package/dist/issuer/paths.d.ts +7 -0
  195. package/dist/issuer/paths.d.ts.map +1 -0
  196. package/dist/issuer/paths.js +11 -0
  197. package/dist/issuer/paths.js.map +1 -0
  198. package/dist/issuer/url.d.ts +3 -0
  199. package/dist/issuer/url.d.ts.map +1 -0
  200. package/dist/issuer/url.js +34 -0
  201. package/dist/issuer/url.js.map +1 -0
  202. package/dist/publication/bindings/callable.d.ts +9 -0
  203. package/dist/publication/bindings/callable.d.ts.map +1 -0
  204. package/dist/publication/bindings/callable.js +32 -0
  205. package/dist/publication/bindings/callable.js.map +1 -0
  206. package/dist/publication/bindings/index.d.ts +4 -0
  207. package/dist/publication/bindings/index.d.ts.map +1 -0
  208. package/dist/publication/bindings/index.js +4 -0
  209. package/dist/publication/bindings/index.js.map +1 -0
  210. package/dist/publication/bindings/invocation.d.ts +6 -0
  211. package/dist/publication/bindings/invocation.d.ts.map +1 -0
  212. package/dist/publication/bindings/invocation.js +14 -0
  213. package/dist/publication/bindings/invocation.js.map +1 -0
  214. package/dist/publication/bindings/view.d.ts +8 -0
  215. package/dist/publication/bindings/view.d.ts.map +1 -0
  216. package/dist/publication/bindings/view.js +29 -0
  217. package/dist/publication/bindings/view.js.map +1 -0
  218. package/dist/publication/bundle.d.ts +16 -0
  219. package/dist/publication/bundle.d.ts.map +1 -0
  220. package/dist/publication/bundle.js +65 -0
  221. package/dist/publication/bundle.js.map +1 -0
  222. package/dist/publication/content.d.ts +11 -0
  223. package/dist/publication/content.d.ts.map +1 -0
  224. package/dist/publication/content.js +56 -0
  225. package/dist/publication/content.js.map +1 -0
  226. package/dist/publication/delivery/attestation.d.ts +7 -0
  227. package/dist/publication/delivery/attestation.d.ts.map +1 -0
  228. package/dist/publication/delivery/attestation.js +11 -0
  229. package/dist/publication/delivery/attestation.js.map +1 -0
  230. package/dist/publication/delivery/claims.d.ts +16 -0
  231. package/dist/publication/delivery/claims.d.ts.map +1 -0
  232. package/dist/publication/delivery/claims.js +62 -0
  233. package/dist/publication/delivery/claims.js.map +1 -0
  234. package/dist/publication/delivery/delivery.d.ts +10 -0
  235. package/dist/publication/delivery/delivery.d.ts.map +1 -0
  236. package/dist/publication/delivery/delivery.js +30 -0
  237. package/dist/publication/delivery/delivery.js.map +1 -0
  238. package/dist/publication/delivery/error.d.ts +8 -0
  239. package/dist/publication/delivery/error.d.ts.map +1 -0
  240. package/dist/publication/delivery/error.js +12 -0
  241. package/dist/publication/delivery/error.js.map +1 -0
  242. package/dist/publication/delivery/index.d.ts +7 -0
  243. package/dist/publication/delivery/index.d.ts.map +1 -0
  244. package/dist/publication/delivery/index.js +7 -0
  245. package/dist/publication/delivery/index.js.map +1 -0
  246. package/dist/publication/delivery/limits.d.ts +5 -0
  247. package/dist/publication/delivery/limits.d.ts.map +1 -0
  248. package/dist/publication/delivery/limits.js +5 -0
  249. package/dist/publication/delivery/limits.js.map +1 -0
  250. package/dist/publication/delivery/request.d.ts +16 -0
  251. package/dist/publication/delivery/request.d.ts.map +1 -0
  252. package/dist/publication/delivery/request.js +52 -0
  253. package/dist/publication/delivery/request.js.map +1 -0
  254. package/dist/publication/delivery-endpoint.d.ts +12 -0
  255. package/dist/publication/delivery-endpoint.d.ts.map +1 -0
  256. package/dist/publication/delivery-endpoint.js +23 -0
  257. package/dist/publication/delivery-endpoint.js.map +1 -0
  258. package/dist/publication/error.d.ts +8 -0
  259. package/dist/publication/error.d.ts.map +1 -0
  260. package/dist/publication/error.js +12 -0
  261. package/dist/publication/error.js.map +1 -0
  262. package/dist/publication/etag.d.ts +7 -0
  263. package/dist/publication/etag.d.ts.map +1 -0
  264. package/dist/publication/etag.js +80 -0
  265. package/dist/publication/etag.js.map +1 -0
  266. package/dist/publication/index.d.ts +14 -0
  267. package/dist/publication/index.d.ts.map +1 -0
  268. package/dist/publication/index.js +8 -0
  269. package/dist/publication/index.js.map +1 -0
  270. package/dist/publication/manifest.d.ts +7 -0
  271. package/dist/publication/manifest.d.ts.map +1 -0
  272. package/dist/publication/manifest.js +26 -0
  273. package/dist/publication/manifest.js.map +1 -0
  274. package/dist/publication/publication.d.ts +39 -0
  275. package/dist/publication/publication.d.ts.map +1 -0
  276. package/dist/publication/publication.js +190 -0
  277. package/dist/publication/publication.js.map +1 -0
  278. package/dist/publication/reference.d.ts +17 -0
  279. package/dist/publication/reference.d.ts.map +1 -0
  280. package/dist/publication/reference.js +68 -0
  281. package/dist/publication/reference.js.map +1 -0
  282. package/dist/publication/requirements.d.ts +26 -0
  283. package/dist/publication/requirements.d.ts.map +1 -0
  284. package/dist/publication/requirements.js +180 -0
  285. package/dist/publication/requirements.js.map +1 -0
  286. package/dist/publication/route.d.ts +33 -0
  287. package/dist/publication/route.d.ts.map +1 -0
  288. package/dist/publication/route.js +132 -0
  289. package/dist/publication/route.js.map +1 -0
  290. package/dist/publication/schema.d.ts +8 -0
  291. package/dist/publication/schema.d.ts.map +1 -0
  292. package/dist/publication/schema.js +16 -0
  293. package/dist/publication/schema.js.map +1 -0
  294. package/dist/routes/compile.d.ts +5 -0
  295. package/dist/routes/compile.d.ts.map +1 -0
  296. package/dist/routes/compile.js +69 -0
  297. package/dist/routes/compile.js.map +1 -0
  298. package/dist/routes/credential.d.ts +9 -0
  299. package/dist/routes/credential.d.ts.map +1 -0
  300. package/dist/routes/credential.js +119 -0
  301. package/dist/routes/credential.js.map +1 -0
  302. package/dist/routes/decode.d.ts +4 -0
  303. package/dist/routes/decode.d.ts.map +1 -0
  304. package/dist/routes/decode.js +147 -0
  305. package/dist/routes/decode.js.map +1 -0
  306. package/dist/routes/encode.d.ts +4 -0
  307. package/dist/routes/encode.d.ts.map +1 -0
  308. package/dist/routes/encode.js +147 -0
  309. package/dist/routes/encode.js.map +1 -0
  310. package/dist/routes/error-response.d.ts +6 -0
  311. package/dist/routes/error-response.d.ts.map +1 -0
  312. package/dist/routes/error-response.js +32 -0
  313. package/dist/routes/error-response.js.map +1 -0
  314. package/dist/routes/error.d.ts +9 -0
  315. package/dist/routes/error.d.ts.map +1 -0
  316. package/dist/routes/error.js +15 -0
  317. package/dist/routes/error.js.map +1 -0
  318. package/dist/routes/index.d.ts +13 -0
  319. package/dist/routes/index.d.ts.map +1 -0
  320. package/dist/routes/index.js +13 -0
  321. package/dist/routes/index.js.map +1 -0
  322. package/dist/routes/mapping.d.ts +6 -0
  323. package/dist/routes/mapping.d.ts.map +1 -0
  324. package/dist/routes/mapping.js +135 -0
  325. package/dist/routes/mapping.js.map +1 -0
  326. package/dist/routes/match.d.ts +5 -0
  327. package/dist/routes/match.d.ts.map +1 -0
  328. package/dist/routes/match.js +9 -0
  329. package/dist/routes/match.js.map +1 -0
  330. package/dist/routes/request.d.ts +27 -0
  331. package/dist/routes/request.d.ts.map +1 -0
  332. package/dist/routes/request.js +52 -0
  333. package/dist/routes/request.js.map +1 -0
  334. package/dist/routes/reservation.d.ts +4 -0
  335. package/dist/routes/reservation.d.ts.map +1 -0
  336. package/dist/routes/reservation.js +34 -0
  337. package/dist/routes/reservation.js.map +1 -0
  338. package/dist/routes/route.d.ts +13 -0
  339. package/dist/routes/route.d.ts.map +1 -0
  340. package/dist/routes/route.js +6 -0
  341. package/dist/routes/route.js.map +1 -0
  342. package/dist/routes/routing.d.ts +23 -0
  343. package/dist/routes/routing.d.ts.map +1 -0
  344. package/dist/routes/routing.js +88 -0
  345. package/dist/routes/routing.js.map +1 -0
  346. package/dist/routes/scalar.d.ts +7 -0
  347. package/dist/routes/scalar.d.ts.map +1 -0
  348. package/dist/routes/scalar.js +58 -0
  349. package/dist/routes/scalar.js.map +1 -0
  350. package/dist/routes/select.d.ts +4 -0
  351. package/dist/routes/select.d.ts.map +1 -0
  352. package/dist/routes/select.js +17 -0
  353. package/dist/routes/select.js.map +1 -0
  354. package/dist/routes/stream.d.ts +15 -0
  355. package/dist/routes/stream.d.ts.map +1 -0
  356. package/dist/routes/stream.js +51 -0
  357. package/dist/routes/stream.js.map +1 -0
  358. package/dist/routes/template.d.ts +9 -0
  359. package/dist/routes/template.d.ts.map +1 -0
  360. package/dist/routes/template.js +228 -0
  361. package/dist/routes/template.js.map +1 -0
  362. package/dist/runtime/artifact.d.ts +48 -0
  363. package/dist/runtime/artifact.d.ts.map +1 -0
  364. package/dist/runtime/artifact.js +177 -0
  365. package/dist/runtime/artifact.js.map +1 -0
  366. package/dist/runtime/index.d.ts +2 -0
  367. package/dist/runtime/index.d.ts.map +1 -0
  368. package/dist/runtime/index.js +2 -0
  369. package/dist/runtime/index.js.map +1 -0
  370. package/dist/schema/index.d.ts +2 -0
  371. package/dist/schema/index.d.ts.map +1 -0
  372. package/dist/schema/index.js +2 -0
  373. package/dist/schema/index.js.map +1 -0
  374. package/dist/schema/installation/index.d.ts +2 -0
  375. package/dist/schema/installation/index.d.ts.map +1 -0
  376. package/dist/schema/installation/index.js +2 -0
  377. package/dist/schema/installation/index.js.map +1 -0
  378. package/dist/schema/installation/introspection/codec.d.ts +6 -0
  379. package/dist/schema/installation/introspection/codec.d.ts.map +1 -0
  380. package/dist/schema/installation/introspection/codec.js +273 -0
  381. package/dist/schema/installation/introspection/codec.js.map +1 -0
  382. package/dist/schema/installation/introspection/index.d.ts +3 -0
  383. package/dist/schema/installation/introspection/index.d.ts.map +1 -0
  384. package/dist/schema/installation/introspection/index.js +2 -0
  385. package/dist/schema/installation/introspection/index.js.map +1 -0
  386. package/dist/schema/installation/introspection/result.d.ts +34 -0
  387. package/dist/schema/installation/introspection/result.d.ts.map +1 -0
  388. package/dist/schema/installation/introspection/result.js +2 -0
  389. package/dist/schema/installation/introspection/result.js.map +1 -0
  390. package/package.json +59 -0
@@ -0,0 +1,37 @@
1
+ import { accept as acceptValue, BoundaryError, } from '@astrale-os/kernel-dsl/value';
2
+ import { CODES } from './codes.js';
3
+ const CODES_SET = new Set(Object.values(CODES));
4
+ const FIELDS = new Set(['code', 'message', 'data']);
5
+ export function acceptPayload(input, label = 'error') {
6
+ let cloned;
7
+ try {
8
+ cloned = acceptValue(input);
9
+ }
10
+ catch (cause) {
11
+ if (cause instanceof BoundaryError) {
12
+ throw new TypeError(`${label} must be a portable value object`, { cause });
13
+ }
14
+ throw cause;
15
+ }
16
+ if (!isValueObject(cloned))
17
+ throw new TypeError(`${label} must be an object`);
18
+ for (const key of Object.keys(cloned)) {
19
+ if (!FIELDS.has(key)) {
20
+ throw new TypeError(`${label} contains unexpected field ${JSON.stringify(key)}`);
21
+ }
22
+ }
23
+ if (!Object.hasOwn(cloned, 'code') || !CODES_SET.has(cloned.code)) {
24
+ throw new TypeError(`${label}.code is not a public error code`);
25
+ }
26
+ if (typeof cloned.message !== 'string')
27
+ throw new TypeError(`${label}.message must be a string`);
28
+ return Object.freeze({
29
+ code: cloned.code,
30
+ message: cloned.message,
31
+ ...(cloned.data === undefined ? {} : { data: cloned.data }),
32
+ });
33
+ }
34
+ function isValueObject(value) {
35
+ return value !== null && typeof value === 'object' && !Array.isArray(value);
36
+ }
37
+ //# sourceMappingURL=payload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payload.js","sourceRoot":"","sources":["../../errors/payload.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,IAAI,WAAW,EACrB,aAAa,GAGd,MAAM,8BAA8B,CAAA;AAIrC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAQlC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAS,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;AACvD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAA;AAEnD,MAAM,UAAU,aAAa,CAAC,KAAc,EAAE,KAAK,GAAG,OAAO;IAC3D,IAAI,MAAa,CAAA;IACjB,IAAI,CAAC;QACH,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;IAC7B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,aAAa,EAAE,CAAC;YACnC,MAAM,IAAI,SAAS,CAAC,GAAG,KAAK,kCAAkC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;QAC5E,CAAC;QACD,MAAM,KAAK,CAAA;IACb,CAAC;IACD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;QAAE,MAAM,IAAI,SAAS,CAAC,GAAG,KAAK,oBAAoB,CAAC,CAAA;IAC7E,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACtC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,IAAI,SAAS,CAAC,GAAG,KAAK,8BAA8B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAClF,CAAC;IACH,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,IAAc,CAAC,EAAE,CAAC;QAC5E,MAAM,IAAI,SAAS,CAAC,GAAG,KAAK,kCAAkC,CAAC,CAAA;IACjE,CAAC;IACD,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ;QAAE,MAAM,IAAI,SAAS,CAAC,GAAG,KAAK,2BAA2B,CAAC,CAAA;IAEhG,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC,IAAiB;QAC9B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;KAC5D,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,KAAY;IACjC,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AAC7E,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { ErrorPayload } from './payload.js';
2
+ /** A locally raised failure whose payload is already safe for the public protocol. */
3
+ export declare class ProtocolError extends Error {
4
+ readonly payload: ErrorPayload;
5
+ constructor(payload: ErrorPayload);
6
+ }
7
+ //# sourceMappingURL=protocol-error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol-error.d.ts","sourceRoot":"","sources":["../../errors/protocol-error.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAEhD,sFAAsF;AACtF,qBAAa,aAAc,SAAQ,KAAK;IACtC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAA;IAE9B,YAAY,OAAO,EAAE,YAAY,EAIhC;CACF"}
@@ -0,0 +1,10 @@
1
+ /** A locally raised failure whose payload is already safe for the public protocol. */
2
+ export class ProtocolError extends Error {
3
+ payload;
4
+ constructor(payload) {
5
+ super(payload.message);
6
+ this.name = 'ProtocolError';
7
+ this.payload = payload;
8
+ }
9
+ }
10
+ //# sourceMappingURL=protocol-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol-error.js","sourceRoot":"","sources":["../../errors/protocol-error.ts"],"names":[],"mappings":"AAEA,sFAAsF;AACtF,MAAM,OAAO,aAAc,SAAQ,KAAK;IAC7B,OAAO,CAAc;IAE9B,YAAY,OAAqB;QAC/B,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QACtB,IAAI,CAAC,IAAI,GAAG,eAAe,CAAA;QAC3B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;CACF"}
@@ -0,0 +1,8 @@
1
+ import { type Object as ValueObject } from '@astrale-os/kernel-dsl/value';
2
+ export type ErrorReason<Code extends string = string, Details extends ValueObject = ValueObject> = ValueObject & {
3
+ readonly code: Code;
4
+ readonly details: Details;
5
+ };
6
+ export declare function acceptReason(input: unknown, label?: string): ErrorReason;
7
+ export declare function reasonOf(input: unknown): ErrorReason | undefined;
8
+ //# sourceMappingURL=reason.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reason.d.ts","sourceRoot":"","sources":["../../errors/reason.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,MAAM,IAAI,WAAW,EAE3B,MAAM,8BAA8B,CAAA;AAErC,MAAM,MAAM,WAAW,CACrB,IAAI,SAAS,MAAM,GAAG,MAAM,EAC5B,OAAO,SAAS,WAAW,GAAG,WAAW,IACvC,WAAW,GAAG;IAChB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;IACnB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;CAC1B,CAAA;AAID,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,SAAiB,GAAG,WAAW,CA0BhF;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,GAAG,SAAS,CAQhE"}
@@ -0,0 +1,44 @@
1
+ import { accept as acceptValue, BoundaryError, } from '@astrale-os/kernel-dsl/value';
2
+ const FIELDS = new Set(['code', 'details']);
3
+ export function acceptReason(input, label = 'error reason') {
4
+ let cloned;
5
+ try {
6
+ cloned = acceptValue(input);
7
+ }
8
+ catch (cause) {
9
+ if (cause instanceof BoundaryError) {
10
+ throw new TypeError(`${label} must be a portable value object`, { cause });
11
+ }
12
+ throw cause;
13
+ }
14
+ if (!isValueObject(cloned))
15
+ throw new TypeError(`${label} must be an object`);
16
+ if (Object.keys(cloned).length !== FIELDS.size ||
17
+ Object.keys(cloned).some((field) => !FIELDS.has(field))) {
18
+ throw new TypeError(`${label} must contain exactly code and details`);
19
+ }
20
+ if (typeof cloned.code !== 'string' ||
21
+ cloned.code.normalize('NFC') !== cloned.code ||
22
+ !/^[A-Z][A-Z0-9_]{0,127}$/u.test(cloned.code)) {
23
+ throw new TypeError(`${label}.code is invalid`);
24
+ }
25
+ if (!isValueObject(cloned.details))
26
+ throw new TypeError(`${label}.details must be an object`);
27
+ return Object.freeze({ code: cloned.code, details: Object.freeze(cloned.details) });
28
+ }
29
+ export function reasonOf(input) {
30
+ if (input === undefined)
31
+ return undefined;
32
+ try {
33
+ return acceptReason(input);
34
+ }
35
+ catch (cause) {
36
+ if (cause instanceof TypeError)
37
+ return undefined;
38
+ throw cause;
39
+ }
40
+ }
41
+ function isValueObject(value) {
42
+ return value !== null && typeof value === 'object' && !Array.isArray(value);
43
+ }
44
+ //# sourceMappingURL=reason.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reason.js","sourceRoot":"","sources":["../../errors/reason.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,IAAI,WAAW,EACrB,aAAa,GAGd,MAAM,8BAA8B,CAAA;AAUrC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAA;AAE3C,MAAM,UAAU,YAAY,CAAC,KAAc,EAAE,KAAK,GAAG,cAAc;IACjE,IAAI,MAAa,CAAA;IACjB,IAAI,CAAC;QACH,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;IAC7B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,aAAa,EAAE,CAAC;YACnC,MAAM,IAAI,SAAS,CAAC,GAAG,KAAK,kCAAkC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;QAC5E,CAAC;QACD,MAAM,KAAK,CAAA;IACb,CAAC;IACD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;QAAE,MAAM,IAAI,SAAS,CAAC,GAAG,KAAK,oBAAoB,CAAC,CAAA;IAC7E,IACE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI;QAC1C,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EACvD,CAAC;QACD,MAAM,IAAI,SAAS,CAAC,GAAG,KAAK,wCAAwC,CAAC,CAAA;IACvE,CAAC;IACD,IACE,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ;QAC/B,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,IAAI;QAC5C,CAAC,0BAA0B,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAC7C,CAAC;QACD,MAAM,IAAI,SAAS,CAAC,GAAG,KAAK,kBAAkB,CAAC,CAAA;IACjD,CAAC;IACD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC;QAAE,MAAM,IAAI,SAAS,CAAC,GAAG,KAAK,4BAA4B,CAAC,CAAA;IAC7F,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;AACrF,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IACzC,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,KAAK,CAAC,CAAA;IAC5B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,SAAS;YAAE,OAAO,SAAS,CAAA;QAChD,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,KAAY;IACjC,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AAC7E,CAAC"}
@@ -0,0 +1,9 @@
1
+ export * as artifact from './artifact/index.js';
2
+ export * as invocation from './invocation/index.js';
3
+ export * as codecs from './codecs/index.js';
4
+ export * as errors from './errors/index.js';
5
+ export * as publication from './publication/index.js';
6
+ export * as schema from './schema/index.js';
7
+ export * as routes from './routes/index.js';
8
+ export * as issuer from './issuer/index.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAA;AAC/C,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAA;AACnD,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,WAAW,MAAM,wBAAwB,CAAA;AACrD,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,9 @@
1
+ export * as artifact from './artifact/index.js';
2
+ export * as invocation from './invocation/index.js';
3
+ export * as codecs from './codecs/index.js';
4
+ export * as errors from './errors/index.js';
5
+ export * as publication from './publication/index.js';
6
+ export * as schema from './schema/index.js';
7
+ export * as routes from './routes/index.js';
8
+ export * as issuer from './issuer/index.js';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAA;AAC/C,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAA;AACnD,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,WAAW,MAAM,wBAAwB,CAAA;AACrD,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA"}
@@ -0,0 +1,22 @@
1
+ import { type IssuerId } from '@astrale-os/kernel-core/auth';
2
+ import { NodePath } from '@astrale-os/kernel-core/path';
3
+ import { Key } from '@astrale-os/kernel-dsl/v1';
4
+ import { type Object as ValueObject } from '@astrale-os/kernel-dsl/value';
5
+ import type { ErrorPayload } from '../errors/index.js';
6
+ import type { Etag } from '../publication/index.js';
7
+ import { type RequestId } from './correlation.js';
8
+ export declare function portableObject(input: unknown, label: string): ValueObject;
9
+ export declare function exactDataObject(input: unknown, label: string): Record<string, unknown>;
10
+ export declare function exactFields(object: Record<string, unknown>, allowed: ReadonlySet<string>, label: string): void;
11
+ export declare function required(object: Record<string, unknown>, fields: readonly string[], label: string): void;
12
+ export declare function requestId(input: unknown, label: string): RequestId;
13
+ export declare function nodePath(input: unknown, label: string): NodePath;
14
+ export declare function issuerId(input: unknown, label: string): IssuerId;
15
+ export declare function string(input: unknown, label: string): string;
16
+ export declare function count(input: unknown, label: string): number;
17
+ export declare function digest(input: unknown, label: string): Etag;
18
+ export declare function callableKey(input: unknown, label: string): Key.Callable;
19
+ export declare function errorPayload(input: unknown, label: string): ErrorPayload;
20
+ export declare function acceptHeaders(input: unknown): Readonly<Record<string, string>>;
21
+ export declare function invalid(message: string): never;
22
+ //# sourceMappingURL=admission.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admission.d.ts","sourceRoot":"","sources":["../../invocation/admission.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AACpF,OAAO,EAAE,QAAQ,EAAa,MAAM,8BAA8B,CAAA;AAClE,OAAO,EAAE,GAAG,EAAO,MAAM,2BAA2B,CAAA;AACpD,OAAO,EAGL,KAAK,MAAM,IAAI,WAAW,EAE3B,MAAM,8BAA8B,CAAA;AAErC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAA;AAGnD,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAElE,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAYzE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAkBtF;AAED,wBAAgB,WAAW,CACzB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,EAC5B,KAAK,EAAE,MAAM,GACZ,IAAI,CAIN;AAED,wBAAgB,QAAQ,CACtB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,KAAK,EAAE,MAAM,GACZ,IAAI,CAIN;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,CAOlE;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,CAQhE;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,CAShE;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAG5D;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAK3D;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAI1D;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,GAAG,CAAC,QAAQ,CAavE;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,YAAY,CAOxE;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAqB9E;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAE9C"}
@@ -0,0 +1,169 @@
1
+ import { AuthValueError, issuer } from '@astrale-os/kernel-core/auth';
2
+ import { NodePath, PathError } from '@astrale-os/kernel-core/path';
3
+ import { Key, Ref } from '@astrale-os/kernel-dsl/v1';
4
+ import { accept as acceptValue, BoundaryError, } from '@astrale-os/kernel-dsl/value';
5
+ import { CODES, acceptPayload, ProtocolError } from '../errors/index.js';
6
+ import { acceptRequestId } from './correlation.js';
7
+ export function portableObject(input, label) {
8
+ let cloned;
9
+ try {
10
+ cloned = acceptValue(input);
11
+ }
12
+ catch (cause) {
13
+ if (cause instanceof BoundaryError) {
14
+ return invalid(`${label} must be a portable value object`);
15
+ }
16
+ throw cause;
17
+ }
18
+ if (!isValueObject(cloned))
19
+ invalid(`${label} must be an object`);
20
+ return cloned;
21
+ }
22
+ export function exactDataObject(input, label) {
23
+ if (input === null || typeof input !== 'object' || Array.isArray(input)) {
24
+ invalid(`${label} must be an object`);
25
+ }
26
+ const prototype = Object.getPrototypeOf(input);
27
+ if (prototype !== Object.prototype && prototype !== null) {
28
+ invalid(`${label} must be a plain object`);
29
+ }
30
+ const output = {};
31
+ for (const key of Reflect.ownKeys(input)) {
32
+ if (typeof key !== 'string')
33
+ invalid(`${label} cannot contain symbol fields`);
34
+ const descriptor = Object.getOwnPropertyDescriptor(input, key);
35
+ if (descriptor === undefined || !descriptor.enumerable || !('value' in descriptor)) {
36
+ invalid(`${label}.${key} must be an enumerable data field`);
37
+ }
38
+ output[key] = descriptor.value;
39
+ }
40
+ return output;
41
+ }
42
+ export function exactFields(object, allowed, label) {
43
+ for (const key of Object.keys(object)) {
44
+ if (!allowed.has(key))
45
+ invalid(`${label} contains unexpected field ${JSON.stringify(key)}`);
46
+ }
47
+ }
48
+ export function required(object, fields, label) {
49
+ for (const field of fields) {
50
+ if (!Object.hasOwn(object, field))
51
+ invalid(`${label}.${field} is required`);
52
+ }
53
+ }
54
+ export function requestId(input, label) {
55
+ try {
56
+ return acceptRequestId(input, label);
57
+ }
58
+ catch (cause) {
59
+ if (cause instanceof TypeError)
60
+ return invalid(cause.message);
61
+ throw cause;
62
+ }
63
+ }
64
+ export function nodePath(input, label) {
65
+ if (typeof input !== 'string')
66
+ invalid(`${label} must be a NodePath string`);
67
+ try {
68
+ return NodePath(input);
69
+ }
70
+ catch (cause) {
71
+ if (cause instanceof PathError)
72
+ return invalid(`${label} must be a valid NodePath`);
73
+ throw cause;
74
+ }
75
+ }
76
+ export function issuerId(input, label) {
77
+ if (typeof input !== 'string')
78
+ invalid(`${label} must be an issuer identifier`);
79
+ try {
80
+ return issuer.accept(input);
81
+ }
82
+ catch (cause) {
83
+ if (cause instanceof AuthValueError)
84
+ return invalid(`${label} must be a valid issuer identifier`);
85
+ throw cause;
86
+ }
87
+ }
88
+ export function string(input, label) {
89
+ if (typeof input !== 'string')
90
+ invalid(`${label} must be a string`);
91
+ return input;
92
+ }
93
+ export function count(input, label) {
94
+ if (!Number.isSafeInteger(input) || input < 0) {
95
+ invalid(`${label} must be a non-negative safe integer`);
96
+ }
97
+ return input;
98
+ }
99
+ export function digest(input, label) {
100
+ const value = string(input, label);
101
+ if (!/^sha256:[0-9a-f]{64}$/u.test(value))
102
+ invalid(`${label} must be a SHA-256 digest`);
103
+ return value;
104
+ }
105
+ export function callableKey(input, label) {
106
+ if (typeof input !== 'string')
107
+ invalid(`${label} must be a callable Key string`);
108
+ try {
109
+ const callable = Key(input);
110
+ const reference = Key.ref(callable);
111
+ if (!reference.startsWith('function.') && !Ref.isMethod(reference)) {
112
+ invalid(`${label} must name a Function or Method`);
113
+ }
114
+ return callable;
115
+ }
116
+ catch (cause) {
117
+ if (cause instanceof TypeError)
118
+ return invalid(`${label} must be a valid callable Key`);
119
+ throw cause;
120
+ }
121
+ }
122
+ export function errorPayload(input, label) {
123
+ try {
124
+ return acceptPayload(input, label);
125
+ }
126
+ catch (cause) {
127
+ if (cause instanceof TypeError)
128
+ return invalid(cause.message);
129
+ throw cause;
130
+ }
131
+ }
132
+ export function acceptHeaders(input) {
133
+ const object = exactDataObject(input, 'binary response.headers');
134
+ const headers = {};
135
+ for (const [name, rawValue] of Object.entries(object)) {
136
+ if (!HEADER_NAME.test(name)) {
137
+ invalid(`binary response header name ${JSON.stringify(name)} is invalid`);
138
+ }
139
+ const value = string(rawValue, `binary response.headers.${name}`);
140
+ if (hasControlCharacter(value)) {
141
+ invalid(`binary response header ${JSON.stringify(name)} contains a control character`);
142
+ }
143
+ const lower = name.toLowerCase();
144
+ if (Object.hasOwn(headers, lower)) {
145
+ invalid(`binary response header ${JSON.stringify(name)} occurs more than once`);
146
+ }
147
+ if (lower === 'content-length' || lower === 'transfer-encoding' || lower === 'connection') {
148
+ invalid(`binary response header ${JSON.stringify(name)} is transport-reserved`);
149
+ }
150
+ headers[lower] = value;
151
+ }
152
+ return Object.freeze(headers);
153
+ }
154
+ export function invalid(message) {
155
+ throw new ProtocolError({ code: CODES.INVALID_REQUEST, message });
156
+ }
157
+ function isValueObject(value) {
158
+ return value !== null && typeof value === 'object' && !Array.isArray(value);
159
+ }
160
+ const HEADER_NAME = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/u;
161
+ function hasControlCharacter(input) {
162
+ for (let index = 0; index < input.length; index += 1) {
163
+ const code = input.charCodeAt(index);
164
+ if (code <= 0x1f || code === 0x7f)
165
+ return true;
166
+ }
167
+ return false;
168
+ }
169
+ //# sourceMappingURL=admission.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admission.js","sourceRoot":"","sources":["../../invocation/admission.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { RequestId } from './correlation.js';
2
+ export interface BinaryResponse {
3
+ readonly kind: 'binary';
4
+ readonly id: RequestId;
5
+ readonly body: Uint8Array;
6
+ readonly mediaType: string;
7
+ readonly headers?: Readonly<Record<string, string>>;
8
+ }
9
+ export declare function decodeBinaryResponse(input: unknown): BinaryResponse;
10
+ //# sourceMappingURL=binary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binary.d.ts","sourceRoot":"","sources":["../../invocation/binary.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAYjD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;IACvB,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAA;IACtB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CACpD;AAKD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,CAkBnE"}
@@ -0,0 +1,24 @@
1
+ import { acceptHeaders, exactDataObject, exactFields, invalid, requestId, required, string, } from './admission.js';
2
+ const FIELDS = new Set(['kind', 'id', 'body', 'mediaType', 'headers']);
3
+ const MEDIA_TYPE = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/u;
4
+ export function decodeBinaryResponse(input) {
5
+ const object = exactDataObject(input, 'binary response');
6
+ exactFields(object, FIELDS, 'binary response');
7
+ required(object, ['kind', 'id', 'body', 'mediaType'], 'binary response');
8
+ if (object.kind !== 'binary')
9
+ invalid('binary response.kind must be "binary"');
10
+ if (!(object.body instanceof Uint8Array))
11
+ invalid('binary response.body must be a Uint8Array');
12
+ const mediaType = string(object.mediaType, 'binary response.mediaType');
13
+ if (!MEDIA_TYPE.test(mediaType))
14
+ invalid('binary response.mediaType is invalid');
15
+ const headers = object.headers === undefined ? undefined : acceptHeaders(object.headers);
16
+ return Object.freeze({
17
+ kind: 'binary',
18
+ id: requestId(object.id, 'binary response.id'),
19
+ body: new Uint8Array(object.body),
20
+ mediaType,
21
+ ...(headers === undefined ? {} : { headers }),
22
+ });
23
+ }
24
+ //# sourceMappingURL=binary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binary.js","sourceRoot":"","sources":["../../invocation/binary.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,aAAa,EACb,eAAe,EACf,WAAW,EACX,OAAO,EACP,SAAS,EACT,QAAQ,EACR,MAAM,GACP,MAAM,gBAAgB,CAAA;AAUvB,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC,CAAA;AACtE,MAAM,UAAU,GAAG,6DAA6D,CAAA;AAEhF,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAA;IACxD,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAA;IAC9C,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,iBAAiB,CAAC,CAAA;IACxE,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,CAAC,uCAAuC,CAAC,CAAA;IAC9E,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,YAAY,UAAU,CAAC;QAAE,OAAO,CAAC,2CAA2C,CAAC,CAAA;IAE9F,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,2BAA2B,CAAC,CAAA;IACvE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;QAAE,OAAO,CAAC,sCAAsC,CAAC,CAAA;IAChF,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAExF,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,QAAQ;QACd,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,oBAAoB,CAAC;QAC9C,IAAI,EAAE,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC;QACjC,SAAS;QACT,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;KAC9C,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { Codec } from '../codecs/codec.js';
2
+ export type CodecProfile = 'json' | 'msgpack';
3
+ export interface SupportedCodec {
4
+ readonly codec: Codec;
5
+ readonly profile: CodecProfile;
6
+ }
7
+ export declare function codecProfile(codec: Codec): CodecProfile | undefined;
8
+ export declare function admitSupportedCodecs(supported: readonly Codec[]): readonly SupportedCodec[];
9
+ //# sourceMappingURL=binding-codecs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binding-codecs.d.ts","sourceRoot":"","sources":["../../invocation/binding-codecs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAK/C,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,SAAS,CAAA;AAE7C,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;IACrB,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAA;CAC/B;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,YAAY,GAAG,SAAS,CAInE;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,SAAS,KAAK,EAAE,GAAG,SAAS,cAAc,EAAE,CAc3F"}
@@ -0,0 +1,28 @@
1
+ import { json } from '../codecs/json.js';
2
+ import { isMsgpackCodec } from '../codecs/msgpack.js';
3
+ export function codecProfile(codec) {
4
+ if (codec === json)
5
+ return 'json';
6
+ if (isMsgpackCodec(codec))
7
+ return 'msgpack';
8
+ return undefined;
9
+ }
10
+ export function admitSupportedCodecs(supported) {
11
+ if (!Array.isArray(supported))
12
+ throw new TypeError('supported codecs must be an array.');
13
+ const admitted = [];
14
+ const profiles = new Set();
15
+ for (const codec of supported) {
16
+ const profile = codecProfile(codec);
17
+ if (profile === undefined)
18
+ throw new TypeError('supported contains a foreign codec.');
19
+ if (profiles.has(profile))
20
+ throw new TypeError(`supported contains duplicate ${profile}.`);
21
+ profiles.add(profile);
22
+ admitted.push(Object.freeze({ codec, profile }));
23
+ }
24
+ if (!profiles.has('json'))
25
+ throw new TypeError('supported must contain the canonical JSON codec.');
26
+ return Object.freeze(admitted);
27
+ }
28
+ //# sourceMappingURL=binding-codecs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binding-codecs.js","sourceRoot":"","sources":["../../invocation/binding-codecs.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AASrD,MAAM,UAAU,YAAY,CAAC,KAAY;IACvC,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,MAAM,CAAA;IACjC,IAAI,cAAc,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IAC3C,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,SAA2B;IAC9D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;QAAE,MAAM,IAAI,SAAS,CAAC,oCAAoC,CAAC,CAAA;IAExF,MAAM,QAAQ,GAAqB,EAAE,CAAA;IACrC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAgB,CAAA;IACxC,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA;QACnC,IAAI,OAAO,KAAK,SAAS;YAAE,MAAM,IAAI,SAAS,CAAC,qCAAqC,CAAC,CAAA;QACrF,IAAI,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,MAAM,IAAI,SAAS,CAAC,gCAAgC,OAAO,GAAG,CAAC,CAAA;QAC1F,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QACrB,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAA;IAClD,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;QAAE,MAAM,IAAI,SAAS,CAAC,kDAAkD,CAAC,CAAA;IAClG,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;AAChC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { RequestId } from './correlation.js';
2
+ import type { Version } from './version.js';
3
+ export interface CancelRequest {
4
+ readonly version: Version;
5
+ readonly kind: 'cancel';
6
+ readonly id: RequestId;
7
+ }
8
+ export declare function decodeCancelRequest(input: unknown): CancelRequest;
9
+ //# sourceMappingURL=cancellation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cancellation.d.ts","sourceRoot":"","sources":["../../invocation/cancellation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAI3C,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;IACvB,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAA;CACvB;AAID,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,CAWjE"}
@@ -0,0 +1,17 @@
1
+ import { exactFields, invalid, portableObject, requestId, required } from './admission.js';
2
+ const FIELDS = new Set(['version', 'kind', 'id']);
3
+ export function decodeCancelRequest(input) {
4
+ const object = portableObject(input, 'cancel request');
5
+ exactFields(object, FIELDS, 'cancel request');
6
+ required(object, ['version', 'kind', 'id'], 'cancel request');
7
+ if (object.version !== 2)
8
+ invalid('cancel request.version must be 2');
9
+ if (object.kind !== 'cancel')
10
+ invalid('cancel request.kind must be "cancel"');
11
+ return Object.freeze({
12
+ version: 2,
13
+ kind: 'cancel',
14
+ id: requestId(object.id, 'cancel request.id'),
15
+ });
16
+ }
17
+ //# sourceMappingURL=cancellation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cancellation.js","sourceRoot":"","sources":["../../invocation/cancellation.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAQ1F,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAA;AAEjD,MAAM,UAAU,mBAAmB,CAAC,KAAc;IAChD,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAA;IACtD,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAA;IAC7C,QAAQ,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,gBAAgB,CAAC,CAAA;IAC7D,IAAI,MAAM,CAAC,OAAO,KAAK,CAAC;QAAE,OAAO,CAAC,kCAAkC,CAAC,CAAA;IACrE,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,CAAC,sCAAsC,CAAC,CAAA;IAC7E,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,OAAO,EAAE,CAAC;QACV,IAAI,EAAE,QAAQ;QACd,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,mBAAmB,CAAC;KAC9C,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ export type RequestId = string | number | null;
2
+ export declare function acceptRequestId(input: unknown, label: string): RequestId;
3
+ //# sourceMappingURL=correlation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"correlation.d.ts","sourceRoot":"","sources":["../../invocation/correlation.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;AAE9C,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,CAIxE"}
@@ -0,0 +1,8 @@
1
+ export function acceptRequestId(input, label) {
2
+ if (input === null || typeof input === 'string')
3
+ return input;
4
+ if (typeof input === 'number' && Number.isFinite(input) && !Object.is(input, -0))
5
+ return input;
6
+ throw new TypeError(`${label} must be a string, finite number, or null`);
7
+ }
8
+ //# sourceMappingURL=correlation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"correlation.js","sourceRoot":"","sources":["../../invocation/correlation.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,eAAe,CAAC,KAAc,EAAE,KAAa;IAC3D,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAC7D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAA;IAC9F,MAAM,IAAI,SAAS,CAAC,GAAG,KAAK,2CAA2C,CAAC,CAAA;AAC1E,CAAC"}
@@ -0,0 +1,25 @@
1
+ export declare namespace Delegate {
2
+ type Expr = {
3
+ readonly kind: 'identity';
4
+ readonly self: true;
5
+ } | {
6
+ readonly kind: 'identity';
7
+ readonly credential: string;
8
+ } | {
9
+ readonly kind: 'union';
10
+ readonly operands: readonly Expr[];
11
+ } | {
12
+ readonly kind: 'intersect';
13
+ readonly operands: readonly Expr[];
14
+ } | {
15
+ readonly kind: 'exclude';
16
+ readonly base: Expr;
17
+ readonly excluded: readonly Expr[];
18
+ };
19
+ }
20
+ export interface Delegate {
21
+ readonly ttlSeconds: number;
22
+ readonly attenuation?: Delegate.Expr;
23
+ }
24
+ export declare function acceptDelegate(input: unknown): Delegate;
25
+ //# sourceMappingURL=delegate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delegate.d.ts","sourceRoot":"","sources":["../../invocation/delegate.ts"],"names":[],"mappings":"AAIA,yBAAiB,QAAQ,CAAC;IACxB,KAAY,IAAI,GACZ;QAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;KAAE,GAClD;QAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;QAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAC1D;QAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,IAAI,EAAE,CAAA;KAAE,GAC9D;QAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;QAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,IAAI,EAAE,CAAA;KAAE,GAClE;QAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;QAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,IAAI,EAAE,CAAA;KAAE,CAAA;CAC1F;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAA;CACrC;AAID,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,CAuBvD"}
@@ -0,0 +1,44 @@
1
+ import { AuthValueError, grant } from '@astrale-os/kernel-core/auth';
2
+ import { exactDataObject, exactFields, invalid, required } from './admission.js';
3
+ const FIELDS = new Set(['ttlSeconds', 'attenuation']);
4
+ export function acceptDelegate(input) {
5
+ const object = exactDataObject(input, 'delegate');
6
+ exactFields(object, FIELDS, 'delegate');
7
+ required(object, ['ttlSeconds'], 'delegate');
8
+ if (!Number.isSafeInteger(object.ttlSeconds) || object.ttlSeconds < 1) {
9
+ invalid('delegate.ttlSeconds must be a positive safe integer');
10
+ }
11
+ let attenuation;
12
+ if (object.attenuation !== undefined) {
13
+ try {
14
+ attenuation = grant.acceptUnresolved({ v: 1, expr: object.attenuation }).expr;
15
+ }
16
+ catch (cause) {
17
+ if (cause instanceof AuthValueError)
18
+ invalid('delegate.attenuation must be a valid expression');
19
+ throw cause;
20
+ }
21
+ requireTextCredentials(attenuation);
22
+ }
23
+ return Object.freeze({
24
+ ttlSeconds: object.ttlSeconds,
25
+ ...(attenuation === undefined ? {} : { attenuation: attenuation }),
26
+ });
27
+ }
28
+ function requireTextCredentials(input) {
29
+ if (input.kind === 'identity') {
30
+ if ('credential' in input && typeof input.credential !== 'string') {
31
+ invalid('delegate.attenuation credentials must be non-empty text');
32
+ }
33
+ return;
34
+ }
35
+ if (input.kind === 'exclude') {
36
+ requireTextCredentials(input.base);
37
+ for (const operand of input.excluded)
38
+ requireTextCredentials(operand);
39
+ return;
40
+ }
41
+ for (const operand of input.operands)
42
+ requireTextCredentials(operand);
43
+ }
44
+ //# sourceMappingURL=delegate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delegate.js","sourceRoot":"","sources":["../../invocation/delegate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,KAAK,EAA+B,MAAM,8BAA8B,CAAA;AAEjG,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAgBhF,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,CAAA;AAErD,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;IACjD,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,CAAA;IACvC,QAAQ,CAAC,MAAM,EAAE,CAAC,YAAY,CAAC,EAAE,UAAU,CAAC,CAAA;IAC5C,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,IAAK,MAAM,CAAC,UAAqB,GAAG,CAAC,EAAE,CAAC;QAClF,OAAO,CAAC,qDAAqD,CAAC,CAAA;IAChE,CAAC;IAED,IAAI,WAA+C,CAAA;IACnD,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACrC,IAAI,CAAC;YACH,WAAW,GAAG,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAA;QAC/E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,cAAc;gBACjC,OAAO,CAAC,iDAAiD,CAAC,CAAA;YAC5D,MAAM,KAAK,CAAA;QACb,CAAC;QACD,sBAAsB,CAAC,WAAW,CAAC,CAAA;IACrC,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC,UAAoB;QACvC,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,WAA4B,EAAE,CAAC;KACpF,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,sBAAsB,CAAC,KAA6B;IAC3D,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC9B,IAAI,YAAY,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;YAClE,OAAO,CAAC,yDAAyD,CAAC,CAAA;QACpE,CAAC;QACD,OAAM;IACR,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC7B,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAClC,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,QAAQ;YAAE,sBAAsB,CAAC,OAAO,CAAC,CAAA;QACrE,OAAM;IACR,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,QAAQ;QAAE,sBAAsB,CAAC,OAAO,CAAC,CAAA;AACvE,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare const BINARY_HEADERS_FIELD: 'x-astrale-binary-headers';
2
+ export declare const REQUEST_ID_FIELD: 'x-astrale-request-id';
3
+ export declare function isApplicationBinaryHeader(name: string): boolean;
4
+ export declare function encodeBinaryHeaderNames(headers: Readonly<Record<string, string>> | undefined): string;
5
+ export declare function decodeBinaryHeaderNames(input: string | null): readonly string[];
6
+ //# sourceMappingURL=binary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binary.d.ts","sourceRoot":"","sources":["../../../invocation/http/binary.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,oBAAoB,EAAG,0BAAmC,CAAA;AACvE,eAAO,MAAM,gBAAgB,EAAG,sBAA+B,CAAA;AAoC/D,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAQ/D;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,GACpD,MAAM,CAcR;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,MAAM,EAAE,CAgB/E"}