@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,107 @@
1
+ import { extractErrorMsg } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
2
+ import { validateIbGibAddr } from '@ibgib/ts-gib/dist/V1/validate-helper.mjs';
3
+ import { GLOBAL_LOG_A_LOT } from './server-constants.mjs';
4
+ import { FORBIDDEN_PATTERNS, MAX_PATH_LENGTH, VALID_STATIC_PATH_REGEX } from './path-constants.mjs';
5
+ const logalot = GLOBAL_LOG_A_LOT;
6
+ /**
7
+ * little helper function just to DRY out code.
8
+ */
9
+ export function runtimeErrorValidationStrings(lc, error) {
10
+ const emsg = `${lc} ${extractErrorMsg(error)}`;
11
+ console.error(emsg);
12
+ return [`runtime error: ${emsg}`];
13
+ }
14
+ /**
15
+ * Validates that a path is safe from common attacks and under max length.
16
+ */
17
+ export function validateRawPath(rawPath) {
18
+ const lc = `[${validateRawPath.name}]`;
19
+ try {
20
+ if (logalot) {
21
+ console.log(`${lc} starting... (I: 80bd6f63e6c83b8e943b90383e044826)`);
22
+ }
23
+ const errors = [];
24
+ if (!rawPath || rawPath.length > MAX_PATH_LENGTH) {
25
+ errors.push(`path too long. MAX_PATH_LENGTH: ${MAX_PATH_LENGTH}, incoming path length: ${rawPath.length}`);
26
+ }
27
+ for (const pattern of FORBIDDEN_PATTERNS) {
28
+ if (pattern.test(rawPath)) {
29
+ errors.push(`invalid path. contains forbidden pattern.source: ${pattern.source} (E: 56a228fb9473a086b83d0088b5af1826)`);
30
+ }
31
+ }
32
+ return errors;
33
+ }
34
+ catch (error) {
35
+ return runtimeErrorValidationStrings(lc, error);
36
+ }
37
+ finally {
38
+ if (logalot) {
39
+ console.log(`${lc} complete.`);
40
+ }
41
+ }
42
+ }
43
+ /**
44
+ * simple boolean wrapper for {@link validateRawPath}
45
+ */
46
+ export function isSafePath(path) {
47
+ const errors = validateRawPath(path);
48
+ return errors.length === 0;
49
+ }
50
+ export function validateStaticPath(path) {
51
+ const lc = `[${validateStaticPath.name}]`;
52
+ try {
53
+ if (logalot) {
54
+ console.log(`${lc} starting... (I: 4f9cf8ffd528c7dd88324529528eeb26)`);
55
+ }
56
+ const errors = [];
57
+ if (!VALID_STATIC_PATH_REGEX.test(path)) {
58
+ errors.push(`static path fails to match VALID_STATIC_PATH_REGEX of ${VALID_STATIC_PATH_REGEX} (E: dfdf38a0439d4d09186e6fa81ab66826) `);
59
+ }
60
+ return errors;
61
+ }
62
+ catch (error) {
63
+ return runtimeErrorValidationStrings(lc, error);
64
+ }
65
+ finally {
66
+ if (logalot) {
67
+ console.log(`${lc} complete.`);
68
+ }
69
+ }
70
+ }
71
+ /**
72
+ * Validates a static file path.
73
+ */
74
+ export function isValidStaticPath(path) {
75
+ if (!isSafePath(path)) {
76
+ return false;
77
+ }
78
+ const errors = validateStaticPath(path);
79
+ return errors.length === 0;
80
+ }
81
+ /**
82
+ * Decodes and validates a single ibGib address segment from a URL path.
83
+ * Uses the library's internal validateIbGibAddr for deep checking.
84
+ */
85
+ export function validateAddressSegment(encodedAddr) {
86
+ const lc = `[${validateAddressSegment.name}]`;
87
+ try {
88
+ if (logalot) {
89
+ console.log(`${lc} starting... (I: 1bb9ff7e1aefb77b670b2519658cc126)`);
90
+ }
91
+ if (!encodedAddr) {
92
+ throw new Error(`(UNEXPECTED) falsy encodedAddr? We're expecting to have already guaranteed there are no double-slashes (i.e. no empty segments) (E: 7be7668e7b8c9fbbdf56f0fe19f92e26)`);
93
+ }
94
+ const addr = decodeURIComponent(encodedAddr);
95
+ const errors = validateIbGibAddr({ addr });
96
+ return errors ?? [];
97
+ }
98
+ catch (error) {
99
+ return runtimeErrorValidationStrings(lc, error);
100
+ }
101
+ finally {
102
+ if (logalot) {
103
+ console.log(`${lc} complete.`);
104
+ }
105
+ }
106
+ }
107
+ //# sourceMappingURL=path-helper.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-helper.mjs","sourceRoot":"","sources":["../../src/serve-gib/path-helper.mts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=path-helper.respec.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-helper.respec.d.mts","sourceRoot":"","sources":["../../src/serve-gib/path-helper.respec.mts"],"names":[],"mappings":""}
@@ -0,0 +1,83 @@
1
+ // import { respecfully, iReckon, ifWe } from '@ibgib/helper-gib/dist/respec-gib/respec-gib.mjs';
2
+ // import {
3
+ // isSafePath, isValidStaticPath,
4
+ // // API_PATHS, getPathParams, MAX_PATH_LENGTH,
5
+ // validateAddressSegment
6
+ // } from './path-helper.mjs';
7
+ // import { MAX_PATH_LENGTH } from './path-constants.mts';
8
+ export {};
9
+ // const sir = `[${import.meta.url}]`;
10
+ // await respecfully(sir, 'Path Helper Validation', async () => {
11
+ // await respecfully(sir, 'isSafePath', async () => {
12
+ // await ifWe(sir, 'valid simple paths', async () => {
13
+ // iReckon(sir, isSafePath('/api/health')).isGonnaBeTrue();
14
+ // iReckon(sir, isSafePath('/index.html')).isGonnaBeTrue();
15
+ // });
16
+ // await ifWe(sir, 'too long paths', async () => {
17
+ // const longPath = '/'.repeat(MAX_PATH_LENGTH + 1);
18
+ // iReckon(sir, isSafePath(longPath)).isGonnaBeFalse();
19
+ // });
20
+ // await ifWe(sir, 'directory traversal attempts', async () => {
21
+ // iReckon(sir, isSafePath('/../etc/passwd')).isGonnaBeFalse();
22
+ // iReckon(sir, isSafePath('/api/../../etc/passwd')).isGonnaBeFalse();
23
+ // });
24
+ // await ifWe(sir, 'null bytes', async () => {
25
+ // iReckon(sir, isSafePath('/api/health\0')).isGonnaBeFalse();
26
+ // });
27
+ // await ifWe(sir, 'redundant slashes', async () => {
28
+ // iReckon(sir, isSafePath('/api//health')).isGonnaBeFalse();
29
+ // });
30
+ // await ifWe(sir, 'dot-file access', async () => {
31
+ // iReckon(sir, isSafePath('/.env')).isGonnaBeFalse();
32
+ // iReckon(sir, isSafePath('/scripts/.hidden')).isGonnaBeFalse();
33
+ // iReckon(sir, isSafePath('/.git/config')).isGonnaBeFalse();
34
+ // });
35
+ // });
36
+ // await respecfully(sir, 'validateAddressSegment', async () => {
37
+ // await ifWe(sir, 'valid encoded addresses', async () => {
38
+ // const validGib = 'a'.repeat(64);
39
+ // iReckon(sir, validateAddressSegment(`someib%5E${validGib}`)).isGonnaBeTrue();
40
+ // // gib with dots (common in sha256.sha256)
41
+ // const dotGib = `${validGib}.${validGib}`;
42
+ // iReckon(sir, validateAddressSegment(`someib%5E${dotGib}`)).isGonnaBeTrue();
43
+ // });
44
+ // await ifWe(sir, 'invalid encoded addresses', async () => {
45
+ // iReckon(sir, validateAddressSegment('no_delim')).isGonnaBeFalse();
46
+ // iReckon(sir, validateAddressSegment('%5Estarts_with_delim')).isGonnaBeFalse();
47
+ // iReckon(sir, validateAddressSegment('too%5Emany%5Edelims')).isGonnaBeFalse();
48
+ // iReckon(sir, validateAddressSegment('too%5Emany..dots')).isGonnaBeFalse();
49
+ // iReckon(sir, validateAddressSegment('invalid_chars_!%5Eabc')).isGonnaBeFalse();
50
+ // });
51
+ // });
52
+ // await respecfully(sir, 'API_PATHS Regexes', async () => {
53
+ // await ifWe(sir, 'HEALTH regex', async () => {
54
+ // iReckon(sir, API_PATHS.HEALTH.test('/api/health')).isGonnaBeTrue();
55
+ // iReckon(sir, API_PATHS.HEALTH.test('/api/health/')).isGonnaBeTrue();
56
+ // iReckon(sir, API_PATHS.HEALTH.test('/api/health/more')).isGonnaBeFalse();
57
+ // });
58
+ // await ifWe(sir, 'IBGIB_ADDR regex', async () => {
59
+ // // valid encoded addr: someib%5Esomegib
60
+ // const addr = '/api/ibgib/someib%5Esomegib';
61
+ // iReckon(sir, API_PATHS.IBGIB_ADDR.test(addr)).isGonnaBeTrue();
62
+ // const params = getPathParams(addr, API_PATHS.IBGIB_ADDR);
63
+ // iReckon(sir, params?.[0]).isGonnaBe('someib%5Esomegib');
64
+ // });
65
+ // await ifWe(sir, 'IBGIB_GRAPH regex', async () => {
66
+ // const path = '/api/ibgib/graph/someib%5Esomegib';
67
+ // iReckon(sir, API_PATHS.IBGIB_GRAPH.test(path)).isGonnaBeTrue();
68
+ // const params = getPathParams(path, API_PATHS.IBGIB_GRAPH);
69
+ // iReckon(sir, params?.[0]).isGonnaBe('someib%5Esomegib');
70
+ // });
71
+ // await ifWe(sir, 'KEYSTONE regex', async () => {
72
+ // iReckon(sir, API_PATHS.KEYSTONE.test('/api/keystone')).isGonnaBeTrue();
73
+ // iReckon(sir, API_PATHS.KEYSTONE.test('/api/keystone/')).isGonnaBeTrue();
74
+ // });
75
+ // await ifWe(sir, 'KEYSTONE_EVOLVE regex', async () => {
76
+ // const path = '/api/keystone/evolve/someib%5Esomegib';
77
+ // iReckon(sir, API_PATHS.KEYSTONE_EVOLVE.test(path)).isGonnaBeTrue();
78
+ // const params = getPathParams(path, API_PATHS.KEYSTONE_EVOLVE);
79
+ // iReckon(sir, params?.[0]).isGonnaBe('someib%5Esomegib');
80
+ // });
81
+ // });
82
+ // });
83
+ //# sourceMappingURL=path-helper.respec.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-helper.respec.mjs","sourceRoot":"","sources":["../../src/serve-gib/path-helper.respec.mts"],"names":[],"mappings":"AAAA,iGAAiG;AACjG,WAAW;AACX,qCAAqC;AACrC,oDAAoD;AACpD,6BAA6B;AAC7B,8BAA8B;AAC9B,0DAA0D;;AAE1D,sCAAsC;AAEtC,iEAAiE;AAEjE,yDAAyD;AACzD,8DAA8D;AAC9D,uEAAuE;AACvE,uEAAuE;AACvE,cAAc;AAEd,0DAA0D;AAC1D,gEAAgE;AAChE,mEAAmE;AACnE,cAAc;AAEd,wEAAwE;AACxE,2EAA2E;AAC3E,kFAAkF;AAClF,cAAc;AAEd,sDAAsD;AACtD,0EAA0E;AAC1E,cAAc;AAEd,6DAA6D;AAC7D,yEAAyE;AACzE,cAAc;AAEd,2DAA2D;AAC3D,kEAAkE;AAClE,6EAA6E;AAC7E,yEAAyE;AACzE,cAAc;AACd,UAAU;AAEV,qEAAqE;AACrE,mEAAmE;AACnE,+CAA+C;AAC/C,4FAA4F;AAC5F,yDAAyD;AACzD,wDAAwD;AACxD,0FAA0F;AAC1F,cAAc;AAEd,qEAAqE;AACrE,iFAAiF;AACjF,6FAA6F;AAC7F,4FAA4F;AAC5F,yFAAyF;AACzF,8FAA8F;AAC9F,cAAc;AACd,UAAU;AAEV,gEAAgE;AAChE,wDAAwD;AACxD,kFAAkF;AAClF,mFAAmF;AACnF,wFAAwF;AACxF,cAAc;AAEd,4DAA4D;AAC5D,sDAAsD;AACtD,0DAA0D;AAC1D,6EAA6E;AAE7E,wEAAwE;AACxE,uEAAuE;AACvE,cAAc;AAEd,6DAA6D;AAC7D,gEAAgE;AAChE,8EAA8E;AAE9E,yEAAyE;AACzE,uEAAuE;AACvE,cAAc;AAEd,0DAA0D;AAC1D,sFAAsF;AACtF,uFAAuF;AACvF,cAAc;AAEd,iEAAiE;AACjE,oEAAoE;AACpE,kFAAkF;AAElF,6EAA6E;AAC7E,uEAAuE;AACvE,cAAc;AACd,UAAU;AACV,MAAM"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @module serve-gib/serve-gib-helpers
3
+ *
4
+ * General purpose helper functions for the serve-gib framework.
5
+ */
6
+ /**
7
+ * Validates and coerces a boolean query parameter in place on the queryParams object.
8
+ *
9
+ * @param queryParams The parsed query parameters object
10
+ * @param key The specific key to validate and coerce
11
+ * @param errors Array to push error messages into if validation fails
12
+ */
13
+ export declare function validateAndCoerceBooleanQueryParam(queryParams: any, key: string, errors: string[]): void;
14
+ //# sourceMappingURL=serve-gib-helpers.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve-gib-helpers.d.mts","sourceRoot":"","sources":["../../src/serve-gib/serve-gib-helpers.mts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;GAMG;AACH,wBAAgB,kCAAkC,CAC9C,WAAW,EAAE,GAAG,EAChB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EAAE,GACjB,IAAI,CAcN"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * @module serve-gib/serve-gib-helpers
3
+ *
4
+ * General purpose helper functions for the serve-gib framework.
5
+ */
6
+ /**
7
+ * Validates and coerces a boolean query parameter in place on the queryParams object.
8
+ *
9
+ * @param queryParams The parsed query parameters object
10
+ * @param key The specific key to validate and coerce
11
+ * @param errors Array to push error messages into if validation fails
12
+ */
13
+ export function validateAndCoerceBooleanQueryParam(queryParams, key, errors) {
14
+ const rawVal = queryParams[key];
15
+ if (typeof rawVal === 'string' &&
16
+ (rawVal.toLowerCase() === 'true' || rawVal.toLowerCase() === 'false')) {
17
+ queryParams[key] = rawVal.toLowerCase() === 'true';
18
+ }
19
+ else if (typeof rawVal === 'boolean') {
20
+ // do nothing, it's already a boolean
21
+ }
22
+ else if (rawVal !== undefined) {
23
+ errors.push(`invalid value for "${key}". typeof should either be string or boolean. (E: c28ef87a2d4b4a6faef9a2c8db05b637)`);
24
+ }
25
+ else {
26
+ // It's undefined, which means it wasn't provided in the URL.
27
+ // We do not error here because default parameters apply later or it may be optional.
28
+ }
29
+ }
30
+ //# sourceMappingURL=serve-gib-helpers.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve-gib-helpers.mjs","sourceRoot":"","sources":["../../src/serve-gib/serve-gib-helpers.mts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;GAMG;AACH,MAAM,UAAU,kCAAkC,CAC9C,WAAgB,EAChB,GAAW,EACX,MAAgB;IAEhB,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,OAAO,MAAM,KAAK,QAAQ;QAC1B,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,MAAM,IAAI,MAAM,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,EACvE,CAAC;QACC,WAAW,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC;IACvD,CAAC;SAAM,IAAI,OAAO,MAAM,KAAK,SAAS,EAAE,CAAC;QACrC,qCAAqC;IACzC,CAAC;SAAM,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC,sBAAsB,GAAG,qFAAqF,CAAC,CAAC;IAChI,CAAC;SAAM,CAAC;QACJ,6DAA6D;QAC7D,qFAAqF;IACzF,CAAC;AACL,CAAC"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * @module serve-gib/serve-gib-v1
3
+ *
4
+ * The main entry point for processing incoming requests in the serve-gib
5
+ * framework.
6
+ */
7
+ import { IncomingMessage, ServerResponse } from 'node:http';
8
+ import { RequestContext, ServeGibHandler } from './types.mjs';
9
+ export interface ServeGibOptions {
10
+ /** Pipeline of handlers to check in order. */
11
+ handlers: ServeGibHandler<any, any>[];
12
+ /** Dedicated handler for errors (404, 500, etc.). */
13
+ errorHandler: ServeGibHandler<any, any>;
14
+ /** Port the server is listening on. */
15
+ port: number;
16
+ /**
17
+ * Root data directory for the server. We will use this as the root dir for
18
+ * all spaces that house multitenant ibgib data.
19
+ */
20
+ dataDir: string;
21
+ }
22
+ export declare class ServeGib_V1 {
23
+ private options;
24
+ private lc;
25
+ constructor(options: ServeGibOptions);
26
+ /**
27
+ * Entry point for all incoming HTTP requests.
28
+ */
29
+ handleRequest(req: IncomingMessage, res: ServerResponse): Promise<void>;
30
+ /**
31
+ * Builds request context (e.g. extracting/decoding URL, path segments, body
32
+ * content, etc.), and initializes the request's metaspace if applicable.
33
+ */
34
+ prepareContext(req: IncomingMessage): Promise<RequestContext>;
35
+ /** Reads the full request body as UTF-8. */
36
+ private readBody;
37
+ /** Sends the response result to the client. */
38
+ private sendResponse;
39
+ }
40
+ //# sourceMappingURL=serve-gib-v1.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve-gib-v1.d.mts","sourceRoot":"","sources":["../../src/serve-gib/serve-gib-v1.mts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAK5D,OAAO,EAAE,cAAc,EAAkB,eAAe,EAAsB,MAAM,aAAa,CAAC;AAIlG,MAAM,WAAW,eAAe;IAC5B,8CAA8C;IAC9C,QAAQ,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;IACtC,qDAAqD;IACrD,YAAY,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACxC,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,WAAW;IAGR,OAAO,CAAC,OAAO;IAF3B,OAAO,CAAC,EAAE,CAA2B;IAErC,YAAoB,OAAO,EAAE,eAAe,EAAK;IAEjD;;OAEG;IACG,aAAa,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAmD5E;IAED;;;OAGG;IACU,cAAc,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CAyCzE;IAED,4CAA4C;IAC5C,OAAO,CAAC,QAAQ;IAShB,+CAA+C;IAC/C,OAAO,CAAC,YAAY;CAsBvB"}
@@ -0,0 +1,157 @@
1
+ /**
2
+ * @module serve-gib/serve-gib-v1
3
+ *
4
+ * The main entry point for processing incoming requests in the serve-gib
5
+ * framework.
6
+ */
7
+ import { extractErrorMsg } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
8
+ import { GLOBAL_LOG_A_LOT } from './constants.mjs';
9
+ const logalot = GLOBAL_LOG_A_LOT;
10
+ export class ServeGib_V1 {
11
+ options;
12
+ lc = `[${ServeGib_V1.name}]`;
13
+ constructor(options) {
14
+ this.options = options;
15
+ }
16
+ /**
17
+ * Entry point for all incoming HTTP requests.
18
+ */
19
+ async handleRequest(req, res) {
20
+ const lc = `${this.lc}[${this.handleRequest.name}]`;
21
+ const start = Date.now();
22
+ let reqCtx;
23
+ try {
24
+ // Contextualize the request
25
+ reqCtx = await this.prepareContext(req);
26
+ if (!reqCtx) {
27
+ throw new Error(`(UNEXPECTED) reqCtx falsy? couldn't prepare context? (E: 401888c0f649dfdf0e2d21f86b3ff826)`);
28
+ }
29
+ // Execute pipeline
30
+ let result;
31
+ for (const handler of this.options.handlers) {
32
+ result = await handler.handleRoute(reqCtx);
33
+ if (result) {
34
+ break;
35
+ }
36
+ }
37
+ // Fallback if no handler matched
38
+ if (!result) {
39
+ result = await this.options.errorHandler.handleRoute(reqCtx);
40
+ }
41
+ // Final output
42
+ if (result) {
43
+ this.sendResponse(res, result);
44
+ }
45
+ else {
46
+ // If even the error handler didn't produce a result
47
+ this.sendResponse(res, { status: 404, body: 'Not Found' });
48
+ }
49
+ }
50
+ catch (error) {
51
+ console.error(`${lc} Fatal error handling ${req.method} ${req.url}: ${extractErrorMsg(error)}`);
52
+ try {
53
+ // Try to use the error handler for the fatal error
54
+ if (reqCtx) {
55
+ const errorResult = await this.options.errorHandler.handleRoute(reqCtx);
56
+ this.sendResponse(res, errorResult ?? { status: 500, body: 'Internal Server Error' });
57
+ }
58
+ else {
59
+ throw new Error(`errored before reqCtx could be set. (E: d77ab84b4f8874e188cfa8e9895f1226)`);
60
+ }
61
+ }
62
+ catch (innerError) {
63
+ // Total collapse fallback
64
+ console.error(`${lc} Collapse in error handler: ${extractErrorMsg(innerError)}`);
65
+ res.writeHead(500);
66
+ res.end('Critical Server Error');
67
+ }
68
+ }
69
+ finally {
70
+ const duration = Date.now() - start;
71
+ // Standard access logging
72
+ console.log(`${lc} ${req.method} ${req.url} -> ${res.statusCode} (${duration}ms)`);
73
+ }
74
+ }
75
+ /**
76
+ * Builds request context (e.g. extracting/decoding URL, path segments, body
77
+ * content, etc.), and initializes the request's metaspace if applicable.
78
+ */
79
+ async prepareContext(req) {
80
+ const lc = `${this.lc}[${this.prepareContext.name}]`;
81
+ try {
82
+ if (logalot) {
83
+ console.log(`${lc} starting... (I: ad9e9c678d0538c2d1e16ca8063d4426)`);
84
+ }
85
+ /**
86
+ * These are NOT all of the validation we do on the context, rather,
87
+ * it is just simple initial validation.
88
+ */
89
+ const initialValidationErrors = [];
90
+ const rawUrl = req.url ?? '/';
91
+ const protocol = req.headers['x-forwarded-proto'] || 'http'; // todo: who owns the req.headers? Can an attacker manipulate this?
92
+ const url = new URL(rawUrl, `${protocol}://localhost:${this.options.port}`); // todo: wth?? Why are we hard-coding localhost? in the URL object?
93
+ const pathname = url.pathname;
94
+ const rawPathSegments = pathname.split('/');
95
+ const decodedPathSegments = rawPathSegments.map(s => decodeURIComponent(s));
96
+ const body = await this.readBody(req);
97
+ const reqCtx = {
98
+ rawUrl,
99
+ pathname,
100
+ method: req.method?.toUpperCase() ?? 'GET',
101
+ protocol,
102
+ body,
103
+ rawPathSegments,
104
+ decodedPathSegments,
105
+ url,
106
+ dataDir: this.options.dataDir,
107
+ headers: req.headers,
108
+ };
109
+ return reqCtx;
110
+ }
111
+ catch (error) {
112
+ console.error(`${lc} ${extractErrorMsg(error)}`);
113
+ throw error;
114
+ }
115
+ finally {
116
+ if (logalot) {
117
+ console.log(`${lc} complete.`);
118
+ }
119
+ }
120
+ }
121
+ /** Reads the full request body as UTF-8. */
122
+ readBody(req) {
123
+ return new Promise((resolve, reject) => {
124
+ const chunks = [];
125
+ req.on('data', (chunk) => chunks.push(chunk));
126
+ req.on('end', () => resolve(Buffer.concat(chunks).toString('utf-8')));
127
+ req.on('error', reject);
128
+ });
129
+ }
130
+ /** Sends the response result to the client. */
131
+ sendResponse(res, result) {
132
+ const lc = `${this.lc}[${this.sendResponse.name}]`;
133
+ try {
134
+ if (logalot) {
135
+ console.log(`${lc} starting... (I: 37369cf120c14780e8652bf27ada1726)`);
136
+ }
137
+ const { status, headers = {}, body, isJson = false } = result;
138
+ let payload = body;
139
+ if (isJson) {
140
+ headers['Content-Type'] = 'application/json; charset=utf-8';
141
+ payload = JSON.stringify(body);
142
+ }
143
+ res.writeHead(status, headers);
144
+ res.end(payload);
145
+ }
146
+ catch (error) {
147
+ console.error(`${lc} ${extractErrorMsg(error)}`);
148
+ throw error;
149
+ }
150
+ finally {
151
+ if (logalot) {
152
+ console.log(`${lc} complete.`);
153
+ }
154
+ }
155
+ }
156
+ }
157
+ //# sourceMappingURL=serve-gib-v1.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve-gib-v1.mjs","sourceRoot":"","sources":["../../src/serve-gib/serve-gib-v1.mts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=serve-gib.respec.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve-gib.respec.d.mts","sourceRoot":"","sources":["../../src/serve-gib/serve-gib.respec.mts"],"names":[],"mappings":""}
@@ -0,0 +1,85 @@
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 './handlers/api/health.handler.mjs';
4
+ import { ErrorHandler } from './handlers/error-handler.mjs';
5
+ const sir = `[${import.meta.url}]`;
6
+ await respecfully(sir, 'ServeGib ServeGib_V1', async () => {
7
+ await ifWe(sir, 'construct a RouteInfo object', async () => {
8
+ const serveGib = new ServeGib_V1({
9
+ port: 3000,
10
+ dataDir: './test-data',
11
+ handlers: [],
12
+ errorHandler: new ErrorHandler()
13
+ });
14
+ // Mock request
15
+ const req = {
16
+ url: '/api/health?foo=bar',
17
+ method: 'GET',
18
+ headers: { 'x-forwarded-proto': 'https' },
19
+ on: (event, cb) => {
20
+ if (event === 'end') {
21
+ cb();
22
+ }
23
+ } // immediate end for readBody
24
+ };
25
+ const info = await serveGib.prepareContext(req);
26
+ iReckon(sir, info.pathname).isGonnaBe('/api/health');
27
+ iReckon(sir, info.method).isGonnaBe('GET');
28
+ iReckon(sir, info.protocol).isGonnaBe('https');
29
+ iReckon(sir, info.decodedPathSegments).includes('api');
30
+ iReckon(sir, info.decodedPathSegments).includes('health');
31
+ });
32
+ await ifWe(sir, 'execute a handler in the pipeline', async () => {
33
+ const health = new HealthHandler();
34
+ const serveGib = new ServeGib_V1({
35
+ port: 3000,
36
+ dataDir: './test-data',
37
+ handlers: [health],
38
+ errorHandler: new ErrorHandler()
39
+ });
40
+ // Mock objects
41
+ const req = {
42
+ url: '/api/health',
43
+ method: 'GET',
44
+ headers: {},
45
+ on: (event, cb) => {
46
+ if (event === 'end') {
47
+ cb();
48
+ }
49
+ }
50
+ };
51
+ const res = {
52
+ writeHead: () => { },
53
+ end: () => { },
54
+ statusCode: 200
55
+ };
56
+ await serveGib.handleRequest(req, res);
57
+ iReckon(sir, res.statusCode).isGonnaBe(200);
58
+ });
59
+ await ifWe(sir, 'fall back to error handler when no handler matches', async () => {
60
+ const serveGib = new ServeGib_V1({
61
+ port: 3000,
62
+ dataDir: './test-data',
63
+ handlers: [],
64
+ errorHandler: new ErrorHandler()
65
+ });
66
+ const req = {
67
+ url: '/not/found',
68
+ method: 'GET',
69
+ headers: {},
70
+ on: (event, cb) => {
71
+ if (event === 'end') {
72
+ cb();
73
+ }
74
+ }
75
+ };
76
+ const res = {
77
+ writeHead: () => { },
78
+ end: () => { },
79
+ statusCode: 404
80
+ };
81
+ await serveGib.handleRequest(req, res);
82
+ iReckon(sir, res.statusCode).isGonnaBe(404);
83
+ });
84
+ });
85
+ //# sourceMappingURL=serve-gib.respec.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve-gib.respec.mjs","sourceRoot":"","sources":["../../src/serve-gib/serve-gib.respec.mts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare const GLOBAL_LOG_A_LOT = false;
2
+ export declare const GLOBAL_TIMER_NAME = "[space^gib server timer]";
3
+ //# sourceMappingURL=server-constants.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-constants.d.mts","sourceRoot":"","sources":["../../src/serve-gib/server-constants.mts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,QAAQ,CAAC;AACtC,eAAO,MAAM,iBAAiB,6BAA6B,CAAC"}
@@ -0,0 +1,3 @@
1
+ export const GLOBAL_LOG_A_LOT = false;
2
+ export const GLOBAL_TIMER_NAME = '[space^gib server timer]';
3
+ //# sourceMappingURL=server-constants.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-constants.mjs","sourceRoot":"","sources":["../../src/serve-gib/server-constants.mts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,CAAC;AACtC,MAAM,CAAC,MAAM,iBAAiB,GAAG,0BAA0B,CAAC"}