@toa.io/extensions.exposition 1.0.0-alpha.7 → 1.0.0-alpha.71

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 (434) 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 +21 -10
  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 +32 -16
  26. package/components/identity.federation/operations/authenticate.d.ts +2 -2
  27. package/components/identity.federation/operations/authenticate.js +4 -11
  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/assertions-as-values.js +2 -1
  33. package/components/identity.federation/operations/lib/assertions-as-values.js.map +1 -1
  34. package/components/identity.federation/operations/lib/jwt.d.ts +5 -5
  35. package/components/identity.federation/operations/lib/jwt.js +25 -12
  36. package/components/identity.federation/operations/lib/jwt.js.map +1 -1
  37. package/components/identity.federation/operations/tsconfig.tsbuildinfo +1 -1
  38. package/components/identity.federation/operations/types/configuration.d.ts +14 -0
  39. package/components/identity.federation/operations/types/configuration.js +3 -0
  40. package/components/identity.federation/operations/types/configuration.js.map +1 -0
  41. package/components/identity.federation/operations/{types.d.ts → types/context.d.ts} +15 -7
  42. package/components/identity.federation/operations/types/context.js +3 -0
  43. package/components/identity.federation/operations/types/context.js.map +1 -0
  44. package/components/identity.federation/operations/types/entity.d.ts +6 -0
  45. package/components/identity.federation/operations/types/entity.js +3 -0
  46. package/components/identity.federation/operations/types/entity.js.map +1 -0
  47. package/components/identity.federation/operations/types/index.d.ts +3 -0
  48. package/components/identity.federation/operations/types/index.js +20 -0
  49. package/components/identity.federation/operations/types/index.js.map +1 -0
  50. package/components/identity.federation/source/authenticate.ts +6 -19
  51. package/components/identity.federation/source/{create.ts → incept.ts} +10 -9
  52. package/components/identity.federation/source/lib/assertions-as-values.ts +4 -2
  53. package/components/identity.federation/source/lib/jwt.test.ts +123 -4
  54. package/components/identity.federation/source/lib/jwt.ts +36 -16
  55. package/components/identity.federation/source/types/configuration.ts +15 -0
  56. package/components/identity.federation/source/{types.ts → types/context.ts} +17 -6
  57. package/components/identity.federation/source/types/entity.ts +6 -0
  58. package/components/identity.federation/source/types/index.ts +3 -0
  59. package/components/identity.federation/tsconfig.json +5 -4
  60. package/components/identity.roles/manifest.toa.yaml +18 -7
  61. package/components/identity.roles/operations/grant.d.ts +10 -0
  62. package/components/identity.roles/operations/grant.js +21 -0
  63. package/components/identity.roles/operations/grant.js.map +1 -0
  64. package/components/identity.roles/operations/lib/Entity.d.ts +5 -0
  65. package/components/identity.roles/operations/lib/Entity.js +3 -0
  66. package/components/identity.roles/operations/lib/Entity.js.map +1 -0
  67. package/components/identity.roles/operations/list.d.ts +1 -4
  68. package/components/identity.roles/operations/list.js.map +1 -1
  69. package/components/identity.roles/operations/principal.d.ts +4 -6
  70. package/components/identity.roles/operations/principal.js +6 -1
  71. package/components/identity.roles/operations/principal.js.map +1 -1
  72. package/components/identity.roles/operations/tsconfig.tsbuildinfo +1 -1
  73. package/components/identity.roles/source/grant.ts +32 -0
  74. package/components/identity.roles/source/lib/Entity.ts +5 -0
  75. package/components/identity.roles/source/list.ts +2 -4
  76. package/components/identity.roles/source/principal.ts +10 -8
  77. package/components/identity.tokens/manifest.toa.yaml +19 -5
  78. package/components/identity.tokens/operations/authenticate.d.ts +2 -2
  79. package/components/identity.tokens/operations/authenticate.js +12 -5
  80. package/components/identity.tokens/operations/authenticate.js.map +1 -1
  81. package/components/identity.tokens/operations/decrypt.js +1 -0
  82. package/components/identity.tokens/operations/decrypt.js.map +1 -1
  83. package/components/identity.tokens/operations/encrypt.js +5 -1
  84. package/components/identity.tokens/operations/encrypt.js.map +1 -1
  85. package/components/identity.tokens/operations/tsconfig.tsbuildinfo +1 -1
  86. package/components/identity.tokens/operations/types.d.ts +8 -2
  87. package/components/identity.tokens/receivers/identity.bans.created.js +3 -0
  88. package/components/identity.tokens/source/authenticate.test.ts +11 -4
  89. package/components/identity.tokens/source/authenticate.ts +14 -6
  90. package/components/identity.tokens/source/decrypt.test.ts +5 -3
  91. package/components/identity.tokens/source/decrypt.ts +9 -8
  92. package/components/identity.tokens/source/encrypt.test.ts +26 -2
  93. package/components/identity.tokens/source/encrypt.ts +5 -1
  94. package/components/identity.tokens/source/types.ts +9 -2
  95. package/components/octets.storage/manifest.toa.yaml +6 -7
  96. package/components/octets.storage/operations/get.js +2 -2
  97. package/components/octets.storage/operations/store.js +113 -3
  98. package/documentation/access.md +75 -38
  99. package/documentation/authorities.md +49 -0
  100. package/documentation/cache.md +8 -1
  101. package/documentation/components.md +47 -22
  102. package/documentation/flow.md +31 -0
  103. package/documentation/identity.md +17 -22
  104. package/documentation/introspection.md +82 -0
  105. package/documentation/octets.md +81 -23
  106. package/documentation/protocol.md +13 -3
  107. package/documentation/query.md +29 -4
  108. package/documentation/require.md +15 -0
  109. package/documentation/tree.md +13 -0
  110. package/documentation/vary.md +14 -14
  111. package/features/access.feature +78 -46
  112. package/features/annotation.feature +1 -0
  113. package/features/auth.claim.feature +170 -0
  114. package/features/authorities.basic.feature +141 -0
  115. package/features/authorities.feature +32 -0
  116. package/features/authorities.federation.feature +100 -0
  117. package/features/authorities.tokens.feature +117 -0
  118. package/features/body.feature +3 -0
  119. package/features/cache.feature +109 -5
  120. package/features/cors.feature +6 -1
  121. package/features/debug.feature +34 -0
  122. package/features/directives.feature +3 -0
  123. package/features/dynamic.feature +4 -0
  124. package/features/errors.feature +20 -7
  125. package/features/etag.feature +31 -0
  126. package/features/flow.feature +45 -0
  127. package/features/identity.bans.feature +137 -0
  128. package/features/identity.basic.feature +125 -23
  129. package/features/identity.feature +7 -2
  130. package/features/identity.federation.feature +66 -11
  131. package/features/identity.roles.feature +250 -7
  132. package/features/identity.tokens.feature +54 -4
  133. package/features/introspection.feature +153 -0
  134. package/features/io.feature +38 -1
  135. package/features/methods.feature +47 -0
  136. package/features/octets.download.feature +189 -0
  137. package/features/octets.entries.feature +8 -1
  138. package/features/octets.feature +82 -54
  139. package/features/octets.meta.feature +3 -0
  140. package/features/octets.workflows.feature +239 -19
  141. package/features/probes.feature +14 -0
  142. package/features/{queries.feature → query.feature} +65 -2
  143. package/features/realtime.feature +34 -0
  144. package/features/require.feature +67 -0
  145. package/features/response.feature +38 -3
  146. package/features/routes.feature +93 -2
  147. package/features/steps/Database.ts +17 -10
  148. package/features/steps/Gateway.ts +23 -6
  149. package/features/steps/IdP.ts +30 -25
  150. package/features/steps/Parameters.ts +4 -1
  151. package/features/steps/Realtime.ts +151 -0
  152. package/features/steps/components/echo/manifest.toa.yaml +14 -1
  153. package/features/steps/components/echo/operations/identity.js +7 -0
  154. package/features/steps/components/echo/operations/parameters.js +7 -0
  155. package/features/steps/components/echo.beacon/manifest.toa.yaml +2 -0
  156. package/features/steps/components/echo.beacon/operations/hello.js +5 -0
  157. package/features/steps/components/octets.tester/manifest.toa.yaml +22 -1
  158. package/features/steps/components/octets.tester/operations/authority.js +7 -0
  159. package/features/steps/components/octets.tester/operations/baz.js +1 -2
  160. package/features/steps/components/octets.tester/operations/diversify.js +3 -1
  161. package/features/steps/components/octets.tester/operations/foo.js +2 -2
  162. package/features/steps/components/octets.tester/operations/redirect.js +12 -0
  163. package/features/steps/components/octets.tester/operations/yex.js +16 -0
  164. package/features/steps/components/octets.tester/operations/yield.js +13 -0
  165. package/features/steps/components/pots/manifest.toa.yaml +14 -3
  166. package/features/steps/components/users/manifest.toa.yaml +0 -1
  167. package/features/steps/components/users.properties/manifest.toa.yaml +1 -1
  168. package/features/streams.feature +5 -0
  169. package/features/timing.feature +4 -1
  170. package/features/vary.feature +71 -0
  171. package/package.json +23 -14
  172. package/readme.md +19 -14
  173. package/schemas/annotation.cos.yaml +1 -1
  174. package/schemas/method.cos.yaml +1 -1
  175. package/schemas/node.cos.yaml +1 -0
  176. package/schemas/octets/store.cos.yaml +25 -3
  177. package/schemas/query.cos.yaml +4 -10
  178. package/source/Annotation.ts +3 -3
  179. package/source/Composition.ts +0 -6
  180. package/source/Directive.ts +4 -5
  181. package/source/Endpoint.ts +52 -12
  182. package/source/Factory.ts +10 -11
  183. package/source/Gateway.ts +48 -19
  184. package/source/HTTP/Context.ts +25 -2
  185. package/source/HTTP/Server.ts +52 -44
  186. package/source/HTTP/exceptions.ts +13 -1
  187. package/source/HTTP/formats/index.ts +3 -3
  188. package/source/HTTP/messages.test.ts +45 -2
  189. package/source/HTTP/messages.ts +23 -5
  190. package/source/Introspection.ts +11 -0
  191. package/source/Mapping.ts +63 -21
  192. package/source/Query.test.ts +3 -3
  193. package/source/Query.ts +117 -33
  194. package/source/RTD/Endpoint.ts +3 -0
  195. package/source/RTD/Method.ts +16 -0
  196. package/source/RTD/Node.ts +29 -13
  197. package/source/RTD/Route.ts +5 -4
  198. package/source/RTD/factory.ts +5 -2
  199. package/source/RTD/syntax/parse.ts +37 -24
  200. package/source/RTD/syntax/types.ts +6 -4
  201. package/source/Remotes.ts +2 -9
  202. package/source/Tenant.ts +0 -8
  203. package/source/deployment.ts +33 -23
  204. package/source/directives/auth/Authorization.ts +37 -14
  205. package/source/directives/auth/Delegate.ts +42 -0
  206. package/source/directives/auth/Federation.ts +84 -0
  207. package/source/directives/auth/Incept.ts +4 -3
  208. package/source/directives/auth/Role.test.ts +53 -6
  209. package/source/directives/auth/Role.ts +22 -14
  210. package/source/directives/auth/split.ts +1 -1
  211. package/source/directives/auth/types.ts +1 -1
  212. package/source/directives/cache/Cache.ts +13 -6
  213. package/source/directives/cache/Control.ts +42 -16
  214. package/source/directives/cors/CORS.ts +1 -1
  215. package/source/directives/dev/Development.ts +1 -1
  216. package/source/directives/flow/Fetch.ts +88 -0
  217. package/source/directives/flow/Flow.ts +34 -0
  218. package/source/directives/flow/index.ts +3 -0
  219. package/source/directives/flow/types.ts +6 -0
  220. package/source/directives/index.ts +3 -1
  221. package/source/directives/io/Input.ts +4 -4
  222. package/source/directives/io/Output.ts +4 -3
  223. package/source/directives/octets/Context.ts +3 -2
  224. package/source/directives/octets/Fetch.ts +11 -10
  225. package/source/directives/octets/List.ts +5 -5
  226. package/source/directives/octets/Octets.ts +1 -3
  227. package/source/directives/octets/Store.ts +30 -10
  228. package/source/directives/octets/bytes.test.ts +30 -0
  229. package/source/directives/octets/bytes.ts +18 -0
  230. package/source/directives/octets/schemas.ts +4 -6
  231. package/source/directives/octets/workflows/Execution.ts +60 -8
  232. package/source/directives/octets/workflows/Workflow.ts +2 -1
  233. package/source/directives/require/Directive.ts +5 -0
  234. package/source/directives/require/Headers.ts +20 -0
  235. package/source/directives/require/Require.ts +28 -0
  236. package/source/directives/require/index.ts +3 -0
  237. package/source/directives/vary/Directive.ts +2 -1
  238. package/source/directives/vary/Embed.ts +14 -8
  239. package/source/directives/vary/Vary.ts +6 -4
  240. package/source/directives/vary/embeddings/Authority.ts +8 -0
  241. package/source/directives/vary/embeddings/Embedding.ts +2 -1
  242. package/source/directives/vary/embeddings/Parameter.ts +14 -0
  243. package/source/directives/vary/embeddings/index.ts +6 -4
  244. package/source/exceptions.ts +23 -11
  245. package/source/manifest.ts +10 -11
  246. package/source/schemas.ts +1 -1
  247. package/transpiled/Annotation.d.ts +3 -3
  248. package/transpiled/Composition.d.ts +0 -1
  249. package/transpiled/Composition.js +0 -4
  250. package/transpiled/Composition.js.map +1 -1
  251. package/transpiled/Directive.js +4 -4
  252. package/transpiled/Directive.js.map +1 -1
  253. package/transpiled/Endpoint.d.ts +6 -4
  254. package/transpiled/Endpoint.js +32 -4
  255. package/transpiled/Endpoint.js.map +1 -1
  256. package/transpiled/Factory.d.ts +1 -1
  257. package/transpiled/Factory.js +9 -8
  258. package/transpiled/Factory.js.map +1 -1
  259. package/transpiled/Gateway.d.ts +2 -0
  260. package/transpiled/Gateway.js +36 -12
  261. package/transpiled/Gateway.js.map +1 -1
  262. package/transpiled/HTTP/Context.d.ts +8 -1
  263. package/transpiled/HTTP/Context.js +16 -2
  264. package/transpiled/HTTP/Context.js.map +1 -1
  265. package/transpiled/HTTP/Server.d.ts +13 -2
  266. package/transpiled/HTTP/Server.js +39 -36
  267. package/transpiled/HTTP/Server.js.map +1 -1
  268. package/transpiled/HTTP/exceptions.d.ts +7 -1
  269. package/transpiled/HTTP/exceptions.js +13 -1
  270. package/transpiled/HTTP/exceptions.js.map +1 -1
  271. package/transpiled/HTTP/formats/index.js +3 -3
  272. package/transpiled/HTTP/formats/index.js.map +1 -1
  273. package/transpiled/HTTP/messages.d.ts +1 -0
  274. package/transpiled/HTTP/messages.js +24 -5
  275. package/transpiled/HTTP/messages.js.map +1 -1
  276. package/transpiled/Introspection.d.ts +9 -0
  277. package/transpiled/Introspection.js +3 -0
  278. package/transpiled/Introspection.js.map +1 -0
  279. package/transpiled/Mapping.d.ts +10 -2
  280. package/transpiled/Mapping.js +48 -19
  281. package/transpiled/Mapping.js.map +1 -1
  282. package/transpiled/Query.d.ts +10 -1
  283. package/transpiled/Query.js +83 -30
  284. package/transpiled/Query.js.map +1 -1
  285. package/transpiled/RTD/Endpoint.d.ts +1 -0
  286. package/transpiled/RTD/Method.d.ts +4 -0
  287. package/transpiled/RTD/Method.js +11 -0
  288. package/transpiled/RTD/Method.js.map +1 -1
  289. package/transpiled/RTD/Node.d.ts +4 -1
  290. package/transpiled/RTD/Node.js +23 -12
  291. package/transpiled/RTD/Node.js.map +1 -1
  292. package/transpiled/RTD/Route.d.ts +1 -1
  293. package/transpiled/RTD/Route.js +0 -1
  294. package/transpiled/RTD/Route.js.map +1 -1
  295. package/transpiled/RTD/factory.js +5 -2
  296. package/transpiled/RTD/factory.js.map +1 -1
  297. package/transpiled/RTD/syntax/parse.js +34 -22
  298. package/transpiled/RTD/syntax/parse.js.map +1 -1
  299. package/transpiled/RTD/syntax/types.d.ts +5 -3
  300. package/transpiled/RTD/syntax/types.js +1 -1
  301. package/transpiled/RTD/syntax/types.js.map +1 -1
  302. package/transpiled/Remotes.d.ts +2 -4
  303. package/transpiled/Remotes.js +0 -5
  304. package/transpiled/Remotes.js.map +1 -1
  305. package/transpiled/Tenant.d.ts +0 -1
  306. package/transpiled/Tenant.js +0 -6
  307. package/transpiled/Tenant.js.map +1 -1
  308. package/transpiled/deployment.d.ts +1 -1
  309. package/transpiled/deployment.js +28 -20
  310. package/transpiled/deployment.js.map +1 -1
  311. package/transpiled/directives/auth/Authorization.js +26 -10
  312. package/transpiled/directives/auth/Authorization.js.map +1 -1
  313. package/transpiled/directives/auth/Delegate.d.ts +10 -0
  314. package/transpiled/directives/auth/Delegate.js +34 -0
  315. package/transpiled/directives/auth/Delegate.js.map +1 -0
  316. package/transpiled/directives/auth/Federation.d.ts +16 -0
  317. package/transpiled/directives/auth/Federation.js +57 -0
  318. package/transpiled/directives/auth/Federation.js.map +1 -0
  319. package/transpiled/directives/auth/Incept.js +4 -3
  320. package/transpiled/directives/auth/Incept.js.map +1 -1
  321. package/transpiled/directives/auth/Role.d.ts +4 -1
  322. package/transpiled/directives/auth/Role.js +20 -14
  323. package/transpiled/directives/auth/Role.js.map +1 -1
  324. package/transpiled/directives/auth/split.js +1 -1
  325. package/transpiled/directives/auth/split.js.map +1 -1
  326. package/transpiled/directives/cache/Cache.d.ts +3 -3
  327. package/transpiled/directives/cache/Cache.js +10 -4
  328. package/transpiled/directives/cache/Cache.js.map +1 -1
  329. package/transpiled/directives/cache/Control.d.ts +2 -1
  330. package/transpiled/directives/cache/Control.js +29 -12
  331. package/transpiled/directives/cache/Control.js.map +1 -1
  332. package/transpiled/directives/cors/CORS.js +1 -1
  333. package/transpiled/directives/cors/CORS.js.map +1 -1
  334. package/transpiled/directives/dev/Development.js +1 -1
  335. package/transpiled/directives/dev/Development.js.map +1 -1
  336. package/transpiled/directives/flow/Fetch.d.ts +13 -0
  337. package/transpiled/directives/flow/Fetch.js +59 -0
  338. package/transpiled/directives/flow/Fetch.js.map +1 -0
  339. package/transpiled/directives/flow/Flow.d.ts +10 -0
  340. package/transpiled/directives/flow/Flow.js +27 -0
  341. package/transpiled/directives/flow/Flow.js.map +1 -0
  342. package/transpiled/directives/flow/index.d.ts +2 -0
  343. package/transpiled/directives/flow/index.js +6 -0
  344. package/transpiled/directives/flow/index.js.map +1 -0
  345. package/transpiled/directives/flow/types.d.ts +5 -0
  346. package/transpiled/directives/flow/types.js.map +1 -0
  347. package/transpiled/directives/index.js +3 -1
  348. package/transpiled/directives/index.js.map +1 -1
  349. package/transpiled/directives/io/Input.js +2 -2
  350. package/transpiled/directives/io/Input.js.map +1 -1
  351. package/transpiled/directives/io/Output.js +2 -2
  352. package/transpiled/directives/io/Output.js.map +1 -1
  353. package/transpiled/directives/octets/Context.js +4 -24
  354. package/transpiled/directives/octets/Context.js.map +1 -1
  355. package/transpiled/directives/octets/Fetch.d.ts +3 -3
  356. package/transpiled/directives/octets/Fetch.js +8 -8
  357. package/transpiled/directives/octets/Fetch.js.map +1 -1
  358. package/transpiled/directives/octets/List.d.ts +3 -3
  359. package/transpiled/directives/octets/List.js +3 -3
  360. package/transpiled/directives/octets/List.js.map +1 -1
  361. package/transpiled/directives/octets/Octets.js +1 -3
  362. package/transpiled/directives/octets/Octets.js.map +1 -1
  363. package/transpiled/directives/octets/Store.d.ts +6 -1
  364. package/transpiled/directives/octets/Store.js +17 -7
  365. package/transpiled/directives/octets/Store.js.map +1 -1
  366. package/transpiled/directives/octets/bytes.d.ts +1 -0
  367. package/transpiled/directives/octets/bytes.js +21 -0
  368. package/transpiled/directives/octets/bytes.js.map +1 -0
  369. package/transpiled/directives/octets/schemas.d.ts +4 -6
  370. package/transpiled/directives/octets/schemas.js +1 -3
  371. package/transpiled/directives/octets/schemas.js.map +1 -1
  372. package/transpiled/directives/octets/workflows/Execution.d.ts +5 -1
  373. package/transpiled/directives/octets/workflows/Execution.js +44 -9
  374. package/transpiled/directives/octets/workflows/Execution.js.map +1 -1
  375. package/transpiled/directives/octets/workflows/Workflow.js +2 -1
  376. package/transpiled/directives/octets/workflows/Workflow.js.map +1 -1
  377. package/transpiled/directives/require/Directive.d.ts +4 -0
  378. package/transpiled/directives/require/Directive.js +3 -0
  379. package/transpiled/directives/require/Directive.js.map +1 -0
  380. package/transpiled/directives/require/Headers.d.ts +7 -0
  381. package/transpiled/directives/require/Headers.js +19 -0
  382. package/transpiled/directives/require/Headers.js.map +1 -0
  383. package/transpiled/directives/require/Require.d.ts +9 -0
  384. package/transpiled/directives/require/Require.js +27 -0
  385. package/transpiled/directives/require/Require.js.map +1 -0
  386. package/transpiled/directives/require/index.d.ts +2 -0
  387. package/transpiled/directives/require/index.js +6 -0
  388. package/transpiled/directives/require/index.js.map +1 -0
  389. package/transpiled/directives/vary/Directive.d.ts +2 -1
  390. package/transpiled/directives/vary/Embed.d.ts +2 -1
  391. package/transpiled/directives/vary/Embed.js +8 -6
  392. package/transpiled/directives/vary/Embed.js.map +1 -1
  393. package/transpiled/directives/vary/Vary.d.ts +2 -2
  394. package/transpiled/directives/vary/Vary.js +3 -3
  395. package/transpiled/directives/vary/Vary.js.map +1 -1
  396. package/transpiled/directives/vary/embeddings/Authority.d.ts +5 -0
  397. package/transpiled/directives/vary/embeddings/Authority.js +10 -0
  398. package/transpiled/directives/vary/embeddings/Authority.js.map +1 -0
  399. package/transpiled/directives/vary/embeddings/Embedding.d.ts +2 -1
  400. package/transpiled/directives/vary/embeddings/Parameter.d.ts +7 -0
  401. package/transpiled/directives/vary/embeddings/Parameter.js +14 -0
  402. package/transpiled/directives/vary/embeddings/Parameter.js.map +1 -0
  403. package/transpiled/directives/vary/embeddings/index.d.ts +2 -2
  404. package/transpiled/directives/vary/embeddings/index.js +8 -4
  405. package/transpiled/directives/vary/embeddings/index.js.map +1 -1
  406. package/transpiled/exceptions.d.ts +3 -2
  407. package/transpiled/exceptions.js +14 -7
  408. package/transpiled/exceptions.js.map +1 -1
  409. package/transpiled/manifest.js +10 -11
  410. package/transpiled/manifest.js.map +1 -1
  411. package/transpiled/schemas.d.ts +1 -1
  412. package/transpiled/schemas.js +2 -2
  413. package/transpiled/schemas.js.map +1 -1
  414. package/transpiled/tsconfig.tsbuildinfo +1 -1
  415. package/tsconfig.json +9 -7
  416. package/components/identity.basic/operations/create.d.ts +0 -10
  417. package/components/identity.basic/operations/create.js +0 -10
  418. package/components/identity.basic/operations/create.js.map +0 -1
  419. package/components/identity.basic/source/create.ts +0 -18
  420. package/components/identity.federation/operations/create.d.ts +0 -10
  421. package/components/identity.federation/operations/create.js.map +0 -1
  422. package/components/identity.federation/operations/schemas.d.ts +0 -59
  423. package/components/identity.federation/operations/schemas.js +0 -9
  424. package/components/identity.federation/operations/schemas.js.map +0 -1
  425. package/components/identity.federation/operations/types.js.map +0 -1
  426. package/components/identity.federation/source/schemas.ts +0 -61
  427. package/components/octets.storage/operations/permute.js +0 -7
  428. package/schemas/octets/context.cos.yaml +0 -1
  429. package/source/HTTP/Server.test.ts +0 -126
  430. package/source/directives/octets/Permute.ts +0 -44
  431. package/transpiled/directives/octets/Permute.d.ts +0 -11
  432. package/transpiled/directives/octets/Permute.js +0 -58
  433. package/transpiled/directives/octets/Permute.js.map +0 -1
  434. /package/{components/identity.federation/operations → transpiled/directives/flow}/types.js +0 -0
@@ -0,0 +1,14 @@
1
+ Feature: Probes
2
+
3
+ Scenario: Startup probe
4
+ Given the Gateway is running
5
+ And after 1 second
6
+ When the following request is received:
7
+ """
8
+ GET /.ready HTTP/1.1
9
+ """
10
+ Then the following reply is sent:
11
+ """
12
+ 200 OK
13
+ cache-control: no-store
14
+ """
@@ -19,6 +19,7 @@ Feature: Queries
19
19
  When the following request is received:
20
20
  """
21
21
  GET /pots/pot/?id=99988d785d7d445cad45dbf8531f560b HTTP/1.1
22
+ host: nex.toa.io
22
23
  accept: application/yaml
23
24
  """
24
25
  Then the following reply is sent:
@@ -42,6 +43,7 @@ Feature: Queries
42
43
  When the following request is received:
43
44
  """
44
45
  GET /pots/?criteria=volume<300&limit=10 HTTP/1.1
46
+ host: nex.toa.io
45
47
  accept: application/yaml
46
48
  """
47
49
  Then the following reply is sent:
@@ -68,6 +70,7 @@ Feature: Queries
68
70
  When the following request is received:
69
71
  """
70
72
  GET /pots/?omit=1&limit=2 HTTP/1.1
73
+ host: nex.toa.io
71
74
  accept: application/yaml
72
75
  """
73
76
  Then the following reply is sent:
@@ -94,6 +97,7 @@ Feature: Queries
94
97
  When the following request is received:
95
98
  """
96
99
  GET /pots/?sort=volume:desc&limit=2 HTTP/1.1
100
+ host: nex.toa.io
97
101
  accept: application/yaml
98
102
  """
99
103
  Then the following reply is sent:
@@ -109,7 +113,7 @@ Feature: Queries
109
113
  volume: 300
110
114
  """
111
115
 
112
- Scenario: Request to a route with a path variable
116
+ Scenario: Request to a route with path variable
113
117
  Given the `pots` is running with the following manifest:
114
118
  """yaml
115
119
  exposition:
@@ -120,6 +124,7 @@ Feature: Queries
120
124
  When the following request is received:
121
125
  """
122
126
  GET /pots/99988d785d7d445cad45dbf8531f560b/ HTTP/1.1
127
+ host: nex.toa.io
123
128
  accept: application/yaml
124
129
  """
125
130
  Then the following reply is sent:
@@ -132,6 +137,37 @@ Feature: Queries
132
137
  volume: 200
133
138
  """
134
139
 
140
+ Scenario: Request to a route with path variable using OR operator
141
+ Given the `pots` is running with the following manifest:
142
+ """yaml
143
+ exposition:
144
+ /:volume:
145
+ io:output: true
146
+ GET:
147
+ query:
148
+ criteria: ',volume==100'
149
+ endpoint: enumerate
150
+ """
151
+ When the following request is received:
152
+ """
153
+ GET /pots/200/ HTTP/1.1
154
+ host: nex.toa.io
155
+ accept: application/yaml
156
+ """
157
+ Then the following reply is sent:
158
+ """
159
+ 200 OK
160
+ content-type: application/yaml
161
+
162
+ - id: 4c4759e6f9c74da989d64511df42d6f4
163
+ title: First pot
164
+ volume: 100
165
+ temperature: 80
166
+ - id: 99988d785d7d445cad45dbf8531f560b
167
+ title: Second pot
168
+ volume: 200
169
+ """
170
+
135
171
  Scenario: Request to a route with predefined criteria
136
172
  Given the `pots` is running with the following manifest:
137
173
  """yaml
@@ -146,6 +182,7 @@ Feature: Queries
146
182
  When the following request is received:
147
183
  """
148
184
  GET /pots/big/ HTTP/1.1
185
+ host: nex.toa.io
149
186
  accept: application/yaml
150
187
  """
151
188
  Then the following reply is sent:
@@ -161,7 +198,7 @@ Feature: Queries
161
198
  volume: 400
162
199
  """
163
200
 
164
- Scenario: Request to a route with combined criteria
201
+ Scenario: Request to a route with open criteria
165
202
  Given the `pots` is running with the following manifest:
166
203
  """yaml
167
204
  exposition:
@@ -175,6 +212,7 @@ Feature: Queries
175
212
  When the following request is received:
176
213
  """
177
214
  GET /pots/big/?criteria=temperature>50 HTTP/1.1
215
+ host: nex.toa.io
178
216
  accept: application/yaml
179
217
  """
180
218
  Then the following reply is sent:
@@ -204,6 +242,7 @@ Feature: Queries
204
242
  When the following request is received:
205
243
  """
206
244
  GET /pots/hottest2/ HTTP/1.1
245
+ host: nex.toa.io
207
246
  accept: application/yaml
208
247
  """
209
248
  Then the following reply is sent:
@@ -220,3 +259,27 @@ Feature: Queries
220
259
  volume: 100
221
260
  temperature: 80
222
261
  """
262
+
263
+ Scenario: Query parameters
264
+ Given the `echo` is running with the following manifest:
265
+ """yaml
266
+ exposition:
267
+ /:
268
+ GET:
269
+ io:output: true
270
+ query:
271
+ parameters: [name]
272
+ endpoint: compute
273
+ """
274
+ When the following request is received:
275
+ """
276
+ GET /echo/?name=John HTTP/1.1
277
+ host: nex.toa.io
278
+ accept: text/plain
279
+ """
280
+ Then the following reply is sent:
281
+ """
282
+ 200 OK
283
+
284
+ Hello John
285
+ """
@@ -0,0 +1,34 @@
1
+ Feature: Realtime events
2
+
3
+ Background:
4
+ Given the Realtime is running with the following annotation:
5
+ """yaml
6
+ users.properties.sync: id
7
+ """
8
+ And the identity Bob is consuming realtime events
9
+
10
+ Scenario: Getting realtime events
11
+ Given the `users.properties` is running with the following manifest:
12
+ """yaml
13
+ exposition:
14
+ /:id:
15
+ anonymous: true
16
+ io:output: false
17
+ PATCH: transit
18
+ """
19
+ When the following request is received:
20
+ """
21
+ PATCH /users/properties/${{ Bob.id }}/ HTTP/1.1
22
+ host: nex.toa.io
23
+ content-type: application/yaml
24
+
25
+ newbie: false
26
+ """
27
+ Then the following reply is sent:
28
+ """
29
+ 200 OK
30
+ """
31
+ And the following event `users.properties.sync` is received by Bob:
32
+ """yaml
33
+ newbie: false
34
+ """
@@ -0,0 +1,67 @@
1
+ Feature: Request requirements
2
+
3
+ Scenario Outline: Require headers
4
+ Given the `pots` is running with the following manifest:
5
+ """yaml
6
+ exposition:
7
+ /:
8
+ io:output: true
9
+ POST: create
10
+ /one/:id:
11
+ require:header: if-match
12
+ PUT: transit
13
+ /two/:id:
14
+ require:headers: [if-match]
15
+ PUT: transit
16
+ """
17
+ When the following request is received:
18
+ """
19
+ POST /pots/ HTTP/1.1
20
+ host: nex.toa.io
21
+ content-type: application/yaml
22
+ accept: application/yaml
23
+
24
+ title: Hello
25
+ volume: 1.5
26
+ """
27
+ Then the following reply is sent:
28
+ """
29
+ 201 Created
30
+ etag: ${{ etag }}
31
+
32
+ id: ${{ id }}
33
+ """
34
+ When the following request is received:
35
+ """
36
+ PUT /pots/<variant>/${{ id }}/ HTTP/1.1
37
+ host: nex.toa.io
38
+ content-type: application/yaml
39
+ accept: text/plain
40
+
41
+ title: Hello
42
+ volume: 1.5
43
+ """
44
+ Then the following reply is sent:
45
+ """
46
+ 400 Bad Request
47
+
48
+ Header required: if-match
49
+ """
50
+ When the following request is received:
51
+ """
52
+ PUT /pots/<variant>/${{ id }}/ HTTP/1.1
53
+ host: nex.toa.io
54
+ content-type: application/yaml
55
+ accept: text/plain
56
+ if-match: ${{ etag }}
57
+
58
+ title: Bye
59
+ """
60
+ Then the following reply is sent:
61
+ """
62
+ 200 OK
63
+ """
64
+ Examples:
65
+ | variant |
66
+ | one |
67
+ | two |
@@ -7,11 +7,13 @@ Feature: Response
7
7
  io:output: true
8
8
  GET:
9
9
  anonymous: true
10
- dev:stub: hello
10
+ dev:stub:
11
+ hello: world
11
12
  """
12
13
  When the following request is received:
13
14
  """
14
15
  GET / HTTP/1.1
16
+ host: nex.toa.io
15
17
  accept: application/json
16
18
  """
17
19
  Then the following reply is sent:
@@ -19,6 +21,37 @@ Feature: Response
19
21
  200 OK
20
22
  content-type: application/json
21
23
  vary: accept
24
+
25
+ {"hello":"world"}
26
+ """
27
+ When the following request is received:
28
+ """
29
+ GET / HTTP/1.1
30
+ host: nex.toa.io
31
+ accept: application/yaml
32
+ """
33
+ Then the following reply is sent:
34
+ """
35
+ 200 OK
36
+ content-type: application/yaml
37
+ vary: accept
38
+
39
+ hello: world
40
+ """
41
+
42
+ # default is JSON
43
+ When the following request is received:
44
+ """
45
+ GET / HTTP/1.1
46
+ host: nex.toa.io
47
+ """
48
+ Then the following reply is sent:
49
+ """
50
+ 200 OK
51
+ content-type: application/json
52
+ vary: accept
53
+
54
+ {"hello":"world"}
22
55
  """
23
56
 
24
57
  Scenario: Error as YAML
@@ -32,11 +65,12 @@ Feature: Response
32
65
  When the following request is received:
33
66
  """
34
67
  GET /echo/ HTTP/1.1
68
+ host: nex.toa.io
35
69
  accept: application/yaml
36
70
  """
37
71
  Then the following reply is sent:
38
72
  """
39
- 409 Conflict
73
+ 422 Unprocessable Entity
40
74
  content-type: application/yaml
41
75
 
42
76
  code: CODE
@@ -54,11 +88,12 @@ Feature: Response
54
88
  When the following request is received:
55
89
  """
56
90
  GET /echo/ HTTP/1.1
91
+ host: nex.toa.io
57
92
  accept: application/msgpack
58
93
  """
59
94
  Then the following reply is sent:
60
95
  """
61
- 409 Conflict
96
+ 422 Unprocessable Entity
62
97
  content-type: application/msgpack
63
98
  """
64
99
  And response body contains MessagePack-encoded value:
@@ -18,6 +18,7 @@ Feature: Routes
18
18
  When the following request is received:
19
19
  """
20
20
  GET /basic/greeter<route> HTTP/1.1
21
+ host: nex.toa.io
21
22
  accept: text/plain
22
23
  """
23
24
  Then the following reply is sent:
@@ -42,6 +43,7 @@ Feature: Routes
42
43
  When the following request is received:
43
44
  """
44
45
  GET /greeter/ HTTP/1.1
46
+ host: nex.toa.io
45
47
  accept: text/plain
46
48
  """
47
49
  Then the following reply is sent:
@@ -65,6 +67,7 @@ Feature: Routes
65
67
  When the following request is received:
66
68
  """
67
69
  GET /greeter/baz/ HTTP/1.1
70
+ host: nex.toa.io
68
71
  accept: text/plain
69
72
  """
70
73
  Then the following reply is sent:
@@ -76,6 +79,7 @@ Feature: Routes
76
79
  When the following request is received:
77
80
  """
78
81
  GET /greeter/baz/qux/ HTTP/1.1
82
+ host: nex.toa.io
79
83
  """
80
84
  Then the following reply is sent:
81
85
  """
@@ -84,6 +88,7 @@ Feature: Routes
84
88
  When the following request is received:
85
89
  """
86
90
  GET /greeter/foo/baz/bar/ HTTP/1.1
91
+ host: nex.toa.io
87
92
  accept: text/plain
88
93
  """
89
94
  Then the following reply is sent:
@@ -94,8 +99,7 @@ Feature: Routes
94
99
  """
95
100
 
96
101
  Scenario: Routes with naming conflicts
97
- Given the Gateway is running
98
- And the `users` is running with the following manifest:
102
+ Given the `users` is running with the following manifest:
99
103
  """yaml
100
104
  exposition:
101
105
  /:
@@ -112,6 +116,7 @@ Feature: Routes
112
116
  When the following request is received:
113
117
  """
114
118
  GET /users/properties/b5534021e30042259badffbd1831e472/ HTTP/1.1
119
+ host: nex.toa.io
115
120
  accept: application/yaml
116
121
  """
117
122
  Then the following reply is sent:
@@ -123,6 +128,7 @@ Feature: Routes
123
128
  When the following request is received:
124
129
  """
125
130
  POST /users/ HTTP/1.1
131
+ host: nex.toa.io
126
132
  content-type: application/yaml
127
133
 
128
134
  name: Alice
@@ -131,3 +137,88 @@ Feature: Routes
131
137
  """
132
138
  201 Created
133
139
  """
140
+
141
+ Scenario: Routes with default namespace conflicts
142
+ Given the `echo` is running with the following manifest:
143
+ """yaml
144
+ exposition:
145
+ /:foo:
146
+ io:output: true
147
+ PUT: compute
148
+ """
149
+ And the `echo.beacon` is running with the following manifest:
150
+ """yaml
151
+ exposition:
152
+ /:
153
+ io:output: true
154
+ GET: hello
155
+ """
156
+ When the following request is received:
157
+ """
158
+ GET /echo/beacon/ HTTP/1.1
159
+ host: nex.toa.io
160
+ accept: application/yaml
161
+ """
162
+ Then the following reply is sent:
163
+ """
164
+ 200 OK
165
+ """
166
+
167
+ Scenario: Routes with parameters
168
+ Given the `echo` is running with the following manifest:
169
+ """yaml
170
+ exposition:
171
+ /:a/:b:
172
+ io:output: true
173
+ GET: parameters
174
+ """
175
+ When the following request is received:
176
+ """
177
+ GET /echo/foo/bar/ HTTP/1.1
178
+ host: nex.toa.io
179
+ accept: application/yaml
180
+ """
181
+ Then the following reply is sent:
182
+ """
183
+ 200 OK
184
+
185
+ a: foo
186
+ b: bar
187
+ """
188
+
189
+ Scenario: Route forwarding
190
+ Given the `echo` is running with the following manifest:
191
+ """yaml
192
+ exposition:
193
+ /show/:a/:b:
194
+ io:output: true
195
+ GET: parameters
196
+ /hello: /echo/show/foo/bar
197
+ /mirror/:a/:b: /echo/show/:a/:b
198
+ """
199
+ When the following request is received:
200
+ """
201
+ GET /echo/hello/ HTTP/1.1
202
+ host: nex.toa.io
203
+ accept: application/yaml
204
+ """
205
+ Then the following reply is sent:
206
+ """
207
+ 200 OK
208
+
209
+ a: foo
210
+ b: bar
211
+ """
212
+ When the following request is received:
213
+ """
214
+ GET /echo/mirror/bar/baz/ HTTP/1.1
215
+ host: nex.toa.io
216
+ accept: application/yaml
217
+ """
218
+ Then the following reply is sent:
219
+ """
220
+ 200 OK
221
+
222
+ a: bar
223
+ b: baz
224
+ """
@@ -1,6 +1,7 @@
1
1
  import { afterAll, beforeAll, binding, given } from 'cucumber-tsflow'
2
- import { type DataTable } from '@cucumber/cucumber'
3
2
  import { MongoClient } from 'mongodb'
3
+ import type { Collection } from 'mongodb'
4
+ import type { DataTable } from '@cucumber/cucumber'
4
5
 
5
6
  @binding()
6
7
  export class Database {
@@ -8,9 +9,7 @@ export class Database {
8
9
 
9
10
  @given('the `{word}` database contains:')
10
11
  public async upsert (id: string, table: DataTable): Promise<void> {
11
- const [name, namespace = 'default'] = id.split('.').reverse()
12
- const collection = Database.client.db(namespace).collection(name)
13
-
12
+ const collection = this.collection(id)
14
13
  const columns = table.raw()[0]
15
14
  const rows = table.rows()
16
15
  const documents: Document[] = []
@@ -22,7 +21,11 @@ export class Database {
22
21
  const str = rows[r][c]
23
22
  const int = parseInt(str)
24
23
 
25
- document[columns[c]] = int.toString() === str ? int : str
24
+ document[columns[c]] = int.toString() === str
25
+ ? int
26
+ : str === 'null'
27
+ ? null
28
+ : str
26
29
  }
27
30
 
28
31
  documents.push(document)
@@ -36,10 +39,7 @@ export class Database {
36
39
 
37
40
  @given('the `{word}` database is empty')
38
41
  public async truncate (id: string): Promise<void> {
39
- const [name, namespace = 'default'] = id.split('.').reverse()
40
- const collection = Database.client.db(namespace).collection(name)
41
-
42
- await collection.deleteMany({})
42
+ await this.collection(id).deleteMany({})
43
43
  }
44
44
 
45
45
  @beforeAll()
@@ -53,6 +53,13 @@ export class Database {
53
53
  public static async disconnect (): Promise<void> {
54
54
  await this.client.close()
55
55
  }
56
+
57
+ private collection (id: string): Collection {
58
+ const [name, namespace = 'default'] = id.split('.').reverse()
59
+ const collection = `${namespace}_${name}`.toLowerCase()
60
+
61
+ return Database.client.db('toa-dev').collection(collection)
62
+ }
56
63
  }
57
64
 
58
- type Document = Record<string, string | number>
65
+ type Document = Record<string, string | number | null>
@@ -6,6 +6,7 @@ import { encode, timeout } from '@toa.io/generic'
6
6
  import { Factory } from '../../source'
7
7
  import * as syntax from '../../source/RTD/syntax'
8
8
  import { shortcuts } from '../../source/Directive'
9
+ import type * as http from '../../source/HTTP'
9
10
 
10
11
  let instance: Connector | null = null
11
12
 
@@ -23,11 +24,19 @@ export class Gateway {
23
24
  process.env.TOA_EXPOSITION = encode(tree)
24
25
  }
25
26
 
26
- if (annotation.debug === true)
27
- process.env.TOA_EXPOSITION_DEBUG = '1'
27
+ const { debug, trace, authorities } = annotation
28
+ const properties = Object.assign({}, DEFAULT_PROPERTIES)
28
29
 
29
- if (annotation.trace === true)
30
- process.env.TOA_EXPOSITION_TRACE = '1'
30
+ if (debug !== undefined)
31
+ properties.debug = debug
32
+
33
+ if (trace !== undefined)
34
+ properties.trace = trace
35
+
36
+ if (authorities !== undefined)
37
+ properties.authorities = authorities
38
+
39
+ process.env.TOA_EXPOSITION_PROPERTIES = encode(properties)
31
40
 
32
41
  await Gateway.stop()
33
42
 
@@ -54,7 +63,8 @@ export class Gateway {
54
63
  if (instance !== null)
55
64
  return
56
65
 
57
- process.env.TOA_EXPOSITION ??= DEFAULT_ANNOTATION
66
+ process.env.TOA_EXPOSITION ??= DEFAULT_TREE
67
+ process.env.TOA_EXPOSITION_PROPERTIES ??= encode(DEFAULT_PROPERTIES)
58
68
 
59
69
  this.writeConfiguration()
60
70
 
@@ -76,6 +86,7 @@ export class Gateway {
76
86
  return
77
87
 
78
88
  delete process.env.TOA_EXPOSITION
89
+ delete process.env.TOA_EXPOSITION_PROPERTIES
79
90
 
80
91
  await Gateway.stop()
81
92
  }
@@ -96,7 +107,7 @@ export class Gateway {
96
107
  }
97
108
  }
98
109
 
99
- const DEFAULT_ANNOTATION = encode({
110
+ const DEFAULT_TREE = encode({
100
111
  routes: [],
101
112
  methods: [],
102
113
  directives: [
@@ -108,6 +119,12 @@ const DEFAULT_ANNOTATION = encode({
108
119
  ]
109
120
  } satisfies syntax.Node)
110
121
 
122
+ const DEFAULT_PROPERTIES: Partial<http.Options> = {
123
+ authorities: {
124
+ nex: 'nex.toa.io'
125
+ }
126
+ }
127
+
111
128
  const DEFAULT_CONFIGURATION: Record<string, object> = {
112
129
  'identity.tokens': {
113
130
  key0: 'k3.local.pIZT8-9Fa6U_QtfQHOSStfGtmyzPINyKQq2Xk-hd7vA'