@ibgib/node-gib 0.0.9 → 0.0.13

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,23 @@
1
+ import { ServeGibHandlerWithMetaspaceBase } from '../../handler-base.mjs';
2
+ import { ParamsWithDomain, RequestContext, ResponseResult, ServeGibHttpMethod } from '../../../types.mjs';
3
+ interface LinkParams extends ParamsWithDomain {
4
+ parentTjpAddr: string;
5
+ }
6
+ /**
7
+ * POST /api/identity/sso/link
8
+ *
9
+ * Links an identity provider (Google, GitHub) to the user's sovereign parent identity.
10
+ * Generates the deterministic server-delegate keystone and registers it in the domain metaspace.
11
+ */
12
+ export declare class SsoLinkHandler extends ServeGibHandlerWithMetaspaceBase<LinkParams, any> {
13
+ protected lc: string;
14
+ protected method: ServeGibHttpMethod;
15
+ protected regex: RegExp;
16
+ protected parseParamsImpl(reqCtx: RequestContext<LinkParams, any>): Promise<LinkParams | undefined>;
17
+ protected validateQueryParams({ queryParams }: {
18
+ queryParams: any;
19
+ }): Promise<string[]>;
20
+ protected handleRouteImpl(reqCtx: RequestContext<LinkParams>): Promise<ResponseResult | undefined>;
21
+ }
22
+ export {};
23
+ //# sourceMappingURL=sso-link.handler.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sso-link.handler.d.mts","sourceRoot":"","sources":["../../../../../src/serve-gib/handlers/api/keystone/sso-link.handler.mts"],"names":[],"mappings":"AASA,OAAO,EAAE,gCAAgC,EAAE,MAAM,wBAAwB,CAAC;AAE1E,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAa1G,UAAU,UAAW,SAAQ,gBAAgB;IACzC,aAAa,EAAE,MAAM,CAAC;CACzB;AAUD;;;;;GAKG;AACH,qBAAa,cAAe,SAAQ,gCAAgC,CAAC,UAAU,EAAE,GAAG,CAAC;IACjF,UAAmB,EAAE,EAAE,MAAM,CAA8B;IAC3D,UAAmB,MAAM,EAAE,kBAAkB,CAAU;IACvD,UAAmB,KAAK,SAAsC;IAE9D,UAAyB,eAAe,CAAC,MAAM,EAAE,cAAc,CAAC,UAAU,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAajH;IAED,UAAyB,mBAAmB,CAAC,EAAE,WAAW,EAAE,EAAE;QAAE,WAAW,EAAE,GAAG,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAErG;IAED,UAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAwEvG;CACJ"}
@@ -0,0 +1,118 @@
1
+ import { extractErrorMsg } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
2
+ import { loadSsoServerConfig } from '@ibgib/web-gib/dist/identity/sso/sso-config-helper.mjs';
3
+ import { SsoCustodianService } from '@ibgib/web-gib/dist/identity/sso/sso-custodian-service.mjs';
4
+ import { isSsoProviderLinked } from '@ibgib/web-gib/dist/identity/sso/sso-helpers.mjs';
5
+ import { KeystoneService_V1 } from '@ibgib/core-gib/dist/keystone/keystone-service-v1.mjs';
6
+ import { GLOBAL_LOG_A_LOT } from '../../../constants.mjs';
7
+ import { ServeGibHandlerWithMetaspaceBase } from '../../handler-base.mjs';
8
+ import { API_PATH_REGEXES } from '../../../path-constants.mjs';
9
+ const logalot = GLOBAL_LOG_A_LOT || true;
10
+ let custodian;
11
+ function getCustodian() {
12
+ if (!custodian) {
13
+ const config = loadSsoServerConfig();
14
+ custodian = new SsoCustodianService(config);
15
+ }
16
+ return custodian;
17
+ }
18
+ /**
19
+ * POST /api/identity/sso/link
20
+ *
21
+ * Links an identity provider (Google, GitHub) to the user's sovereign parent identity.
22
+ * Generates the deterministic server-delegate keystone and registers it in the domain metaspace.
23
+ */
24
+ export class SsoLinkHandler extends ServeGibHandlerWithMetaspaceBase {
25
+ lc = `[${SsoLinkHandler.name}]`;
26
+ method = 'POST';
27
+ regex = API_PATH_REGEXES.IDENTITY_SSO_LINK;
28
+ async parseParamsImpl(reqCtx) {
29
+ let parsed;
30
+ try {
31
+ parsed = JSON.parse(reqCtx.body);
32
+ }
33
+ catch {
34
+ return undefined;
35
+ }
36
+ const parentTjpAddr = parsed?.parentTjpAddr;
37
+ if (!parentTjpAddr) {
38
+ return undefined;
39
+ }
40
+ return {
41
+ parentTjpAddr,
42
+ domainInfo: this.getDomainInfo({ domainAddr: parentTjpAddr })
43
+ };
44
+ }
45
+ async validateQueryParams({ queryParams }) {
46
+ return [];
47
+ }
48
+ async handleRouteImpl(reqCtx) {
49
+ const lc = `${this.lc}[${this.handleRouteImpl.name}]`;
50
+ try {
51
+ if (logalot) {
52
+ console.log(`${lc} starting...`);
53
+ }
54
+ if (!reqCtx.params) {
55
+ return this.error(400, 'Invalid parameters: parentTjpAddr missing');
56
+ }
57
+ if (!reqCtx.metaspace) {
58
+ return this.error(500, 'Metaspace not initialized');
59
+ }
60
+ let parsed;
61
+ try {
62
+ parsed = JSON.parse(reqCtx.body);
63
+ }
64
+ catch {
65
+ return this.error(400, 'Request body must be valid JSON');
66
+ }
67
+ const { code, providerId, parentTjpAddr, userNonce, redirectUri } = parsed;
68
+ if (!code || !providerId || !parentTjpAddr || !userNonce || !redirectUri) {
69
+ return this.error(400, 'Body missing required parameters (code, providerId, parentTjpAddr, userNonce, redirectUri)');
70
+ }
71
+ const space = await reqCtx.metaspace.getLocalUserSpace({ lock: false });
72
+ if (!space) {
73
+ return this.error(500, 'No local user space found in domain metaspace');
74
+ }
75
+ // 0. Fetch target keystone and verify if already linked
76
+ const keystoneService = new KeystoneService_V1();
77
+ const targetKeystone = await keystoneService.getLatestKeystone({
78
+ addr: parentTjpAddr,
79
+ metaspace: reqCtx.metaspace,
80
+ space
81
+ });
82
+ if (!targetKeystone) {
83
+ return this.error(400, `Keystone not found for address: ${parentTjpAddr}`);
84
+ }
85
+ if (isSsoProviderLinked({ keystone: targetKeystone, providerId })) {
86
+ return this.error(400, `SSO provider "${providerId}" is already linked to this keystone.`);
87
+ }
88
+ // 1. Authenticate with provider and retrieve user info
89
+ const service = getCustodian();
90
+ const userInfo = await service.getOAuthUserInfo(providerId, code, redirectUri);
91
+ // 2. Generate the custodian foreign challenge pool
92
+ const custodianPool = await service.createCustodianChallengePool({
93
+ providerId,
94
+ providerKey: userInfo.providerKey,
95
+ userNonce,
96
+ keystoneAddr: parentTjpAddr,
97
+ metaspace: reqCtx.metaspace,
98
+ space
99
+ });
100
+ console.log(`${lc} created custodian pool for: ${userInfo.providerKey}`);
101
+ return this.ok({
102
+ success: true,
103
+ custodianPool
104
+ }, 200);
105
+ }
106
+ catch (error) {
107
+ const emsg = extractErrorMsg(error);
108
+ console.error(`${lc} Link failed: ${emsg}`);
109
+ return this.error(500, `Link failed: ${emsg}`);
110
+ }
111
+ finally {
112
+ if (logalot) {
113
+ console.log(`${lc} complete.`);
114
+ }
115
+ }
116
+ }
117
+ }
118
+ //# sourceMappingURL=sso-link.handler.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sso-link.handler.mjs","sourceRoot":"","sources":["../../../../../src/serve-gib/handlers/api/keystone/sso-link.handler.mts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { ServeGibHandlerWithMetaspaceBase } from '../../handler-base.mjs';
2
+ import { ParamsWithDomain, RequestContext, ResponseResult, ServeGibHttpMethod } from '../../../types.mjs';
3
+ interface LoginParams extends ParamsWithDomain {
4
+ parentTjpAddr: string;
5
+ }
6
+ /**
7
+ * POST /api/identity/sso/login
8
+ *
9
+ * Exposes login endpoint for SSO authentication. Verifies provider identity, asserts
10
+ * that the deterministic server-delegate keystone is registered in the parent keystone,
11
+ * and yields a secure HttpOnly session token.
12
+ */
13
+ export declare class SsoLoginHandler extends ServeGibHandlerWithMetaspaceBase<LoginParams, any> {
14
+ protected lc: string;
15
+ protected method: ServeGibHttpMethod;
16
+ protected regex: RegExp;
17
+ protected parseParamsImpl(reqCtx: RequestContext<LoginParams, any>): Promise<LoginParams | undefined>;
18
+ protected validateQueryParams({ queryParams }: {
19
+ queryParams: any;
20
+ }): Promise<string[]>;
21
+ protected handleRouteImpl(reqCtx: RequestContext<LoginParams>): Promise<ResponseResult | undefined>;
22
+ }
23
+ export {};
24
+ //# sourceMappingURL=sso-login.handler.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sso-login.handler.d.mts","sourceRoot":"","sources":["../../../../../src/serve-gib/handlers/api/keystone/sso-login.handler.mts"],"names":[],"mappings":"AAUA,OAAO,EAAE,gCAAgC,EAAE,MAAM,wBAAwB,CAAC;AAE1E,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAsB1G,UAAU,WAAY,SAAQ,gBAAgB;IAC1C,aAAa,EAAE,MAAM,CAAC;CACzB;AAUD;;;;;;GAMG;AACH,qBAAa,eAAgB,SAAQ,gCAAgC,CAAC,WAAW,EAAE,GAAG,CAAC;IACnF,UAAmB,EAAE,EAAE,MAAM,CAA+B;IAC5D,UAAmB,MAAM,EAAE,kBAAkB,CAAU;IACvD,UAAmB,KAAK,SAAuC;IAE/D,UAAyB,eAAe,CAAC,MAAM,EAAE,cAAc,CAAC,WAAW,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAanH;IAED,UAAyB,mBAAmB,CAAC,EAAE,WAAW,EAAE,EAAE;QAAE,WAAW,EAAE,GAAG,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAErG;IAED,UAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CA+GxG;CACJ"}
@@ -0,0 +1,160 @@
1
+ import { createHmac } from 'node:crypto';
2
+ import { extractErrorMsg } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
3
+ import { loadSsoServerConfig } from '@ibgib/web-gib/dist/identity/sso/sso-config-helper.mjs';
4
+ import { SsoCustodianService } from '@ibgib/web-gib/dist/identity/sso/sso-custodian-service.mjs';
5
+ import { KEYSTONE_VERB_MANAGE } from '@ibgib/core-gib/dist/keystone/keystone-constants.mjs';
6
+ import { KeystoneStrategyFactory } from '@ibgib/core-gib/dist/keystone/strategy/keystone-strategy-factory.mjs';
7
+ import { GLOBAL_LOG_A_LOT } from '../../../constants.mjs';
8
+ import { ServeGibHandlerWithMetaspaceBase } from '../../handler-base.mjs';
9
+ import { API_PATH_REGEXES } from '../../../path-constants.mjs';
10
+ const logalot = GLOBAL_LOG_A_LOT || true;
11
+ let custodian;
12
+ function getCustodian() {
13
+ if (!custodian) {
14
+ const config = loadSsoServerConfig();
15
+ custodian = new SsoCustodianService(config);
16
+ }
17
+ return custodian;
18
+ }
19
+ function signSessionToken(payload, secret) {
20
+ const header = { alg: 'HS256', typ: 'JWT' };
21
+ const headerB64 = Buffer.from(JSON.stringify(header)).toString('base64url');
22
+ const payloadB64 = Buffer.from(JSON.stringify(payload)).toString('base64url');
23
+ const data = `${headerB64}.${payloadB64}`;
24
+ const signature = createHmac('sha256', secret).update(data).digest('base64url');
25
+ return `${data}.${signature}`;
26
+ }
27
+ /**
28
+ * POST /api/identity/sso/login
29
+ *
30
+ * Exposes login endpoint for SSO authentication. Verifies provider identity, asserts
31
+ * that the deterministic server-delegate keystone is registered in the parent keystone,
32
+ * and yields a secure HttpOnly session token.
33
+ */
34
+ export class SsoLoginHandler extends ServeGibHandlerWithMetaspaceBase {
35
+ lc = `[${SsoLoginHandler.name}]`;
36
+ method = 'POST';
37
+ regex = API_PATH_REGEXES.IDENTITY_SSO_LOGIN;
38
+ async parseParamsImpl(reqCtx) {
39
+ let parsed;
40
+ try {
41
+ parsed = JSON.parse(reqCtx.body);
42
+ }
43
+ catch {
44
+ return undefined;
45
+ }
46
+ const parentTjpAddr = parsed?.parentTjpAddr;
47
+ if (!parentTjpAddr) {
48
+ return undefined;
49
+ }
50
+ return {
51
+ parentTjpAddr,
52
+ domainInfo: this.getDomainInfo({ domainAddr: parentTjpAddr })
53
+ };
54
+ }
55
+ async validateQueryParams({ queryParams }) {
56
+ return [];
57
+ }
58
+ async handleRouteImpl(reqCtx) {
59
+ const lc = `${this.lc}[${this.handleRouteImpl.name}]`;
60
+ try {
61
+ if (logalot) {
62
+ console.log(`${lc} starting...`);
63
+ }
64
+ if (!reqCtx.params) {
65
+ return this.error(400, 'Invalid parameters: parentTjpAddr missing');
66
+ }
67
+ if (!reqCtx.metaspace) {
68
+ return this.error(500, 'Metaspace not initialized');
69
+ }
70
+ let parsed;
71
+ try {
72
+ parsed = JSON.parse(reqCtx.body);
73
+ }
74
+ catch {
75
+ return this.error(400, 'Request body must be valid JSON');
76
+ }
77
+ const { code, providerId, parentTjpAddr, userNonce, redirectUri } = parsed;
78
+ if (!code || !providerId || !parentTjpAddr || !userNonce || !redirectUri) {
79
+ return this.error(400, 'Body missing required parameters (code, providerId, parentTjpAddr, userNonce, redirectUri)');
80
+ }
81
+ const space = await reqCtx.metaspace.getLocalUserSpace({ lock: false });
82
+ if (!space) {
83
+ return this.error(500, 'No local user space found in domain metaspace');
84
+ }
85
+ // 1. Authenticate with provider and retrieve user info
86
+ const service = getCustodian();
87
+ const userInfo = await service.getOAuthUserInfo(providerId, code, redirectUri);
88
+ // 2. Derive custodian secret using providerKey and userNonce
89
+ const custodianSecret = await service.deriveServerDelegateSecret(userInfo.providerKey, userNonce);
90
+ // 3. Fetch latest parent keystone from metaspace
91
+ const latestParentAddr = await reqCtx.metaspace.getLatestAddr({ addr: parentTjpAddr, space });
92
+ if (!latestParentAddr) {
93
+ return this.error(404, `Parent identity keystone not found for address: ${parentTjpAddr}`);
94
+ }
95
+ const resGet = await reqCtx.metaspace.get({ addr: latestParentAddr, space });
96
+ const parentKeystone = resGet.ibGibs?.[0];
97
+ if (!parentKeystone) {
98
+ return this.error(404, `Parent identity keystone not found in space for address: ${latestParentAddr}`);
99
+ }
100
+ // 4. Resolve the custodian pool from the parent keystone using dynamic poolId
101
+ const targetPoolId = `custodian-manage-${providerId}`;
102
+ const custodianPool = parentKeystone.data?.challengePools?.find((p) => p.id === targetPoolId);
103
+ if (!custodianPool) {
104
+ return this.error(401, `Unauthorized: Custodian pool '${targetPoolId}' is not registered in the parent identity keystone.`);
105
+ }
106
+ // 5. Assert allowed verbs contain KEYSTONE_VERB_MANAGE
107
+ const allowedVerbs = custodianPool.config.allowedVerbs || [];
108
+ if (!allowedVerbs.includes(KEYSTONE_VERB_MANAGE)) {
109
+ return this.error(401, `Unauthorized: Custodian pool does not have the required manage permission.`);
110
+ }
111
+ // 6. Cryptographically verify the custodian secret against the pool's challenges
112
+ const strategy = KeystoneStrategyFactory.create({ config: custodianPool.config });
113
+ const poolSecret = await strategy.derivePoolSecret({ masterSecret: custodianSecret });
114
+ for (const [id, challenge] of Object.entries(custodianPool.challenges)) {
115
+ const solution = await strategy.generateSolution({
116
+ poolSecret,
117
+ poolId: custodianPool.id,
118
+ challengeId: id
119
+ });
120
+ const hashValue = await strategy.generateChallenge({ solution });
121
+ if (hashValue.hash !== challenge.hash) {
122
+ return this.error(401, 'Unauthorized: Cryptographic verification of custodian pool challenges failed.');
123
+ }
124
+ }
125
+ // 7. Issue secure HttpOnly session cookie
126
+ const sessionPayload = {
127
+ parentTjpAddr,
128
+ providerKey: userInfo.providerKey,
129
+ exp: Math.floor(Date.now() / 1000) + 24 * 3600 // 24-hour expiration
130
+ };
131
+ const config = loadSsoServerConfig();
132
+ const sessionToken = signSessionToken(sessionPayload, config.sessionSecret);
133
+ const headers = {
134
+ 'Set-Cookie': `space_gib_session=${sessionToken}; Path=/; HttpOnly; SameSite=Strict; Max-Age=86400`
135
+ };
136
+ console.log(`${lc} login successful for parent: ${parentTjpAddr}, custodian providerKey: ${userInfo.providerKey}`);
137
+ return {
138
+ status: 200,
139
+ headers,
140
+ body: {
141
+ success: true,
142
+ parentTjpAddr,
143
+ custodianPoolId: custodianPool.id
144
+ },
145
+ isJson: true
146
+ };
147
+ }
148
+ catch (error) {
149
+ const emsg = extractErrorMsg(error);
150
+ console.error(`${lc} Login failed: ${emsg}`);
151
+ return this.error(500, `Login failed: ${emsg}`);
152
+ }
153
+ finally {
154
+ if (logalot) {
155
+ console.log(`${lc} complete.`);
156
+ }
157
+ }
158
+ }
159
+ }
160
+ //# sourceMappingURL=sso-login.handler.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sso-login.handler.mjs","sourceRoot":"","sources":["../../../../../src/serve-gib/handlers/api/keystone/sso-login.handler.mts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @module serve-gib/handlers/error-handler
3
+ *
4
+ * Default error handler for serve-gib.
5
+ */
6
+ import { ServeGibHandlerBase } from './handler-base.mjs';
7
+ import { RequestContext, ResponseResult, ServeGibHttpMethod } from '../types.mjs';
8
+ export declare class ErrorHandler extends ServeGibHandlerBase {
9
+ protected lc: string;
10
+ protected method: ServeGibHttpMethod;
11
+ protected regex: RegExp;
12
+ handleRouteImpl(reqCtx: RequestContext): Promise<ResponseResult | undefined>;
13
+ }
14
+ //# sourceMappingURL=error-handler.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-handler.d.mts","sourceRoot":"","sources":["../../../src/serve-gib/handlers/error-handler.mts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAIlF,qBAAa,YAAa,SAAQ,mBAAmB;IACjD,UAAmB,EAAE,EAAE,MAAM,CAA4B;IACzD,UAAmB,MAAM,EAAE,kBAAkB,CAAS;IACtD,UAAmB,KAAK,SAAQ;IAE1B,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAejF;CACJ"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * @module serve-gib/handlers/error-handler
3
+ *
4
+ * Default error handler for serve-gib.
5
+ */
6
+ import { extractErrorMsg } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
7
+ import { GLOBAL_LOG_A_LOT } from '../constants.mjs';
8
+ import { ServeGibHandlerBase } from './handler-base.mjs';
9
+ const logalot = GLOBAL_LOG_A_LOT;
10
+ export class ErrorHandler extends ServeGibHandlerBase {
11
+ lc = `[${ErrorHandler.name}]`;
12
+ method = 'ALL';
13
+ regex = /.*/;
14
+ async handleRouteImpl(reqCtx) {
15
+ const lc = `${this.lc}[${this.handleRouteImpl.name}]`;
16
+ try {
17
+ if (logalot) {
18
+ console.log(`${lc} starting...`);
19
+ }
20
+ const { rawUrl, pathname, method, } = reqCtx;
21
+ // This is the fallback handler
22
+ return this.error(404, 'Not Found', { method, rawUrl, pathname });
23
+ }
24
+ catch (error) {
25
+ console.log(`${lc} ${extractErrorMsg(error)}`);
26
+ throw error;
27
+ }
28
+ finally {
29
+ if (logalot) {
30
+ console.log(`${lc} complete.`);
31
+ }
32
+ }
33
+ }
34
+ }
35
+ //# sourceMappingURL=error-handler.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-handler.mjs","sourceRoot":"","sources":["../../../src/serve-gib/handlers/error-handler.mts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,iDAAiD,CAAC;AAElF,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAGzD,MAAM,OAAO,GAAG,gBAAgB,CAAC;AAEjC,MAAM,OAAO,YAAa,SAAQ,mBAAmB;IAC9B,EAAE,GAAW,IAAI,YAAY,CAAC,IAAI,GAAG,CAAC;IACtC,MAAM,GAAuB,KAAK,CAAC;IACnC,KAAK,GAAG,IAAI,CAAC;IAEhC,KAAK,CAAC,eAAe,CAAC,MAAsB;QACxC,MAAM,EAAE,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,CAAC;QACtD,IAAI,CAAC;YACD,IAAI,OAAO,EAAE,CAAC;gBAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;YAAC,CAAC;YAElD,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,GAAG,MAAM,CAAC;YAE7C,+BAA+B;YAC/B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;QACtE,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC/C,MAAM,KAAK,CAAC;QAChB,CAAC;gBAAS,CAAC;YACP,IAAI,OAAO,EAAE,CAAC;gBAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;YAAC,CAAC;QACpD,CAAC;IACL,CAAC;CACJ"}
@@ -0,0 +1,129 @@
1
+ /**
2
+ * @module serve-gib/handler
3
+ *
4
+ * Base class and utilities for serve-gib handlers.
5
+ */
6
+ import { IbGibAddr } from '@ibgib/ts-gib/dist/types.mjs';
7
+ import { DomainInfo, ParamsWithDomain, RequestContext, ResponseResult, ServeGibHandler } from '../types.mjs';
8
+ import { ServeGibHttpMethod } from '../types.mjs';
9
+ /**
10
+ * Abstract base class for serve-gib handlers.
11
+ * Provides a "pit of success" plumbing for routing, error handling, and parameter parsing.
12
+ *
13
+ * @template TParams Type for the parsed query parameters.
14
+ * @template TQueryParams Type for the parsed query parameters.
15
+ */
16
+ export declare abstract class ServeGibHandlerBase<TParams = any, TQueryParams = any> implements ServeGibHandler<TParams, TQueryParams> {
17
+ protected lc: string;
18
+ /** The HTTP method this handler supports, or 'ALL' for catch-all. */
19
+ protected abstract method: ServeGibHttpMethod;
20
+ /** Regex for quick route matching via the default `canHandleRoute`. */
21
+ protected abstract regex: RegExp;
22
+ /**
23
+ * The main entry point processing incoming requests.
24
+ * Implements standard plumbing for matching, error handling, and param parsing.
25
+ */
26
+ handleRoute(reqCtx: RequestContext<TParams, TQueryParams>): Promise<ResponseResult | undefined>;
27
+ /**
28
+ * Concrete implementation of the handler logic.
29
+ *
30
+ * This is where the "meat" of the code goes, as there is some
31
+ * pre-processing in the parent wrapper.
32
+ */
33
+ protected abstract handleRouteImpl(reqCtx: RequestContext<TParams, TQueryParams>): Promise<ResponseResult | undefined>;
34
+ /**
35
+ * Extracts per-handler/route params from a request context.
36
+ *
37
+ * @see {@link RequestContext.params}
38
+ */
39
+ parseParams(reqCtx: RequestContext<TParams, TQueryParams>): Promise<TParams | undefined>;
40
+ /**
41
+ * Concrete implementation for extracting params from a path.
42
+ *
43
+ * @see {@link RequestContext.params}
44
+ */
45
+ protected parseParamsImpl(reqCtx: RequestContext<TParams, TQueryParams>): Promise<TParams | undefined>;
46
+ /**
47
+ * Hook to initialize concrete context, e.g., initializing a metaspace for the
48
+ * specific domain. The base implementation is a no-op.
49
+ */
50
+ protected initConcreteContext(reqCtx: RequestContext<TParams, TQueryParams>): Promise<void>;
51
+ /**
52
+ * Determines if this handler should attempt to handle the given request.
53
+ *
54
+ * Default implementation checks {@link method} and {@link regex} matching
55
+ * against the pathname. Override for more advanced logic for edge cases.
56
+ */
57
+ protected canHandleRoute(reqCtx: RequestContext<TParams, TQueryParams>): boolean;
58
+ /**
59
+ * Parses query parameters from the URL.
60
+ * Defaults to a basic key-value mapping of the URL search params.
61
+ */
62
+ protected parseQueryParams(reqCtx: RequestContext<TParams, TQueryParams>): Promise<TQueryParams | undefined>;
63
+ /**
64
+ * base class implementation is a no-op. override this in descendant class
65
+ * who expect the possibility of query params
66
+ * @returns array of validation errors, empty if valid
67
+ */
68
+ protected validateQueryParams({ queryParams }: {
69
+ queryParams: any;
70
+ }): Promise<string[]>;
71
+ /**
72
+ * Standard JSON success response.
73
+ */
74
+ protected ok(body: any, status?: number): ResponseResult;
75
+ /**
76
+ * Standard JSON error response.
77
+ */
78
+ protected error(status: number, message: string, details?: any): ResponseResult;
79
+ /**
80
+ * 404 Not Found response.
81
+ */
82
+ protected notFound(message?: string): ResponseResult;
83
+ }
84
+ /**
85
+ * Base class for handlers that have to first initialize a metaspace in order to
86
+ * process the incoming request.
87
+ *
88
+ * ## notes
89
+ *
90
+ * Some handlers, like those who do error handling or serving static files, do
91
+ * not need to initialize a metaspace or do any get/put of any ibgibs. So those
92
+ * don't need to descend from this class.
93
+ *
94
+ * But if the handler is one that has to put/get an ibgib, then a metaspace will
95
+ * need to be init. Those handlers should descend from this class.
96
+ */
97
+ export declare abstract class ServeGibHandlerWithMetaspaceBase<TParams extends ParamsWithDomain = ParamsWithDomain, TQueryParams = any> extends ServeGibHandlerBase<TParams, TQueryParams> {
98
+ protected lc: string;
99
+ protected initConcreteContext(reqCtx: RequestContext<TParams, TQueryParams>): Promise<void>;
100
+ protected parseParamsImpl(reqCtx: RequestContext<TParams, TQueryParams>): Promise<TParams | undefined>;
101
+ protected validateQueryParams({ queryParams }: {
102
+ queryParams: any;
103
+ }): Promise<string[]>;
104
+ /**
105
+ * helper that should extract the "domain" (driven by the correctly scoped
106
+ * keystone) and set related props on the context.
107
+ */
108
+ protected initAndPopulateDomainContext(reqCtx: RequestContext<TParams, TQueryParams>): Promise<void>;
109
+ /**
110
+ * Helper to build the domain info from a {@link domainAddr}.
111
+ *
112
+ * ## usage
113
+ *
114
+ * Use this helper function once your concrete handler has parsed the
115
+ * domainAddr from the request url.
116
+ *
117
+ * For example, say the incoming path is /api/ibgib/:domainAddr/:ibgibAddr (GET)
118
+ * Then the concrete handler for this path would pull out domainAddr, call
119
+ * this function to build the domain info, and then put that domain info on
120
+ * the `reqCtx`.
121
+ */
122
+ protected getDomainInfo({ domainAddr, }: {
123
+ /**
124
+ * addr extracted from incoming url by concrete handler
125
+ */
126
+ domainAddr: IbGibAddr;
127
+ }): DomainInfo;
128
+ }
129
+ //# sourceMappingURL=handler-base.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler-base.d.mts","sourceRoot":"","sources":["../../../src/serve-gib/handlers/handler-base.mts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAKzD,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC7G,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAKlD;;;;;;GAMG;AACH,8BAAsB,mBAAmB,CAAC,OAAO,GAAG,GAAG,EAAE,YAAY,GAAG,GAAG,CACvE,YAAW,eAAe,CAAC,OAAO,EAAE,YAAY,CAAC;IACjD,SAAS,CAAC,EAAE,EAAE,MAAM,CAAmC;IAEvD,qEAAqE;IACrE,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;IAE9C,uEAAuE;IACvE,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEjC;;;OAGG;IACG,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,OAAO,EAAE,YAAY,CAAC,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAqCpG;IACD;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,EAAE,cAAc,CAAC,OAAO,EAAE,YAAY,CAAC,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC;IAEvH;;;;OAIG;IACH,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,OAAO,EAAE,YAAY,CAAC,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAWvF;IACD;;;;OAIG;IACH,UAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,CAAC,OAAO,EAAE,YAAY,CAAC,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAc3G;IAED;;;OAGG;IACH,UAAgB,mBAAmB,CAAC,MAAM,EAAE,cAAc,CAAC,OAAO,EAAE,YAAY,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAYhG;IAED;;;;;OAKG;IACH,SAAS,CAAC,cAAc,CAAC,MAAM,EAAE,cAAc,CAAC,OAAO,EAAE,YAAY,CAAC,GAAG,OAAO,CAc/E;IAED;;;OAGG;IACH,UAAgB,gBAAgB,CAAC,MAAM,EAAE,cAAc,CAAC,OAAO,EAAE,YAAY,CAAC,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CA4BjH;IAED;;;;OAIG;IACH,UAAgB,mBAAmB,CAAC,EAAE,WAAW,EAAE,EAAE;QAAE,WAAW,EAAE,GAAG,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAc5F;IAED;;OAEG;IACH,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,GAAE,MAAY,GAAG,cAAc,CAE5D;IAED;;OAEG;IACH,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,cAAc,CAE9E;IAED;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,OAAO,GAAE,MAAoB,GAAG,cAAc,CAEhE;CACJ;AAED;;;;;;;;;;;;GAYG;AACH,8BAAsB,gCAAgC,CAAC,OAAO,SAAS,gBAAgB,GAAG,gBAAgB,EAAE,YAAY,GAAG,GAAG,CAC1H,SAAQ,mBAAmB,CAAC,OAAO,EAAE,YAAY,CAAC;IAClD,UAAmB,EAAE,EAAE,MAAM,CAAgD;IAE7E,UAAyB,mBAAmB,CAAC,MAAM,EAAE,cAAc,CAAC,OAAO,EAAE,YAAY,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAYzG;IAED,UAAmB,eAAe,CAAC,MAAM,EAAE,cAAc,CAAC,OAAO,EAAE,YAAY,CAAC,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAY9G;IAED,UAAmB,mBAAmB,CAAC,EAAE,WAAW,EAAE,EAAE;QAAE,WAAW,EAAE,GAAG,CAAC;KAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAahG;IAED;;;OAGG;IACH,UAAgB,4BAA4B,CAAC,MAAM,EAAE,cAAc,CAAC,OAAO,EAAE,YAAY,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBzG;IAED;;;;;;;;;;;;OAYG;IACH,SAAS,CAAC,aAAa,CAAC,EACpB,UAAU,GAEb,EAAE;QACC;;WAEG;QACH,UAAU,EAAE,SAAS,CAAC;KAKzB,GAAG,UAAU,CA4Bb;CACJ"}