@ibgib/node-gib 0.0.10 → 0.0.14

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 (329) hide show
  1. package/dist/assumptions.respec.mjs.map +1 -1
  2. package/dist/email/aws/aws-sigv4-helper.d.mts +26 -0
  3. package/dist/email/aws/aws-sigv4-helper.d.mts.map +1 -0
  4. package/dist/email/aws/aws-sigv4-helper.mjs +94 -0
  5. package/dist/email/aws/aws-sigv4-helper.mjs.map +1 -0
  6. package/dist/email/aws/email-receiver-aws.d.mts +13 -0
  7. package/dist/email/aws/email-receiver-aws.d.mts.map +1 -0
  8. package/dist/email/aws/email-receiver-aws.mjs +97 -0
  9. package/dist/email/aws/email-receiver-aws.mjs.map +1 -0
  10. package/dist/email/aws/email-sender-aws.d.mts +23 -0
  11. package/dist/email/aws/email-sender-aws.d.mts.map +1 -0
  12. package/dist/email/aws/email-sender-aws.mjs +106 -0
  13. package/dist/email/aws/email-sender-aws.mjs.map +1 -0
  14. package/dist/email/aws/index.d.mts +7 -0
  15. package/dist/email/aws/index.d.mts.map +1 -0
  16. package/dist/email/aws/index.mjs +7 -0
  17. package/dist/email/aws/index.mjs.map +1 -0
  18. package/dist/email/email-constants.d.mts +15 -0
  19. package/dist/email/email-constants.d.mts.map +1 -0
  20. package/dist/email/email-constants.mjs +15 -0
  21. package/dist/email/email-constants.mjs.map +1 -0
  22. package/dist/email/email-helpers.d.mts +35 -0
  23. package/dist/email/email-helpers.d.mts.map +1 -0
  24. package/dist/email/email-helpers.mjs +144 -0
  25. package/dist/email/email-helpers.mjs.map +1 -0
  26. package/dist/email/email-receiver.d.mts +12 -0
  27. package/dist/email/email-receiver.d.mts.map +1 -0
  28. package/dist/email/email-receiver.mjs +23 -0
  29. package/dist/email/email-receiver.mjs.map +1 -0
  30. package/dist/email/email-sender.d.mts +13 -0
  31. package/dist/email/email-sender.d.mts.map +1 -0
  32. package/dist/email/email-sender.mjs +35 -0
  33. package/dist/email/email-sender.mjs.map +1 -0
  34. package/dist/email/email-service.respec.d.mts +2 -0
  35. package/dist/email/email-service.respec.d.mts.map +1 -0
  36. package/dist/email/email-service.respec.mjs +115 -0
  37. package/dist/email/email-service.respec.mjs.map +1 -0
  38. package/dist/email/email-types.d.mts +53 -0
  39. package/dist/email/email-types.d.mts.map +1 -0
  40. package/dist/email/email-types.mjs +5 -0
  41. package/dist/email/email-types.mjs.map +1 -0
  42. package/dist/email/index.d.mts +11 -0
  43. package/dist/email/index.d.mts.map +1 -0
  44. package/dist/email/index.mjs +11 -0
  45. package/dist/email/index.mjs.map +1 -0
  46. package/dist/email/mock/email-sender-mock.d.mts +20 -0
  47. package/dist/email/mock/email-sender-mock.d.mts.map +1 -0
  48. package/dist/email/mock/email-sender-mock.mjs +47 -0
  49. package/dist/email/mock/email-sender-mock.mjs.map +1 -0
  50. package/dist/email/mock/index.d.mts +5 -0
  51. package/dist/email/mock/index.d.mts.map +1 -0
  52. package/dist/email/mock/index.mjs +5 -0
  53. package/dist/email/mock/index.mjs.map +1 -0
  54. package/dist/index.d.mts +13 -0
  55. package/dist/index.d.mts.map +1 -0
  56. package/dist/index.mjs +14 -0
  57. package/dist/index.mjs.map +1 -0
  58. package/dist/respec-gib.node.mjs +3 -4
  59. package/dist/respec-gib.node.mjs.map +1 -1
  60. package/dist/serve-gib/bootstrap-helper.d.mts +27 -0
  61. package/dist/serve-gib/bootstrap-helper.d.mts.map +1 -0
  62. package/dist/serve-gib/bootstrap-helper.mjs +116 -0
  63. package/dist/serve-gib/bootstrap-helper.mjs.map +1 -0
  64. package/dist/serve-gib/bootstrap-helper.respec.d.mts +2 -0
  65. package/dist/serve-gib/bootstrap-helper.respec.d.mts.map +1 -0
  66. package/dist/serve-gib/bootstrap-helper.respec.mjs +85 -0
  67. package/dist/serve-gib/bootstrap-helper.respec.mjs.map +1 -0
  68. package/dist/serve-gib/constants.d.mts +2 -0
  69. package/dist/serve-gib/constants.d.mts.map +1 -0
  70. package/dist/serve-gib/constants.mjs +2 -0
  71. package/dist/serve-gib/constants.mjs.map +1 -0
  72. package/dist/serve-gib/handlers/api/debug/ws-echo.handler.d.mts +39 -0
  73. package/dist/serve-gib/handlers/api/debug/ws-echo.handler.d.mts.map +1 -0
  74. package/dist/serve-gib/handlers/api/debug/ws-echo.handler.mjs +99 -0
  75. package/dist/serve-gib/handlers/api/debug/ws-echo.handler.mjs.map +1 -0
  76. package/dist/serve-gib/handlers/api/email/email-inbound.handler.d.mts +25 -0
  77. package/dist/serve-gib/handlers/api/email/email-inbound.handler.d.mts.map +1 -0
  78. package/dist/serve-gib/handlers/api/email/email-inbound.handler.mjs +54 -0
  79. package/dist/serve-gib/handlers/api/email/email-inbound.handler.mjs.map +1 -0
  80. package/dist/serve-gib/handlers/api/email/email-outbound.handler.d.mts +24 -0
  81. package/dist/serve-gib/handlers/api/email/email-outbound.handler.d.mts.map +1 -0
  82. package/dist/serve-gib/handlers/api/email/email-outbound.handler.mjs +72 -0
  83. package/dist/serve-gib/handlers/api/email/email-outbound.handler.mjs.map +1 -0
  84. package/dist/serve-gib/handlers/api/health.handler.d.mts +14 -0
  85. package/dist/serve-gib/handlers/api/health.handler.d.mts.map +1 -0
  86. package/dist/serve-gib/handlers/api/health.handler.mjs +21 -0
  87. package/dist/serve-gib/handlers/api/health.handler.mjs.map +1 -0
  88. package/dist/serve-gib/handlers/api/health.respec.d.mts +2 -0
  89. package/dist/serve-gib/handlers/api/health.respec.d.mts.map +1 -0
  90. package/dist/serve-gib/handlers/api/health.respec.mjs +47 -0
  91. package/dist/serve-gib/handlers/api/health.respec.mjs.map +1 -0
  92. package/dist/serve-gib/handlers/api/ibgib/ibgib-handler-types.d.mts +41 -0
  93. package/dist/serve-gib/handlers/api/ibgib/ibgib-handler-types.d.mts.map +1 -0
  94. package/dist/serve-gib/handlers/api/ibgib/ibgib-handler-types.mjs +34 -0
  95. package/dist/serve-gib/handlers/api/ibgib/ibgib-handler-types.mjs.map +1 -0
  96. package/dist/serve-gib/handlers/api/ibgib/ibgib.handler.d.mts +26 -0
  97. package/dist/serve-gib/handlers/api/ibgib/ibgib.handler.d.mts.map +1 -0
  98. package/dist/serve-gib/handlers/api/ibgib/ibgib.handler.mjs +179 -0
  99. package/dist/serve-gib/handlers/api/ibgib/ibgib.handler.mjs.map +1 -0
  100. package/dist/serve-gib/handlers/api/keystone/keystone-check-email.handler.d.mts +23 -0
  101. package/dist/serve-gib/handlers/api/keystone/keystone-check-email.handler.d.mts.map +1 -0
  102. package/dist/serve-gib/handlers/api/keystone/keystone-check-email.handler.mjs +52 -0
  103. package/dist/serve-gib/handlers/api/keystone/keystone-check-email.handler.mjs.map +1 -0
  104. package/dist/serve-gib/handlers/api/keystone/keystone-evolve.handler.d.mts +44 -0
  105. package/dist/serve-gib/handlers/api/keystone/keystone-evolve.handler.d.mts.map +1 -0
  106. package/dist/serve-gib/handlers/api/keystone/keystone-evolve.handler.mjs +127 -0
  107. package/dist/serve-gib/handlers/api/keystone/keystone-evolve.handler.mjs.map +1 -0
  108. package/dist/serve-gib/handlers/api/keystone/keystone-genesis.handler.d.mts +45 -0
  109. package/dist/serve-gib/handlers/api/keystone/keystone-genesis.handler.d.mts.map +1 -0
  110. package/dist/serve-gib/handlers/api/keystone/keystone-genesis.handler.mjs +159 -0
  111. package/dist/serve-gib/handlers/api/keystone/keystone-genesis.handler.mjs.map +1 -0
  112. package/dist/serve-gib/handlers/api/keystone/keystone-get.handler.d.mts +25 -0
  113. package/dist/serve-gib/handlers/api/keystone/keystone-get.handler.d.mts.map +1 -0
  114. package/dist/serve-gib/handlers/api/keystone/keystone-get.handler.mjs +183 -0
  115. package/dist/serve-gib/handlers/api/keystone/keystone-get.handler.mjs.map +1 -0
  116. package/dist/serve-gib/handlers/api/keystone/keystone-get.respec.d.mts +2 -0
  117. package/dist/serve-gib/handlers/api/keystone/keystone-get.respec.d.mts.map +1 -0
  118. package/dist/serve-gib/handlers/api/keystone/keystone-get.respec.mjs +98 -0
  119. package/dist/serve-gib/handlers/api/keystone/keystone-get.respec.mjs.map +1 -0
  120. package/dist/serve-gib/handlers/api/keystone/keystone-handler-types.d.mts +22 -0
  121. package/dist/serve-gib/handlers/api/keystone/keystone-handler-types.d.mts.map +1 -0
  122. package/dist/serve-gib/handlers/api/keystone/keystone-handler-types.mjs +19 -0
  123. package/dist/serve-gib/handlers/api/keystone/keystone-handler-types.mjs.map +1 -0
  124. package/dist/serve-gib/handlers/api/keystone/keystone-lookup.handler.d.mts +19 -0
  125. package/dist/serve-gib/handlers/api/keystone/keystone-lookup.handler.d.mts.map +1 -0
  126. package/dist/serve-gib/handlers/api/keystone/keystone-lookup.handler.mjs +82 -0
  127. package/dist/serve-gib/handlers/api/keystone/keystone-lookup.handler.mjs.map +1 -0
  128. package/dist/serve-gib/handlers/api/keystone/keystone-post.handler.d.mts +20 -0
  129. package/dist/serve-gib/handlers/api/keystone/keystone-post.handler.d.mts.map +1 -0
  130. package/dist/serve-gib/handlers/api/keystone/keystone-post.handler.mjs +77 -0
  131. package/dist/serve-gib/handlers/api/keystone/keystone-post.handler.mjs.map +1 -0
  132. package/dist/serve-gib/handlers/api/keystone/keystone-post.respec.d.mts +2 -0
  133. package/dist/serve-gib/handlers/api/keystone/keystone-post.respec.d.mts.map +1 -0
  134. package/dist/serve-gib/handlers/api/keystone/keystone-post.respec.mjs +131 -0
  135. package/dist/serve-gib/handlers/api/keystone/keystone-post.respec.mjs.map +1 -0
  136. package/dist/serve-gib/handlers/api/keystone/sso-config.handler.d.mts +23 -0
  137. package/dist/serve-gib/handlers/api/keystone/sso-config.handler.d.mts.map +1 -0
  138. package/dist/serve-gib/handlers/api/keystone/sso-config.handler.mjs +62 -0
  139. package/dist/serve-gib/handlers/api/keystone/sso-config.handler.mjs.map +1 -0
  140. package/dist/serve-gib/handlers/api/keystone/sso-link.handler.d.mts +23 -0
  141. package/dist/serve-gib/handlers/api/keystone/sso-link.handler.d.mts.map +1 -0
  142. package/dist/serve-gib/handlers/api/keystone/sso-link.handler.mjs +118 -0
  143. package/dist/serve-gib/handlers/api/keystone/sso-link.handler.mjs.map +1 -0
  144. package/dist/serve-gib/handlers/api/keystone/sso-login.handler.d.mts +24 -0
  145. package/dist/serve-gib/handlers/api/keystone/sso-login.handler.d.mts.map +1 -0
  146. package/dist/serve-gib/handlers/api/keystone/sso-login.handler.mjs +160 -0
  147. package/dist/serve-gib/handlers/api/keystone/sso-login.handler.mjs.map +1 -0
  148. package/dist/serve-gib/handlers/error-handler.d.mts +14 -0
  149. package/dist/serve-gib/handlers/error-handler.d.mts.map +1 -0
  150. package/dist/serve-gib/handlers/error-handler.mjs +35 -0
  151. package/dist/serve-gib/handlers/error-handler.mjs.map +1 -0
  152. package/dist/serve-gib/handlers/handler-base.d.mts +129 -0
  153. package/dist/serve-gib/handlers/handler-base.d.mts.map +1 -0
  154. package/dist/serve-gib/handlers/handler-base.mjs +402 -0
  155. package/dist/serve-gib/handlers/handler-base.mjs.map +1 -0
  156. package/dist/serve-gib/handlers/static-handler.d.mts +17 -0
  157. package/dist/serve-gib/handlers/static-handler.d.mts.map +1 -0
  158. package/dist/serve-gib/handlers/static-handler.mjs +85 -0
  159. package/dist/serve-gib/handlers/static-handler.mjs.map +1 -0
  160. package/dist/serve-gib/handlers/ws/sync-upgrade-handler-base.d.mts +35 -0
  161. package/dist/serve-gib/handlers/ws/sync-upgrade-handler-base.d.mts.map +1 -0
  162. package/dist/serve-gib/handlers/ws/sync-upgrade-handler-base.mjs +219 -0
  163. package/dist/serve-gib/handlers/ws/sync-upgrade-handler-base.mjs.map +1 -0
  164. package/dist/serve-gib/handlers/ws/sync-upgrade.handler.d.mts +21 -0
  165. package/dist/serve-gib/handlers/ws/sync-upgrade.handler.d.mts.map +1 -0
  166. package/dist/serve-gib/handlers/ws/sync-upgrade.handler.mjs +21 -0
  167. package/dist/serve-gib/handlers/ws/sync-upgrade.handler.mjs.map +1 -0
  168. package/dist/serve-gib/handlers/ws/ws-helper.d.mts +29 -0
  169. package/dist/serve-gib/handlers/ws/ws-helper.d.mts.map +1 -0
  170. package/dist/serve-gib/handlers/ws/ws-helper.mjs +195 -0
  171. package/dist/serve-gib/handlers/ws/ws-helper.mjs.map +1 -0
  172. package/dist/serve-gib/handlers/ws/ws-types.d.mts +32 -0
  173. package/dist/serve-gib/handlers/ws/ws-types.d.mts.map +1 -0
  174. package/dist/serve-gib/handlers/ws/ws-types.mjs +2 -0
  175. package/dist/serve-gib/handlers/ws/ws-types.mjs.map +1 -0
  176. package/dist/serve-gib/identity-index/identity-index-constants.d.mts +4 -0
  177. package/dist/serve-gib/identity-index/identity-index-constants.d.mts.map +1 -0
  178. package/dist/serve-gib/identity-index/identity-index-constants.mjs +4 -0
  179. package/dist/serve-gib/identity-index/identity-index-constants.mjs.map +1 -0
  180. package/dist/serve-gib/identity-index/identity-index-helpers.d.mts +35 -0
  181. package/dist/serve-gib/identity-index/identity-index-helpers.d.mts.map +1 -0
  182. package/dist/serve-gib/identity-index/identity-index-helpers.mjs +69 -0
  183. package/dist/serve-gib/identity-index/identity-index-helpers.mjs.map +1 -0
  184. package/dist/serve-gib/identity-index/identity-index-service.d.mts +41 -0
  185. package/dist/serve-gib/identity-index/identity-index-service.d.mts.map +1 -0
  186. package/dist/serve-gib/identity-index/identity-index-service.mjs +86 -0
  187. package/dist/serve-gib/identity-index/identity-index-service.mjs.map +1 -0
  188. package/dist/serve-gib/identity-index/identity-index-service.respec.d.mts +2 -0
  189. package/dist/serve-gib/identity-index/identity-index-service.respec.d.mts.map +1 -0
  190. package/dist/serve-gib/identity-index/identity-index-service.respec.mjs +109 -0
  191. package/dist/serve-gib/identity-index/identity-index-service.respec.mjs.map +1 -0
  192. package/dist/serve-gib/identity-index/identity-index-types.d.mts +31 -0
  193. package/dist/serve-gib/identity-index/identity-index-types.d.mts.map +1 -0
  194. package/dist/serve-gib/identity-index/identity-index-types.mjs +2 -0
  195. package/dist/serve-gib/identity-index/identity-index-types.mjs.map +1 -0
  196. package/dist/serve-gib/index.d.mts +50 -0
  197. package/dist/serve-gib/index.d.mts.map +1 -0
  198. package/dist/serve-gib/index.mjs +80 -0
  199. package/dist/serve-gib/index.mjs.map +1 -0
  200. package/dist/serve-gib/keystone-schema-helpers.d.mts +50 -0
  201. package/dist/serve-gib/keystone-schema-helpers.d.mts.map +1 -0
  202. package/dist/serve-gib/keystone-schema-helpers.mjs +99 -0
  203. package/dist/serve-gib/keystone-schema-helpers.mjs.map +1 -0
  204. package/dist/serve-gib/keystone-schema-helpers.respec.d.mts +2 -0
  205. package/dist/serve-gib/keystone-schema-helpers.respec.d.mts.map +1 -0
  206. package/dist/serve-gib/keystone-schema-helpers.respec.mjs +68 -0
  207. package/dist/serve-gib/keystone-schema-helpers.respec.mjs.map +1 -0
  208. package/dist/serve-gib/metaspace-nodeindexedspace/metaspace-nodeindexedspace.d.mts +38 -0
  209. package/dist/serve-gib/metaspace-nodeindexedspace/metaspace-nodeindexedspace.d.mts.map +1 -0
  210. package/dist/serve-gib/metaspace-nodeindexedspace/metaspace-nodeindexedspace.mjs +85 -0
  211. package/dist/serve-gib/metaspace-nodeindexedspace/metaspace-nodeindexedspace.mjs.map +1 -0
  212. package/dist/serve-gib/path-constants.d.mts +102 -0
  213. package/dist/serve-gib/path-constants.d.mts.map +1 -0
  214. package/dist/serve-gib/path-constants.mjs +107 -0
  215. package/dist/serve-gib/path-constants.mjs.map +1 -0
  216. package/dist/serve-gib/path-helper.d.mts +23 -0
  217. package/dist/serve-gib/path-helper.d.mts.map +1 -0
  218. package/dist/serve-gib/path-helper.mjs +107 -0
  219. package/dist/serve-gib/path-helper.mjs.map +1 -0
  220. package/dist/serve-gib/path-helper.respec.d.mts +2 -0
  221. package/dist/serve-gib/path-helper.respec.d.mts.map +1 -0
  222. package/dist/serve-gib/path-helper.respec.mjs +83 -0
  223. package/dist/serve-gib/path-helper.respec.mjs.map +1 -0
  224. package/dist/serve-gib/serve-gib-helpers.d.mts +14 -0
  225. package/dist/serve-gib/serve-gib-helpers.d.mts.map +1 -0
  226. package/dist/serve-gib/serve-gib-helpers.mjs +30 -0
  227. package/dist/serve-gib/serve-gib-helpers.mjs.map +1 -0
  228. package/dist/serve-gib/serve-gib-v1.d.mts +40 -0
  229. package/dist/serve-gib/serve-gib-v1.d.mts.map +1 -0
  230. package/dist/serve-gib/serve-gib-v1.mjs +157 -0
  231. package/dist/serve-gib/serve-gib-v1.mjs.map +1 -0
  232. package/dist/serve-gib/serve-gib.respec.d.mts +2 -0
  233. package/dist/serve-gib/serve-gib.respec.d.mts.map +1 -0
  234. package/dist/serve-gib/serve-gib.respec.mjs +85 -0
  235. package/dist/serve-gib/serve-gib.respec.mjs.map +1 -0
  236. package/dist/serve-gib/server-constants.d.mts +3 -0
  237. package/dist/serve-gib/server-constants.d.mts.map +1 -0
  238. package/dist/serve-gib/server-constants.mjs +3 -0
  239. package/dist/serve-gib/server-constants.mjs.map +1 -0
  240. package/dist/serve-gib/types.d.mts +94 -0
  241. package/dist/serve-gib/types.d.mts.map +1 -0
  242. package/dist/serve-gib/types.mjs +7 -0
  243. package/dist/serve-gib/types.mjs.map +1 -0
  244. package/dist/witness/space/metaspace/metaspace-nodespace/metaspace-nodespace-helper.mjs.map +1 -1
  245. package/dist/witness/space/metaspace/metaspace-nodespace/metaspace-nodespace.d.mts +5 -0
  246. package/dist/witness/space/metaspace/metaspace-nodespace/metaspace-nodespace.d.mts.map +1 -1
  247. package/dist/witness/space/metaspace/metaspace-nodespace/metaspace-nodespace.mjs +37 -0
  248. package/dist/witness/space/metaspace/metaspace-nodespace/metaspace-nodespace.mjs.map +1 -1
  249. package/dist/witness/space/node-filesystem-space/node-filesystem-space-helper.mjs +1 -1
  250. package/dist/witness/space/node-filesystem-space/node-filesystem-space-helper.mjs.map +1 -1
  251. package/dist/witness/space/node-filesystem-space/node-filesystem-space-types.d.mts.map +1 -1
  252. package/dist/witness/space/node-filesystem-space/node-filesystem-space-v1.d.mts.map +1 -1
  253. package/dist/witness/space/node-filesystem-space/node-filesystem-space-v1.mjs.map +1 -1
  254. package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/node-indexed-filesystem-space-v1.d.mts.map +1 -1
  255. package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_createAndInit.node-indexed-filesystem-space-v1.respec.mjs.map +1 -1
  256. package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_persistTransformResult.node-indexed-filesystem-space-v1.respec.mjs.map +1 -1
  257. package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_putGetDelete.node-indexed-filesystem-space-v1.respec.mjs.map +1 -1
  258. package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_registerNewIbGib_GetLatest.node-indexed-filesystem-space-v1.respec.mjs.map +1 -1
  259. package/dist/witness/space/node-filesystem-space/respec/testSpace_createAndInit.node-filesystem-space-v1.respec.mjs.map +1 -1
  260. package/dist/witness/space/node-filesystem-space/respec/testSpace_persistTransformResult.node-filesystem-space-v1.respec.mjs.map +1 -1
  261. package/dist/witness/space/node-filesystem-space/respec/testSpace_putGetDelete.node-filesystem-space-v1.respec.mjs.map +1 -1
  262. package/dist/witness/space/node-filesystem-space/respec/testSpace_registerNewIbGib_GetLatest.node-filesystem-space-v1.respec.mjs.map +1 -1
  263. package/package.json +2 -2
  264. package/src/email/aws/aws-sigv4-helper.mts +139 -0
  265. package/src/email/aws/email-receiver-aws.mts +107 -0
  266. package/src/email/aws/email-sender-aws.mts +130 -0
  267. package/src/email/aws/index.mts +7 -0
  268. package/src/email/email-constants.mts +18 -0
  269. package/src/email/email-helpers.mts +160 -0
  270. package/src/email/email-receiver.mts +29 -0
  271. package/src/email/email-sender.mts +44 -0
  272. package/src/email/email-service.respec.mts +134 -0
  273. package/src/email/email-types.mts +59 -0
  274. package/src/email/index.mts +11 -0
  275. package/src/email/mock/email-sender-mock.mts +54 -0
  276. package/src/email/mock/index.mts +5 -0
  277. package/src/index.mts +41 -0
  278. package/src/respec-gib.node.mts +4 -5
  279. package/src/serve-gib/CHANGELOG.md +34 -0
  280. package/src/serve-gib/README.md +77 -0
  281. package/src/serve-gib/SERVE_REFACTOR_IMPLEMENTATION.md +112 -0
  282. package/src/serve-gib/bootstrap-helper.mts +141 -0
  283. package/src/serve-gib/bootstrap-helper.respec.mts +100 -0
  284. package/src/serve-gib/constants.mts +1 -0
  285. package/src/serve-gib/handlers/api/debug/ws-echo.handler.mts +105 -0
  286. package/src/serve-gib/handlers/api/email/email-inbound.handler.mts +67 -0
  287. package/src/serve-gib/handlers/api/email/email-outbound.handler.mts +82 -0
  288. package/src/serve-gib/handlers/api/health.handler.mts +23 -0
  289. package/src/serve-gib/handlers/api/health.respec.mts +51 -0
  290. package/src/serve-gib/handlers/api/ibgib/ibgib-handler-types.mts +49 -0
  291. package/src/serve-gib/handlers/api/ibgib/ibgib.handler.mts +176 -0
  292. package/src/serve-gib/handlers/api/keystone/keystone-check-email.handler.mts +60 -0
  293. package/src/serve-gib/handlers/api/keystone/keystone-evolve.handler.mts +150 -0
  294. package/src/serve-gib/handlers/api/keystone/keystone-genesis.handler.mts +171 -0
  295. package/src/serve-gib/handlers/api/keystone/keystone-get.handler.mts +198 -0
  296. package/src/serve-gib/handlers/api/keystone/keystone-get.respec.mts +106 -0
  297. package/src/serve-gib/handlers/api/keystone/keystone-handler-types.mts +29 -0
  298. package/src/serve-gib/handlers/api/keystone/keystone-lookup.handler.mts +95 -0
  299. package/src/serve-gib/handlers/api/keystone/keystone-post.handler.mts +75 -0
  300. package/src/serve-gib/handlers/api/keystone/keystone-post.respec.mts +130 -0
  301. package/src/serve-gib/handlers/api/keystone/sso-config.handler.mts +66 -0
  302. package/src/serve-gib/handlers/api/keystone/sso-link.handler.mts +140 -0
  303. package/src/serve-gib/handlers/api/keystone/sso-login.handler.mts +190 -0
  304. package/src/serve-gib/handlers/error-handler.mts +36 -0
  305. package/src/serve-gib/handlers/handler-base.mts +383 -0
  306. package/src/serve-gib/handlers/static-handler.mts +83 -0
  307. package/src/serve-gib/handlers/ws/sync-upgrade-handler-base.mts +233 -0
  308. package/src/serve-gib/handlers/ws/sync-upgrade.handler.mts +24 -0
  309. package/src/serve-gib/handlers/ws/ws-helper.mts +216 -0
  310. package/src/serve-gib/handlers/ws/ws-types.mts +53 -0
  311. package/src/serve-gib/identity-index/identity-index-constants.mts +3 -0
  312. package/src/serve-gib/identity-index/identity-index-helpers.mts +85 -0
  313. package/src/serve-gib/identity-index/identity-index-service.mts +109 -0
  314. package/src/serve-gib/identity-index/identity-index-service.respec.mts +135 -0
  315. package/src/serve-gib/identity-index/identity-index-types.mts +33 -0
  316. package/src/serve-gib/index.mts +92 -0
  317. package/src/serve-gib/keystone-schema-helpers.mts +120 -0
  318. package/src/serve-gib/keystone-schema-helpers.respec.mts +85 -0
  319. package/src/serve-gib/metaspace-nodeindexedspace/metaspace-nodeindexedspace.mts +109 -0
  320. package/src/serve-gib/path-constants.mts +119 -0
  321. package/src/serve-gib/path-helper.mts +101 -0
  322. package/src/serve-gib/path-helper.respec.mts +99 -0
  323. package/src/serve-gib/serve-gib-helpers.mts +32 -0
  324. package/src/serve-gib/serve-gib-v1.mts +172 -0
  325. package/src/serve-gib/serve-gib.respec.mts +90 -0
  326. package/src/serve-gib/server-constants.mts +2 -0
  327. package/src/serve-gib/types.mts +102 -0
  328. package/src/witness/space/metaspace/metaspace-nodespace/metaspace-nodespace.mts +41 -0
  329. package/src/witness/space/node-filesystem-space/node-filesystem-space-helper.mts +1 -1
@@ -0,0 +1,72 @@
1
+ /**
2
+ * @module serve-gib/handlers/api/email/email-outbound
3
+ *
4
+ * Handler for POST /api/email/send
5
+ */
6
+ import { extractErrorMsg } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
7
+ import { EmailSenderAws } from '../../../../email/aws/email-sender-aws.mjs';
8
+ import { EmailSenderMock } from '../../../../email/mock/email-sender-mock.mjs';
9
+ import { API_PATH_REGEXES } from '../../../path-constants.mjs';
10
+ import { ServeGibHandlerBase } from '../../handler-base.mjs';
11
+ /**
12
+ * POST /api/email/send
13
+ * Validates request payload and dispatches outbound email via the active EmailSender driver.
14
+ */
15
+ export class EmailOutboundHandler extends ServeGibHandlerBase {
16
+ lc = `[${EmailOutboundHandler.name}]`;
17
+ method = 'POST';
18
+ regex = API_PATH_REGEXES.EMAIL_SEND;
19
+ sender;
20
+ constructor(options = {}) {
21
+ super();
22
+ if (options.sender) {
23
+ this.sender = options.sender;
24
+ }
25
+ else {
26
+ const mode = process.env.EMAIL_MODE || 'mock';
27
+ if (mode === 'aws') {
28
+ this.sender = new EmailSenderAws({
29
+ accessKeyId: process.env.AWS_ACCESS_KEY_ID || '',
30
+ secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY || '',
31
+ region: process.env.AWS_REGION || 'us-east-1',
32
+ });
33
+ }
34
+ else {
35
+ this.sender = new EmailSenderMock();
36
+ }
37
+ }
38
+ }
39
+ async handleRouteImpl(reqCtx) {
40
+ const lc = `${this.lc}[${this.handleRouteImpl.name}]`;
41
+ try {
42
+ if (reqCtx.method !== 'POST') {
43
+ return this.error(405, 'Method Not Allowed');
44
+ }
45
+ if (!reqCtx.body) {
46
+ return this.error(400, 'Request body is empty');
47
+ }
48
+ let emailData;
49
+ try {
50
+ emailData = JSON.parse(reqCtx.body);
51
+ }
52
+ catch {
53
+ return this.error(400, 'Request body must be valid JSON');
54
+ }
55
+ const sendResult = await this.sender.sendEmail(emailData);
56
+ if (sendResult.success) {
57
+ console.log(`${lc} Successfully dispatched outbound email msgId: ${sendResult.messageId} (I: 0123456789abcdef0a1b2c3d4e5f6a7b)`);
58
+ return this.ok(sendResult, sendResult.statusCode || 200);
59
+ }
60
+ else {
61
+ console.error(`${lc} Failed to send email: ${sendResult.error} (E: 123456789abcdef1a2b3c4d5e6f7a8b9)`);
62
+ return this.error(sendResult.statusCode || 500, sendResult.error || 'Failed to send email');
63
+ }
64
+ }
65
+ catch (error) {
66
+ const emsg = extractErrorMsg(error);
67
+ console.error(`${lc} Outbound email error: ${emsg} (E: 23456789abcdef2a3b4c5d6e7f8a9b0c)`);
68
+ return this.error(500, `Outbound email error: ${emsg}`);
69
+ }
70
+ }
71
+ }
72
+ //# sourceMappingURL=email-outbound.handler.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email-outbound.handler.mjs","sourceRoot":"","sources":["../../../../../src/serve-gib/handlers/api/email/email-outbound.handler.mts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @module serve-gib/handlers/api/health
3
+ */
4
+ import { ServeGibHandlerBase } from '../handler-base.mjs';
5
+ import { RequestContext, ResponseResult, ServeGibHttpMethod } from '../../types.mjs';
6
+ /**
7
+ * GET /api/health
8
+ */
9
+ export declare class HealthHandler extends ServeGibHandlerBase {
10
+ protected method: ServeGibHttpMethod;
11
+ protected regex: RegExp;
12
+ protected handleRouteImpl(reqCtx: RequestContext): Promise<ResponseResult | undefined>;
13
+ }
14
+ //# sourceMappingURL=health.handler.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health.handler.d.mts","sourceRoot":"","sources":["../../../../src/serve-gib/handlers/api/health.handler.mts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAGrF;;GAEG;AACH,qBAAa,aAAc,SAAQ,mBAAmB;IAClD,UAAmB,MAAM,EAAE,kBAAkB,CAAS;IACtD,UAAmB,KAAK,SAA2B;IAEnD,UAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAM3F;CACJ"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @module serve-gib/handlers/api/health
3
+ */
4
+ import { ServeGibHandlerBase } from '../handler-base.mjs';
5
+ import { API_PATH_REGEXES } from '../../path-constants.mjs';
6
+ /**
7
+ * GET /api/health
8
+ */
9
+ export class HealthHandler extends ServeGibHandlerBase {
10
+ method = 'ALL';
11
+ regex = API_PATH_REGEXES.HEALTH;
12
+ async handleRouteImpl(reqCtx) {
13
+ if (reqCtx.method === 'GET') {
14
+ return this.ok({ status: 'ok', timestamp: new Date().toISOString() });
15
+ }
16
+ else {
17
+ throw new Error(`info.method !== 'GET' in ${HealthHandler.name} (E: bfff3c547b5827ca7845277804057f26)`);
18
+ }
19
+ }
20
+ }
21
+ //# sourceMappingURL=health.handler.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health.handler.mjs","sourceRoot":"","sources":["../../../../src/serve-gib/handlers/api/health.handler.mts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D;;GAEG;AACH,MAAM,OAAO,aAAc,SAAQ,mBAAmB;IAC/B,MAAM,GAAuB,KAAK,CAAC;IACnC,KAAK,GAAG,gBAAgB,CAAC,MAAM,CAAC;IAEzC,KAAK,CAAC,eAAe,CAAC,MAAsB;QAClD,IAAI,MAAM,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAC1E,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,KAAK,CAAC,4BAA4B,aAAa,CAAC,IAAI,wCAAwC,CAAC,CAAC;QAC5G,CAAC;IACL,CAAC;CACJ"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=health.respec.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health.respec.d.mts","sourceRoot":"","sources":["../../../../src/serve-gib/handlers/api/health.respec.mts"],"names":[],"mappings":""}
@@ -0,0 +1,47 @@
1
+ import { respecfully, iReckon, ifWe } from '@ibgib/helper-gib/dist/respec-gib/respec-gib.mjs';
2
+ import { ServeGib_V1 } from '../../serve-gib-v1.mjs';
3
+ import { HealthHandler } from './health.handler.mjs';
4
+ import { ErrorHandler } from '../error-handler.mjs';
5
+ const sir = `[${import.meta.url}]`;
6
+ await respecfully(sir, 'Health Handler Integration', async () => {
7
+ const testDataDir = './test-data-health';
8
+ const port = 3002;
9
+ await ifWe(sir, 'get a 200 OK from /api/health', async () => {
10
+ // 1. Setup ServeGib_V1
11
+ const serveGib = new ServeGib_V1({
12
+ port,
13
+ dataDir: testDataDir,
14
+ handlers: [new HealthHandler()],
15
+ errorHandler: new ErrorHandler()
16
+ });
17
+ // 2. Mock GET Request
18
+ const req = {
19
+ url: '/api/health',
20
+ method: 'GET',
21
+ headers: {},
22
+ on: (event, cb) => {
23
+ if (event === 'end') {
24
+ cb();
25
+ }
26
+ }
27
+ };
28
+ let capturedStatus = 0;
29
+ let capturedBody = null;
30
+ const res = {
31
+ writeHead: (status) => {
32
+ capturedStatus = status;
33
+ },
34
+ end: (body) => {
35
+ capturedBody = JSON.parse(body);
36
+ },
37
+ statusCode: 0
38
+ };
39
+ // 3. Handle
40
+ await serveGib.handleRequest(req, res);
41
+ // 4. Verify
42
+ iReckon(sir, capturedStatus).asTo('captured status code').isGonnaBe(200);
43
+ iReckon(sir, capturedBody.status).asTo('captured body status').isGonnaBe('ok');
44
+ iReckon(sir, capturedBody.timestamp).asTo('captured body timestamp').isGonnaBe(capturedBody.timestamp);
45
+ });
46
+ });
47
+ //# sourceMappingURL=health.respec.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health.respec.mjs","sourceRoot":"","sources":["../../../../src/serve-gib/handlers/api/health.respec.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAa,MAAM,kDAAkD,CAAC;AACzG,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,MAAM,GAAG,GAAG,IAAI,OAAO,IAAI,CAAC,GAAG,GAAG,CAAC;AAEnC,MAAM,WAAW,CAAC,GAAG,EAAE,4BAA4B,EAAE,KAAK,IAAI,EAAE;IAC5D,MAAM,WAAW,GAAG,oBAAoB,CAAC;IACzC,MAAM,IAAI,GAAG,IAAI,CAAC;IAElB,MAAM,IAAI,CAAC,GAAG,EAAE,+BAA+B,EAAE,KAAK,IAAI,EAAE;QACxD,uBAAuB;QACvB,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC;YAC7B,IAAI;YACJ,OAAO,EAAE,WAAW;YACpB,QAAQ,EAAE,CAAC,IAAI,aAAa,EAAE,CAAC;YAC/B,YAAY,EAAE,IAAI,YAAY,EAAE;SACnC,CAAC,CAAC;QAEH,sBAAsB;QACtB,MAAM,GAAG,GAAQ;YACb,GAAG,EAAE,aAAa;YAClB,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,EAAE;YACX,EAAE,EAAE,CAAC,KAAa,EAAE,EAAO,EAAE,EAAE;gBAC3B,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;oBAAC,EAAE,EAAE,CAAC;gBAAC,CAAC;YAClC,CAAC;SACJ,CAAC;QAEF,IAAI,cAAc,GAAW,CAAC,CAAC;QAC/B,IAAI,YAAY,GAAQ,IAAI,CAAC;QAC7B,MAAM,GAAG,GAAQ;YACb,SAAS,EAAE,CAAC,MAAc,EAAE,EAAE;gBAC1B,cAAc,GAAG,MAAM,CAAC;YAC5B,CAAC;YACD,GAAG,EAAE,CAAC,IAAY,EAAE,EAAE;gBAClB,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACpC,CAAC;YACD,UAAU,EAAE,CAAC;SAChB,CAAC;QAEF,YAAY;QACZ,MAAM,QAAQ,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAEvC,YAAY;QACZ,OAAO,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACzE,OAAO,CAAC,GAAG,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC/E,OAAO,CAAC,GAAG,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAC3G,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -0,0 +1,41 @@
1
+ import { IbGibAddr } from "@ibgib/ts-gib/dist/types.mjs";
2
+ import { DomainInfo } from "../../../types.mjs";
3
+ export interface IbGibParams {
4
+ domainInfo: DomainInfo;
5
+ ibGibIb: string;
6
+ ibGibGib: string;
7
+ ibGibAddr: IbGibAddr;
8
+ }
9
+ export declare const DEFAULT_QUERY_PARAMS_GET_IBGIB: {
10
+ /**
11
+ * If true, will get the latest ibgib.
12
+ */
13
+ getLatest: boolean;
14
+ /**
15
+ * If true, will get the ibgib's entire dependency graph
16
+ */
17
+ getGraph: boolean;
18
+ /**
19
+ * If true, returns only the resolved address (addr) rather than the full
20
+ * ibgib or graph body. Useful for a lightweight "tip check" before initiating
21
+ * a full sync: client compares `latestAddr` with its locally known addr.
22
+ *
23
+ * ## notes
24
+ *
25
+ * Typically combined with `getLatest: true` to ask "what is the server's
26
+ * current tip for this timeline?" without paying the cost of fetching the
27
+ * full ibgib body or graph.
28
+ *
29
+ * When `getLatest: false` and `addrOnly: true`, returns the addr as-is
30
+ * (i.e., confirms the given addr exists on the server).
31
+ */
32
+ addrOnly: boolean;
33
+ };
34
+ /**
35
+ * @see {@link DEFAULT_QUERY_PARAMS_GET_IBGIB} key/values for jsdocs
36
+ */
37
+ export type IbGibGetQueryParams = Partial<typeof DEFAULT_QUERY_PARAMS_GET_IBGIB>;
38
+ export type KNOWN_QUERY_PARAMS_IBGIB_GET = keyof IbGibGetQueryParams;
39
+ export declare const KNOWN_QUERY_PARAMS_IBGIB_GET: KNOWN_QUERY_PARAMS_IBGIB_GET[];
40
+ export declare function isKnownQueryParamsKey_IbGibGet(key: any): key is KNOWN_QUERY_PARAMS_IBGIB_GET;
41
+ //# sourceMappingURL=ibgib-handler-types.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ibgib-handler-types.d.mts","sourceRoot":"","sources":["../../../../../src/serve-gib/handlers/api/ibgib/ibgib-handler-types.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAEzD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,MAAM,WAAW,WAAW;IACxB,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,SAAS,CAAC;CACxB;AAGD,eAAO,MAAM,8BAA8B;IACvC;;OAEG;IACH,SAAS;IACT;;OAEG;IACH,QAAQ;IACR;;;;;;;;;;;;;OAaG;IACH,QAAQ;CACX,CAAC;AACF;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,OAAO,CAAC,OAAO,8BAA8B,CAAC,CAAC;AACjF,MAAM,MAAM,4BAA4B,GAAG,MAAM,mBAAmB,CAAC;AACrE,eAAO,MAAM,4BAA4B,EAAkD,4BAA4B,EAAE,CAAC;AAC1H,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,4BAA4B,CAI5F"}
@@ -0,0 +1,34 @@
1
+ // #region IbGibGetQueryParams
2
+ export const DEFAULT_QUERY_PARAMS_GET_IBGIB = {
3
+ /**
4
+ * If true, will get the latest ibgib.
5
+ */
6
+ getLatest: false, // Default to false for regular ibgibs
7
+ /**
8
+ * If true, will get the ibgib's entire dependency graph
9
+ */
10
+ getGraph: false, // Default to false for regular ibgibs
11
+ /**
12
+ * If true, returns only the resolved address (addr) rather than the full
13
+ * ibgib or graph body. Useful for a lightweight "tip check" before initiating
14
+ * a full sync: client compares `latestAddr` with its locally known addr.
15
+ *
16
+ * ## notes
17
+ *
18
+ * Typically combined with `getLatest: true` to ask "what is the server's
19
+ * current tip for this timeline?" without paying the cost of fetching the
20
+ * full ibgib body or graph.
21
+ *
22
+ * When `getLatest: false` and `addrOnly: true`, returns the addr as-is
23
+ * (i.e., confirms the given addr exists on the server).
24
+ */
25
+ addrOnly: false,
26
+ };
27
+ export const KNOWN_QUERY_PARAMS_IBGIB_GET = Object.keys(DEFAULT_QUERY_PARAMS_GET_IBGIB);
28
+ export function isKnownQueryParamsKey_IbGibGet(key) {
29
+ return !!key && typeof key === 'string' ?
30
+ KNOWN_QUERY_PARAMS_IBGIB_GET.includes(key) :
31
+ false;
32
+ }
33
+ // #endregion IbGibGetQueryParams
34
+ //# sourceMappingURL=ibgib-handler-types.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ibgib-handler-types.mjs","sourceRoot":"","sources":["../../../../../src/serve-gib/handlers/api/ibgib/ibgib-handler-types.mts"],"names":[],"mappings":"AAWA,8BAA8B;AAC9B,MAAM,CAAC,MAAM,8BAA8B,GAAG;IAC1C;;OAEG;IACH,SAAS,EAAE,KAAK,EAAE,sCAAsC;IACxD;;OAEG;IACH,QAAQ,EAAE,KAAK,EAAE,sCAAsC;IACvD;;;;;;;;;;;;;OAaG;IACH,QAAQ,EAAE,KAAK;CAClB,CAAC;AAMF,MAAM,CAAC,MAAM,4BAA4B,GAAG,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAmC,CAAC;AAC1H,MAAM,UAAU,8BAA8B,CAAC,GAAQ;IACnD,OAAO,CAAC,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC;QACrC,4BAA4B,CAAC,QAAQ,CAAC,GAAU,CAAC,CAAC,CAAC;QACnD,KAAK,CAAC;AACd,CAAC;AACD,iCAAiC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * @module serve-gib/handlers/api/ibgib
3
+ */
4
+ import { IbGib_V1 } from '@ibgib/ts-gib/dist/V1/types.mjs';
5
+ import { ServeGibHandlerWithMetaspaceBase } from '../../handler-base.mjs';
6
+ import { RequestContext, ResponseResult, ServeGibHttpMethod } from '../../../types.mjs';
7
+ import { IbGibGetQueryParams, IbGibParams } from './ibgib-handler-types.mjs';
8
+ export interface IbGibGraphResponseBody {
9
+ addr: string;
10
+ count: number;
11
+ graph: Record<string, IbGib_V1>;
12
+ }
13
+ /**
14
+ * GET /api/ibgib/:domainAddr/:ibGibAddr
15
+ */
16
+ export declare class IbGibHandler extends ServeGibHandlerWithMetaspaceBase<IbGibParams, IbGibGetQueryParams> {
17
+ protected lc: string;
18
+ protected method: ServeGibHttpMethod;
19
+ protected regex: RegExp;
20
+ protected parseParamsImpl(reqCtx: RequestContext<IbGibParams, IbGibGetQueryParams>): Promise<IbGibParams | undefined>;
21
+ protected validateQueryParams({ queryParams }: {
22
+ queryParams: any;
23
+ }): Promise<string[]>;
24
+ protected handleRouteImpl(reqCtx: RequestContext<IbGibParams, IbGibGetQueryParams>): Promise<ResponseResult | undefined>;
25
+ }
26
+ //# sourceMappingURL=ibgib.handler.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ibgib.handler.d.mts","sourceRoot":"","sources":["../../../../../src/serve-gib/handlers/api/ibgib/ibgib.handler.mts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAG3D,OAAO,EAAE,gCAAgC,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAGxF,OAAO,EAC6B,mBAAmB,EAAE,WAAW,EAEnE,MAAM,2BAA2B,CAAC;AAGnC,MAAM,WAAW,sBAAsB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;CACnC;AAID;;GAEG;AACH,qBAAa,YAAa,SAAQ,gCAAgC,CAAC,WAAW,EAAE,mBAAmB,CAAC;IAChG,UAAmB,EAAE,EAAE,MAAM,CAA4B;IACzD,UAAmB,MAAM,EAAE,kBAAkB,CAAS;IACtD,UAAmB,KAAK,SAA+B;IAEvD,UAAyB,eAAe,CAAC,MAAM,EAAE,cAAc,CAAC,WAAW,EAAE,mBAAmB,CAAC,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAsBnI;IAED,UAAyB,mBAAmB,CAAC,EAAE,WAAW,EAAE,EAAE;QAAE,WAAW,EAAE,GAAG,CAAC;KAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAmCtG;IAED,UAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,CAAC,WAAW,EAAE,mBAAmB,CAAC,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CA8E7H;CACJ"}
@@ -0,0 +1,179 @@
1
+ /**
2
+ * @module serve-gib/handlers/api/ibgib
3
+ */
4
+ import { extractErrorMsg } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
5
+ import { getIbGibAddr } from '@ibgib/ts-gib/dist/helper.mjs';
6
+ import { GLOBAL_LOG_A_LOT } from '../../../constants.mjs';
7
+ import { ServeGibHandlerWithMetaspaceBase } from '../../handler-base.mjs';
8
+ import { validateAddressSegment } from '../../../path-helper.mjs';
9
+ import { API_PATH_REGEXES } from '../../../path-constants.mjs';
10
+ import { DEFAULT_QUERY_PARAMS_GET_IBGIB, isKnownQueryParamsKey_IbGibGet, KNOWN_QUERY_PARAMS_IBGIB_GET } from './ibgib-handler-types.mjs';
11
+ import { validateAndCoerceBooleanQueryParam } from '../../../serve-gib-helpers.mjs';
12
+ const logalot = GLOBAL_LOG_A_LOT;
13
+ /**
14
+ * GET /api/ibgib/:domainAddr/:ibGibAddr
15
+ */
16
+ export class IbGibHandler extends ServeGibHandlerWithMetaspaceBase {
17
+ lc = `[${IbGibHandler.name}]`;
18
+ method = 'GET';
19
+ regex = API_PATH_REGEXES.IBGIB_ADDR;
20
+ async parseParamsImpl(reqCtx) {
21
+ const lc = `${this.lc}[${this.parseParamsImpl.name}]`;
22
+ try {
23
+ if (logalot) {
24
+ console.log(`${lc} starting...`);
25
+ }
26
+ const match = reqCtx.pathname.match(this.regex);
27
+ if (!match) {
28
+ throw new Error(`(UNEXPECTED) match falsy for regex? at this point, we have passed canHandleRoute, so this should parse correctly. (E: 8ce0810a3a88f420639bf8286df1d826)`);
29
+ }
30
+ const domainIb = decodeURIComponent(match[1]);
31
+ const domainGib = decodeURIComponent(match[2]);
32
+ const domainAddr = getIbGibAddr({ ib: domainIb, gib: domainGib });
33
+ const ibGibIb = decodeURIComponent(match[3]);
34
+ const ibGibGib = decodeURIComponent(match[4]);
35
+ const ibGibAddr = getIbGibAddr({ ib: ibGibIb, gib: ibGibGib });
36
+ return {
37
+ ibGibIb, ibGibGib, ibGibAddr,
38
+ domainInfo: this.getDomainInfo({ domainAddr }),
39
+ };
40
+ }
41
+ catch (error) {
42
+ console.error(`${lc} ${extractErrorMsg(error)}`);
43
+ throw error;
44
+ }
45
+ finally {
46
+ if (logalot) {
47
+ console.log(`${lc} complete.`);
48
+ }
49
+ }
50
+ }
51
+ async validateQueryParams({ queryParams }) {
52
+ const lc = `${this.lc}[${this.validateQueryParams.name}]`;
53
+ try {
54
+ if (logalot) {
55
+ console.log(`${lc} starting...`);
56
+ }
57
+ const errors = [];
58
+ // strict checking
59
+ const queryParamsKeys = Object.keys(queryParams);
60
+ const invalidKeys = queryParamsKeys.filter(x => !isKnownQueryParamsKey_IbGibGet(x));
61
+ if (invalidKeys.length > 0) {
62
+ throw new Error(`invalid query params keys: ${invalidKeys.join(', ')}. valid query params keys: ${KNOWN_QUERY_PARAMS_IBGIB_GET.join(', ')} (E: b7e8a9f2c1d34e56b89a01d4f2e7c326)`);
63
+ }
64
+ const ValidationFns = {
65
+ getLatest: async () => validateAndCoerceBooleanQueryParam(queryParams, 'getLatest', errors),
66
+ getGraph: async () => validateAndCoerceBooleanQueryParam(queryParams, 'getGraph', errors),
67
+ addrOnly: async () => validateAndCoerceBooleanQueryParam(queryParams, 'addrOnly', errors),
68
+ };
69
+ // execute all validation functions
70
+ for (const fn of Object.values(ValidationFns)) {
71
+ await fn();
72
+ }
73
+ return errors;
74
+ }
75
+ catch (error) {
76
+ console.error(`${lc} ${extractErrorMsg(error)}`);
77
+ throw error;
78
+ }
79
+ finally {
80
+ if (logalot) {
81
+ console.log(`${lc} complete.`);
82
+ }
83
+ }
84
+ }
85
+ async handleRouteImpl(reqCtx) {
86
+ const lc = `${this.lc}[${this.handleRouteImpl.name}]`;
87
+ try {
88
+ if (logalot) {
89
+ console.log(`${lc} starting... (I: 03d6a889b1f8af879c0f7158a3b3de26)`);
90
+ }
91
+ if (logalot) {
92
+ console.log(`${lc} starting... (I: 03d6a889b1f8af879c0f7158a3b3de26)`);
93
+ }
94
+ if (!reqCtx.metaspace) {
95
+ throw new Error(`(UNEXPECTED) metaspace falsy? we should have initialized it by now since this is a domain-dependent handler (E: 864661c668d2aa1918b7ee677a7d9c26)`);
96
+ }
97
+ const { ibGibIb, ibGibGib } = reqCtx.params;
98
+ if (!ibGibIb || !ibGibGib) {
99
+ return undefined;
100
+ }
101
+ // Reconstruct addr from params
102
+ const rawAddr = `${ibGibIb}^${ibGibGib}`;
103
+ if (!validateAddressSegment(rawAddr))
104
+ return this.error(400, 'Invalid address format');
105
+ const addr = rawAddr;
106
+ const queryParams = {
107
+ ...DEFAULT_QUERY_PARAMS_GET_IBGIB,
108
+ ...(reqCtx.queryParams ?? {}),
109
+ };
110
+ const { getLatest, getGraph, addrOnly } = queryParams;
111
+ const space = await reqCtx.metaspace.getLocalUserSpace({ lock: false });
112
+ if (!space) {
113
+ throw new Error(`(UNEXPECTED) couldn't get default local user space? (E: ec6161ea3a08892ad8bfd1b7b0d79826)`);
114
+ }
115
+ let addr_latest = addr;
116
+ if (getLatest) {
117
+ const latestAddr = await reqCtx.metaspace.getLatestAddr({ addr, space });
118
+ if (latestAddr) {
119
+ addr_latest = latestAddr;
120
+ }
121
+ }
122
+ // Lightweight tip-check: return only the resolved address.
123
+ // Client uses this to decide whether a full sync is necessary
124
+ // without incurring the cost of fetching the full ibgib or graph.
125
+ if (addrOnly && !getGraph) {
126
+ return this.ok({ addr: addr_latest, clientAddr: addr });
127
+ } /* <<<<< returns early */
128
+ if (getGraph) {
129
+ const resGraph = await reqCtx.metaspace.getDependencyGraph({
130
+ ibGibAddr: addr_latest,
131
+ space,
132
+ live: getLatest,
133
+ });
134
+ const addrs = Object.keys(resGraph);
135
+ if (addrs.length > 0) {
136
+ if (addrOnly) {
137
+ // Return only the address list for delta negotiation (smart diff):
138
+ // client compares these against what it already has to determine
139
+ // the minimal set it needs to fetch.
140
+ return this.ok({ addr: addr_latest, clientAddr: addr, addrs });
141
+ }
142
+ else {
143
+ const responseBody = {
144
+ addr: addr_latest,
145
+ count: addrs.length,
146
+ graph: resGraph
147
+ };
148
+ return this.ok(responseBody);
149
+ }
150
+ }
151
+ else {
152
+ return this.notFound(`Graph not found for ${addr_latest} (E: 89b259f13ae5e4f0d8287f6c0475a826)`);
153
+ }
154
+ }
155
+ else {
156
+ const resGet = await reqCtx.metaspace.get({ space, addr: addr_latest });
157
+ if (resGet.success && resGet.ibGibs?.length === 1) {
158
+ const ibGib = resGet.ibGibs[0];
159
+ return this.ok(ibGib);
160
+ }
161
+ else {
162
+ return this.notFound(`IbGib not found for ${addr_latest} (E: 017621e0a8086832ff06cfc884b8c426)`);
163
+ }
164
+ }
165
+ }
166
+ catch (error) {
167
+ if (logalot) {
168
+ console.error(extractErrorMsg(error));
169
+ }
170
+ return this.error(500, extractErrorMsg(error));
171
+ }
172
+ finally {
173
+ if (logalot) {
174
+ console.log(`${lc} complete.`);
175
+ }
176
+ }
177
+ }
178
+ }
179
+ //# sourceMappingURL=ibgib.handler.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ibgib.handler.mjs","sourceRoot":"","sources":["../../../../../src/serve-gib/handlers/api/ibgib/ibgib.handler.mts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @module serve-gib/handlers/api/keystone/keystone-check-email.handler
3
+ *
4
+ * GET /api/keystone/check-email?email=foo@example.com
5
+ *
6
+ * Checks whether an email address is already registered in the server identity index.
7
+ */
8
+ import { ServeGibHandlerBase } from '../../handler-base.mjs';
9
+ import { RequestContext, ResponseResult, ServeGibHttpMethod } from '../../../types.mjs';
10
+ /**
11
+ * GET /api/keystone/check-email
12
+ */
13
+ export declare class KeystoneCheckEmailHandler extends ServeGibHandlerBase<undefined, {
14
+ email?: string;
15
+ }> {
16
+ protected lc: string;
17
+ protected method: ServeGibHttpMethod;
18
+ protected regex: RegExp;
19
+ protected handleRouteImpl(reqCtx: RequestContext<undefined, {
20
+ email?: string;
21
+ }>): Promise<ResponseResult | undefined>;
22
+ }
23
+ //# sourceMappingURL=keystone-check-email.handler.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keystone-check-email.handler.d.mts","sourceRoot":"","sources":["../../../../../src/serve-gib/handlers/api/keystone/keystone-check-email.handler.mts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAGxF;;GAEG;AACH,qBAAa,yBAA0B,SAAQ,mBAAmB,CAAC,SAAS,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;IAC7F,UAAmB,EAAE,EAAE,MAAM,CAAyC;IACtE,UAAmB,MAAM,EAAE,kBAAkB,CAAS;IACtD,UAAmB,KAAK,SAAyC;IAEjE,UAAgB,eAAe,CAC3B,MAAM,EAAE,cAAc,CAAC,SAAS,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GACtD,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAgCrC;CACJ"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * @module serve-gib/handlers/api/keystone/keystone-check-email.handler
3
+ *
4
+ * GET /api/keystone/check-email?email=foo@example.com
5
+ *
6
+ * Checks whether an email address is already registered in the server identity index.
7
+ */
8
+ import * as path from 'node:path';
9
+ import { extractErrorMsg } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
10
+ import { IdentityIndexService } from '../../../identity-index/identity-index-service.mjs';
11
+ import { ServeGibHandlerBase } from '../../handler-base.mjs';
12
+ import { API_PATH_REGEXES } from '../../../path-constants.mjs';
13
+ /**
14
+ * GET /api/keystone/check-email
15
+ */
16
+ export class KeystoneCheckEmailHandler extends ServeGibHandlerBase {
17
+ lc = `[${KeystoneCheckEmailHandler.name}]`;
18
+ method = 'GET';
19
+ regex = API_PATH_REGEXES.KEYSTONE_CHECK_EMAIL;
20
+ async handleRouteImpl(reqCtx) {
21
+ const lc = `${this.lc}[${this.handleRouteImpl.name}]`;
22
+ try {
23
+ // Anti-timing side-channel protection: add bounded random jitter delay (150ms-350ms)
24
+ const jitterMs = Math.floor(Math.random() * 200) + 150;
25
+ await new Promise(resolve => setTimeout(resolve, jitterMs));
26
+ const email = (reqCtx.queryParams?.email || '').trim();
27
+ if (!email) {
28
+ console.error(`${lc} Check-email request missing email query parameter.`);
29
+ return this.error(400, 'Query param email is required');
30
+ }
31
+ const indexService = new IdentityIndexService({ baseDir: path.join(reqCtx.dataDir, 'index') });
32
+ const record = await indexService.getEmailIndex({ email });
33
+ if (record) {
34
+ console.log(`${lc} Email '${email}' is already registered.`);
35
+ return this.ok({
36
+ available: false,
37
+ message: 'Email/Identity already registered'
38
+ });
39
+ }
40
+ console.log(`${lc} Email '${email}' is available.`);
41
+ return this.ok({
42
+ available: true
43
+ });
44
+ }
45
+ catch (error) {
46
+ const emsg = extractErrorMsg(error);
47
+ console.error(`${lc} ${emsg}`);
48
+ return this.error(500, emsg);
49
+ }
50
+ }
51
+ }
52
+ //# sourceMappingURL=keystone-check-email.handler.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keystone-check-email.handler.mjs","sourceRoot":"","sources":["../../../../../src/serve-gib/handlers/api/keystone/keystone-check-email.handler.mts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,iDAAiD,CAAC;AAClF,OAAO,EAAE,oBAAoB,EAAE,MAAM,oDAAoD,CAAC;AAE1F,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D;;GAEG;AACH,MAAM,OAAO,yBAA0B,SAAQ,mBAAkD;IAC1E,EAAE,GAAW,IAAI,yBAAyB,CAAC,IAAI,GAAG,CAAC;IACnD,MAAM,GAAuB,KAAK,CAAC;IACnC,KAAK,GAAG,gBAAgB,CAAC,oBAAoB,CAAC;IAEvD,KAAK,CAAC,eAAe,CAC3B,MAAqD;QAErD,MAAM,EAAE,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,CAAC;QACtD,IAAI,CAAC;YACD,qFAAqF;YACrF,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;YACvD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;YAC5D,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACvD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACT,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,qDAAqD,CAAC,CAAC;gBAC1E,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,+BAA+B,CAAC,CAAC;YAC5D,CAAC;YAED,MAAM,YAAY,GAAG,IAAI,oBAAoB,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;YAC/F,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAE3D,IAAI,MAAM,EAAE,CAAC;gBACT,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,KAAK,0BAA0B,CAAC,CAAC;gBAC7D,OAAO,IAAI,CAAC,EAAE,CAAC;oBACX,SAAS,EAAE,KAAK;oBAChB,OAAO,EAAE,mCAAmC;iBAC/C,CAAC,CAAC;YACP,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,KAAK,iBAAiB,CAAC,CAAC;YACpD,OAAO,IAAI,CAAC,EAAE,CAAC;gBACX,SAAS,EAAE,IAAI;aAClB,CAAC,CAAC;QACP,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;YACpC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;YAC/B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACjC,CAAC;IACL,CAAC;CACJ"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * @module serve-gib/handlers/api/keystone/keystone-evolve.handler
3
+ *
4
+ * PUT /api/keystone/evolve/:domainAddr
5
+ *
6
+ * Receives an evolved domain keystone (`I^I1.Itjp`) and any related
7
+ * ibgibs (e.g., the `S^Stjp` session keystone).
8
+ *
9
+ * Validates the evolution, verifies the `S` session keystone, and persists
10
+ * them to the domain metaspace to authorize the sync session.
11
+ */
12
+ import { IbGib_V1 } from '@ibgib/ts-gib/dist/V1/types.mjs';
13
+ import { KeystoneIbGib_V1 } from '@ibgib/core-gib/dist/keystone/keystone-types.mjs';
14
+ import { ServeGibHandlerWithMetaspaceBase } from '../../handler-base.mjs';
15
+ import { ParamsWithDomain, RequestContext, ResponseResult } from '../../../types.mjs';
16
+ interface EvolveParams extends ParamsWithDomain {
17
+ domainAddr: string;
18
+ }
19
+ /**
20
+ * Body payload for the Keystone Evolve REST API request.
21
+ */
22
+ interface EvolveBody {
23
+ /** The main evolved keystone frame. */
24
+ keystoneIbGib: KeystoneIbGib_V1;
25
+ /**
26
+ * Array of other keystone frames related to this evolution.
27
+ * Ephemeral session keystones for sync, or persistent delegate keystones for manage.
28
+ */
29
+ relatedKeystoneIbGibs?: IbGib_V1[];
30
+ /** Optional map of providerId to token to revoke during unlinking. */
31
+ revokeTokens?: Record<string, string>;
32
+ }
33
+ export declare class KeystoneEvolveHandler extends ServeGibHandlerWithMetaspaceBase<EvolveParams, EvolveBody> {
34
+ protected lc: string;
35
+ protected method: 'PUT';
36
+ protected regex: RegExp;
37
+ protected parseParamsImpl(reqCtx: RequestContext<EvolveParams, any>): Promise<EvolveParams | undefined>;
38
+ protected validateQueryParams({ queryParams }: {
39
+ queryParams: any;
40
+ }): Promise<string[]>;
41
+ protected handleRouteImpl(reqCtx: RequestContext<EvolveParams>): Promise<ResponseResult>;
42
+ }
43
+ export {};
44
+ //# sourceMappingURL=keystone-evolve.handler.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keystone-evolve.handler.d.mts","sourceRoot":"","sources":["../../../../../src/serve-gib/handlers/api/keystone/keystone-evolve.handler.mts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAE3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kDAAkD,CAAC;AAKpF,OAAO,EAAE,gCAAgC,EAAE,MAAM,wBAAwB,CAAC;AAE1E,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAItF,UAAU,YAAa,SAAQ,gBAAgB;IAC3C,UAAU,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,UAAU,UAAU;IAChB,uCAAuC;IACvC,aAAa,EAAE,gBAAgB,CAAC;IAChC;;;OAGG;IACH,qBAAqB,CAAC,EAAE,QAAQ,EAAE,CAAC;IACnC,sEAAsE;IACtE,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC;AAED,qBAAa,qBAAsB,SAAQ,gCAAgC,CAAC,YAAY,EAAE,UAAU,CAAC;IACjG,UAAmB,EAAE,EAAE,MAAM,CAAqC;IAClE,UAAmB,MAAM,EAAE,KAAK,CAAS;IACzC,UAAmB,KAAK,SAAoC;IAE5D,UAAyB,eAAe,CAAC,MAAM,EAAE,cAAc,CAAC,YAAY,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAarH;IAED,UAAyB,mBAAmB,CAAC,EAAE,WAAW,EAAE,EAAE;QAAE,WAAW,EAAE,GAAG,CAAC;KAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAEtG;IAED,UAAyB,eAAe,CAAC,MAAM,EAAE,cAAc,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,CA8EtG;CACJ"}