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

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 (426) hide show
  1. package/CHANGELOG.md +476 -0
  2. package/dist/artifact/index.d.ts +0 -1
  3. package/dist/artifact/index.js +0 -1
  4. package/dist/artifact/ref.d.ts +0 -1
  5. package/dist/artifact/ref.js +0 -1
  6. package/dist/codecs/codec.d.ts +0 -1
  7. package/dist/codecs/codec.js +0 -1
  8. package/dist/codecs/index.d.ts +0 -1
  9. package/dist/codecs/index.js +0 -1
  10. package/dist/codecs/json.d.ts +0 -1
  11. package/dist/codecs/json.js +0 -1
  12. package/dist/codecs/media-types.d.ts +0 -1
  13. package/dist/codecs/media-types.js +0 -1
  14. package/dist/codecs/msgpack.d.ts +0 -1
  15. package/dist/codecs/msgpack.js +1 -5
  16. package/dist/errors/codes.d.ts +0 -1
  17. package/dist/errors/codes.js +0 -1
  18. package/dist/errors/http-status.d.ts +0 -1
  19. package/dist/errors/http-status.js +0 -1
  20. package/dist/errors/index.d.ts +0 -1
  21. package/dist/errors/index.js +0 -1
  22. package/dist/errors/payload.d.ts +0 -1
  23. package/dist/errors/payload.js +3 -3
  24. package/dist/errors/protocol-error.d.ts +0 -1
  25. package/dist/errors/protocol-error.js +4 -3
  26. package/dist/errors/reason.d.ts +0 -1
  27. package/dist/errors/reason.js +0 -1
  28. package/dist/index.d.ts +0 -1
  29. package/dist/index.js +0 -1
  30. package/dist/invocation/admission.d.ts +4 -3
  31. package/dist/invocation/admission.js +16 -8
  32. package/dist/invocation/binary.d.ts +4 -2
  33. package/dist/invocation/binary.js +18 -5
  34. package/dist/invocation/binding-codecs.d.ts +0 -1
  35. package/dist/invocation/binding-codecs.js +0 -1
  36. package/dist/invocation/cancellation.d.ts +1 -2
  37. package/dist/invocation/cancellation.js +3 -4
  38. package/dist/invocation/correlation.d.ts +0 -1
  39. package/dist/invocation/correlation.js +0 -1
  40. package/dist/invocation/delegate.d.ts +0 -1
  41. package/dist/invocation/delegate.js +0 -1
  42. package/dist/invocation/http/binary.d.ts +9 -1
  43. package/dist/invocation/http/binary.js +49 -3
  44. package/dist/invocation/http/index.d.ts +1 -2
  45. package/dist/invocation/http/index.js +1 -2
  46. package/dist/invocation/http/negotiation.d.ts +0 -1
  47. package/dist/invocation/http/negotiation.js +0 -1
  48. package/dist/invocation/http/stream.d.ts +0 -1
  49. package/dist/invocation/http/stream.js +0 -1
  50. package/dist/invocation/http/trace.d.ts +0 -1
  51. package/dist/invocation/http/trace.js +0 -1
  52. package/dist/invocation/idempotency.d.ts +0 -1
  53. package/dist/invocation/idempotency.js +0 -1
  54. package/dist/invocation/identity.d.ts +16 -0
  55. package/dist/invocation/identity.js +55 -0
  56. package/dist/invocation/index.d.ts +4 -4
  57. package/dist/invocation/index.js +3 -3
  58. package/dist/invocation/miss.d.ts +4 -3
  59. package/dist/invocation/miss.js +10 -7
  60. package/dist/invocation/redirect.d.ts +19 -12
  61. package/dist/invocation/redirect.js +30 -17
  62. package/dist/invocation/request.d.ts +1 -2
  63. package/dist/invocation/request.js +3 -4
  64. package/dist/invocation/response.d.ts +9 -7
  65. package/dist/invocation/response.js +14 -10
  66. package/dist/invocation/routing.d.ts +3 -3
  67. package/dist/invocation/routing.js +4 -4
  68. package/dist/invocation/schema.d.ts +2 -3
  69. package/dist/invocation/schema.js +2 -3
  70. package/dist/invocation/service-reason.d.ts +13 -13
  71. package/dist/invocation/service-reason.js +14 -14
  72. package/dist/invocation/stale-route.d.ts +4 -3
  73. package/dist/invocation/stale-route.js +7 -7
  74. package/dist/invocation/stream.d.ts +6 -5
  75. package/dist/invocation/stream.js +17 -14
  76. package/dist/invocation/target.d.ts +2 -8
  77. package/dist/invocation/target.js +0 -1
  78. package/dist/invocation/trace.d.ts +0 -1
  79. package/dist/invocation/trace.js +0 -1
  80. package/dist/invocation/version.d.ts +0 -1
  81. package/dist/invocation/version.js +0 -1
  82. package/dist/invocation/websocket/binary.d.ts +0 -1
  83. package/dist/invocation/websocket/binary.js +4 -3
  84. package/dist/invocation/websocket/index.d.ts +0 -1
  85. package/dist/invocation/websocket/index.js +0 -1
  86. package/dist/invocation/websocket/subprotocol.d.ts +0 -1
  87. package/dist/invocation/websocket/subprotocol.js +0 -1
  88. package/dist/issuer/configuration.d.ts +1 -2
  89. package/dist/issuer/configuration.js +0 -1
  90. package/dist/issuer/error.d.ts +0 -1
  91. package/dist/issuer/error.js +0 -1
  92. package/dist/issuer/exchange.d.ts +0 -1
  93. package/dist/issuer/exchange.js +0 -1
  94. package/dist/issuer/hosted.d.ts +1 -2
  95. package/dist/issuer/hosted.js +0 -1
  96. package/dist/issuer/index.d.ts +0 -1
  97. package/dist/issuer/index.js +0 -1
  98. package/dist/issuer/key-set.d.ts +1 -2
  99. package/dist/issuer/key-set.js +3 -3
  100. package/dist/issuer/paths.d.ts +0 -1
  101. package/dist/issuer/paths.js +0 -1
  102. package/dist/issuer/url.d.ts +1 -2
  103. package/dist/issuer/url.js +3 -3
  104. package/dist/publication/bindings/callable.d.ts +1 -2
  105. package/dist/publication/bindings/callable.js +8 -6
  106. package/dist/publication/bindings/index.d.ts +0 -1
  107. package/dist/publication/bindings/index.js +0 -1
  108. package/dist/publication/bindings/invocation.d.ts +0 -1
  109. package/dist/publication/bindings/invocation.js +0 -1
  110. package/dist/publication/bindings/view.d.ts +1 -2
  111. package/dist/publication/bindings/view.js +2 -3
  112. package/dist/publication/bundle-admission.d.ts +4 -0
  113. package/dist/publication/bundle-admission.js +65 -0
  114. package/dist/publication/bundle-descriptor.d.ts +9 -0
  115. package/dist/publication/bundle-descriptor.js +19 -0
  116. package/dist/publication/bundle-evidence.d.ts +3 -0
  117. package/dist/publication/bundle-evidence.js +13 -0
  118. package/dist/publication/bundle.d.ts +5 -12
  119. package/dist/publication/bundle.js +8 -29
  120. package/dist/publication/content.d.ts +0 -1
  121. package/dist/publication/content.js +0 -1
  122. package/dist/publication/declaration.d.ts +11 -0
  123. package/dist/publication/declaration.js +1 -0
  124. package/dist/publication/delivery/attestation.d.ts +0 -1
  125. package/dist/publication/delivery/attestation.js +0 -1
  126. package/dist/publication/delivery/claims.d.ts +8 -8
  127. package/dist/publication/delivery/claims.js +6 -7
  128. package/dist/publication/delivery/delivery.d.ts +1 -2
  129. package/dist/publication/delivery/delivery.js +1 -2
  130. package/dist/publication/delivery/error.d.ts +0 -1
  131. package/dist/publication/delivery/error.js +0 -1
  132. package/dist/publication/delivery/index.d.ts +0 -1
  133. package/dist/publication/delivery/index.js +0 -1
  134. package/dist/publication/delivery/limits.d.ts +0 -1
  135. package/dist/publication/delivery/limits.js +0 -1
  136. package/dist/publication/delivery/request.d.ts +3 -4
  137. package/dist/publication/delivery/request.js +4 -4
  138. package/dist/publication/delivery-declaration.d.ts +4 -0
  139. package/dist/publication/delivery-declaration.js +25 -0
  140. package/dist/publication/delivery-endpoint.d.ts +0 -1
  141. package/dist/publication/delivery-endpoint.js +0 -1
  142. package/dist/publication/error.d.ts +0 -1
  143. package/dist/publication/error.js +0 -1
  144. package/dist/publication/etag.d.ts +0 -1
  145. package/dist/publication/etag.js +0 -1
  146. package/dist/publication/index.d.ts +6 -3
  147. package/dist/publication/index.js +4 -2
  148. package/dist/publication/manifest.d.ts +2 -3
  149. package/dist/publication/manifest.js +10 -6
  150. package/dist/publication/publication.d.ts +3 -6
  151. package/dist/publication/publication.js +11 -68
  152. package/dist/publication/reference.d.ts +3 -3
  153. package/dist/publication/reference.js +7 -7
  154. package/dist/publication/requirements.d.ts +4 -4
  155. package/dist/publication/requirements.js +34 -34
  156. package/dist/publication/route.d.ts +6 -2
  157. package/dist/publication/route.js +31 -9
  158. package/dist/publication/schema.d.ts +3 -4
  159. package/dist/publication/schema.js +3 -4
  160. package/dist/routes/admission.d.ts +3 -0
  161. package/dist/routes/admission.js +89 -0
  162. package/dist/routes/binding.d.ts +6 -0
  163. package/dist/routes/binding.js +27 -0
  164. package/dist/routes/collision.d.ts +2 -0
  165. package/dist/routes/collision.js +16 -0
  166. package/dist/routes/compiler.d.ts +8 -0
  167. package/dist/routes/compiler.js +50 -0
  168. package/dist/routes/credential.d.ts +7 -8
  169. package/dist/routes/credential.js +7 -8
  170. package/dist/routes/decode.d.ts +4 -3
  171. package/dist/routes/decode.js +42 -42
  172. package/dist/routes/encode.d.ts +3 -3
  173. package/dist/routes/encode.js +31 -33
  174. package/dist/routes/error-response.d.ts +0 -1
  175. package/dist/routes/error-response.js +0 -1
  176. package/dist/routes/error.d.ts +0 -1
  177. package/dist/routes/error.js +0 -1
  178. package/dist/routes/evidence.d.ts +5 -0
  179. package/dist/routes/evidence.js +38 -0
  180. package/dist/routes/index.d.ts +9 -3
  181. package/dist/routes/index.js +6 -3
  182. package/dist/routes/mapping.d.ts +1 -2
  183. package/dist/routes/mapping.js +4 -13
  184. package/dist/routes/match.d.ts +3 -4
  185. package/dist/routes/match.js +3 -5
  186. package/dist/routes/placement.d.ts +5 -0
  187. package/dist/routes/placement.js +18 -0
  188. package/dist/routes/plan.d.ts +24 -0
  189. package/dist/routes/plan.js +1 -0
  190. package/dist/routes/release-unavailable.d.ts +8 -0
  191. package/dist/routes/release-unavailable.js +32 -0
  192. package/dist/routes/request.d.ts +0 -1
  193. package/dist/routes/request.js +3 -2
  194. package/dist/routes/reservation.d.ts +3 -4
  195. package/dist/routes/reservation.js +8 -5
  196. package/dist/routes/routing.d.ts +0 -1
  197. package/dist/routes/routing.js +0 -1
  198. package/dist/routes/scalar.d.ts +4 -4
  199. package/dist/routes/scalar.js +14 -11
  200. package/dist/routes/select.d.ts +2 -3
  201. package/dist/routes/select.js +2 -3
  202. package/dist/routes/stream.d.ts +0 -1
  203. package/dist/routes/stream.js +0 -1
  204. package/dist/routes/table.d.ts +9 -0
  205. package/dist/routes/table.js +1 -0
  206. package/dist/routes/target.d.ts +13 -0
  207. package/dist/routes/target.js +3 -0
  208. package/dist/routes/template.d.ts +0 -1
  209. package/dist/routes/template.js +0 -1
  210. package/dist/runtime/artifact.d.ts +3 -4
  211. package/dist/runtime/artifact.js +5 -6
  212. package/dist/runtime/index.d.ts +0 -1
  213. package/dist/runtime/index.js +0 -1
  214. package/dist/schema/index.d.ts +0 -1
  215. package/dist/schema/index.js +0 -1
  216. package/dist/schema/installation/codec.d.ts +4 -0
  217. package/dist/schema/installation/codec.js +70 -0
  218. package/dist/schema/installation/index.d.ts +2 -1
  219. package/dist/schema/installation/index.js +1 -1
  220. package/dist/schema/installation/introspection/codec.d.ts +3 -3
  221. package/dist/schema/installation/introspection/codec.js +144 -204
  222. package/dist/schema/installation/introspection/index.d.ts +2 -3
  223. package/dist/schema/installation/introspection/index.js +1 -2
  224. package/dist/schema/installation/introspection/result.d.ts +18 -23
  225. package/dist/schema/installation/introspection/result.js +0 -1
  226. package/dist/schema/installation/result.d.ts +9 -0
  227. package/dist/schema/installation/result.js +1 -0
  228. package/package.json +116 -13
  229. package/dist/artifact/index.d.ts.map +0 -1
  230. package/dist/artifact/index.js.map +0 -1
  231. package/dist/artifact/ref.d.ts.map +0 -1
  232. package/dist/artifact/ref.js.map +0 -1
  233. package/dist/codecs/codec.d.ts.map +0 -1
  234. package/dist/codecs/codec.js.map +0 -1
  235. package/dist/codecs/index.d.ts.map +0 -1
  236. package/dist/codecs/index.js.map +0 -1
  237. package/dist/codecs/json.d.ts.map +0 -1
  238. package/dist/codecs/json.js.map +0 -1
  239. package/dist/codecs/media-types.d.ts.map +0 -1
  240. package/dist/codecs/media-types.js.map +0 -1
  241. package/dist/codecs/msgpack.d.ts.map +0 -1
  242. package/dist/codecs/msgpack.js.map +0 -1
  243. package/dist/errors/codes.d.ts.map +0 -1
  244. package/dist/errors/codes.js.map +0 -1
  245. package/dist/errors/http-status.d.ts.map +0 -1
  246. package/dist/errors/http-status.js.map +0 -1
  247. package/dist/errors/index.d.ts.map +0 -1
  248. package/dist/errors/index.js.map +0 -1
  249. package/dist/errors/payload.d.ts.map +0 -1
  250. package/dist/errors/payload.js.map +0 -1
  251. package/dist/errors/protocol-error.d.ts.map +0 -1
  252. package/dist/errors/protocol-error.js.map +0 -1
  253. package/dist/errors/reason.d.ts.map +0 -1
  254. package/dist/errors/reason.js.map +0 -1
  255. package/dist/index.d.ts.map +0 -1
  256. package/dist/index.js.map +0 -1
  257. package/dist/invocation/admission.d.ts.map +0 -1
  258. package/dist/invocation/admission.js.map +0 -1
  259. package/dist/invocation/binary.d.ts.map +0 -1
  260. package/dist/invocation/binary.js.map +0 -1
  261. package/dist/invocation/binding-codecs.d.ts.map +0 -1
  262. package/dist/invocation/binding-codecs.js.map +0 -1
  263. package/dist/invocation/cancellation.d.ts.map +0 -1
  264. package/dist/invocation/cancellation.js.map +0 -1
  265. package/dist/invocation/correlation.d.ts.map +0 -1
  266. package/dist/invocation/correlation.js.map +0 -1
  267. package/dist/invocation/delegate.d.ts.map +0 -1
  268. package/dist/invocation/delegate.js.map +0 -1
  269. package/dist/invocation/http/binary.d.ts.map +0 -1
  270. package/dist/invocation/http/binary.js.map +0 -1
  271. package/dist/invocation/http/index.d.ts.map +0 -1
  272. package/dist/invocation/http/index.js.map +0 -1
  273. package/dist/invocation/http/negotiation.d.ts.map +0 -1
  274. package/dist/invocation/http/negotiation.js.map +0 -1
  275. package/dist/invocation/http/stream.d.ts.map +0 -1
  276. package/dist/invocation/http/stream.js.map +0 -1
  277. package/dist/invocation/http/trace.d.ts.map +0 -1
  278. package/dist/invocation/http/trace.js.map +0 -1
  279. package/dist/invocation/idempotency.d.ts.map +0 -1
  280. package/dist/invocation/idempotency.js.map +0 -1
  281. package/dist/invocation/index.d.ts.map +0 -1
  282. package/dist/invocation/index.js.map +0 -1
  283. package/dist/invocation/miss.d.ts.map +0 -1
  284. package/dist/invocation/miss.js.map +0 -1
  285. package/dist/invocation/redirect.d.ts.map +0 -1
  286. package/dist/invocation/redirect.js.map +0 -1
  287. package/dist/invocation/request.d.ts.map +0 -1
  288. package/dist/invocation/request.js.map +0 -1
  289. package/dist/invocation/response.d.ts.map +0 -1
  290. package/dist/invocation/response.js.map +0 -1
  291. package/dist/invocation/routing.d.ts.map +0 -1
  292. package/dist/invocation/routing.js.map +0 -1
  293. package/dist/invocation/schema.d.ts.map +0 -1
  294. package/dist/invocation/schema.js.map +0 -1
  295. package/dist/invocation/service-reason.d.ts.map +0 -1
  296. package/dist/invocation/service-reason.js.map +0 -1
  297. package/dist/invocation/stale-route.d.ts.map +0 -1
  298. package/dist/invocation/stale-route.js.map +0 -1
  299. package/dist/invocation/stream.d.ts.map +0 -1
  300. package/dist/invocation/stream.js.map +0 -1
  301. package/dist/invocation/target.d.ts.map +0 -1
  302. package/dist/invocation/target.js.map +0 -1
  303. package/dist/invocation/trace.d.ts.map +0 -1
  304. package/dist/invocation/trace.js.map +0 -1
  305. package/dist/invocation/version.d.ts.map +0 -1
  306. package/dist/invocation/version.js.map +0 -1
  307. package/dist/invocation/websocket/binary.d.ts.map +0 -1
  308. package/dist/invocation/websocket/binary.js.map +0 -1
  309. package/dist/invocation/websocket/index.d.ts.map +0 -1
  310. package/dist/invocation/websocket/index.js.map +0 -1
  311. package/dist/invocation/websocket/subprotocol.d.ts.map +0 -1
  312. package/dist/invocation/websocket/subprotocol.js.map +0 -1
  313. package/dist/issuer/configuration.d.ts.map +0 -1
  314. package/dist/issuer/configuration.js.map +0 -1
  315. package/dist/issuer/error.d.ts.map +0 -1
  316. package/dist/issuer/error.js.map +0 -1
  317. package/dist/issuer/exchange.d.ts.map +0 -1
  318. package/dist/issuer/exchange.js.map +0 -1
  319. package/dist/issuer/hosted.d.ts.map +0 -1
  320. package/dist/issuer/hosted.js.map +0 -1
  321. package/dist/issuer/index.d.ts.map +0 -1
  322. package/dist/issuer/index.js.map +0 -1
  323. package/dist/issuer/key-set.d.ts.map +0 -1
  324. package/dist/issuer/key-set.js.map +0 -1
  325. package/dist/issuer/paths.d.ts.map +0 -1
  326. package/dist/issuer/paths.js.map +0 -1
  327. package/dist/issuer/url.d.ts.map +0 -1
  328. package/dist/issuer/url.js.map +0 -1
  329. package/dist/publication/bindings/callable.d.ts.map +0 -1
  330. package/dist/publication/bindings/callable.js.map +0 -1
  331. package/dist/publication/bindings/index.d.ts.map +0 -1
  332. package/dist/publication/bindings/index.js.map +0 -1
  333. package/dist/publication/bindings/invocation.d.ts.map +0 -1
  334. package/dist/publication/bindings/invocation.js.map +0 -1
  335. package/dist/publication/bindings/view.d.ts.map +0 -1
  336. package/dist/publication/bindings/view.js.map +0 -1
  337. package/dist/publication/bundle.d.ts.map +0 -1
  338. package/dist/publication/bundle.js.map +0 -1
  339. package/dist/publication/content.d.ts.map +0 -1
  340. package/dist/publication/content.js.map +0 -1
  341. package/dist/publication/delivery/attestation.d.ts.map +0 -1
  342. package/dist/publication/delivery/attestation.js.map +0 -1
  343. package/dist/publication/delivery/claims.d.ts.map +0 -1
  344. package/dist/publication/delivery/claims.js.map +0 -1
  345. package/dist/publication/delivery/delivery.d.ts.map +0 -1
  346. package/dist/publication/delivery/delivery.js.map +0 -1
  347. package/dist/publication/delivery/error.d.ts.map +0 -1
  348. package/dist/publication/delivery/error.js.map +0 -1
  349. package/dist/publication/delivery/index.d.ts.map +0 -1
  350. package/dist/publication/delivery/index.js.map +0 -1
  351. package/dist/publication/delivery/limits.d.ts.map +0 -1
  352. package/dist/publication/delivery/limits.js.map +0 -1
  353. package/dist/publication/delivery/request.d.ts.map +0 -1
  354. package/dist/publication/delivery/request.js.map +0 -1
  355. package/dist/publication/delivery-endpoint.d.ts.map +0 -1
  356. package/dist/publication/delivery-endpoint.js.map +0 -1
  357. package/dist/publication/error.d.ts.map +0 -1
  358. package/dist/publication/error.js.map +0 -1
  359. package/dist/publication/etag.d.ts.map +0 -1
  360. package/dist/publication/etag.js.map +0 -1
  361. package/dist/publication/index.d.ts.map +0 -1
  362. package/dist/publication/index.js.map +0 -1
  363. package/dist/publication/manifest.d.ts.map +0 -1
  364. package/dist/publication/manifest.js.map +0 -1
  365. package/dist/publication/publication.d.ts.map +0 -1
  366. package/dist/publication/publication.js.map +0 -1
  367. package/dist/publication/reference.d.ts.map +0 -1
  368. package/dist/publication/reference.js.map +0 -1
  369. package/dist/publication/requirements.d.ts.map +0 -1
  370. package/dist/publication/requirements.js.map +0 -1
  371. package/dist/publication/route.d.ts.map +0 -1
  372. package/dist/publication/route.js.map +0 -1
  373. package/dist/publication/schema.d.ts.map +0 -1
  374. package/dist/publication/schema.js.map +0 -1
  375. package/dist/routes/compile.d.ts +0 -5
  376. package/dist/routes/compile.d.ts.map +0 -1
  377. package/dist/routes/compile.js +0 -69
  378. package/dist/routes/compile.js.map +0 -1
  379. package/dist/routes/credential.d.ts.map +0 -1
  380. package/dist/routes/credential.js.map +0 -1
  381. package/dist/routes/decode.d.ts.map +0 -1
  382. package/dist/routes/decode.js.map +0 -1
  383. package/dist/routes/encode.d.ts.map +0 -1
  384. package/dist/routes/encode.js.map +0 -1
  385. package/dist/routes/error-response.d.ts.map +0 -1
  386. package/dist/routes/error-response.js.map +0 -1
  387. package/dist/routes/error.d.ts.map +0 -1
  388. package/dist/routes/error.js.map +0 -1
  389. package/dist/routes/index.d.ts.map +0 -1
  390. package/dist/routes/index.js.map +0 -1
  391. package/dist/routes/mapping.d.ts.map +0 -1
  392. package/dist/routes/mapping.js.map +0 -1
  393. package/dist/routes/match.d.ts.map +0 -1
  394. package/dist/routes/match.js.map +0 -1
  395. package/dist/routes/request.d.ts.map +0 -1
  396. package/dist/routes/request.js.map +0 -1
  397. package/dist/routes/reservation.d.ts.map +0 -1
  398. package/dist/routes/reservation.js.map +0 -1
  399. package/dist/routes/route.d.ts +0 -13
  400. package/dist/routes/route.d.ts.map +0 -1
  401. package/dist/routes/route.js +0 -6
  402. package/dist/routes/route.js.map +0 -1
  403. package/dist/routes/routing.d.ts.map +0 -1
  404. package/dist/routes/routing.js.map +0 -1
  405. package/dist/routes/scalar.d.ts.map +0 -1
  406. package/dist/routes/scalar.js.map +0 -1
  407. package/dist/routes/select.d.ts.map +0 -1
  408. package/dist/routes/select.js.map +0 -1
  409. package/dist/routes/stream.d.ts.map +0 -1
  410. package/dist/routes/stream.js.map +0 -1
  411. package/dist/routes/template.d.ts.map +0 -1
  412. package/dist/routes/template.js.map +0 -1
  413. package/dist/runtime/artifact.d.ts.map +0 -1
  414. package/dist/runtime/artifact.js.map +0 -1
  415. package/dist/runtime/index.d.ts.map +0 -1
  416. package/dist/runtime/index.js.map +0 -1
  417. package/dist/schema/index.d.ts.map +0 -1
  418. package/dist/schema/index.js.map +0 -1
  419. package/dist/schema/installation/index.d.ts.map +0 -1
  420. package/dist/schema/installation/index.js.map +0 -1
  421. package/dist/schema/installation/introspection/codec.d.ts.map +0 -1
  422. package/dist/schema/installation/introspection/codec.js.map +0 -1
  423. package/dist/schema/installation/introspection/index.d.ts.map +0 -1
  424. package/dist/schema/installation/introspection/index.js.map +0 -1
  425. package/dist/schema/installation/introspection/result.d.ts.map +0 -1
  426. package/dist/schema/installation/introspection/result.js.map +0 -1
@@ -1,11 +1,11 @@
1
- import { schema as dslSchema } from '@astrale-os/kernel-dsl/v1';
2
- import { admitBundleDescriptor } from './bundle.js';
1
+ import { patterns } from '@astrale-os/kernel-dsl/v1/addressing';
2
+ import { admitBundleDescriptor } from './bundle-descriptor.js';
3
3
  import { exact, record } from './content.js';
4
4
  import { fail } from './error.js';
5
5
  export function admitSchema(input) {
6
6
  const value = record(input, 'PUBLICATION_INVALID', 'Published schema is invalid.');
7
7
  exact(value, ['revision', 'bundle'], 'PUBLICATION_INVALID');
8
- if (typeof value.revision !== 'string' || !dslSchema.patterns.revision.test(value.revision)) {
8
+ if (typeof value.revision !== 'string' || !patterns.revision.test(value.revision)) {
9
9
  fail('PUBLICATION_INVALID', 'Published schema revision is invalid.');
10
10
  }
11
11
  return Object.freeze({
@@ -13,4 +13,3 @@ export function admitSchema(input) {
13
13
  bundle: admitBundleDescriptor(value.bundle),
14
14
  });
15
15
  }
16
- //# sourceMappingURL=schema.js.map
@@ -0,0 +1,3 @@
1
+ import type { Table } from './table.js';
2
+ /** Admit one emitted portable Table before Server composition. */
3
+ export declare function acceptTable(input: unknown): Table;
@@ -0,0 +1,89 @@
1
+ import { accept as acceptPortable } from '@astrale-os/kernel-dsl/value';
2
+ import { acceptReference } from '../publication/reference.js';
3
+ import { admitRoute } from '../publication/route.js';
4
+ import { fail } from './error.js';
5
+ const AUTH = new Set(['anonymous', 'authenticated', 'authorized']);
6
+ const OUTPUT = new Set(['value', 'stream', 'binary']);
7
+ /** Admit one emitted portable Table before Server composition. */
8
+ export function acceptTable(input) {
9
+ const value = object(acceptPortable(input), 'Route Table');
10
+ exact(value, ['publication', 'entries'], 'Route Table');
11
+ const reference = acceptReference(value.publication);
12
+ if (!Array.isArray(value.entries))
13
+ invalid('Route Table entries');
14
+ const entries = value.entries.map((entry) => acceptRoute(entry, reference.origin));
15
+ if (new Set(entries.map(({ name }) => name)).size !== entries.length) {
16
+ fail('NATIVE_ROUTE_BINDING_INVALID', 'Route Table names must be unique.');
17
+ }
18
+ return Object.freeze({ publication: reference, entries: Object.freeze(entries) });
19
+ }
20
+ function acceptRoute(input, origin) {
21
+ const value = object(input, 'Route Table entry');
22
+ exact(value, ['name', 'callable', 'target', 'auth', 'output', 'href', 'method', 'default'], 'Route Table entry', ['requestMethod', 'query', 'headers', 'body', 'credential']);
23
+ if (typeof value.default !== 'boolean')
24
+ invalid('Route Table default');
25
+ if (typeof value.auth !== 'string' || !AUTH.has(value.auth)) {
26
+ invalid('Route Table auth');
27
+ }
28
+ if (typeof value.output !== 'string' || !OUTPUT.has(value.output))
29
+ invalid('Route Table output');
30
+ const wire = admitRoute({
31
+ name: value.name,
32
+ callable: value.callable,
33
+ href: value.href,
34
+ method: value.method,
35
+ ...(value.default === true ? { default: true } : {}),
36
+ ...(value.requestMethod === undefined ? {} : { requestMethod: value.requestMethod }),
37
+ ...(value.query === undefined ? {} : { query: value.query }),
38
+ ...(value.headers === undefined ? {} : { headers: value.headers }),
39
+ ...(value.body === undefined ? {} : { body: value.body }),
40
+ ...(value.credential === undefined ? {} : { credential: value.credential }),
41
+ ...receiver(value.target),
42
+ }, origin);
43
+ const { default: _default, receiver: _receiver, ...common } = wire;
44
+ return Object.freeze({
45
+ ...common,
46
+ target: target(value.target),
47
+ auth: value.auth,
48
+ output: value.output,
49
+ default: value.default,
50
+ });
51
+ }
52
+ function target(input) {
53
+ const value = object(input, 'Route target');
54
+ if (value.kind === 'function') {
55
+ exact(value, ['kind'], 'Route Function target');
56
+ return Object.freeze({ kind: 'function' });
57
+ }
58
+ if (value.kind !== 'method' || (value.dispatch !== 'static' && value.dispatch !== 'instance')) {
59
+ invalid('Route Method target');
60
+ }
61
+ if (value.dispatch === 'static') {
62
+ exact(value, ['kind', 'dispatch'], 'Route static Method target');
63
+ return Object.freeze({ kind: 'method', dispatch: 'static' });
64
+ }
65
+ exact(value, ['kind', 'dispatch', 'receiver'], 'Route instance Method target');
66
+ if (typeof value.receiver !== 'string')
67
+ invalid('Route receiver');
68
+ return Object.freeze({ kind: 'method', dispatch: 'instance', receiver: value.receiver });
69
+ }
70
+ function receiver(input) {
71
+ const admitted = target(input);
72
+ return admitted.kind === 'method' && admitted.dispatch === 'instance'
73
+ ? { receiver: admitted.receiver }
74
+ : {};
75
+ }
76
+ function object(input, label) {
77
+ if (input === null || typeof input !== 'object' || Array.isArray(input))
78
+ invalid(label);
79
+ return input;
80
+ }
81
+ function exact(value, required, label, optional = []) {
82
+ const allowed = new Set([...required, ...optional]);
83
+ if (Object.keys(value).some((key) => !allowed.has(key)) ||
84
+ required.some((key) => !Object.hasOwn(value, key)))
85
+ invalid(label);
86
+ }
87
+ function invalid(label) {
88
+ return fail('NATIVE_ROUTE_BINDING_INVALID', `${label} is invalid.`);
89
+ }
@@ -0,0 +1,6 @@
1
+ import type { Domain } from '@astrale-os/kernel-dsl/v1';
2
+ import type { Publication } from '../publication/publication.js';
3
+ import type { Plan } from './plan.js';
4
+ import type { Table } from './table.js';
5
+ /** Bind one Plan to an exact placed Publication and matching resolved Domain. */
6
+ export declare function bind(plan: Plan, deployed: Publication, domain: Domain): Table;
@@ -0,0 +1,27 @@
1
+ import { json } from '@astrale-os/kernel-dsl/value';
2
+ import { reference } from '../publication/reference.js';
3
+ import { fail } from './error.js';
4
+ import { place } from './placement.js';
5
+ import { rejectReserved } from './reservation.js';
6
+ /** Bind one Plan to an exact placed Publication and matching resolved Domain. */
7
+ export function bind(plan, deployed, domain) {
8
+ if (plan.origin !== deployed.origin ||
9
+ plan.origin !== domain.origin ||
10
+ plan.revision !== deployed.schema.revision ||
11
+ plan.revision !== domain.revision) {
12
+ fail('NATIVE_ROUTE_BINDING_INVALID', 'Route Plan, Publication, and Domain identity differ.');
13
+ }
14
+ if (json.serialize(place(plan, deployed.identity.issuer)) !==
15
+ json.serialize(deployed.routes)) {
16
+ fail('NATIVE_ROUTE_BINDING_INVALID', 'Publication routes differ from the placed Route Plan.');
17
+ }
18
+ const entries = plan.entries.map((entry, index) => {
19
+ const { path: _path, ...portable } = entry;
20
+ return Object.freeze({ ...portable, href: deployed.routes[index].href });
21
+ });
22
+ rejectReserved(deployed, entries);
23
+ return Object.freeze({
24
+ publication: reference(deployed),
25
+ entries: Object.freeze(entries),
26
+ });
27
+ }
@@ -0,0 +1,2 @@
1
+ import type { Route } from './table.js';
2
+ export declare function rejectCollisions(entries: readonly Route[]): void;
@@ -0,0 +1,16 @@
1
+ import { fail } from './error.js';
2
+ import { templatesOverlap } from './template.js';
3
+ export function rejectCollisions(entries) {
4
+ const accepted = [];
5
+ for (const entry of entries) {
6
+ for (const previous of accepted) {
7
+ if (overlap(entry.method, previous.method) && templatesOverlap(entry.href, previous.href)) {
8
+ fail('NATIVE_ROUTE_COLLISION', `Route ${entry.name} collides with ${previous.name}.`);
9
+ }
10
+ }
11
+ accepted.push(entry);
12
+ }
13
+ }
14
+ function overlap(left, right) {
15
+ return left === '*' || right === '*' || left === right;
16
+ }
@@ -0,0 +1,8 @@
1
+ import type { Domain } from '@astrale-os/kernel-dsl/v1';
2
+ import type * as publication from '../publication/index.js';
3
+ import type { Plan } from './plan.js';
4
+ export interface CompileInput {
5
+ readonly routes: readonly publication.HttpRouteDeclaration[];
6
+ readonly domain: Domain;
7
+ }
8
+ export declare function compile(input: CompileInput): Plan;
@@ -0,0 +1,50 @@
1
+ import { admitRouteDeclaration } from '../publication/route.js';
2
+ import { rejectCollisions } from './collision.js';
3
+ import { fail } from './error.js';
4
+ import { validateCredentialMapping, validateMapping, validateWireMapping } from './mapping.js';
5
+ import { placePath } from './placement.js';
6
+ import { validateTemplate } from './template.js';
7
+ export function compile(input) {
8
+ if (input === null || typeof input !== 'object' || !Array.isArray(input.routes)) {
9
+ throw new TypeError('Route compilation input is invalid.');
10
+ }
11
+ const authored = input.routes.map((entry) => admitRouteDeclaration(entry, input.domain.origin));
12
+ const entries = authored.map((declaration) => {
13
+ const meaning = input.domain.callable(declaration.callable);
14
+ if (meaning === undefined) {
15
+ fail('NATIVE_ROUTE_BINDING_INVALID', `Unknown callable ${declaration.callable}.`);
16
+ }
17
+ const href = placePath(declaration.path, 'https://routes.invalid');
18
+ const route = { ...declaration, href };
19
+ validateTemplate(href);
20
+ validateMapping(route, meaning.inputFields, isMethod(meaning) && !meaning.static);
21
+ validateWireMapping(route);
22
+ validateCredentialMapping(route);
23
+ if (route.method === 'GET' && route.body !== undefined) {
24
+ fail('NATIVE_ROUTE_DECLARATION_INVALID', `GET route ${route.name} cannot declare a body.`);
25
+ }
26
+ const target = !isMethod(meaning)
27
+ ? { kind: 'function' }
28
+ : meaning.static
29
+ ? { kind: 'method', dispatch: 'static' }
30
+ : { kind: 'method', dispatch: 'instance', receiver: route.receiver };
31
+ const { href: _href, receiver: _receiver, ...portable } = route;
32
+ return Object.freeze({
33
+ ...portable,
34
+ target,
35
+ auth: meaning.auth,
36
+ output: meaning.output.mode,
37
+ path: declaration.path,
38
+ default: declaration.default === true,
39
+ });
40
+ });
41
+ rejectCollisions(entries.map((entry) => ({ ...entry, href: placePath(entry.path, 'https://routes.invalid') })));
42
+ return Object.freeze({
43
+ origin: input.domain.origin,
44
+ revision: input.domain.revision,
45
+ entries: Object.freeze(entries),
46
+ });
47
+ }
48
+ function isMethod(meaning) {
49
+ return 'owner' in meaning;
50
+ }
@@ -1,9 +1,8 @@
1
1
  import type { HttpRoute, SingleCredentialSource } from '../publication/index.js';
2
- import type { CompiledRoute } from './route.js';
3
- export declare function credentialSources(route: HttpRoute): readonly SingleCredentialSource[];
4
- export declare function firstCredentialIsAmbient(entry: CompiledRoute): boolean;
5
- export declare function specificHeaderWires(entry: CompiledRoute): ReadonlySet<string>;
6
- export declare function putCredential(entry: CompiledRoute, url: URL, headers: Record<string, string>, credential: string): void;
7
- export declare function withoutCredentialHeaders(entry: CompiledRoute, input: Readonly<Record<string, string>>): Record<string, string>;
8
- export declare function readCredential(entry: CompiledRoute, url: URL, headers: Record<string, string>): string | undefined;
9
- //# sourceMappingURL=credential.d.ts.map
2
+ import type { Route } from './table.js';
3
+ export declare function credentialSources(route: Pick<HttpRoute, 'credential'>): readonly SingleCredentialSource[];
4
+ export declare function firstCredentialIsAmbient(entry: Route): boolean;
5
+ export declare function specificHeaderWires(entry: Route): ReadonlySet<string>;
6
+ export declare function putCredential(entry: Route, url: URL, headers: Record<string, string>, credential: string): void;
7
+ export declare function withoutCredentialHeaders(entry: Route, input: Readonly<Record<string, string>>): Record<string, string>;
8
+ export declare function readCredential(entry: Route, url: URL, headers: Record<string, string>): string | undefined;
@@ -4,19 +4,19 @@ export function credentialSources(route) {
4
4
  return Array.isArray(source) ? source : [source];
5
5
  }
6
6
  export function firstCredentialIsAmbient(entry) {
7
- return credentialSources(entry.route)[0].in === 'cookie';
7
+ return credentialSources(entry)[0].in === 'cookie';
8
8
  }
9
9
  export function specificHeaderWires(entry) {
10
- return new Set(Object.values(entry.route.headers ?? {})
10
+ return new Set(Object.values(entry.headers ?? {})
11
11
  .filter((wire) => wire !== '*')
12
12
  .map((wire) => wire.toLowerCase()));
13
13
  }
14
14
  export function putCredential(entry, url, headers, credential) {
15
- if (entry.route.credential === undefined) {
15
+ if (entry.credential === undefined) {
16
16
  headers.authorization = `Bearer ${credential}`;
17
17
  return;
18
18
  }
19
- const source = credentialSources(entry.route)[0];
19
+ const source = credentialSources(entry)[0];
20
20
  if (source.in === 'header') {
21
21
  headers[(source.name ?? 'authorization').toLowerCase()] = credential;
22
22
  }
@@ -36,7 +36,7 @@ export function withoutCredentialHeaders(entry, input) {
36
36
  }
37
37
  output[canonical] = value;
38
38
  }
39
- for (const source of credentialSources(entry.route)) {
39
+ for (const source of credentialSources(entry)) {
40
40
  if (source.in === 'header') {
41
41
  delete output[(source.name ?? 'authorization').toLowerCase()];
42
42
  continue;
@@ -53,7 +53,7 @@ export function withoutCredentialHeaders(entry, input) {
53
53
  }
54
54
  export function readCredential(entry, url, headers) {
55
55
  const found = [];
56
- if (entry.route.credential === undefined) {
56
+ if (entry.credential === undefined) {
57
57
  const authorization = headers.authorization;
58
58
  if (authorization === undefined)
59
59
  return undefined;
@@ -62,7 +62,7 @@ export function readCredential(entry, url, headers) {
62
62
  invalidRequest('Authorization must contain one Bearer credential.');
63
63
  return matched[1];
64
64
  }
65
- for (const source of credentialSources(entry.route)) {
65
+ for (const source of credentialSources(entry)) {
66
66
  let value;
67
67
  if (source.in === 'header') {
68
68
  value = headers[(source.name ?? 'authorization').toLowerCase()];
@@ -116,4 +116,3 @@ function withoutCookie(header, name) {
116
116
  .join('; ');
117
117
  return value.length === 0 ? undefined : value;
118
118
  }
119
- //# sourceMappingURL=credential.js.map
@@ -1,4 +1,5 @@
1
+ import type { Domain } from '@astrale-os/kernel-dsl/v1';
2
+ import type { PublicationRef } from '../publication/index.js';
1
3
  import type { HttpRequest, Invocation } from './request.js';
2
- import type { CompiledRoute } from './route.js';
3
- export declare function decode(entry: CompiledRoute, request: HttpRequest): Invocation;
4
- //# sourceMappingURL=decode.d.ts.map
4
+ import type { Route } from './table.js';
5
+ export declare function decode(entry: Route, request: HttpRequest, domain: Domain, served: PublicationRef): Invocation;
@@ -1,27 +1,27 @@
1
1
  import { NodePath, Path } from '@astrale-os/kernel-core/path';
2
- import { Key, Ref } from '@astrale-os/kernel-dsl/v1';
2
+ import { callableAddress } from '@astrale-os/kernel-dsl/v1/addressing';
3
3
  import * as portable from '@astrale-os/kernel-dsl/value';
4
4
  import { readCredential, specificHeaderWires, withoutCredentialHeaders } from './credential.js';
5
5
  import { fail, invalidRequest } from './error.js';
6
6
  import { isReservedHeader } from './mapping.js';
7
7
  import { methodMatches } from './match.js';
8
8
  import { bodyText, normalizeHeaders, parseJsonObject } from './request.js';
9
- import { requiresReceiver } from './route.js';
10
9
  import { decodeRouting } from './routing.js';
11
- import { asObject, decodeScalar } from './scalar.js';
10
+ import { decodeScalar } from './scalar.js';
11
+ import { requiresReceiver } from './target.js';
12
12
  import { matchTemplate, PLACEHOLDER } from './template.js';
13
- export function decode(entry, request) {
13
+ export function decode(entry, request, domain, served) {
14
14
  if (!methodMatches(entry, request.method))
15
15
  invalidRequest('HTTP method does not match the route.');
16
- const matched = matchTemplate(entry.route.href, request.url);
16
+ const matched = matchTemplate(entry.href, request.url);
17
17
  if (matched === undefined)
18
18
  invalidRequest('URL does not match the route template.');
19
19
  const values = {};
20
20
  for (const [name, value] of Object.entries(matched)) {
21
- values[name] = decodeScalar(entry, name, value);
21
+ values[name] = decodeScalar(entry, name, value, domain);
22
22
  }
23
- if (entry.route.requestMethod !== undefined) {
24
- values[entry.route.requestMethod] = decodeScalar(entry, entry.route.requestMethod, request.method.toUpperCase());
23
+ if (entry.requestMethod !== undefined) {
24
+ values[entry.requestMethod] = decodeScalar(entry, entry.requestMethod, request.method.toUpperCase(), domain);
25
25
  }
26
26
  let url;
27
27
  try {
@@ -35,32 +35,32 @@ export function decode(entry, request) {
35
35
  }
36
36
  const headers = normalizeHeaders(request.headers);
37
37
  const credential = readCredential(entry, url, headers);
38
- const routing = decodeRouting(request, entry.publication);
38
+ const routing = decodeRouting(request, served);
39
39
  const applicationHeaders = withoutCredentialHeaders(entry, headers);
40
- for (const [name, wire] of Object.entries(entry.route.query ?? {})) {
40
+ for (const [name, wire] of Object.entries(entry.query ?? {})) {
41
41
  const found = url.searchParams.getAll(wire);
42
42
  if (found.length !== 1)
43
43
  invalidRequest(`Query parameter ${wire} must occur exactly once.`);
44
- values[name] = decodeScalar(entry, name, found[0]);
44
+ values[name] = decodeScalar(entry, name, found[0], domain);
45
45
  }
46
- for (const [name, pick] of Object.entries(entry.route.headers ?? {})) {
46
+ for (const [name, pick] of Object.entries(entry.headers ?? {})) {
47
47
  if (pick === '*') {
48
48
  const explicit = specificHeaderWires(entry);
49
49
  values[name] = Object.fromEntries(Object.entries(applicationHeaders).filter(([header]) => !explicit.has(header) &&
50
50
  header !== 'accept' &&
51
51
  !isReservedHeader(header) &&
52
- (entry.route.body === undefined || header !== 'content-type')));
52
+ (entry.body === undefined || header !== 'content-type')));
53
53
  }
54
54
  else {
55
55
  const value = headers[pick.toLowerCase()];
56
56
  if (value === undefined)
57
57
  invalidRequest(`Missing header ${pick}.`);
58
- values[name] = decodeScalar(entry, name, value);
58
+ values[name] = decodeScalar(entry, name, value, domain);
59
59
  }
60
60
  }
61
- if (entry.route.body === '*') {
61
+ if (entry.body === '*') {
62
62
  const body = parseJsonObject(request.body);
63
- const allowed = remainderFields(entry);
63
+ const allowed = remainderFields(entry, domain);
64
64
  for (const name of Object.keys(body)) {
65
65
  if (!allowed.has(name)) {
66
66
  invalidRequest(`JSON body field ${name} is not owned by the route remainder mapping.`);
@@ -68,10 +68,10 @@ export function decode(entry, request) {
68
68
  }
69
69
  Object.assign(values, body);
70
70
  }
71
- else if (entry.route.body !== undefined) {
72
- const needsText = Object.values(entry.route.body).some((pick) => typeof pick !== 'string');
71
+ else if (entry.body !== undefined) {
72
+ const needsText = Object.values(entry.body).some((pick) => typeof pick !== 'string');
73
73
  const body = needsText ? bodyText(request.body) : parseJsonObject(request.body);
74
- for (const [name, pick] of Object.entries(entry.route.body)) {
74
+ for (const [name, pick] of Object.entries(entry.body)) {
75
75
  if (typeof pick !== 'string') {
76
76
  values[name] = body;
77
77
  }
@@ -85,7 +85,10 @@ export function decode(entry, request) {
85
85
  }
86
86
  let receiver;
87
87
  if (requiresReceiver(entry)) {
88
- const encodedReceiver = entry.route.receiver === undefined ? undefined : values[entry.route.receiver];
88
+ const receiverName = entry.target.kind === 'method' && entry.target.dispatch === 'instance'
89
+ ? entry.target.receiver
90
+ : undefined;
91
+ const encodedReceiver = receiverName === undefined ? undefined : values[receiverName];
89
92
  if (typeof encodedReceiver !== 'string')
90
93
  invalidRequest('Instance route receiver is missing.');
91
94
  try {
@@ -97,7 +100,7 @@ export function decode(entry, request) {
97
100
  }
98
101
  throw cause;
99
102
  }
100
- delete values[entry.route.receiver];
103
+ delete values[receiverName];
101
104
  }
102
105
  let input;
103
106
  try {
@@ -109,19 +112,15 @@ export function decode(entry, request) {
109
112
  }
110
113
  throw cause;
111
114
  }
112
- const ref = Key.ref(entry.callable);
113
- const target = Ref.isMethod(ref)
115
+ const coordinate = callableAddress(entry.callable);
116
+ const target = coordinate.kind === 'method'
114
117
  ? receiver === undefined
115
- ? Path.staticMethod(Path.project({
116
- origin: Key.origin(entry.callable),
117
- kind: Ref.namespace(ref),
118
- name: Ref.member(ref),
119
- }), Ref.child(ref)).raw
120
- : Path.instanceMethod(Path.from(receiver), Ref.child(ref)).raw
118
+ ? Path.staticMethod(Path.project(coordinate.owner), coordinate.name).raw
119
+ : Path.instanceMethod(Path.from(receiver), coordinate.name).raw
121
120
  : Path.project({
122
- origin: Key.origin(entry.callable),
121
+ origin: coordinate.origin,
123
122
  kind: 'function',
124
- name: Ref.member(ref),
123
+ name: coordinate.name,
125
124
  }).raw;
126
125
  return Object.freeze({
127
126
  call: Object.freeze({ target, input }),
@@ -129,19 +128,20 @@ export function decode(entry, request) {
129
128
  ...(routing === undefined ? {} : { routing }),
130
129
  });
131
130
  }
132
- function remainderFields(entry) {
131
+ function remainderFields(entry, domain) {
133
132
  const claimed = new Set([
134
- ...[...entry.route.href.matchAll(PLACEHOLDER)].map((item) => item[1]),
135
- ...(entry.route.requestMethod === undefined ? [] : [entry.route.requestMethod]),
136
- ...Object.keys(entry.route.query ?? {}),
137
- ...Object.keys(entry.route.headers ?? {}),
133
+ ...[...entry.href.matchAll(PLACEHOLDER)].map((item) => item[1]),
134
+ ...(entry.requestMethod === undefined ? [] : [entry.requestMethod]),
135
+ ...Object.keys(entry.query ?? {}),
136
+ ...Object.keys(entry.headers ?? {}),
138
137
  ]);
139
- const input = asObject(entry.declaration.input);
140
- const properties = asObject(input.properties);
141
- const allowed = new Set(Object.keys(properties).filter((name) => !claimed.has(name)));
142
- if (entry.route.receiver !== undefined && !claimed.has(entry.route.receiver)) {
143
- allowed.add(entry.route.receiver);
138
+ const fields = domain.callable(entry.callable)?.inputFields ?? [];
139
+ const allowed = new Set(fields.filter((name) => !claimed.has(name)));
140
+ const receiver = entry.target.kind === 'method' && entry.target.dispatch === 'instance'
141
+ ? entry.target.receiver
142
+ : undefined;
143
+ if (receiver !== undefined && !claimed.has(receiver)) {
144
+ allowed.add(receiver);
144
145
  }
145
146
  return allowed;
146
147
  }
147
- //# sourceMappingURL=decode.js.map
@@ -1,4 +1,4 @@
1
+ import type { Domain } from '@astrale-os/kernel-dsl/v1';
1
2
  import type { Invocation, Request } from './request.js';
2
- import type { CompiledRoute } from './route.js';
3
- export declare function encode(entry: CompiledRoute, invocation: Invocation): Request;
4
- //# sourceMappingURL=encode.d.ts.map
3
+ import type { Route } from './table.js';
4
+ export declare function encode(entry: Route, invocation: Invocation, domain: Domain): Request;
@@ -1,50 +1,49 @@
1
1
  import { Path } from '@astrale-os/kernel-core/path';
2
- import { Key, Ref } from '@astrale-os/kernel-dsl/v1';
2
+ import { callableAddress } from '@astrale-os/kernel-dsl/v1/addressing';
3
3
  import * as portable from '@astrale-os/kernel-dsl/value';
4
4
  import { firstCredentialIsAmbient, putCredential, specificHeaderWires, withoutCredentialHeaders, } from './credential.js';
5
5
  import { fail, invalidRequest } from './error.js';
6
6
  import { isReservedHeader } from './mapping.js';
7
- import { requiresReceiver } from './route.js';
8
7
  import { encodeStrongEtag, HTTP_ROUTE_ISSUER, HTTP_ROUTE_PUBLICATION } from './routing.js';
9
8
  import { asObject, encodeScalar, scalar } from './scalar.js';
9
+ import { requiresReceiver } from './target.js';
10
10
  import { authorityEnd, encodeTemplate, PLACEHOLDER } from './template.js';
11
- export function encode(entry, invocation) {
11
+ export function encode(entry, invocation, domain) {
12
12
  const input = asObject(invocation.call.input);
13
13
  const target = Path.from(invocation.call.target);
14
14
  const needsReceiver = requiresReceiver(entry);
15
- const ref = Key.ref(entry.callable);
16
- const methodName = Ref.isMethod(ref) ? Ref.child(ref) : undefined;
15
+ const coordinate = callableAddress(entry.callable);
16
+ const methodName = coordinate.kind === 'method' ? coordinate.name : undefined;
17
17
  const receiver = needsReceiver ? instanceSource(target, methodName) : undefined;
18
18
  const source = receiver?.raw;
19
19
  const expected = needsReceiver
20
20
  ? Path.instanceMethod(receiver, methodName).raw
21
- : Ref.isMethod(ref)
22
- ? Path.staticMethod(Path.project({
23
- origin: Key.origin(entry.callable),
24
- kind: Ref.namespace(ref),
25
- name: Ref.member(ref),
26
- }), methodName).raw
21
+ : coordinate.kind === 'method'
22
+ ? Path.staticMethod(Path.project(coordinate.owner), methodName).raw
27
23
  : Path.project({
28
- origin: Key.origin(entry.callable),
24
+ origin: coordinate.origin,
29
25
  kind: 'function',
30
- name: Ref.member(ref),
26
+ name: coordinate.name,
31
27
  }).raw;
32
28
  if (target.raw !== expected)
33
29
  invalidRequest('Invocation Path does not match the selected route.');
34
- const field = (name) => (name === entry.route.receiver ? source : input[name]);
35
- const wireField = (name) => encodeScalar(entry, name, field(name));
36
- const hostEnd = authorityEnd(entry.route.href);
37
- let url = entry.route.href.replaceAll(PLACEHOLDER, (_whole, name, catchall, offset) => encodeTemplate(wireField(name), catchall, offset < hostEnd));
30
+ const receiverName = entry.target.kind === 'method' && entry.target.dispatch === 'instance'
31
+ ? entry.target.receiver
32
+ : undefined;
33
+ const field = (name) => (name === receiverName ? source : input[name]);
34
+ const wireField = (name) => encodeScalar(entry, name, field(name), domain);
35
+ const hostEnd = authorityEnd(entry.href);
36
+ let url = entry.href.replaceAll(PLACEHOLDER, (_whole, name, catchall, offset) => encodeTemplate(wireField(name), catchall, offset < hostEnd));
38
37
  const parsed = new URL(url);
39
- for (const [name, wire] of Object.entries(entry.route.query ?? {})) {
38
+ for (const [name, wire] of Object.entries(entry.query ?? {})) {
40
39
  parsed.searchParams.append(wire, wireField(name));
41
40
  }
42
41
  let headers = {};
43
- for (const [name, pick] of Object.entries(entry.route.headers ?? {})) {
42
+ for (const [name, pick] of Object.entries(entry.headers ?? {})) {
44
43
  if (pick !== '*')
45
44
  headers[pick] = wireField(name);
46
45
  }
47
- const headerRemainder = Object.entries(entry.route.headers ?? {}).find(([, pick]) => pick === '*');
46
+ const headerRemainder = Object.entries(entry.headers ?? {}).find(([, pick]) => pick === '*');
48
47
  if (headerRemainder !== undefined) {
49
48
  const explicit = specificHeaderWires(entry);
50
49
  for (const [header, headerValue] of Object.entries(asObject(field(headerRemainder[0])))) {
@@ -56,27 +55,27 @@ export function encode(entry, invocation) {
56
55
  }
57
56
  }
58
57
  let body;
59
- if (entry.route.body === '*') {
58
+ if (entry.body === '*') {
60
59
  const claimed = new Set([
61
- ...[...entry.route.href.matchAll(PLACEHOLDER)].map((item) => item[1]),
62
- ...(entry.route.requestMethod === undefined ? [] : [entry.route.requestMethod]),
63
- ...Object.keys(entry.route.query ?? {}),
64
- ...Object.keys(entry.route.headers ?? {}),
60
+ ...[...entry.href.matchAll(PLACEHOLDER)].map((item) => item[1]),
61
+ ...(entry.requestMethod === undefined ? [] : [entry.requestMethod]),
62
+ ...Object.keys(entry.query ?? {}),
63
+ ...Object.keys(entry.headers ?? {}),
65
64
  ]);
66
65
  const output = {};
67
66
  for (const [name, value] of Object.entries(input)) {
68
67
  if (!claimed.has(name))
69
68
  output[name] = value;
70
69
  }
71
- if (entry.route.receiver !== undefined && !claimed.has(entry.route.receiver)) {
72
- output[entry.route.receiver] = source;
70
+ if (receiverName !== undefined && !claimed.has(receiverName)) {
71
+ output[receiverName] = source;
73
72
  }
74
73
  body = portable.json.serialize(output);
75
74
  headers['content-type'] = 'application/json';
76
75
  }
77
- else if (entry.route.body !== undefined) {
76
+ else if (entry.body !== undefined) {
78
77
  const output = {};
79
- for (const [name, pick] of Object.entries(entry.route.body)) {
78
+ for (const [name, pick] of Object.entries(entry.body)) {
80
79
  if (typeof pick !== 'string')
81
80
  body = scalar(field(name));
82
81
  else
@@ -108,16 +107,16 @@ export function encode(entry, invocation) {
108
107
  headers[HTTP_ROUTE_ISSUER] = invocation.routing.issuer;
109
108
  }
110
109
  url = parsed.toString();
111
- const mappedMethod = entry.route.requestMethod === undefined
110
+ const mappedMethod = entry.requestMethod === undefined
112
111
  ? undefined
113
- : encodeScalar(entry, entry.route.requestMethod, input[entry.route.requestMethod]).toUpperCase();
112
+ : encodeScalar(entry, entry.requestMethod, input[entry.requestMethod], domain).toUpperCase();
114
113
  const requestedMethod = invocation.method?.toUpperCase();
115
114
  if (mappedMethod !== undefined &&
116
115
  requestedMethod !== undefined &&
117
116
  mappedMethod !== requestedMethod) {
118
117
  invalidRequest('Native route request method differs from its mapped input field.');
119
118
  }
120
- const methodCandidate = entry.route.method === '*' ? (requestedMethod ?? mappedMethod) : entry.route.method;
119
+ const methodCandidate = entry.method === '*' ? (requestedMethod ?? mappedMethod) : entry.method;
121
120
  if (methodCandidate === undefined) {
122
121
  fail('NATIVE_ROUTE_REQUEST_INVALID', 'Wildcard route invocation requires an HTTP method.');
123
122
  }
@@ -144,4 +143,3 @@ function instanceSource(target, name) {
144
143
  }
145
144
  return Path.fromAST({ anchor: target.ast.anchor, steps: steps.slice(0, -1) });
146
145
  }
147
- //# sourceMappingURL=encode.js.map
@@ -3,4 +3,3 @@ export interface ErrorResponse {
3
3
  readonly error: ErrorPayload;
4
4
  }
5
5
  export declare function decodeErrorResponse(input: unknown): ErrorResponse;
6
- //# sourceMappingURL=error-response.d.ts.map
@@ -29,4 +29,3 @@ function isValueObject(value) {
29
29
  function invalid(cause) {
30
30
  return fail('NATIVE_ROUTE_RESPONSE_INVALID', 'Native route error response is invalid.', cause);
31
31
  }
32
- //# sourceMappingURL=error-response.js.map
@@ -6,4 +6,3 @@ export declare class RouteError extends Error {
6
6
  }
7
7
  export declare function fail(code: ErrorCode, message: string, cause?: unknown): never;
8
8
  export declare function invalidRequest(message: string): never;
9
- //# sourceMappingURL=error.d.ts.map