@toa.io/extensions.exposition 0.24.0-alpha.9 → 1.0.0-alpha.10

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 (444) hide show
  1. package/components/context.toa.yaml +12 -0
  2. package/components/identity.bans/manifest.toa.yaml +2 -1
  3. package/components/identity.basic/manifest.toa.yaml +5 -1
  4. package/components/identity.basic/operations/authenticate.js +1 -2
  5. package/components/identity.basic/operations/authenticate.js.map +1 -1
  6. package/components/identity.basic/operations/transit.js.map +1 -1
  7. package/components/identity.basic/operations/tsconfig.tsbuildinfo +1 -1
  8. package/components/identity.basic/source/authenticate.ts +0 -1
  9. package/components/identity.federation/events/principal.js +22 -0
  10. package/components/identity.federation/manifest.toa.yaml +94 -0
  11. package/components/identity.federation/operations/authenticate.d.ts +3 -0
  12. package/components/identity.federation/operations/authenticate.js +20 -0
  13. package/components/identity.federation/operations/authenticate.js.map +1 -0
  14. package/components/identity.federation/operations/create.d.ts +10 -0
  15. package/components/identity.federation/operations/create.js +15 -0
  16. package/components/identity.federation/operations/create.js.map +1 -0
  17. package/components/identity.federation/operations/lib/assertions-as-values.d.ts +4 -0
  18. package/components/identity.federation/operations/lib/assertions-as-values.js +45 -0
  19. package/components/identity.federation/operations/lib/assertions-as-values.js.map +1 -0
  20. package/components/identity.federation/operations/lib/jwt.d.ts +20 -0
  21. package/components/identity.federation/operations/lib/jwt.js +136 -0
  22. package/components/identity.federation/operations/lib/jwt.js.map +1 -0
  23. package/components/identity.federation/operations/schemas.d.ts +59 -0
  24. package/components/identity.federation/operations/schemas.js +9 -0
  25. package/components/identity.federation/operations/schemas.js.map +1 -0
  26. package/components/identity.federation/operations/tsconfig.tsbuildinfo +1 -0
  27. package/components/identity.federation/operations/types.d.ts +51 -0
  28. package/components/identity.federation/operations/types.js +3 -0
  29. package/components/identity.federation/operations/types.js.map +1 -0
  30. package/components/identity.federation/source/authenticate.ts +28 -0
  31. package/components/identity.federation/source/create.ts +26 -0
  32. package/components/identity.federation/source/lib/assertions-as-values.ts +19 -0
  33. package/components/identity.federation/source/lib/jwt.test.ts +56 -0
  34. package/components/identity.federation/source/lib/jwt.ts +171 -0
  35. package/components/identity.federation/source/schemas.ts +61 -0
  36. package/components/identity.federation/source/types.ts +56 -0
  37. package/components/identity.federation/tsconfig.json +9 -0
  38. package/components/identity.roles/manifest.toa.yaml +17 -5
  39. package/components/identity.roles/operations/grant.d.ts +10 -0
  40. package/components/identity.roles/operations/grant.js +20 -0
  41. package/components/identity.roles/operations/grant.js.map +1 -0
  42. package/components/identity.roles/operations/lib/Entity.d.ts +5 -0
  43. package/components/identity.roles/operations/lib/Entity.js +3 -0
  44. package/components/identity.roles/operations/lib/Entity.js.map +1 -0
  45. package/components/identity.roles/operations/list.d.ts +1 -4
  46. package/components/identity.roles/operations/list.js.map +1 -1
  47. package/components/identity.roles/operations/principal.d.ts +4 -6
  48. package/components/identity.roles/operations/principal.js +6 -1
  49. package/components/identity.roles/operations/principal.js.map +1 -1
  50. package/components/identity.roles/operations/tsconfig.tsbuildinfo +1 -1
  51. package/components/identity.roles/source/grant.ts +31 -0
  52. package/components/identity.roles/source/lib/Entity.ts +5 -0
  53. package/components/identity.roles/source/list.ts +2 -4
  54. package/components/identity.roles/source/principal.ts +10 -8
  55. package/components/identity.tokens/manifest.toa.yaml +1 -1
  56. package/components/identity.tokens/operations/authenticate.js.map +1 -1
  57. package/components/identity.tokens/operations/decrypt.js.map +1 -1
  58. package/components/identity.tokens/operations/tsconfig.tsbuildinfo +1 -1
  59. package/components/octets.storage/manifest.toa.yaml +1 -0
  60. package/components/octets.storage/operations/store.js +3 -3
  61. package/cucumber.js +0 -1
  62. package/documentation/access.md +11 -11
  63. package/documentation/components.md +48 -12
  64. package/documentation/identity.md +14 -7
  65. package/documentation/io.md +56 -0
  66. package/documentation/octets.md +102 -37
  67. package/documentation/protocol.md +21 -1
  68. package/documentation/query.md +51 -6
  69. package/documentation/tree.md +22 -4
  70. package/documentation/vary.md +69 -0
  71. package/features/access.feature +13 -2
  72. package/features/annotation.feature +1 -0
  73. package/features/body.feature +3 -1
  74. package/features/cache.feature +3 -0
  75. package/features/cors.feature +72 -0
  76. package/features/directives.feature +2 -0
  77. package/features/dynamic.feature +14 -7
  78. package/features/errors.feature +4 -3
  79. package/features/etag.feature +97 -0
  80. package/features/identity.basic.feature +68 -0
  81. package/features/identity.feature +19 -3
  82. package/features/identity.federation.feature +153 -0
  83. package/features/identity.roles.feature +151 -0
  84. package/features/identity.tokens.feature +3 -0
  85. package/features/io.feature +167 -0
  86. package/features/octets.entries.feature +123 -0
  87. package/features/octets.feature +4 -28
  88. package/features/octets.meta.feature +66 -0
  89. package/features/octets.workflows.feature +177 -4
  90. package/features/queries.feature +9 -1
  91. package/features/response.feature +68 -0
  92. package/features/routes.feature +54 -10
  93. package/features/steps/Captures.ts +6 -0
  94. package/features/steps/Components.ts +18 -6
  95. package/features/steps/Database.ts +1 -1
  96. package/features/steps/Gateway.ts +4 -2
  97. package/features/steps/HTTP.ts +34 -6
  98. package/features/steps/IdP.ts +149 -0
  99. package/features/steps/Parameters.ts +8 -2
  100. package/features/steps/Workspace.ts +5 -7
  101. package/features/steps/components/echo/manifest.toa.yaml +1 -0
  102. package/features/steps/components/echo/operations/error.js +11 -0
  103. package/features/steps/components/greeter/manifest.toa.yaml +1 -0
  104. package/features/steps/components/octets.tester/manifest.toa.yaml +4 -0
  105. package/features/steps/components/octets.tester/operations/concat.js +7 -0
  106. package/features/steps/components/octets.tester/operations/echo.js +7 -0
  107. package/features/steps/components/pots/manifest.toa.yaml +12 -3
  108. package/features/steps/components/sequences/manifest.toa.yaml +1 -0
  109. package/features/steps/components/users/manifest.toa.yaml +4 -0
  110. package/features/steps/components/users.properties/manifest.toa.yaml +14 -0
  111. package/features/steps/tsconfig.json +1 -1
  112. package/features/timing.feature +66 -0
  113. package/features/vary.feature +180 -0
  114. package/package.json +16 -20
  115. package/readme.md +7 -6
  116. package/schemas/annotation.cos.yaml +1 -0
  117. package/schemas/io/input.cos.yaml +3 -0
  118. package/schemas/io/message.cos.yaml +5 -0
  119. package/schemas/io/output.cos.yaml +5 -0
  120. package/schemas/octets/delete.cos.yaml +2 -1
  121. package/schemas/octets/list.cos.yaml +2 -1
  122. package/schemas/octets/workflow.cos.yaml +12 -0
  123. package/schemas/querystring.cos.yaml +1 -0
  124. package/source/Annotation.ts +1 -0
  125. package/source/Context.ts +6 -4
  126. package/source/Directive.test.ts +14 -8
  127. package/source/Directive.ts +26 -49
  128. package/source/Endpoint.ts +53 -6
  129. package/source/Factory.ts +23 -12
  130. package/source/Gateway.ts +45 -42
  131. package/source/HTTP/Context.ts +67 -0
  132. package/source/HTTP/Server.test.ts +61 -134
  133. package/source/HTTP/Server.ts +83 -87
  134. package/source/HTTP/Timing.ts +40 -0
  135. package/source/HTTP/formats/msgpack.ts +9 -6
  136. package/source/HTTP/formats/text.ts +1 -1
  137. package/source/HTTP/formats/yaml.ts +1 -1
  138. package/source/HTTP/index.ts +1 -0
  139. package/source/HTTP/messages.test.ts +27 -8
  140. package/source/HTTP/messages.ts +38 -42
  141. package/source/Interception.ts +24 -0
  142. package/source/Mapping.ts +7 -8
  143. package/source/RTD/Context.ts +7 -10
  144. package/source/RTD/Directives.ts +28 -4
  145. package/source/RTD/Endpoint.ts +6 -4
  146. package/source/RTD/Match.ts +2 -7
  147. package/source/RTD/Method.ts +7 -13
  148. package/source/RTD/Node.ts +13 -14
  149. package/source/RTD/Tree.ts +19 -15
  150. package/source/RTD/factory.ts +2 -5
  151. package/source/RTD/syntax/parse.ts +6 -6
  152. package/source/RTD/syntax/types.ts +1 -1
  153. package/source/deployment.ts +7 -2
  154. package/source/directives/auth/Anonymous.ts +3 -2
  155. package/source/directives/auth/{Family.ts → Authorization.ts} +39 -40
  156. package/source/directives/auth/Delegate.ts +32 -0
  157. package/source/directives/auth/Incept.ts +11 -6
  158. package/source/directives/auth/Role.ts +5 -3
  159. package/source/directives/auth/Rule.ts +2 -2
  160. package/source/directives/auth/Scheme.ts +2 -2
  161. package/source/directives/auth/index.ts +2 -2
  162. package/source/directives/auth/schemes.ts +2 -1
  163. package/source/directives/auth/types.ts +9 -6
  164. package/source/directives/cache/{Family.ts → Cache.ts} +6 -7
  165. package/source/directives/cache/Control.ts +5 -5
  166. package/source/directives/cache/index.ts +2 -2
  167. package/source/directives/cache/types.ts +2 -2
  168. package/source/directives/cors/CORS.ts +62 -0
  169. package/source/directives/cors/index.ts +3 -0
  170. package/source/directives/dev/{Family.ts → Development.ts} +4 -5
  171. package/source/directives/dev/Stub.ts +4 -4
  172. package/source/directives/dev/Throw.ts +4 -4
  173. package/source/directives/dev/index.ts +2 -2
  174. package/source/directives/dev/types.ts +1 -1
  175. package/source/directives/index.ts +11 -6
  176. package/source/directives/io/Directive.ts +11 -0
  177. package/source/directives/io/IO.ts +43 -0
  178. package/source/directives/io/Input.ts +50 -0
  179. package/source/directives/io/Message.ts +1 -0
  180. package/source/directives/io/Output.ts +69 -0
  181. package/source/directives/io/index.ts +3 -0
  182. package/source/directives/io/schemas.ts +12 -0
  183. package/source/directives/octets/Context.ts +6 -5
  184. package/source/directives/octets/Delete.ts +64 -11
  185. package/source/directives/octets/Directive.ts +10 -0
  186. package/source/directives/octets/Fetch.ts +44 -29
  187. package/source/directives/octets/List.ts +50 -10
  188. package/source/directives/octets/{Family.ts → Octets.ts} +14 -9
  189. package/source/directives/octets/Permute.ts +18 -11
  190. package/source/directives/octets/Store.ts +70 -102
  191. package/source/directives/octets/Workflow.ts +48 -0
  192. package/source/directives/octets/index.ts +2 -2
  193. package/source/directives/octets/schemas.test.ts +21 -0
  194. package/source/directives/octets/schemas.ts +13 -6
  195. package/source/directives/octets/types.ts +2 -8
  196. package/source/directives/octets/workflows/Execution.ts +76 -0
  197. package/source/directives/octets/workflows/Workflow.ts +37 -0
  198. package/source/directives/octets/workflows/index.ts +1 -0
  199. package/source/directives/vary/Directive.ts +6 -0
  200. package/source/directives/vary/Embed.ts +62 -0
  201. package/source/directives/vary/Properties.ts +17 -0
  202. package/source/directives/vary/Vary.ts +48 -0
  203. package/source/directives/vary/embeddings/Embedding.ts +6 -0
  204. package/source/directives/vary/embeddings/Header.ts +32 -0
  205. package/source/directives/vary/embeddings/Language.ts +31 -0
  206. package/source/directives/vary/embeddings/index.ts +11 -0
  207. package/source/directives/vary/index.ts +3 -0
  208. package/source/exceptions.ts +13 -9
  209. package/source/io.ts +4 -0
  210. package/source/manifest.test.ts +6 -14
  211. package/source/manifest.ts +9 -6
  212. package/source/root.ts +5 -0
  213. package/source/schemas.ts +7 -3
  214. package/transpiled/Annotation.d.ts +1 -0
  215. package/transpiled/Composition.js.map +1 -1
  216. package/transpiled/Context.d.ts +6 -4
  217. package/transpiled/Directive.d.ts +11 -25
  218. package/transpiled/Directive.js +17 -18
  219. package/transpiled/Directive.js.map +1 -1
  220. package/transpiled/Endpoint.d.ts +7 -5
  221. package/transpiled/Endpoint.js +58 -2
  222. package/transpiled/Endpoint.js.map +1 -1
  223. package/transpiled/Factory.d.ts +0 -1
  224. package/transpiled/Factory.js +14 -7
  225. package/transpiled/Factory.js.map +1 -1
  226. package/transpiled/Gateway.d.ts +7 -8
  227. package/transpiled/Gateway.js +25 -25
  228. package/transpiled/Gateway.js.map +1 -1
  229. package/transpiled/HTTP/Context.d.ts +24 -0
  230. package/transpiled/HTTP/Context.js +47 -0
  231. package/transpiled/HTTP/Context.js.map +1 -0
  232. package/transpiled/HTTP/Server.d.ts +10 -7
  233. package/transpiled/HTTP/Server.js +80 -70
  234. package/transpiled/HTTP/Server.js.map +1 -1
  235. package/transpiled/HTTP/Timing.d.ts +10 -0
  236. package/transpiled/HTTP/Timing.js +29 -0
  237. package/transpiled/HTTP/Timing.js.map +1 -0
  238. package/transpiled/HTTP/formats/msgpack.d.ts +2 -2
  239. package/transpiled/HTTP/formats/msgpack.js +8 -29
  240. package/transpiled/HTTP/formats/msgpack.js.map +1 -1
  241. package/transpiled/HTTP/formats/text.d.ts +3 -1
  242. package/transpiled/HTTP/formats/text.js.map +1 -1
  243. package/transpiled/HTTP/formats/yaml.js +1 -1
  244. package/transpiled/HTTP/formats/yaml.js.map +1 -1
  245. package/transpiled/HTTP/index.d.ts +1 -0
  246. package/transpiled/HTTP/index.js +1 -0
  247. package/transpiled/HTTP/index.js.map +1 -1
  248. package/transpiled/HTTP/messages.d.ts +7 -16
  249. package/transpiled/HTTP/messages.js +28 -25
  250. package/transpiled/HTTP/messages.js.map +1 -1
  251. package/transpiled/Interception.d.ts +9 -0
  252. package/transpiled/Interception.js +19 -0
  253. package/transpiled/Interception.js.map +1 -0
  254. package/transpiled/Mapping.js +7 -7
  255. package/transpiled/Mapping.js.map +1 -1
  256. package/transpiled/Query.js.map +1 -1
  257. package/transpiled/RTD/Context.d.ts +7 -6
  258. package/transpiled/RTD/Directives.d.ts +19 -4
  259. package/transpiled/RTD/Endpoint.d.ts +6 -4
  260. package/transpiled/RTD/Match.d.ts +2 -4
  261. package/transpiled/RTD/Method.d.ts +7 -7
  262. package/transpiled/RTD/Method.js.map +1 -1
  263. package/transpiled/RTD/Node.d.ts +4 -6
  264. package/transpiled/RTD/Node.js +2 -1
  265. package/transpiled/RTD/Node.js.map +1 -1
  266. package/transpiled/RTD/Route.js.map +1 -1
  267. package/transpiled/RTD/Tree.d.ts +6 -6
  268. package/transpiled/RTD/Tree.js +5 -0
  269. package/transpiled/RTD/Tree.js.map +1 -1
  270. package/transpiled/RTD/factory.d.ts +2 -4
  271. package/transpiled/RTD/factory.js.map +1 -1
  272. package/transpiled/RTD/syntax/parse.js +1 -1
  273. package/transpiled/RTD/syntax/parse.js.map +1 -1
  274. package/transpiled/RTD/syntax/types.js +1 -1
  275. package/transpiled/RTD/syntax/types.js.map +1 -1
  276. package/transpiled/deployment.js +6 -2
  277. package/transpiled/deployment.js.map +1 -1
  278. package/transpiled/directives/auth/Anonymous.js +3 -4
  279. package/transpiled/directives/auth/Anonymous.js.map +1 -1
  280. package/transpiled/directives/auth/{Family.d.ts → Authorization.d.ts} +4 -5
  281. package/transpiled/directives/auth/{Family.js → Authorization.js} +22 -13
  282. package/transpiled/directives/auth/Authorization.js.map +1 -0
  283. package/transpiled/directives/auth/Delegate.d.ts +8 -0
  284. package/transpiled/directives/auth/Delegate.js +27 -0
  285. package/transpiled/directives/auth/Delegate.js.map +1 -0
  286. package/transpiled/directives/auth/Incept.d.ts +1 -1
  287. package/transpiled/directives/auth/Incept.js +11 -6
  288. package/transpiled/directives/auth/Incept.js.map +1 -1
  289. package/transpiled/directives/auth/Role.js +5 -3
  290. package/transpiled/directives/auth/Role.js.map +1 -1
  291. package/transpiled/directives/auth/Rule.d.ts +2 -2
  292. package/transpiled/directives/auth/Rule.js.map +1 -1
  293. package/transpiled/directives/auth/Scheme.js +2 -2
  294. package/transpiled/directives/auth/Scheme.js.map +1 -1
  295. package/transpiled/directives/auth/index.d.ts +2 -2
  296. package/transpiled/directives/auth/index.js +4 -5
  297. package/transpiled/directives/auth/index.js.map +1 -1
  298. package/transpiled/directives/auth/schemes.js +2 -1
  299. package/transpiled/directives/auth/schemes.js.map +1 -1
  300. package/transpiled/directives/auth/types.d.ts +4 -4
  301. package/transpiled/directives/cache/Cache.d.ts +11 -0
  302. package/transpiled/directives/cache/{Family.js → Cache.js} +6 -4
  303. package/transpiled/directives/cache/Cache.js.map +1 -0
  304. package/transpiled/directives/cache/Control.d.ts +3 -3
  305. package/transpiled/directives/cache/Control.js +3 -3
  306. package/transpiled/directives/cache/Control.js.map +1 -1
  307. package/transpiled/directives/cache/index.d.ts +2 -2
  308. package/transpiled/directives/cache/index.js +4 -5
  309. package/transpiled/directives/cache/index.js.map +1 -1
  310. package/transpiled/directives/cache/types.d.ts +2 -2
  311. package/transpiled/directives/cors/CORS.d.ts +10 -0
  312. package/transpiled/directives/cors/CORS.js +51 -0
  313. package/transpiled/directives/cors/CORS.js.map +1 -0
  314. package/transpiled/directives/cors/index.d.ts +2 -0
  315. package/transpiled/directives/cors/index.js +6 -0
  316. package/transpiled/directives/cors/index.js.map +1 -0
  317. package/transpiled/directives/dev/Development.d.ts +9 -0
  318. package/transpiled/directives/dev/{Family.js → Development.js} +4 -2
  319. package/transpiled/directives/dev/Development.js.map +1 -0
  320. package/transpiled/directives/dev/Stub.d.ts +3 -3
  321. package/transpiled/directives/dev/Stub.js.map +1 -1
  322. package/transpiled/directives/dev/Throw.d.ts +3 -3
  323. package/transpiled/directives/dev/Throw.js.map +1 -1
  324. package/transpiled/directives/dev/index.d.ts +2 -2
  325. package/transpiled/directives/dev/index.js +4 -5
  326. package/transpiled/directives/dev/index.js.map +1 -1
  327. package/transpiled/directives/dev/types.d.ts +1 -1
  328. package/transpiled/directives/index.d.ts +4 -2
  329. package/transpiled/directives/index.js +10 -9
  330. package/transpiled/directives/index.js.map +1 -1
  331. package/transpiled/directives/io/Directive.d.ts +8 -0
  332. package/transpiled/directives/io/Directive.js +3 -0
  333. package/transpiled/directives/io/Directive.js.map +1 -0
  334. package/transpiled/directives/io/IO.d.ts +9 -0
  335. package/transpiled/directives/io/IO.js +33 -0
  336. package/transpiled/directives/io/IO.js.map +1 -0
  337. package/transpiled/directives/io/Input.d.ts +11 -0
  338. package/transpiled/directives/io/Input.js +63 -0
  339. package/transpiled/directives/io/Input.js.map +1 -0
  340. package/transpiled/directives/io/Message.d.ts +1 -0
  341. package/transpiled/directives/io/Message.js +3 -0
  342. package/transpiled/directives/io/Message.js.map +1 -0
  343. package/transpiled/directives/io/Output.d.ts +13 -0
  344. package/transpiled/directives/io/Output.js +76 -0
  345. package/transpiled/directives/io/Output.js.map +1 -0
  346. package/transpiled/directives/io/index.d.ts +2 -0
  347. package/transpiled/directives/io/index.js +6 -0
  348. package/transpiled/directives/io/index.js.map +1 -0
  349. package/transpiled/directives/io/schemas.d.ts +7 -0
  350. package/transpiled/directives/io/schemas.js +14 -0
  351. package/transpiled/directives/io/schemas.js.map +1 -0
  352. package/transpiled/directives/octets/Context.d.ts +5 -5
  353. package/transpiled/directives/octets/Context.js +4 -2
  354. package/transpiled/directives/octets/Context.js.map +1 -1
  355. package/transpiled/directives/octets/Delete.d.ts +15 -5
  356. package/transpiled/directives/octets/Delete.js +45 -8
  357. package/transpiled/directives/octets/Delete.js.map +1 -1
  358. package/transpiled/directives/octets/Directive.d.ts +8 -0
  359. package/transpiled/directives/octets/Directive.js +8 -0
  360. package/transpiled/directives/octets/Directive.js.map +1 -0
  361. package/transpiled/directives/octets/Fetch.d.ts +9 -9
  362. package/transpiled/directives/octets/Fetch.js +36 -21
  363. package/transpiled/directives/octets/Fetch.js.map +1 -1
  364. package/transpiled/directives/octets/List.d.ts +11 -5
  365. package/transpiled/directives/octets/List.js +34 -7
  366. package/transpiled/directives/octets/List.js.map +1 -1
  367. package/transpiled/directives/octets/Octets.d.ts +12 -0
  368. package/transpiled/directives/octets/{Family.js → Octets.js} +12 -6
  369. package/transpiled/directives/octets/Octets.js.map +1 -0
  370. package/transpiled/directives/octets/Permute.d.ts +5 -4
  371. package/transpiled/directives/octets/Permute.js +15 -8
  372. package/transpiled/directives/octets/Permute.js.map +1 -1
  373. package/transpiled/directives/octets/Store.d.ts +14 -23
  374. package/transpiled/directives/octets/Store.js +41 -70
  375. package/transpiled/directives/octets/Store.js.map +1 -1
  376. package/transpiled/directives/octets/Workflow.d.ts +15 -0
  377. package/transpiled/directives/octets/Workflow.js +59 -0
  378. package/transpiled/directives/octets/Workflow.js.map +1 -0
  379. package/transpiled/directives/octets/index.d.ts +2 -2
  380. package/transpiled/directives/octets/index.js +4 -5
  381. package/transpiled/directives/octets/index.js.map +1 -1
  382. package/transpiled/directives/octets/schemas.d.ts +13 -6
  383. package/transpiled/directives/octets/schemas.js +2 -1
  384. package/transpiled/directives/octets/schemas.js.map +1 -1
  385. package/transpiled/directives/octets/types.d.ts +2 -6
  386. package/transpiled/directives/octets/workflows/Execution.d.ts +25 -0
  387. package/transpiled/directives/octets/workflows/Execution.js +54 -0
  388. package/transpiled/directives/octets/workflows/Execution.js.map +1 -0
  389. package/transpiled/directives/octets/workflows/Workflow.d.ts +12 -0
  390. package/transpiled/directives/octets/workflows/Workflow.js +25 -0
  391. package/transpiled/directives/octets/workflows/Workflow.js.map +1 -0
  392. package/transpiled/directives/octets/workflows/index.d.ts +1 -0
  393. package/transpiled/directives/octets/workflows/index.js +6 -0
  394. package/transpiled/directives/octets/workflows/index.js.map +1 -0
  395. package/transpiled/directives/vary/Directive.d.ts +5 -0
  396. package/transpiled/directives/vary/Directive.js +3 -0
  397. package/transpiled/directives/vary/Directive.js.map +1 -0
  398. package/transpiled/directives/vary/Embed.d.ts +10 -0
  399. package/transpiled/directives/vary/Embed.js +49 -0
  400. package/transpiled/directives/vary/Embed.js.map +1 -0
  401. package/transpiled/directives/vary/Properties.d.ts +9 -0
  402. package/transpiled/directives/vary/Properties.js +16 -0
  403. package/transpiled/directives/vary/Properties.js.map +1 -0
  404. package/transpiled/directives/vary/Vary.d.ts +10 -0
  405. package/transpiled/directives/vary/Vary.js +36 -0
  406. package/transpiled/directives/vary/Vary.js.map +1 -0
  407. package/transpiled/directives/vary/embeddings/Embedding.d.ts +5 -0
  408. package/transpiled/directives/vary/embeddings/Embedding.js +3 -0
  409. package/transpiled/directives/vary/embeddings/Embedding.js.map +1 -0
  410. package/transpiled/directives/vary/embeddings/Header.d.ts +7 -0
  411. package/transpiled/directives/vary/embeddings/Header.js +28 -0
  412. package/transpiled/directives/vary/embeddings/Header.js.map +1 -0
  413. package/transpiled/directives/vary/embeddings/Language.d.ts +7 -0
  414. package/transpiled/directives/vary/embeddings/Language.js +28 -0
  415. package/transpiled/directives/vary/embeddings/Language.js.map +1 -0
  416. package/transpiled/directives/vary/embeddings/index.d.ts +5 -0
  417. package/transpiled/directives/vary/embeddings/index.js +10 -0
  418. package/transpiled/directives/vary/embeddings/index.js.map +1 -0
  419. package/transpiled/directives/vary/index.d.ts +2 -0
  420. package/transpiled/directives/vary/index.js +6 -0
  421. package/transpiled/directives/vary/index.js.map +1 -0
  422. package/transpiled/exceptions.js +7 -7
  423. package/transpiled/exceptions.js.map +1 -1
  424. package/transpiled/io.d.ts +3 -0
  425. package/transpiled/io.js +3 -0
  426. package/transpiled/io.js.map +1 -0
  427. package/transpiled/manifest.js +10 -5
  428. package/transpiled/manifest.js.map +1 -1
  429. package/transpiled/root.js +5 -0
  430. package/transpiled/root.js.map +1 -1
  431. package/transpiled/schemas.d.ts +7 -3
  432. package/transpiled/schemas.js.map +1 -1
  433. package/transpiled/tsconfig.tsbuildinfo +1 -1
  434. package/source/HTTP/Server.fixtures.ts +0 -41
  435. package/transpiled/HTTP/Server.fixtures.d.ts +0 -11
  436. package/transpiled/HTTP/Server.fixtures.js +0 -32
  437. package/transpiled/HTTP/Server.fixtures.js.map +0 -1
  438. package/transpiled/directives/auth/Family.js.map +0 -1
  439. package/transpiled/directives/cache/Family.d.ts +0 -12
  440. package/transpiled/directives/cache/Family.js.map +0 -1
  441. package/transpiled/directives/dev/Family.d.ts +0 -10
  442. package/transpiled/directives/dev/Family.js.map +0 -1
  443. package/transpiled/directives/octets/Family.d.ts +0 -12
  444. package/transpiled/directives/octets/Family.js.map +0 -1
@@ -0,0 +1,167 @@
1
+ Feature: IO restrictions
2
+
3
+ Background:
4
+ Given the `pots` database contains:
5
+ | _id | title | volume | temperature |
6
+ | 4c4759e6f9c74da989d64511df42d6f4 | First pot | 100 | 80 |
7
+ | 99988d785d7d445cad45dbf8531f560b | Second pot | 200 | 30 |
8
+
9
+ Scenario: Output is omitted by default
10
+ Given the `pots` is running with the following manifest:
11
+ """yaml
12
+ exposition:
13
+ /:
14
+ GET: enumerate
15
+ /:id:
16
+ GET: observe
17
+ """
18
+ When the following request is received:
19
+ """
20
+ GET /pots/4c4759e6f9c74da989d64511df42d6f4/ HTTP/1.1
21
+ """
22
+ Then the following reply is sent:
23
+ """
24
+ 200 OK
25
+ content-length: 0
26
+ """
27
+ When the following request is received:
28
+ """
29
+ GET /pots/ HTTP/1.1
30
+ accept: application/yaml
31
+ """
32
+ Then the following reply is sent:
33
+ """
34
+ 200 OK
35
+ content-length: 0
36
+ """
37
+
38
+ Scenario: Output is omitted by intention
39
+ Given the `pots` is running with the following manifest:
40
+ """yaml
41
+ exposition:
42
+ /:id:
43
+ io:output: false
44
+ GET: observe
45
+ """
46
+ When the following request is received:
47
+ """
48
+ GET /pots/4c4759e6f9c74da989d64511df42d6f4/ HTTP/1.1
49
+ accept: application/yaml
50
+ """
51
+ Then the following reply is sent:
52
+ """
53
+ 200 OK
54
+ content-length: 0
55
+ """
56
+
57
+ Scenario: Output permissions
58
+ Given the `pots` is running with the following manifest:
59
+ """yaml
60
+ exposition:
61
+ /:
62
+ io:output: [id, volume]
63
+ GET: enumerate
64
+ /:id:
65
+ GET: observe
66
+ """
67
+ When the following request is received:
68
+ """
69
+ GET /pots/4c4759e6f9c74da989d64511df42d6f4/ HTTP/1.1
70
+ accept: application/yaml
71
+ """
72
+ Then the following reply is sent:
73
+ """
74
+ 200 OK
75
+
76
+ id: 4c4759e6f9c74da989d64511df42d6f4
77
+ volume: 100
78
+ """
79
+ And the reply does not contain:
80
+ """
81
+ title:
82
+ temperature:
83
+ """
84
+ When the following request is received:
85
+ """
86
+ GET /pots/ HTTP/1.1
87
+ accept: application/yaml
88
+ """
89
+ Then the following reply is sent:
90
+ """
91
+ 200 OK
92
+ content-type: application/yaml
93
+
94
+ - id: 4c4759e6f9c74da989d64511df42d6f4
95
+ volume: 100
96
+ - id: 99988d785d7d445cad45dbf8531f560b
97
+ volume: 200
98
+ """
99
+ And the reply does not contain:
100
+ """
101
+ title:
102
+ temperature:
103
+ """
104
+
105
+ Scenario: Input is unrestricted by default
106
+ Given the `pots` is running with the following manifest:
107
+ """yaml
108
+ exposition:
109
+ /:
110
+ io:output: true
111
+ POST: create
112
+ """
113
+ When the following request is received:
114
+ """
115
+ POST /pots/ HTTP/1.1
116
+ accept: application/yaml
117
+ content-type: application/yaml
118
+
119
+ title: Hello
120
+ volume: 1.5
121
+ temperature: 80
122
+ """
123
+ Then the following reply is sent:
124
+ """
125
+ 201 Created
126
+
127
+ title: Hello
128
+ volume: 1.5
129
+ temperature: 80
130
+ """
131
+
132
+ Scenario: Input permissions
133
+ Given the `pots` is running with the following manifest:
134
+ """yaml
135
+ exposition:
136
+ /:
137
+ io:input: [title, volume]
138
+ POST: create
139
+ """
140
+ When the following request is received:
141
+ """
142
+ POST /pots/ HTTP/1.1
143
+ accept: text/plain
144
+ content-type: application/yaml
145
+
146
+ title: Hello
147
+ volume: 1.5
148
+ temperature: 80
149
+ """
150
+ Then the following reply is sent:
151
+ """
152
+ 400 Bad Request
153
+
154
+ Unexpected input: temperature
155
+ """
156
+ When the following request is received:
157
+ """
158
+ POST /pots/ HTTP/1.1
159
+ content-type: application/yaml
160
+
161
+ title: Hello
162
+ volume: 1.5
163
+ """
164
+ Then the following reply is sent:
165
+ """
166
+ 201 Created
167
+ """
@@ -0,0 +1,123 @@
1
+ Feature: Accessing entries
2
+
3
+ Scenario: Entries are not accessible by default
4
+ Given the annotation:
5
+ """yaml
6
+ /:
7
+ io:output: true
8
+ auth:anonymous: true
9
+ octets:context: octets
10
+ POST:
11
+ octets:store: ~
12
+ GET:
13
+ octets:list: ~
14
+ /*:
15
+ GET:
16
+ octets:fetch: ~
17
+ """
18
+ When the stream of `lenna.ascii` is received with the following headers:
19
+ """
20
+ POST / HTTP/1.1
21
+ content-type: application/octet-stream
22
+ """
23
+ Then the following reply is sent:
24
+ """
25
+ 201 Created
26
+ """
27
+ When the following request is received:
28
+ """
29
+ GET / HTTP/1.1
30
+ accept: application/vnd.toa.octets.entries+yaml
31
+ """
32
+ Then the following reply is sent:
33
+ """
34
+ 403 Forbidden
35
+
36
+ Metadata is not accessible.
37
+ """
38
+ When the following request is received:
39
+ """
40
+ GET /10cf16b458f759e0d617f2f3d83599ff HTTP/1.1
41
+ accept: text/vnd.toa.octets.entry+plain
42
+ """
43
+ Then the following reply is sent:
44
+ """
45
+ 403 Forbidden
46
+
47
+ Metadata is not accessible.
48
+ """
49
+
50
+ Scenario: Accessing entries
51
+ Given the annotation:
52
+ """yaml
53
+ /:
54
+ io:output: true
55
+ auth:anonymous: true
56
+ octets:context: octets
57
+ POST:
58
+ octets:store: ~
59
+ GET:
60
+ octets:list:
61
+ meta: true
62
+ /*:
63
+ GET:
64
+ octets:fetch:
65
+ meta: true
66
+ """
67
+ When the stream of `lenna.ascii` is received with the following headers:
68
+ """
69
+ POST / HTTP/1.1
70
+ accept: application/yaml
71
+ content-type: application/octet-stream
72
+ """
73
+ And the stream of `lenna.png` is received with the following headers:
74
+ """
75
+ POST / HTTP/1.1
76
+ accept: application/yaml
77
+ content-type: application/octet-stream
78
+ """
79
+ When the following request is received:
80
+ """
81
+ GET / HTTP/1.1
82
+ accept: application/yaml
83
+ """
84
+ Then the following reply is sent:
85
+ """
86
+ 200 OK
87
+ content-type: application/yaml
88
+
89
+ - 10cf16b458f759e0d617f2f3d83599ff
90
+ - 814a0034f5549e957ee61360d87457e5
91
+ """
92
+ When the following request is received:
93
+ """
94
+ GET / HTTP/1.1
95
+ accept: application/vnd.toa.octets.entries+yaml
96
+ """
97
+ Then the following reply is sent:
98
+ """
99
+ 200 OK
100
+ content-type: application/yaml
101
+
102
+ - id: 10cf16b458f759e0d617f2f3d83599ff
103
+ size: 8169
104
+ type: application/octet-stream
105
+ - id: 814a0034f5549e957ee61360d87457e5
106
+ size: 473831
107
+ type: image/png
108
+ """
109
+ When the following request is received:
110
+ """
111
+ GET /10cf16b458f759e0d617f2f3d83599ff HTTP/1.1
112
+ accept: application/vnd.toa.octets.entry+yaml
113
+ """
114
+ Then the following reply is sent:
115
+ """
116
+ 200 OK
117
+ content-type: application/yaml
118
+ content-length: 124
119
+
120
+ id: 10cf16b458f759e0d617f2f3d83599ff
121
+ type: application/octet-stream
122
+ size: 8169
123
+ """
@@ -4,6 +4,7 @@ Feature: Octets directive family
4
4
  Given the annotation:
5
5
  """yaml
6
6
  /:
7
+ io:output: true
7
8
  auth:anonymous: true
8
9
  octets:context: octets
9
10
  POST:
@@ -70,17 +71,6 @@ Feature: Octets directive family
70
71
  """
71
72
  304 Not Modified
72
73
  """
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
74
  When the following request is received:
85
75
  """
86
76
  GET / HTTP/1.1
@@ -245,11 +235,11 @@ Feature: Octets directive family
245
235
  Trailing slash is redundant.
246
236
  """
247
237
 
248
- Scenario: Accessing an Entry and the original BLOLB
238
+ Scenario: Original BLOLB is not accessible
249
239
  Given the annotation:
250
240
  """yaml
251
- debug: true
252
241
  /:
242
+ io:output: true
253
243
  auth:anonymous: true
254
244
  octets:context: octets
255
245
  POST:
@@ -268,24 +258,10 @@ Feature: Octets directive family
268
258
  """
269
259
  201 Created
270
260
  """
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
261
  When the following request is received:
287
262
  """
288
263
  GET /10cf16b458f759e0d617f2f3d83599ff HTTP/1.1
264
+ accept: text/plain
289
265
  """
290
266
  Then the following reply is sent:
291
267
  """
@@ -0,0 +1,66 @@
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
+ io:output: true
9
+ auth:anonymous: true
10
+ octets:context: octets
11
+ /*:
12
+ POST:
13
+ octets:store: ~
14
+ /*:
15
+ GET:
16
+ octets:fetch:
17
+ meta: true
18
+ """
19
+ When the stream of `lenna.ascii` is received with the following headers:
20
+ """
21
+ POST /meta-header/ HTTP/1.1
22
+ content-type: application/octet-stream
23
+ content-meta: foo, bar=baz=1
24
+ content-meta: baz=1
25
+ """
26
+ Then the following reply is sent:
27
+ """
28
+ 201 Created
29
+ """
30
+ When the following request is received:
31
+ """
32
+ GET /meta-header/10cf16b458f759e0d617f2f3d83599ff HTTP/1.1
33
+ accept: application/vnd.toa.octets.entry+yaml
34
+ """
35
+ Then the following reply is sent:
36
+ """
37
+ 200 OK
38
+
39
+ id: 10cf16b458f759e0d617f2f3d83599ff
40
+ type: application/octet-stream
41
+ size: 8169
42
+ meta:
43
+ foo: 'true'
44
+ bar: baz=1
45
+ baz: '1'
46
+ """
47
+
48
+ Scenario: CORS allows `content-meta` header
49
+ Given the annotation:
50
+ """yaml
51
+ /:
52
+ octets:context: octets
53
+ POST:
54
+ octets:store: ~
55
+ """
56
+ When the following request is received:
57
+ """
58
+ OPTIONS / HTTP/1.1
59
+ origin: https://example.com
60
+ """
61
+ Then the following reply is sent:
62
+ """
63
+ 204 No Content
64
+ access-control-allow-origin: https://example.com
65
+ access-control-allow-headers: accept, authorization, content-type, etag, if-match, if-none-match, content-meta
66
+ """
@@ -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
@@ -15,6 +15,7 @@ Feature: Octets storage workflows
15
15
  - add-baz: octets.tester.baz
16
16
  - diversify: octets.tester.diversify
17
17
  /*:
18
+ io:output: true
18
19
  GET:
19
20
  octets:fetch:
20
21
  meta: true
@@ -47,8 +48,8 @@ Feature: Octets storage workflows
47
48
  """
48
49
  When the following request is received:
49
50
  """
50
- GET /10cf16b458f759e0d617f2f3d83599ff:meta HTTP/1.1
51
- accept: application/yaml
51
+ GET /10cf16b458f759e0d617f2f3d83599ff HTTP/1.1
52
+ accept: application/vnd.toa.octets.entry+yaml
52
53
  """
53
54
  Then the following reply is sent:
54
55
  """
@@ -74,7 +75,7 @@ Feature: Octets storage workflows
74
75
  content-length: 473831
75
76
  """
76
77
 
77
- Scenario: Getting error when adding metadata to a file
78
+ Scenario: Getting error when running workflow on `store`
78
79
  Given the `octets.tester` is running
79
80
  Given the annotation:
80
81
  """yaml
@@ -112,3 +113,175 @@ Feature: Octets storage workflows
112
113
  message: Something went wrong
113
114
  --cut--
114
115
  """
116
+
117
+ Scenario: Running a workflow on `delete`
118
+ Given the `octets.tester` is running
119
+ And the annotation:
120
+ """yaml
121
+ /:
122
+ auth:anonymous: true
123
+ octets:context: octets
124
+ POST:
125
+ octets:store: ~
126
+ /*:
127
+ GET:
128
+ octets:fetch: ~
129
+ DELETE:
130
+ octets:delete:
131
+ workflow:
132
+ echo: octets.tester.echo
133
+ """
134
+ When the stream of `lenna.ascii` is received with the following headers:
135
+ """
136
+ POST / HTTP/1.1
137
+ content-type: application/octet-stream
138
+ """
139
+ Then the following reply is sent:
140
+ """
141
+ 201 Created
142
+ """
143
+ When the following request is received:
144
+ """
145
+ DELETE /10cf16b458f759e0d617f2f3d83599ff HTTP/1.1
146
+ accept: application/yaml
147
+ """
148
+ Then the following reply is sent:
149
+ """
150
+ 202 Accepted
151
+ content-type: multipart/yaml; boundary=cut
152
+
153
+ --cut
154
+ echo: 10cf16b458f759e0d617f2f3d83599ff
155
+ --cut--
156
+ """
157
+ When the following request is received:
158
+ """
159
+ GET /10cf16b458f759e0d617f2f3d83599ff HTTP/1.1
160
+ """
161
+ Then the following reply is sent:
162
+ """
163
+ 404 Not Found
164
+ """
165
+
166
+ Scenario: Error in the workflow on `delete`
167
+ Given the `octets.tester` is running
168
+ And the annotation:
169
+ """yaml
170
+ /:
171
+ auth:anonymous: true
172
+ octets:context: octets
173
+ POST:
174
+ octets:store: ~
175
+ /*:
176
+ GET:
177
+ octets:fetch: ~
178
+ DELETE:
179
+ octets:delete:
180
+ workflow:
181
+ err: octets.tester.err
182
+ """
183
+ When the stream of `lenna.ascii` is received with the following headers:
184
+ """
185
+ POST / HTTP/1.1
186
+ content-type: application/octet-stream
187
+ """
188
+ Then the following reply is sent:
189
+ """
190
+ 201 Created
191
+ """
192
+ When the following request is received:
193
+ """
194
+ DELETE /10cf16b458f759e0d617f2f3d83599ff HTTP/1.1
195
+ accept: application/yaml
196
+ """
197
+ Then the following reply is sent:
198
+ """
199
+ 202 Accepted
200
+ content-type: multipart/yaml; boundary=cut
201
+
202
+ --cut
203
+ error:
204
+ step: err
205
+ code: ERROR
206
+ message: Something went wrong
207
+ --cut--
208
+ """
209
+ When the following request is received:
210
+ """
211
+ GET /10cf16b458f759e0d617f2f3d83599ff HTTP/1.1
212
+ """
213
+ Then the following reply is sent:
214
+ """
215
+ 200 OK
216
+ """
217
+
218
+ Scenario: Passing parameters to the workflow
219
+ Given the `octets.tester` is running
220
+ And the annotation:
221
+ """yaml
222
+ /:
223
+ /:a/:b:
224
+ auth:anonymous: true
225
+ octets:context: octets
226
+ POST:
227
+ octets:store:
228
+ workflow:
229
+ concat: octets.tester.concat
230
+ """
231
+ When the stream of `lenna.ascii` is received with the following headers:
232
+ """
233
+ POST /hello/world/ HTTP/1.1
234
+ accept: application/yaml
235
+ content-type: application/octet-stream
236
+ """
237
+ Then the following reply is sent:
238
+ """
239
+ 201 Created
240
+ content-type: multipart/yaml; boundary=cut
241
+
242
+ --cut
243
+ id: 10cf16b458f759e0d617f2f3d83599ff
244
+ type: application/octet-stream
245
+ size: 8169
246
+ --cut
247
+ concat: hello world
248
+ --cut--
249
+ """
250
+
251
+ Scenario: Executing a workflow with `octets:workflow`
252
+ Given the `octets.tester` is running
253
+ And the annotation:
254
+ """yaml
255
+ /:
256
+ auth:anonymous: true
257
+ octets:context: octets
258
+ POST:
259
+ octets:store: ~
260
+ /*:
261
+ DELETE:
262
+ octets:workflow:
263
+ echo: octets.tester.echo
264
+ """
265
+ When the stream of `lenna.ascii` is received with the following headers:
266
+ """
267
+ POST / HTTP/1.1
268
+ content-type: application/octet-stream
269
+ """
270
+ Then the following reply is sent:
271
+ """
272
+ 201 Created
273
+ """
274
+ When the following request is received:
275
+ """
276
+ DELETE /10cf16b458f759e0d617f2f3d83599ff HTTP/1.1
277
+ accept: application/yaml
278
+ """
279
+ Then the following reply is sent:
280
+ """
281
+ 202 Accepted
282
+ content-type: multipart/yaml; boundary=cut
283
+
284
+ --cut
285
+ echo: 10cf16b458f759e0d617f2f3d83599ff
286
+ --cut--
287
+ """
@@ -13,6 +13,7 @@ Feature: Queries
13
13
  """yaml
14
14
  exposition:
15
15
  /pot:
16
+ io:output: true
16
17
  GET: observe
17
18
  """
18
19
  When the following request is received:
@@ -35,6 +36,7 @@ Feature: Queries
35
36
  """yaml
36
37
  exposition:
37
38
  /:
39
+ io:output: true
38
40
  GET: enumerate
39
41
  """
40
42
  When the following request is received:
@@ -60,6 +62,7 @@ Feature: Queries
60
62
  """yaml
61
63
  exposition:
62
64
  /:
65
+ io:output: true
63
66
  GET: enumerate
64
67
  """
65
68
  When the following request is received:
@@ -85,6 +88,7 @@ Feature: Queries
85
88
  """yaml
86
89
  exposition:
87
90
  /:
91
+ io:output: true
88
92
  GET: enumerate
89
93
  """
90
94
  When the following request is received:
@@ -110,6 +114,7 @@ Feature: Queries
110
114
  """yaml
111
115
  exposition:
112
116
  /:id:
117
+ io:output: true
113
118
  GET: observe
114
119
  """
115
120
  When the following request is received:
@@ -127,11 +132,12 @@ Feature: Queries
127
132
  volume: 200
128
133
  """
129
134
 
130
- Scenario: Request to a route with predefined criretia
135
+ Scenario: Request to a route with predefined criteria
131
136
  Given the `pots` is running with the following manifest:
132
137
  """yaml
133
138
  exposition:
134
139
  /big:
140
+ io:output: true
135
141
  GET:
136
142
  endpoint: enumerate
137
143
  query:
@@ -160,6 +166,7 @@ Feature: Queries
160
166
  """yaml
161
167
  exposition:
162
168
  /big:
169
+ io:output: true
163
170
  GET:
164
171
  endpoint: enumerate
165
172
  query:
@@ -186,6 +193,7 @@ Feature: Queries
186
193
  """yaml
187
194
  exposition:
188
195
  /hottest2:
196
+ io:output: true
189
197
  GET:
190
198
  endpoint: enumerate
191
199
  query: