@toa.io/definitions 1.0.0-alpha.288

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 (378) hide show
  1. package/digest/extensions.cadence.json +1 -0
  2. package/digest/extensions.configuration.json +1 -0
  3. package/digest/extensions.exposition.json +1 -0
  4. package/digest/extensions.introspection.json +1 -0
  5. package/digest/extensions.realtime.json +1 -0
  6. package/package.json +42 -0
  7. package/readme.md +75 -0
  8. package/schemas/extensions.cadence/annotation.cos.yaml +9 -0
  9. package/schemas/extensions.cadence/declaration.cos.yaml +20 -0
  10. package/schemas/extensions.configuration/annotation.cos.yaml +29 -0
  11. package/schemas/extensions.configuration/manifest.cos.yaml +9 -0
  12. package/schemas/extensions.exposition/annotation.cos.yaml +125 -0
  13. package/schemas/extensions.exposition/call.cos.yaml +18 -0
  14. package/schemas/extensions.exposition/directive.cos.yaml +7 -0
  15. package/schemas/extensions.exposition/method.cos.yaml +23 -0
  16. package/schemas/extensions.exposition/node.cos.yaml +22 -0
  17. package/schemas/extensions.exposition/query.cos.yaml +31 -0
  18. package/schemas/extensions.exposition/querystring.cos.yaml +19 -0
  19. package/schemas/extensions.exposition/range.cos.yaml +10 -0
  20. package/schemas/extensions.exposition/route.cos.yaml +6 -0
  21. package/schemas/extensions.introspection/annotation.cos.yaml +31 -0
  22. package/schemas/extensions.introspection/declaration.cos.yaml +5 -0
  23. package/schemas/extensions.storages/annotation.cos.yaml +11 -0
  24. package/schemas/extensions.storages/cloudinary.cos.yaml +38 -0
  25. package/schemas/extensions.storages/fs.cos.yaml +13 -0
  26. package/schemas/extensions.storages/s3.cos.yaml +17 -0
  27. package/schemas/extensions.storages/spaces.cos.yaml +16 -0
  28. package/schemas/extensions.storages/test.cos.yaml +10 -0
  29. package/schemas/extensions.storages/tmp.cos.yaml +10 -0
  30. package/source/bindings.amqp/annotation.ts +26 -0
  31. package/source/bindings.amqp/context.ts +68 -0
  32. package/source/bindings.amqp/deployment.ts +14 -0
  33. package/source/bindings.amqp/index.ts +9 -0
  34. package/source/bindings.amqp/instance.ts +3 -0
  35. package/source/bindings.amqp/sources.ts +39 -0
  36. package/source/bindings.loop/index.ts +3 -0
  37. package/source/bridges.bash/const.ts +2 -0
  38. package/source/bridges.bash/define.ts +38 -0
  39. package/source/bridges.bash/index.ts +2 -0
  40. package/source/bridges.node/define.ts +69 -0
  41. package/source/bridges.node/exports.ts +175 -0
  42. package/source/bridges.node/index.ts +6 -0
  43. package/source/bridges.node/operations.ts +127 -0
  44. package/source/bridges.node/sources.ts +44 -0
  45. package/source/definition.ts +38 -0
  46. package/source/digest/generate.ts +77 -0
  47. package/source/digest/read.ts +39 -0
  48. package/source/extensions.cadence/components.ts +6 -0
  49. package/source/extensions.cadence/const.ts +31 -0
  50. package/source/extensions.cadence/context.ts +10 -0
  51. package/source/extensions.cadence/deployment.ts +37 -0
  52. package/source/extensions.cadence/index.ts +8 -0
  53. package/source/extensions.cadence/manifest.ts +64 -0
  54. package/source/extensions.cadence/schemas.ts +10 -0
  55. package/source/extensions.cadence/types.ts +41 -0
  56. package/source/extensions.configuration/components.ts +6 -0
  57. package/source/extensions.configuration/const.ts +30 -0
  58. package/source/extensions.configuration/context.ts +13 -0
  59. package/source/extensions.configuration/deployment.ts +159 -0
  60. package/source/extensions.configuration/epoch.ts +22 -0
  61. package/source/extensions.configuration/index.ts +10 -0
  62. package/source/extensions.configuration/manifest.ts +12 -0
  63. package/source/extensions.configuration/schemas.ts +9 -0
  64. package/source/extensions.exposition/Annotation.ts +91 -0
  65. package/source/extensions.exposition/components.ts +6 -0
  66. package/source/extensions.exposition/const.ts +45 -0
  67. package/source/extensions.exposition/deployment.ts +95 -0
  68. package/source/extensions.exposition/index.ts +16 -0
  69. package/source/extensions.exposition/manifest.ts +56 -0
  70. package/source/extensions.exposition/schemas.ts +16 -0
  71. package/source/extensions.exposition/shortcuts.ts +14 -0
  72. package/source/extensions.exposition/syntax/index.ts +2 -0
  73. package/source/extensions.exposition/syntax/parse.ts +171 -0
  74. package/source/extensions.exposition/syntax/types.ts +69 -0
  75. package/source/extensions.fetch/context.ts +10 -0
  76. package/source/extensions.fetch/index.ts +1 -0
  77. package/source/extensions.introspection/annotation.ts +87 -0
  78. package/source/extensions.introspection/components.ts +13 -0
  79. package/source/extensions.introspection/const.ts +46 -0
  80. package/source/extensions.introspection/deployment.ts +48 -0
  81. package/source/extensions.introspection/index.ts +6 -0
  82. package/source/extensions.introspection/manifest.ts +18 -0
  83. package/source/extensions.introspection/schemas.ts +12 -0
  84. package/source/extensions.realtime/components.ts +5 -0
  85. package/source/extensions.realtime/deployment.ts +89 -0
  86. package/source/extensions.realtime/index.ts +4 -0
  87. package/source/extensions.stash/context.ts +10 -0
  88. package/source/extensions.stash/deployment.ts +22 -0
  89. package/source/extensions.stash/index.ts +2 -0
  90. package/source/extensions.state/context.ts +9 -0
  91. package/source/extensions.state/index.ts +1 -0
  92. package/source/extensions.storages/Annotation.ts +57 -0
  93. package/source/extensions.storages/context.ts +14 -0
  94. package/source/extensions.storages/deployment.ts +91 -0
  95. package/source/extensions.storages/index.ts +9 -0
  96. package/source/extensions.storages/manifest.ts +7 -0
  97. package/source/extensions.storages/schemas.ts +15 -0
  98. package/source/extensions.storages/secrets.ts +22 -0
  99. package/source/extensions.telemetry/const.ts +6 -0
  100. package/source/extensions.telemetry/context.ts +11 -0
  101. package/source/extensions.telemetry/deployment.ts +91 -0
  102. package/source/extensions.telemetry/index.ts +5 -0
  103. package/source/extensions.telemetry/ready.ts +33 -0
  104. package/source/index.ts +2 -0
  105. package/source/storages.mongodb/deployment.ts +22 -0
  106. package/source/storages.mongodb/index.ts +1 -0
  107. package/source/version.ts +10 -0
  108. package/transpiled/bindings.amqp/annotation.d.ts +10 -0
  109. package/transpiled/bindings.amqp/annotation.js +16 -0
  110. package/transpiled/bindings.amqp/annotation.js.map +1 -0
  111. package/transpiled/bindings.amqp/annotation.test.d.ts +1 -0
  112. package/transpiled/bindings.amqp/annotation.test.js +36 -0
  113. package/transpiled/bindings.amqp/annotation.test.js.map +1 -0
  114. package/transpiled/bindings.amqp/context.d.ts +7 -0
  115. package/transpiled/bindings.amqp/context.js +47 -0
  116. package/transpiled/bindings.amqp/context.js.map +1 -0
  117. package/transpiled/bindings.amqp/deployment.d.ts +4 -0
  118. package/transpiled/bindings.amqp/deployment.js +11 -0
  119. package/transpiled/bindings.amqp/deployment.js.map +1 -0
  120. package/transpiled/bindings.amqp/index.d.ts +6 -0
  121. package/transpiled/bindings.amqp/index.js +5 -0
  122. package/transpiled/bindings.amqp/index.js.map +1 -0
  123. package/transpiled/bindings.amqp/instance.d.ts +2 -0
  124. package/transpiled/bindings.amqp/instance.js +2 -0
  125. package/transpiled/bindings.amqp/instance.js.map +1 -0
  126. package/transpiled/bindings.amqp/properties.test.d.ts +1 -0
  127. package/transpiled/bindings.amqp/properties.test.js +7 -0
  128. package/transpiled/bindings.amqp/properties.test.js.map +1 -0
  129. package/transpiled/bindings.amqp/sources.d.ts +7 -0
  130. package/transpiled/bindings.amqp/sources.js +27 -0
  131. package/transpiled/bindings.amqp/sources.js.map +1 -0
  132. package/transpiled/bindings.loop/index.d.ts +2 -0
  133. package/transpiled/bindings.loop/index.js +2 -0
  134. package/transpiled/bindings.loop/index.js.map +1 -0
  135. package/transpiled/bindings.loop/properties.test.d.ts +1 -0
  136. package/transpiled/bindings.loop/properties.test.js +7 -0
  137. package/transpiled/bindings.loop/properties.test.js.map +1 -0
  138. package/transpiled/bridges.bash/const.d.ts +2 -0
  139. package/transpiled/bridges.bash/const.js +3 -0
  140. package/transpiled/bridges.bash/const.js.map +1 -0
  141. package/transpiled/bridges.bash/define.d.ts +3 -0
  142. package/transpiled/bridges.bash/define.js +25 -0
  143. package/transpiled/bridges.bash/define.js.map +1 -0
  144. package/transpiled/bridges.bash/index.d.ts +2 -0
  145. package/transpiled/bridges.bash/index.js +3 -0
  146. package/transpiled/bridges.bash/index.js.map +1 -0
  147. package/transpiled/bridges.node/define.d.ts +18 -0
  148. package/transpiled/bridges.node/define.js +46 -0
  149. package/transpiled/bridges.node/define.js.map +1 -0
  150. package/transpiled/bridges.node/exports.d.ts +16 -0
  151. package/transpiled/bridges.node/exports.js +134 -0
  152. package/transpiled/bridges.node/exports.js.map +1 -0
  153. package/transpiled/bridges.node/exports.test.d.ts +1 -0
  154. package/transpiled/bridges.node/exports.test.js +88 -0
  155. package/transpiled/bridges.node/exports.test.js.map +1 -0
  156. package/transpiled/bridges.node/index.d.ts +5 -0
  157. package/transpiled/bridges.node/index.js +4 -0
  158. package/transpiled/bridges.node/index.js.map +1 -0
  159. package/transpiled/bridges.node/operations.d.ts +13 -0
  160. package/transpiled/bridges.node/operations.js +96 -0
  161. package/transpiled/bridges.node/operations.js.map +1 -0
  162. package/transpiled/bridges.node/operations.test.d.ts +1 -0
  163. package/transpiled/bridges.node/operations.test.js +108 -0
  164. package/transpiled/bridges.node/operations.test.js.map +1 -0
  165. package/transpiled/bridges.node/sources.d.ts +7 -0
  166. package/transpiled/bridges.node/sources.js +36 -0
  167. package/transpiled/bridges.node/sources.js.map +1 -0
  168. package/transpiled/definition.d.ts +7 -0
  169. package/transpiled/definition.js +34 -0
  170. package/transpiled/definition.js.map +1 -0
  171. package/transpiled/digest/generate.d.ts +1 -0
  172. package/transpiled/digest/generate.js +60 -0
  173. package/transpiled/digest/generate.js.map +1 -0
  174. package/transpiled/digest/read.d.ts +16 -0
  175. package/transpiled/digest/read.js +22 -0
  176. package/transpiled/digest/read.js.map +1 -0
  177. package/transpiled/extensions.cadence/components.d.ts +3 -0
  178. package/transpiled/extensions.cadence/components.js +6 -0
  179. package/transpiled/extensions.cadence/components.js.map +1 -0
  180. package/transpiled/extensions.cadence/const.d.ts +21 -0
  181. package/transpiled/extensions.cadence/const.js +26 -0
  182. package/transpiled/extensions.cadence/const.js.map +1 -0
  183. package/transpiled/extensions.cadence/context.d.ts +3 -0
  184. package/transpiled/extensions.cadence/context.js +9 -0
  185. package/transpiled/extensions.cadence/context.js.map +1 -0
  186. package/transpiled/extensions.cadence/deployment.d.ts +9 -0
  187. package/transpiled/extensions.cadence/deployment.js +28 -0
  188. package/transpiled/extensions.cadence/deployment.js.map +1 -0
  189. package/transpiled/extensions.cadence/index.d.ts +7 -0
  190. package/transpiled/extensions.cadence/index.js +7 -0
  191. package/transpiled/extensions.cadence/index.js.map +1 -0
  192. package/transpiled/extensions.cadence/manifest.d.ts +11 -0
  193. package/transpiled/extensions.cadence/manifest.js +42 -0
  194. package/transpiled/extensions.cadence/manifest.js.map +1 -0
  195. package/transpiled/extensions.cadence/manifest.test.d.ts +1 -0
  196. package/transpiled/extensions.cadence/manifest.test.js +41 -0
  197. package/transpiled/extensions.cadence/manifest.test.js.map +1 -0
  198. package/transpiled/extensions.cadence/schemas.d.ts +4 -0
  199. package/transpiled/extensions.cadence/schemas.js +7 -0
  200. package/transpiled/extensions.cadence/schemas.js.map +1 -0
  201. package/transpiled/extensions.cadence/types.d.ts +34 -0
  202. package/transpiled/extensions.cadence/types.js +2 -0
  203. package/transpiled/extensions.cadence/types.js.map +1 -0
  204. package/transpiled/extensions.configuration/components.d.ts +3 -0
  205. package/transpiled/extensions.configuration/components.js +6 -0
  206. package/transpiled/extensions.configuration/components.js.map +1 -0
  207. package/transpiled/extensions.configuration/const.d.ts +18 -0
  208. package/transpiled/extensions.configuration/const.js +22 -0
  209. package/transpiled/extensions.configuration/const.js.map +1 -0
  210. package/transpiled/extensions.configuration/context.d.ts +4 -0
  211. package/transpiled/extensions.configuration/context.js +9 -0
  212. package/transpiled/extensions.configuration/context.js.map +1 -0
  213. package/transpiled/extensions.configuration/deployment.d.ts +17 -0
  214. package/transpiled/extensions.configuration/deployment.js +106 -0
  215. package/transpiled/extensions.configuration/deployment.js.map +1 -0
  216. package/transpiled/extensions.configuration/deployment.test.d.ts +1 -0
  217. package/transpiled/extensions.configuration/deployment.test.js +74 -0
  218. package/transpiled/extensions.configuration/deployment.test.js.map +1 -0
  219. package/transpiled/extensions.configuration/epoch.d.ts +2 -0
  220. package/transpiled/extensions.configuration/epoch.js +19 -0
  221. package/transpiled/extensions.configuration/epoch.js.map +1 -0
  222. package/transpiled/extensions.configuration/index.d.ts +9 -0
  223. package/transpiled/extensions.configuration/index.js +8 -0
  224. package/transpiled/extensions.configuration/index.js.map +1 -0
  225. package/transpiled/extensions.configuration/manifest.d.ts +5 -0
  226. package/transpiled/extensions.configuration/manifest.js +6 -0
  227. package/transpiled/extensions.configuration/manifest.js.map +1 -0
  228. package/transpiled/extensions.configuration/manifest.test.d.ts +1 -0
  229. package/transpiled/extensions.configuration/manifest.test.js +14 -0
  230. package/transpiled/extensions.configuration/manifest.test.js.map +1 -0
  231. package/transpiled/extensions.configuration/schemas.d.ts +3 -0
  232. package/transpiled/extensions.configuration/schemas.js +7 -0
  233. package/transpiled/extensions.configuration/schemas.js.map +1 -0
  234. package/transpiled/extensions.exposition/Annotation.d.ts +71 -0
  235. package/transpiled/extensions.exposition/Annotation.js +2 -0
  236. package/transpiled/extensions.exposition/Annotation.js.map +1 -0
  237. package/transpiled/extensions.exposition/components.d.ts +3 -0
  238. package/transpiled/extensions.exposition/components.js +6 -0
  239. package/transpiled/extensions.exposition/components.js.map +1 -0
  240. package/transpiled/extensions.exposition/const.d.ts +36 -0
  241. package/transpiled/extensions.exposition/const.js +37 -0
  242. package/transpiled/extensions.exposition/const.js.map +1 -0
  243. package/transpiled/extensions.exposition/deployment.d.ts +6 -0
  244. package/transpiled/extensions.exposition/deployment.js +75 -0
  245. package/transpiled/extensions.exposition/deployment.js.map +1 -0
  246. package/transpiled/extensions.exposition/index.d.ts +8 -0
  247. package/transpiled/extensions.exposition/index.js +8 -0
  248. package/transpiled/extensions.exposition/index.js.map +1 -0
  249. package/transpiled/extensions.exposition/manifest.d.ts +3 -0
  250. package/transpiled/extensions.exposition/manifest.js +39 -0
  251. package/transpiled/extensions.exposition/manifest.js.map +1 -0
  252. package/transpiled/extensions.exposition/manifest.test.d.ts +1 -0
  253. package/transpiled/extensions.exposition/manifest.test.js +38 -0
  254. package/transpiled/extensions.exposition/manifest.test.js.map +1 -0
  255. package/transpiled/extensions.exposition/schemas.d.ts +7 -0
  256. package/transpiled/extensions.exposition/schemas.js +10 -0
  257. package/transpiled/extensions.exposition/schemas.js.map +1 -0
  258. package/transpiled/extensions.exposition/schemas.test.d.ts +1 -0
  259. package/transpiled/extensions.exposition/schemas.test.js +22 -0
  260. package/transpiled/extensions.exposition/schemas.test.js.map +1 -0
  261. package/transpiled/extensions.exposition/shortcuts.d.ts +3 -0
  262. package/transpiled/extensions.exposition/shortcuts.js +13 -0
  263. package/transpiled/extensions.exposition/shortcuts.js.map +1 -0
  264. package/transpiled/extensions.exposition/syntax/index.d.ts +2 -0
  265. package/transpiled/extensions.exposition/syntax/index.js +3 -0
  266. package/transpiled/extensions.exposition/syntax/index.js.map +1 -0
  267. package/transpiled/extensions.exposition/syntax/parse.d.ts +4 -0
  268. package/transpiled/extensions.exposition/syntax/parse.js +112 -0
  269. package/transpiled/extensions.exposition/syntax/parse.js.map +1 -0
  270. package/transpiled/extensions.exposition/syntax/parse.test.d.ts +1 -0
  271. package/transpiled/extensions.exposition/syntax/parse.test.js +156 -0
  272. package/transpiled/extensions.exposition/syntax/parse.test.js.map +1 -0
  273. package/transpiled/extensions.exposition/syntax/types.d.ts +52 -0
  274. package/transpiled/extensions.exposition/syntax/types.js +11 -0
  275. package/transpiled/extensions.exposition/syntax/types.js.map +1 -0
  276. package/transpiled/extensions.fetch/context.d.ts +3 -0
  277. package/transpiled/extensions.fetch/context.js +9 -0
  278. package/transpiled/extensions.fetch/context.js.map +1 -0
  279. package/transpiled/extensions.fetch/index.d.ts +1 -0
  280. package/transpiled/extensions.fetch/index.js +2 -0
  281. package/transpiled/extensions.fetch/index.js.map +1 -0
  282. package/transpiled/extensions.introspection/annotation.d.ts +40 -0
  283. package/transpiled/extensions.introspection/annotation.js +39 -0
  284. package/transpiled/extensions.introspection/annotation.js.map +1 -0
  285. package/transpiled/extensions.introspection/components.d.ts +8 -0
  286. package/transpiled/extensions.introspection/components.js +12 -0
  287. package/transpiled/extensions.introspection/components.js.map +1 -0
  288. package/transpiled/extensions.introspection/const.d.ts +30 -0
  289. package/transpiled/extensions.introspection/const.js +35 -0
  290. package/transpiled/extensions.introspection/const.js.map +1 -0
  291. package/transpiled/extensions.introspection/deployment.d.ts +14 -0
  292. package/transpiled/extensions.introspection/deployment.js +41 -0
  293. package/transpiled/extensions.introspection/deployment.js.map +1 -0
  294. package/transpiled/extensions.introspection/index.d.ts +6 -0
  295. package/transpiled/extensions.introspection/index.js +7 -0
  296. package/transpiled/extensions.introspection/index.js.map +1 -0
  297. package/transpiled/extensions.introspection/manifest.d.ts +9 -0
  298. package/transpiled/extensions.introspection/manifest.js +16 -0
  299. package/transpiled/extensions.introspection/manifest.js.map +1 -0
  300. package/transpiled/extensions.introspection/schemas.d.ts +4 -0
  301. package/transpiled/extensions.introspection/schemas.js +7 -0
  302. package/transpiled/extensions.introspection/schemas.js.map +1 -0
  303. package/transpiled/extensions.realtime/components.d.ts +2 -0
  304. package/transpiled/extensions.realtime/components.js +5 -0
  305. package/transpiled/extensions.realtime/components.js.map +1 -0
  306. package/transpiled/extensions.realtime/deployment.d.ts +22 -0
  307. package/transpiled/extensions.realtime/deployment.js +53 -0
  308. package/transpiled/extensions.realtime/deployment.js.map +1 -0
  309. package/transpiled/extensions.realtime/index.d.ts +3 -0
  310. package/transpiled/extensions.realtime/index.js +3 -0
  311. package/transpiled/extensions.realtime/index.js.map +1 -0
  312. package/transpiled/extensions.stash/context.d.ts +3 -0
  313. package/transpiled/extensions.stash/context.js +9 -0
  314. package/transpiled/extensions.stash/context.js.map +1 -0
  315. package/transpiled/extensions.stash/deployment.d.ts +5 -0
  316. package/transpiled/extensions.stash/deployment.js +14 -0
  317. package/transpiled/extensions.stash/deployment.js.map +1 -0
  318. package/transpiled/extensions.stash/index.d.ts +2 -0
  319. package/transpiled/extensions.stash/index.js +3 -0
  320. package/transpiled/extensions.stash/index.js.map +1 -0
  321. package/transpiled/extensions.state/context.d.ts +6 -0
  322. package/transpiled/extensions.state/context.js +8 -0
  323. package/transpiled/extensions.state/context.js.map +1 -0
  324. package/transpiled/extensions.state/index.d.ts +1 -0
  325. package/transpiled/extensions.state/index.js +2 -0
  326. package/transpiled/extensions.state/index.js.map +1 -0
  327. package/transpiled/extensions.storages/Annotation.d.ts +8 -0
  328. package/transpiled/extensions.storages/Annotation.js +31 -0
  329. package/transpiled/extensions.storages/Annotation.js.map +1 -0
  330. package/transpiled/extensions.storages/context.d.ts +3 -0
  331. package/transpiled/extensions.storages/context.js +12 -0
  332. package/transpiled/extensions.storages/context.js.map +1 -0
  333. package/transpiled/extensions.storages/deployment.d.ts +5 -0
  334. package/transpiled/extensions.storages/deployment.js +64 -0
  335. package/transpiled/extensions.storages/deployment.js.map +1 -0
  336. package/transpiled/extensions.storages/index.d.ts +8 -0
  337. package/transpiled/extensions.storages/index.js +7 -0
  338. package/transpiled/extensions.storages/index.js.map +1 -0
  339. package/transpiled/extensions.storages/manifest.d.ts +1 -0
  340. package/transpiled/extensions.storages/manifest.js +8 -0
  341. package/transpiled/extensions.storages/manifest.js.map +1 -0
  342. package/transpiled/extensions.storages/schemas.d.ts +9 -0
  343. package/transpiled/extensions.storages/schemas.js +12 -0
  344. package/transpiled/extensions.storages/schemas.js.map +1 -0
  345. package/transpiled/extensions.storages/schemas.test.d.ts +1 -0
  346. package/transpiled/extensions.storages/schemas.test.js +59 -0
  347. package/transpiled/extensions.storages/schemas.test.js.map +1 -0
  348. package/transpiled/extensions.storages/secrets.d.ts +10 -0
  349. package/transpiled/extensions.storages/secrets.js +16 -0
  350. package/transpiled/extensions.storages/secrets.js.map +1 -0
  351. package/transpiled/extensions.telemetry/const.d.ts +4 -0
  352. package/transpiled/extensions.telemetry/const.js +6 -0
  353. package/transpiled/extensions.telemetry/const.js.map +1 -0
  354. package/transpiled/extensions.telemetry/context.d.ts +3 -0
  355. package/transpiled/extensions.telemetry/context.js +9 -0
  356. package/transpiled/extensions.telemetry/context.js.map +1 -0
  357. package/transpiled/extensions.telemetry/deployment.d.ts +18 -0
  358. package/transpiled/extensions.telemetry/deployment.js +49 -0
  359. package/transpiled/extensions.telemetry/deployment.js.map +1 -0
  360. package/transpiled/extensions.telemetry/index.d.ts +5 -0
  361. package/transpiled/extensions.telemetry/index.js +5 -0
  362. package/transpiled/extensions.telemetry/index.js.map +1 -0
  363. package/transpiled/extensions.telemetry/ready.d.ts +14 -0
  364. package/transpiled/extensions.telemetry/ready.js +16 -0
  365. package/transpiled/extensions.telemetry/ready.js.map +1 -0
  366. package/transpiled/index.d.ts +2 -0
  367. package/transpiled/index.js +3 -0
  368. package/transpiled/index.js.map +1 -0
  369. package/transpiled/storages.mongodb/deployment.d.ts +5 -0
  370. package/transpiled/storages.mongodb/deployment.js +14 -0
  371. package/transpiled/storages.mongodb/deployment.js.map +1 -0
  372. package/transpiled/storages.mongodb/index.d.ts +1 -0
  373. package/transpiled/storages.mongodb/index.js +2 -0
  374. package/transpiled/storages.mongodb/index.js.map +1 -0
  375. package/transpiled/version.d.ts +5 -0
  376. package/transpiled/version.js +8 -0
  377. package/transpiled/version.js.map +1 -0
  378. package/tsconfig.json +10 -0
@@ -0,0 +1 @@
1
+ [{"label":"cadence-metronome","manifest":{"namespace":"cadence","name":"metronome","entity":{"properties":{"lane":{"description":"Which dispatcher takes this row, as the outbox partitions its lanes","type":"integer"},"due":{"description":"When the call is to be made, in milliseconds since the epoch","type":"integer"},"expires":{"description":"After this the call is not made at all. A scan bounds on it, so a call nothing was running to make in time is a row nobody reads, rather than an event anything sees.\n","type":"integer"},"endpoint":{"description":"What to call, as `namespace.component.operation`","type":"string"},"request":{"description":"The request to make, as it was handed over","type":"object"},"id":{"type":"string","pattern":"^[a-fA-F0-9]{32}$"},"VERSION":{"type":"integer","minimum":0},"CREATED":{"type":"integer","format":"epoch-millis"},"UPDATED":{"type":"integer","format":"epoch-millis"},"DELETED":{"type":"integer","format":"epoch-millis","nullable":true}},"required":["lane","due","expires","endpoint","id"],"storage":"@toa.io/storages.mongodb","migrations":[{"id":"system:0000-property-names","steps":[{"update":{"filter":{"_version":{"$exists":true}},"update":{"$rename":{"_version":"VERSION","_created":"CREATED","_updated":"UPDATED","_deleted":"DELETED"}}}}],"prototype":"system"},{"id":"system:0001-epoch-millis","steps":[{"update":{"filter":{"CREATED":{"$type":"number"}},"update":[{"$set":{"CREATED":{"$toDate":{"$toLong":"$CREATED"}},"UPDATED":{"$toDate":{"$toLong":"$UPDATED"}},"DELETED":{"$toDate":{"$toLong":"$DELETED"}}}}]}}],"prototype":"system"},{"id":"0002-indexes","steps":[{"index":{"name":"index_due","keys":{"lane":"asc","due":"asc"}}}]},{"id":"0003-pending-index","steps":[{"index":{"name":"index_due","keys":{"lane":"asc","due":"asc"},"partial":{"DELETED":null}}}]},{"id":"0004-retention","steps":[{"index":{"name":"index_deleted","keys":{"DELETED":"asc"},"ttl":2592000}}]}],"associated":false,"custom":false},"operations":{"delay":{"query":false,"input":{"type":"object","properties":{"endpoint":{"type":"string","pattern":"^[a-zA-Z][a-zA-Z0-9]*\\.[a-zA-Z][a-zA-Z0-9]*\\.[a-zA-Z][_a-zA-Z0-9]*$"},"request":{"type":"object"},"interval":{"description":"Milliseconds from now","type":"integer","minimum":0},"overdue":{"description":"Milliseconds the call may be late and still be made, or null for no bound. Stated rather than defaulted: only the caller knows whether a late call is still the right call.\n","type":"integer","nullable":true,"minimum":0}},"required":["endpoint","interval","overdue"]},"output":{"type":"string"},"type":"transition","scope":"object","bridge":"@toa.io/bridges.node","bindings":["@toa.io/bindings.amqp"]},"settle":{"query":true,"concurrency":"retry","type":"transition","scope":"objects","bridge":"@toa.io/bridges.node","output":{},"bindings":["@toa.io/bindings.amqp"]},"assign":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]},"ensure":{"type":"effect","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"enumerate":{"type":"observation","scope":"objects","output":{},"bindings":["@toa.io/bindings.amqp"]},"observe":{"type":"observation","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"stream":{"type":"observation","scope":"stream","output":{},"bindings":["@toa.io/bindings.amqp"]},"terminate":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]}},"path":"@toa.io/extensions.cadence/components/cadence.metronome","bindings":["@toa.io/bindings.amqp"],"bridge":"@toa.io/bridges.node","extensions":{"@toa.io/extensions.telemetry":null,"@toa.io/extensions.fetch":null,"@toa.io/extensions.introspection":{},"@toa.io/extensions.cadence":{}},"version":"706eb2a8","prototype":{"prototype":null,"path":"@toa.io/prototype","operations":{"transit":{"bridge":"@toa.io/bridges.node"},"assign":{"bridge":"@toa.io/bridges.node"},"ensure":{"bridge":"@toa.io/bridges.node"},"enumerate":{"bridge":"@toa.io/bridges.node"},"observe":{"bridge":"@toa.io/bridges.node"},"stream":{"bridge":"@toa.io/bridges.node"},"terminate":{"bridge":"@toa.io/bridges.node"}}},"events":{"created":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"deleted":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"sync":{"conditioned":false,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"updated":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"}}}}]
@@ -0,0 +1 @@
1
+ [{"label":"configuration-values","manifest":{"namespace":"configuration","name":"values","entity":{"properties":{"component":{"type":"string"},"epoch":{"type":"string"},"configuration":{"type":"object"},"originator":{"type":"string"},"id":{"type":"string","pattern":"^[a-fA-F0-9]{32}$"},"VERSION":{"type":"integer","minimum":0},"CREATED":{"type":"integer","format":"epoch-millis"},"UPDATED":{"type":"integer","format":"epoch-millis"},"DELETED":{"type":"integer","format":"epoch-millis","nullable":true}},"required":["component","epoch","configuration","originator","id"],"storage":"@toa.io/storages.mongodb","migrations":[{"id":"system:0000-property-names","steps":[{"update":{"filter":{"_version":{"$exists":true}},"update":{"$rename":{"_version":"VERSION","_created":"CREATED","_updated":"UPDATED","_deleted":"DELETED"}}}}],"prototype":"system"},{"id":"system:0001-epoch-millis","steps":[{"update":{"filter":{"CREATED":{"$type":"number"}},"update":[{"$set":{"CREATED":{"$toDate":{"$toLong":"$CREATED"}},"UPDATED":{"$toDate":{"$toLong":"$UPDATED"}},"DELETED":{"$toDate":{"$toLong":"$DELETED"}}}}]}}],"prototype":"system"},{"id":"0002-indexes","steps":[{"index":{"name":"index_lookup","keys":{"component":"asc","epoch":"asc","CREATED":"desc"},"sparse":true}}]}],"associated":false,"custom":false},"operations":{"get":{"query":false,"input":{"type":"object","properties":{"component":{"type":"string"},"epoch":{"type":"string"}},"required":["component"]},"output":{"type":"object","nullable":true,"properties":{"configuration":{"type":"object"},"schema":{"type":"object"},"epoch":{"type":"string"}},"required":["configuration","epoch"]},"type":"computation","scope":"none","bridge":"@toa.io/bridges.node","bindings":["@toa.io/bindings.amqp"]},"fetch":{"query":false,"input":{"type":"array","items":{"type":"object","properties":{"component":{"type":"string"},"epoch":{"type":"string"}},"required":["component","epoch"]}},"output":{"type":"array","items":{"type":"object","properties":{"component":{"type":"string"},"epoch":{"type":"string"},"configuration":{"type":"object","nullable":true},"created":{"type":"integer"}},"required":["component","epoch","configuration","created"]}},"type":"computation","scope":"none","bridge":"@toa.io/bridges.node","bindings":["@toa.io/bindings.amqp"]},"list":{"query":false,"output":{"type":"array","items":{"type":"object","properties":{"component":{"type":"string"},"epoch":{"type":"string"},"schema":{"type":"object"},"configuration":{"type":"object"}},"required":["component","epoch","schema","configuration"]}},"type":"computation","scope":"none","bridge":"@toa.io/bridges.node","bindings":["@toa.io/bindings.amqp"]},"create":{"query":false,"input":{"type":"object","properties":{"component":{"type":"string"},"configuration":{"type":"object"},"originator":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"]}},"required":["component","configuration","originator"]},"errors":["UNKNOWN_COMPONENT","INVALID_CONFIGURATION"],"type":"transition","scope":"object","bridge":"@toa.io/bridges.node","output":{},"bindings":["@toa.io/bindings.amqp"]},"assign":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]},"ensure":{"type":"effect","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"enumerate":{"type":"observation","scope":"objects","output":{},"bindings":["@toa.io/bindings.amqp"]},"observe":{"type":"observation","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"stream":{"type":"observation","scope":"stream","output":{},"bindings":["@toa.io/bindings.amqp"]},"terminate":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]}},"path":"@toa.io/extensions.configuration/components/configuration.values","bindings":["@toa.io/bindings.amqp"],"bridge":"@toa.io/bridges.node","extensions":{"@toa.io/extensions.telemetry":null,"@toa.io/extensions.fetch":null,"@toa.io/extensions.introspection":{},"@toa.io/extensions.exposition":{"routes":[{"path":"/configuration/values","node":{"routes":[{"path":"/","node":{"routes":[],"methods":[{"verb":"GET","mapping":{"endpoint":"list","query":null,"paged":false,"namespace":"configuration","component":"values"},"directives":[{"family":"io","name":"output","value":true},{"family":"auth","name":"role","value":"system:configuration:get"}]}],"directives":[]}},{"path":"/:component","node":{"routes":[],"methods":[{"verb":"GET","mapping":{"endpoint":"get","query":null,"paged":false,"namespace":"configuration","component":"values"},"directives":[{"family":"io","name":"output","value":true},{"family":"auth","name":"role","value":"system:configuration:get"}]},{"verb":"POST","mapping":{"endpoint":"create","query":null,"paged":false,"namespace":"configuration","component":"values"},"directives":[{"family":"io","name":"output","value":["id","epoch"]},{"family":"auth","name":"rule","value":{"role":"system:configuration:create","delegate":"originator"}}]}],"directives":[{"family":"map","name":"segments","value":{"component":"component"}}]}}],"methods":[],"directives":[],"isolated":true}}],"methods":[],"directives":[]}},"version":"99358d74","prototype":{"prototype":null,"path":"@toa.io/prototype","operations":{"transit":{"bridge":"@toa.io/bridges.node"},"assign":{"bridge":"@toa.io/bridges.node"},"ensure":{"bridge":"@toa.io/bridges.node"},"enumerate":{"bridge":"@toa.io/bridges.node"},"observe":{"bridge":"@toa.io/bridges.node"},"stream":{"bridge":"@toa.io/bridges.node"},"terminate":{"bridge":"@toa.io/bridges.node"}}},"events":{"created":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"deleted":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"sync":{"conditioned":false,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"updated":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"}}}}]
@@ -0,0 +1 @@
1
+ [{"label":"exposition-octets","manifest":{"namespace":"exposition","name":"octets","operations":{"put":{"bindings":[],"input":{"properties":{"location":{"type":"string"},"accept":{"type":"string"},"limit":{"type":"number"},"trust":{},"storage":{"type":"string"},"request":{}},"type":"object","required":["storage","request"]},"errors":["LOCATION_UNTRUSTED","LOCATION_LENGTH","LOCATION_UNAVAILABLE","INVALID_ID","NOT_FOUND","LIMIT_EXCEEDED","NOT_ACCEPTABLE","TYPE_MISMATCH"],"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"output":{}},"get":{"bindings":[],"errors":["NOT_FOUND","LIMIT_EXCEEDED","NOT_ACCEPTABLE","TYPE_MISMATCH"],"input":{"properties":{"range":{"type":"string"},"agent":{"type":"string"},"storage":{"type":"string"},"path":{"type":"string"}},"type":"object","required":["storage","path"]},"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"output":{}},"head":{"bindings":[],"errors":["NOT_FOUND","LIMIT_EXCEEDED","NOT_ACCEPTABLE","TYPE_MISMATCH"],"input":{"properties":{"range":{"type":"string"},"agent":{"type":"string"},"storage":{"type":"string"},"path":{"type":"string"}},"type":"object","required":["storage","path"]},"type":"computation","scope":"none","bridge":"@toa.io/bridges.node","query":false,"output":{}},"delete":{"bindings":[],"errors":["NOT_FOUND","LIMIT_EXCEEDED","NOT_ACCEPTABLE","TYPE_MISMATCH"],"input":{"properties":{"range":{"type":"string"},"agent":{"type":"string"},"storage":{"type":"string"},"path":{"type":"string"}},"type":"object","required":["storage","path"]},"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"output":{}}},"path":"@toa.io/extensions.exposition/components/exposition.octets","bindings":["@toa.io/bindings.amqp"],"bridge":"@toa.io/bridges.node","prototype":null,"extensions":{"@toa.io/extensions.telemetry":null,"@toa.io/extensions.fetch":null,"@toa.io/extensions.introspection":{},"@toa.io/extensions.storages":[]},"version":"a6f00a83"}},{"label":"identity-bans","manifest":{"namespace":"identity","name":"bans","entity":{"associated":true,"properties":{"comment":{"type":"string"},"banned":{"type":"boolean"},"originator":{"type":"string"},"id":{"type":"string","pattern":"^[a-fA-F0-9]{32}$"},"VERSION":{"type":"integer","minimum":0},"CREATED":{"type":"integer","format":"epoch-millis"},"UPDATED":{"type":"integer","format":"epoch-millis"},"DELETED":{"type":"integer","format":"epoch-millis","nullable":true}},"required":["banned","originator","id"],"blank":{"banned":false},"storage":"@toa.io/storages.mongodb","migrations":[{"id":"system:0000-property-names","steps":[{"update":{"filter":{"_version":{"$exists":true}},"update":{"$rename":{"_version":"VERSION","_created":"CREATED","_updated":"UPDATED","_deleted":"DELETED"}}}}],"prototype":"system"},{"id":"system:0001-epoch-millis","steps":[{"update":{"filter":{"CREATED":{"$type":"number"}},"update":[{"$set":{"CREATED":{"$toDate":{"$toLong":"$CREATED"}},"UPDATED":{"$toDate":{"$toLong":"$UPDATED"}},"DELETED":{"$toDate":{"$toLong":"$DELETED"}}}}]}}],"prototype":"system"}],"custom":false},"operations":{"transit":{"concurrency":"retry","input":{"properties":{"comment":{"type":"string"},"banned":{"type":"boolean"},"originator":{"properties":{"id":{"type":"string"}},"type":"object"}},"type":"object","required":["banned","originator"]},"type":"transition","scope":"object","bridge":"@toa.io/bridges.node","output":{},"bindings":["@toa.io/bindings.amqp"]},"assign":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]},"ensure":{"type":"effect","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"enumerate":{"type":"observation","scope":"objects","output":{},"bindings":["@toa.io/bindings.amqp"]},"observe":{"type":"observation","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"stream":{"type":"observation","scope":"stream","output":{},"bindings":["@toa.io/bindings.amqp"]},"terminate":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]}},"path":"@toa.io/extensions.exposition/components/identity.bans","bindings":["@toa.io/bindings.amqp"],"bridge":"@toa.io/bridges.node","extensions":{"@toa.io/extensions.telemetry":null,"@toa.io/extensions.fetch":null,"@toa.io/extensions.introspection":{},"@toa.io/extensions.exposition":{"routes":[{"path":"/identity/bans","node":{"routes":[{"path":"/:id","node":{"routes":[],"methods":[{"verb":"PUT","mapping":{"endpoint":"transit","query":{},"paged":false,"namespace":"identity","component":"bans"},"directives":[]}],"directives":[{"family":"io","name":"output","value":false},{"family":"auth","name":"rule","value":{"role":"system:identity:bans","delegate":"originator"}}]}}],"methods":[],"directives":[],"isolated":true}}],"methods":[],"directives":[]}},"version":"b6135553","prototype":{"prototype":null,"path":"@toa.io/prototype","operations":{"transit":{"bridge":"@toa.io/bridges.node"},"assign":{"bridge":"@toa.io/bridges.node"},"ensure":{"bridge":"@toa.io/bridges.node"},"enumerate":{"bridge":"@toa.io/bridges.node"},"observe":{"bridge":"@toa.io/bridges.node"},"stream":{"bridge":"@toa.io/bridges.node"},"terminate":{"bridge":"@toa.io/bridges.node"}}},"events":{"created":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"deleted":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"sync":{"conditioned":false,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"updated":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"}}}},{"label":"identity-basic","manifest":{"namespace":"identity","name":"basic","entity":{"associated":true,"properties":{"authority":{"type":"string"},"username":{"type":"string"},"password":{"type":"string"},"id":{"type":"string","pattern":"^[a-fA-F0-9]{32}$"},"VERSION":{"type":"integer","minimum":0},"CREATED":{"type":"integer","format":"epoch-millis"},"UPDATED":{"type":"integer","format":"epoch-millis"},"DELETED":{"type":"integer","format":"epoch-millis","nullable":true}},"required":["authority","username","password","id"],"storage":"@toa.io/storages.mongodb","migrations":[{"id":"system:0000-property-names","steps":[{"update":{"filter":{"_version":{"$exists":true}},"update":{"$rename":{"_version":"VERSION","_created":"CREATED","_updated":"UPDATED","_deleted":"DELETED"}}}}],"prototype":"system"},{"id":"system:0001-epoch-millis","steps":[{"update":{"filter":{"CREATED":{"$type":"number"}},"update":[{"$set":{"CREATED":{"$toDate":{"$toLong":"$CREATED"}},"UPDATED":{"$toDate":{"$toLong":"$UPDATED"}},"DELETED":{"$toDate":{"$toLong":"$DELETED"}}}}]}}],"prototype":"system"},{"id":"0002-indexes","steps":[{"index":{"name":"unique_authority_username","keys":{"authority":"asc","username":"asc"},"unique":true,"partial":{"DELETED":null}}},{"index":{"name":"index_username","keys":{"authority":"asc","username":"asc"}}}]}],"custom":false},"operations":{"transit":{"concurrency":"retry","output":{"type":"object","required":["id"],"properties":{"id":{"type":"string"}}},"input":{"properties":{"username":{"type":"string"},"password":{"type":"string"},"authority":{"type":"string"},"inception":{"description":"Whether the credentials are being created rather than changed","type":"boolean"}},"type":"object"},"errors":["PRINCIPAL_LOCKED","INVALID_USERNAME","INVALID_PASSWORD","EXISTS"],"type":"transition","scope":"object","bridge":"@toa.io/bridges.node","bindings":["@toa.io/bindings.amqp"]},"create":{"forward":"transit","query":false,"input":{"properties":{"authority":{"type":"string"},"username":{"type":"string"},"password":{"type":"string"},"inception":{"description":"Whether the credentials are being created rather than changed","type":"boolean"}},"type":"object","required":["authority","username","password"]},"errors":["PRINCIPAL_LOCKED","INVALID_USERNAME","INVALID_PASSWORD","EXISTS"],"concurrency":"retry","output":{"type":"object","required":["id"],"properties":{"id":{"type":"string"}}},"type":"transition","scope":"object","bridge":"@toa.io/bridges.node","bindings":["@toa.io/bindings.amqp"]},"add":{"input":{"properties":{"id":{"type":"string"},"authority":{"type":"string"},"username":{"type":"string"},"password":{"type":"string"}},"type":"object","required":["id","authority","username","password"]},"errors":["PRINCIPAL_LOCKED","INVALID_USERNAME","INVALID_PASSWORD","EXISTS"],"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"output":{},"bindings":["@toa.io/bindings.amqp"]},"incept":{"input":{"properties":{"authority":{"type":"string"},"id":{"type":"string"},"credentials":{"type":"string"}},"type":"object","required":["authority","id","credentials"]},"output":{"properties":{"id":{"type":"string"}},"type":"object"},"errors":["INVALID_CREDENTIALS"],"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"bindings":["@toa.io/bindings.amqp"]},"authenticate":{"input":{"properties":{"authority":{"type":"string"},"credentials":{"type":"string"}},"type":"object","required":["authority","credentials"]},"output":{"properties":{"identity":{"properties":{"id":{"type":"string"}},"type":"object"}},"type":"object"},"errors":["NOT_FOUND","PASSWORD_MISMATCH"],"type":"computation","scope":"none","bridge":"@toa.io/bridges.node","query":false,"bindings":["@toa.io/bindings.amqp"]},"check":{"input":{"type":"object","properties":{"username":{"type":"string","minLength":1}},"required":["username"]},"output":{"type":"null"},"type":"computation","scope":"none","bridge":"@toa.io/bridges.node","query":false,"bindings":["@toa.io/bindings.amqp"]},"info":{"input":{"properties":{"authority":{"type":"string"},"identity":{"type":"string"}},"type":"object","required":["authority","identity"]},"output":{"type":"object","nullable":true,"additionalProperties":false,"properties":{"username":{"type":"string"}},"required":["username"]},"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"bindings":["@toa.io/bindings.amqp"]},"delete":{"input":{"properties":{"authority":{"type":"string"},"identity":{"type":"string"}},"type":"object","required":["authority","identity"]},"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"output":{},"bindings":["@toa.io/bindings.amqp"]},"assign":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]},"ensure":{"type":"effect","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"enumerate":{"type":"observation","scope":"objects","output":{},"bindings":["@toa.io/bindings.amqp"]},"observe":{"type":"observation","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"stream":{"type":"observation","scope":"stream","output":{},"bindings":["@toa.io/bindings.amqp"]},"terminate":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]}},"path":"@toa.io/extensions.exposition/components/identity.basic","bindings":["@toa.io/bindings.amqp"],"bridge":"@toa.io/bridges.node","extensions":{"@toa.io/extensions.telemetry":null,"@toa.io/extensions.fetch":null,"@toa.io/extensions.introspection":{},"@toa.io/extensions.exposition":{"routes":[{"path":"/identity/basic","node":{"routes":[{"path":"/","node":{"routes":[],"methods":[{"verb":"POST","mapping":{"endpoint":"create","query":null,"paged":false,"namespace":"identity","component":"basic"},"directives":[{"family":"auth","name":"anonymous","value":true},{"family":"map","name":"authority","value":"authority"},{"family":"io","name":"output","value":["id"]}]}],"directives":[]}},{"path":"/:id","node":{"routes":[],"methods":[{"verb":"PATCH","mapping":{"endpoint":"transit","query":{},"paged":false,"namespace":"identity","component":"basic"},"directives":[{"family":"auth","name":"scheme","value":"basic"}]},{"verb":"POST","mapping":{"endpoint":"add","query":null,"paged":false,"namespace":"identity","component":"basic"},"directives":[{"family":"map","name":"authority","value":"authority"},{"family":"map","name":"segments","value":{"id":"id"}}]},{"verb":"DELETE","mapping":{"endpoint":"delete","query":null,"paged":false,"namespace":"identity","component":"basic"},"directives":[{"family":"map","name":"authority","value":"authority"},{"family":"map","name":"segments","value":{"identity":"id"}},{"family":"io","name":"output","value":false}]}],"directives":[{"family":"io","name":"output","value":["id"]},{"family":"io","name":"input","value":["username","password"]},{"family":"auth","name":"role","value":"system:identity:basic"},{"family":"auth","name":"id","value":"id"}]}},{"path":"/usernames/:username","node":{"routes":[],"methods":[{"verb":"GET","mapping":{"endpoint":"check","query":null,"paged":false,"namespace":"identity","component":"basic"},"directives":[{"family":"map","name":"authority","value":"authority"},{"family":"auth","name":"anonymous","value":true}]}],"directives":[]}}],"methods":[],"directives":[],"isolated":true}}],"methods":[],"directives":[]},"@toa.io/extensions.configuration":{"schema":{"type":"object","properties":{"rounds":{"type":"integer","minimum":1},"pepper":{"description":"Hashing pepper, a secret","type":"string","format":"secret"},"principal":{"description":"Basic credentials whose Identity is granted the `system` role","type":"object","properties":{"authority":{"type":"string"},"username":{"type":"string"}},"required":["authority","username"],"additionalProperties":false},"username":{"type":"array","items":{"type":"string"}},"password":{"type":"array","items":{"type":"string"}}},"required":["rounds","username","password"]},"defaults":{"rounds":10,"username":["^.{1,128}$"],"password":["^.{8,32}$"]}}},"version":"c38102e5","events":{"principal":{"conditioned":true,"subjective":true,"path":"@toa.io/extensions.exposition/components/identity.basic","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"created":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"deleted":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"sync":{"conditioned":false,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"updated":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"}},"prototype":{"prototype":null,"path":"@toa.io/prototype","operations":{"transit":{"bridge":"@toa.io/bridges.node"},"assign":{"bridge":"@toa.io/bridges.node"},"ensure":{"bridge":"@toa.io/bridges.node"},"enumerate":{"bridge":"@toa.io/bridges.node"},"observe":{"bridge":"@toa.io/bridges.node"},"stream":{"bridge":"@toa.io/bridges.node"},"terminate":{"bridge":"@toa.io/bridges.node"}}}}},{"label":"identity-clients","manifest":{"namespace":"identity","name":"clients","entity":{"associated":true,"properties":{"authority":{"type":"string"},"name":{"description":"client_name","type":"string","maxLength":128},"uris":{"description":"redirect_uris","type":"array","minItems":1,"maxItems":8,"items":{"type":"string","maxLength":2048}},"uri":{"description":"client_uri","type":"string","maxLength":2048},"logo":{"description":"logo_uri","type":"string","maxLength":2048},"scope":{"type":"string","maxLength":512},"expires":{"description":"When a registration nothing has used is swept","type":"number"},"id":{"type":"string","pattern":"^[a-fA-F0-9]{32}$"},"VERSION":{"type":"integer","minimum":0},"CREATED":{"type":"integer","format":"epoch-millis"},"UPDATED":{"type":"integer","format":"epoch-millis"},"DELETED":{"type":"integer","format":"epoch-millis","nullable":true}},"required":["authority","uris","id"],"storage":"@toa.io/storages.mongodb","migrations":[{"id":"system:0000-property-names","steps":[{"update":{"filter":{"_version":{"$exists":true}},"update":{"$rename":{"_version":"VERSION","_created":"CREATED","_updated":"UPDATED","_deleted":"DELETED"}}}}],"prototype":"system"},{"id":"system:0001-epoch-millis","steps":[{"update":{"filter":{"CREATED":{"$type":"number"}},"update":[{"$set":{"CREATED":{"$toDate":{"$toLong":"$CREATED"}},"UPDATED":{"$toDate":{"$toLong":"$UPDATED"}},"DELETED":{"$toDate":{"$toLong":"$DELETED"}}}}]}}],"prototype":"system"},{"id":"0002-indexes","steps":[{"index":{"name":"index_authority","keys":{"authority":"asc"}}}]}],"custom":false},"operations":{"transit":{"concurrency":"retry","input":{"type":"object","properties":{"authority":{"type":"string"},"name":{"type":"string"},"uri":{"type":"string"},"logo":{"type":"string"},"scope":{"type":"string"},"uris":{"type":"array","items":{"type":"string"}},"expires":{"type":"number"}},"required":["authority","uris"]},"type":"transition","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"register":{"query":false,"input":{"type":"object","properties":{"authority":{"type":"string"},"client_name":{"type":"string","maxLength":128},"client_uri":{"type":"string","maxLength":2048},"logo_uri":{"type":"string","maxLength":2048},"redirect_uris":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","maxLength":2048}},"scope":{"type":"string","maxLength":512},"grant_types":{"type":"array","items":{"type":"string"}},"response_types":{"type":"array","items":{"type":"string"}},"token_endpoint_auth_method":{"type":"string"}},"required":["authority","redirect_uris"]},"output":{"type":"object","properties":{"status":{"description":"Read and removed by `map:status`","type":"number"},"client_id":{"type":"string"},"client_id_issued_at":{"type":"number"},"client_name":{"type":"string"},"client_uri":{"type":"string"},"logo_uri":{"type":"string"},"redirect_uris":{"type":"array","items":{"type":"string"}},"grant_types":{"type":"array","items":{"type":"string"}},"response_types":{"type":"array","items":{"type":"string"}},"token_endpoint_auth_method":{"type":"string"},"error":{"type":"string"},"error_description":{"type":"string"}}},"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","bindings":["@toa.io/bindings.amqp"]},"describe":{"query":false,"input":{"type":"object","properties":{"authority":{"type":"string"},"id":{"description":"client_id, which is an https URL when the client publishes its own metadata","type":"string","maxLength":2048},"redirect":{"description":"Asked about together with the client, since only this component may answer it","type":"string","maxLength":2048}},"required":["authority","id"]},"output":{"type":"object","properties":{"client_id":{"type":"string"},"client_name":{"type":"string"},"client_uri":{"type":"string"},"logo_uri":{"type":"string"},"redirect_uris":{"type":"array","items":{"type":"string"}},"permitted":{"description":"Whether `redirect` is one this client may receive a code at","type":"boolean"}}},"errors":["UNKNOWN_CLIENT"],"type":"computation","scope":"none","bridge":"@toa.io/bridges.node","bindings":["@toa.io/bindings.amqp"]},"assign":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]},"ensure":{"type":"effect","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"enumerate":{"type":"observation","scope":"objects","output":{},"bindings":["@toa.io/bindings.amqp"]},"observe":{"type":"observation","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"stream":{"type":"observation","scope":"stream","output":{},"bindings":["@toa.io/bindings.amqp"]},"terminate":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]}},"path":"@toa.io/extensions.exposition/components/identity.clients","bindings":["@toa.io/bindings.amqp"],"bridge":"@toa.io/bridges.node","extensions":{"@toa.io/extensions.telemetry":null,"@toa.io/extensions.fetch":null,"@toa.io/extensions.introspection":{},"@toa.io/extensions.exposition":{"routes":[{"path":"/identity/clients","node":{"routes":[{"path":"/","node":{"routes":[{"path":"/:id","node":{"routes":[],"methods":[{"verb":"GET","mapping":{"endpoint":"describe","query":null,"paged":false,"namespace":"identity","component":"clients"},"directives":[{"family":"auth","name":"anyone","value":true},{"family":"map","name":"authority","value":"authority"},{"family":"map","name":"segments","value":{"id":"id"}},{"family":"io","name":"output","value":["client_id","client_name","client_uri","logo_uri","redirect_uris"]}]}],"directives":[]}}],"methods":[{"verb":"POST","mapping":{"endpoint":"register","query":null,"paged":false,"namespace":"identity","component":"clients"},"directives":[{"family":"auth","name":"anonymous","value":true},{"family":"map","name":"authority","value":"authority"},{"family":"io","name":"input","value":["client_name","client_uri","logo_uri","redirect_uris","scope","grant_types","response_types","token_endpoint_auth_method"]},{"family":"io","name":"output","value":true},{"family":"io","name":"throttle","value":{"key":"ip","requests":10,"interval":3600}},{"family":"io","name":"status","value":"status"},{"family":"cache","name":"exact","value":"no-store"}]}],"directives":[]}}],"methods":[],"directives":[],"isolated":true}}],"methods":[],"directives":[]},"@toa.io/extensions.configuration":{"schema":{"type":"object","properties":{"trust":{"description":"Origins whose Client ID Metadata Documents may be read; none are without one","type":"array","items":{"type":"string","pattern":"^https://"}},"lifetime":{"description":"Seconds a Client ID Metadata Document is held before it is read again","type":"integer","minimum":1},"ttl":{"description":"Seconds a registration nothing has used is kept","type":"integer","minimum":1},"size":{"description":"Bytes of a Client ID Metadata Document that are read","type":"integer","minimum":1},"timeout":{"description":"Milliseconds a Client ID Metadata Document has to arrive","type":"integer","minimum":1}}},"defaults":{"trust":[],"lifetime":3600,"ttl":2592000,"size":16384,"timeout":3000}},"@toa.io/extensions.stash":null},"version":"2a4537cc","prototype":{"prototype":null,"path":"@toa.io/prototype","operations":{"transit":{"bridge":"@toa.io/bridges.node"},"assign":{"bridge":"@toa.io/bridges.node"},"ensure":{"bridge":"@toa.io/bridges.node"},"enumerate":{"bridge":"@toa.io/bridges.node"},"observe":{"bridge":"@toa.io/bridges.node"},"stream":{"bridge":"@toa.io/bridges.node"},"terminate":{"bridge":"@toa.io/bridges.node"}}},"events":{"created":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"deleted":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"sync":{"conditioned":false,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"updated":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"}}}},{"label":"identity-credentials","manifest":{"namespace":"identity","name":"credentials","operations":{"list":{"input":{"type":"object","properties":{"authority":{"type":"string"},"identity":{"type":"string"}},"required":["authority","identity"]},"output":{"type":"object","properties":{"basic":{"type":"object","nullable":true,"additionalProperties":false,"properties":{"username":{"type":"string"}},"required":["username"]},"federation":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string"},"iss":{"type":"string"},"CREATED":{"type":"number"}},"required":["id","iss","CREATED"]}},"passkeys":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string"},"aid":{"type":"string"},"synced":{"type":"boolean"},"label":{"type":"string"},"CREATED":{"type":"number"}},"required":["id","aid","synced","CREATED"]}}},"required":["basic","federation","passkeys"]},"type":"computation","scope":"none","bridge":"@toa.io/bridges.node","query":false,"bindings":["@toa.io/bindings.amqp"]}},"path":"@toa.io/extensions.exposition/components/identity.credentials","bindings":["@toa.io/bindings.amqp"],"bridge":"@toa.io/bridges.node","prototype":null,"extensions":{"@toa.io/extensions.telemetry":null,"@toa.io/extensions.fetch":null,"@toa.io/extensions.introspection":{},"@toa.io/extensions.exposition":{"routes":[{"path":"/identity/credentials","node":{"routes":[{"path":"/:identity","node":{"routes":[],"methods":[{"verb":"GET","mapping":{"endpoint":"list","query":null,"paged":false,"namespace":"identity","component":"credentials"},"directives":[{"family":"auth","name":"id","value":"identity"},{"family":"map","name":"authority","value":"authority"},{"family":"map","name":"segments","value":{"identity":"identity"}},{"family":"io","name":"output","value":true}]}],"directives":[]}}],"methods":[],"directives":[]}}],"methods":[],"directives":[]}},"version":"64070c17"}},{"label":"identity-federation","manifest":{"namespace":"identity","name":"federation","entity":{"properties":{"authority":{"description":"The authority token is valid for","type":"string"},"iss":{"description":"The issuer, or signer, of the token, URI like `https://accounts.google.com`","type":"string"},"sub":{"description":"The ID that represents the principal making the request","type":"string"},"identity":{"description":"Identity associated with these credentials","type":"string"},"id":{"type":"string","pattern":"^[a-fA-F0-9]{32}$"},"VERSION":{"type":"integer","minimum":0},"CREATED":{"type":"integer","format":"epoch-millis"},"UPDATED":{"type":"integer","format":"epoch-millis"},"DELETED":{"type":"integer","format":"epoch-millis","nullable":true}},"required":["authority","iss","sub","identity","id"],"storage":"@toa.io/storages.mongodb","migrations":[{"id":"system:0000-property-names","steps":[{"update":{"filter":{"_version":{"$exists":true}},"update":{"$rename":{"_version":"VERSION","_created":"CREATED","_updated":"UPDATED","_deleted":"DELETED"}}}}],"prototype":"system"},{"id":"system:0001-epoch-millis","steps":[{"update":{"filter":{"CREATED":{"$type":"number"}},"update":[{"$set":{"CREATED":{"$toDate":{"$toLong":"$CREATED"}},"UPDATED":{"$toDate":{"$toLong":"$UPDATED"}},"DELETED":{"$toDate":{"$toLong":"$DELETED"}}}}]}}],"prototype":"system"},{"id":"0002-indexes","steps":[{"index":{"name":"unique_token","keys":{"authority":"asc","iss":"asc","sub":"asc"},"unique":true,"partial":{"DELETED":null}}},{"index":{"name":"unique_identity","keys":{"authority":"asc","iss":"asc","identity":"asc"},"unique":true,"partial":{"DELETED":null}}},{"index":{"name":"index_list","keys":{"authority":"asc","identity":"asc","CREATED":"desc"},"sparse":true}}]}],"associated":false,"custom":false},"operations":{"transit":{"concurrency":"retry","input":{"properties":{"authority":{"type":"string"},"iss":{"type":"string"},"sub":{"type":"string"},"identity":{"type":"string"}},"type":"object","required":["authority","iss","sub","identity"]},"type":"transition","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"create":{"input":{"properties":{"scheme":{"type":"string","enum":["bearer","code"]},"authority":{"type":"string"},"credentials":{"type":"string"},"id":{"type":"string"}},"type":"object","required":["scheme","authority","credentials","id"]},"errors":["EXISTS","TOKEN","TRUST","RESPONSE","CONFIG","NO_TOKEN","ISS","SUB","EXP","REPLAY","CODE_NOT_ENABLED","CODE_SCHEMA"],"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"output":{},"bindings":["@toa.io/bindings.amqp"]},"incept":{"input":{"properties":{"scheme":{"type":"string","enum":["bearer","code"]},"authority":{"type":"string"},"credentials":{"type":"string"},"id":{"type":"string"}},"type":"object","required":["scheme","authority","credentials","id"]},"output":{"properties":{"id":{"type":"string"}},"type":"object"},"errors":["EXISTS","TOKEN","TRUST","RESPONSE","CONFIG","NO_TOKEN","ISS","SUB","EXP","REPLAY","CODE_NOT_ENABLED","CODE_SCHEMA"],"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"bindings":["@toa.io/bindings.amqp"]},"authenticate":{"input":{"properties":{"scheme":{"type":"string","enum":["bearer","code"]},"authority":{"type":"string"},"credentials":{"type":"string"}},"type":"object","required":["scheme","authority","credentials"]},"output":{"properties":{"identity":{"properties":{"id":{"type":"string"},"claims":{"properties":{"iss":{"type":"string"},"aud":{"type":"string"},"sub":{"type":"string"}},"additionalProperties":true,"required":["iss","sub"],"type":"object"}},"required":["id","claims"],"type":"object"}},"type":"object"},"errors":["NOT_FOUND","TOKEN","TRUST","RESPONSE","CONFIG","NO_TOKEN","ISS","SUB","EXP","REPLAY","CODE_NOT_ENABLED","CODE_SCHEMA"],"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"bindings":["@toa.io/bindings.amqp"]},"decode":{"input":{"type":"string"},"output":{"properties":{"iss":{"type":"string"},"aud":{"type":"string"},"sub":{"type":"string"}},"additionalProperties":true,"required":["iss","sub"],"type":"object"},"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"bindings":["@toa.io/bindings.amqp"]},"list":{"input":{"properties":{"authority":{"type":"string"},"identity":{"type":"string"}},"type":"object","required":["authority","identity"]},"type":"computation","scope":"none","bridge":"@toa.io/bridges.node","query":false,"output":{},"bindings":["@toa.io/bindings.amqp"]},"delete":{"input":{"properties":{"authority":{"type":"string"},"identity":{"type":"string"},"credential":{"type":"string"}},"type":"object","required":["authority","identity","credential"]},"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"output":{},"bindings":["@toa.io/bindings.amqp"]},"assign":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]},"ensure":{"type":"effect","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"enumerate":{"type":"observation","scope":"objects","output":{},"bindings":["@toa.io/bindings.amqp"]},"observe":{"type":"observation","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"stream":{"type":"observation","scope":"stream","output":{},"bindings":["@toa.io/bindings.amqp"]},"terminate":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]}},"path":"@toa.io/extensions.exposition/components/identity.federation","bindings":["@toa.io/bindings.amqp"],"bridge":"@toa.io/bridges.node","extensions":{"@toa.io/extensions.telemetry":null,"@toa.io/extensions.fetch":null,"@toa.io/extensions.introspection":{},"@toa.io/extensions.exposition":{"routes":[{"path":"/identity/federation","node":{"routes":[{"path":"/","node":{"routes":[{"path":"/:id","node":{"routes":[{"path":"/:credential","node":{"routes":[],"methods":[{"verb":"DELETE","mapping":{"endpoint":"delete","query":null,"paged":false,"namespace":"identity","component":"federation"},"directives":[{"family":"map","name":"authority","value":"authority"},{"family":"map","name":"segments","value":{"identity":"id","credential":"credential"}},{"family":"io","name":"output","value":false}]}],"directives":[]}}],"methods":[{"verb":"POST","mapping":{"endpoint":"create","query":null,"paged":false,"namespace":"identity","component":"federation"},"directives":[{"family":"map","name":"authority","value":"authority"},{"family":"io","name":"input","value":["scheme","credentials"]},{"family":"io","name":"output","value":["id","iss","CREATED"]}]},{"verb":"GET","mapping":{"endpoint":"list","query":null,"paged":false,"namespace":"identity","component":"federation"},"directives":[{"family":"map","name":"authority","value":"authority"},{"family":"map","name":"segments","value":{"identity":"id"}},{"family":"io","name":"output","value":["id","iss","CREATED"]}]}],"directives":[{"family":"auth","name":"id","value":"id"}]}}],"methods":[],"directives":[]}}],"methods":[],"directives":[]}}],"methods":[],"directives":[]},"@toa.io/extensions.configuration":{"schema":{"type":"object","properties":{"trust":{"type":"array","items":{"title":"Trusted Identity Providers","type":"object","additionalProperties":false,"properties":{"iss":{"description":"Allowed values for a token `iss` field","type":"string","format":"uri"},"aud":{"description":"Acceptable `aud` value(s)","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"},"uniqueItems":true,"minItems":1}]},"signature":{"properties":{"iss":{"type":"string"},"kid":{"type":"string"},"key":{"description":"PKCS8 private key in PEM form","type":"string"}},"required":["iss","kid","key"]},"secret":{"description":"Client secret for the Identity Provider. Required for Authorization Code Flow.","type":"string"}},"required":["iss","aud"]}},"principal":{"title":"Principal","description":"Subject that will be assigned the `system` Role","type":"object","properties":{"authority":{"type":"string"},"iss":{"type":"string","format":"uri"},"sub":{"type":"string"}},"required":["authority","iss","sub"],"additionalProperties":false},"assert":{"title":"Implicitly incept Identity for new credentials","type":"boolean"}},"additionalProperties":false},"defaults":{"trust":[],"assert":true}}},"version":"00d8e34b","events":{"principal":{"conditioned":true,"subjective":true,"path":"@toa.io/extensions.exposition/components/identity.federation","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"created":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"deleted":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"sync":{"conditioned":false,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"updated":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"}},"prototype":{"prototype":null,"path":"@toa.io/prototype","operations":{"transit":{"bridge":"@toa.io/bridges.node"},"assign":{"bridge":"@toa.io/bridges.node"},"ensure":{"bridge":"@toa.io/bridges.node"},"enumerate":{"bridge":"@toa.io/bridges.node"},"observe":{"bridge":"@toa.io/bridges.node"},"stream":{"bridge":"@toa.io/bridges.node"},"terminate":{"bridge":"@toa.io/bridges.node"}}}}},{"label":"identity-grants","manifest":{"namespace":"identity","name":"grants","entity":{"associated":true,"properties":{"authority":{"type":"string"},"identity":{"type":"string"},"client":{"type":"string"},"scope":{"type":"array","items":{"type":"string"}},"resource":{"type":"array","items":{"type":"string"}},"kid":{"description":"The identity.keys record backing the access token, revoked with the grant","type":"string"},"revokedAt":{"type":"integer"},"id":{"type":"string","pattern":"^[a-fA-F0-9]{32}$"},"VERSION":{"type":"integer","minimum":0},"CREATED":{"type":"integer","format":"epoch-millis"},"UPDATED":{"type":"integer","format":"epoch-millis"},"DELETED":{"type":"integer","format":"epoch-millis","nullable":true}},"required":["authority","identity","client","id"],"storage":"@toa.io/storages.mongodb","migrations":[{"id":"system:0000-property-names","steps":[{"update":{"filter":{"_version":{"$exists":true}},"update":{"$rename":{"_version":"VERSION","_created":"CREATED","_updated":"UPDATED","_deleted":"DELETED"}}}}],"prototype":"system"},{"id":"system:0001-epoch-millis","steps":[{"update":{"filter":{"CREATED":{"$type":"number"}},"update":[{"$set":{"CREATED":{"$toDate":{"$toLong":"$CREATED"}},"UPDATED":{"$toDate":{"$toLong":"$UPDATED"}},"DELETED":{"$toDate":{"$toLong":"$DELETED"}}}}]}}],"prototype":"system"},{"id":"0002-indexes","steps":[{"index":{"name":"index_identity","keys":{"authority":"asc","identity":"asc"}}}]}],"custom":false},"operations":{"transit":{"concurrency":"retry","input":{"type":"object","properties":{"authority":{"type":"string"},"identity":{"type":"string"},"client":{"type":"string"},"scope":{"type":"array","items":{"type":"string"}},"resource":{"type":"array","items":{"type":"string"}},"kid":{"type":"string"}},"required":["authority","identity","client"]},"type":"transition","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"authorize":{"query":false,"input":{"type":"object","properties":{"authority":{"type":"string"},"identity":{"type":"string"},"client":{"type":"string","maxLength":2048},"redirect":{"type":"string","maxLength":2048},"challenge":{"description":"PKCE code challenge, S256 of the verifier","type":"string","minLength":43,"maxLength":128},"method":{"type":"string"},"scope":{"type":"array","items":{"type":"string"}},"resource":{"type":"array","items":{"type":"string","maxLength":2048}}},"required":["authority","identity","client","redirect","challenge","method"]},"output":{"type":"object","properties":{"status":{"description":"Read and removed by `io:status`","type":"number"},"code":{"type":"string"},"expires_in":{"type":"number"},"error":{"type":"string"},"error_description":{"type":"string"}}},"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","bindings":["@toa.io/bindings.amqp"]},"exchange":{"query":false,"input":{"type":"object","properties":{"authority":{"type":"string"},"grant_type":{"type":"string"},"code":{"type":"string","maxLength":512},"code_verifier":{"type":"string","minLength":43,"maxLength":128},"redirect_uri":{"type":"string","maxLength":2048},"client_id":{"type":"string","maxLength":2048},"resource":{"description":"A form repeats a name to say a list, so either shape arrives","type":["string","array"]}},"required":["authority","grant_type"]},"output":{"type":"object","properties":{"status":{"type":"number"},"access_token":{"type":"string"},"token_type":{"type":"string"},"expires_in":{"type":"number"},"scope":{"type":"string"},"error":{"type":"string"},"error_description":{"type":"string"}}},"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","bindings":["@toa.io/bindings.amqp"]},"list":{"input":{"type":"object","properties":{"authority":{"type":"string"},"identity":{"type":"string"}},"required":["authority","identity"]},"type":"computation","scope":"none","bridge":"@toa.io/bridges.node","query":false,"output":{},"bindings":["@toa.io/bindings.amqp"]},"revoke":{"output":{"type":"null"},"concurrency":"retry","input":{"type":"object","properties":{"authority":{"type":"string"},"identity":{"type":"string"}},"required":["authority","identity"]},"errors":["NOT_FOUND"],"type":"transition","scope":"object","bridge":"@toa.io/bridges.node","bindings":["@toa.io/bindings.amqp"]},"assign":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]},"ensure":{"type":"effect","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"enumerate":{"type":"observation","scope":"objects","output":{},"bindings":["@toa.io/bindings.amqp"]},"observe":{"type":"observation","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"stream":{"type":"observation","scope":"stream","output":{},"bindings":["@toa.io/bindings.amqp"]},"terminate":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]}},"path":"@toa.io/extensions.exposition/components/identity.grants","bindings":["@toa.io/bindings.amqp"],"bridge":"@toa.io/bridges.node","extensions":{"@toa.io/extensions.telemetry":null,"@toa.io/extensions.fetch":null,"@toa.io/extensions.introspection":{},"@toa.io/extensions.exposition":{"routes":[{"path":"/identity/grants","node":{"routes":[{"path":"/","node":{"routes":[{"path":"/:identity","node":{"routes":[{"path":"/:id","node":{"routes":[],"methods":[{"verb":"DELETE","mapping":{"endpoint":"revoke","query":{},"paged":false,"namespace":"identity","component":"grants"},"directives":[{"family":"io","name":"output","value":false}]}],"directives":[]}}],"methods":[{"verb":"GET","mapping":{"endpoint":"list","query":null,"paged":false,"namespace":"identity","component":"grants"},"directives":[{"family":"io","name":"output","value":["id","client","scope","resource","CREATED"]}]},{"verb":"POST","mapping":{"endpoint":"authorize","query":null,"paged":false,"namespace":"identity","component":"grants"},"directives":[{"family":"io","name":"input","value":["client","redirect","challenge","method","scope","resource"]},{"family":"io","name":"output","value":["code","expires_in","error","error_description"]},{"family":"io","name":"status","value":"status"},{"family":"cache","name":"exact","value":"no-store"}]}],"directives":[{"family":"auth","name":"id","value":"identity"},{"family":"map","name":"authority","value":"authority"},{"family":"map","name":"segments","value":{"identity":"identity"}}]}}],"methods":[{"verb":"POST","mapping":{"endpoint":"exchange","query":null,"paged":false,"namespace":"identity","component":"grants"},"directives":[{"family":"auth","name":"anonymous","value":true},{"family":"map","name":"authority","value":"authority"},{"family":"io","name":"input","value":["grant_type","code","code_verifier","redirect_uri","client_id","resource"]},{"family":"io","name":"output","value":true},{"family":"io","name":"status","value":"status"},{"family":"io","name":"throttle","value":{"key":"ip","requests":60,"interval":60}},{"family":"cache","name":"exact","value":"no-store"}]}],"directives":[]}}],"methods":[],"directives":[],"isolated":true}}],"methods":[],"directives":[]},"@toa.io/extensions.configuration":{"schema":{"type":"object","properties":{"lifetime":{"description":"Seconds an authorization code may be redeemed within","type":"integer","minimum":1,"maximum":600},"token":{"description":"Seconds an access token is valid for; 0 is until it is revoked","type":"integer","minimum":0}},"required":["lifetime","token"]},"defaults":{"lifetime":60,"token":2592000}},"@toa.io/extensions.stash":null},"version":"923befeb","prototype":{"prototype":null,"path":"@toa.io/prototype","operations":{"transit":{"bridge":"@toa.io/bridges.node"},"assign":{"bridge":"@toa.io/bridges.node"},"ensure":{"bridge":"@toa.io/bridges.node"},"enumerate":{"bridge":"@toa.io/bridges.node"},"observe":{"bridge":"@toa.io/bridges.node"},"stream":{"bridge":"@toa.io/bridges.node"},"terminate":{"bridge":"@toa.io/bridges.node"}}},"events":{"created":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"deleted":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"sync":{"conditioned":false,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"updated":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"}}}},{"label":"identity-keys","manifest":{"namespace":"identity","name":"keys","entity":{"properties":{"identity":{"type":"string"},"key":{"type":"string"},"label":{"type":"string","minLength":1,"maxLength":64},"expires":{"type":"number"},"revokedAt":{"type":"integer"},"id":{"type":"string","pattern":"^[a-fA-F0-9]{32}$"},"VERSION":{"type":"integer","minimum":0},"CREATED":{"type":"integer","format":"epoch-millis"},"UPDATED":{"type":"integer","format":"epoch-millis"},"DELETED":{"type":"integer","format":"epoch-millis","nullable":true}},"required":["identity","key","label","id"],"storage":"@toa.io/storages.mongodb","migrations":[{"id":"system:0000-property-names","steps":[{"update":{"filter":{"_version":{"$exists":true}},"update":{"$rename":{"_version":"VERSION","_created":"CREATED","_updated":"UPDATED","_deleted":"DELETED"}}}}],"prototype":"system"},{"id":"system:0001-epoch-millis","steps":[{"update":{"filter":{"CREATED":{"$type":"number"}},"update":[{"$set":{"CREATED":{"$toDate":{"$toLong":"$CREATED"}},"UPDATED":{"$toDate":{"$toLong":"$UPDATED"}},"DELETED":{"$toDate":{"$toLong":"$DELETED"}}}}]}}],"prototype":"system"},{"id":"0002-indexes","steps":[{"index":{"name":"index_identity","keys":{"identity":"asc"}}}]}],"associated":false,"custom":false},"operations":{"create":{"query":false,"input":{"properties":{"identity":{"type":"string"},"label":{"type":"string","minLength":1,"maxLength":64},"expires":{"type":"number"}},"required":["identity","label"],"type":"object"},"output":{"properties":{"id":{"type":"string"},"key":{"type":"string"}},"required":["id","key"],"type":"object"},"type":"transition","scope":"object","bridge":"@toa.io/bridges.node","bindings":["@toa.io/bindings.amqp"]},"revoke":{"output":{"type":"null"},"input":{"properties":{"identity":{"type":"string"}},"required":["identity"],"type":"object"},"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"bindings":["@toa.io/bindings.amqp"]},"disable":{"concurrency":"retry","type":"transition","scope":"object","bridge":"@toa.io/bridges.node","output":{},"bindings":["@toa.io/bindings.amqp"]},"assign":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]},"ensure":{"type":"effect","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"enumerate":{"type":"observation","scope":"objects","output":{},"bindings":["@toa.io/bindings.amqp"]},"observe":{"type":"observation","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"stream":{"type":"observation","scope":"stream","output":{},"bindings":["@toa.io/bindings.amqp"]},"terminate":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]}},"receivers":{"identity.bans.created":{"operation":"revoke","conditioned":false,"adaptive":true,"path":"@toa.io/extensions.exposition/components/identity.keys","bridge":"@toa.io/bridges.node"},"identity.bans.updated":{"operation":"revoke","conditioned":false,"adaptive":true,"path":"@toa.io/extensions.exposition/components/identity.keys","bridge":"@toa.io/bridges.node"},"identity.roles.deleted":{"operation":"revoke","conditioned":false,"adaptive":true,"path":"@toa.io/extensions.exposition/components/identity.keys","bridge":"@toa.io/bridges.node"}},"path":"@toa.io/extensions.exposition/components/identity.keys","bindings":["@toa.io/bindings.amqp"],"bridge":"@toa.io/bridges.node","extensions":{"@toa.io/extensions.telemetry":null,"@toa.io/extensions.fetch":null,"@toa.io/extensions.introspection":{},"@toa.io/extensions.exposition":{"routes":[{"path":"/identity/keys","node":{"routes":[{"path":"/:identity","node":{"routes":[{"path":"/:id","node":{"routes":[],"methods":[{"verb":"DELETE","mapping":{"endpoint":"terminate","query":{},"paged":false,"namespace":"identity","component":"keys"},"directives":[{"family":"io","name":"output","value":false}]}],"directives":[]}}],"methods":[{"verb":"GET","mapping":{"query":{"sort":"CREATED:desc"},"endpoint":"enumerate","paged":true,"namespace":"identity","component":"keys"},"directives":[{"family":"io","name":"output","value":["id","label","expires","revokedAt","CREATED"]}]}],"directives":[{"family":"auth","name":"id","value":"identity"},{"family":"auth","name":"role","value":"system:identity:keys"}]}}],"methods":[],"directives":[]}}],"methods":[],"directives":[]}},"version":"9345b3dc","prototype":{"prototype":null,"path":"@toa.io/prototype","operations":{"transit":{"bridge":"@toa.io/bridges.node"},"assign":{"bridge":"@toa.io/bridges.node"},"ensure":{"bridge":"@toa.io/bridges.node"},"enumerate":{"bridge":"@toa.io/bridges.node"},"observe":{"bridge":"@toa.io/bridges.node"},"stream":{"bridge":"@toa.io/bridges.node"},"terminate":{"bridge":"@toa.io/bridges.node"}}},"events":{"created":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"deleted":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"sync":{"conditioned":false,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"updated":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"}}}},{"label":"identity-otp","manifest":{"namespace":"identity","name":"otp","entity":{"properties":{"authority":{"type":"string"},"username":{"type":"string","minLength":1,"maxLength":256},"identity":{"type":"string","pattern":"^[0-9a-f]{32}$"},"id":{"type":"string","pattern":"^[a-fA-F0-9]{32}$"},"VERSION":{"type":"integer","minimum":0},"CREATED":{"type":"integer","format":"epoch-millis"},"UPDATED":{"type":"integer","format":"epoch-millis"},"DELETED":{"type":"integer","format":"epoch-millis","nullable":true}},"required":["authority","username","id"],"storage":"@toa.io/storages.mongodb","migrations":[{"id":"system:0000-property-names","steps":[{"update":{"filter":{"_version":{"$exists":true}},"update":{"$rename":{"_version":"VERSION","_created":"CREATED","_updated":"UPDATED","_deleted":"DELETED"}}}}],"prototype":"system"},{"id":"system:0001-epoch-millis","steps":[{"update":{"filter":{"CREATED":{"$type":"number"}},"update":[{"$set":{"CREATED":{"$toDate":{"$toLong":"$CREATED"}},"UPDATED":{"$toDate":{"$toLong":"$UPDATED"}},"DELETED":{"$toDate":{"$toLong":"$DELETED"}}}}]}}],"prototype":"system"},{"id":"0002-indexes","steps":[{"index":{"name":"index_username","keys":{"authority":"asc","username":"asc"}}}]}],"associated":false,"custom":false},"operations":{"issue":{"input":{"properties":{"authority":{"type":"string"},"username":{"type":"string","minLength":1,"maxLength":256},"identity":{"type":"string","pattern":"^[0-9a-f]{32}$"},"lifetime":{"description":"OTP expiration time in seconds","type":"number","minimum":1,"maximum":3600}},"required":["authority","username"],"type":"object"},"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"output":{},"bindings":["@toa.io/bindings.amqp"]},"authenticate":{"input":{"properties":{"authority":{"type":"string"},"credentials":{"type":"string"}},"required":["authority","credentials"],"type":"object"},"output":{"properties":{"identity":{"properties":{"id":{"type":"string"}},"type":"object"}},"type":"object"},"errors":["INVALID_CREDENTIALS","EXPIRED","TOO_MANY_ATTEMPTS","NOT_FOUND"],"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"bindings":["@toa.io/bindings.amqp"]},"assign":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]},"ensure":{"type":"effect","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"enumerate":{"type":"observation","scope":"objects","output":{},"bindings":["@toa.io/bindings.amqp"]},"observe":{"type":"observation","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"stream":{"type":"observation","scope":"stream","output":{},"bindings":["@toa.io/bindings.amqp"]},"terminate":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]}},"path":"@toa.io/extensions.exposition/components/identity.otp","bindings":["@toa.io/bindings.amqp"],"bridge":"@toa.io/bridges.node","extensions":{"@toa.io/extensions.telemetry":null,"@toa.io/extensions.fetch":null,"@toa.io/extensions.introspection":{},"@toa.io/extensions.exposition":{"routes":[{"path":"/identity/otp","node":{"routes":[{"path":"/:identity","node":{"routes":[],"methods":[{"verb":"POST","mapping":{"endpoint":"issue","query":null,"paged":false,"namespace":"identity","component":"otp"},"directives":[{"family":"io","name":"input","value":[]},{"family":"io","name":"output","value":["code"]},{"family":"map","name":"authority","value":"authority"},{"family":"map","name":"segments","value":{"username":"identity"}}]}],"directives":[{"family":"auth","name":"id","value":"identity"},{"family":"auth","name":"role","value":"system:identity:otp"}]}}],"methods":[],"directives":[]}}],"methods":[],"directives":[]},"@toa.io/extensions.configuration":{"schema":{"properties":{"lifetime":{"description":"OTP expiration time in seconds","type":"number","minimum":1,"maximum":3600},"attempts":{"description":"Failed authentication attempts allowed per username within `lifetime`","type":"integer","minimum":1}},"type":"object"},"defaults":{"lifetime":300,"attempts":5}},"@toa.io/extensions.stash":null},"version":"baa7494c","prototype":{"prototype":null,"path":"@toa.io/prototype","operations":{"transit":{"bridge":"@toa.io/bridges.node"},"assign":{"bridge":"@toa.io/bridges.node"},"ensure":{"bridge":"@toa.io/bridges.node"},"enumerate":{"bridge":"@toa.io/bridges.node"},"observe":{"bridge":"@toa.io/bridges.node"},"stream":{"bridge":"@toa.io/bridges.node"},"terminate":{"bridge":"@toa.io/bridges.node"}}},"events":{"created":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"deleted":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"sync":{"conditioned":false,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"updated":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"}}}},{"label":"identity-passkeys","manifest":{"namespace":"identity","name":"passkeys","entity":{"properties":{"authority":{"type":"string"},"identity":{"type":"string"},"kid":{"type":"string"},"aid":{"description":"AAGUID","type":"string"},"synced":{"description":"credentialBackedUp","type":"boolean"},"key":{"description":"Base64-encoded Uint8Array","type":"string"},"counter":{"type":"number","minimum":0},"transports":{"type":"array","items":{"type":"string"}},"label":{"type":"string","minLength":1,"maxLength":64},"id":{"type":"string","pattern":"^[a-fA-F0-9]{32}$"},"VERSION":{"type":"integer","minimum":0},"CREATED":{"type":"integer","format":"epoch-millis"},"UPDATED":{"type":"integer","format":"epoch-millis"},"DELETED":{"type":"integer","format":"epoch-millis","nullable":true}},"required":["authority","identity","kid","aid","synced","key","counter","CREATED","id"],"blank":{"counter":0},"storage":"@toa.io/storages.mongodb","migrations":[{"id":"system:0000-property-names","steps":[{"update":{"filter":{"_version":{"$exists":true}},"update":{"$rename":{"_version":"VERSION","_created":"CREATED","_updated":"UPDATED","_deleted":"DELETED"}}}}],"prototype":"system"},{"id":"system:0001-epoch-millis","steps":[{"update":{"filter":{"CREATED":{"$type":"number"}},"update":[{"$set":{"CREATED":{"$toDate":{"$toLong":"$CREATED"}},"UPDATED":{"$toDate":{"$toLong":"$UPDATED"}},"DELETED":{"$toDate":{"$toLong":"$DELETED"}}}}]}}],"prototype":"system"},{"id":"0002-indexes","steps":[{"index":{"name":"index_list","keys":{"authority":"asc","identity":"asc","CREATED":"desc"}}},{"index":{"name":"index_key","keys":{"authority":"asc","kid":"asc"}}}]}],"associated":false,"custom":false},"operations":{"challenge":{"input":{"type":"object","properties":{"type":{"type":"string","enum":["creation","request"]},"authority":{"type":"string"},"identity":{"type":"string"}},"required":["type","authority"]},"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"output":{},"bindings":["@toa.io/bindings.amqp"]},"create":{"query":false,"errors":["FAILED","INVALID"],"input":{"type":"object","properties":{"authority":{"type":"string"},"origin":{"type":"string"},"identity":{"type":"string"},"label":{"type":"string","minLength":1,"maxLength":64},"id":{"type":"string"},"type":{"type":"string"},"response":{"type":"object","properties":{"id":{"type":"string"},"response":{"type":"object","properties":{"attestationObject":{"type":"string"},"clientDataJSON":{"type":"string"},"transports":{"type":"array","items":{"type":"string"}},"publicKeyAlgorithm":{"type":"number"},"publicKey":{"type":"string"},"authenticatorData":{"type":"string"}},"required":["authenticatorData","attestationObject","clientDataJSON","transports","publicKeyAlgorithm","publicKey"]}}},"authenticatorAttachment":{"type":"string","nullable":true},"clientExtensionResults":{"type":"object"}},"required":["authority","identity","origin","label","id","type","response"]},"type":"transition","scope":"object","bridge":"@toa.io/bridges.node","output":{},"bindings":["@toa.io/bindings.amqp"]},"use":{"concurrency":"retry","query":true,"errors":["FAILED","INVALID"],"input":{"type":"object","properties":{"origin":{"type":"string"},"id":{"type":"string"},"type":{"type":"string"},"response":{"type":"object","properties":{"authenticatorData":{"type":"string"},"clientDataJSON":{"type":"string"},"signature":{"type":"string"},"userHandle":{"type":"string"}}},"authenticatorAttachment":{"type":"string"},"clientExtensionResults":{"type":"object"}},"required":["origin","id","response"]},"type":"transition","scope":"object","bridge":"@toa.io/bridges.node","output":{},"bindings":["@toa.io/bindings.amqp"]},"authenticate":{"errors":["MISS","FAILED","INVALID"],"input":{"type":"object","properties":{"authority":{"type":"string"},"origin":{"type":"string"},"id":{"type":"string"},"type":{"type":"string"},"response":{"type":"object","properties":{"authenticatorData":{"type":"string"},"clientDataJSON":{"type":"string"},"signature":{"type":"string"},"userHandle":{"type":"string"}}},"authenticatorAttachment":{"type":"string"},"clientExtensionResults":{"type":"object"}},"required":["authority","origin","id","response"]},"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"output":{},"bindings":["@toa.io/bindings.amqp"]},"list":{"input":{"type":"object","properties":{"authority":{"type":"string"},"identity":{"type":"string"}},"required":["authority","identity"]},"type":"computation","scope":"none","bridge":"@toa.io/bridges.node","query":false,"output":{},"bindings":["@toa.io/bindings.amqp"]},"delete":{"input":{"type":"object","properties":{"authority":{"type":"string"},"identity":{"type":"string"},"id":{"type":"string"}},"required":["authority","identity","id"]},"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"output":{},"bindings":["@toa.io/bindings.amqp"]},"assign":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]},"ensure":{"type":"effect","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"enumerate":{"type":"observation","scope":"objects","output":{},"bindings":["@toa.io/bindings.amqp"]},"observe":{"type":"observation","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"stream":{"type":"observation","scope":"stream","output":{},"bindings":["@toa.io/bindings.amqp"]},"terminate":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]}},"path":"@toa.io/extensions.exposition/components/identity.passkeys","bindings":["@toa.io/bindings.amqp"],"bridge":"@toa.io/bridges.node","extensions":{"@toa.io/extensions.telemetry":null,"@toa.io/extensions.fetch":null,"@toa.io/extensions.introspection":{},"@toa.io/extensions.exposition":{"routes":[{"path":"/identity/passkeys","node":{"routes":[{"path":"/","node":{"routes":[{"path":"/challenges","node":{"routes":[{"path":"/:identity","node":{"routes":[],"methods":[{"verb":"POST","mapping":{"endpoint":"challenge","query":null,"paged":false,"namespace":"identity","component":"passkeys"},"directives":[{"family":"map","name":"authority","value":"authority"},{"family":"map","name":"segments","value":{"identity":"identity"}},{"family":"io","name":"output","value":["identity","challenge","timeout","userVerification","authenticatorSelection","pubKeyCredParams","allowCredentials","excludeCredentials"]}]}],"directives":[]}}],"methods":[{"verb":"POST","mapping":{"endpoint":"challenge","query":null,"paged":false,"namespace":"identity","component":"passkeys"},"directives":[{"family":"map","name":"authority","value":"authority"},{"family":"io","name":"output","value":["identity","challenge","timeout","userVerification","authenticatorSelection","pubKeyCredParams","allowCredentials","excludeCredentials"]},{"family":"auth","name":"incept","value":"identity"}]}],"directives":[{"family":"auth","name":"anonymous","value":true}]}},{"path":"/:identity","node":{"routes":[{"path":"/:id","node":{"routes":[],"methods":[{"verb":"DELETE","mapping":{"endpoint":"delete","query":null,"paged":false,"namespace":"identity","component":"passkeys"},"directives":[{"family":"map","name":"authority","value":"authority"},{"family":"map","name":"segments","value":{"identity":"identity","id":"id"}},{"family":"io","name":"output","value":false}]}],"directives":[]}}],"methods":[{"verb":"POST","mapping":{"endpoint":"create","query":null,"paged":false,"namespace":"identity","component":"passkeys"},"directives":[{"family":"map","name":"authority","value":"authority"},{"family":"map","name":"segments","value":{"identity":"identity"}},{"family":"map","name":"headers","value":{"origin":"origin"}},{"family":"io","name":"output","value":["id","aid","synced","label","CREATED","UPDATED"]}]},{"verb":"GET","mapping":{"endpoint":"list","query":null,"paged":false,"namespace":"identity","component":"passkeys"},"directives":[{"family":"map","name":"authority","value":"authority"},{"family":"map","name":"segments","value":{"identity":"identity"}},{"family":"io","name":"output","value":["id","aid","synced","label","CREATED","UPDATED"]}]}],"directives":[{"family":"auth","name":"id","value":"identity"}]}}],"methods":[{"verb":"POST","mapping":{"endpoint":"authenticate","query":null,"paged":false,"namespace":"identity","component":"passkeys"},"directives":[{"family":"auth","name":"incept","value":"identity"},{"family":"map","name":"authority","value":"authority"},{"family":"map","name":"headers","value":{"origin":"origin"}},{"family":"io","name":"output","value":["identity"]}]}],"directives":[]}}],"methods":[],"directives":[]}}],"methods":[],"directives":[]},"@toa.io/extensions.configuration":{"schema":{"type":"object","properties":{"algorithms":{"type":"array","items":{"type":"number"}},"timeout":{"type":"integer"},"verification":{"description":"AuthenticatorSelectionCriteria.userVerification","type":"string","enum":["required","preferred","discouraged"]},"residence":{"description":"AuthenticatorSelectionCriteria.residentKey","type":"string","enum":["required","preferred","discouraged"]}}},"defaults":{"algorithms":[-7,-257],"timeout":60000,"residence":"required"}},"@toa.io/extensions.stash":null},"version":"6c7bcae1","prototype":{"prototype":null,"path":"@toa.io/prototype","operations":{"transit":{"bridge":"@toa.io/bridges.node"},"assign":{"bridge":"@toa.io/bridges.node"},"ensure":{"bridge":"@toa.io/bridges.node"},"enumerate":{"bridge":"@toa.io/bridges.node"},"observe":{"bridge":"@toa.io/bridges.node"},"stream":{"bridge":"@toa.io/bridges.node"},"terminate":{"bridge":"@toa.io/bridges.node"}}},"events":{"created":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"deleted":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"sync":{"conditioned":false,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"updated":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"}}}},{"label":"identity-roles","manifest":{"namespace":"identity","name":"roles","entity":{"properties":{"grantor":{"type":"string"},"identity":{"type":"string","pattern":"[a-z0-9]{32}"},"role":{"type":"string","pattern":"^[a-zA-Z0-9]{0,32}(:[a-zA-Z0-9]{0,32}){0,8}$"},"id":{"type":"string","pattern":"^[a-fA-F0-9]{32}$"},"VERSION":{"type":"integer","minimum":0},"CREATED":{"type":"integer","format":"epoch-millis"},"UPDATED":{"type":"integer","format":"epoch-millis"},"DELETED":{"type":"integer","format":"epoch-millis","nullable":true}},"required":["identity","role","id"],"storage":"@toa.io/storages.mongodb","migrations":[{"id":"system:0000-property-names","steps":[{"update":{"filter":{"_version":{"$exists":true}},"update":{"$rename":{"_version":"VERSION","_created":"CREATED","_updated":"UPDATED","_deleted":"DELETED"}}}}],"prototype":"system"},{"id":"system:0001-epoch-millis","steps":[{"update":{"filter":{"CREATED":{"$type":"number"}},"update":[{"$set":{"CREATED":{"$toDate":{"$toLong":"$CREATED"}},"UPDATED":{"$toDate":{"$toLong":"$UPDATED"}},"DELETED":{"$toDate":{"$toLong":"$DELETED"}}}}]}}],"prototype":"system"},{"id":"0002-indexes","steps":[{"index":{"name":"unique_role","keys":{"identity":"asc","role":"asc"},"unique":true,"partial":{"DELETED":null}}}]}],"associated":false,"custom":false},"operations":{"grant":{"query":false,"input":{"properties":{"grantor":{"properties":{"id":{"type":"string"},"roles":{"type":"array","items":{"type":"string"}}},"type":"object"},"identity":{"type":"string","pattern":"[a-z0-9]{32}"},"role":{"type":"string","pattern":"^[a-zA-Z0-9]{0,32}(:[a-zA-Z0-9]{0,32}){0,8}$"}},"type":"object","required":["identity","role"]},"errors":["INACCESSIBLE_SCOPE"],"type":"transition","scope":"object","bridge":"@toa.io/bridges.node","output":{},"bindings":["@toa.io/bindings.amqp"]},"list":{"output":{"type":"array","items":{"type":"string"}},"type":"observation","scope":"objects","bridge":"@toa.io/bridges.node","bindings":["@toa.io/bindings.amqp"]},"principal":{"input":{"properties":{"id":{"type":"string"}},"type":"object"},"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"output":{},"bindings":["@toa.io/bindings.amqp"]},"assign":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]},"ensure":{"type":"effect","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"enumerate":{"type":"observation","scope":"objects","output":{},"bindings":["@toa.io/bindings.amqp"]},"observe":{"type":"observation","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"stream":{"type":"observation","scope":"stream","output":{},"bindings":["@toa.io/bindings.amqp"]},"terminate":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]}},"receivers":{"identity.basic.principal":{"operation":"principal","conditioned":false,"adaptive":false},"identity.federation.principal":{"operation":"principal","conditioned":false,"adaptive":true,"path":"@toa.io/extensions.exposition/components/identity.roles","bridge":"@toa.io/bridges.node"}},"path":"@toa.io/extensions.exposition/components/identity.roles","bindings":["@toa.io/bindings.amqp"],"bridge":"@toa.io/bridges.node","extensions":{"@toa.io/extensions.telemetry":null,"@toa.io/extensions.fetch":null,"@toa.io/extensions.introspection":{},"@toa.io/extensions.exposition":{"routes":[{"path":"/identity/roles","node":{"routes":[{"path":"/:identity","node":{"routes":[{"path":"/:role","node":{"routes":[],"methods":[{"verb":"DELETE","mapping":{"endpoint":"terminate","query":{},"paged":false,"namespace":"identity","component":"roles"},"directives":[{"family":"io","name":"output","value":false}]}],"directives":[]}}],"methods":[{"verb":"POST","mapping":{"endpoint":"grant","query":null,"paged":false,"namespace":"identity","component":"roles"},"directives":[{"family":"io","name":"output","value":["id","grantor"]},{"family":"auth","name":"rule","value":{"delegate":"grantor","role":"system:identity:roles:delegation"}}]},{"verb":"GET","mapping":{"endpoint":"list","query":{},"paged":true,"namespace":"identity","component":"roles"},"directives":[{"family":"io","name":"output","value":true},{"family":"auth","name":"id","value":"identity"}]}],"directives":[{"family":"auth","name":"role","value":"system:identity:roles"}]}}],"methods":[],"directives":[],"isolated":true}}],"methods":[],"directives":[]}},"version":"d4a6f74f","prototype":{"prototype":null,"path":"@toa.io/prototype","operations":{"transit":{"bridge":"@toa.io/bridges.node"},"assign":{"bridge":"@toa.io/bridges.node"},"ensure":{"bridge":"@toa.io/bridges.node"},"enumerate":{"bridge":"@toa.io/bridges.node"},"observe":{"bridge":"@toa.io/bridges.node"},"stream":{"bridge":"@toa.io/bridges.node"},"terminate":{"bridge":"@toa.io/bridges.node"}}},"events":{"created":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"deleted":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"sync":{"conditioned":false,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"updated":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"}}}},{"label":"identity-tokens","manifest":{"namespace":"identity","name":"tokens","entity":{"associated":true,"properties":{"revokedAt":{"type":"integer"},"id":{"type":"string","pattern":"^[a-fA-F0-9]{32}$"},"VERSION":{"type":"integer","minimum":0},"CREATED":{"type":"integer","format":"epoch-millis"},"UPDATED":{"type":"integer","format":"epoch-millis"},"DELETED":{"type":"integer","format":"epoch-millis","nullable":true}},"storage":"@toa.io/storages.mongodb","migrations":[{"id":"system:0000-property-names","steps":[{"update":{"filter":{"_version":{"$exists":true}},"update":{"$rename":{"_version":"VERSION","_created":"CREATED","_updated":"UPDATED","_deleted":"DELETED"}}}}],"prototype":"system"},{"id":"system:0001-epoch-millis","steps":[{"update":{"filter":{"CREATED":{"$type":"number"}},"update":[{"$set":{"CREATED":{"$toDate":{"$toLong":"$CREATED"}},"UPDATED":{"$toDate":{"$toLong":"$UPDATED"}},"DELETED":{"$toDate":{"$toLong":"$DELETED"}}}}]}}],"prototype":"system"}],"required":["id"],"custom":false},"operations":{"encrypt":{"input":{"properties":{"lifetime":{"type":"number","minimum":0},"scopes":{"type":"array","items":{"type":"string"}},"permissions":{"type":"object","patternProperties":{"^.*$":{"type":"array","items":{"type":"string"}}}},"key":{"type":"object","properties":{"id":{"type":"string"},"key":{"type":"string"}},"required":["id","key"]},"authority":{"type":"string"},"identity":{"required":["id","roles"],"properties":{"id":{"type":"string"},"roles":{"type":"array","items":{"type":"string"}}},"additionalProperties":true,"type":"object"}},"type":"object","required":["authority","identity"]},"output":{"type":"string"},"errors":["INACCESSIBLE_SCOPE"],"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"bindings":["@toa.io/bindings.amqp"]},"decrypt":{"input":{"type":"string"},"output":{"required":["iss","iat","identity","refresh","custom"],"properties":{"iss":{"description":"The authority the token names as its issuer","type":"string"},"identity":{"required":["id","roles"],"properties":{"id":{"type":"string"},"roles":{"type":"array","items":{"type":"string"}}},"additionalProperties":true,"type":"object"},"iat":{"type":"string"},"exp":{"type":"string"},"custom":{"type":"boolean"},"refresh":{"type":"boolean"}},"type":"object"},"errors":["INVALID_TOKEN","INVALID_KEY","FORGED_KEY","REVOKED_KEY"],"type":"computation","scope":"none","bridge":"@toa.io/bridges.node","query":false,"bindings":["@toa.io/bindings.amqp"]},"authenticate":{"input":{"properties":{"authority":{"type":"string"},"credentials":{"type":"string"}},"type":"object","required":["authority","credentials"]},"output":{"required":["identity","refresh"],"properties":{"identity":{"required":["id","roles"],"properties":{"id":{"type":"string"},"roles":{"type":"array","items":{"type":"string"}}},"additionalProperties":true,"type":"object"},"refresh":{"type":"boolean"}},"type":"object"},"errors":["UNRECOGNIZED","AUTHORITY_MISMATCH","TOKEN_REVOKED","INVALID_TOKEN","INVALID_KEY","FORGED_KEY","REVOKED_KEY"],"type":"computation","scope":"none","bridge":"@toa.io/bridges.node","query":false,"bindings":["@toa.io/bindings.amqp"]},"issue":{"input":{"type":"object","properties":{"authority":{"type":"string"},"identity":{"type":"string"},"lifetime":{"type":"number","minimum":0},"scopes":{"type":"array","items":{"type":"string"}},"permissions":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"label":{"type":"string","minLength":1,"maxLength":64}},"required":["authority","identity","label"]},"output":{"required":["kid","token"],"properties":{"kid":{"type":"string"},"exp":{"type":"number"},"token":{"type":"string"}},"type":"object"},"errors":["INACCESSIBLE_SCOPE"],"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"bindings":["@toa.io/bindings.amqp"]},"revoke":{"output":{"type":"null"},"concurrency":"retry","type":"transition","scope":"object","bridge":"@toa.io/bridges.node","bindings":["@toa.io/bindings.amqp"]},"assign":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]},"ensure":{"type":"effect","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"enumerate":{"type":"observation","scope":"objects","output":{},"bindings":["@toa.io/bindings.amqp"]},"observe":{"type":"observation","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"stream":{"type":"observation","scope":"stream","output":{},"bindings":["@toa.io/bindings.amqp"]},"terminate":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]}},"receivers":{"identity.bans.created":{"operation":"revoke","conditioned":false,"adaptive":true,"path":"@toa.io/extensions.exposition/components/identity.tokens","bridge":"@toa.io/bridges.node"},"identity.bans.updated":{"operation":"revoke","conditioned":false,"adaptive":true,"path":"@toa.io/extensions.exposition/components/identity.tokens","bridge":"@toa.io/bridges.node"}},"path":"@toa.io/extensions.exposition/components/identity.tokens","bindings":["@toa.io/bindings.amqp"],"bridge":"@toa.io/bridges.node","extensions":{"@toa.io/extensions.telemetry":null,"@toa.io/extensions.fetch":null,"@toa.io/extensions.introspection":{},"@toa.io/extensions.exposition":{"routes":[{"path":"/identity/tokens","node":{"routes":[{"path":"/:identity","node":{"routes":[],"methods":[{"verb":"POST","mapping":{"endpoint":"issue","query":null,"paged":false,"namespace":"identity","component":"tokens"},"directives":[{"family":"map","name":"authority","value":"authority"},{"family":"io","name":"input","value":["lifetime","label","scopes","permissions"]},{"family":"io","name":"output","value":["kid","exp","token","label"]}]}],"directives":[{"family":"auth","name":"id","value":"identity"},{"family":"auth","name":"role","value":"system:identity:tokens"}]}}],"methods":[],"directives":[]}}],"methods":[],"directives":[]},"@toa.io/extensions.configuration":{"schema":{"type":"object","properties":{"keys":{"type":"array","minItems":1,"contains":{"not":{"properties":{"format":{"const":"paseto"}},"required":["format"]}},"items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"key":{"type":"string","format":"secret"},"format":{"type":"string","enum":["jwe","paseto"]}},"required":["id","key"],"additionalProperties":false}},"lifetime":{"description":"Token expiration time in seconds (default 30 days)","type":"integer"},"refresh":{"description":"Token refresh time in seconds (default 10 minutes)","type":"integer"},"cache":{"description":"Custom token keys LRU cache configuration","properties":{"max":{"type":"integer"},"ttl":{"type":"integer"}},"required":["max","ttl"]}},"required":["keys","lifetime","refresh","cache"]},"defaults":{"lifetime":2592000,"refresh":600,"cache":{"max":1024,"ttl":600000}}}},"version":"1929eb6d","prototype":{"prototype":null,"path":"@toa.io/prototype","operations":{"transit":{"bridge":"@toa.io/bridges.node"},"assign":{"bridge":"@toa.io/bridges.node"},"ensure":{"bridge":"@toa.io/bridges.node"},"enumerate":{"bridge":"@toa.io/bridges.node"},"observe":{"bridge":"@toa.io/bridges.node"},"stream":{"bridge":"@toa.io/bridges.node"},"terminate":{"bridge":"@toa.io/bridges.node"}}},"events":{"created":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"deleted":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"sync":{"conditioned":false,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"updated":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"}}}}]
@@ -0,0 +1 @@
1
+ [{"label":"introspection-edges","manifest":{"namespace":"introspection","name":"edges","entity":{"associated":true,"properties":{"src":{"description":"What caused the call — another operation, an event, or a service","type":"object","properties":{"namespace":{"type":"string"},"component":{"type":"string"},"operation":{"type":"string"},"event":{"type":"string"},"service":{"type":"string"}}},"dst":{"description":"What was called","type":"object","required":["namespace","component","operation"],"properties":{"namespace":{"type":"string"},"component":{"type":"string"},"operation":{"type":"string"}}},"sample":{"description":"The last call observed on this edge","type":"object","required":["at","outcome"],"properties":{"at":{"type":"integer"},"input":{},"outcome":{"type":"string"}}},"id":{"type":"string","pattern":"^[a-fA-F0-9]{32}$"},"VERSION":{"type":"integer","minimum":0},"CREATED":{"type":"integer","format":"epoch-millis"},"UPDATED":{"type":"integer","format":"epoch-millis"},"DELETED":{"type":"integer","format":"epoch-millis","nullable":true}},"required":["src","dst","id"],"storage":"@toa.io/storages.mongodb","migrations":[{"id":"system:0000-property-names","steps":[{"update":{"filter":{"_version":{"$exists":true}},"update":{"$rename":{"_version":"VERSION","_created":"CREATED","_updated":"UPDATED","_deleted":"DELETED"}}}}],"prototype":"system"},{"id":"system:0001-epoch-millis","steps":[{"update":{"filter":{"CREATED":{"$type":"number"}},"update":[{"$set":{"CREATED":{"$toDate":{"$toLong":"$CREATED"}},"UPDATED":{"$toDate":{"$toLong":"$UPDATED"}},"DELETED":{"$toDate":{"$toLong":"$DELETED"}}}}]}}],"prototype":"system"}],"custom":false},"operations":{"merge":{"concurrency":"retry","input":{"type":"object","properties":{"edges":{"description":"What each replica observed since its last flush, by edge id","type":"object","additionalProperties":{"type":"object","properties":{"src":{"description":"What caused the call — another operation, an event, or a service","type":"object","properties":{"namespace":{"type":"string"},"component":{"type":"string"},"operation":{"type":"string"},"event":{"type":"string"},"service":{"type":"string"}}},"dst":{"description":"What was called","type":"object","required":["namespace","component","operation"],"properties":{"namespace":{"type":"string"},"component":{"type":"string"},"operation":{"type":"string"}}},"sample":{"description":"The last call observed on this edge","type":"object","required":["at","outcome"],"properties":{"at":{"type":"integer"},"input":{},"outcome":{"type":"string"}}}},"required":["src","dst"]}}},"required":["edges"]},"type":"transition","scope":"objects","bridge":"@toa.io/bridges.node","output":{},"bindings":["@toa.io/bindings.amqp"]},"assign":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]},"ensure":{"type":"effect","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"enumerate":{"type":"observation","scope":"objects","output":{},"bindings":["@toa.io/bindings.amqp"]},"observe":{"type":"observation","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"stream":{"type":"observation","scope":"stream","output":{},"bindings":["@toa.io/bindings.amqp"]},"terminate":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]}},"path":"@toa.io/extensions.introspection/components/introspection.edges","bindings":["@toa.io/bindings.amqp"],"bridge":"@toa.io/bridges.node","extensions":{"@toa.io/extensions.telemetry":null,"@toa.io/extensions.fetch":null,"@toa.io/extensions.introspection":false,"@toa.io/extensions.exposition":{"routes":[{"path":"/introspection/edges","node":{"routes":[{"path":"/","node":{"routes":[{"path":"/:id","node":{"routes":[],"methods":[{"verb":"GET","mapping":{"endpoint":"observe","query":{},"paged":false,"namespace":"introspection","component":"edges"},"directives":[]}],"directives":[]}}],"methods":[{"verb":"GET","mapping":{"endpoint":"enumerate","query":{"limit":{"value":10000,"range":[1,10000]}},"paged":true,"namespace":"introspection","component":"edges"},"directives":[]}],"directives":[{"family":"auth","name":"role","value":"system:introspection"},{"family":"io","name":"output","value":true},{"family":"cache","name":"control","value":"max-age=60, public"}]}}],"methods":[],"directives":[],"isolated":true}}],"methods":[],"directives":[]}},"version":"a7bb8b91","prototype":{"prototype":null,"path":"@toa.io/prototype","operations":{"transit":{"bridge":"@toa.io/bridges.node"},"assign":{"bridge":"@toa.io/bridges.node"},"ensure":{"bridge":"@toa.io/bridges.node"},"enumerate":{"bridge":"@toa.io/bridges.node"},"observe":{"bridge":"@toa.io/bridges.node"},"stream":{"bridge":"@toa.io/bridges.node"},"terminate":{"bridge":"@toa.io/bridges.node"}}},"events":{"created":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"deleted":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"sync":{"conditioned":false,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"updated":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"}}}},{"label":"introspection-nodes","manifest":{"namespace":"introspection","name":"nodes","entity":{"associated":true,"properties":{"version":{"type":"string"},"entity":{},"operations":{},"events":{},"receivers":{},"extensions":{},"namespace":{"type":"string"},"component":{"type":"string"},"id":{"type":"string","pattern":"^[a-fA-F0-9]{32}$"},"VERSION":{"type":"integer","minimum":0},"CREATED":{"type":"integer","format":"epoch-millis"},"UPDATED":{"type":"integer","format":"epoch-millis"},"DELETED":{"type":"integer","format":"epoch-millis","nullable":true}},"required":["namespace","component","id"],"storage":"@toa.io/storages.mongodb","migrations":[{"id":"system:0000-property-names","steps":[{"update":{"filter":{"_version":{"$exists":true}},"update":{"$rename":{"_version":"VERSION","_created":"CREATED","_updated":"UPDATED","_deleted":"DELETED"}}}}],"prototype":"system"},{"id":"system:0001-epoch-millis","steps":[{"update":{"filter":{"CREATED":{"$type":"number"}},"update":[{"$set":{"CREATED":{"$toDate":{"$toLong":"$CREATED"}},"UPDATED":{"$toDate":{"$toLong":"$UPDATED"}},"DELETED":{"$toDate":{"$toLong":"$DELETED"}}}}]}}],"prototype":"system"}],"custom":false},"operations":{"merge":{"concurrency":"retry","input":{"type":"object","properties":{"nodes":{"description":"What each announced component describes of itself, by its id","type":"object","additionalProperties":{"type":"object","properties":{"version":{"type":"string"},"entity":{},"operations":{},"events":{},"receivers":{},"extensions":{},"namespace":{"type":"string"},"component":{"type":"string"}},"required":["namespace","component"]}}},"required":["nodes"]},"type":"transition","scope":"objects","bridge":"@toa.io/bridges.node","output":{},"bindings":["@toa.io/bindings.amqp"]},"assign":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]},"ensure":{"type":"effect","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"enumerate":{"type":"observation","scope":"objects","output":{},"bindings":["@toa.io/bindings.amqp"]},"observe":{"type":"observation","scope":"object","output":{},"bindings":["@toa.io/bindings.amqp"]},"stream":{"type":"observation","scope":"stream","output":{},"bindings":["@toa.io/bindings.amqp"]},"terminate":{"type":"assignment","scope":"changeset","output":{},"bindings":["@toa.io/bindings.amqp"]}},"path":"@toa.io/extensions.introspection/components/introspection.nodes","bindings":["@toa.io/bindings.amqp"],"bridge":"@toa.io/bridges.node","extensions":{"@toa.io/extensions.telemetry":null,"@toa.io/extensions.fetch":null,"@toa.io/extensions.introspection":false,"@toa.io/extensions.exposition":{"routes":[{"path":"/introspection/nodes","node":{"routes":[{"path":"/","node":{"routes":[{"path":"/:id","node":{"routes":[],"methods":[{"verb":"GET","mapping":{"endpoint":"observe","query":{},"paged":false,"namespace":"introspection","component":"nodes"},"directives":[]}],"directives":[]}}],"methods":[{"verb":"GET","mapping":{"endpoint":"enumerate","query":{"limit":{"value":1000,"range":[1,1000]}},"paged":true,"namespace":"introspection","component":"nodes"},"directives":[]}],"directives":[{"family":"auth","name":"role","value":"system:introspection"},{"family":"io","name":"output","value":true},{"family":"cache","name":"control","value":"max-age=60, public"}]}}],"methods":[],"directives":[],"isolated":true}}],"methods":[],"directives":[]}},"version":"b4e4cfed","prototype":{"prototype":null,"path":"@toa.io/prototype","operations":{"transit":{"bridge":"@toa.io/bridges.node"},"assign":{"bridge":"@toa.io/bridges.node"},"ensure":{"bridge":"@toa.io/bridges.node"},"enumerate":{"bridge":"@toa.io/bridges.node"},"observe":{"bridge":"@toa.io/bridges.node"},"stream":{"bridge":"@toa.io/bridges.node"},"terminate":{"bridge":"@toa.io/bridges.node"}}},"events":{"created":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"deleted":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"sync":{"conditioned":false,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"},"updated":{"conditioned":true,"subjective":false,"path":"@toa.io/prototype","bridge":"@toa.io/bridges.node","binding":"@toa.io/bindings.amqp"}}}}]
@@ -0,0 +1 @@
1
+ [{"label":"realtime-streams","manifest":{"namespace":"realtime","name":"streams","operations":{"create":{"input":{"properties":{"key":{"type":"string"},"token":{"type":"string"}},"type":"object"},"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false,"output":{},"bindings":["@toa.io/bindings.amqp"]},"push":{"output":{"type":"null"},"bindings":[],"input":{"properties":{"data":{},"key":{"type":"string"},"event":{"type":"string"}},"type":"object","required":["key","event"]},"type":"effect","scope":"none","bridge":"@toa.io/bridges.node","query":false}},"path":"@toa.io/extensions.realtime/components/realtime.streams","bindings":["@toa.io/bindings.amqp"],"bridge":"@toa.io/bridges.node","prototype":null,"extensions":{"@toa.io/extensions.telemetry":null,"@toa.io/extensions.fetch":null,"@toa.io/extensions.introspection":{},"@toa.io/extensions.exposition":{"routes":[{"path":"/realtime/streams","node":{"routes":[{"path":"/:key","node":{"routes":[],"methods":[{"verb":"GET","mapping":{"endpoint":"create","query":null,"paged":false,"namespace":"realtime","component":"streams"},"directives":[]}],"directives":[{"family":"auth","name":"id","value":"key"}]}}],"methods":[],"directives":[]}}],"methods":[],"directives":[]},"@toa.io/extensions.configuration":{"schema":{"properties":{"maxlen":{"type":"number"},"expire":{"type":"number"}},"type":"object","required":["maxlen","expire"]},"defaults":{"maxlen":1000,"expire":300}},"@toa.io/extensions.state":null,"@toa.io/extensions.stash":null},"version":"2b78dc38"}}]
package/package.json ADDED
@@ -0,0 +1,42 @@
1
+ {
2
+ "name": "@toa.io/definitions",
3
+ "version": "1.0.0-alpha.288",
4
+ "type": "module",
5
+ "description": "What Toa packages declare, read without running them",
6
+ "author": "temich <tema.gurtovoy@gmail.com>",
7
+ "homepage": "https://github.com/toa-io/toa#readme",
8
+ "main": "transpiled/index.js",
9
+ "types": "transpiled/index.d.ts",
10
+ "repository": {
11
+ "type": "git",
12
+ "url": "git+https://github.com/toa-io/toa.git"
13
+ },
14
+ "bugs": {
15
+ "url": "https://github.com/toa-io/toa/issues"
16
+ },
17
+ "engines": {
18
+ "node": ">= 24.0.0"
19
+ },
20
+ "publishConfig": {
21
+ "access": "public"
22
+ },
23
+ "dependencies": {
24
+ "@toa.io/generic": "1.0.0-alpha.286",
25
+ "@toa.io/pointer": "1.0.0-alpha.287",
26
+ "@toa.io/schemas": "1.0.0-alpha.287",
27
+ "oxc-parser": "0.149.0"
28
+ },
29
+ "scripts": {
30
+ "transpile": "tsc",
31
+ "prepack": "node transpiled/digest/generate.js",
32
+ "test": "echo \"Error: run tests from root\" && exit 1"
33
+ },
34
+ "exports": {
35
+ ".": "./transpiled/index.js",
36
+ "./*": "./transpiled/*/index.js"
37
+ },
38
+ "devDependencies": {
39
+ "@toa.io/core": "1.0.0-alpha.288",
40
+ "openspan": "1.0.0-alpha.286"
41
+ }
42
+ }
package/readme.md ADDED
@@ -0,0 +1,75 @@
1
+ # Toa Definitions
2
+
3
+ What a Toa package declares, read without running it.
4
+
5
+ A package has two faces. What it **runs** — its `Factory` — is what a process needs. What it
6
+ **declares** — how a manifest that names it is normalised, the components it contributes, what a
7
+ deployment of it needs, whether its binding is asynchronous, how a bridge reads an operation's type
8
+ from its source — is what `toa deploy`, `toa types` and a booting process read alike, and none of it
9
+ runs. This package is the second face of every extension and connector Toa ships, so that reading a
10
+ declaration loads no broker client, no database driver, no HTTP server, and so that a deploy install
11
+ is `@toa.io/operations` beside `@toa.io/cli`, with no extension installed at all.
12
+
13
+ ## What is here
14
+
15
+ | export | of | read by |
16
+ | ------------- | ---------------------- | ---------------------------------------- |
17
+ | `manifest` | an extension | norm, normalising the `extensions` block |
18
+ | `components` | an extension | norm, for the components it contributes |
19
+ | `annotation` | an extension | norm, normalising the context's block |
20
+ | `standalone` | an extension | norm, deploying it whether or not named |
21
+ | `deployment` | an extension, a connector | operations, rendering the chart |
22
+ | `image` | an extension | operations, taking a published image |
23
+ | `context` | an extension | `toa types`, what a component's context has |
24
+ | `properties` | a binding | norm and boot, whether it is asynchronous |
25
+ | `define` | a bridge | norm, what a component's modules declare |
26
+
27
+ A package is looked up by the reference a manifest or a context names it by:
28
+
29
+ ```javascript
30
+ import { definition } from '@toa.io/definitions'
31
+
32
+ const exposition = await definition('@toa.io/extensions.exposition')
33
+ ```
34
+
35
+ and imported directly where a package of Toa's own needs a constant or a schema it shares with its
36
+ declaration:
37
+
38
+ ```javascript
39
+ import { PORT, schemas } from '@toa.io/definitions/extensions.exposition'
40
+ ```
41
+
42
+ The package's version is the version of Toa: it is versioned with every release, so a context that
43
+ states no `runtime.version` is deployed on the runtime of the same number.
44
+
45
+ ## A package outside Toa
46
+
47
+ norm reads a first-party package from here, and any other from its `definition.js` where it ships
48
+ one, or from its entry where it does not. An extension of an application's own that exports its
49
+ `manifest` and `deployment` beside its `Factory` is read as it always was; one that ships a
50
+ `definition.js` is read without loading what it runs.
51
+
52
+ ## The digest
53
+
54
+ An extension's own components — the identity components of the exposition, the values component
55
+ of the configuration — live in the extension's package, which a deploy install does not have. So
56
+ this package carries a digest of them: their manifests as norm reads them, generated when the
57
+ workspace transpiles and written to `digest/`, which ships and is not committed. A deploy reads the
58
+ components from the digest; the process that runs them reads them from the extension, where their
59
+ code is.
60
+
61
+ The digest is generated from the workspace, after every extension it covers has transpiled, so a
62
+ change to a shipped component is in the next `npm run transpile`; a release packs it afresh. The
63
+ generator reaches the extensions and norm through the workspace, and does not declare them: each
64
+ of them depends on this package, and a cycle is one `lerna version` does not survive.
65
+
66
+ ## Adding an extension's definition
67
+
68
+ 1. Put what the extension declares under `source/<package>/`, named after the package without its
69
+ scope: `extensions.cadence`, `bindings.amqp`. Its `index.ts` exports what norm and operations
70
+ read, and whatever the extension imports back.
71
+ 2. Name it in `DEFINED` in `source/definition.ts`.
72
+ 3. Where it contributes components, name it in `DIGESTED` in `source/digest/generate.ts`, and have
73
+ its `components()` read the digest.
74
+ 4. Nothing here imports the extension. It may depend on `@toa.io/generic`, `@toa.io/schemas` and
75
+ `@toa.io/pointer`; a type of the runtime's is an `import type`.
@@ -0,0 +1,9 @@
1
+ # context.toa.yaml cadence annotation
2
+ type: object
3
+ nullable: true
4
+ properties:
5
+ discreteness:
6
+ description: Seconds between passes over the calls waiting to be made
7
+ type: integer
8
+ minimum: 1
9
+ additionalProperties: false
@@ -0,0 +1,20 @@
1
+ # manifest.toa.yaml cadence declaration: the operations called on a cadence
2
+ type: object
3
+ propertyNames:
4
+ pattern: ^[a-zA-Z]+([_a-zA-Z0-9]*[a-zA-Z0-9]+)?$
5
+ patternProperties:
6
+ ".*":
7
+ type: object
8
+ properties:
9
+ cycle:
10
+ description: Seconds one whole cycle takes
11
+ type: integer
12
+ minimum: 1
13
+ intervals:
14
+ description: >
15
+ Intervals the cycle is split into. The gap between calls is `cycle / intervals`,
16
+ and the operation is told which interval it is running for.
17
+ type: integer
18
+ minimum: 1
19
+ required: [cycle]
20
+ additionalProperties: false
@@ -0,0 +1,29 @@
1
+ # context.toa.yaml configuration annotation
2
+ #
3
+ # Every key names a component and holds that component's values, except `resources`, which
4
+ # is the values service's own: it deploys like any other and has to state what it may take.
5
+ # A component actually named `resources` is written with its namespace, `default.resources`
6
+ # — the bare form is only shorthand for that.
7
+ properties:
8
+ resources:
9
+ # `null` deploys the service without any, which every deployment has to state one way
10
+ # or the other — see `migrations/262.md`.
11
+ type: object
12
+ nullable: true
13
+ properties:
14
+ cpu:
15
+ type: array
16
+ items:
17
+ type: string
18
+ minItems: 2
19
+ maxItems: 2
20
+ memory:
21
+ type: array
22
+ items:
23
+ type: string
24
+ minItems: 2
25
+ maxItems: 2
26
+ patternProperties:
27
+ ^(?!resources$).+$:
28
+ type: object
29
+ type: object