@toa.io/extensions.exposition 1.0.0-alpha.0 → 1.0.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (442) hide show
  1. package/components/context.toa.yaml +12 -0
  2. package/components/identity.bans/manifest.toa.yaml +1 -1
  3. package/components/identity.basic/manifest.toa.yaml +2 -2
  4. package/components/identity.basic/operations/authenticate.d.ts +9 -0
  5. package/components/identity.basic/operations/authenticate.js +24 -0
  6. package/components/identity.basic/operations/authenticate.js.map +1 -0
  7. package/components/identity.basic/operations/create.d.ts +10 -0
  8. package/components/identity.basic/operations/create.js +10 -0
  9. package/components/identity.basic/operations/create.js.map +1 -0
  10. package/components/identity.basic/operations/transit.d.ts +12 -0
  11. package/components/identity.basic/operations/transit.js +53 -0
  12. package/components/identity.basic/operations/transit.js.map +1 -0
  13. package/components/identity.basic/operations/tsconfig.tsbuildinfo +1 -0
  14. package/components/identity.basic/operations/types.d.ts +38 -0
  15. package/components/identity.basic/operations/types.js +3 -0
  16. package/components/identity.basic/operations/types.js.map +1 -0
  17. package/components/identity.basic/source/authenticate.ts +0 -1
  18. package/components/identity.federation/events/principal.js +22 -0
  19. package/components/identity.federation/manifest.toa.yaml +88 -0
  20. package/components/identity.federation/operations/assertions-as-values.cjs +45 -0
  21. package/components/identity.federation/operations/assertions-as-values.cjs.map +1 -0
  22. package/components/identity.federation/operations/assertions-as-values.d.cts +4 -0
  23. package/components/identity.federation/operations/authenticate.d.ts +3 -0
  24. package/components/identity.federation/operations/authenticate.js +20 -0
  25. package/components/identity.federation/operations/authenticate.js.map +1 -0
  26. package/components/identity.federation/operations/create.d.ts +10 -0
  27. package/components/identity.federation/operations/create.js +15 -0
  28. package/components/identity.federation/operations/create.js.map +1 -0
  29. package/components/identity.federation/operations/jwt.cjs +112 -0
  30. package/components/identity.federation/operations/jwt.cjs.map +1 -0
  31. package/components/identity.federation/operations/jwt.d.cts +19 -0
  32. package/components/identity.federation/operations/schemas.d.ts +43 -0
  33. package/components/identity.federation/operations/schemas.js +9 -0
  34. package/components/identity.federation/operations/schemas.js.map +1 -0
  35. package/components/identity.federation/operations/tsconfig.tsbuildinfo +1 -0
  36. package/components/identity.federation/operations/types.d.ts +51 -0
  37. package/components/identity.federation/operations/types.js +3 -0
  38. package/components/identity.federation/operations/types.js.map +1 -0
  39. package/components/identity.federation/source/assertions-as-values.cts +20 -0
  40. package/components/identity.federation/source/authenticate.ts +28 -0
  41. package/components/identity.federation/source/create.ts +26 -0
  42. package/components/identity.federation/source/jwt.cts +143 -0
  43. package/components/identity.federation/source/schemas.ts +45 -0
  44. package/components/identity.federation/source/types.ts +56 -0
  45. package/components/identity.federation/tsconfig.json +9 -0
  46. package/components/identity.roles/operations/list.d.ts +5 -0
  47. package/components/identity.roles/operations/list.js +8 -0
  48. package/components/identity.roles/operations/list.js.map +1 -0
  49. package/components/identity.roles/operations/principal.d.ts +15 -0
  50. package/components/identity.roles/operations/principal.js +8 -0
  51. package/components/identity.roles/operations/principal.js.map +1 -0
  52. package/components/identity.roles/operations/tsconfig.tsbuildinfo +1 -0
  53. package/components/identity.tokens/manifest.toa.yaml +1 -1
  54. package/components/identity.tokens/operations/authenticate.d.ts +9 -0
  55. package/components/identity.tokens/operations/authenticate.js +32 -0
  56. package/components/identity.tokens/operations/authenticate.js.map +1 -0
  57. package/components/identity.tokens/operations/decrypt.d.ts +3 -0
  58. package/components/identity.tokens/operations/decrypt.js +32 -0
  59. package/components/identity.tokens/operations/decrypt.js.map +1 -0
  60. package/components/identity.tokens/operations/encrypt.d.ts +8 -0
  61. package/components/identity.tokens/operations/encrypt.js +22 -0
  62. package/components/identity.tokens/operations/encrypt.js.map +1 -0
  63. package/components/identity.tokens/operations/revoke.d.ts +2 -0
  64. package/components/identity.tokens/operations/revoke.js +8 -0
  65. package/components/identity.tokens/operations/revoke.js.map +1 -0
  66. package/components/identity.tokens/operations/tsconfig.tsbuildinfo +1 -0
  67. package/components/identity.tokens/operations/types.d.ts +40 -0
  68. package/components/identity.tokens/operations/types.js +3 -0
  69. package/components/identity.tokens/operations/types.js.map +1 -0
  70. package/components/octets.storage/manifest.toa.yaml +1 -0
  71. package/components/octets.storage/operations/store.js +2 -2
  72. package/cucumber.js +0 -1
  73. package/documentation/components.md +25 -2
  74. package/documentation/identity.md +7 -7
  75. package/documentation/octets.md +93 -40
  76. package/documentation/protocol.md +21 -1
  77. package/documentation/query.md +1 -1
  78. package/documentation/vary.md +69 -0
  79. package/features/cors.feature +72 -0
  80. package/features/identity.feature +19 -3
  81. package/features/identity.federation.feature +125 -0
  82. package/features/octets.entries.feature +121 -0
  83. package/features/octets.feature +2 -28
  84. package/features/octets.meta.feature +65 -0
  85. package/features/octets.workflows.feature +138 -4
  86. package/features/response.feature +65 -0
  87. package/features/routes.feature +37 -0
  88. package/features/steps/Captures.ts +6 -0
  89. package/features/steps/Components.ts +18 -6
  90. package/features/steps/Gateway.ts +1 -2
  91. package/features/steps/HTTP.ts +40 -87
  92. package/features/steps/IdP.ts +120 -0
  93. package/features/steps/Parameters.ts +8 -2
  94. package/features/steps/Workspace.ts +5 -7
  95. package/features/steps/components/echo/operations/error.js +11 -0
  96. package/features/steps/components/octets.tester/manifest.toa.yaml +3 -0
  97. package/features/steps/components/octets.tester/operations/concat.js +7 -0
  98. package/features/steps/components/octets.tester/operations/echo.js +7 -0
  99. package/features/steps/components/users/manifest.toa.yaml +3 -0
  100. package/features/steps/components/users.properties/manifest.toa.yaml +13 -0
  101. package/features/steps/tsconfig.json +1 -1
  102. package/features/vary.feature +150 -0
  103. package/package.json +17 -18
  104. package/schemas/octets/delete.cos.yaml +2 -1
  105. package/schemas/octets/list.cos.yaml +2 -1
  106. package/source/Directive.test.ts +8 -2
  107. package/source/Directive.ts +19 -16
  108. package/source/Factory.ts +8 -7
  109. package/source/Gateway.ts +22 -8
  110. package/source/HTTP/Server.fixtures.ts +0 -1
  111. package/source/HTTP/Server.test.ts +61 -134
  112. package/source/HTTP/Server.ts +91 -47
  113. package/source/HTTP/formats/msgpack.ts +9 -6
  114. package/source/HTTP/formats/text.ts +1 -1
  115. package/source/HTTP/formats/yaml.ts +1 -1
  116. package/source/HTTP/messages.ts +15 -3
  117. package/source/Interception.ts +24 -0
  118. package/source/RTD/Directives.ts +2 -2
  119. package/source/RTD/Tree.ts +3 -0
  120. package/source/RTD/syntax/parse.ts +6 -6
  121. package/source/RTD/syntax/types.ts +1 -1
  122. package/source/deployment.ts +1 -2
  123. package/source/directives/auth/{Family.ts → Authorization.ts} +29 -33
  124. package/source/directives/auth/Incept.ts +1 -1
  125. package/source/directives/auth/Rule.ts +2 -2
  126. package/source/directives/auth/index.ts +2 -2
  127. package/source/directives/auth/schemes.ts +2 -1
  128. package/source/directives/auth/types.ts +9 -6
  129. package/source/directives/cache/{Family.ts → Cache.ts} +4 -5
  130. package/source/directives/cache/index.ts +2 -2
  131. package/source/directives/cache/types.ts +1 -1
  132. package/source/directives/cors/CORS.ts +54 -0
  133. package/source/directives/cors/index.ts +3 -0
  134. package/source/directives/dev/{Family.ts → Development.ts} +3 -4
  135. package/source/directives/dev/Stub.ts +4 -4
  136. package/source/directives/dev/Throw.ts +4 -4
  137. package/source/directives/dev/index.ts +2 -2
  138. package/source/directives/dev/types.ts +1 -1
  139. package/source/directives/index.ts +10 -6
  140. package/source/directives/octets/Context.ts +1 -1
  141. package/source/directives/octets/Delete.ts +50 -9
  142. package/source/directives/octets/Fetch.ts +18 -19
  143. package/source/directives/octets/List.ts +37 -7
  144. package/source/directives/octets/{Family.ts → Octets.ts} +7 -6
  145. package/source/directives/octets/Permute.ts +3 -3
  146. package/source/directives/octets/Store.ts +43 -99
  147. package/source/directives/octets/index.ts +2 -2
  148. package/source/directives/octets/schemas.ts +11 -6
  149. package/source/directives/octets/types.ts +4 -3
  150. package/source/directives/octets/workflow/Execution.ts +78 -0
  151. package/source/directives/octets/workflow/Workflow.ts +37 -0
  152. package/source/directives/octets/workflow/index.ts +1 -0
  153. package/source/directives/vary/Directive.ts +6 -0
  154. package/source/directives/vary/Embed.ts +62 -0
  155. package/source/directives/vary/Properties.ts +17 -0
  156. package/source/directives/vary/Vary.ts +48 -0
  157. package/source/directives/vary/embeddings/Embedding.ts +6 -0
  158. package/source/directives/vary/embeddings/Header.ts +30 -0
  159. package/source/directives/vary/embeddings/Language.ts +31 -0
  160. package/source/directives/vary/embeddings/index.ts +11 -0
  161. package/source/directives/vary/index.ts +3 -0
  162. package/source/io.ts +4 -0
  163. package/source/manifest.test.ts +6 -14
  164. package/source/manifest.ts +9 -6
  165. package/source/schemas.ts +7 -3
  166. package/transpiled/Annotation.d.ts +7 -0
  167. package/transpiled/Annotation.js +3 -0
  168. package/transpiled/Annotation.js.map +1 -0
  169. package/transpiled/Branch.d.ts +7 -0
  170. package/transpiled/Branch.js +3 -0
  171. package/transpiled/Branch.js.map +1 -0
  172. package/transpiled/Composition.d.ts +14 -0
  173. package/transpiled/Composition.js +43 -0
  174. package/transpiled/Composition.js.map +1 -0
  175. package/transpiled/Context.d.ts +5 -0
  176. package/transpiled/Context.js +3 -0
  177. package/transpiled/Context.js.map +1 -0
  178. package/transpiled/Directive.d.ts +31 -0
  179. package/transpiled/Directive.js +78 -0
  180. package/transpiled/Directive.js.map +1 -0
  181. package/transpiled/Endpoint.d.ts +20 -0
  182. package/transpiled/Endpoint.js +45 -0
  183. package/transpiled/Endpoint.js.map +1 -0
  184. package/transpiled/Factory.d.ts +9 -0
  185. package/transpiled/Factory.js +67 -0
  186. package/transpiled/Factory.js.map +1 -0
  187. package/transpiled/Gateway.d.ts +22 -0
  188. package/transpiled/Gateway.js +102 -0
  189. package/transpiled/Gateway.js.map +1 -0
  190. package/transpiled/HTTP/Server.d.ts +24 -0
  191. package/transpiled/HTTP/Server.fixtures.d.ts +10 -0
  192. package/transpiled/HTTP/Server.fixtures.js +31 -0
  193. package/transpiled/HTTP/Server.fixtures.js.map +1 -0
  194. package/transpiled/HTTP/Server.js +149 -0
  195. package/transpiled/HTTP/Server.js.map +1 -0
  196. package/transpiled/HTTP/exceptions.d.ts +34 -0
  197. package/transpiled/HTTP/exceptions.js +71 -0
  198. package/transpiled/HTTP/exceptions.js.map +1 -0
  199. package/transpiled/HTTP/formats/index.d.ts +10 -0
  200. package/transpiled/HTTP/formats/index.js +38 -0
  201. package/transpiled/HTTP/formats/index.js.map +1 -0
  202. package/transpiled/HTTP/formats/json.d.ts +6 -0
  203. package/transpiled/HTTP/formats/json.js +17 -0
  204. package/transpiled/HTTP/formats/json.js.map +1 -0
  205. package/transpiled/HTTP/formats/msgpack.d.ts +6 -0
  206. package/transpiled/HTTP/formats/msgpack.js +17 -0
  207. package/transpiled/HTTP/formats/msgpack.js.map +1 -0
  208. package/transpiled/HTTP/formats/text.d.ts +8 -0
  209. package/transpiled/HTTP/formats/text.js +15 -0
  210. package/transpiled/HTTP/formats/text.js.map +1 -0
  211. package/transpiled/HTTP/formats/yaml.d.ts +6 -0
  212. package/transpiled/HTTP/formats/yaml.js +41 -0
  213. package/transpiled/HTTP/formats/yaml.js.map +1 -0
  214. package/transpiled/HTTP/index.d.ts +3 -0
  215. package/transpiled/HTTP/index.js +20 -0
  216. package/transpiled/HTTP/index.js.map +1 -0
  217. package/transpiled/HTTP/messages.d.ts +33 -0
  218. package/transpiled/HTTP/messages.js +75 -0
  219. package/transpiled/HTTP/messages.js.map +1 -0
  220. package/transpiled/Interception.d.ts +9 -0
  221. package/transpiled/Interception.js +19 -0
  222. package/transpiled/Interception.js.map +1 -0
  223. package/transpiled/Mapping.d.ts +8 -0
  224. package/transpiled/Mapping.js +38 -0
  225. package/transpiled/Mapping.js.map +1 -0
  226. package/transpiled/Query.d.ts +13 -0
  227. package/transpiled/Query.js +107 -0
  228. package/transpiled/Query.js.map +1 -0
  229. package/transpiled/RTD/Context.d.ts +11 -0
  230. package/transpiled/RTD/Context.js +3 -0
  231. package/transpiled/RTD/Context.js.map +1 -0
  232. package/transpiled/RTD/Directives.d.ts +7 -0
  233. package/transpiled/RTD/Directives.js +3 -0
  234. package/transpiled/RTD/Directives.js.map +1 -0
  235. package/transpiled/RTD/Endpoint.d.ts +9 -0
  236. package/transpiled/RTD/Endpoint.js +3 -0
  237. package/transpiled/RTD/Endpoint.js.map +1 -0
  238. package/transpiled/RTD/Match.d.ts +11 -0
  239. package/transpiled/RTD/Match.js +3 -0
  240. package/transpiled/RTD/Match.js.map +1 -0
  241. package/transpiled/RTD/Method.d.ts +9 -0
  242. package/transpiled/RTD/Method.js +16 -0
  243. package/transpiled/RTD/Method.js.map +1 -0
  244. package/transpiled/RTD/Node.d.ts +21 -0
  245. package/transpiled/RTD/Node.js +61 -0
  246. package/transpiled/RTD/Node.js.map +1 -0
  247. package/transpiled/RTD/Route.d.ts +14 -0
  248. package/transpiled/RTD/Route.js +49 -0
  249. package/transpiled/RTD/Route.js.map +1 -0
  250. package/transpiled/RTD/Tree.d.ts +14 -0
  251. package/transpiled/RTD/Tree.js +42 -0
  252. package/transpiled/RTD/Tree.js.map +1 -0
  253. package/transpiled/RTD/factory.d.ts +6 -0
  254. package/transpiled/RTD/factory.js +36 -0
  255. package/transpiled/RTD/factory.js.map +1 -0
  256. package/transpiled/RTD/index.d.ts +8 -0
  257. package/transpiled/RTD/index.js +38 -0
  258. package/transpiled/RTD/index.js.map +1 -0
  259. package/transpiled/RTD/segment.d.ts +8 -0
  260. package/transpiled/RTD/segment.js +25 -0
  261. package/transpiled/RTD/segment.js.map +1 -0
  262. package/transpiled/RTD/syntax/index.d.ts +2 -0
  263. package/transpiled/RTD/syntax/index.js +19 -0
  264. package/transpiled/RTD/syntax/index.js.map +1 -0
  265. package/transpiled/RTD/syntax/parse.d.ts +4 -0
  266. package/transpiled/RTD/syntax/parse.js +128 -0
  267. package/transpiled/RTD/syntax/parse.js.map +1 -0
  268. package/transpiled/RTD/syntax/types.d.ts +41 -0
  269. package/transpiled/RTD/syntax/types.js +5 -0
  270. package/transpiled/RTD/syntax/types.js.map +1 -0
  271. package/transpiled/Remotes.d.ts +9 -0
  272. package/transpiled/Remotes.js +25 -0
  273. package/transpiled/Remotes.js.map +1 -0
  274. package/transpiled/Tenant.d.ts +13 -0
  275. package/transpiled/Tenant.js +34 -0
  276. package/transpiled/Tenant.js.map +1 -0
  277. package/transpiled/deployment.d.ts +3 -0
  278. package/transpiled/deployment.js +66 -0
  279. package/transpiled/deployment.js.map +1 -0
  280. package/transpiled/directives/auth/Anonymous.d.ts +6 -0
  281. package/transpiled/directives/auth/Anonymous.js +17 -0
  282. package/transpiled/directives/auth/Anonymous.js.map +1 -0
  283. package/transpiled/directives/auth/Authorization.d.ts +20 -0
  284. package/transpiled/directives/auth/Authorization.js +125 -0
  285. package/transpiled/directives/auth/Authorization.js.map +1 -0
  286. package/transpiled/directives/auth/Echo.d.ts +6 -0
  287. package/transpiled/directives/auth/Echo.js +13 -0
  288. package/transpiled/directives/auth/Echo.js.map +1 -0
  289. package/transpiled/directives/auth/Id.d.ts +7 -0
  290. package/transpiled/directives/auth/Id.js +17 -0
  291. package/transpiled/directives/auth/Id.js.map +1 -0
  292. package/transpiled/directives/auth/Incept.d.ts +10 -0
  293. package/transpiled/directives/auth/Incept.js +58 -0
  294. package/transpiled/directives/auth/Incept.js.map +1 -0
  295. package/transpiled/directives/auth/Role.d.ts +11 -0
  296. package/transpiled/directives/auth/Role.js +44 -0
  297. package/transpiled/directives/auth/Role.js.map +1 -0
  298. package/transpiled/directives/auth/Rule.d.ts +9 -0
  299. package/transpiled/directives/auth/Rule.js +22 -0
  300. package/transpiled/directives/auth/Rule.js.map +1 -0
  301. package/transpiled/directives/auth/Scheme.d.ts +7 -0
  302. package/transpiled/directives/auth/Scheme.js +47 -0
  303. package/transpiled/directives/auth/Scheme.js.map +1 -0
  304. package/transpiled/directives/auth/index.d.ts +2 -0
  305. package/transpiled/directives/auth/index.js +6 -0
  306. package/transpiled/directives/auth/index.js.map +1 -0
  307. package/transpiled/directives/auth/schemes.d.ts +3 -0
  308. package/transpiled/directives/auth/schemes.js +10 -0
  309. package/transpiled/directives/auth/schemes.js.map +1 -0
  310. package/transpiled/directives/auth/split.d.ts +2 -0
  311. package/transpiled/directives/auth/split.js +38 -0
  312. package/transpiled/directives/auth/split.js.map +1 -0
  313. package/transpiled/directives/auth/types.d.ts +31 -0
  314. package/transpiled/directives/auth/types.js +3 -0
  315. package/transpiled/directives/auth/types.js.map +1 -0
  316. package/transpiled/directives/cache/Cache.d.ts +11 -0
  317. package/transpiled/directives/cache/Cache.js +28 -0
  318. package/transpiled/directives/cache/Cache.js.map +1 -0
  319. package/transpiled/directives/cache/Control.d.ts +9 -0
  320. package/transpiled/directives/cache/Control.js +42 -0
  321. package/transpiled/directives/cache/Control.js.map +1 -0
  322. package/transpiled/directives/cache/Exact.d.ts +4 -0
  323. package/transpiled/directives/cache/Exact.js +11 -0
  324. package/transpiled/directives/cache/Exact.js.map +1 -0
  325. package/transpiled/directives/cache/index.d.ts +2 -0
  326. package/transpiled/directives/cache/index.js +6 -0
  327. package/transpiled/directives/cache/index.js.map +1 -0
  328. package/transpiled/directives/cache/types.d.ts +7 -0
  329. package/transpiled/directives/cache/types.js +3 -0
  330. package/transpiled/directives/cache/types.js.map +1 -0
  331. package/transpiled/directives/cors/CORS.d.ts +11 -0
  332. package/transpiled/directives/cors/CORS.js +44 -0
  333. package/transpiled/directives/cors/CORS.js.map +1 -0
  334. package/transpiled/directives/cors/index.d.ts +2 -0
  335. package/transpiled/directives/cors/index.js +6 -0
  336. package/transpiled/directives/cors/index.js.map +1 -0
  337. package/transpiled/directives/dev/Development.d.ts +9 -0
  338. package/transpiled/directives/dev/Development.js +29 -0
  339. package/transpiled/directives/dev/Development.js.map +1 -0
  340. package/transpiled/directives/dev/Stub.d.ts +7 -0
  341. package/transpiled/directives/dev/Stub.js +14 -0
  342. package/transpiled/directives/dev/Stub.js.map +1 -0
  343. package/transpiled/directives/dev/Throw.d.ts +7 -0
  344. package/transpiled/directives/dev/Throw.js +14 -0
  345. package/transpiled/directives/dev/Throw.js.map +1 -0
  346. package/transpiled/directives/dev/index.d.ts +2 -0
  347. package/transpiled/directives/dev/index.js +6 -0
  348. package/transpiled/directives/dev/index.js.map +1 -0
  349. package/transpiled/directives/dev/types.d.ts +4 -0
  350. package/transpiled/directives/dev/types.js +3 -0
  351. package/transpiled/directives/dev/types.js.map +1 -0
  352. package/transpiled/directives/index.d.ts +4 -0
  353. package/transpiled/directives/index.js +12 -0
  354. package/transpiled/directives/index.js.map +1 -0
  355. package/transpiled/directives/octets/Context.d.ts +8 -0
  356. package/transpiled/directives/octets/Context.js +40 -0
  357. package/transpiled/directives/octets/Context.js.map +1 -0
  358. package/transpiled/directives/octets/Delete.d.ts +19 -0
  359. package/transpiled/directives/octets/Delete.js +72 -0
  360. package/transpiled/directives/octets/Delete.js.map +1 -0
  361. package/transpiled/directives/octets/Fetch.d.ts +17 -0
  362. package/transpiled/directives/octets/Fetch.js +76 -0
  363. package/transpiled/directives/octets/Fetch.js.map +1 -0
  364. package/transpiled/directives/octets/List.d.ts +15 -0
  365. package/transpiled/directives/octets/List.js +65 -0
  366. package/transpiled/directives/octets/List.js.map +1 -0
  367. package/transpiled/directives/octets/Octets.d.ts +12 -0
  368. package/transpiled/directives/octets/Octets.js +51 -0
  369. package/transpiled/directives/octets/Octets.js.map +1 -0
  370. package/transpiled/directives/octets/Permute.d.ts +10 -0
  371. package/transpiled/directives/octets/Permute.js +51 -0
  372. package/transpiled/directives/octets/Permute.js.map +1 -0
  373. package/transpiled/directives/octets/Store.d.ts +22 -0
  374. package/transpiled/directives/octets/Store.js +80 -0
  375. package/transpiled/directives/octets/Store.js.map +1 -0
  376. package/transpiled/directives/octets/index.d.ts +2 -0
  377. package/transpiled/directives/octets/index.js +6 -0
  378. package/transpiled/directives/octets/index.js.map +1 -0
  379. package/transpiled/directives/octets/schemas.d.ts +11 -0
  380. package/transpiled/directives/octets/schemas.js +17 -0
  381. package/transpiled/directives/octets/schemas.js.map +1 -0
  382. package/transpiled/directives/octets/types.d.ts +10 -0
  383. package/transpiled/directives/octets/types.js +3 -0
  384. package/transpiled/directives/octets/types.js.map +1 -0
  385. package/transpiled/directives/octets/workflow/Execution.d.ts +25 -0
  386. package/transpiled/directives/octets/workflow/Execution.js +55 -0
  387. package/transpiled/directives/octets/workflow/Execution.js.map +1 -0
  388. package/transpiled/directives/octets/workflow/Workflow.d.ts +12 -0
  389. package/transpiled/directives/octets/workflow/Workflow.js +25 -0
  390. package/transpiled/directives/octets/workflow/Workflow.js.map +1 -0
  391. package/transpiled/directives/octets/workflow/index.d.ts +1 -0
  392. package/transpiled/directives/octets/workflow/index.js +6 -0
  393. package/transpiled/directives/octets/workflow/index.js.map +1 -0
  394. package/transpiled/directives/vary/Directive.d.ts +5 -0
  395. package/transpiled/directives/vary/Directive.js +3 -0
  396. package/transpiled/directives/vary/Directive.js.map +1 -0
  397. package/transpiled/directives/vary/Embed.d.ts +10 -0
  398. package/transpiled/directives/vary/Embed.js +49 -0
  399. package/transpiled/directives/vary/Embed.js.map +1 -0
  400. package/transpiled/directives/vary/Properties.d.ts +9 -0
  401. package/transpiled/directives/vary/Properties.js +16 -0
  402. package/transpiled/directives/vary/Properties.js.map +1 -0
  403. package/transpiled/directives/vary/Vary.d.ts +10 -0
  404. package/transpiled/directives/vary/Vary.js +36 -0
  405. package/transpiled/directives/vary/Vary.js.map +1 -0
  406. package/transpiled/directives/vary/embeddings/Embedding.d.ts +5 -0
  407. package/transpiled/directives/vary/embeddings/Embedding.js +3 -0
  408. package/transpiled/directives/vary/embeddings/Embedding.js.map +1 -0
  409. package/transpiled/directives/vary/embeddings/Header.d.ts +7 -0
  410. package/transpiled/directives/vary/embeddings/Header.js +26 -0
  411. package/transpiled/directives/vary/embeddings/Header.js.map +1 -0
  412. package/transpiled/directives/vary/embeddings/Language.d.ts +7 -0
  413. package/transpiled/directives/vary/embeddings/Language.js +28 -0
  414. package/transpiled/directives/vary/embeddings/Language.js.map +1 -0
  415. package/transpiled/directives/vary/embeddings/index.d.ts +5 -0
  416. package/transpiled/directives/vary/embeddings/index.js +10 -0
  417. package/transpiled/directives/vary/embeddings/index.js.map +1 -0
  418. package/transpiled/directives/vary/index.d.ts +2 -0
  419. package/transpiled/directives/vary/index.js +6 -0
  420. package/transpiled/directives/vary/index.js.map +1 -0
  421. package/transpiled/discovery.d.ts +1 -0
  422. package/transpiled/discovery.js +3 -0
  423. package/transpiled/discovery.js.map +1 -0
  424. package/transpiled/exceptions.d.ts +2 -0
  425. package/transpiled/exceptions.js +39 -0
  426. package/transpiled/exceptions.js.map +1 -0
  427. package/transpiled/index.d.ts +5 -0
  428. package/transpiled/index.js +12 -0
  429. package/transpiled/index.js.map +1 -0
  430. package/transpiled/io.d.ts +3 -0
  431. package/transpiled/io.js +3 -0
  432. package/transpiled/io.js.map +1 -0
  433. package/transpiled/manifest.d.ts +3 -0
  434. package/transpiled/manifest.js +66 -0
  435. package/transpiled/manifest.js.map +1 -0
  436. package/transpiled/root.d.ts +2 -0
  437. package/transpiled/root.js +39 -0
  438. package/transpiled/root.js.map +1 -0
  439. package/transpiled/schemas.d.ts +7 -0
  440. package/transpiled/schemas.js +14 -0
  441. package/transpiled/schemas.js.map +1 -0
  442. package/transpiled/tsconfig.tsbuildinfo +1 -0
@@ -0,0 +1,125 @@
1
+ Feature: Identity Federation
2
+
3
+ Background:
4
+ Given the `identity.federation` database is empty
5
+ Given local IDP is running
6
+
7
+
8
+ Scenario: Getting identity for a new user
9
+ Given the `identity.federation` configuration:
10
+ """yaml
11
+ explicit_identity_creation: false
12
+ trust:
13
+ - issuer: http://localhost:44444
14
+ """
15
+ And the IDP token for User is issued
16
+ When the following request is received:
17
+ """
18
+ GET /identity/ HTTP/1.1
19
+ authorization: Bearer ${{ User.id_token }}
20
+ accept: application/yaml
21
+ content-type: application/yaml
22
+ """
23
+ Then the following reply is sent:
24
+ """
25
+ 200 OK
26
+ authorization: Token ${{ User.token }}
27
+
28
+ id: ${{ User.id }}
29
+ roles: []
30
+ scheme: bearer
31
+ """
32
+ # validate token
33
+ When the following request is received:
34
+ """
35
+ GET /identity/ HTTP/1.1
36
+ accept: application/yaml
37
+ authorization: Token ${{ User.token }}
38
+ """
39
+ Then the following reply is sent:
40
+ """
41
+ 200 OK
42
+ id: ${{ User.id }}
43
+ """
44
+ # ensuring identity idemptotency
45
+ When the following request is received:
46
+ """
47
+ GET /identity/ HTTP/1.1
48
+ authorization: Bearer ${{ User.id_token }}
49
+ accept: application/yaml
50
+ """
51
+ Then the following reply is sent:
52
+ """
53
+ 200 OK
54
+ id: ${{ User.id }}
55
+ """
56
+
57
+ Scenario: Creating an Identity using inception with existing credentials
58
+ Given the `identity.federation` configuration:
59
+ """yaml
60
+ trust:
61
+ - issuer: http://localhost:44444
62
+ """
63
+ Given the `users` is running with the following manifest:
64
+ """yaml
65
+ exposition:
66
+ /:
67
+ anonymous: true
68
+ POST:
69
+ incept: id
70
+ endpoint: transit
71
+ """
72
+ And the IDP token for Bill is issued
73
+ When the following request is received:
74
+ # identity inception
75
+ """
76
+ POST /users/ HTTP/1.1
77
+ authorization: Bearer ${{ Bill.id_token }}
78
+ accept: application/yaml
79
+ content-type: application/yaml
80
+
81
+ name: Bill Smith
82
+ """
83
+ Then the following reply is sent:
84
+ """
85
+ 201 Created
86
+ authorization: Token ${{ Bill.token }}
87
+
88
+ id: ${{ Bill.id }}
89
+ """
90
+ # check that both tokens corresponds to the same id
91
+ When the following request is received:
92
+ """
93
+ GET /identity/ HTTP/1.1
94
+ authorization: Token ${{ Bill.token }}
95
+ accept: application/yaml
96
+ """
97
+ Then the following reply is sent:
98
+ """
99
+ 200 OK
100
+ id: ${{ Bill.id }}
101
+ """
102
+ When the following request is received:
103
+ """
104
+ GET /identity/ HTTP/1.1
105
+ authorization: Bearer ${{ Bill.id_token }}
106
+ accept: application/yaml
107
+ """
108
+ Then the following reply is sent:
109
+ """
110
+ 200 OK
111
+ id: ${{ Bill.id }}
112
+ """
113
+ And the following request is received:
114
+ # same credentials
115
+ """
116
+ POST /users/ HTTP/1.1
117
+ authorization: Bearer ${{ Bill.id_token }}
118
+ content-type: text/plain
119
+
120
+ name: Mary Louis
121
+ """
122
+ Then the following reply is sent:
123
+ """
124
+ 403 Forbidden
125
+ """
@@ -0,0 +1,121 @@
1
+ Feature: Accessing entires
2
+
3
+ Scenario: Entries are not accessible by default
4
+ Given the annotation:
5
+ """yaml
6
+ /:
7
+ auth:anonymous: true
8
+ octets:context: octets
9
+ POST:
10
+ octets:store: ~
11
+ GET:
12
+ octets:list: ~
13
+ /*:
14
+ GET:
15
+ octets:fetch: ~
16
+ """
17
+ When the stream of `lenna.ascii` is received with the following headers:
18
+ """
19
+ POST / HTTP/1.1
20
+ content-type: application/octet-stream
21
+ """
22
+ Then the following reply is sent:
23
+ """
24
+ 201 Created
25
+ """
26
+ When the following request is received:
27
+ """
28
+ GET / HTTP/1.1
29
+ accept: application/vnd.toa.octets.entries+yaml
30
+ """
31
+ Then the following reply is sent:
32
+ """
33
+ 403 Forbidden
34
+
35
+ Metadata is not accessible.
36
+ """
37
+ When the following request is received:
38
+ """
39
+ GET /10cf16b458f759e0d617f2f3d83599ff HTTP/1.1
40
+ accept: text/vnd.toa.octets.entry+plain
41
+ """
42
+ Then the following reply is sent:
43
+ """
44
+ 403 Forbidden
45
+
46
+ Metadata is not accessible.
47
+ """
48
+
49
+ Scenario: Accessing entries
50
+ Given the annotation:
51
+ """yaml
52
+ /:
53
+ auth:anonymous: true
54
+ octets:context: octets
55
+ POST:
56
+ octets:store: ~
57
+ GET:
58
+ octets:list:
59
+ meta: true
60
+ /*:
61
+ GET:
62
+ octets:fetch:
63
+ meta: true
64
+ """
65
+ When the stream of `lenna.ascii` is received with the following headers:
66
+ """
67
+ POST / HTTP/1.1
68
+ accept: application/yaml
69
+ content-type: application/octet-stream
70
+ """
71
+ And the stream of `lenna.png` is received with the following headers:
72
+ """
73
+ POST / HTTP/1.1
74
+ accept: application/yaml
75
+ content-type: application/octet-stream
76
+ """
77
+ When the following request is received:
78
+ """
79
+ GET / HTTP/1.1
80
+ accept: application/yaml
81
+ """
82
+ Then the following reply is sent:
83
+ """
84
+ 200 OK
85
+ content-type: application/yaml
86
+
87
+ - 10cf16b458f759e0d617f2f3d83599ff
88
+ - 814a0034f5549e957ee61360d87457e5
89
+ """
90
+ When the following request is received:
91
+ """
92
+ GET / HTTP/1.1
93
+ accept: application/vnd.toa.octets.entries+yaml
94
+ """
95
+ Then the following reply is sent:
96
+ """
97
+ 200 OK
98
+ content-type: application/yaml
99
+
100
+ - id: 10cf16b458f759e0d617f2f3d83599ff
101
+ size: 8169
102
+ type: application/octet-stream
103
+ - id: 814a0034f5549e957ee61360d87457e5
104
+ size: 473831
105
+ type: image/png
106
+ """
107
+ When the following request is received:
108
+ """
109
+ GET /10cf16b458f759e0d617f2f3d83599ff HTTP/1.1
110
+ accept: application/vnd.toa.octets.entry+yaml
111
+ """
112
+ Then the following reply is sent:
113
+ """
114
+ 200 OK
115
+ content-type: application/yaml
116
+ content-length: 124
117
+
118
+ id: 10cf16b458f759e0d617f2f3d83599ff
119
+ type: application/octet-stream
120
+ size: 8169
121
+ """
@@ -70,17 +70,6 @@ Feature: Octets directive family
70
70
  """
71
71
  304 Not Modified
72
72
  """
73
- When the following request is received:
74
- """
75
- GET /10cf16b458f759e0d617f2f3d83599ff:meta HTTP/1.1
76
- accept: text/plain
77
- """
78
- Then the following reply is sent:
79
- """
80
- 403 Forbidden
81
-
82
- Metadata is not accessible.
83
- """
84
73
  When the following request is received:
85
74
  """
86
75
  GET / HTTP/1.1
@@ -245,10 +234,9 @@ Feature: Octets directive family
245
234
  Trailing slash is redundant.
246
235
  """
247
236
 
248
- Scenario: Accessing an Entry and the original BLOLB
237
+ Scenario: Original BLOLB is not accessible
249
238
  Given the annotation:
250
239
  """yaml
251
- debug: true
252
240
  /:
253
241
  auth:anonymous: true
254
242
  octets:context: octets
@@ -268,24 +256,10 @@ Feature: Octets directive family
268
256
  """
269
257
  201 Created
270
258
  """
271
- When the following request is received:
272
- """
273
- GET /10cf16b458f759e0d617f2f3d83599ff:meta HTTP/1.1
274
- accept: application/yaml
275
- """
276
- Then the following reply is sent:
277
- """
278
- 200 OK
279
- content-type: application/yaml
280
- content-length: 124
281
-
282
- id: 10cf16b458f759e0d617f2f3d83599ff
283
- type: application/octet-stream
284
- size: 8169
285
- """
286
259
  When the following request is received:
287
260
  """
288
261
  GET /10cf16b458f759e0d617f2f3d83599ff HTTP/1.1
262
+ accept: text/plain
289
263
  """
290
264
  Then the following reply is sent:
291
265
  """
@@ -0,0 +1,65 @@
1
+ Feature: Octets `content-meta` header
2
+
3
+ Scenario: Sending `content-meta` header
4
+ Given the `octets.tester` is running
5
+ And the annotation:
6
+ """yaml
7
+ /:
8
+ auth:anonymous: true
9
+ octets:context: octets
10
+ /*:
11
+ POST:
12
+ octets:store: ~
13
+ /*:
14
+ GET:
15
+ octets:fetch:
16
+ meta: true
17
+ """
18
+ When the stream of `lenna.ascii` is received with the following headers:
19
+ """
20
+ POST /meta-header/ HTTP/1.1
21
+ content-type: application/octet-stream
22
+ content-meta: foo, bar=baz=1
23
+ content-meta: baz=1
24
+ """
25
+ Then the following reply is sent:
26
+ """
27
+ 201 Created
28
+ """
29
+ When the following request is received:
30
+ """
31
+ GET /meta-header/10cf16b458f759e0d617f2f3d83599ff HTTP/1.1
32
+ accept: application/vnd.toa.octets.entry+yaml
33
+ """
34
+ Then the following reply is sent:
35
+ """
36
+ 200 OK
37
+
38
+ id: 10cf16b458f759e0d617f2f3d83599ff
39
+ type: application/octet-stream
40
+ size: 8169
41
+ meta:
42
+ foo: 'true'
43
+ bar: baz=1
44
+ baz: '1'
45
+ """
46
+
47
+ Scenario: CORS allows `content-meta` header
48
+ Given the annotation:
49
+ """yaml
50
+ /:
51
+ octets:context: octets
52
+ POST:
53
+ octets:store: ~
54
+ """
55
+ When the following request is received:
56
+ """
57
+ OPTIONS / HTTP/1.1
58
+ origin: http://example.com
59
+ """
60
+ Then the following reply is sent:
61
+ """
62
+ 204 No Content
63
+ access-control-allow-origin: http://example.com
64
+ access-control-allow-headers: accept, authorization, content-type, content-meta
65
+ """
@@ -2,7 +2,7 @@ Feature: Octets storage workflows
2
2
 
3
3
  Scenario: Running a workflow
4
4
  Given the `octets.tester` is running
5
- Given the annotation:
5
+ And the annotation:
6
6
  """yaml
7
7
  /:
8
8
  auth:anonymous: true
@@ -47,8 +47,8 @@ Feature: Octets storage workflows
47
47
  """
48
48
  When the following request is received:
49
49
  """
50
- GET /10cf16b458f759e0d617f2f3d83599ff:meta HTTP/1.1
51
- accept: application/yaml
50
+ GET /10cf16b458f759e0d617f2f3d83599ff HTTP/1.1
51
+ accept: application/vnd.toa.octets.entry+yaml
52
52
  """
53
53
  Then the following reply is sent:
54
54
  """
@@ -74,7 +74,7 @@ Feature: Octets storage workflows
74
74
  content-length: 473831
75
75
  """
76
76
 
77
- Scenario: Getting error when adding metadata to a file
77
+ Scenario: Getting error when running workflow on `store`
78
78
  Given the `octets.tester` is running
79
79
  Given the annotation:
80
80
  """yaml
@@ -112,3 +112,137 @@ Feature: Octets storage workflows
112
112
  message: Something went wrong
113
113
  --cut--
114
114
  """
115
+
116
+ Scenario: Running a workflow on `delete`
117
+ Given the `octets.tester` is running
118
+ And the annotation:
119
+ """yaml
120
+ /:
121
+ auth:anonymous: true
122
+ octets:context: octets
123
+ POST:
124
+ octets:store: ~
125
+ /*:
126
+ GET:
127
+ octets:fetch: ~
128
+ DELETE:
129
+ octets:delete:
130
+ workflow:
131
+ echo: octets.tester.echo
132
+ """
133
+ When the stream of `lenna.ascii` is received with the following headers:
134
+ """
135
+ POST / HTTP/1.1
136
+ content-type: application/octet-stream
137
+ """
138
+ Then the following reply is sent:
139
+ """
140
+ 201 Created
141
+ """
142
+ When the following request is received:
143
+ """
144
+ DELETE /10cf16b458f759e0d617f2f3d83599ff HTTP/1.1
145
+ accept: application/yaml
146
+ """
147
+ Then the following reply is sent:
148
+ """
149
+ 202 Accepted
150
+ content-type: multipart/yaml; boundary=cut
151
+
152
+ --cut
153
+ echo: 10cf16b458f759e0d617f2f3d83599ff
154
+ --cut--
155
+ """
156
+ When the following request is received:
157
+ """
158
+ GET /10cf16b458f759e0d617f2f3d83599ff HTTP/1.1
159
+ """
160
+ Then the following reply is sent:
161
+ """
162
+ 404 Not Found
163
+ """
164
+
165
+ Scenario: Error in the workflow on `delete`
166
+ Given the `octets.tester` is running
167
+ And the annotation:
168
+ """yaml
169
+ /:
170
+ auth:anonymous: true
171
+ octets:context: octets
172
+ POST:
173
+ octets:store: ~
174
+ /*:
175
+ GET:
176
+ octets:fetch: ~
177
+ DELETE:
178
+ octets:delete:
179
+ workflow:
180
+ err: octets.tester.err
181
+ """
182
+ When the stream of `lenna.ascii` is received with the following headers:
183
+ """
184
+ POST / HTTP/1.1
185
+ content-type: application/octet-stream
186
+ """
187
+ Then the following reply is sent:
188
+ """
189
+ 201 Created
190
+ """
191
+ When the following request is received:
192
+ """
193
+ DELETE /10cf16b458f759e0d617f2f3d83599ff HTTP/1.1
194
+ accept: application/yaml
195
+ """
196
+ Then the following reply is sent:
197
+ """
198
+ 202 Accepted
199
+ content-type: multipart/yaml; boundary=cut
200
+
201
+ --cut
202
+ error:
203
+ step: err
204
+ code: ERROR
205
+ message: Something went wrong
206
+ --cut--
207
+ """
208
+ When the following request is received:
209
+ """
210
+ GET /10cf16b458f759e0d617f2f3d83599ff HTTP/1.1
211
+ """
212
+ Then the following reply is sent:
213
+ """
214
+ 200 OK
215
+ """
216
+
217
+ Scenario: Passing parameters to the workflow
218
+ Given the `octets.tester` is running
219
+ And the annotation:
220
+ """yaml
221
+ /:
222
+ /:a/:b:
223
+ auth:anonymous: true
224
+ octets:context: octets
225
+ POST:
226
+ octets:store:
227
+ workflow:
228
+ concat: octets.tester.concat
229
+ """
230
+ When the stream of `lenna.ascii` is received with the following headers:
231
+ """
232
+ POST /hello/world/ HTTP/1.1
233
+ accept: application/yaml
234
+ content-type: application/octet-stream
235
+ """
236
+ Then the following reply is sent:
237
+ """
238
+ 201 Created
239
+ content-type: multipart/yaml; boundary=cut
240
+
241
+ --cut
242
+ id: 10cf16b458f759e0d617f2f3d83599ff
243
+ type: application/octet-stream
244
+ size: 8169
245
+ --cut
246
+ concat: hello world
247
+ --cut--
248
+ """
@@ -0,0 +1,65 @@
1
+ Feature: Response
2
+
3
+ Scenario: Content negotiation
4
+ Given the annotation:
5
+ """yaml
6
+ /:
7
+ GET:
8
+ anonymous: true
9
+ dev:stub: hello
10
+ """
11
+ When the following request is received:
12
+ """
13
+ GET / HTTP/1.1
14
+ accept: application/json
15
+ """
16
+ Then the following reply is sent:
17
+ """
18
+ 200 OK
19
+ content-type: application/json
20
+ vary: accept
21
+ """
22
+
23
+ Scenario: Error as YAML
24
+ Given the `echo` is running with the following manifest:
25
+ """yaml
26
+ exposition:
27
+ /:
28
+ GET: error
29
+ """
30
+ When the following request is received:
31
+ """
32
+ GET /echo/ HTTP/1.1
33
+ accept: application/yaml
34
+ """
35
+ Then the following reply is sent:
36
+ """
37
+ 409 Conflict
38
+ content-type: application/yaml
39
+
40
+ code: CODE
41
+ message: message
42
+ """
43
+
44
+ Scenario: Error as MessagePack
45
+ Given the `echo` is running with the following manifest:
46
+ """yaml
47
+ exposition:
48
+ /:
49
+ GET: error
50
+ """
51
+ When the following request is received:
52
+ """
53
+ GET /echo/ HTTP/1.1
54
+ accept: application/msgpack
55
+ """
56
+ Then the following reply is sent:
57
+ """
58
+ 409 Conflict
59
+ content-type: application/msgpack
60
+ """
61
+ And response body contains MessagePack-encoded value:
62
+ """yaml
63
+ code: CODE
64
+ message: message
65
+ """
@@ -87,3 +87,40 @@ Feature: Routes
87
87
 
88
88
  Hello
89
89
  """
90
+
91
+ Scenario: Routes with naming conflicts
92
+ Given the Gateway is running
93
+ And the `users` is running with the following manifest:
94
+ """yaml
95
+ exposition:
96
+ /:
97
+ POST: create
98
+ """
99
+ And the `users.properties` is running with the following manifest:
100
+ """yaml
101
+ exposition:
102
+ /:id:
103
+ GET: observe
104
+ """
105
+ When the following request is received:
106
+ """
107
+ GET /users/properties/b5534021e30042259badffbd1831e472/ HTTP/1.1
108
+ accept: application/yaml
109
+ """
110
+ Then the following reply is sent:
111
+ """
112
+ 200 OK
113
+
114
+ newbie: false
115
+ """
116
+ When the following request is received:
117
+ """
118
+ POST /users/ HTTP/1.1
119
+ content-type: application/yaml
120
+
121
+ name: Alice
122
+ """
123
+ Then the following reply is sent:
124
+ """
125
+ 201 Created
126
+ """
@@ -0,0 +1,6 @@
1
+ import * as http from '@toa.io/agent'
2
+ import { binding } from 'cucumber-tsflow'
3
+
4
+ @binding()
5
+ export class Captures extends http.Captures {
6
+ }
@@ -1,3 +1,4 @@
1
+ import * as assert from 'node:assert'
1
2
  import { after, binding, given } from 'cucumber-tsflow'
2
3
  import * as boot from '@toa.io/boot'
3
4
  import { timeout } from '@toa.io/generic'
@@ -8,7 +9,7 @@ import { Workspace } from './Workspace'
8
9
  @binding([Workspace])
9
10
  export class Components {
10
11
  private readonly workspace: Workspace
11
- private composition: Connector | null = null
12
+ private compositions: Record<string, Connector> = {}
12
13
 
13
14
  public constructor (workspace: Workspace) {
14
15
  this.workspace = workspace
@@ -26,18 +27,29 @@ export class Components {
26
27
  await this.runComponent(name, manifest)
27
28
  }
28
29
 
29
- @after()
30
30
  @given('the `{word}` is stopped')
31
- public async stop (_?: string): Promise<void> {
32
- await this.composition?.disconnect()
31
+ public async stop (name: string): Promise<void> {
32
+ assert.ok(name in this.compositions, `Composition '${name}' is not running`)
33
+
34
+ await this.compositions[name].disconnect()
35
+ delete this.compositions[name]
36
+ }
37
+
38
+ @after()
39
+ public async shutdown (): Promise<void> {
40
+ const promises = Object.values(this.compositions).map((composition) => composition.disconnect())
41
+
42
+ await Promise.all(promises)
33
43
  }
34
44
 
35
45
  private async runComponent (name: string, manifest?: object): Promise<void> {
46
+ assert.ok(!(name in this.compositions), `Composition '${name}' is already running`)
47
+
36
48
  const path = await this.workspace.addComponent(name, manifest)
37
49
 
38
- this.composition = await boot.composition([path])
50
+ this.compositions[name] = await boot.composition([path])
39
51
 
40
- await this.composition.connect()
52
+ await this.compositions[name].connect()
41
53
  await timeout(50) // discovery
42
54
  }
43
55
  }
@@ -18,8 +18,7 @@ export class Gateway {
18
18
  const annotation = parse(yaml)
19
19
 
20
20
  if ('/' in annotation) {
21
- const node = { '/': annotation['/'] }
22
- const tree = syntax.parse(node, shortcuts)
21
+ const tree = syntax.parse(annotation['/'], shortcuts)
23
22
 
24
23
  process.env.TOA_EXPOSITION = encode(tree)
25
24
  }