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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (396) hide show
  1. package/components/context.toa.yaml +2 -2
  2. package/components/identity.bans/manifest.toa.yaml +15 -7
  3. package/components/identity.bans/operations/transit.d.ts +14 -0
  4. package/components/identity.bans/operations/transit.js +11 -0
  5. package/components/identity.bans/operations/transit.js.map +1 -0
  6. package/components/identity.bans/operations/tsconfig.tsbuildinfo +1 -0
  7. package/components/identity.bans/source/transit.ts +21 -0
  8. package/components/identity.bans/tsconfig.json +9 -0
  9. package/components/identity.basic/manifest.toa.yaml +22 -9
  10. package/components/identity.basic/operations/authenticate.d.ts +5 -1
  11. package/components/identity.basic/operations/authenticate.js +5 -2
  12. package/components/identity.basic/operations/authenticate.js.map +1 -1
  13. package/components/identity.basic/operations/incept.d.ts +12 -0
  14. package/components/identity.basic/operations/incept.js +26 -0
  15. package/components/identity.basic/operations/incept.js.map +1 -0
  16. package/components/identity.basic/operations/transit.d.ts +4 -4
  17. package/components/identity.basic/operations/transit.js +5 -3
  18. package/components/identity.basic/operations/transit.js.map +1 -1
  19. package/components/identity.basic/operations/tsconfig.tsbuildinfo +1 -1
  20. package/components/identity.basic/operations/types.d.ts +8 -4
  21. package/components/identity.basic/source/authenticate.ts +16 -5
  22. package/components/identity.basic/source/incept.ts +38 -0
  23. package/components/identity.basic/source/transit.ts +8 -6
  24. package/components/identity.basic/source/types.ts +8 -4
  25. package/components/identity.federation/manifest.toa.yaml +28 -22
  26. package/components/identity.federation/operations/authenticate.d.ts +2 -2
  27. package/components/identity.federation/operations/authenticate.js +3 -10
  28. package/components/identity.federation/operations/authenticate.js.map +1 -1
  29. package/components/identity.federation/operations/incept.d.ts +11 -0
  30. package/components/identity.federation/operations/{create.js → incept.js} +6 -7
  31. package/components/identity.federation/operations/incept.js.map +1 -0
  32. package/components/identity.federation/operations/lib/jwt.d.ts +4 -5
  33. package/components/identity.federation/operations/lib/jwt.js +3 -3
  34. package/components/identity.federation/operations/lib/jwt.js.map +1 -1
  35. package/components/identity.federation/operations/tsconfig.tsbuildinfo +1 -1
  36. package/components/identity.federation/operations/types/configuration.d.ts +14 -0
  37. package/components/identity.federation/operations/types/configuration.js +3 -0
  38. package/components/identity.federation/operations/types/configuration.js.map +1 -0
  39. package/components/identity.federation/operations/{types.d.ts → types/context.d.ts} +13 -6
  40. package/components/identity.federation/operations/types/context.js +3 -0
  41. package/components/identity.federation/operations/types/context.js.map +1 -0
  42. package/components/identity.federation/operations/types/entity.d.ts +6 -0
  43. package/components/identity.federation/operations/{types.js → types/entity.js} +1 -1
  44. package/components/identity.federation/operations/types/entity.js.map +1 -0
  45. package/components/identity.federation/operations/types/index.d.ts +3 -0
  46. package/components/identity.federation/operations/types/index.js +20 -0
  47. package/components/identity.federation/operations/types/index.js.map +1 -0
  48. package/components/identity.federation/source/authenticate.ts +5 -18
  49. package/components/identity.federation/source/{create.ts → incept.ts} +10 -9
  50. package/components/identity.federation/source/lib/jwt.test.ts +2 -2
  51. package/components/identity.federation/source/lib/jwt.ts +7 -8
  52. package/components/identity.federation/source/types/configuration.ts +15 -0
  53. package/components/identity.federation/source/{types.ts → types/context.ts} +15 -5
  54. package/components/identity.federation/source/types/entity.ts +6 -0
  55. package/components/identity.federation/source/types/index.ts +3 -0
  56. package/components/identity.federation/tsconfig.json +2 -2
  57. package/components/identity.roles/manifest.toa.yaml +18 -6
  58. package/components/identity.roles/operations/grant.d.ts +10 -0
  59. package/components/identity.roles/operations/grant.js +21 -0
  60. package/components/identity.roles/operations/grant.js.map +1 -0
  61. package/components/identity.roles/operations/lib/Entity.d.ts +5 -0
  62. package/components/identity.roles/operations/lib/Entity.js +3 -0
  63. package/components/identity.roles/operations/lib/Entity.js.map +1 -0
  64. package/components/identity.roles/operations/list.d.ts +1 -4
  65. package/components/identity.roles/operations/list.js.map +1 -1
  66. package/components/identity.roles/operations/principal.d.ts +4 -6
  67. package/components/identity.roles/operations/principal.js +6 -1
  68. package/components/identity.roles/operations/principal.js.map +1 -1
  69. package/components/identity.roles/operations/tsconfig.tsbuildinfo +1 -1
  70. package/components/identity.roles/source/grant.ts +32 -0
  71. package/components/identity.roles/source/lib/Entity.ts +5 -0
  72. package/components/identity.roles/source/list.ts +2 -4
  73. package/components/identity.roles/source/principal.ts +10 -8
  74. package/components/identity.tokens/manifest.toa.yaml +19 -5
  75. package/components/identity.tokens/operations/authenticate.d.ts +2 -2
  76. package/components/identity.tokens/operations/authenticate.js +10 -4
  77. package/components/identity.tokens/operations/authenticate.js.map +1 -1
  78. package/components/identity.tokens/operations/decrypt.js +1 -0
  79. package/components/identity.tokens/operations/decrypt.js.map +1 -1
  80. package/components/identity.tokens/operations/encrypt.js +5 -1
  81. package/components/identity.tokens/operations/encrypt.js.map +1 -1
  82. package/components/identity.tokens/operations/tsconfig.tsbuildinfo +1 -1
  83. package/components/identity.tokens/operations/types.d.ts +8 -2
  84. package/components/identity.tokens/receivers/identity.bans.created.js +3 -0
  85. package/components/identity.tokens/source/authenticate.test.ts +11 -4
  86. package/components/identity.tokens/source/authenticate.ts +12 -5
  87. package/components/identity.tokens/source/decrypt.test.ts +5 -3
  88. package/components/identity.tokens/source/decrypt.ts +9 -8
  89. package/components/identity.tokens/source/encrypt.test.ts +26 -2
  90. package/components/identity.tokens/source/encrypt.ts +5 -1
  91. package/components/identity.tokens/source/types.ts +9 -2
  92. package/components/octets.storage/manifest.toa.yaml +0 -7
  93. package/documentation/access.md +27 -16
  94. package/documentation/authorities.md +53 -0
  95. package/documentation/cache.md +8 -1
  96. package/documentation/components.md +47 -22
  97. package/documentation/identity.md +17 -22
  98. package/documentation/io.md +56 -0
  99. package/documentation/protocol.md +3 -0
  100. package/documentation/query.md +17 -11
  101. package/documentation/require.md +15 -0
  102. package/documentation/tree.md +22 -4
  103. package/documentation/vary.md +14 -14
  104. package/features/access.feature +89 -47
  105. package/features/annotation.feature +2 -0
  106. package/features/authorities.basic.feature +141 -0
  107. package/features/authorities.feature +32 -0
  108. package/features/authorities.federation.feature +99 -0
  109. package/features/authorities.tokens.feature +118 -0
  110. package/features/body.feature +4 -0
  111. package/features/cache.feature +112 -5
  112. package/features/cors.feature +7 -2
  113. package/features/debug.feature +34 -0
  114. package/features/directives.feature +5 -0
  115. package/features/dynamic.feature +18 -7
  116. package/features/errors.feature +18 -4
  117. package/features/etag.feature +18 -1
  118. package/features/identity.bans.feature +137 -0
  119. package/features/identity.basic.feature +142 -19
  120. package/features/identity.feature +7 -2
  121. package/features/identity.federation.feature +67 -14
  122. package/features/identity.roles.feature +220 -4
  123. package/features/identity.tokens.feature +57 -4
  124. package/features/io.feature +205 -0
  125. package/features/octets.entries.feature +10 -0
  126. package/features/octets.feature +60 -64
  127. package/features/octets.meta.feature +7 -3
  128. package/features/octets.workflows.feature +14 -0
  129. package/features/probes.feature +14 -0
  130. package/features/{queries.feature → query.feature} +50 -3
  131. package/features/require.feature +67 -0
  132. package/features/response.feature +12 -3
  133. package/features/routes.feature +25 -12
  134. package/features/steps/Database.ts +17 -10
  135. package/features/steps/Gateway.ts +23 -6
  136. package/features/steps/IdP.ts +28 -23
  137. package/features/steps/components/echo/manifest.toa.yaml +5 -1
  138. package/features/steps/components/echo/operations/identity.js +7 -0
  139. package/features/steps/components/pots/manifest.toa.yaml +2 -0
  140. package/features/steps/components/users.properties/manifest.toa.yaml +2 -1
  141. package/features/streams.feature +1 -0
  142. package/features/timing.feature +27 -1
  143. package/features/vary.feature +105 -3
  144. package/package.json +12 -11
  145. package/readme.md +19 -14
  146. package/schemas/annotation.cos.yaml +1 -1
  147. package/schemas/io/input.cos.yaml +3 -0
  148. package/schemas/io/message.cos.yaml +5 -0
  149. package/schemas/io/output.cos.yaml +5 -0
  150. package/source/Annotation.ts +3 -3
  151. package/source/Context.ts +6 -4
  152. package/source/Directive.test.ts +4 -4
  153. package/source/Directive.ts +11 -38
  154. package/source/Endpoint.ts +43 -8
  155. package/source/Factory.ts +11 -7
  156. package/source/Gateway.ts +16 -44
  157. package/source/HTTP/Context.ts +24 -2
  158. package/source/HTTP/Server.ts +56 -43
  159. package/source/HTTP/exceptions.ts +7 -1
  160. package/source/HTTP/messages.ts +1 -1
  161. package/source/Mapping.ts +6 -1
  162. package/source/Query.test.ts +1 -1
  163. package/source/Query.ts +35 -24
  164. package/source/RTD/Context.ts +7 -10
  165. package/source/RTD/Directives.ts +28 -4
  166. package/source/RTD/Endpoint.ts +6 -4
  167. package/source/RTD/Match.ts +2 -7
  168. package/source/RTD/Method.ts +7 -13
  169. package/source/RTD/Node.ts +13 -14
  170. package/source/RTD/Tree.ts +17 -16
  171. package/source/RTD/factory.ts +3 -6
  172. package/source/Tenant.ts +0 -8
  173. package/source/deployment.ts +32 -22
  174. package/source/directives/auth/Authorization.ts +38 -19
  175. package/source/directives/auth/Delegate.ts +42 -0
  176. package/source/directives/auth/Incept.ts +3 -2
  177. package/source/directives/auth/Role.test.ts +53 -6
  178. package/source/directives/auth/Role.ts +22 -14
  179. package/source/directives/auth/types.ts +1 -1
  180. package/source/directives/cache/Cache.ts +15 -8
  181. package/source/directives/cache/Control.ts +42 -16
  182. package/source/directives/cors/CORS.ts +13 -7
  183. package/source/directives/dev/Development.ts +4 -4
  184. package/source/directives/index.ts +6 -4
  185. package/source/directives/io/Directive.ts +11 -0
  186. package/source/directives/io/IO.ts +43 -0
  187. package/source/directives/io/Input.ts +50 -0
  188. package/source/directives/io/Message.ts +1 -0
  189. package/source/directives/io/Output.ts +69 -0
  190. package/source/directives/io/index.ts +3 -0
  191. package/source/directives/io/schemas.ts +12 -0
  192. package/source/directives/octets/Context.ts +4 -3
  193. package/source/directives/octets/Delete.ts +4 -2
  194. package/source/directives/octets/Directive.ts +10 -0
  195. package/source/directives/octets/Fetch.ts +4 -3
  196. package/source/directives/octets/List.ts +4 -2
  197. package/source/directives/octets/Octets.ts +6 -8
  198. package/source/directives/octets/Store.ts +12 -4
  199. package/source/directives/octets/Workflow.ts +10 -3
  200. package/source/directives/octets/types.ts +0 -7
  201. package/source/directives/require/Directive.ts +5 -0
  202. package/source/directives/require/Headers.ts +20 -0
  203. package/source/directives/require/Require.ts +28 -0
  204. package/source/directives/require/index.ts +3 -0
  205. package/source/directives/vary/Directive.ts +2 -1
  206. package/source/directives/vary/Embed.ts +14 -8
  207. package/source/directives/vary/Vary.ts +7 -5
  208. package/source/directives/vary/embeddings/Authority.ts +8 -0
  209. package/source/directives/vary/embeddings/Embedding.ts +2 -1
  210. package/source/directives/vary/embeddings/Header.ts +8 -6
  211. package/source/directives/vary/embeddings/Language.ts +1 -1
  212. package/source/directives/vary/embeddings/Parameter.ts +14 -0
  213. package/source/directives/vary/embeddings/index.ts +6 -4
  214. package/source/exceptions.ts +22 -11
  215. package/source/root.ts +5 -0
  216. package/source/schemas.ts +1 -1
  217. package/transpiled/Annotation.d.ts +3 -3
  218. package/transpiled/Context.d.ts +6 -4
  219. package/transpiled/Directive.d.ts +4 -17
  220. package/transpiled/Directive.js +4 -7
  221. package/transpiled/Directive.js.map +1 -1
  222. package/transpiled/Endpoint.d.ts +5 -3
  223. package/transpiled/Endpoint.js +30 -5
  224. package/transpiled/Endpoint.js.map +1 -1
  225. package/transpiled/Factory.js +9 -4
  226. package/transpiled/Factory.js.map +1 -1
  227. package/transpiled/Gateway.d.ts +1 -4
  228. package/transpiled/Gateway.js +10 -26
  229. package/transpiled/Gateway.js.map +1 -1
  230. package/transpiled/HTTP/Context.d.ts +8 -1
  231. package/transpiled/HTTP/Context.js +15 -2
  232. package/transpiled/HTTP/Context.js.map +1 -1
  233. package/transpiled/HTTP/Server.d.ts +13 -2
  234. package/transpiled/HTTP/Server.js +41 -35
  235. package/transpiled/HTTP/Server.js.map +1 -1
  236. package/transpiled/HTTP/exceptions.d.ts +4 -1
  237. package/transpiled/HTTP/exceptions.js +7 -1
  238. package/transpiled/HTTP/exceptions.js.map +1 -1
  239. package/transpiled/HTTP/messages.js +1 -1
  240. package/transpiled/HTTP/messages.js.map +1 -1
  241. package/transpiled/Mapping.js +4 -1
  242. package/transpiled/Mapping.js.map +1 -1
  243. package/transpiled/Query.d.ts +1 -0
  244. package/transpiled/Query.js +21 -20
  245. package/transpiled/Query.js.map +1 -1
  246. package/transpiled/RTD/Context.d.ts +7 -6
  247. package/transpiled/RTD/Directives.d.ts +19 -4
  248. package/transpiled/RTD/Endpoint.d.ts +6 -4
  249. package/transpiled/RTD/Match.d.ts +2 -4
  250. package/transpiled/RTD/Method.d.ts +7 -7
  251. package/transpiled/RTD/Method.js.map +1 -1
  252. package/transpiled/RTD/Node.d.ts +4 -6
  253. package/transpiled/RTD/Node.js +2 -1
  254. package/transpiled/RTD/Node.js.map +1 -1
  255. package/transpiled/RTD/Tree.d.ts +6 -6
  256. package/transpiled/RTD/Tree.js +4 -1
  257. package/transpiled/RTD/Tree.js.map +1 -1
  258. package/transpiled/RTD/factory.d.ts +2 -4
  259. package/transpiled/RTD/factory.js +1 -1
  260. package/transpiled/RTD/factory.js.map +1 -1
  261. package/transpiled/Tenant.d.ts +0 -1
  262. package/transpiled/Tenant.js +0 -6
  263. package/transpiled/Tenant.js.map +1 -1
  264. package/transpiled/deployment.d.ts +1 -1
  265. package/transpiled/deployment.js +28 -20
  266. package/transpiled/deployment.js.map +1 -1
  267. package/transpiled/directives/auth/Authorization.d.ts +2 -3
  268. package/transpiled/directives/auth/Authorization.js +26 -12
  269. package/transpiled/directives/auth/Authorization.js.map +1 -1
  270. package/transpiled/directives/auth/Delegate.d.ts +10 -0
  271. package/transpiled/directives/auth/Delegate.js +34 -0
  272. package/transpiled/directives/auth/Delegate.js.map +1 -0
  273. package/transpiled/directives/auth/Incept.js +3 -2
  274. package/transpiled/directives/auth/Incept.js.map +1 -1
  275. package/transpiled/directives/auth/Role.d.ts +4 -1
  276. package/transpiled/directives/auth/Role.js +20 -14
  277. package/transpiled/directives/auth/Role.js.map +1 -1
  278. package/transpiled/directives/cache/Cache.d.ts +5 -5
  279. package/transpiled/directives/cache/Cache.js +10 -4
  280. package/transpiled/directives/cache/Cache.js.map +1 -1
  281. package/transpiled/directives/cache/Control.d.ts +2 -1
  282. package/transpiled/directives/cache/Control.js +29 -12
  283. package/transpiled/directives/cache/Control.js.map +1 -1
  284. package/transpiled/directives/cors/CORS.d.ts +2 -3
  285. package/transpiled/directives/cors/CORS.js +13 -7
  286. package/transpiled/directives/cors/CORS.js.map +1 -1
  287. package/transpiled/directives/dev/Development.d.ts +3 -3
  288. package/transpiled/directives/dev/Development.js +1 -1
  289. package/transpiled/directives/dev/Development.js.map +1 -1
  290. package/transpiled/directives/index.d.ts +2 -2
  291. package/transpiled/directives/index.js +5 -3
  292. package/transpiled/directives/index.js.map +1 -1
  293. package/transpiled/directives/io/Directive.d.ts +8 -0
  294. package/transpiled/directives/io/Directive.js +3 -0
  295. package/transpiled/directives/io/Directive.js.map +1 -0
  296. package/transpiled/directives/io/IO.d.ts +9 -0
  297. package/transpiled/directives/io/IO.js +33 -0
  298. package/transpiled/directives/io/IO.js.map +1 -0
  299. package/transpiled/directives/io/Input.d.ts +11 -0
  300. package/transpiled/directives/{octets/Permute.js → io/Input.js} +33 -26
  301. package/transpiled/directives/io/Input.js.map +1 -0
  302. package/transpiled/directives/io/Message.d.ts +1 -0
  303. package/transpiled/directives/io/Message.js +3 -0
  304. package/transpiled/directives/io/Message.js.map +1 -0
  305. package/transpiled/directives/io/Output.d.ts +13 -0
  306. package/transpiled/directives/io/Output.js +76 -0
  307. package/transpiled/directives/io/Output.js.map +1 -0
  308. package/transpiled/directives/io/index.d.ts +2 -0
  309. package/transpiled/directives/io/index.js +6 -0
  310. package/transpiled/directives/io/index.js.map +1 -0
  311. package/transpiled/directives/io/schemas.d.ts +7 -0
  312. package/transpiled/directives/io/schemas.js +14 -0
  313. package/transpiled/directives/io/schemas.js.map +1 -0
  314. package/transpiled/directives/octets/Context.d.ts +3 -3
  315. package/transpiled/directives/octets/Context.js +4 -2
  316. package/transpiled/directives/octets/Context.js.map +1 -1
  317. package/transpiled/directives/octets/Delete.d.ts +3 -2
  318. package/transpiled/directives/octets/Delete.js +3 -1
  319. package/transpiled/directives/octets/Delete.js.map +1 -1
  320. package/transpiled/directives/octets/Directive.d.ts +8 -0
  321. package/transpiled/directives/octets/Directive.js +8 -0
  322. package/transpiled/directives/octets/Directive.js.map +1 -0
  323. package/transpiled/directives/octets/Fetch.d.ts +3 -2
  324. package/transpiled/directives/octets/Fetch.js +3 -1
  325. package/transpiled/directives/octets/Fetch.js.map +1 -1
  326. package/transpiled/directives/octets/List.d.ts +3 -2
  327. package/transpiled/directives/octets/List.js +3 -1
  328. package/transpiled/directives/octets/List.js.map +1 -1
  329. package/transpiled/directives/octets/Octets.d.ts +4 -4
  330. package/transpiled/directives/octets/Octets.js +2 -4
  331. package/transpiled/directives/octets/Octets.js.map +1 -1
  332. package/transpiled/directives/octets/Store.d.ts +3 -2
  333. package/transpiled/directives/octets/Store.js +10 -3
  334. package/transpiled/directives/octets/Store.js.map +1 -1
  335. package/transpiled/directives/octets/Workflow.d.ts +3 -2
  336. package/transpiled/directives/octets/Workflow.js +9 -2
  337. package/transpiled/directives/octets/Workflow.js.map +1 -1
  338. package/transpiled/directives/octets/types.d.ts +0 -5
  339. package/transpiled/directives/require/Directive.d.ts +4 -0
  340. package/transpiled/directives/require/Directive.js +3 -0
  341. package/transpiled/directives/require/Directive.js.map +1 -0
  342. package/transpiled/directives/require/Headers.d.ts +7 -0
  343. package/transpiled/directives/require/Headers.js +19 -0
  344. package/transpiled/directives/require/Headers.js.map +1 -0
  345. package/transpiled/directives/require/Require.d.ts +9 -0
  346. package/transpiled/directives/require/Require.js +27 -0
  347. package/transpiled/directives/require/Require.js.map +1 -0
  348. package/transpiled/directives/require/index.d.ts +2 -0
  349. package/transpiled/directives/require/index.js +6 -0
  350. package/transpiled/directives/require/index.js.map +1 -0
  351. package/transpiled/directives/vary/Directive.d.ts +2 -1
  352. package/transpiled/directives/vary/Embed.d.ts +2 -1
  353. package/transpiled/directives/vary/Embed.js +8 -6
  354. package/transpiled/directives/vary/Embed.js.map +1 -1
  355. package/transpiled/directives/vary/Vary.d.ts +3 -3
  356. package/transpiled/directives/vary/Vary.js +3 -3
  357. package/transpiled/directives/vary/Vary.js.map +1 -1
  358. package/transpiled/directives/vary/embeddings/Authority.d.ts +5 -0
  359. package/transpiled/directives/vary/embeddings/Authority.js +10 -0
  360. package/transpiled/directives/vary/embeddings/Authority.js.map +1 -0
  361. package/transpiled/directives/vary/embeddings/Embedding.d.ts +2 -1
  362. package/transpiled/directives/vary/embeddings/Header.js +8 -6
  363. package/transpiled/directives/vary/embeddings/Header.js.map +1 -1
  364. package/transpiled/directives/vary/embeddings/Language.js +1 -1
  365. package/transpiled/directives/vary/embeddings/Language.js.map +1 -1
  366. package/transpiled/directives/vary/embeddings/Parameter.d.ts +7 -0
  367. package/transpiled/directives/vary/embeddings/Parameter.js +14 -0
  368. package/transpiled/directives/vary/embeddings/Parameter.js.map +1 -0
  369. package/transpiled/directives/vary/embeddings/index.d.ts +2 -2
  370. package/transpiled/directives/vary/embeddings/index.js +8 -4
  371. package/transpiled/directives/vary/embeddings/index.js.map +1 -1
  372. package/transpiled/exceptions.d.ts +3 -2
  373. package/transpiled/exceptions.js +13 -7
  374. package/transpiled/exceptions.js.map +1 -1
  375. package/transpiled/root.js +5 -0
  376. package/transpiled/root.js.map +1 -1
  377. package/transpiled/schemas.d.ts +1 -1
  378. package/transpiled/schemas.js +2 -2
  379. package/transpiled/schemas.js.map +1 -1
  380. package/transpiled/tsconfig.tsbuildinfo +1 -1
  381. package/components/identity.basic/operations/create.d.ts +0 -10
  382. package/components/identity.basic/operations/create.js +0 -10
  383. package/components/identity.basic/operations/create.js.map +0 -1
  384. package/components/identity.basic/source/create.ts +0 -18
  385. package/components/identity.federation/operations/create.d.ts +0 -10
  386. package/components/identity.federation/operations/create.js.map +0 -1
  387. package/components/identity.federation/operations/schemas.d.ts +0 -59
  388. package/components/identity.federation/operations/schemas.js +0 -9
  389. package/components/identity.federation/operations/schemas.js.map +0 -1
  390. package/components/identity.federation/operations/types.js.map +0 -1
  391. package/components/identity.federation/source/schemas.ts +0 -61
  392. package/components/octets.storage/operations/permute.js +0 -7
  393. package/source/HTTP/Server.test.ts +0 -126
  394. package/source/directives/octets/Permute.ts +0 -43
  395. package/transpiled/directives/octets/Permute.d.ts +0 -10
  396. package/transpiled/directives/octets/Permute.js.map +0 -1
@@ -13,11 +13,13 @@ 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:
19
20
  """
20
21
  GET /pots/pot/?id=99988d785d7d445cad45dbf8531f560b HTTP/1.1
22
+ host: nex.toa.io
21
23
  accept: application/yaml
22
24
  """
23
25
  Then the following reply is sent:
@@ -35,11 +37,13 @@ Feature: Queries
35
37
  """yaml
36
38
  exposition:
37
39
  /:
40
+ io:output: true
38
41
  GET: enumerate
39
42
  """
40
43
  When the following request is received:
41
44
  """
42
45
  GET /pots/?criteria=volume<300&limit=10 HTTP/1.1
46
+ host: nex.toa.io
43
47
  accept: application/yaml
44
48
  """
45
49
  Then the following reply is sent:
@@ -60,11 +64,13 @@ Feature: Queries
60
64
  """yaml
61
65
  exposition:
62
66
  /:
67
+ io:output: true
63
68
  GET: enumerate
64
69
  """
65
70
  When the following request is received:
66
71
  """
67
72
  GET /pots/?omit=1&limit=2 HTTP/1.1
73
+ host: nex.toa.io
68
74
  accept: application/yaml
69
75
  """
70
76
  Then the following reply is sent:
@@ -85,11 +91,13 @@ Feature: Queries
85
91
  """yaml
86
92
  exposition:
87
93
  /:
94
+ io:output: true
88
95
  GET: enumerate
89
96
  """
90
97
  When the following request is received:
91
98
  """
92
99
  GET /pots/?sort=volume:desc&limit=2 HTTP/1.1
100
+ host: nex.toa.io
93
101
  accept: application/yaml
94
102
  """
95
103
  Then the following reply is sent:
@@ -105,16 +113,18 @@ Feature: Queries
105
113
  volume: 300
106
114
  """
107
115
 
108
- Scenario: Request to a route with a path variable
116
+ Scenario: Request to a route with path variable
109
117
  Given the `pots` is running with the following manifest:
110
118
  """yaml
111
119
  exposition:
112
120
  /:id:
121
+ io:output: true
113
122
  GET: observe
114
123
  """
115
124
  When the following request is received:
116
125
  """
117
126
  GET /pots/99988d785d7d445cad45dbf8531f560b/ HTTP/1.1
127
+ host: nex.toa.io
118
128
  accept: application/yaml
119
129
  """
120
130
  Then the following reply is sent:
@@ -127,11 +137,43 @@ Feature: Queries
127
137
  volume: 200
128
138
  """
129
139
 
130
- Scenario: Request to a route with predefined criretia
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
+
171
+ Scenario: Request to a route with predefined criteria
131
172
  Given the `pots` is running with the following manifest:
132
173
  """yaml
133
174
  exposition:
134
175
  /big:
176
+ io:output: true
135
177
  GET:
136
178
  endpoint: enumerate
137
179
  query:
@@ -140,6 +182,7 @@ Feature: Queries
140
182
  When the following request is received:
141
183
  """
142
184
  GET /pots/big/ HTTP/1.1
185
+ host: nex.toa.io
143
186
  accept: application/yaml
144
187
  """
145
188
  Then the following reply is sent:
@@ -155,11 +198,12 @@ Feature: Queries
155
198
  volume: 400
156
199
  """
157
200
 
158
- Scenario: Request to a route with combined criteria
201
+ Scenario: Request to a route with open criteria
159
202
  Given the `pots` is running with the following manifest:
160
203
  """yaml
161
204
  exposition:
162
205
  /big:
206
+ io:output: true
163
207
  GET:
164
208
  endpoint: enumerate
165
209
  query:
@@ -168,6 +212,7 @@ Feature: Queries
168
212
  When the following request is received:
169
213
  """
170
214
  GET /pots/big/?criteria=temperature>50 HTTP/1.1
215
+ host: nex.toa.io
171
216
  accept: application/yaml
172
217
  """
173
218
  Then the following reply is sent:
@@ -186,6 +231,7 @@ Feature: Queries
186
231
  """yaml
187
232
  exposition:
188
233
  /hottest2:
234
+ io:output: true
189
235
  GET:
190
236
  endpoint: enumerate
191
237
  query:
@@ -196,6 +242,7 @@ Feature: Queries
196
242
  When the following request is received:
197
243
  """
198
244
  GET /pots/hottest2/ HTTP/1.1
245
+ host: nex.toa.io
199
246
  accept: application/yaml
200
247
  """
201
248
  Then the following reply is sent:
@@ -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 |
@@ -4,13 +4,16 @@ Feature: Response
4
4
  Given the annotation:
5
5
  """yaml
6
6
  /:
7
+ io:output: true
7
8
  GET:
8
9
  anonymous: true
9
- dev:stub: hello
10
+ dev:stub:
11
+ hello: world
10
12
  """
11
13
  When the following request is received:
12
14
  """
13
15
  GET / HTTP/1.1
16
+ host: nex.toa.io
14
17
  accept: application/json
15
18
  """
16
19
  Then the following reply is sent:
@@ -18,6 +21,8 @@ Feature: Response
18
21
  200 OK
19
22
  content-type: application/json
20
23
  vary: accept
24
+
25
+ {"hello":"world"}
21
26
  """
22
27
 
23
28
  Scenario: Error as YAML
@@ -25,16 +30,18 @@ Feature: Response
25
30
  """yaml
26
31
  exposition:
27
32
  /:
33
+ io:output: true
28
34
  GET: error
29
35
  """
30
36
  When the following request is received:
31
37
  """
32
38
  GET /echo/ HTTP/1.1
39
+ host: nex.toa.io
33
40
  accept: application/yaml
34
41
  """
35
42
  Then the following reply is sent:
36
43
  """
37
- 409 Conflict
44
+ 422 Unprocessable Entity
38
45
  content-type: application/yaml
39
46
 
40
47
  code: CODE
@@ -46,16 +53,18 @@ Feature: Response
46
53
  """yaml
47
54
  exposition:
48
55
  /:
56
+ io:output: true
49
57
  GET: error
50
58
  """
51
59
  When the following request is received:
52
60
  """
53
61
  GET /echo/ HTTP/1.1
62
+ host: nex.toa.io
54
63
  accept: application/msgpack
55
64
  """
56
65
  Then the following reply is sent:
57
66
  """
58
- 409 Conflict
67
+ 422 Unprocessable Entity
59
68
  content-type: application/msgpack
60
69
  """
61
70
  And response body contains MessagePack-encoded value:
@@ -6,16 +6,19 @@ Feature: Routes
6
6
  namespace: basic
7
7
 
8
8
  exposition:
9
- /strict:
10
- GET:
11
- endpoint: greet
12
- /shortcuts:
13
- /operation:
14
- GET: greet
9
+ /:
10
+ io:output: true
11
+ /strict:
12
+ GET:
13
+ endpoint: greet
14
+ /shortcuts:
15
+ /operation:
16
+ GET: greet
15
17
  """
16
18
  When the following request is received:
17
19
  """
18
20
  GET /basic/greeter<route> HTTP/1.1
21
+ host: nex.toa.io
19
22
  accept: text/plain
20
23
  """
21
24
  Then the following reply is sent:
@@ -34,11 +37,13 @@ Feature: Routes
34
37
  """yaml
35
38
  exposition:
36
39
  /:
40
+ io:output: true
37
41
  GET: greet
38
42
  """
39
43
  When the following request is received:
40
44
  """
41
45
  GET /greeter/ HTTP/1.1
46
+ host: nex.toa.io
42
47
  accept: text/plain
43
48
  """
44
49
  Then the following reply is sent:
@@ -52,14 +57,17 @@ Feature: Routes
52
57
  Given the `greeter` is running with the following manifest:
53
58
  """yaml
54
59
  exposition:
55
- /*:
56
- GET: greet
57
- /foo/*/bar:
58
- GET: greet
60
+ /:
61
+ io:output: true
62
+ /*:
63
+ GET: greet
64
+ /foo/*/bar:
65
+ GET: greet
59
66
  """
60
67
  When the following request is received:
61
68
  """
62
69
  GET /greeter/baz/ HTTP/1.1
70
+ host: nex.toa.io
63
71
  accept: text/plain
64
72
  """
65
73
  Then the following reply is sent:
@@ -71,6 +79,7 @@ Feature: Routes
71
79
  When the following request is received:
72
80
  """
73
81
  GET /greeter/baz/qux/ HTTP/1.1
82
+ host: nex.toa.io
74
83
  """
75
84
  Then the following reply is sent:
76
85
  """
@@ -79,6 +88,7 @@ Feature: Routes
79
88
  When the following request is received:
80
89
  """
81
90
  GET /greeter/foo/baz/bar/ HTTP/1.1
91
+ host: nex.toa.io
82
92
  accept: text/plain
83
93
  """
84
94
  Then the following reply is sent:
@@ -89,22 +99,24 @@ Feature: Routes
89
99
  """
90
100
 
91
101
  Scenario: Routes with naming conflicts
92
- Given the Gateway is running
93
- And the `users` is running with the following manifest:
102
+ Given the `users` is running with the following manifest:
94
103
  """yaml
95
104
  exposition:
96
105
  /:
106
+ io:output: true
97
107
  POST: create
98
108
  """
99
109
  And the `users.properties` is running with the following manifest:
100
110
  """yaml
101
111
  exposition:
102
112
  /:id:
113
+ io:output: true
103
114
  GET: observe
104
115
  """
105
116
  When the following request is received:
106
117
  """
107
118
  GET /users/properties/b5534021e30042259badffbd1831e472/ HTTP/1.1
119
+ host: nex.toa.io
108
120
  accept: application/yaml
109
121
  """
110
122
  Then the following reply is sent:
@@ -116,6 +128,7 @@ Feature: Routes
116
128
  When the following request is received:
117
129
  """
118
130
  POST /users/ HTTP/1.1
131
+ host: nex.toa.io
119
132
  content-type: application/yaml
120
133
 
121
134
  name: Alice
@@ -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'
@@ -14,7 +14,8 @@ export class IdP {
14
14
  private static privateKey?: crypto.KeyObject
15
15
  private static issuer?: string
16
16
 
17
- public constructor (private readonly captures: Captures) {}
17
+ public constructor (private readonly captures: Captures) {
18
+ }
18
19
 
19
20
  @afterAll()
20
21
  public static async stop (): Promise<void> {
@@ -29,14 +30,21 @@ export class IdP {
29
30
  if (IdP.server instanceof http.Server) return
30
31
 
31
32
  // creating the key
32
- const { publicKey, privateKey } = await util.promisify(crypto.generateKeyPair)('rsa', {
33
+ const {
34
+ publicKey,
35
+ privateKey
36
+ } = await util.promisify(crypto.generateKeyPair)('rsa', {
33
37
  modulusLength: 2048
34
38
  })
35
39
 
36
40
  IdP.privateKey = privateKey
37
41
 
38
42
  const jwk = JSON.stringify({
39
- keys: [{ use: 'sig', alg: 'RS256', ...publicKey.export({ format: 'jwk' }) }]
43
+ keys: [{
44
+ use: 'sig',
45
+ alg: 'RS256',
46
+ ...publicKey.export({ format: 'jwk' })
47
+ }]
40
48
  })
41
49
 
42
50
  const JWK_URL = '/.well-known/jwks'
@@ -54,24 +62,23 @@ export class IdP {
54
62
  response.end(jwk)
55
63
  break
56
64
 
57
- case '/.well-known/openid-configuration':
58
- {
59
- const openIdConfiguration = JSON.stringify({
60
- issuer: IdP.issuer,
61
- jwks_uri: IdP.issuer + JWK_URL,
62
- response_types_supported: ['id_token'],
63
- subject_types_supported: ['public'],
64
- id_token_signing_alg_values_supported: ['RS256'],
65
- scopes_supported: ['openid']
66
- })
67
-
68
- response.writeHead(200, {
69
- 'Content-Type': 'application/json',
70
- 'Cache-Control': 'public, max-age=3600',
71
- 'Content-Length': openIdConfiguration.length
72
- })
73
- response.end(openIdConfiguration)
74
- }
65
+ case '/.well-known/openid-configuration': {
66
+ const openIdConfiguration = JSON.stringify({
67
+ issuer: IdP.issuer,
68
+ jwks_uri: IdP.issuer + JWK_URL,
69
+ response_types_supported: ['id_token'],
70
+ subject_types_supported: ['public'],
71
+ id_token_signing_alg_values_supported: ['RS256'],
72
+ scopes_supported: ['openid']
73
+ })
74
+
75
+ response.writeHead(200, {
76
+ 'Content-Type': 'application/json',
77
+ 'Cache-Control': 'public, max-age=3600',
78
+ 'Content-Length': openIdConfiguration.length
79
+ })
80
+ response.end(openIdConfiguration)
81
+ }
75
82
 
76
83
  break
77
84
 
@@ -120,8 +127,6 @@ export class IdP {
120
127
 
121
128
  @given('the IDP {word} token for {word} is issued with following secret:')
122
129
  public async issueSymmetricToken (alg: string, user: string, secret: string): Promise<void> {
123
- console.log('Sym token for %s with secret "%s"', user, secret)
124
-
125
130
  const jwt = [
126
131
  {
127
132
  typ: 'JWT',
@@ -1,5 +1,4 @@
1
1
  name: echo
2
- version: 0.0.0
3
2
 
4
3
  operations:
5
4
  compute:
@@ -8,3 +7,8 @@ operations:
8
7
  affect:
9
8
  input:
10
9
  name*: string
10
+ identity:
11
+ input:
12
+ identity:
13
+ id: string
14
+ roles: [string]
@@ -0,0 +1,7 @@
1
+ 'use strict'
2
+
3
+ function computation (input) {
4
+ return input
5
+ }
6
+
7
+ exports.computation = computation
@@ -14,11 +14,13 @@ operations:
14
14
  input:
15
15
  title*: .
16
16
  volume*: .
17
+ temperature: .
17
18
  transit:
18
19
  concurrency: retry
19
20
  input:
20
21
  title: .
21
22
  volume: .
23
+ temperature: .
22
24
  observe:
23
25
  output:
24
26
  id: string
@@ -1,10 +1,11 @@
1
1
  namespace: users
2
2
  name: properties
3
+ version: 0.0.0
3
4
 
4
5
  entity:
5
6
  schema:
6
7
  newbie: false
7
- dependent: true
8
+ associated: true
8
9
 
9
10
  operations:
10
11
  transit:
@@ -10,6 +10,7 @@ Feature: Reply streams
10
10
  When the following request is received:
11
11
  """
12
12
  POST /sequences/ HTTP/1.1
13
+ host: nex.toa.io
13
14
  content-type: text/plain
14
15
  accept: text/plain
15
16