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

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 (398) 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.test.ts +38 -2
  161. package/source/HTTP/messages.ts +7 -3
  162. package/source/Mapping.ts +6 -1
  163. package/source/Query.test.ts +1 -1
  164. package/source/Query.ts +35 -24
  165. package/source/RTD/Context.ts +7 -10
  166. package/source/RTD/Directives.ts +28 -4
  167. package/source/RTD/Endpoint.ts +6 -4
  168. package/source/RTD/Match.ts +2 -7
  169. package/source/RTD/Method.ts +7 -13
  170. package/source/RTD/Node.ts +13 -14
  171. package/source/RTD/Tree.ts +17 -16
  172. package/source/RTD/factory.ts +3 -6
  173. package/source/Tenant.ts +0 -8
  174. package/source/deployment.ts +32 -22
  175. package/source/directives/auth/Authorization.ts +38 -19
  176. package/source/directives/auth/Delegate.ts +42 -0
  177. package/source/directives/auth/Incept.ts +3 -2
  178. package/source/directives/auth/Role.test.ts +53 -6
  179. package/source/directives/auth/Role.ts +22 -14
  180. package/source/directives/auth/types.ts +1 -1
  181. package/source/directives/cache/Cache.ts +15 -8
  182. package/source/directives/cache/Control.ts +42 -16
  183. package/source/directives/cors/CORS.ts +13 -7
  184. package/source/directives/dev/Development.ts +4 -4
  185. package/source/directives/index.ts +6 -4
  186. package/source/directives/io/Directive.ts +11 -0
  187. package/source/directives/io/IO.ts +43 -0
  188. package/source/directives/io/Input.ts +50 -0
  189. package/source/directives/io/Message.ts +1 -0
  190. package/source/directives/io/Output.ts +69 -0
  191. package/source/directives/io/index.ts +3 -0
  192. package/source/directives/io/schemas.ts +12 -0
  193. package/source/directives/octets/Context.ts +4 -3
  194. package/source/directives/octets/Delete.ts +4 -2
  195. package/source/directives/octets/Directive.ts +10 -0
  196. package/source/directives/octets/Fetch.ts +4 -3
  197. package/source/directives/octets/List.ts +4 -2
  198. package/source/directives/octets/Octets.ts +6 -8
  199. package/source/directives/octets/Store.ts +12 -4
  200. package/source/directives/octets/Workflow.ts +10 -3
  201. package/source/directives/octets/types.ts +0 -7
  202. package/source/directives/require/Directive.ts +5 -0
  203. package/source/directives/require/Headers.ts +20 -0
  204. package/source/directives/require/Require.ts +28 -0
  205. package/source/directives/require/index.ts +3 -0
  206. package/source/directives/vary/Directive.ts +2 -1
  207. package/source/directives/vary/Embed.ts +14 -8
  208. package/source/directives/vary/Vary.ts +7 -5
  209. package/source/directives/vary/embeddings/Authority.ts +8 -0
  210. package/source/directives/vary/embeddings/Embedding.ts +2 -1
  211. package/source/directives/vary/embeddings/Header.ts +8 -6
  212. package/source/directives/vary/embeddings/Language.ts +1 -1
  213. package/source/directives/vary/embeddings/Parameter.ts +14 -0
  214. package/source/directives/vary/embeddings/index.ts +6 -4
  215. package/source/exceptions.ts +22 -11
  216. package/source/root.ts +5 -0
  217. package/source/schemas.ts +1 -1
  218. package/transpiled/Annotation.d.ts +3 -3
  219. package/transpiled/Context.d.ts +6 -4
  220. package/transpiled/Directive.d.ts +4 -17
  221. package/transpiled/Directive.js +4 -7
  222. package/transpiled/Directive.js.map +1 -1
  223. package/transpiled/Endpoint.d.ts +5 -3
  224. package/transpiled/Endpoint.js +30 -5
  225. package/transpiled/Endpoint.js.map +1 -1
  226. package/transpiled/Factory.js +9 -4
  227. package/transpiled/Factory.js.map +1 -1
  228. package/transpiled/Gateway.d.ts +1 -4
  229. package/transpiled/Gateway.js +10 -26
  230. package/transpiled/Gateway.js.map +1 -1
  231. package/transpiled/HTTP/Context.d.ts +8 -1
  232. package/transpiled/HTTP/Context.js +15 -2
  233. package/transpiled/HTTP/Context.js.map +1 -1
  234. package/transpiled/HTTP/Server.d.ts +13 -2
  235. package/transpiled/HTTP/Server.js +41 -35
  236. package/transpiled/HTTP/Server.js.map +1 -1
  237. package/transpiled/HTTP/exceptions.d.ts +4 -1
  238. package/transpiled/HTTP/exceptions.js +7 -1
  239. package/transpiled/HTTP/exceptions.js.map +1 -1
  240. package/transpiled/HTTP/messages.d.ts +1 -0
  241. package/transpiled/HTTP/messages.js +9 -3
  242. package/transpiled/HTTP/messages.js.map +1 -1
  243. package/transpiled/Mapping.js +4 -1
  244. package/transpiled/Mapping.js.map +1 -1
  245. package/transpiled/Query.d.ts +1 -0
  246. package/transpiled/Query.js +21 -20
  247. package/transpiled/Query.js.map +1 -1
  248. package/transpiled/RTD/Context.d.ts +7 -6
  249. package/transpiled/RTD/Directives.d.ts +19 -4
  250. package/transpiled/RTD/Endpoint.d.ts +6 -4
  251. package/transpiled/RTD/Match.d.ts +2 -4
  252. package/transpiled/RTD/Method.d.ts +7 -7
  253. package/transpiled/RTD/Method.js.map +1 -1
  254. package/transpiled/RTD/Node.d.ts +4 -6
  255. package/transpiled/RTD/Node.js +2 -1
  256. package/transpiled/RTD/Node.js.map +1 -1
  257. package/transpiled/RTD/Tree.d.ts +6 -6
  258. package/transpiled/RTD/Tree.js +4 -1
  259. package/transpiled/RTD/Tree.js.map +1 -1
  260. package/transpiled/RTD/factory.d.ts +2 -4
  261. package/transpiled/RTD/factory.js +1 -1
  262. package/transpiled/RTD/factory.js.map +1 -1
  263. package/transpiled/Tenant.d.ts +0 -1
  264. package/transpiled/Tenant.js +0 -6
  265. package/transpiled/Tenant.js.map +1 -1
  266. package/transpiled/deployment.d.ts +1 -1
  267. package/transpiled/deployment.js +28 -20
  268. package/transpiled/deployment.js.map +1 -1
  269. package/transpiled/directives/auth/Authorization.d.ts +2 -3
  270. package/transpiled/directives/auth/Authorization.js +26 -12
  271. package/transpiled/directives/auth/Authorization.js.map +1 -1
  272. package/transpiled/directives/auth/Delegate.d.ts +10 -0
  273. package/transpiled/directives/auth/Delegate.js +34 -0
  274. package/transpiled/directives/auth/Delegate.js.map +1 -0
  275. package/transpiled/directives/auth/Incept.js +3 -2
  276. package/transpiled/directives/auth/Incept.js.map +1 -1
  277. package/transpiled/directives/auth/Role.d.ts +4 -1
  278. package/transpiled/directives/auth/Role.js +20 -14
  279. package/transpiled/directives/auth/Role.js.map +1 -1
  280. package/transpiled/directives/cache/Cache.d.ts +5 -5
  281. package/transpiled/directives/cache/Cache.js +10 -4
  282. package/transpiled/directives/cache/Cache.js.map +1 -1
  283. package/transpiled/directives/cache/Control.d.ts +2 -1
  284. package/transpiled/directives/cache/Control.js +29 -12
  285. package/transpiled/directives/cache/Control.js.map +1 -1
  286. package/transpiled/directives/cors/CORS.d.ts +2 -3
  287. package/transpiled/directives/cors/CORS.js +13 -7
  288. package/transpiled/directives/cors/CORS.js.map +1 -1
  289. package/transpiled/directives/dev/Development.d.ts +3 -3
  290. package/transpiled/directives/dev/Development.js +1 -1
  291. package/transpiled/directives/dev/Development.js.map +1 -1
  292. package/transpiled/directives/index.d.ts +2 -2
  293. package/transpiled/directives/index.js +5 -3
  294. package/transpiled/directives/index.js.map +1 -1
  295. package/transpiled/directives/io/Directive.d.ts +8 -0
  296. package/transpiled/directives/io/Directive.js +3 -0
  297. package/transpiled/directives/io/Directive.js.map +1 -0
  298. package/transpiled/directives/io/IO.d.ts +9 -0
  299. package/transpiled/directives/io/IO.js +33 -0
  300. package/transpiled/directives/io/IO.js.map +1 -0
  301. package/transpiled/directives/io/Input.d.ts +11 -0
  302. package/transpiled/directives/{octets/Permute.js → io/Input.js} +33 -26
  303. package/transpiled/directives/io/Input.js.map +1 -0
  304. package/transpiled/directives/io/Message.d.ts +1 -0
  305. package/transpiled/directives/io/Message.js +3 -0
  306. package/transpiled/directives/io/Message.js.map +1 -0
  307. package/transpiled/directives/io/Output.d.ts +13 -0
  308. package/transpiled/directives/io/Output.js +76 -0
  309. package/transpiled/directives/io/Output.js.map +1 -0
  310. package/transpiled/directives/io/index.d.ts +2 -0
  311. package/transpiled/directives/io/index.js +6 -0
  312. package/transpiled/directives/io/index.js.map +1 -0
  313. package/transpiled/directives/io/schemas.d.ts +7 -0
  314. package/transpiled/directives/io/schemas.js +14 -0
  315. package/transpiled/directives/io/schemas.js.map +1 -0
  316. package/transpiled/directives/octets/Context.d.ts +3 -3
  317. package/transpiled/directives/octets/Context.js +4 -2
  318. package/transpiled/directives/octets/Context.js.map +1 -1
  319. package/transpiled/directives/octets/Delete.d.ts +3 -2
  320. package/transpiled/directives/octets/Delete.js +3 -1
  321. package/transpiled/directives/octets/Delete.js.map +1 -1
  322. package/transpiled/directives/octets/Directive.d.ts +8 -0
  323. package/transpiled/directives/octets/Directive.js +8 -0
  324. package/transpiled/directives/octets/Directive.js.map +1 -0
  325. package/transpiled/directives/octets/Fetch.d.ts +3 -2
  326. package/transpiled/directives/octets/Fetch.js +3 -1
  327. package/transpiled/directives/octets/Fetch.js.map +1 -1
  328. package/transpiled/directives/octets/List.d.ts +3 -2
  329. package/transpiled/directives/octets/List.js +3 -1
  330. package/transpiled/directives/octets/List.js.map +1 -1
  331. package/transpiled/directives/octets/Octets.d.ts +4 -4
  332. package/transpiled/directives/octets/Octets.js +2 -4
  333. package/transpiled/directives/octets/Octets.js.map +1 -1
  334. package/transpiled/directives/octets/Store.d.ts +3 -2
  335. package/transpiled/directives/octets/Store.js +10 -3
  336. package/transpiled/directives/octets/Store.js.map +1 -1
  337. package/transpiled/directives/octets/Workflow.d.ts +3 -2
  338. package/transpiled/directives/octets/Workflow.js +9 -2
  339. package/transpiled/directives/octets/Workflow.js.map +1 -1
  340. package/transpiled/directives/octets/types.d.ts +0 -5
  341. package/transpiled/directives/require/Directive.d.ts +4 -0
  342. package/transpiled/directives/require/Directive.js +3 -0
  343. package/transpiled/directives/require/Directive.js.map +1 -0
  344. package/transpiled/directives/require/Headers.d.ts +7 -0
  345. package/transpiled/directives/require/Headers.js +19 -0
  346. package/transpiled/directives/require/Headers.js.map +1 -0
  347. package/transpiled/directives/require/Require.d.ts +9 -0
  348. package/transpiled/directives/require/Require.js +27 -0
  349. package/transpiled/directives/require/Require.js.map +1 -0
  350. package/transpiled/directives/require/index.d.ts +2 -0
  351. package/transpiled/directives/require/index.js +6 -0
  352. package/transpiled/directives/require/index.js.map +1 -0
  353. package/transpiled/directives/vary/Directive.d.ts +2 -1
  354. package/transpiled/directives/vary/Embed.d.ts +2 -1
  355. package/transpiled/directives/vary/Embed.js +8 -6
  356. package/transpiled/directives/vary/Embed.js.map +1 -1
  357. package/transpiled/directives/vary/Vary.d.ts +3 -3
  358. package/transpiled/directives/vary/Vary.js +3 -3
  359. package/transpiled/directives/vary/Vary.js.map +1 -1
  360. package/transpiled/directives/vary/embeddings/Authority.d.ts +5 -0
  361. package/transpiled/directives/vary/embeddings/Authority.js +10 -0
  362. package/transpiled/directives/vary/embeddings/Authority.js.map +1 -0
  363. package/transpiled/directives/vary/embeddings/Embedding.d.ts +2 -1
  364. package/transpiled/directives/vary/embeddings/Header.js +8 -6
  365. package/transpiled/directives/vary/embeddings/Header.js.map +1 -1
  366. package/transpiled/directives/vary/embeddings/Language.js +1 -1
  367. package/transpiled/directives/vary/embeddings/Language.js.map +1 -1
  368. package/transpiled/directives/vary/embeddings/Parameter.d.ts +7 -0
  369. package/transpiled/directives/vary/embeddings/Parameter.js +14 -0
  370. package/transpiled/directives/vary/embeddings/Parameter.js.map +1 -0
  371. package/transpiled/directives/vary/embeddings/index.d.ts +2 -2
  372. package/transpiled/directives/vary/embeddings/index.js +8 -4
  373. package/transpiled/directives/vary/embeddings/index.js.map +1 -1
  374. package/transpiled/exceptions.d.ts +3 -2
  375. package/transpiled/exceptions.js +13 -7
  376. package/transpiled/exceptions.js.map +1 -1
  377. package/transpiled/root.js +5 -0
  378. package/transpiled/root.js.map +1 -1
  379. package/transpiled/schemas.d.ts +1 -1
  380. package/transpiled/schemas.js +2 -2
  381. package/transpiled/schemas.js.map +1 -1
  382. package/transpiled/tsconfig.tsbuildinfo +1 -1
  383. package/components/identity.basic/operations/create.d.ts +0 -10
  384. package/components/identity.basic/operations/create.js +0 -10
  385. package/components/identity.basic/operations/create.js.map +0 -1
  386. package/components/identity.basic/source/create.ts +0 -18
  387. package/components/identity.federation/operations/create.d.ts +0 -10
  388. package/components/identity.federation/operations/create.js.map +0 -1
  389. package/components/identity.federation/operations/schemas.d.ts +0 -59
  390. package/components/identity.federation/operations/schemas.js +0 -9
  391. package/components/identity.federation/operations/schemas.js.map +0 -1
  392. package/components/identity.federation/operations/types.js.map +0 -1
  393. package/components/identity.federation/source/schemas.ts +0 -61
  394. package/components/octets.storage/operations/permute.js +0 -7
  395. package/source/HTTP/Server.test.ts +0 -126
  396. package/source/directives/octets/Permute.ts +0 -43
  397. package/transpiled/directives/octets/Permute.d.ts +0 -10
  398. package/transpiled/directives/octets/Permute.js.map +0 -1
@@ -1,12 +1,13 @@
1
+ @security
1
2
  Feature: Access authorization
2
3
 
3
4
  Background:
4
5
  Given the `identity.basic` database contains:
5
6
  # developer:secret
6
7
  # user:12345
7
- | _id | username | password |
8
- | efe3a65ebbee47ed95a73edd911ea328 | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O |
9
- | e8e4f9c2a68d419b861403d71fabc915 | user | $2b$10$Frszmrmsz9iwSXzBbRRMKeDVKsNxozkrLNSsN.SnVC.KPxLtQr/bK |
8
+ | _id | authority | username | password |
9
+ | efe3a65ebbee47ed95a73edd911ea328 | nex | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O |
10
+ | e8e4f9c2a68d419b861403d71fabc915 | nex | user | $2b$10$Frszmrmsz9iwSXzBbRRMKeDVKsNxozkrLNSsN.SnVC.KPxLtQr/bK |
10
11
  And the `identity.bans` database is empty
11
12
 
12
13
  Scenario: Deny by default
@@ -20,6 +21,7 @@ Feature: Access authorization
20
21
  When the following request is received:
21
22
  """
22
23
  GET / HTTP/1.1
24
+ host: nex.toa.io
23
25
  """
24
26
  Then the following reply is sent:
25
27
  """
@@ -30,6 +32,7 @@ Feature: Access authorization
30
32
  Given the annotation:
31
33
  """yaml
32
34
  /:
35
+ io:output: true
33
36
  auth:anonymous: true
34
37
  GET:
35
38
  dev:stub:
@@ -38,6 +41,7 @@ Feature: Access authorization
38
41
  When the following request is received:
39
42
  """
40
43
  GET / HTTP/1.1
44
+ host: nex.toa.io
41
45
  accept: application/yaml
42
46
  """
43
47
  Then the following reply is sent:
@@ -60,6 +64,7 @@ Feature: Access authorization
60
64
  When the following request is received:
61
65
  """
62
66
  GET / HTTP/1.1
67
+ host: nex.toa.io
63
68
  authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
64
69
  """
65
70
  Then the following reply is sent:
@@ -71,6 +76,7 @@ Feature: Access authorization
71
76
  Given the annotation:
72
77
  """yaml
73
78
  /:
79
+ io:output: true
74
80
  /:id:
75
81
  auth:id: id
76
82
  GET:
@@ -80,6 +86,7 @@ Feature: Access authorization
80
86
  When the following request is received:
81
87
  """
82
88
  GET /efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
89
+ host: nex.toa.io
83
90
  authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
84
91
  accept: application/yaml
85
92
  """
@@ -93,6 +100,7 @@ Feature: Access authorization
93
100
  When the following request is received:
94
101
  """
95
102
  GET /efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
103
+ host: nex.toa.io
96
104
  authorization: Basic dXNlcjoxMjM0NQ==
97
105
  accept: application/yaml
98
106
  """
@@ -109,6 +117,7 @@ Feature: Access authorization
109
117
  And the annotation:
110
118
  """yaml
111
119
  /:
120
+ io:output: true
112
121
  auth:role: developer
113
122
  GET:
114
123
  dev:stub:
@@ -118,6 +127,7 @@ Feature: Access authorization
118
127
  # identity with `developer` and `user` roles
119
128
  """
120
129
  GET / HTTP/1.1
130
+ host: nex.toa.io
121
131
  authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
122
132
  accept: application/yaml
123
133
  """
@@ -132,6 +142,7 @@ Feature: Access authorization
132
142
  # identity with no roles
133
143
  """
134
144
  GET / HTTP/1.1
145
+ host: nex.toa.io
135
146
  authorization: Basic dXNlcjoxMjM0NQ==
136
147
  """
137
148
  Then the following reply is sent:
@@ -146,6 +157,7 @@ Feature: Access authorization
146
157
  And the annotation:
147
158
  """yaml
148
159
  /:
160
+ io:output: true
149
161
  /:
150
162
  auth:role: developer:rust:junior # role scope matches
151
163
  /nested:
@@ -159,6 +171,7 @@ Feature: Access authorization
159
171
  When the following request is received:
160
172
  """
161
173
  GET /nested/ HTTP/1.1
174
+ host: nex.toa.io
162
175
  authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
163
176
  accept: text/plain
164
177
  """
@@ -172,6 +185,7 @@ Feature: Access authorization
172
185
  When the following request is received:
173
186
  """
174
187
  GET /javascript/ HTTP/1.1
188
+ host: nex.toa.io
175
189
  authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
176
190
  """
177
191
  Then the following reply is sent:
@@ -190,6 +204,7 @@ Feature: Access authorization
190
204
  - developer
191
205
  - admin
192
206
  GET:
207
+ io:output: true
193
208
  dev:stub:
194
209
  access: granted!
195
210
  """
@@ -197,6 +212,7 @@ Feature: Access authorization
197
212
  # identity with `developer` and `user` roles
198
213
  """
199
214
  GET / HTTP/1.1
215
+ host: nex.toa.io
200
216
  authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
201
217
  accept: application/yaml
202
218
  """
@@ -215,6 +231,7 @@ Feature: Access authorization
215
231
  And the annotation:
216
232
  """yaml
217
233
  /:
234
+ io:output: true
218
235
  /rust/:id:
219
236
  auth:rule:
220
237
  id: id
@@ -233,6 +250,7 @@ Feature: Access authorization
233
250
  When the following request is received:
234
251
  """
235
252
  GET /rust/efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
253
+ host: nex.toa.io
236
254
  authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
237
255
  accept: application/yaml
238
256
  """
@@ -246,6 +264,7 @@ Feature: Access authorization
246
264
  When the following request is received:
247
265
  """
248
266
  GET /javascript/efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
267
+ host: nex.toa.io
249
268
  authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
250
269
  """
251
270
  Then the following reply is sent:
@@ -257,6 +276,7 @@ Feature: Access authorization
257
276
  Given the annotation:
258
277
  """yaml
259
278
  /:
279
+ io:output: true
260
280
  /:id:
261
281
  auth:id: id
262
282
  GET:
@@ -265,8 +285,37 @@ Feature: Access authorization
265
285
  """
266
286
  When the following request is received:
267
287
  """
268
- GET /efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
269
- authorization: Token v3.local.9oEtVJkfRw4cOJ8M4DxuVuAN29dGT26XMYyPAoXtwrkdkiJVSVj46sMNAOdlxwKGszJZV_ReOL26dxDVlsQ7QAIuRhRPlvsHYNOhcD-LApoAXV0S3IK16EMoEv7tE9z70FCLC3WoIW9RIQ8PR3uZhAdhSgBilsVOpWrk4XtnfCIlVwhYMKu79a66oZZhV2Q7Kl3nfYsf84-6rAL_1H0MsqCDUHVXuIg
288
+ GET /identity/ HTTP/1.1
289
+ host: nex.toa.io
290
+ authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
291
+ accept: application/yaml
292
+ """
293
+ Then the following reply is sent:
294
+ """
295
+ 200 OK
296
+ authorization: Token ${{ developer.token }}
297
+
298
+ id: ${{ developer.id }}
299
+ """
300
+ When the following request is received:
301
+ """
302
+ GET /identity/ HTTP/1.1
303
+ host: nex.toa.io
304
+ authorization: Basic dXNlcjoxMjM0NQ==
305
+ accept: application/yaml
306
+ """
307
+ Then the following reply is sent:
308
+ """
309
+ 200 OK
310
+ authorization: Token ${{ user.token }}
311
+
312
+ id: ${{ user.id }}
313
+ """
314
+ When the following request is received:
315
+ """
316
+ GET /${{ developer.id }}/ HTTP/1.1
317
+ host: nex.toa.io
318
+ authorization: Token ${{ developer.token }}
270
319
  accept: application/yaml
271
320
  """
272
321
  Then the following reply is sent:
@@ -282,8 +331,9 @@ Feature: Access authorization
282
331
  """
283
332
  When the following request is received:
284
333
  """
285
- GET /efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
286
- authorization: Token v3.local.cjlxn4IJ9hI92KuksguzDx7_kYxgDFFGFnfNchf0cWnmos34dqX2XpTAUBd-LqgqfuH-lVGfNvjBUkw5JtHRBiIAVaPHF3Ncc0eafwgH2DPme9pndZL92fWryGnJ-sMHA28Q6UcXsIfhgd2JZ0n-585SBhwlosC3gKTcVHK7XNljeaTen4jZPw8uY-pdbsm6dDq3aKMzl8K78_BTTfiNPG2cI_aNuHw
334
+ GET /${{ user.id }}/ HTTP/1.1
335
+ host: nex.toa.io
336
+ authorization: Token ${{ developer.token }}
287
337
  accept: application/yaml
288
338
  """
289
339
  Then the following reply is sent:
@@ -295,6 +345,7 @@ Feature: Access authorization
295
345
  Given the annotation:
296
346
  """yaml
297
347
  /:
348
+ io:output: true
298
349
  auth:role: developer
299
350
  GET:
300
351
  dev:stub:
@@ -306,6 +357,7 @@ Feature: Access authorization
306
357
  When the following request is received:
307
358
  """
308
359
  GET / HTTP/1.1
360
+ host: nex.toa.io
309
361
  authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
310
362
  accept: application/yaml
311
363
  """
@@ -320,6 +372,7 @@ Feature: Access authorization
320
372
  When the following request is received:
321
373
  """
322
374
  GET / HTTP/1.1
375
+ host: nex.toa.io
323
376
  authorization: Token ${{ token }}
324
377
  accept: application/yaml
325
378
  """
@@ -335,6 +388,7 @@ Feature: Access authorization
335
388
  Given the annotation:
336
389
  """yaml
337
390
  /:
391
+ io:output: true
338
392
  /:id:
339
393
  auth:scheme: basic
340
394
  auth:id: id
@@ -345,6 +399,7 @@ Feature: Access authorization
345
399
  When the following request is received:
346
400
  """
347
401
  GET /efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
402
+ host: nex.toa.io
348
403
  authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
349
404
  accept: application/yaml
350
405
  """
@@ -358,6 +413,7 @@ Feature: Access authorization
358
413
  When the following request is received:
359
414
  """
360
415
  GET /efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
416
+ host: nex.toa.io
361
417
  authorization: Token v3.local.9oEtVJkfRw4cOJ8M4DxuVuAN29dGT26XMYyPAoXtwrkdkiJVSVj46sMNAOdlxwKGszJZV_ReOL26dxDVlsQ7QAIuRhRPlvsHYNOhcD-LApoAXV0S3IK16EMoEv7tE9z70FCLC3WoIW9RIQ8PR3uZhAdhSgBilsVOpWrk4XtnfCIlVwhYMKu79a66oZZhV2Q7Kl3nfYsf84-6rAL_1H0MsqCDUHVXuIg
362
418
  accept: text/plain
363
419
  """
@@ -374,11 +430,13 @@ Feature: Access authorization
374
430
 
375
431
  Given the annotation:
376
432
  """yaml
377
- anonymous: true
433
+ /:
434
+ anonymous: true
378
435
  """
379
436
  When the following request is received:
380
437
  """
381
438
  POST /identity/roles/efe3a65ebbee47ed95a73edd911ea328/ HTTP/1.1
439
+ host: nex.toa.io
382
440
  content-type: application/yaml
383
441
 
384
442
  role: developer
@@ -388,62 +446,46 @@ Feature: Access authorization
388
446
  401 Unauthorized
389
447
  """
390
448
 
391
- Scenario: Banning an Identity
449
+ Scenario: Authorization delegation
392
450
  Given the `identity.roles` database contains:
393
- | _id | identity | role |
394
- | 775a648d054e4ce1a65f8f17e5b51803 | efe3a65ebbee47ed95a73edd911ea328 | system |
395
- And the annotation:
396
- """yaml
397
- /:
398
- /:id:
399
- auth:id: id
400
- GET:
401
- dev:stub:
402
- access: granted!
403
- """
404
- And the `identity.tokens` configuration:
451
+ | _id | identity | role |
452
+ | 775a648d054e4ce1a65f8f17e5b51803 | efe3a65ebbee47ed95a73edd911ea328 | developer |
453
+ And the `echo` is running with the following manifest:
405
454
  """yaml
406
- refresh: 1
455
+ exposition:
456
+ /:
457
+ io:output: true
458
+ auth:delegate: identity
459
+ GET: identity
407
460
  """
408
461
  When the following request is received:
409
462
  """
410
- GET /e8e4f9c2a68d419b861403d71fabc915/ HTTP/1.1
411
- authorization: Basic dXNlcjoxMjM0NQ==
463
+ GET /echo/ HTTP/1.1
464
+ host: nex.toa.io
465
+ authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
466
+ accept: application/yaml
412
467
  """
413
468
  Then the following reply is sent:
414
469
  """
415
470
  200 OK
416
471
  authorization: Token ${{ token }}
417
- """
418
- When the following request is received:
419
- """
420
- PUT /identity/bans/e8e4f9c2a68d419b861403d71fabc915/ HTTP/1.1
421
- authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
422
- content-type: application/yaml
423
472
 
424
- banned: true
425
- """
426
- Then the following reply is sent:
427
- """
428
- 204 No Content
473
+ identity:
474
+ id: efe3a65ebbee47ed95a73edd911ea328
475
+ roles:
476
+ - developer
429
477
  """
430
- # accessing a resource with a banned Identity
431
478
  When the following request is received:
432
479
  """
433
- GET /e8e4f9c2a68d419b861403d71fabc915/ HTTP/1.1
434
- authorization: Basic dXNlcjoxMjM0NQ==
480
+ GET /echo/ HTTP/1.1
481
+ host: nex.toa.io
482
+ authorization: Token ${{ token }}
435
483
  """
436
484
  Then the following reply is sent:
437
485
  """
438
- 401 Unauthorized
439
- """
440
- Then after 1 second
441
- When the following request is received:
442
- """
443
- GET /e8e4f9c2a68d419b861403d71fabc915/ HTTP/1.1
444
- authorization: Token ${{ token }}
486
+ 200 OK
445
487
  """
446
- Then the following reply is sent:
488
+ And the reply does not contain:
447
489
  """
448
- 401 Unauthorized
490
+ authorization: Token
449
491
  """
@@ -4,6 +4,7 @@ Feature: Annotation
4
4
  Given the annotation:
5
5
  """yaml
6
6
  /:
7
+ io:output: true
7
8
  anonymous: true
8
9
  /foo:
9
10
  GET:
@@ -17,6 +18,7 @@ Feature: Annotation
17
18
  When the following request is received:
18
19
  """
19
20
  GET /foo/ HTTP/1.1
21
+ host: nex.toa.io
20
22
  accept: application/yaml
21
23
  """
22
24
  Then the following reply is sent:
@@ -0,0 +1,141 @@
1
+ Feature: Basic credentials with authorities
2
+
3
+ Scenario: Basic credentials are scoped to authorities
4
+ Given the annotation:
5
+ """yaml
6
+ authorities:
7
+ one: the.one.com
8
+ two: the.two.com
9
+ /:
10
+ /:id:
11
+ auth:id: id
12
+ io:output: true
13
+ GET:
14
+ dev:stub: Hello
15
+ """
16
+
17
+ # create basic credentials within the `one` authority
18
+ When the following request is received:
19
+ """
20
+ POST /identity/basic/ HTTP/1.1
21
+ host: the.one.com
22
+ content-type: application/yaml
23
+ accept: application/yaml
24
+
25
+ username: #{{ id | set one.username }}
26
+ password: #{{ password 8 | set one.password }}
27
+ """
28
+ Then the following reply is sent:
29
+ """
30
+ 201 Created
31
+
32
+ id: ${{ one.id }}
33
+ """
34
+
35
+ # create basic credentials within the `two` authority
36
+ When the following request is received:
37
+ """
38
+ POST /identity/basic/ HTTP/1.1
39
+ host: the.two.com
40
+ content-type: application/yaml
41
+ accept: application/yaml
42
+
43
+ username: #{{ id | set two.username }}
44
+ password: #{{ password 8 | set two.password }}
45
+ """
46
+ Then the following reply is sent:
47
+ """
48
+ 201 Created
49
+
50
+ id: ${{ two.id }}
51
+ """
52
+
53
+ # access the resource with the `one` authority
54
+ When the following request is received:
55
+ """
56
+ GET /${{ one.id }}/ HTTP/1.1
57
+ host: the.one.com
58
+ authorization: Basic #{{ basic one }}
59
+ """
60
+ Then the following reply is sent:
61
+ """
62
+ 200 OK
63
+ """
64
+ When the following request is received:
65
+ """
66
+ GET /${{ two.id }}/ HTTP/1.1
67
+ host: the.one.com
68
+ authorization: Basic #{{ basic two }}
69
+ """
70
+ Then the following reply is sent:
71
+ """
72
+ 401 Unauthorized
73
+ """
74
+
75
+ # access the resource with the `two` authority
76
+ When the following request is received:
77
+ """
78
+ GET /${{ one.id }}/ HTTP/1.1
79
+ host: the.two.com
80
+ authorization: Basic #{{ basic one }}
81
+ """
82
+ Then the following reply is sent:
83
+ """
84
+ 401 Unauthorized
85
+ """
86
+ When the following request is received:
87
+ """
88
+ GET /${{ two.id }}/ HTTP/1.1
89
+ host: the.two.com
90
+ authorization: Basic #{{ basic two }}
91
+ """
92
+ Then the following reply is sent:
93
+ """
94
+ 200 OK
95
+ """
96
+
97
+ # create `one` credentials in the `two` authority
98
+ When the following request is received:
99
+ """
100
+ POST /identity/basic/ HTTP/1.1
101
+ host: the.one.com
102
+ content-type: application/yaml
103
+ accept: application/yaml
104
+
105
+ username: ${{ one.username }}
106
+ password: ${{ one.password }}
107
+ """
108
+ Then the following reply is sent:
109
+ """
110
+ 409 Conflict
111
+ """
112
+ When the following request is received:
113
+ """
114
+ POST /identity/basic/ HTTP/1.1
115
+ host: the.two.com
116
+ content-type: application/yaml
117
+ accept: application/yaml
118
+
119
+ username: ${{ one.username }}
120
+ password: ${{ one.password }}
121
+ """
122
+ Then the following reply is sent:
123
+ """
124
+ 201 Created
125
+ """
126
+
127
+ # create `two` credentials in the `one` authority
128
+ When the following request is received:
129
+ """
130
+ POST /identity/basic/ HTTP/1.1
131
+ host: the.one.com
132
+ content-type: application/yaml
133
+ accept: application/yaml
134
+
135
+ username: ${{ two.username }}
136
+ password: ${{ two.password }}
137
+ """
138
+ Then the following reply is sent:
139
+ """
140
+ 201 Created
141
+ """
@@ -0,0 +1,32 @@
1
+ Feature: Authorities
2
+
3
+ Scenario: Accessing an authority
4
+ Given the annotation:
5
+ """yaml
6
+ authorities:
7
+ example: the.example.com
8
+ /:
9
+ anonymous: true
10
+ GET:
11
+ dev:stub: Hello
12
+ """
13
+ When the following request is received:
14
+ """
15
+ GET / HTTP/1.1
16
+ host: the.example.com
17
+ """
18
+ Then the following reply is sent:
19
+ """
20
+ 200 OK
21
+ """
22
+ When the following request is received:
23
+ """
24
+ GET / HTTP/1.1
25
+ host: the.other.com
26
+ """
27
+ Then the following reply is sent:
28
+ """
29
+ 404 Not Found
30
+
31
+ Unknown authority
32
+ """
@@ -0,0 +1,99 @@
1
+ Feature: OIDC tokens with authorities
2
+
3
+ Scenario: OIDC tokens are scoped to authorities
4
+ Given the annotation:
5
+ """yaml
6
+ authorities:
7
+ one: the.one.com
8
+ two: the.two.com
9
+ /:
10
+ /:id:
11
+ auth:id: id
12
+ GET:
13
+ dev:stub: Hello
14
+ """
15
+ And local IDP is running
16
+ And the `identity.federation` database is empty
17
+ And the `identity.federation` configuration:
18
+ """yaml
19
+ trust:
20
+ - iss: http://localhost:44444
21
+ """
22
+ And the IDP token for One is issued
23
+ And the IDP token for Two is issued
24
+
25
+ # create identities
26
+ When the following request is received:
27
+ """
28
+ POST /identity/federation/ HTTP/1.1
29
+ host: the.one.com
30
+ accept: application/yaml
31
+ content-type: application/yaml
32
+
33
+ credentials: ${{ One.id_token }}
34
+ """
35
+ Then the following reply is sent:
36
+ """
37
+ 201 Created
38
+
39
+ id: ${{ One.id }}
40
+ """
41
+ When the following request is received:
42
+ """
43
+ POST /identity/federation/ HTTP/1.1
44
+ host: the.two.com
45
+ accept: application/yaml
46
+ content-type: application/yaml
47
+
48
+ credentials: ${{ Two.id_token }}
49
+ """
50
+ Then the following reply is sent:
51
+ """
52
+ 201 Created
53
+
54
+ id: ${{ Two.id }}
55
+ """
56
+
57
+ # access `one` authority
58
+ When the following request is received:
59
+ """
60
+ GET /${{ One.id }}/ HTTP/1.1
61
+ host: the.one.com
62
+ authorization: Bearer ${{ One.id_token }}
63
+ """
64
+ Then the following reply is sent:
65
+ """
66
+ 200 OK
67
+ """
68
+ When the following request is received:
69
+ """
70
+ GET /${{ Two.id }}/ HTTP/1.1
71
+ host: the.one.com
72
+ authorization: Bearer ${{ Two.id_token }}
73
+ """
74
+ Then the following reply is sent:
75
+ """
76
+ 401 Unauthorized
77
+ """
78
+
79
+ # access `two` authority
80
+ When the following request is received:
81
+ """
82
+ GET /${{ One.id }}/ HTTP/1.1
83
+ host: the.two.com
84
+ authorization: Bearer ${{ One.id_token }}
85
+ """
86
+ Then the following reply is sent:
87
+ """
88
+ 401 Unauthorized
89
+ """
90
+ When the following request is received:
91
+ """
92
+ GET /${{ Two.id }}/ HTTP/1.1
93
+ host: the.two.com
94
+ authorization: Bearer ${{ Two.id_token }}
95
+ """
96
+ Then the following reply is sent:
97
+ """
98
+ 200 OK
99
+ """