@toa.io/extensions.exposition 1.0.0-alpha.4 → 1.0.0-alpha.40

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 (396) hide show
  1. package/components/context.toa.yaml +2 -2
  2. package/components/identity.bans/manifest.toa.yaml +15 -7
  3. package/components/identity.bans/operations/transit.d.ts +14 -0
  4. package/components/identity.bans/operations/transit.js +11 -0
  5. package/components/identity.bans/operations/transit.js.map +1 -0
  6. package/components/identity.bans/operations/tsconfig.tsbuildinfo +1 -0
  7. package/components/identity.bans/source/transit.ts +21 -0
  8. package/components/identity.bans/tsconfig.json +9 -0
  9. package/components/identity.basic/manifest.toa.yaml +22 -9
  10. package/components/identity.basic/operations/authenticate.d.ts +5 -1
  11. package/components/identity.basic/operations/authenticate.js +5 -2
  12. package/components/identity.basic/operations/authenticate.js.map +1 -1
  13. package/components/identity.basic/operations/incept.d.ts +12 -0
  14. package/components/identity.basic/operations/incept.js +26 -0
  15. package/components/identity.basic/operations/incept.js.map +1 -0
  16. package/components/identity.basic/operations/transit.d.ts +4 -4
  17. package/components/identity.basic/operations/transit.js +5 -3
  18. package/components/identity.basic/operations/transit.js.map +1 -1
  19. package/components/identity.basic/operations/tsconfig.tsbuildinfo +1 -1
  20. package/components/identity.basic/operations/types.d.ts +8 -4
  21. package/components/identity.basic/source/authenticate.ts +16 -5
  22. package/components/identity.basic/source/incept.ts +38 -0
  23. package/components/identity.basic/source/transit.ts +8 -6
  24. package/components/identity.basic/source/types.ts +8 -4
  25. package/components/identity.federation/manifest.toa.yaml +28 -22
  26. package/components/identity.federation/operations/authenticate.d.ts +2 -2
  27. package/components/identity.federation/operations/authenticate.js +3 -10
  28. package/components/identity.federation/operations/authenticate.js.map +1 -1
  29. package/components/identity.federation/operations/incept.d.ts +11 -0
  30. package/components/identity.federation/operations/{create.js → incept.js} +6 -7
  31. package/components/identity.federation/operations/incept.js.map +1 -0
  32. package/components/identity.federation/operations/lib/jwt.d.ts +4 -5
  33. package/components/identity.federation/operations/lib/jwt.js +3 -3
  34. package/components/identity.federation/operations/lib/jwt.js.map +1 -1
  35. package/components/identity.federation/operations/tsconfig.tsbuildinfo +1 -1
  36. package/components/identity.federation/operations/types/configuration.d.ts +14 -0
  37. package/components/identity.federation/operations/types/configuration.js +3 -0
  38. package/components/identity.federation/operations/types/configuration.js.map +1 -0
  39. package/components/identity.federation/operations/{types.d.ts → types/context.d.ts} +13 -6
  40. package/components/identity.federation/operations/types/context.js +3 -0
  41. package/components/identity.federation/operations/types/context.js.map +1 -0
  42. package/components/identity.federation/operations/types/entity.d.ts +6 -0
  43. package/components/identity.federation/operations/{types.js → types/entity.js} +1 -1
  44. package/components/identity.federation/operations/types/entity.js.map +1 -0
  45. package/components/identity.federation/operations/types/index.d.ts +3 -0
  46. package/components/identity.federation/operations/types/index.js +20 -0
  47. package/components/identity.federation/operations/types/index.js.map +1 -0
  48. package/components/identity.federation/source/authenticate.ts +5 -18
  49. package/components/identity.federation/source/{create.ts → incept.ts} +10 -9
  50. package/components/identity.federation/source/lib/jwt.test.ts +2 -2
  51. package/components/identity.federation/source/lib/jwt.ts +7 -8
  52. package/components/identity.federation/source/types/configuration.ts +15 -0
  53. package/components/identity.federation/source/{types.ts → types/context.ts} +15 -5
  54. package/components/identity.federation/source/types/entity.ts +6 -0
  55. package/components/identity.federation/source/types/index.ts +3 -0
  56. package/components/identity.federation/tsconfig.json +2 -2
  57. package/components/identity.roles/manifest.toa.yaml +18 -6
  58. package/components/identity.roles/operations/grant.d.ts +10 -0
  59. package/components/identity.roles/operations/grant.js +21 -0
  60. package/components/identity.roles/operations/grant.js.map +1 -0
  61. package/components/identity.roles/operations/lib/Entity.d.ts +5 -0
  62. package/components/identity.roles/operations/lib/Entity.js +3 -0
  63. package/components/identity.roles/operations/lib/Entity.js.map +1 -0
  64. package/components/identity.roles/operations/list.d.ts +1 -4
  65. package/components/identity.roles/operations/list.js.map +1 -1
  66. package/components/identity.roles/operations/principal.d.ts +4 -6
  67. package/components/identity.roles/operations/principal.js +6 -1
  68. package/components/identity.roles/operations/principal.js.map +1 -1
  69. package/components/identity.roles/operations/tsconfig.tsbuildinfo +1 -1
  70. package/components/identity.roles/source/grant.ts +32 -0
  71. package/components/identity.roles/source/lib/Entity.ts +5 -0
  72. package/components/identity.roles/source/list.ts +2 -4
  73. package/components/identity.roles/source/principal.ts +10 -8
  74. package/components/identity.tokens/manifest.toa.yaml +19 -5
  75. package/components/identity.tokens/operations/authenticate.d.ts +2 -2
  76. package/components/identity.tokens/operations/authenticate.js +10 -4
  77. package/components/identity.tokens/operations/authenticate.js.map +1 -1
  78. package/components/identity.tokens/operations/decrypt.js +1 -0
  79. package/components/identity.tokens/operations/decrypt.js.map +1 -1
  80. package/components/identity.tokens/operations/encrypt.js +5 -1
  81. package/components/identity.tokens/operations/encrypt.js.map +1 -1
  82. package/components/identity.tokens/operations/tsconfig.tsbuildinfo +1 -1
  83. package/components/identity.tokens/operations/types.d.ts +8 -2
  84. package/components/identity.tokens/receivers/identity.bans.created.js +3 -0
  85. package/components/identity.tokens/source/authenticate.test.ts +11 -4
  86. package/components/identity.tokens/source/authenticate.ts +12 -5
  87. package/components/identity.tokens/source/decrypt.test.ts +5 -3
  88. package/components/identity.tokens/source/decrypt.ts +9 -8
  89. package/components/identity.tokens/source/encrypt.test.ts +26 -2
  90. package/components/identity.tokens/source/encrypt.ts +5 -1
  91. package/components/identity.tokens/source/types.ts +9 -2
  92. package/components/octets.storage/manifest.toa.yaml +0 -7
  93. package/documentation/access.md +27 -16
  94. package/documentation/authorities.md +53 -0
  95. package/documentation/cache.md +8 -1
  96. package/documentation/components.md +47 -22
  97. package/documentation/identity.md +17 -22
  98. package/documentation/io.md +56 -0
  99. package/documentation/protocol.md +3 -0
  100. package/documentation/query.md +17 -11
  101. package/documentation/require.md +15 -0
  102. package/documentation/tree.md +22 -4
  103. package/documentation/vary.md +14 -14
  104. package/features/access.feature +89 -47
  105. package/features/annotation.feature +2 -0
  106. package/features/authorities.basic.feature +141 -0
  107. package/features/authorities.feature +32 -0
  108. package/features/authorities.federation.feature +99 -0
  109. package/features/authorities.tokens.feature +118 -0
  110. package/features/body.feature +4 -0
  111. package/features/cache.feature +112 -5
  112. package/features/cors.feature +7 -2
  113. package/features/debug.feature +34 -0
  114. package/features/directives.feature +5 -0
  115. package/features/dynamic.feature +18 -7
  116. package/features/errors.feature +18 -4
  117. package/features/etag.feature +18 -1
  118. package/features/identity.bans.feature +137 -0
  119. package/features/identity.basic.feature +142 -19
  120. package/features/identity.feature +7 -2
  121. package/features/identity.federation.feature +67 -14
  122. package/features/identity.roles.feature +220 -4
  123. package/features/identity.tokens.feature +57 -4
  124. package/features/io.feature +205 -0
  125. package/features/octets.entries.feature +10 -0
  126. package/features/octets.feature +60 -64
  127. package/features/octets.meta.feature +7 -3
  128. package/features/octets.workflows.feature +14 -0
  129. package/features/probes.feature +14 -0
  130. package/features/{queries.feature → query.feature} +50 -3
  131. package/features/require.feature +67 -0
  132. package/features/response.feature +12 -3
  133. package/features/routes.feature +25 -12
  134. package/features/steps/Database.ts +17 -10
  135. package/features/steps/Gateway.ts +23 -6
  136. package/features/steps/IdP.ts +28 -23
  137. package/features/steps/components/echo/manifest.toa.yaml +5 -1
  138. package/features/steps/components/echo/operations/identity.js +7 -0
  139. package/features/steps/components/pots/manifest.toa.yaml +2 -0
  140. package/features/steps/components/users.properties/manifest.toa.yaml +2 -1
  141. package/features/streams.feature +1 -0
  142. package/features/timing.feature +27 -1
  143. package/features/vary.feature +105 -3
  144. package/package.json +12 -11
  145. package/readme.md +19 -14
  146. package/schemas/annotation.cos.yaml +1 -1
  147. package/schemas/io/input.cos.yaml +3 -0
  148. package/schemas/io/message.cos.yaml +5 -0
  149. package/schemas/io/output.cos.yaml +5 -0
  150. package/source/Annotation.ts +3 -3
  151. package/source/Context.ts +6 -4
  152. package/source/Directive.test.ts +4 -4
  153. package/source/Directive.ts +11 -38
  154. package/source/Endpoint.ts +43 -8
  155. package/source/Factory.ts +11 -7
  156. package/source/Gateway.ts +16 -44
  157. package/source/HTTP/Context.ts +24 -2
  158. package/source/HTTP/Server.ts +56 -43
  159. package/source/HTTP/exceptions.ts +7 -1
  160. package/source/HTTP/messages.ts +1 -1
  161. package/source/Mapping.ts +6 -1
  162. package/source/Query.test.ts +1 -1
  163. package/source/Query.ts +35 -24
  164. package/source/RTD/Context.ts +7 -10
  165. package/source/RTD/Directives.ts +28 -4
  166. package/source/RTD/Endpoint.ts +6 -4
  167. package/source/RTD/Match.ts +2 -7
  168. package/source/RTD/Method.ts +7 -13
  169. package/source/RTD/Node.ts +13 -14
  170. package/source/RTD/Tree.ts +17 -16
  171. package/source/RTD/factory.ts +3 -6
  172. package/source/Tenant.ts +0 -8
  173. package/source/deployment.ts +32 -22
  174. package/source/directives/auth/Authorization.ts +38 -19
  175. package/source/directives/auth/Delegate.ts +42 -0
  176. package/source/directives/auth/Incept.ts +3 -2
  177. package/source/directives/auth/Role.test.ts +53 -6
  178. package/source/directives/auth/Role.ts +22 -14
  179. package/source/directives/auth/types.ts +1 -1
  180. package/source/directives/cache/Cache.ts +15 -8
  181. package/source/directives/cache/Control.ts +42 -16
  182. package/source/directives/cors/CORS.ts +13 -7
  183. package/source/directives/dev/Development.ts +4 -4
  184. package/source/directives/index.ts +6 -4
  185. package/source/directives/io/Directive.ts +11 -0
  186. package/source/directives/io/IO.ts +43 -0
  187. package/source/directives/io/Input.ts +50 -0
  188. package/source/directives/io/Message.ts +1 -0
  189. package/source/directives/io/Output.ts +69 -0
  190. package/source/directives/io/index.ts +3 -0
  191. package/source/directives/io/schemas.ts +12 -0
  192. package/source/directives/octets/Context.ts +4 -3
  193. package/source/directives/octets/Delete.ts +4 -2
  194. package/source/directives/octets/Directive.ts +10 -0
  195. package/source/directives/octets/Fetch.ts +4 -3
  196. package/source/directives/octets/List.ts +4 -2
  197. package/source/directives/octets/Octets.ts +6 -8
  198. package/source/directives/octets/Store.ts +12 -4
  199. package/source/directives/octets/Workflow.ts +10 -3
  200. package/source/directives/octets/types.ts +0 -7
  201. package/source/directives/require/Directive.ts +5 -0
  202. package/source/directives/require/Headers.ts +20 -0
  203. package/source/directives/require/Require.ts +28 -0
  204. package/source/directives/require/index.ts +3 -0
  205. package/source/directives/vary/Directive.ts +2 -1
  206. package/source/directives/vary/Embed.ts +14 -8
  207. package/source/directives/vary/Vary.ts +7 -5
  208. package/source/directives/vary/embeddings/Authority.ts +8 -0
  209. package/source/directives/vary/embeddings/Embedding.ts +2 -1
  210. package/source/directives/vary/embeddings/Header.ts +8 -6
  211. package/source/directives/vary/embeddings/Language.ts +1 -1
  212. package/source/directives/vary/embeddings/Parameter.ts +14 -0
  213. package/source/directives/vary/embeddings/index.ts +6 -4
  214. package/source/exceptions.ts +22 -11
  215. package/source/root.ts +5 -0
  216. package/source/schemas.ts +1 -1
  217. package/transpiled/Annotation.d.ts +3 -3
  218. package/transpiled/Context.d.ts +6 -4
  219. package/transpiled/Directive.d.ts +4 -17
  220. package/transpiled/Directive.js +4 -7
  221. package/transpiled/Directive.js.map +1 -1
  222. package/transpiled/Endpoint.d.ts +5 -3
  223. package/transpiled/Endpoint.js +30 -5
  224. package/transpiled/Endpoint.js.map +1 -1
  225. package/transpiled/Factory.js +9 -4
  226. package/transpiled/Factory.js.map +1 -1
  227. package/transpiled/Gateway.d.ts +1 -4
  228. package/transpiled/Gateway.js +10 -26
  229. package/transpiled/Gateway.js.map +1 -1
  230. package/transpiled/HTTP/Context.d.ts +8 -1
  231. package/transpiled/HTTP/Context.js +15 -2
  232. package/transpiled/HTTP/Context.js.map +1 -1
  233. package/transpiled/HTTP/Server.d.ts +13 -2
  234. package/transpiled/HTTP/Server.js +41 -35
  235. package/transpiled/HTTP/Server.js.map +1 -1
  236. package/transpiled/HTTP/exceptions.d.ts +4 -1
  237. package/transpiled/HTTP/exceptions.js +7 -1
  238. package/transpiled/HTTP/exceptions.js.map +1 -1
  239. package/transpiled/HTTP/messages.js +1 -1
  240. package/transpiled/HTTP/messages.js.map +1 -1
  241. package/transpiled/Mapping.js +4 -1
  242. package/transpiled/Mapping.js.map +1 -1
  243. package/transpiled/Query.d.ts +1 -0
  244. package/transpiled/Query.js +21 -20
  245. package/transpiled/Query.js.map +1 -1
  246. package/transpiled/RTD/Context.d.ts +7 -6
  247. package/transpiled/RTD/Directives.d.ts +19 -4
  248. package/transpiled/RTD/Endpoint.d.ts +6 -4
  249. package/transpiled/RTD/Match.d.ts +2 -4
  250. package/transpiled/RTD/Method.d.ts +7 -7
  251. package/transpiled/RTD/Method.js.map +1 -1
  252. package/transpiled/RTD/Node.d.ts +4 -6
  253. package/transpiled/RTD/Node.js +2 -1
  254. package/transpiled/RTD/Node.js.map +1 -1
  255. package/transpiled/RTD/Tree.d.ts +6 -6
  256. package/transpiled/RTD/Tree.js +4 -1
  257. package/transpiled/RTD/Tree.js.map +1 -1
  258. package/transpiled/RTD/factory.d.ts +2 -4
  259. package/transpiled/RTD/factory.js +1 -1
  260. package/transpiled/RTD/factory.js.map +1 -1
  261. package/transpiled/Tenant.d.ts +0 -1
  262. package/transpiled/Tenant.js +0 -6
  263. package/transpiled/Tenant.js.map +1 -1
  264. package/transpiled/deployment.d.ts +1 -1
  265. package/transpiled/deployment.js +28 -20
  266. package/transpiled/deployment.js.map +1 -1
  267. package/transpiled/directives/auth/Authorization.d.ts +2 -3
  268. package/transpiled/directives/auth/Authorization.js +26 -12
  269. package/transpiled/directives/auth/Authorization.js.map +1 -1
  270. package/transpiled/directives/auth/Delegate.d.ts +10 -0
  271. package/transpiled/directives/auth/Delegate.js +34 -0
  272. package/transpiled/directives/auth/Delegate.js.map +1 -0
  273. package/transpiled/directives/auth/Incept.js +3 -2
  274. package/transpiled/directives/auth/Incept.js.map +1 -1
  275. package/transpiled/directives/auth/Role.d.ts +4 -1
  276. package/transpiled/directives/auth/Role.js +20 -14
  277. package/transpiled/directives/auth/Role.js.map +1 -1
  278. package/transpiled/directives/cache/Cache.d.ts +5 -5
  279. package/transpiled/directives/cache/Cache.js +10 -4
  280. package/transpiled/directives/cache/Cache.js.map +1 -1
  281. package/transpiled/directives/cache/Control.d.ts +2 -1
  282. package/transpiled/directives/cache/Control.js +29 -12
  283. package/transpiled/directives/cache/Control.js.map +1 -1
  284. package/transpiled/directives/cors/CORS.d.ts +2 -3
  285. package/transpiled/directives/cors/CORS.js +13 -7
  286. package/transpiled/directives/cors/CORS.js.map +1 -1
  287. package/transpiled/directives/dev/Development.d.ts +3 -3
  288. package/transpiled/directives/dev/Development.js +1 -1
  289. package/transpiled/directives/dev/Development.js.map +1 -1
  290. package/transpiled/directives/index.d.ts +2 -2
  291. package/transpiled/directives/index.js +5 -3
  292. package/transpiled/directives/index.js.map +1 -1
  293. package/transpiled/directives/io/Directive.d.ts +8 -0
  294. package/transpiled/directives/io/Directive.js +3 -0
  295. package/transpiled/directives/io/Directive.js.map +1 -0
  296. package/transpiled/directives/io/IO.d.ts +9 -0
  297. package/transpiled/directives/io/IO.js +33 -0
  298. package/transpiled/directives/io/IO.js.map +1 -0
  299. package/transpiled/directives/io/Input.d.ts +11 -0
  300. package/transpiled/directives/{octets/Permute.js → io/Input.js} +33 -26
  301. package/transpiled/directives/io/Input.js.map +1 -0
  302. package/transpiled/directives/io/Message.d.ts +1 -0
  303. package/transpiled/directives/io/Message.js +3 -0
  304. package/transpiled/directives/io/Message.js.map +1 -0
  305. package/transpiled/directives/io/Output.d.ts +13 -0
  306. package/transpiled/directives/io/Output.js +76 -0
  307. package/transpiled/directives/io/Output.js.map +1 -0
  308. package/transpiled/directives/io/index.d.ts +2 -0
  309. package/transpiled/directives/io/index.js +6 -0
  310. package/transpiled/directives/io/index.js.map +1 -0
  311. package/transpiled/directives/io/schemas.d.ts +7 -0
  312. package/transpiled/directives/io/schemas.js +14 -0
  313. package/transpiled/directives/io/schemas.js.map +1 -0
  314. package/transpiled/directives/octets/Context.d.ts +3 -3
  315. package/transpiled/directives/octets/Context.js +4 -2
  316. package/transpiled/directives/octets/Context.js.map +1 -1
  317. package/transpiled/directives/octets/Delete.d.ts +3 -2
  318. package/transpiled/directives/octets/Delete.js +3 -1
  319. package/transpiled/directives/octets/Delete.js.map +1 -1
  320. package/transpiled/directives/octets/Directive.d.ts +8 -0
  321. package/transpiled/directives/octets/Directive.js +8 -0
  322. package/transpiled/directives/octets/Directive.js.map +1 -0
  323. package/transpiled/directives/octets/Fetch.d.ts +3 -2
  324. package/transpiled/directives/octets/Fetch.js +3 -1
  325. package/transpiled/directives/octets/Fetch.js.map +1 -1
  326. package/transpiled/directives/octets/List.d.ts +3 -2
  327. package/transpiled/directives/octets/List.js +3 -1
  328. package/transpiled/directives/octets/List.js.map +1 -1
  329. package/transpiled/directives/octets/Octets.d.ts +4 -4
  330. package/transpiled/directives/octets/Octets.js +2 -4
  331. package/transpiled/directives/octets/Octets.js.map +1 -1
  332. package/transpiled/directives/octets/Store.d.ts +3 -2
  333. package/transpiled/directives/octets/Store.js +10 -3
  334. package/transpiled/directives/octets/Store.js.map +1 -1
  335. package/transpiled/directives/octets/Workflow.d.ts +3 -2
  336. package/transpiled/directives/octets/Workflow.js +9 -2
  337. package/transpiled/directives/octets/Workflow.js.map +1 -1
  338. package/transpiled/directives/octets/types.d.ts +0 -5
  339. package/transpiled/directives/require/Directive.d.ts +4 -0
  340. package/transpiled/directives/require/Directive.js +3 -0
  341. package/transpiled/directives/require/Directive.js.map +1 -0
  342. package/transpiled/directives/require/Headers.d.ts +7 -0
  343. package/transpiled/directives/require/Headers.js +19 -0
  344. package/transpiled/directives/require/Headers.js.map +1 -0
  345. package/transpiled/directives/require/Require.d.ts +9 -0
  346. package/transpiled/directives/require/Require.js +27 -0
  347. package/transpiled/directives/require/Require.js.map +1 -0
  348. package/transpiled/directives/require/index.d.ts +2 -0
  349. package/transpiled/directives/require/index.js +6 -0
  350. package/transpiled/directives/require/index.js.map +1 -0
  351. package/transpiled/directives/vary/Directive.d.ts +2 -1
  352. package/transpiled/directives/vary/Embed.d.ts +2 -1
  353. package/transpiled/directives/vary/Embed.js +8 -6
  354. package/transpiled/directives/vary/Embed.js.map +1 -1
  355. package/transpiled/directives/vary/Vary.d.ts +3 -3
  356. package/transpiled/directives/vary/Vary.js +3 -3
  357. package/transpiled/directives/vary/Vary.js.map +1 -1
  358. package/transpiled/directives/vary/embeddings/Authority.d.ts +5 -0
  359. package/transpiled/directives/vary/embeddings/Authority.js +10 -0
  360. package/transpiled/directives/vary/embeddings/Authority.js.map +1 -0
  361. package/transpiled/directives/vary/embeddings/Embedding.d.ts +2 -1
  362. package/transpiled/directives/vary/embeddings/Header.js +8 -6
  363. package/transpiled/directives/vary/embeddings/Header.js.map +1 -1
  364. package/transpiled/directives/vary/embeddings/Language.js +1 -1
  365. package/transpiled/directives/vary/embeddings/Language.js.map +1 -1
  366. package/transpiled/directives/vary/embeddings/Parameter.d.ts +7 -0
  367. package/transpiled/directives/vary/embeddings/Parameter.js +14 -0
  368. package/transpiled/directives/vary/embeddings/Parameter.js.map +1 -0
  369. package/transpiled/directives/vary/embeddings/index.d.ts +2 -2
  370. package/transpiled/directives/vary/embeddings/index.js +8 -4
  371. package/transpiled/directives/vary/embeddings/index.js.map +1 -1
  372. package/transpiled/exceptions.d.ts +3 -2
  373. package/transpiled/exceptions.js +13 -7
  374. package/transpiled/exceptions.js.map +1 -1
  375. package/transpiled/root.js +5 -0
  376. package/transpiled/root.js.map +1 -1
  377. package/transpiled/schemas.d.ts +1 -1
  378. package/transpiled/schemas.js +2 -2
  379. package/transpiled/schemas.js.map +1 -1
  380. package/transpiled/tsconfig.tsbuildinfo +1 -1
  381. package/components/identity.basic/operations/create.d.ts +0 -10
  382. package/components/identity.basic/operations/create.js +0 -10
  383. package/components/identity.basic/operations/create.js.map +0 -1
  384. package/components/identity.basic/source/create.ts +0 -18
  385. package/components/identity.federation/operations/create.d.ts +0 -10
  386. package/components/identity.federation/operations/create.js.map +0 -1
  387. package/components/identity.federation/operations/schemas.d.ts +0 -59
  388. package/components/identity.federation/operations/schemas.js +0 -9
  389. package/components/identity.federation/operations/schemas.js.map +0 -1
  390. package/components/identity.federation/operations/types.js.map +0 -1
  391. package/components/identity.federation/source/schemas.ts +0 -61
  392. package/components/octets.storage/operations/permute.js +0 -7
  393. package/source/HTTP/Server.test.ts +0 -126
  394. package/source/directives/octets/Permute.ts +0 -43
  395. package/transpiled/directives/octets/Permute.d.ts +0 -10
  396. package/transpiled/directives/octets/Permute.js.map +0 -1
@@ -0,0 +1,20 @@
1
+ import { BadRequest } from '../../HTTP'
2
+ import type { Input } from '../../io'
3
+ import type { Directive } from './Directive'
4
+
5
+ export class Headers implements Directive {
6
+ private readonly headers: string[]
7
+
8
+ public constructor (headers: string[]) {
9
+ if (!Array.isArray(headers))
10
+ headers = [headers]
11
+
12
+ this.headers = headers
13
+ }
14
+
15
+ public preflight (context: Input): void {
16
+ for (const header of this.headers)
17
+ if (context.request.headers[header] === undefined)
18
+ throw new BadRequest(`Header required: ${header}`)
19
+ }
20
+ }
@@ -0,0 +1,28 @@
1
+ import assert from 'node:assert'
2
+ import { Headers } from './Headers'
3
+ import type { Input } from '../../io'
4
+ import type { Directive } from './Directive'
5
+ import type { DirectiveFamily } from '../../RTD'
6
+
7
+ export class Require implements DirectiveFamily {
8
+ public readonly name = 'require'
9
+ public readonly mandatory = false
10
+
11
+ public create (name: string, value: unknown): Directive {
12
+ assert.ok(name in directives, `Unknown directive: require:${name}`)
13
+
14
+ return new directives[name](value)
15
+ }
16
+
17
+ public preflight (instances: Directive[], context: Input): null {
18
+ for (const instance of instances)
19
+ instance.preflight(context)
20
+
21
+ return null
22
+ }
23
+ }
24
+
25
+ const directives: Record<string, new (value: any) => Directive> = {
26
+ header: Headers,
27
+ headers: Headers
28
+ }
@@ -0,0 +1,3 @@
1
+ import { Require } from './Require'
2
+
3
+ export const req = new Require()
@@ -1,6 +1,7 @@
1
1
  import type { Properties } from './Properties'
2
2
  import type { Input } from '../../io'
3
+ import type { Parameter } from '../../RTD'
3
4
 
4
5
  export interface Directive {
5
- preflight: (request: Input, properties: Properties) => void
6
+ preflight: (context: Input, properties: Properties, parameters: Parameter[]) => void
6
7
  }
@@ -1,9 +1,10 @@
1
1
  import assert from 'node:assert'
2
- import { Header, embeddings } from './embeddings'
2
+ import { Header, embeddings, Parameter } from './embeddings'
3
3
  import type { Embedding } from './embeddings'
4
4
  import type { Input } from '../../io'
5
5
  import type { Directive } from './Directive'
6
6
  import type { Properties } from './Properties'
7
+ import type * as RTD from '../../RTD'
7
8
 
8
9
  export class Embed implements Directive {
9
10
  private readonly embeddings: Array<[string, Embedding[]]> = []
@@ -16,6 +17,9 @@ export class Embed implements Directive {
16
17
  if (name[0] === ':')
17
18
  return new Header(name.slice(1))
18
19
 
20
+ if (name.slice(0, 2) === '/:')
21
+ return new Parameter(name.slice(2))
22
+
19
23
  assert.ok(name in embeddings, `Unknown embedding: ${name}`)
20
24
 
21
25
  return new embeddings[name]()
@@ -25,27 +29,29 @@ export class Embed implements Directive {
25
29
  }
26
30
  }
27
31
 
28
- public preflight (input: Input, properties: Properties): void {
32
+ public preflight (context: Input, properties: Properties, parameters: RTD.Parameter[]): void {
29
33
  const values: Record<string, unknown> = {}
30
34
 
31
35
  for (const [key, instances] of this.embeddings)
32
- values[key] = this.resolve(instances, input, properties)
36
+ values[key] = this.resolve(instances, context, properties, parameters)
33
37
 
34
- input.pipelines.body.push(this.embedding(values))
38
+ context.pipelines.body.push(this.embedding(values))
35
39
  }
36
40
 
37
- private resolve (instances: Embedding[], input: Input, properties: Properties): unknown {
41
+ // eslint-disable-next-line max-params
42
+ private resolve (instances: Embedding[],
43
+ input: Input,
44
+ properties: Properties,
45
+ parameters: RTD.Parameter[]): unknown {
38
46
  let value
39
47
 
40
48
  for (const instance of instances) {
41
- value = instance.resolve(input, properties)
49
+ value = instance.resolve(input, properties, parameters)
42
50
 
43
51
  if (value !== undefined)
44
52
  break
45
53
  }
46
54
 
47
- assert.ok(value !== undefined, 'Neither embedding resolved a value.')
48
-
49
55
  return value
50
56
  }
51
57
 
@@ -3,10 +3,10 @@ import { properties, Property } from './Properties'
3
3
  import { Embed } from './Embed'
4
4
  import type { Properties } from './Properties'
5
5
  import type { Directive } from './Directive'
6
- import type { Family } from '../../Directive'
6
+ import type { DirectiveFamily, Parameter } from '../../RTD'
7
7
  import type { Input, Output } from '../../io'
8
8
 
9
- export class Vary implements Family {
9
+ export class Vary implements DirectiveFamily {
10
10
  public readonly name = 'vary'
11
11
  public readonly mandatory = false
12
12
 
@@ -15,11 +15,13 @@ export class Vary implements Family {
15
15
  () => name in properties, (name: PN) => new Property(name, value as PV),
16
16
  () => name in directives, (name: keyof typeof directives) => new directives[name](value),
17
17
  () => {
18
- throw new Error(`Unknown directive 'vary:${name}'`)
18
+ throw new Error(`Directive 'vary:${name}' is not implemented.`)
19
19
  })
20
20
  }
21
21
 
22
- public preflight (instances: Array<Directive | Property>, request: Input): Output {
22
+ public preflight (instances: Array<Directive | Property>,
23
+ context: Input,
24
+ parameters: Parameter[]): Output {
23
25
  /*
24
26
  To stop constructing `properties` object on each request, Directive Families must be refactored
25
27
  from singleton factories to per-Node instances on the Tree.
@@ -34,7 +36,7 @@ export class Vary implements Family {
34
36
  directives.push(instance)
35
37
 
36
38
  for (const directive of directives)
37
- directive.preflight(request, properties)
39
+ directive.preflight(context, properties, parameters)
38
40
 
39
41
  return null
40
42
  }
@@ -0,0 +1,8 @@
1
+ import type { Embedding } from './Embedding'
2
+ import type { Input } from '../../../io'
3
+
4
+ export class Authority implements Embedding {
5
+ public resolve (context: Input): string {
6
+ return context.authority
7
+ }
8
+ }
@@ -1,6 +1,7 @@
1
1
  import type { Properties } from '../Properties'
2
2
  import type { Input } from '../../../io'
3
+ import type { Parameter } from '../../../RTD'
3
4
 
4
5
  export interface Embedding {
5
- resolve: (input: Input, properties: Properties) => string | undefined
6
+ resolve: (input: Input, properties: Properties, parameters: Parameter[]) => string | undefined
6
7
  }
@@ -6,9 +6,10 @@ export class Header implements Embedding {
6
6
  private readonly name: string
7
7
 
8
8
  public constructor (name: string) {
9
- this.name = name
9
+ this.name = name.toLowerCase()
10
10
 
11
- cors.allowHeader(this.name)
11
+ if (this.name !== 'host')
12
+ cors.allow(this.name)
12
13
  }
13
14
 
14
15
  public resolve (input: Input): string | undefined {
@@ -17,10 +18,11 @@ export class Header implements Embedding {
17
18
  if (value === undefined)
18
19
  return value
19
20
 
20
- input.pipelines.response.push((response) => {
21
- response.headers ??= new Headers()
22
- response.headers.append('vary', this.name)
23
- })
21
+ if (this.name !== 'host')
22
+ input.pipelines.response.push((response) => {
23
+ response.headers ??= new Headers()
24
+ response.headers.append('vary', this.name)
25
+ })
24
26
 
25
27
  if (Array.isArray(value))
26
28
  return value.join(', ')
@@ -7,7 +7,7 @@ import type { Input } from '../../../io'
7
7
 
8
8
  export class Language implements Embedding {
9
9
  public constructor () {
10
- cors.allowHeader('accept-language')
10
+ cors.allow('accept-language')
11
11
  }
12
12
 
13
13
  public resolve (input: Input, properties: Properties): string | undefined {
@@ -0,0 +1,14 @@
1
+ import type { Embedding } from './Embedding'
2
+ import type * as RTD from '../../../RTD'
3
+
4
+ export class Parameter implements Embedding {
5
+ private readonly name: string
6
+
7
+ public constructor (name: string) {
8
+ this.name = name
9
+ }
10
+
11
+ public resolve (_: unknown, __: unknown, parameters: RTD.Parameter[]): string | undefined {
12
+ return parameters.find((parameter) => parameter.name === this.name)?.value
13
+ }
14
+ }
@@ -1,11 +1,13 @@
1
1
  import { Language } from './Language'
2
- import { Header } from './Header'
3
-
2
+ import { Authority } from './Authority'
4
3
  import type { Embedding } from './Embedding'
5
4
 
6
5
  export const embeddings: Record<string, new () => Embedding> = {
7
- language: Language
6
+ language: Language,
7
+ authority: Authority
8
8
  }
9
9
 
10
- export { Header }
11
10
  export type { Embedding }
11
+
12
+ export { Header } from './Header'
13
+ export { Parameter } from './Parameter'
@@ -1,17 +1,28 @@
1
- import { type Exception } from '@toa.io/core'
1
+ import { match } from 'matchacho'
2
2
  import * as http from './HTTP'
3
+ import { Exception as HTTPException } from './HTTP'
4
+ import type { Exception } from '@toa.io/core'
3
5
 
4
- export function rethrow (exception: Exception): void {
5
- // see /runtime/core/src/exceptions.js
6
-
7
- if ((exception.code >= 200 && exception.code < 210) || exception.code === 221)
8
- throw new http.BadRequest(exception.message)
6
+ export function rethrow (exception: Exception | HTTPException): void {
7
+ if (exception instanceof HTTPException)
8
+ throw exception
9
9
 
10
- if (exception.code === 302)
11
- throw new http.NotFound()
10
+ // see /runtime/core/src/exceptions.js
11
+ throw match(exception.code,
12
+ badRequest, () => new http.BadRequest(exception.message),
13
+ 302, NOT_FOUND,
14
+ 303, PRECONDITION_FAILED,
15
+ 306, () => new http.Conflict(),
16
+ () => {
17
+ console.error(exception)
12
18
 
13
- if (exception.code === 303)
14
- throw new http.PreconditionFailed()
19
+ return exception
20
+ })
21
+ }
15
22
 
16
- throw exception as unknown as Error
23
+ function badRequest (code: number): boolean {
24
+ return (code >= 200 && code < 210) || code === 221
17
25
  }
26
+
27
+ const NOT_FOUND = new http.NotFound()
28
+ const PRECONDITION_FAILED = new http.PreconditionFailed()
package/source/root.ts CHANGED
@@ -25,6 +25,11 @@ const PREDEFINED: syntax.Node = {
25
25
  family: 'auth',
26
26
  name: 'echo',
27
27
  value: null
28
+ },
29
+ {
30
+ family: 'io',
31
+ name: 'output',
32
+ value: ['id', 'roles']
28
33
  }
29
34
  ]
30
35
  }
package/source/schemas.ts CHANGED
@@ -9,5 +9,5 @@ const path = resolve(__dirname, '../schemas')
9
9
  const namespace = schemas.namespace(path)
10
10
 
11
11
  export const querystring: Schema<Query> = namespace.schema('querystring')
12
- export const annotaion: Schema<Annotation> = namespace.schema('annotation')
12
+ export const annotation: Schema<Annotation> = namespace.schema('annotation')
13
13
  export const node: Schema<Node> = namespace.schema('node')
@@ -1,8 +1,8 @@
1
1
  export interface Annotation {
2
- host?: string;
2
+ authorities: Record<string, string>;
3
3
  class?: string;
4
4
  annotations?: Record<string, string>;
5
- debug: boolean;
6
- trace: boolean;
5
+ debug?: boolean;
6
+ trace?: boolean;
7
7
  '/'?: object;
8
8
  }
@@ -1,5 +1,7 @@
1
- import { type Endpoint } from './Endpoint';
2
- import { type Directives } from './Directive';
3
- import { type Branch } from './Branch';
4
1
  import type * as RTD from './RTD';
5
- export type Context = RTD.Context<Endpoint, Directives, Branch>;
2
+ export type Context = RTD.Context<Extension>;
3
+ interface Extension {
4
+ namespace: string;
5
+ component: string;
6
+ }
7
+ export {};
@@ -2,30 +2,17 @@ import type { Context, OutgoingMessage } from './HTTP';
2
2
  import type { Remotes } from './Remotes';
3
3
  import type { Output } from './io';
4
4
  import type * as RTD from './RTD';
5
- export declare class Directives implements RTD.Directives<Directives> {
5
+ export declare class Directives implements RTD.Directives {
6
6
  private readonly sets;
7
- constructor(sets: DirectiveSet[]);
7
+ constructor(sets: RTD.DirectiveSet[]);
8
8
  preflight(context: Context, parameters: RTD.Parameter[]): Promise<Output>;
9
9
  settle(context: Context, response: OutgoingMessage): Promise<void>;
10
- merge(directives: Directives): void;
11
10
  }
12
- export declare class DirectivesFactory implements RTD.DirectivesFactory<Directives> {
11
+ export declare class DirectivesFactory implements RTD.DirectiveFactory {
13
12
  private readonly remotes;
14
13
  private readonly families;
15
14
  private readonly mandatory;
16
- constructor(families: Family[], remotes: Remotes);
15
+ constructor(families: RTD.DirectiveFamily[], remotes: Remotes);
17
16
  create(declarations: RTD.syntax.Directive[]): Directives;
18
17
  }
19
18
  export declare const shortcuts: RTD.syntax.Shortcuts;
20
- export interface Family<TDirective = any, TExtension = any> {
21
- readonly name: string;
22
- readonly mandatory: boolean;
23
- create: (name: string, value: any, remotes: Remotes) => TDirective;
24
- preflight?: (directives: TDirective[], request: Context & TExtension, parameters: RTD.Parameter[]) => Output | Promise<Output>;
25
- settle?: (directives: TDirective[], request: Context & TExtension, response: OutgoingMessage) => void | Promise<void>;
26
- }
27
- interface DirectiveSet {
28
- family: Family;
29
- directives: any[];
30
- }
31
- export {};
@@ -11,10 +11,8 @@ class Directives {
11
11
  if (set.family.preflight === undefined)
12
12
  continue;
13
13
  const output = await set.family.preflight(set.directives, context, parameters);
14
- if (output !== null) {
15
- await this.settle(context, output);
14
+ if (output !== null)
16
15
  return output;
17
- }
18
16
  }
19
17
  return null;
20
18
  }
@@ -23,9 +21,6 @@ class Directives {
23
21
  if (set.family.settle !== undefined)
24
22
  await set.family.settle(set.directives, context, response);
25
23
  }
26
- merge(directives) {
27
- this.sets.push(...directives.sets);
28
- }
29
24
  }
30
25
  exports.Directives = Directives;
31
26
  class DirectivesFactory {
@@ -73,6 +68,8 @@ exports.shortcuts = new Map([
73
68
  ['id', 'auth:id'],
74
69
  ['role', 'auth:role'],
75
70
  ['rule', 'auth:rule'],
76
- ['incept', 'auth:incept']
71
+ ['incept', 'auth:incept'],
72
+ ['input', 'io:input'],
73
+ ['output', 'io:output']
77
74
  ]);
78
75
  //# sourceMappingURL=Directive.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Directive.js","sourceRoot":"","sources":["../source/Directive.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Directive.js","sourceRoot":"","sources":["../source/Directive.ts"],"names":[],"mappings":"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"}
@@ -4,16 +4,18 @@ import { Mapping } from './Mapping';
4
4
  import { type Context } from './Context';
5
5
  import * as http from './HTTP';
6
6
  import type * as RTD from './RTD';
7
- export declare class Endpoint implements RTD.Endpoint<Endpoint> {
7
+ export declare class Endpoint implements RTD.Endpoint {
8
8
  private readonly endpoint;
9
9
  private readonly mapping;
10
10
  private readonly discovery;
11
11
  private remote;
12
12
  constructor(endpoint: string, mapping: Mapping, discovery: Promise<Component>);
13
- call(body: any, query: http.Query, parameters: RTD.Parameter[]): Promise<http.OutgoingMessage>;
13
+ call(context: http.Context, parameters: RTD.Parameter[]): Promise<http.OutgoingMessage>;
14
14
  close(): Promise<void>;
15
+ private query;
16
+ private version;
15
17
  }
16
- export declare class EndpointsFactory implements RTD.EndpointsFactory<Endpoint> {
18
+ export declare class EndpointsFactory implements RTD.EndpointsFactory {
17
19
  private readonly remotes;
18
20
  constructor(remotes: Remotes);
19
21
  create(method: RTD.syntax.Method, context: Context): Endpoint;
@@ -36,24 +36,48 @@ class Endpoint {
36
36
  this.mapping = mapping;
37
37
  this.discovery = discovery;
38
38
  }
39
- async call(body, query, parameters) {
39
+ async call(context, parameters) {
40
+ const body = await context.body();
41
+ const query = this.query(context);
40
42
  const request = this.mapping.fit(body, query, parameters);
41
43
  this.remote ??= await this.discovery;
44
+ if (context.debug)
45
+ console.debug('Call', `${this.remote.locator.id}.${this.endpoint}`, request);
42
46
  const reply = await this.remote.invoke(this.endpoint, request);
43
47
  if (reply instanceof Error)
44
- throw new http.Conflict(reply);
45
- const message = { body: reply };
48
+ throw new http.UnprocessableEntity(reply);
49
+ const message = {};
46
50
  if (typeof reply === 'object' && reply !== null && '_version' in reply) {
51
+ const etag = context.request.headers['if-none-match'];
47
52
  message.headers ??= new Headers();
48
- message.headers.set('etag', `"${reply._version.toString()}"`);
49
- delete reply._version;
53
+ if (etag !== undefined && reply._version === this.version(etag)) {
54
+ message.status = 304;
55
+ message.headers.set('etag', etag);
56
+ return message;
57
+ }
58
+ else
59
+ message.headers.set('etag', `"${reply._version.toString()}"`);
50
60
  }
61
+ message.body = reply;
51
62
  return message;
52
63
  }
53
64
  async close() {
54
65
  this.remote ??= await this.discovery;
55
66
  await this.remote.disconnect(INTERRUPT);
56
67
  }
68
+ query(context) {
69
+ const query = Object.fromEntries(context.url.searchParams);
70
+ const etag = context.request.headers['if-match'];
71
+ if (etag !== undefined)
72
+ query.version = this.version(etag);
73
+ return query;
74
+ }
75
+ version(etag) {
76
+ const match = etag.match(ETAG);
77
+ if (match === null)
78
+ throw new http.BadRequest('Invalid ETag.');
79
+ return Number.parseInt(match.groups.version);
80
+ }
57
81
  }
58
82
  exports.Endpoint = Endpoint;
59
83
  class EndpointsFactory {
@@ -74,5 +98,6 @@ class EndpointsFactory {
74
98
  }
75
99
  }
76
100
  exports.EndpointsFactory = EndpointsFactory;
101
+ const ETAG = /^"(?<version>\d{1,32})"$/;
77
102
  const INTERRUPT = true;
78
103
  //# sourceMappingURL=Endpoint.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Endpoint.js","sourceRoot":"","sources":["../source/Endpoint.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,uCAAmC;AAEnC,6CAA8B;AAG9B,MAAa,QAAQ;IACF,QAAQ,CAAQ;IAChB,OAAO,CAAS;IAChB,SAAS,CAAoB;IACtC,MAAM,GAAqB,IAAI,CAAA;IAEvC,YAAoB,QAAgB,EAAE,OAAgB,EAAE,SAA6B;QACnF,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;IAC5B,CAAC;IAEM,KAAK,CAAC,IAAI,CAChB,IAAS,EAAE,KAAiB,EAAE,UAA2B;QACxD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,CAAA;QAEzD,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,SAAS,CAAA;QAEpC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAE9D,IAAI,KAAK,YAAY,KAAK;YACxB,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QAEhC,MAAM,OAAO,GAAyB,EAAE,IAAI,EAAE,KAAK,EAAE,CAAA;QAErD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,UAAU,IAAI,KAAK,EAAE,CAAC;YACvE,OAAO,CAAC,OAAO,KAAK,IAAI,OAAO,EAAE,CAAA;YACjC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;YAC7D,OAAO,KAAK,CAAC,QAAQ,CAAA;QACvB,CAAC;QAED,OAAO,OAAO,CAAA;IAChB,CAAC;IAEM,KAAK,CAAC,KAAK;QAChB,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,SAAS,CAAA;QAEpC,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;IACzC,CAAC;CACF;AAvCD,4BAuCC;AAED,MAAa,gBAAgB;IACV,OAAO,CAAS;IAEjC,YAAoB,OAAgB;QAClC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAEM,MAAM,CAAE,MAAyB,EAAE,OAAgB;QACxD,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS;YAC9B,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;QAE5D,MAAM,OAAO,GAAG,iBAAO,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QACpD,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,EAAE,SAAS,CAAA;QAC1E,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,EAAE,SAAS,CAAA;QAE1E,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS;YACpD,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAA;QAElE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;QAE7D,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,CAAA;IAClE,CAAC;CACF;AAtBD,4CAsBC;AAED,MAAM,SAAS,GAAG,IAAI,CAAA"}
1
+ {"version":3,"file":"Endpoint.js","sourceRoot":"","sources":["../source/Endpoint.ts"],"names":[],"mappings":"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"}
@@ -22,19 +22,24 @@ var __importStar = (this && this.__importStar) || function (mod) {
22
22
  __setModuleDefault(result, mod);
23
23
  return result;
24
24
  };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
25
28
  Object.defineProperty(exports, "__esModule", { value: true });
26
29
  exports.Factory = void 0;
30
+ const node_assert_1 = __importDefault(require("node:assert"));
31
+ const generic_1 = require("@toa.io/generic");
27
32
  const Tenant_1 = require("./Tenant");
28
33
  const Gateway_1 = require("./Gateway");
29
34
  const Remotes_1 = require("./Remotes");
30
35
  const RTD_1 = require("./RTD");
31
- const HTTP_1 = require("./HTTP");
32
36
  const Endpoint_1 = require("./Endpoint");
33
37
  const directives_1 = require("./directives");
34
38
  const Directive_1 = require("./Directive");
35
39
  const Composition_1 = require("./Composition");
36
40
  const root = __importStar(require("./root"));
37
41
  const Interception_1 = require("./Interception");
42
+ const http = __importStar(require("./HTTP"));
38
43
  class Factory {
39
44
  boot;
40
45
  constructor(boot) {
@@ -45,10 +50,10 @@ class Factory {
45
50
  return new Tenant_1.Tenant(broadcast, locator, node);
46
51
  }
47
52
  service() {
48
- const debug = process.env.TOA_EXPOSITION_DEBUG === '1';
49
- const trace = process.env.TOA_EXPOSITION_TRACE === '1';
53
+ node_assert_1.default.ok(process.env.TOA_EXPOSITION_PROPERTIES, 'TOA_EXPOSITION_PROPERTIES is undefined');
54
+ const options = (0, generic_1.decode)(process.env.TOA_EXPOSITION_PROPERTIES);
50
55
  const broadcast = this.boot.bindings.broadcast(CHANNEL);
51
- const server = HTTP_1.Server.create({ methods: RTD_1.syntax.verbs, debug, trace });
56
+ const server = http.Server.create({ ...options, methods: RTD_1.syntax.verbs });
52
57
  const remotes = new Remotes_1.Remotes(this.boot);
53
58
  const node = root.resolve();
54
59
  const methods = new Endpoint_1.EndpointsFactory(remotes);
@@ -1 +1 @@
1
- {"version":3,"file":"Factory.js","sourceRoot":"","sources":["../source/Factory.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qCAAiC;AACjC,uCAAmC;AACnC,uCAAmC;AACnC,+BAAoC;AACpC,iCAA+B;AAC/B,yCAA4D;AAC5D,6CAAqD;AACrD,2CAAgE;AAChE,+CAA2C;AAC3C,6CAA8B;AAC9B,iDAA6C;AAI7C,MAAa,OAAO;IACD,IAAI,CAAY;IAEjC,YAAoB,IAAgB;QAClC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;IAEM,MAAM,CAAE,OAAgB,EAAE,IAAiB;QAChD,MAAM,SAAS,GAAc,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;QAE9E,OAAO,IAAI,eAAM,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;IAC7C,CAAC;IAEM,OAAO;QACZ,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,GAAG,CAAA;QACtD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,GAAG,CAAA;QACtD,MAAM,SAAS,GAAc,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;QAClE,MAAM,MAAM,GAAG,aAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,YAAM,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;QACrE,MAAM,OAAO,GAAG,IAAI,iBAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAA;QAC3B,MAAM,OAAO,GAAG,IAAI,2BAAgB,CAAC,OAAO,CAAC,CAAA;QAC7C,MAAM,UAAU,GAAG,IAAI,6BAAiB,CAAC,qBAAQ,EAAE,OAAO,CAAC,CAAA;QAC3D,MAAM,YAAY,GAAG,IAAI,2BAAY,CAAC,yBAAY,CAAC,CAAA;QACnD,MAAM,IAAI,GAAG,IAAI,UAAI,CAAuB,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,CAAA;QAEtE,MAAM,WAAW,GAAG,IAAI,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC9C,MAAM,OAAO,GAAG,IAAI,iBAAO,CAAC,SAAS,EAAE,IAAI,EAAE,YAAY,CAAC,CAAA;QAE1D,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QACxB,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;QAE5B,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;QAC5C,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAEvB,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AApCD,0BAoCC;AAED,MAAM,OAAO,GAAG,YAAY,CAAA"}
1
+ {"version":3,"file":"Factory.js","sourceRoot":"","sources":["../source/Factory.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,8DAAgC;AAChC,6CAAwC;AACxC,qCAAiC;AACjC,uCAAmC;AACnC,uCAAmC;AACnC,+BAAoC;AACpC,yCAA6C;AAC7C,6CAAqD;AACrD,2CAA+C;AAC/C,+CAA2C;AAC3C,6CAA8B;AAC9B,iDAA6C;AAC7C,6CAA8B;AAI9B,MAAa,OAAO;IACD,IAAI,CAAY;IAEjC,YAAoB,IAAgB;QAClC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;IAEM,MAAM,CAAE,OAAgB,EAAE,IAAiB;QAChD,MAAM,SAAS,GAAc,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;QAE9E,OAAO,IAAI,eAAM,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;IAC7C,CAAC;IAEM,OAAO;QACZ,qBAAM,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAC7C,wCAAwC,CAAC,CAAA;QAE3C,MAAM,OAAO,GAAG,IAAA,gBAAM,EAAe,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAA;QAC3E,MAAM,SAAS,GAAc,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;QAClE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,YAAM,CAAC,KAAK,EAAE,CAAC,CAAA;QACxE,MAAM,OAAO,GAAG,IAAI,iBAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAA;QAC3B,MAAM,OAAO,GAAG,IAAI,2BAAgB,CAAC,OAAO,CAAC,CAAA;QAC7C,MAAM,UAAU,GAAG,IAAI,6BAAiB,CAAC,qBAAQ,EAAE,OAAO,CAAC,CAAA;QAC3D,MAAM,YAAY,GAAG,IAAI,2BAAY,CAAC,yBAAY,CAAC,CAAA;QACnD,MAAM,IAAI,GAAG,IAAI,UAAI,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,CAAA;QAEhD,MAAM,WAAW,GAAG,IAAI,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC9C,MAAM,OAAO,GAAG,IAAI,iBAAO,CAAC,SAAS,EAAE,IAAI,EAAE,YAAY,CAAC,CAAA;QAE1D,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QACxB,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;QAE5B,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;QAC5C,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAEvB,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AAtCD,0BAsCC;AAED,MAAM,OAAO,GAAG,YAAY,CAAA"}
@@ -3,18 +3,15 @@ import * as http from './HTTP';
3
3
  import type { Interception } from './Interception';
4
4
  import type { Tree } from './RTD';
5
5
  import type { Label } from './discovery';
6
- import type { Endpoint } from './Endpoint';
7
- import type { Directives } from './Directive';
8
6
  export declare class Gateway extends Connector {
9
7
  private readonly broadcast;
10
8
  private readonly tree;
11
9
  private readonly interceptor;
12
- constructor(broadcast: Broadcast, tree: Tree<Endpoint, Directives>, interception: Interception);
10
+ constructor(broadcast: Broadcast, tree: Tree, interception: Interception);
13
11
  process(context: http.Context): Promise<http.OutgoingMessage>;
14
12
  protected open(): Promise<void>;
15
13
  protected dispose(): void;
16
14
  private call;
17
- private query;
18
15
  private discover;
19
16
  private merge;
20
17
  }