@toa.io/extensions.exposition 1.0.0-alpha.274 → 1.0.0-alpha.277

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 (837) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/components/exposition.atom/operations/meter.js +1 -3
  3. package/components/exposition.octets/operations/delete.js +1 -3
  4. package/components/exposition.octets/operations/get.js +1 -3
  5. package/components/exposition.octets/operations/head.js +1 -3
  6. package/components/exposition.octets/operations/put.js +6 -6
  7. package/components/identity.bans/operations/transit.js +1 -5
  8. package/components/identity.bans/operations/transit.js.map +1 -1
  9. package/components/identity.bans/tsconfig.json +1 -0
  10. package/components/identity.bans/tsconfig.tsbuildinfo +1 -0
  11. package/components/identity.basic/events/principal.js +2 -4
  12. package/components/identity.basic/operations/add.d.ts +1 -1
  13. package/components/identity.basic/operations/add.js +1 -5
  14. package/components/identity.basic/operations/add.js.map +1 -1
  15. package/components/identity.basic/operations/authenticate.d.ts +1 -1
  16. package/components/identity.basic/operations/authenticate.js +3 -7
  17. package/components/identity.basic/operations/authenticate.js.map +1 -1
  18. package/components/identity.basic/operations/check.d.ts +1 -1
  19. package/components/identity.basic/operations/check.js +1 -5
  20. package/components/identity.basic/operations/check.js.map +1 -1
  21. package/components/identity.basic/operations/delete.d.ts +1 -1
  22. package/components/identity.basic/operations/delete.js +1 -5
  23. package/components/identity.basic/operations/delete.js.map +1 -1
  24. package/components/identity.basic/operations/incept.d.ts +1 -1
  25. package/components/identity.basic/operations/incept.js +1 -5
  26. package/components/identity.basic/operations/incept.js.map +1 -1
  27. package/components/identity.basic/operations/info.d.ts +1 -1
  28. package/components/identity.basic/operations/info.js +1 -5
  29. package/components/identity.basic/operations/info.js.map +1 -1
  30. package/components/identity.basic/operations/transit.d.ts +1 -1
  31. package/components/identity.basic/operations/transit.js +4 -8
  32. package/components/identity.basic/operations/transit.js.map +1 -1
  33. package/components/identity.basic/operations/types.js +1 -2
  34. package/components/identity.basic/source/add.ts +1 -1
  35. package/components/identity.basic/source/authenticate.ts +1 -1
  36. package/components/identity.basic/source/check.ts +1 -1
  37. package/components/identity.basic/source/delete.ts +1 -1
  38. package/components/identity.basic/source/incept.ts +1 -1
  39. package/components/identity.basic/source/info.ts +1 -1
  40. package/components/identity.basic/source/transit.ts +1 -1
  41. package/components/identity.basic/tsconfig.json +1 -0
  42. package/components/identity.basic/tsconfig.tsbuildinfo +1 -0
  43. package/components/identity.credentials/operations/list.js +1 -5
  44. package/components/identity.credentials/operations/list.js.map +1 -1
  45. package/components/identity.credentials/source/list.test.ts +12 -8
  46. package/components/identity.credentials/tsconfig.json +2 -1
  47. package/components/identity.credentials/tsconfig.tsbuildinfo +1 -0
  48. package/components/identity.federation/events/principal.js +5 -7
  49. package/components/identity.federation/operations/authenticate.d.ts +1 -1
  50. package/components/identity.federation/operations/authenticate.js +5 -9
  51. package/components/identity.federation/operations/authenticate.js.map +1 -1
  52. package/components/identity.federation/operations/create.d.ts +1 -1
  53. package/components/identity.federation/operations/create.js +3 -7
  54. package/components/identity.federation/operations/create.js.map +1 -1
  55. package/components/identity.federation/operations/decode.d.ts +1 -1
  56. package/components/identity.federation/operations/decode.js +3 -7
  57. package/components/identity.federation/operations/decode.js.map +1 -1
  58. package/components/identity.federation/operations/delete.d.ts +1 -1
  59. package/components/identity.federation/operations/delete.js +1 -5
  60. package/components/identity.federation/operations/delete.js.map +1 -1
  61. package/components/identity.federation/operations/incept.d.ts +1 -1
  62. package/components/identity.federation/operations/incept.js +3 -7
  63. package/components/identity.federation/operations/incept.js.map +1 -1
  64. package/components/identity.federation/operations/lib/Configuration.js +1 -2
  65. package/components/identity.federation/operations/lib/Ctx.d.ts +2 -2
  66. package/components/identity.federation/operations/lib/Ctx.js +1 -2
  67. package/components/identity.federation/operations/lib/Payload.js +1 -2
  68. package/components/identity.federation/operations/lib/decode.d.ts +2 -2
  69. package/components/identity.federation/operations/lib/decode.js +9 -13
  70. package/components/identity.federation/operations/lib/decode.js.map +1 -1
  71. package/components/identity.federation/operations/lib/discovery.d.ts +2 -2
  72. package/components/identity.federation/operations/lib/discovery.js +4 -9
  73. package/components/identity.federation/operations/lib/discovery.js.map +1 -1
  74. package/components/identity.federation/operations/lib/errors.d.ts +10 -10
  75. package/components/identity.federation/operations/lib/errors.js +10 -13
  76. package/components/identity.federation/operations/lib/errors.js.map +1 -1
  77. package/components/identity.federation/operations/lib/exchange.d.ts +2 -2
  78. package/components/identity.federation/operations/lib/exchange.js +8 -35
  79. package/components/identity.federation/operations/lib/exchange.js.map +1 -1
  80. package/components/identity.federation/operations/lib/index.d.ts +4 -4
  81. package/components/identity.federation/operations/lib/index.js +3 -9
  82. package/components/identity.federation/operations/lib/index.js.map +1 -1
  83. package/components/identity.federation/operations/lib/jose.d.ts +1 -41
  84. package/components/identity.federation/operations/lib/jose.js +1 -26
  85. package/components/identity.federation/operations/lib/jose.js.map +1 -1
  86. package/components/identity.federation/operations/lib/resolve.d.ts +2 -2
  87. package/components/identity.federation/operations/lib/resolve.js +5 -9
  88. package/components/identity.federation/operations/lib/resolve.js.map +1 -1
  89. package/components/identity.federation/operations/list.d.ts +1 -1
  90. package/components/identity.federation/operations/list.js +1 -5
  91. package/components/identity.federation/operations/list.js.map +1 -1
  92. package/components/identity.federation/operations/types/Scheme.js +1 -2
  93. package/components/identity.federation/operations/types/configuration.js +1 -2
  94. package/components/identity.federation/operations/types/context.d.ts +2 -2
  95. package/components/identity.federation/operations/types/context.js +1 -2
  96. package/components/identity.federation/operations/types/entity.js +1 -2
  97. package/components/identity.federation/operations/types/index.d.ts +4 -4
  98. package/components/identity.federation/operations/types/index.js +4 -20
  99. package/components/identity.federation/operations/types/index.js.map +1 -1
  100. package/components/identity.federation/source/authenticate.ts +2 -2
  101. package/components/identity.federation/source/create.ts +2 -2
  102. package/components/identity.federation/source/decode.ts +2 -2
  103. package/components/identity.federation/source/delete.ts +1 -1
  104. package/components/identity.federation/source/incept.ts +2 -2
  105. package/components/identity.federation/source/lib/Ctx.ts +2 -2
  106. package/components/identity.federation/source/lib/decode.ts +5 -5
  107. package/components/identity.federation/source/lib/discovery.test.ts +17 -12
  108. package/components/identity.federation/source/lib/discovery.ts +3 -3
  109. package/components/identity.federation/source/lib/exchange.ts +6 -6
  110. package/components/identity.federation/source/lib/index.ts +4 -4
  111. package/components/identity.federation/source/lib/jose.js +1 -5
  112. package/components/identity.federation/source/lib/resolve.ts +5 -5
  113. package/components/identity.federation/source/list.test.ts +9 -6
  114. package/components/identity.federation/source/list.ts +1 -1
  115. package/components/identity.federation/source/types/context.ts +2 -2
  116. package/components/identity.federation/source/types/index.ts +4 -4
  117. package/components/identity.federation/tsconfig.json +2 -1
  118. package/components/identity.federation/tsconfig.tsbuildinfo +1 -0
  119. package/components/identity.keys/operations/create.js +3 -7
  120. package/components/identity.keys/operations/create.js.map +1 -1
  121. package/components/identity.keys/tsconfig.json +1 -0
  122. package/components/identity.keys/tsconfig.tsbuildinfo +1 -0
  123. package/components/identity.otp/operations/authenticate.d.ts +1 -1
  124. package/components/identity.otp/operations/authenticate.js +1 -5
  125. package/components/identity.otp/operations/authenticate.js.map +1 -1
  126. package/components/identity.otp/operations/issue.d.ts +1 -1
  127. package/components/identity.otp/operations/issue.js +1 -5
  128. package/components/identity.otp/operations/issue.js.map +1 -1
  129. package/components/identity.otp/operations/lib/Context.d.ts +1 -1
  130. package/components/identity.otp/operations/lib/Context.js +1 -2
  131. package/components/identity.otp/operations/lib/Entity.js +1 -2
  132. package/components/identity.otp/operations/lib/index.d.ts +1 -1
  133. package/components/identity.otp/operations/lib/index.js +1 -2
  134. package/components/identity.otp/source/authenticate.ts +1 -1
  135. package/components/identity.otp/source/issue.ts +1 -1
  136. package/components/identity.otp/source/lib/Context.ts +1 -1
  137. package/components/identity.otp/source/lib/index.ts +1 -1
  138. package/components/identity.otp/tsconfig.json +1 -0
  139. package/components/identity.otp/tsconfig.tsbuildinfo +1 -0
  140. package/components/identity.passkeys/operations/authenticate.d.ts +1 -1
  141. package/components/identity.passkeys/operations/authenticate.js +1 -5
  142. package/components/identity.passkeys/operations/authenticate.js.map +1 -1
  143. package/components/identity.passkeys/operations/challenge.d.ts +1 -1
  144. package/components/identity.passkeys/operations/challenge.js +7 -11
  145. package/components/identity.passkeys/operations/challenge.js.map +1 -1
  146. package/components/identity.passkeys/operations/create.d.ts +1 -1
  147. package/components/identity.passkeys/operations/create.js +3 -7
  148. package/components/identity.passkeys/operations/create.js.map +1 -1
  149. package/components/identity.passkeys/operations/delete.d.ts +1 -1
  150. package/components/identity.passkeys/operations/delete.js +1 -5
  151. package/components/identity.passkeys/operations/delete.js.map +1 -1
  152. package/components/identity.passkeys/operations/lib/const.js +1 -4
  153. package/components/identity.passkeys/operations/lib/const.js.map +1 -1
  154. package/components/identity.passkeys/operations/list.d.ts +1 -1
  155. package/components/identity.passkeys/operations/list.js +3 -7
  156. package/components/identity.passkeys/operations/list.js.map +1 -1
  157. package/components/identity.passkeys/operations/types/Configuration.js +1 -2
  158. package/components/identity.passkeys/operations/types/Context.d.ts +3 -3
  159. package/components/identity.passkeys/operations/types/Context.js +1 -2
  160. package/components/identity.passkeys/operations/types/Passkey.d.ts +1 -2
  161. package/components/identity.passkeys/operations/types/Passkey.js +1 -2
  162. package/components/identity.passkeys/operations/types/index.d.ts +2 -2
  163. package/components/identity.passkeys/operations/types/index.js +1 -2
  164. package/components/identity.passkeys/operations/use.d.ts +1 -1
  165. package/components/identity.passkeys/operations/use.js +3 -7
  166. package/components/identity.passkeys/operations/use.js.map +1 -1
  167. package/components/identity.passkeys/source/authenticate.ts +1 -1
  168. package/components/identity.passkeys/source/challenge.ts +2 -2
  169. package/components/identity.passkeys/source/create.ts +1 -1
  170. package/components/identity.passkeys/source/delete.ts +1 -1
  171. package/components/identity.passkeys/source/list.ts +2 -2
  172. package/components/identity.passkeys/source/types/Context.ts +3 -3
  173. package/components/identity.passkeys/source/types/Passkey.ts +1 -3
  174. package/components/identity.passkeys/source/types/index.ts +2 -2
  175. package/components/identity.passkeys/source/use.ts +1 -1
  176. package/components/identity.passkeys/tsconfig.json +1 -0
  177. package/components/identity.passkeys/tsconfig.tsbuildinfo +1 -0
  178. package/components/identity.roles/operations/grant.d.ts +1 -1
  179. package/components/identity.roles/operations/grant.js +1 -5
  180. package/components/identity.roles/operations/grant.js.map +1 -1
  181. package/components/identity.roles/operations/lib/Entity.js +1 -2
  182. package/components/identity.roles/operations/list.d.ts +1 -1
  183. package/components/identity.roles/operations/list.js +1 -5
  184. package/components/identity.roles/operations/list.js.map +1 -1
  185. package/components/identity.roles/operations/principal.d.ts +2 -2
  186. package/components/identity.roles/operations/principal.js +1 -5
  187. package/components/identity.roles/operations/principal.js.map +1 -1
  188. package/components/identity.roles/receivers/identity.federation.principal.js +1 -3
  189. package/components/identity.roles/source/grant.ts +1 -1
  190. package/components/identity.roles/source/list.ts +1 -1
  191. package/components/identity.roles/source/principal.ts +2 -2
  192. package/components/identity.roles/tsconfig.json +1 -0
  193. package/components/identity.roles/tsconfig.tsbuildinfo +1 -0
  194. package/components/identity.tokens/operations/authenticate.d.ts +1 -1
  195. package/components/identity.tokens/operations/authenticate.js +1 -5
  196. package/components/identity.tokens/operations/authenticate.js.map +1 -1
  197. package/components/identity.tokens/operations/decrypt.d.ts +1 -1
  198. package/components/identity.tokens/operations/decrypt.js +15 -14
  199. package/components/identity.tokens/operations/decrypt.js.map +1 -1
  200. package/components/identity.tokens/operations/encrypt.d.ts +1 -1
  201. package/components/identity.tokens/operations/encrypt.js +5 -9
  202. package/components/identity.tokens/operations/encrypt.js.map +1 -1
  203. package/components/identity.tokens/operations/issue.d.ts +1 -1
  204. package/components/identity.tokens/operations/issue.js +1 -5
  205. package/components/identity.tokens/operations/issue.js.map +1 -1
  206. package/components/identity.tokens/operations/lib/index.d.ts +3 -3
  207. package/components/identity.tokens/operations/lib/index.js +3 -21
  208. package/components/identity.tokens/operations/lib/index.js.map +1 -1
  209. package/components/identity.tokens/operations/lib/jose.d.ts +1 -41
  210. package/components/identity.tokens/operations/lib/jose.js +1 -26
  211. package/components/identity.tokens/operations/lib/jose.js.map +1 -1
  212. package/components/identity.tokens/operations/lib/key.js +1 -5
  213. package/components/identity.tokens/operations/lib/key.js.map +1 -1
  214. package/components/identity.tokens/operations/lib/pad.js +1 -4
  215. package/components/identity.tokens/operations/lib/pad.js.map +1 -1
  216. package/components/identity.tokens/operations/lib/types.js +1 -2
  217. package/components/identity.tokens/operations/revoke.d.ts +1 -1
  218. package/components/identity.tokens/operations/revoke.js +1 -5
  219. package/components/identity.tokens/operations/revoke.js.map +1 -1
  220. package/components/identity.tokens/receivers/identity.bans.created.js +1 -3
  221. package/components/identity.tokens/receivers/identity.bans.updated.js +1 -3
  222. package/components/identity.tokens/source/authenticate.test.ts +14 -10
  223. package/components/identity.tokens/source/authenticate.ts +1 -1
  224. package/components/identity.tokens/source/decrypt.test.ts +25 -17
  225. package/components/identity.tokens/source/decrypt.ts +12 -5
  226. package/components/identity.tokens/source/encrypt.test.ts +14 -10
  227. package/components/identity.tokens/source/encrypt.ts +3 -3
  228. package/components/identity.tokens/source/issue.ts +1 -1
  229. package/components/identity.tokens/source/lib/index.ts +3 -3
  230. package/components/identity.tokens/source/lib/jose.js +1 -5
  231. package/components/identity.tokens/source/lib/paseto.test.ts +45 -10
  232. package/components/identity.tokens/source/revoke.ts +1 -1
  233. package/components/identity.tokens/tsconfig.json +1 -0
  234. package/components/identity.tokens/tsconfig.tsbuildinfo +1 -0
  235. package/cucumber.mjs +4 -0
  236. package/documentation/protocol.md +24 -0
  237. package/features/octets.cloudinary.feature +8 -2
  238. package/features/octets.download.feature +3 -1
  239. package/features/probes.feature +8 -4
  240. package/features/steps/Captures.ts +3 -1
  241. package/features/steps/Common.ts +27 -2
  242. package/features/steps/Components.ts +10 -4
  243. package/features/steps/Database.ts +4 -1
  244. package/features/steps/Gateway.ts +19 -8
  245. package/features/steps/HTTP.ts +8 -5
  246. package/features/steps/IDP.ts +5 -2
  247. package/features/steps/Identity.ts +7 -4
  248. package/features/steps/OTP.ts +5 -2
  249. package/features/steps/Parameters.ts +5 -1
  250. package/features/steps/Probe.ts +36 -0
  251. package/features/steps/Realtime.ts +8 -5
  252. package/features/steps/Workspace.ts +1 -1
  253. package/features/steps/components/audit/operations/record.js +1 -5
  254. package/features/steps/components/echo/operations/affect.js +1 -5
  255. package/features/steps/components/echo/operations/compute.js +1 -5
  256. package/features/steps/components/echo/operations/echo.js +1 -5
  257. package/features/steps/components/echo/operations/error.js +1 -5
  258. package/features/steps/components/echo/operations/identity.js +1 -5
  259. package/features/steps/components/echo/operations/parameters.js +1 -5
  260. package/features/steps/components/echo/operations/ping.js +1 -5
  261. package/features/steps/components/echo/operations/unwrap.js +1 -5
  262. package/features/steps/components/echo.beacon/operations/hello.js +1 -3
  263. package/features/steps/components/greeter/operations/greet.js +1 -5
  264. package/features/steps/components/notify/operations/send.js +1 -5
  265. package/features/steps/components/octets.tester/operations/authority.js +1 -5
  266. package/features/steps/components/octets.tester/operations/bar.js +1 -3
  267. package/features/steps/components/octets.tester/operations/baz.js +1 -3
  268. package/features/steps/components/octets.tester/operations/concat.js +1 -3
  269. package/features/steps/components/octets.tester/operations/echo.js +1 -3
  270. package/features/steps/components/octets.tester/operations/err.js +1 -3
  271. package/features/steps/components/octets.tester/operations/foo.js +1 -3
  272. package/features/steps/components/octets.tester/operations/id.js +1 -3
  273. package/features/steps/components/octets.tester/operations/identity.js +1 -3
  274. package/features/steps/components/octets.tester/operations/redirect.js +1 -3
  275. package/features/steps/components/octets.tester/operations/yex.js +1 -3
  276. package/features/steps/components/octets.tester/operations/yield.js +1 -3
  277. package/features/steps/components/orders/operations/create.js +1 -5
  278. package/features/steps/components/pricing/operations/quote.js +1 -5
  279. package/features/steps/components/sequences/operations/numbers.js +1 -3
  280. package/features/steps/components/sequences/operations/tokens.js +2 -4
  281. package/features/steps/components/users/operations/create.js +1 -5
  282. package/features/steps/map.ts +5 -1
  283. package/package.json +16 -21
  284. package/readme.md +7 -13
  285. package/schemas/annotation.cos.yaml +11 -0
  286. package/source/Annotation.ts +11 -0
  287. package/source/Branch.test.ts +10 -7
  288. package/source/Branch.ts +2 -2
  289. package/source/Composition.ts +2 -2
  290. package/source/Context.ts +1 -1
  291. package/source/Directive.test.ts +52 -40
  292. package/source/Directive.ts +4 -4
  293. package/source/Endpoint.ts +6 -6
  294. package/source/Factory.ts +18 -18
  295. package/source/Gateway.ts +7 -7
  296. package/source/HTTP/Context.ts +5 -10
  297. package/source/HTTP/Probe.ts +112 -0
  298. package/source/HTTP/Server.ts +126 -77
  299. package/source/HTTP/Timing.ts +1 -1
  300. package/source/HTTP/formats/index.ts +4 -4
  301. package/source/HTTP/formats/yaml.test.ts +6 -4
  302. package/source/HTTP/formats/yaml.ts +1 -1
  303. package/source/HTTP/index.ts +6 -4
  304. package/source/HTTP/messages.test.ts +31 -21
  305. package/source/HTTP/messages.ts +42 -45
  306. package/source/HTTP/types.ts +39 -0
  307. package/source/Interception.ts +1 -1
  308. package/source/Mapping.ts +6 -6
  309. package/source/Query.test.ts +8 -5
  310. package/source/Query.ts +6 -6
  311. package/source/RTD/Context.ts +3 -3
  312. package/source/RTD/Directives.ts +4 -4
  313. package/source/RTD/Endpoint.ts +4 -4
  314. package/source/RTD/Match.ts +1 -1
  315. package/source/RTD/Method.ts +3 -3
  316. package/source/RTD/Node.ts +3 -3
  317. package/source/RTD/Route.ts +3 -3
  318. package/source/RTD/Tree.ts +8 -8
  319. package/source/RTD/expiration.test.ts +20 -17
  320. package/source/RTD/factory.ts +7 -7
  321. package/source/RTD/index.ts +8 -8
  322. package/source/RTD/segment.test.ts +13 -10
  323. package/source/RTD/syntax/index.ts +2 -2
  324. package/source/RTD/syntax/parse.test.ts +30 -28
  325. package/source/RTD/syntax/parse.ts +2 -2
  326. package/source/Remotes.test.ts +27 -14
  327. package/source/Remotes.ts +1 -1
  328. package/source/Tenant.ts +3 -3
  329. package/source/deployment.ts +19 -10
  330. package/source/directives/auth/Anonymous.ts +1 -1
  331. package/source/directives/auth/Anyone.ts +1 -1
  332. package/source/directives/auth/Assert.ts +3 -3
  333. package/source/directives/auth/Authorization.ts +19 -19
  334. package/source/directives/auth/Delegate.ts +3 -3
  335. package/source/directives/auth/Echo.ts +3 -3
  336. package/source/directives/auth/Federation.ts +2 -2
  337. package/source/directives/auth/Id.ts +2 -2
  338. package/source/directives/auth/Incept.ts +6 -6
  339. package/source/directives/auth/Input.ts +3 -3
  340. package/source/directives/auth/Role.test.ts +32 -19
  341. package/source/directives/auth/Role.ts +2 -2
  342. package/source/directives/auth/Rule.ts +2 -2
  343. package/source/directives/auth/Scheme.ts +3 -3
  344. package/source/directives/auth/create.ts +1 -1
  345. package/source/directives/auth/index.ts +1 -1
  346. package/source/directives/auth/schemes.ts +1 -1
  347. package/source/directives/auth/split.ts +2 -2
  348. package/source/directives/auth/types.ts +3 -3
  349. package/source/directives/cache/Cache.ts +6 -6
  350. package/source/directives/cache/Control.ts +1 -1
  351. package/source/directives/cache/Exact.ts +1 -1
  352. package/source/directives/cache/index.ts +1 -1
  353. package/source/directives/cache/types.ts +1 -1
  354. package/source/directives/cors/CORS.ts +2 -2
  355. package/source/directives/cors/index.ts +1 -1
  356. package/source/directives/dev/Development.ts +7 -7
  357. package/source/directives/dev/Faulty.ts +4 -4
  358. package/source/directives/dev/Sleep.ts +5 -5
  359. package/source/directives/dev/Stub.ts +2 -2
  360. package/source/directives/dev/Throw.ts +2 -2
  361. package/source/directives/dev/index.ts +1 -1
  362. package/source/directives/dev/types.ts +1 -1
  363. package/source/directives/flow/Compose.ts +3 -3
  364. package/source/directives/flow/Fetch.ts +6 -6
  365. package/source/directives/flow/Flow.ts +6 -6
  366. package/source/directives/flow/index.ts +1 -1
  367. package/source/directives/flow/types.ts +2 -2
  368. package/source/directives/index.ts +11 -11
  369. package/source/directives/io/Directive.ts +4 -4
  370. package/source/directives/io/IO.ts +8 -8
  371. package/source/directives/io/Input.ts +5 -5
  372. package/source/directives/io/Output.ts +5 -5
  373. package/source/directives/io/Throttle.ts +6 -6
  374. package/source/directives/io/index.ts +1 -1
  375. package/source/directives/io/lib/throttle/Configuration.test.ts +10 -7
  376. package/source/directives/io/lib/throttle/Keys.ts +5 -5
  377. package/source/directives/io/lib/throttle/Quotas.test.ts +48 -45
  378. package/source/directives/io/lib/throttle/Quotas.ts +5 -5
  379. package/source/directives/io/lib/throttle/Sync.test.ts +28 -20
  380. package/source/directives/io/lib/throttle/Sync.ts +1 -1
  381. package/source/directives/io/lib/throttle/components/Component.ts +2 -2
  382. package/source/directives/io/lib/throttle/components/IP.ts +2 -2
  383. package/source/directives/io/lib/throttle/components/Identity.ts +2 -2
  384. package/source/directives/io/lib/throttle/components/Path.ts +2 -2
  385. package/source/directives/io/lib/throttle/components/Route.ts +1 -1
  386. package/source/directives/io/lib/throttle/components/Segment.ts +3 -3
  387. package/source/directives/io/lib/throttle/components/index.ts +7 -7
  388. package/source/directives/io/lib/throttle/conditions/Condition.ts +1 -1
  389. package/source/directives/io/lib/throttle/conditions/Status.ts +2 -2
  390. package/source/directives/io/lib/throttle/conditions/index.ts +3 -3
  391. package/source/directives/io/lib/throttle/index.ts +3 -3
  392. package/source/directives/io/schemas.test.ts +12 -9
  393. package/source/directives/io/schemas.ts +7 -6
  394. package/source/directives/map/Authority.ts +2 -2
  395. package/source/directives/map/Buffer.ts +2 -2
  396. package/source/directives/map/Claims.ts +3 -3
  397. package/source/directives/map/Directive.ts +2 -2
  398. package/source/directives/map/Headers.ts +3 -3
  399. package/source/directives/map/Language.ts +6 -6
  400. package/source/directives/map/Languages.ts +1 -1
  401. package/source/directives/map/Map.ts +14 -14
  402. package/source/directives/map/Mapping.ts +4 -4
  403. package/source/directives/map/Segments.ts +2 -2
  404. package/source/directives/map/index.ts +1 -1
  405. package/source/directives/octets/Context.ts +2 -2
  406. package/source/directives/octets/Delete.ts +9 -9
  407. package/source/directives/octets/Directive.ts +3 -3
  408. package/source/directives/octets/Get.ts +8 -8
  409. package/source/directives/octets/Octets.ts +11 -11
  410. package/source/directives/octets/Put.ts +11 -11
  411. package/source/directives/octets/Workflow.ts +9 -9
  412. package/source/directives/octets/bytes.test.ts +21 -18
  413. package/source/directives/octets/index.ts +1 -1
  414. package/source/directives/octets/schemas.test.ts +10 -5
  415. package/source/directives/octets/schemas.ts +6 -6
  416. package/source/directives/octets/types.ts +2 -2
  417. package/source/directives/octets/workflows/Execution.ts +2 -2
  418. package/source/directives/octets/workflows/Workflow.ts +4 -4
  419. package/source/directives/octets/workflows/index.ts +1 -1
  420. package/source/directives/require/Directive.ts +1 -1
  421. package/source/directives/require/Headers.ts +3 -3
  422. package/source/directives/require/Require.ts +4 -4
  423. package/source/directives/require/index.ts +1 -1
  424. package/source/exceptions.ts +2 -2
  425. package/source/index.ts +5 -5
  426. package/source/io.ts +1 -1
  427. package/source/manifest.test.ts +12 -10
  428. package/source/manifest.ts +3 -3
  429. package/source/root.ts +1 -1
  430. package/source/schemas.ts +5 -5
  431. package/transpiled/Annotation.d.ts +10 -0
  432. package/transpiled/Annotation.js +1 -2
  433. package/transpiled/Branch.d.ts +2 -2
  434. package/transpiled/Branch.js +1 -5
  435. package/transpiled/Branch.js.map +1 -1
  436. package/transpiled/Composition.d.ts +1 -1
  437. package/transpiled/Composition.js +9 -14
  438. package/transpiled/Composition.js.map +1 -1
  439. package/transpiled/Context.d.ts +1 -1
  440. package/transpiled/Context.js +1 -2
  441. package/transpiled/Directive.d.ts +4 -4
  442. package/transpiled/Directive.js +6 -11
  443. package/transpiled/Directive.js.map +1 -1
  444. package/transpiled/Endpoint.d.ts +6 -6
  445. package/transpiled/Endpoint.js +10 -38
  446. package/transpiled/Endpoint.js.map +1 -1
  447. package/transpiled/Factory.d.ts +3 -3
  448. package/transpiled/Factory.js +31 -61
  449. package/transpiled/Factory.js.map +1 -1
  450. package/transpiled/Gateway.d.ts +4 -4
  451. package/transpiled/Gateway.js +25 -55
  452. package/transpiled/Gateway.js.map +1 -1
  453. package/transpiled/HTTP/Context.d.ts +4 -11
  454. package/transpiled/HTTP/Context.js +15 -22
  455. package/transpiled/HTTP/Context.js.map +1 -1
  456. package/transpiled/HTTP/Probe.d.ts +36 -0
  457. package/transpiled/HTTP/Probe.js +90 -0
  458. package/transpiled/HTTP/Probe.js.map +1 -0
  459. package/transpiled/HTTP/Server.d.ts +13 -9
  460. package/transpiled/HTTP/Server.js +134 -130
  461. package/transpiled/HTTP/Server.js.map +1 -1
  462. package/transpiled/HTTP/Timing.d.ts +1 -2
  463. package/transpiled/HTTP/Timing.js +6 -10
  464. package/transpiled/HTTP/Timing.js.map +1 -1
  465. package/transpiled/HTTP/exceptions.js +15 -33
  466. package/transpiled/HTTP/exceptions.js.map +1 -1
  467. package/transpiled/HTTP/formats/index.d.ts +0 -2
  468. package/transpiled/HTTP/formats/index.js +6 -32
  469. package/transpiled/HTTP/formats/index.js.map +1 -1
  470. package/transpiled/HTTP/formats/json.d.ts +0 -2
  471. package/transpiled/HTTP/formats/json.js +4 -9
  472. package/transpiled/HTTP/formats/json.js.map +1 -1
  473. package/transpiled/HTTP/formats/msgpack.d.ts +0 -2
  474. package/transpiled/HTTP/formats/msgpack.js +7 -12
  475. package/transpiled/HTTP/formats/msgpack.js.map +1 -1
  476. package/transpiled/HTTP/formats/text.d.ts +0 -2
  477. package/transpiled/HTTP/formats/text.js +4 -9
  478. package/transpiled/HTTP/formats/text.js.map +1 -1
  479. package/transpiled/HTTP/formats/yaml.d.ts +0 -2
  480. package/transpiled/HTTP/formats/yaml.js +5 -33
  481. package/transpiled/HTTP/formats/yaml.js.map +1 -1
  482. package/transpiled/HTTP/index.d.ts +6 -4
  483. package/transpiled/HTTP/index.js +6 -20
  484. package/transpiled/HTTP/index.js.map +1 -1
  485. package/transpiled/HTTP/messages.d.ts +9 -5
  486. package/transpiled/HTTP/messages.js +56 -90
  487. package/transpiled/HTTP/messages.js.map +1 -1
  488. package/transpiled/HTTP/types.d.ts +37 -0
  489. package/transpiled/HTTP/types.js +2 -0
  490. package/transpiled/HTTP/types.js.map +1 -0
  491. package/transpiled/Interception.d.ts +1 -1
  492. package/transpiled/Interception.js +1 -5
  493. package/transpiled/Interception.js.map +1 -1
  494. package/transpiled/Introspection.js +1 -2
  495. package/transpiled/Mapping.d.ts +6 -6
  496. package/transpiled/Mapping.js +4 -9
  497. package/transpiled/Mapping.js.map +1 -1
  498. package/transpiled/Query.d.ts +4 -4
  499. package/transpiled/Query.js +8 -38
  500. package/transpiled/Query.js.map +1 -1
  501. package/transpiled/RTD/Context.d.ts +3 -3
  502. package/transpiled/RTD/Context.js +1 -2
  503. package/transpiled/RTD/Directives.d.ts +4 -4
  504. package/transpiled/RTD/Directives.js +1 -2
  505. package/transpiled/RTD/Endpoint.d.ts +4 -4
  506. package/transpiled/RTD/Endpoint.js +1 -2
  507. package/transpiled/RTD/Match.d.ts +1 -1
  508. package/transpiled/RTD/Match.js +1 -2
  509. package/transpiled/RTD/Method.d.ts +3 -3
  510. package/transpiled/RTD/Method.js +1 -5
  511. package/transpiled/RTD/Method.js.map +1 -1
  512. package/transpiled/RTD/Node.d.ts +3 -3
  513. package/transpiled/RTD/Node.js +1 -5
  514. package/transpiled/RTD/Node.js.map +1 -1
  515. package/transpiled/RTD/Route.d.ts +3 -3
  516. package/transpiled/RTD/Route.js +1 -5
  517. package/transpiled/RTD/Route.js.map +1 -1
  518. package/transpiled/RTD/Tree.d.ts +5 -5
  519. package/transpiled/RTD/Tree.js +6 -10
  520. package/transpiled/RTD/Tree.js.map +1 -1
  521. package/transpiled/RTD/factory.d.ts +3 -3
  522. package/transpiled/RTD/factory.js +13 -18
  523. package/transpiled/RTD/factory.js.map +1 -1
  524. package/transpiled/RTD/index.d.ts +8 -8
  525. package/transpiled/RTD/index.js +8 -37
  526. package/transpiled/RTD/index.js.map +1 -1
  527. package/transpiled/RTD/segment.js +2 -7
  528. package/transpiled/RTD/segment.js.map +1 -1
  529. package/transpiled/RTD/syntax/index.d.ts +2 -2
  530. package/transpiled/RTD/syntax/index.js +2 -18
  531. package/transpiled/RTD/syntax/index.js.map +1 -1
  532. package/transpiled/RTD/syntax/parse.d.ts +1 -1
  533. package/transpiled/RTD/syntax/parse.js +5 -33
  534. package/transpiled/RTD/syntax/parse.js.map +1 -1
  535. package/transpiled/RTD/syntax/types.js +1 -4
  536. package/transpiled/RTD/syntax/types.js.map +1 -1
  537. package/transpiled/Remotes.d.ts +1 -1
  538. package/transpiled/Remotes.js +3 -7
  539. package/transpiled/Remotes.js.map +1 -1
  540. package/transpiled/Tenant.d.ts +2 -2
  541. package/transpiled/Tenant.js +6 -10
  542. package/transpiled/Tenant.js.map +1 -1
  543. package/transpiled/const.js +1 -4
  544. package/transpiled/const.js.map +1 -1
  545. package/transpiled/deployment.d.ts +1 -1
  546. package/transpiled/deployment.js +22 -45
  547. package/transpiled/deployment.js.map +1 -1
  548. package/transpiled/directives/auth/Anonymous.d.ts +1 -1
  549. package/transpiled/directives/auth/Anonymous.js +1 -5
  550. package/transpiled/directives/auth/Anonymous.js.map +1 -1
  551. package/transpiled/directives/auth/Anyone.d.ts +1 -1
  552. package/transpiled/directives/auth/Anyone.js +1 -5
  553. package/transpiled/directives/auth/Anyone.js.map +1 -1
  554. package/transpiled/directives/auth/Assert.d.ts +1 -1
  555. package/transpiled/directives/auth/Assert.js +7 -37
  556. package/transpiled/directives/auth/Assert.js.map +1 -1
  557. package/transpiled/directives/auth/Authorization.d.ts +5 -5
  558. package/transpiled/directives/auth/Authorization.js +41 -71
  559. package/transpiled/directives/auth/Authorization.js.map +1 -1
  560. package/transpiled/directives/auth/Delegate.d.ts +1 -1
  561. package/transpiled/directives/auth/Delegate.js +5 -9
  562. package/transpiled/directives/auth/Delegate.js.map +1 -1
  563. package/transpiled/directives/auth/Echo.d.ts +2 -2
  564. package/transpiled/directives/auth/Echo.js +3 -7
  565. package/transpiled/directives/auth/Echo.js.map +1 -1
  566. package/transpiled/directives/auth/Federation.d.ts +2 -2
  567. package/transpiled/directives/auth/Federation.js +3 -10
  568. package/transpiled/directives/auth/Federation.js.map +1 -1
  569. package/transpiled/directives/auth/Id.d.ts +2 -2
  570. package/transpiled/directives/auth/Id.js +1 -5
  571. package/transpiled/directives/auth/Id.js.map +1 -1
  572. package/transpiled/directives/auth/Incept.d.ts +2 -2
  573. package/transpiled/directives/auth/Incept.js +16 -46
  574. package/transpiled/directives/auth/Incept.js.map +1 -1
  575. package/transpiled/directives/auth/Input.d.ts +2 -2
  576. package/transpiled/directives/auth/Input.js +3 -7
  577. package/transpiled/directives/auth/Input.js.map +1 -1
  578. package/transpiled/directives/auth/Role.d.ts +2 -2
  579. package/transpiled/directives/auth/Role.js +3 -10
  580. package/transpiled/directives/auth/Role.js.map +1 -1
  581. package/transpiled/directives/auth/Rule.d.ts +2 -2
  582. package/transpiled/directives/auth/Rule.js +1 -5
  583. package/transpiled/directives/auth/Rule.js.map +1 -1
  584. package/transpiled/directives/auth/Scheme.d.ts +1 -1
  585. package/transpiled/directives/auth/Scheme.js +4 -31
  586. package/transpiled/directives/auth/Scheme.js.map +1 -1
  587. package/transpiled/directives/auth/create.d.ts +1 -1
  588. package/transpiled/directives/auth/create.js +3 -7
  589. package/transpiled/directives/auth/create.js.map +1 -1
  590. package/transpiled/directives/auth/index.d.ts +1 -1
  591. package/transpiled/directives/auth/index.js +2 -5
  592. package/transpiled/directives/auth/index.js.map +1 -1
  593. package/transpiled/directives/auth/schemes.d.ts +1 -1
  594. package/transpiled/directives/auth/schemes.js +3 -6
  595. package/transpiled/directives/auth/schemes.js.map +1 -1
  596. package/transpiled/directives/auth/split.d.ts +1 -1
  597. package/transpiled/directives/auth/split.js +2 -29
  598. package/transpiled/directives/auth/split.js.map +1 -1
  599. package/transpiled/directives/auth/types.d.ts +3 -3
  600. package/transpiled/directives/auth/types.js +1 -2
  601. package/transpiled/directives/cache/Cache.d.ts +4 -4
  602. package/transpiled/directives/cache/Cache.js +6 -10
  603. package/transpiled/directives/cache/Cache.js.map +1 -1
  604. package/transpiled/directives/cache/Control.d.ts +1 -1
  605. package/transpiled/directives/cache/Control.js +3 -7
  606. package/transpiled/directives/cache/Control.js.map +1 -1
  607. package/transpiled/directives/cache/Exact.d.ts +1 -1
  608. package/transpiled/directives/cache/Exact.js +2 -6
  609. package/transpiled/directives/cache/Exact.js.map +1 -1
  610. package/transpiled/directives/cache/index.d.ts +1 -1
  611. package/transpiled/directives/cache/index.js +2 -5
  612. package/transpiled/directives/cache/index.js.map +1 -1
  613. package/transpiled/directives/cache/types.d.ts +1 -1
  614. package/transpiled/directives/cache/types.js +1 -2
  615. package/transpiled/directives/cors/CORS.d.ts +2 -2
  616. package/transpiled/directives/cors/CORS.js +1 -5
  617. package/transpiled/directives/cors/CORS.js.map +1 -1
  618. package/transpiled/directives/cors/index.d.ts +1 -1
  619. package/transpiled/directives/cors/index.js +2 -5
  620. package/transpiled/directives/cors/index.js.map +1 -1
  621. package/transpiled/directives/dev/Development.d.ts +3 -3
  622. package/transpiled/directives/dev/Development.js +9 -13
  623. package/transpiled/directives/dev/Development.js.map +1 -1
  624. package/transpiled/directives/dev/Faulty.d.ts +2 -2
  625. package/transpiled/directives/dev/Faulty.js +8 -15
  626. package/transpiled/directives/dev/Faulty.js.map +1 -1
  627. package/transpiled/directives/dev/Sleep.d.ts +2 -2
  628. package/transpiled/directives/dev/Sleep.js +13 -20
  629. package/transpiled/directives/dev/Sleep.js.map +1 -1
  630. package/transpiled/directives/dev/Stub.d.ts +2 -2
  631. package/transpiled/directives/dev/Stub.js +1 -5
  632. package/transpiled/directives/dev/Stub.js.map +1 -1
  633. package/transpiled/directives/dev/Throw.d.ts +2 -2
  634. package/transpiled/directives/dev/Throw.js +1 -5
  635. package/transpiled/directives/dev/Throw.js.map +1 -1
  636. package/transpiled/directives/dev/index.d.ts +1 -1
  637. package/transpiled/directives/dev/index.js +2 -5
  638. package/transpiled/directives/dev/index.js.map +1 -1
  639. package/transpiled/directives/dev/types.d.ts +1 -1
  640. package/transpiled/directives/dev/types.js +1 -2
  641. package/transpiled/directives/flow/Compose.d.ts +2 -2
  642. package/transpiled/directives/flow/Compose.js +10 -37
  643. package/transpiled/directives/flow/Compose.js.map +1 -1
  644. package/transpiled/directives/flow/Fetch.d.ts +5 -5
  645. package/transpiled/directives/flow/Fetch.js +10 -17
  646. package/transpiled/directives/flow/Fetch.js.map +1 -1
  647. package/transpiled/directives/flow/Flow.d.ts +4 -4
  648. package/transpiled/directives/flow/Flow.js +5 -9
  649. package/transpiled/directives/flow/Flow.js.map +1 -1
  650. package/transpiled/directives/flow/index.d.ts +1 -1
  651. package/transpiled/directives/flow/index.js +2 -5
  652. package/transpiled/directives/flow/index.js.map +1 -1
  653. package/transpiled/directives/flow/types.d.ts +2 -2
  654. package/transpiled/directives/flow/types.js +1 -2
  655. package/transpiled/directives/index.d.ts +2 -2
  656. package/transpiled/directives/index.js +11 -14
  657. package/transpiled/directives/index.js.map +1 -1
  658. package/transpiled/directives/io/Directive.d.ts +4 -4
  659. package/transpiled/directives/io/Directive.js +1 -2
  660. package/transpiled/directives/io/IO.d.ts +4 -4
  661. package/transpiled/directives/io/IO.js +11 -15
  662. package/transpiled/directives/io/IO.js.map +1 -1
  663. package/transpiled/directives/io/Input.d.ts +2 -2
  664. package/transpiled/directives/io/Input.js +5 -32
  665. package/transpiled/directives/io/Input.js.map +1 -1
  666. package/transpiled/directives/io/Message.js +1 -2
  667. package/transpiled/directives/io/Output.d.ts +2 -2
  668. package/transpiled/directives/io/Output.js +6 -33
  669. package/transpiled/directives/io/Output.js.map +1 -1
  670. package/transpiled/directives/io/Throttle.d.ts +4 -4
  671. package/transpiled/directives/io/Throttle.js +6 -33
  672. package/transpiled/directives/io/Throttle.js.map +1 -1
  673. package/transpiled/directives/io/index.d.ts +1 -1
  674. package/transpiled/directives/io/index.js +2 -5
  675. package/transpiled/directives/io/index.js.map +1 -1
  676. package/transpiled/directives/io/lib/throttle/Configuration.js +1 -5
  677. package/transpiled/directives/io/lib/throttle/Configuration.js.map +1 -1
  678. package/transpiled/directives/io/lib/throttle/Keys.d.ts +5 -5
  679. package/transpiled/directives/io/lib/throttle/Keys.js +7 -11
  680. package/transpiled/directives/io/lib/throttle/Keys.js.map +1 -1
  681. package/transpiled/directives/io/lib/throttle/Quotas.d.ts +5 -5
  682. package/transpiled/directives/io/lib/throttle/Quotas.js +3 -7
  683. package/transpiled/directives/io/lib/throttle/Quotas.js.map +1 -1
  684. package/transpiled/directives/io/lib/throttle/Sync.d.ts +1 -1
  685. package/transpiled/directives/io/lib/throttle/Sync.js +3 -7
  686. package/transpiled/directives/io/lib/throttle/Sync.js.map +1 -1
  687. package/transpiled/directives/io/lib/throttle/components/Component.d.ts +2 -2
  688. package/transpiled/directives/io/lib/throttle/components/Component.js +1 -2
  689. package/transpiled/directives/io/lib/throttle/components/IP.d.ts +2 -2
  690. package/transpiled/directives/io/lib/throttle/components/IP.js +1 -5
  691. package/transpiled/directives/io/lib/throttle/components/IP.js.map +1 -1
  692. package/transpiled/directives/io/lib/throttle/components/Identity.d.ts +2 -2
  693. package/transpiled/directives/io/lib/throttle/components/Identity.js +1 -5
  694. package/transpiled/directives/io/lib/throttle/components/Identity.js.map +1 -1
  695. package/transpiled/directives/io/lib/throttle/components/Path.d.ts +2 -2
  696. package/transpiled/directives/io/lib/throttle/components/Path.js +1 -5
  697. package/transpiled/directives/io/lib/throttle/components/Path.js.map +1 -1
  698. package/transpiled/directives/io/lib/throttle/components/Route.d.ts +1 -1
  699. package/transpiled/directives/io/lib/throttle/components/Route.js +1 -5
  700. package/transpiled/directives/io/lib/throttle/components/Route.js.map +1 -1
  701. package/transpiled/directives/io/lib/throttle/components/Segment.d.ts +3 -3
  702. package/transpiled/directives/io/lib/throttle/components/Segment.js +3 -10
  703. package/transpiled/directives/io/lib/throttle/components/Segment.js.map +1 -1
  704. package/transpiled/directives/io/lib/throttle/components/index.d.ts +2 -2
  705. package/transpiled/directives/io/lib/throttle/components/index.js +11 -14
  706. package/transpiled/directives/io/lib/throttle/components/index.js.map +1 -1
  707. package/transpiled/directives/io/lib/throttle/conditions/Condition.d.ts +1 -1
  708. package/transpiled/directives/io/lib/throttle/conditions/Condition.js +1 -2
  709. package/transpiled/directives/io/lib/throttle/conditions/Status.d.ts +2 -2
  710. package/transpiled/directives/io/lib/throttle/conditions/Status.js +3 -10
  711. package/transpiled/directives/io/lib/throttle/conditions/Status.js.map +1 -1
  712. package/transpiled/directives/io/lib/throttle/conditions/index.d.ts +2 -2
  713. package/transpiled/directives/io/lib/throttle/conditions/index.js +3 -6
  714. package/transpiled/directives/io/lib/throttle/conditions/index.js.map +1 -1
  715. package/transpiled/directives/io/lib/throttle/index.d.ts +3 -3
  716. package/transpiled/directives/io/lib/throttle/index.js +3 -9
  717. package/transpiled/directives/io/lib/throttle/index.js.map +1 -1
  718. package/transpiled/directives/io/schemas.d.ts +5 -5
  719. package/transpiled/directives/io/schemas.js +8 -14
  720. package/transpiled/directives/io/schemas.js.map +1 -1
  721. package/transpiled/directives/map/Authority.d.ts +2 -2
  722. package/transpiled/directives/map/Authority.js +4 -11
  723. package/transpiled/directives/map/Authority.js.map +1 -1
  724. package/transpiled/directives/map/Buffer.d.ts +2 -2
  725. package/transpiled/directives/map/Buffer.js +4 -11
  726. package/transpiled/directives/map/Buffer.js.map +1 -1
  727. package/transpiled/directives/map/Claims.d.ts +3 -3
  728. package/transpiled/directives/map/Claims.js +5 -12
  729. package/transpiled/directives/map/Claims.js.map +1 -1
  730. package/transpiled/directives/map/Directive.d.ts +2 -2
  731. package/transpiled/directives/map/Directive.js +1 -2
  732. package/transpiled/directives/map/Headers.d.ts +2 -2
  733. package/transpiled/directives/map/Headers.js +7 -14
  734. package/transpiled/directives/map/Headers.js.map +1 -1
  735. package/transpiled/directives/map/Language.d.ts +4 -4
  736. package/transpiled/directives/map/Language.js +10 -17
  737. package/transpiled/directives/map/Language.js.map +1 -1
  738. package/transpiled/directives/map/Languages.d.ts +1 -1
  739. package/transpiled/directives/map/Languages.js +5 -12
  740. package/transpiled/directives/map/Languages.js.map +1 -1
  741. package/transpiled/directives/map/Map.d.ts +6 -6
  742. package/transpiled/directives/map/Map.js +20 -24
  743. package/transpiled/directives/map/Map.js.map +1 -1
  744. package/transpiled/directives/map/Mapping.d.ts +4 -4
  745. package/transpiled/directives/map/Mapping.js +1 -5
  746. package/transpiled/directives/map/Mapping.js.map +1 -1
  747. package/transpiled/directives/map/Properties.js +2 -6
  748. package/transpiled/directives/map/Properties.js.map +1 -1
  749. package/transpiled/directives/map/Segments.d.ts +2 -2
  750. package/transpiled/directives/map/Segments.js +6 -13
  751. package/transpiled/directives/map/Segments.js.map +1 -1
  752. package/transpiled/directives/map/index.d.ts +1 -1
  753. package/transpiled/directives/map/index.js +2 -5
  754. package/transpiled/directives/map/index.js.map +1 -1
  755. package/transpiled/directives/octets/Context.d.ts +2 -2
  756. package/transpiled/directives/octets/Context.js +4 -11
  757. package/transpiled/directives/octets/Context.js.map +1 -1
  758. package/transpiled/directives/octets/Delete.d.ts +6 -6
  759. package/transpiled/directives/octets/Delete.js +9 -36
  760. package/transpiled/directives/octets/Delete.js.map +1 -1
  761. package/transpiled/directives/octets/Directive.d.ts +3 -3
  762. package/transpiled/directives/octets/Directive.js +1 -5
  763. package/transpiled/directives/octets/Directive.js.map +1 -1
  764. package/transpiled/directives/octets/Get.d.ts +3 -3
  765. package/transpiled/directives/octets/Get.js +10 -37
  766. package/transpiled/directives/octets/Get.js.map +1 -1
  767. package/transpiled/directives/octets/Octets.d.ts +5 -5
  768. package/transpiled/directives/octets/Octets.js +15 -19
  769. package/transpiled/directives/octets/Octets.js.map +1 -1
  770. package/transpiled/directives/octets/Put.d.ts +6 -6
  771. package/transpiled/directives/octets/Put.js +17 -44
  772. package/transpiled/directives/octets/Put.js.map +1 -1
  773. package/transpiled/directives/octets/Workflow.d.ts +6 -6
  774. package/transpiled/directives/octets/Workflow.js +7 -34
  775. package/transpiled/directives/octets/Workflow.js.map +1 -1
  776. package/transpiled/directives/octets/bytes.js +3 -10
  777. package/transpiled/directives/octets/bytes.js.map +1 -1
  778. package/transpiled/directives/octets/index.d.ts +1 -1
  779. package/transpiled/directives/octets/index.js +2 -5
  780. package/transpiled/directives/octets/index.js.map +1 -1
  781. package/transpiled/directives/octets/schemas.d.ts +4 -4
  782. package/transpiled/directives/octets/schemas.js +8 -14
  783. package/transpiled/directives/octets/schemas.js.map +1 -1
  784. package/transpiled/directives/octets/types.d.ts +2 -2
  785. package/transpiled/directives/octets/types.js +1 -2
  786. package/transpiled/directives/octets/workflows/Execution.d.ts +2 -3
  787. package/transpiled/directives/octets/workflows/Execution.js +5 -9
  788. package/transpiled/directives/octets/workflows/Execution.js.map +1 -1
  789. package/transpiled/directives/octets/workflows/Workflow.d.ts +3 -3
  790. package/transpiled/directives/octets/workflows/Workflow.js +7 -11
  791. package/transpiled/directives/octets/workflows/Workflow.js.map +1 -1
  792. package/transpiled/directives/octets/workflows/index.d.ts +1 -1
  793. package/transpiled/directives/octets/workflows/index.js +1 -5
  794. package/transpiled/directives/octets/workflows/index.js.map +1 -1
  795. package/transpiled/directives/require/Directive.d.ts +1 -1
  796. package/transpiled/directives/require/Directive.js +1 -2
  797. package/transpiled/directives/require/Headers.d.ts +2 -2
  798. package/transpiled/directives/require/Headers.js +3 -7
  799. package/transpiled/directives/require/Headers.js.map +1 -1
  800. package/transpiled/directives/require/Require.d.ts +3 -3
  801. package/transpiled/directives/require/Require.js +6 -13
  802. package/transpiled/directives/require/Require.js.map +1 -1
  803. package/transpiled/directives/require/index.d.ts +1 -1
  804. package/transpiled/directives/require/index.js +2 -5
  805. package/transpiled/directives/require/index.js.map +1 -1
  806. package/transpiled/discovery.js +1 -2
  807. package/transpiled/exceptions.d.ts +1 -1
  808. package/transpiled/exceptions.js +8 -35
  809. package/transpiled/exceptions.js.map +1 -1
  810. package/transpiled/index.d.ts +5 -5
  811. package/transpiled/index.js +4 -11
  812. package/transpiled/index.js.map +1 -1
  813. package/transpiled/io.d.ts +1 -1
  814. package/transpiled/io.js +1 -2
  815. package/transpiled/manifest.d.ts +1 -1
  816. package/transpiled/manifest.js +8 -38
  817. package/transpiled/manifest.js.map +1 -1
  818. package/transpiled/root.d.ts +1 -1
  819. package/transpiled/root.js +5 -9
  820. package/transpiled/root.js.map +1 -1
  821. package/transpiled/schemas.d.ts +3 -3
  822. package/transpiled/schemas.js +7 -13
  823. package/transpiled/schemas.js.map +1 -1
  824. package/tsconfig.json +2 -1
  825. package/tsconfig.tsbuildinfo +1 -0
  826. package/components/identity.bans/operations/tsconfig.tsbuildinfo +0 -1
  827. package/components/identity.basic/operations/tsconfig.tsbuildinfo +0 -1
  828. package/components/identity.credentials/operations/tsconfig.tsbuildinfo +0 -1
  829. package/components/identity.federation/operations/tsconfig.tsbuildinfo +0 -1
  830. package/components/identity.keys/operations/tsconfig.tsbuildinfo +0 -1
  831. package/components/identity.otp/operations/tsconfig.tsbuildinfo +0 -1
  832. package/components/identity.passkeys/operations/tsconfig.tsbuildinfo +0 -1
  833. package/components/identity.roles/operations/tsconfig.tsbuildinfo +0 -1
  834. package/components/identity.tokens/operations/tsconfig.tsbuildinfo +0 -1
  835. package/cucumber.js +0 -7
  836. package/source/index.test.ts +0 -9
  837. package/transpiled/tsconfig.tsbuildinfo +0 -1
@@ -0,0 +1,112 @@
1
+ import * as http from 'node:http'
2
+ import { console } from 'openspan'
3
+
4
+ /**
5
+ * The readiness probe, on a port of its own.
6
+ *
7
+ * It cannot share the port the gateway serves traffic on: kubelet speaks HTTP/1.1 only, and a
8
+ * cleartext HTTP/2 server answers nothing else on its port — there is no ALPN to negotiate with.
9
+ *
10
+ * It is the gateway's own readiness, not the process's. The identity composition nested in this
11
+ * process connects before route discovery has settled, so a probe tied to that composition would
12
+ * report ready while the gateway still had no routes and no open port.
13
+ */
14
+ export class Probe {
15
+ private readonly server = http.createServer()
16
+ private readonly port: number
17
+ private readonly path: string
18
+
19
+ private ready = false
20
+ private startedAt = 0
21
+ private listening = false
22
+ private skipped = false
23
+
24
+ public constructor (port: number, path: string = PATH) {
25
+ this.port = port
26
+ this.path = path
27
+
28
+ this.server.on('request', (request, response) => this.listener(request, response))
29
+ }
30
+
31
+ public async listen (): Promise<void> {
32
+ this.startedAt = Date.now()
33
+
34
+ try {
35
+ await new Promise<void>((resolve, reject) => {
36
+ this.server.once('error', reject)
37
+ this.server.listen(this.port, () => {
38
+ this.server.removeListener('error', reject)
39
+ resolve()
40
+ })
41
+ })
42
+ } catch (error: any) {
43
+ // processes sharing a host share the port; in a pod nothing else claims it
44
+ if (error?.code === 'EADDRINUSE') {
45
+ this.skipped = true
46
+
47
+ console.warn('Ready probe port already in use, skipping', { port: this.port })
48
+
49
+ return
50
+ }
51
+
52
+ throw error
53
+ }
54
+
55
+ this.listening = true
56
+
57
+ // a probe answers while the process runs; it must never be the reason it keeps running
58
+ this.server.unref()
59
+ }
60
+
61
+ /** The gateway is listening and has routes: answer `200`. */
62
+ public complete (): void {
63
+ this.ready = true
64
+
65
+ // the IPC signal is not tied to the probe: a process that gave up the shared port is
66
+ // still ready, and pm2 `wait_ready` would otherwise block until `listen_timeout`
67
+ process.send?.('ready')
68
+ }
69
+
70
+ public async close (): Promise<void> {
71
+ this.ready = false
72
+
73
+ if (!this.listening || this.skipped)
74
+ return
75
+
76
+ this.listening = false
77
+
78
+ // keep-alive connections would otherwise hold the server handle, delaying the exit
79
+ this.server.closeAllConnections()
80
+
81
+ await new Promise<void>((resolve) => this.server.close(() => resolve()))
82
+ }
83
+
84
+ private listener (request: http.IncomingMessage, response: http.ServerResponse): void {
85
+ if (request.url !== this.path) {
86
+ response.writeHead(404).end()
87
+
88
+ return
89
+ }
90
+
91
+ if (this.ready)
92
+ response.writeHead(200, { 'cache-control': 'no-store' }).end()
93
+ else {
94
+ const remaining = Math.ceil((Date.now() - this.startedAt) / 1000).toString()
95
+
96
+ response.writeHead(503, { 'retry-after': remaining }).end()
97
+ }
98
+ }
99
+ }
100
+
101
+ /**
102
+ * Reserved for this probe. `8001` is the Telemetry readiness probe's, and `toa export` refuses a
103
+ * port claimed twice — `toa mono` and a local run put every service in one process.
104
+ */
105
+ export const PROBE = 8004
106
+ export const PATH = '/.ready'
107
+
108
+ /**
109
+ * The initial delay of the readiness probe. The server does not sleep for it: whoever
110
+ * probes is the one that waits, and doing it here as well only delayed the process twice.
111
+ */
112
+ export const DELAY = 3 // seconds
@@ -2,36 +2,42 @@ import assert from 'node:assert'
2
2
  import fs from 'node:fs'
3
3
  import os from 'node:os'
4
4
  import * as http from 'node:http'
5
+ import * as http2 from 'node:http2'
5
6
  import { once } from 'node:events'
6
7
  import { setTimeout } from 'node:timers/promises'
7
8
  import { console, current, decide, decode, run, type SpanContext } from 'openspan'
8
9
  import { Connector } from '@toa.io/core'
9
- import { type OutgoingMessage, write } from './messages'
10
- import { ClientError, Exception } from './exceptions'
11
- import { Context, type IncomingMessage } from './Context'
10
+ import { type OutgoingMessage, write } from './messages.js'
11
+ import { ClientError, Exception } from './exceptions.js'
12
+ import { Context } from './Context.js'
13
+ import { PROBE, Probe } from './Probe.js'
14
+ import type { IncomingMessage, Protocol, ServerResponse } from './types.js'
12
15
 
13
16
  export class Server extends Connector {
14
- private readonly server: http.Server = http.createServer()
17
+ private readonly server: http.Server | http2.Http2Server
15
18
  private readonly properties: Properties
16
19
  private readonly authorities: Record<string, string>
20
+
21
+ /** Tracked for the drain: `Http2Server` has no `closeIdleConnections`. */
22
+ private readonly sessions = new Set<http2.ServerHttp2Session>()
23
+
24
+ private readonly probe: Probe
25
+
17
26
  private process?: Processor
18
- private ready: boolean = false
19
- private startedAt: number = 0
20
27
 
21
28
  private constructor (properties: Properties) {
22
29
  super()
23
30
 
24
31
  this.properties = properties
25
32
  this.authorities = Object.fromEntries(Object.entries(properties.authorities).map(([key, value]) => [value, key]))
33
+ this.server = instantiate(properties.protocol)
34
+ this.probe = new Probe(properties.probe)
26
35
 
27
- this.server.on('request', (req, res) => this.listener(req, res))
36
+ this.server.on('request', (req, res) =>
37
+ this.listener(req as unknown as IncomingMessage, res as unknown as ServerResponse))
28
38
 
29
- this.server.on('clientError', (error, socket) => {
30
- console.warn('Client connection error', error)
31
-
32
- if (socket.writable) socket.end('HTTP/1.1 400 Bad Request\r\n\r\n')
33
- else socket.destroy()
34
- })
39
+ if (properties.protocol === 'h1') this.h1(this.server as http.Server)
40
+ else this.h2(this.server as http2.Http2Server)
35
41
  }
36
42
 
37
43
  public static create (options: Options): Server {
@@ -45,24 +51,30 @@ export class Server extends Connector {
45
51
  }
46
52
 
47
53
  protected override async open (): Promise<void> {
48
- this.startedAt = Date.now()
54
+ // answers 503 from here; the gateway's dependencies have settled by the time `open` runs
55
+ await this.probe.listen()
56
+
49
57
  this.server.listen(this.properties.port)
50
58
 
51
59
  await once(this.server, 'listening')
52
60
 
53
61
  console.info('HTTP Server is listening')
54
62
 
55
- this.ready = true
63
+ this.probe.complete()
56
64
 
57
65
  console.info('Ready')
58
- process.send?.('ready')
59
66
  }
60
67
 
61
68
  protected override async close (): Promise<void> {
62
- this.ready = false
69
+ await this.probe.close()
63
70
 
64
71
  this.server.close()
65
- this.server.closeIdleConnections()
72
+
73
+ // GOAWAY lets in-flight streams finish; `Http2Server` has no `closeIdleConnections`
74
+ if (this.properties.protocol === 'h1')
75
+ (this.server as http.Server).closeIdleConnections()
76
+ else
77
+ for (const session of this.sessions) session.close()
66
78
 
67
79
  console.info('Stopped accepting new connections')
68
80
 
@@ -72,12 +84,41 @@ export class Server extends Connector {
72
84
  setTimeout(this.properties.drain, undefined, { ref: false })
73
85
  ])
74
86
 
75
- this.server.closeAllConnections()
87
+ if (this.properties.protocol === 'h1')
88
+ (this.server as http.Server).closeAllConnections()
89
+ else
90
+ for (const session of this.sessions) session.destroy()
76
91
 
77
92
  console.info('Stopped')
78
93
  }
79
94
 
80
- private listener (request: http.IncomingMessage, response: http.ServerResponse): void {
95
+ /** A malformed HTTP/1.1 request has no framing to answer in, so the status line is written by hand. */
96
+ private h1 (server: http.Server): void {
97
+ server.on('clientError', (error, socket) => {
98
+ console.warn('Client connection error', error)
99
+
100
+ if (socket.writable) socket.end('HTTP/1.1 400 Bad Request\r\n\r\n')
101
+ else socket.destroy()
102
+ })
103
+ }
104
+
105
+ /** HTTP/2 has no `clientError`: failures surface per session, per stream, or per frame. */
106
+ private h2 (server: http2.Http2Server): void {
107
+ server.on('session', (session) => {
108
+ this.sessions.add(session)
109
+ session.on('close', () => this.sessions.delete(session))
110
+ })
111
+
112
+ server.on('sessionError', (error) => console.warn('Session error', error))
113
+ server.on('streamError', (error) => console.warn('Stream error', error))
114
+
115
+ server.on('unknownProtocol', (socket) => {
116
+ console.warn('Unknown protocol')
117
+ socket.destroy()
118
+ })
119
+ }
120
+
121
+ private listener (request: IncomingMessage, response: ServerResponse): void {
81
122
  request.once('error', (error) => {
82
123
  console.warn('Request error', errorAttributes(request, error))
83
124
 
@@ -85,14 +126,24 @@ export class Server extends Connector {
85
126
  response.destroy()
86
127
  })
87
128
 
88
- request.socket.once('error', (error) => {
89
- console.warn('Socket error', errorAttributes(request, error))
129
+ // no listener on `request.socket`: under HTTP/2 it is the session's socket, shared by
130
+ // every concurrent stream, and removing listeners on it would strip the siblings'
90
131
 
91
- if (!response.writableEnded)
92
- response.destroy()
93
- })
132
+ const host = authorityOf(request)
133
+
134
+ if (host === undefined) {
135
+ console.warn('Request without an authority', errorAttributes(request, new Error('No authority')))
94
136
 
95
- const url = parse(request)
137
+ response.writeHead(400).end()
138
+
139
+ return
140
+ }
141
+
142
+ // directives and components read `host`; HTTP/2 sends `:authority` instead, and what a
143
+ // component sees must not depend on the protocol the request arrived over
144
+ request.headers.host ??= host
145
+
146
+ const url = parse(request, host)
96
147
 
97
148
  if (url instanceof Error) {
98
149
  console.warn('Invalid request', errorAttributes(request, url))
@@ -108,21 +159,8 @@ export class Server extends Connector {
108
159
  return
109
160
  }
110
161
 
111
- if (request.url === '/.ready') {
112
- if (this.ready)
113
- response.writeHead(200, { 'cache-control': 'no-store' }).end()
114
- else {
115
- const remaining = (Math.ceil((Date.now() - this.startedAt) / 1000)).toString()
116
-
117
- response.writeHead(503, { 'retry-after': remaining }).end()
118
- }
119
-
120
- return
121
- }
122
-
123
162
  assert(this.process !== undefined, 'Request processor is not attached')
124
163
 
125
- const host = request.headers.host!
126
164
  const authority = this.authorities[host] ?? host
127
165
 
128
166
  // if the request carries no trace context, the trace starts here
@@ -141,8 +179,8 @@ export class Server extends Connector {
141
179
  }
142
180
 
143
181
  // eslint-disable-next-line max-params
144
- private async serve (request: http.IncomingMessage,
145
- response: http.ServerResponse,
182
+ private async serve (request: IncomingMessage,
183
+ response: ServerResponse,
146
184
  authority: string,
147
185
  url: URL): Promise<void> {
148
186
  await console.span({
@@ -153,19 +191,16 @@ export class Server extends Connector {
153
191
  }, async () => {
154
192
  response.setHeader('ray', current()!.traceId)
155
193
 
156
- const context = new Context(authority, request as IncomingMessage, this.properties, url)
194
+ const context = new Context(authority, request, this.properties, url)
157
195
 
158
196
  await this.process!(context)
159
197
  .then(this.success(context, response))
160
198
  .catch(this.fail(context, response))
161
- .finally(() => {
162
- request.removeAllListeners('error')
163
- request.socket.removeAllListeners('error')
164
- })
199
+ .finally(() => request.removeAllListeners('error'))
165
200
  })
166
201
  }
167
202
 
168
- private success (context: Context, response: http.ServerResponse) {
203
+ private success (context: Context, response: ServerResponse) {
169
204
  return async (message: OutgoingMessage) => {
170
205
  let status = message.status
171
206
 
@@ -185,10 +220,12 @@ export class Server extends Connector {
185
220
  }
186
221
  }
187
222
 
188
- private fail (context: Context, response: http.ServerResponse) {
223
+ private fail (context: Context, response: ServerResponse) {
189
224
  return async (exception: Error) => {
190
225
  try {
191
- if (!context.request.complete)
226
+ // Over HTTP/2 the reply is followed by RST_STREAM(NO_ERROR), which tells the client
227
+ // to stop sending without discarding the response — so the body is never read.
228
+ if (!context.request.complete && this.properties.protocol === 'h1')
192
229
  await adam(context.request)
193
230
 
194
231
  const status = exception instanceof Exception ? exception.status : 500
@@ -224,7 +261,7 @@ export class Server extends Connector {
224
261
  if (!response.writableEnded)
225
262
  try {
226
263
  response.writeHead(500).end()
227
- } catch (e) {
264
+ } catch {
228
265
  // Nothing more we can do
229
266
  }
230
267
  }
@@ -232,17 +269,36 @@ export class Server extends Connector {
232
269
  }
233
270
  }
234
271
 
272
+ function instantiate (protocol: Protocol): http.Server | http2.Http2Server {
273
+ if (protocol === 'h1')
274
+ return http.createServer()
275
+
276
+ return http2.createServer({
277
+ // realtime pins one stream per subscription, and they all share a session
278
+ maxSessionMemory: SESSION_MEMORY,
279
+ settings: { initialWindowSize: WINDOW }
280
+ })
281
+ }
282
+
283
+ /**
284
+ * The authority the request is addressed to. HTTP/2 carries it in `:authority` and omits
285
+ * `host` entirely, so reading `host` alone would leave every HTTP/2 request unattributed.
286
+ */
287
+ function authorityOf (request: IncomingMessage): string | undefined {
288
+ return request.headers[':authority'] ?? request.headers.host
289
+ }
290
+
235
291
  /** Parsing the URL is how a request is validated, so the `Context` is handed the result. */
236
- function parse (request: http.IncomingMessage): URL | Error {
292
+ function parse (request: IncomingMessage, authority: string): URL | Error {
237
293
  try {
238
- return new URL(request.url!, `https://${request.headers.host}`)
294
+ return new URL(request.url, `https://${authority}`)
239
295
  } catch (error) {
240
296
  return error as Error
241
297
  }
242
298
  }
243
299
 
244
300
  // https://github.com/whatwg/fetch/issues/1254
245
- async function adam (request: http.IncomingMessage): Promise<void> {
301
+ async function adam (request: IncomingMessage): Promise<void> {
246
302
  const devnull = fs.createWriteStream(os.devNull)
247
303
 
248
304
  devnull.on('error', () => undefined)
@@ -251,10 +307,10 @@ async function adam (request: http.IncomingMessage): Promise<void> {
251
307
  await once(request, 'end')
252
308
  }
253
309
 
254
- function errorAttributes (request: http.IncomingMessage, error: Error & any): RequestErrorAttributes {
310
+ function errorAttributes (request: IncomingMessage, error: Error & any): RequestErrorAttributes {
255
311
  const attributes: RequestErrorAttributes = {
256
- path: request.url!,
257
- method: request.method!,
312
+ path: request.url,
313
+ method: request.method,
258
314
  name: error.name
259
315
  }
260
316
 
@@ -269,20 +325,21 @@ function errorAttributes (request: http.IncomingMessage, error: Error & any): Re
269
325
 
270
326
  export const PORT = 8000
271
327
 
272
- /**
273
- * The initial delay of the readiness probe. The server does not sleep for it: whoever
274
- * probes is the one that waits, and doing it here as well only delayed the process twice.
275
- */
276
- export const DELAY = 3 // seconds
277
328
  export const DRAIN = 10 // seconds
278
329
 
330
+ /** Megabytes a single HTTP/2 session may hold, over Node's default of 10. */
331
+ const SESSION_MEMORY = 128
332
+
333
+ /** Per-stream flow control window. The default 64 KiB throttles in proportion to RTT. */
334
+ const WINDOW = 1024 * 1024
335
+
279
336
  /**
280
337
  * Extracts the remote trace context from the request headers.
281
338
  *
282
339
  * The `ray` header adopts the trace by ID only and does not bypass sampling:
283
340
  * the sampling decision is made by the server.
284
341
  */
285
- function trace (headers: http.IncomingHttpHeaders): SpanContext | null {
342
+ function trace (headers: IncomingMessage['headers']): SpanContext | null {
286
343
  if (typeof headers.traceparent === 'string')
287
344
  return decode(headers.traceparent)
288
345
 
@@ -300,7 +357,9 @@ const DEFAULTS: Omit<Properties, 'authorities'> = {
300
357
  methods: new Set<string>(['OPTIONS', 'GET', 'HEAD', 'POST', 'PUT', 'PATCH', 'DELETE', 'LOCK', 'UNLOCK']),
301
358
  debug: false,
302
359
  port: PORT,
303
- drain: DRAIN * 1000
360
+ drain: DRAIN * 1000,
361
+ protocol: 'h1',
362
+ probe: PROBE
304
363
  }
305
364
 
306
365
  interface Properties {
@@ -309,6 +368,10 @@ interface Properties {
309
368
  debug: boolean
310
369
  port: number
311
370
  drain: number
371
+ protocol: Protocol
372
+
373
+ /** Port of the readiness probe, which is HTTP/1.1 whatever the gateway serves. */
374
+ probe: number
312
375
  }
313
376
 
314
377
  export type Options = { authorities: Properties['authorities'] } & {
@@ -324,17 +387,3 @@ interface RequestErrorAttributes {
324
387
  code?: string
325
388
  stack?: string
326
389
  }
327
-
328
- /**
329
- * I'm too fucking dumb to figure out how to handle this in a better way.
330
- * It can be reproduced by calling `response.destroy()` on the client side while reading
331
- * an empty stream.
332
- */
333
- process.on('uncaughtException', (err: unknown) => {
334
- const code = (err as { code?: string }).code
335
-
336
- if (code === 'ECONNRESET' || code === 'EPIPE')
337
- console.warn('Connection reset by peer', code)
338
- else
339
- throw err
340
- })
@@ -1,5 +1,5 @@
1
1
  import { performance } from 'node:perf_hooks'
2
- import type { ServerResponse } from 'node:http'
2
+ import type { ServerResponse } from './types.js'
3
3
 
4
4
  export class Timing {
5
5
  private readonly start = performance.now()
@@ -1,7 +1,7 @@
1
- import * as json from './json'
2
- import * as yaml from './yaml'
3
- import * as msgpack from './msgpack'
4
- import * as text from './text'
1
+ import * as json from './json.js'
2
+ import * as yaml from './yaml.js'
3
+ import * as msgpack from './msgpack.js'
4
+ import * as text from './text.js'
5
5
 
6
6
  export const formats: Record<string, Format> = {
7
7
  [json.type]: json,
@@ -1,4 +1,7 @@
1
- import { encode } from './yaml'
1
+ import { it } from 'node:test'
2
+ import assert from 'node:assert/strict'
3
+
4
+ import { encode } from './yaml.js'
2
5
 
3
6
  it('encodes error values as their public properties', () => {
4
7
  const value = new (class InvalidUsernameError extends Error {
@@ -6,12 +9,11 @@ it('encodes error values as their public properties', () => {
6
9
  public override readonly message = 'Username is not meeting the requirements'
7
10
  })()
8
11
 
9
- expect(encode(value).toString())
10
- .toBe('code: INVALID_USERNAME\nmessage: Username is not meeting the requirements\n')
12
+ assert.strictEqual(encode(value).toString(), 'code: INVALID_USERNAME\nmessage: Username is not meeting the requirements\n')
11
13
  })
12
14
 
13
15
  it('writes a value the way its toJSON says', () => {
14
16
  const secret = { unwrap: () => 's3cret', toJSON: () => '<REDACTED>' }
15
17
 
16
- expect(encode({ a: 1, b: secret }).toString()).toBe('a: 1\nb: <REDACTED>\n')
18
+ assert.strictEqual(encode({ a: 1, b: secret }).toString(), 'a: 1\nb: <REDACTED>\n')
17
19
  })
@@ -1,4 +1,4 @@
1
- import * as yaml from 'js-yaml'
1
+ import { yaml } from '@toa.io/generic'
2
2
 
3
3
  export const type = 'application/yaml'
4
4
  export const multipart = 'multipart/yaml'
@@ -1,4 +1,6 @@
1
- export * from './Server'
2
- export * from './messages'
3
- export * from './exceptions'
4
- export * from './Context'
1
+ export * from './Server.js'
2
+ export * from './messages.js'
3
+ export * from './exceptions.js'
4
+ export * from './Context.js'
5
+ export * from './types.js'
6
+ export * from './Probe.js'
@@ -1,17 +1,19 @@
1
+ import { describe, it, beforeEach } from 'node:test'
2
+ import assert from 'node:assert/strict'
3
+
1
4
  import { PassThrough, Readable } from 'node:stream'
2
5
  import * as streamConsumers from 'node:stream/consumers'
3
- import { once } from 'node:events'
4
6
  import { generate } from 'randomstring'
5
7
  import * as msgpack from 'msgpackr'
6
- import { multipart, read, type OutgoingMessage } from './messages'
7
- import { BadRequest, UnsupportedMediaType } from './exceptions'
8
- import { formats } from './formats'
9
- import { Timing } from './Timing'
8
+ import { multipart, read, type OutgoingMessage } from './messages.js'
9
+ import { BadRequest, UnsupportedMediaType } from './exceptions.js'
10
+ import { formats } from './formats/index.js'
11
+ import { Timing } from './Timing.js'
10
12
  import type * as http from 'node:http'
11
- import type { Context } from './Context'
13
+ import type { Context } from './Context.js'
12
14
 
13
15
  beforeEach(() => {
14
- jest.clearAllMocks()
16
+ resetCalls()
15
17
  })
16
18
 
17
19
  describe('read', () => {
@@ -23,7 +25,7 @@ describe('read', () => {
23
25
  const context = createContext(path, headers, json)
24
26
  const output = await read(context)
25
27
 
26
- expect(output).toStrictEqual(input)
28
+ assert.deepStrictEqual(output, input)
27
29
  })
28
30
 
29
31
  it('should parse application/yaml', async () => {
@@ -33,7 +35,7 @@ describe('read', () => {
33
35
  const request = createContext(path, headers, yaml)
34
36
  const value = await read(request)
35
37
 
36
- expect(value).toStrictEqual({ foo: 1 })
38
+ assert.deepStrictEqual(value, { foo: 1 })
37
39
  })
38
40
 
39
41
  it('should parse application/mskpack', async () => {
@@ -44,7 +46,7 @@ describe('read', () => {
44
46
  const request = createContext(path, headers, msg)
45
47
  const output = await read(request)
46
48
 
47
- expect(output).toStrictEqual(input)
49
+ assert.deepStrictEqual(output, input)
48
50
  })
49
51
 
50
52
  it('should parse text/plain', async () => {
@@ -54,7 +56,7 @@ describe('read', () => {
54
56
  const request = createContext(path, headers, input)
55
57
  const output = await read(request)
56
58
 
57
- expect(output).toStrictEqual(input)
59
+ assert.deepStrictEqual(output, input)
58
60
  })
59
61
 
60
62
  it('should parse application/json with charset parameter', async () => {
@@ -65,7 +67,7 @@ describe('read', () => {
65
67
  const context = createContext(path, headers, json)
66
68
  const output = await read(context)
67
69
 
68
- expect(output).toStrictEqual(input)
70
+ assert.deepStrictEqual(output, input)
69
71
  })
70
72
 
71
73
  it('should throw on unsupported request media type', async () => {
@@ -73,7 +75,7 @@ describe('read', () => {
73
75
  const headers = { 'content-type': 'wtf/' + generate() }
74
76
  const request = createContext(path, headers)
75
77
 
76
- await expect(read(request)).rejects.toThrow(UnsupportedMediaType)
78
+ await assert.rejects(read(request), UnsupportedMediaType)
77
79
  })
78
80
 
79
81
  it('should throw on malformed content', async () => {
@@ -82,7 +84,7 @@ describe('read', () => {
82
84
  const headers = { 'content-type': 'application/json' }
83
85
  const request = createContext(path, headers, text)
84
86
 
85
- await expect(read(request)).rejects.toThrow(BadRequest)
87
+ await assert.rejects(read(request), BadRequest)
86
88
  })
87
89
 
88
90
  it('should output correct mulitpart format', async () => {
@@ -99,13 +101,11 @@ describe('read', () => {
99
101
  const context = { encoder: formats['text/plain'] } as unknown as Context
100
102
  const message = { body: Readable.from(['Hello', 'New', 'World']) } as unknown as OutgoingMessage
101
103
 
102
- multipart(message, context, response as unknown as http.ServerResponse)
103
-
104
- await once(message.body, 'end')
104
+ const framed = multipart(message, context, response as unknown as http.ServerResponse)
105
105
 
106
- const result = await streamConsumers.text(response)
106
+ const result = await streamConsumers.text(framed)
107
107
 
108
- expect(result).toBe([
108
+ assert.strictEqual(result, [
109
109
  '--cut',
110
110
  '',
111
111
  'ACK',
@@ -126,7 +126,7 @@ describe('read', () => {
126
126
  })
127
127
 
128
128
  export function createContext (url: string, headers: Record<string, string> = {}, content: string | Buffer = ''):
129
- jest.MockedObject<Context> {
129
+ Context {
130
130
  const data = Buffer.isBuffer(content) ? content : Buffer.from(content)
131
131
  const stream = Readable.from(data)
132
132
  let consumed = false
@@ -148,5 +148,15 @@ jest.MockedObject<Context> {
148
148
  }
149
149
  }
150
150
 
151
- return mock as unknown as jest.MockedObject<Context>
151
+ return mock as unknown as Context
152
+ }
153
+
154
+ function resetCalls (target = [], seen = new Set()) {
155
+ if (target === null || typeof target !== 'object' || seen.has(target)) return
156
+
157
+ seen.add(target)
158
+
159
+ for (const value of Object.values(target))
160
+ if (typeof value === 'function' && value.mock !== undefined) value.mock.resetCalls()
161
+ else resetCalls(value, seen)
152
162
  }