@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
@@ -1 +1 @@
1
- {"version":3,"file":"assumptions.respec.mjs","sourceRoot":"","sources":["../src/assumptions.respec.mts"],"names":[],"mappings":"AAAA,OAAO,EACsB,IAAI,EAElB,OAAO,EAAE,WAAW,EAClC,MAAM,kDAAkD,CAAC;AAC1D,MAAM,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC;AAGhD;;;;;;;GAOG;AACH,KAAK,UAAU,gBAAgB,CAAC,EAC5B,CAAC,EACD,SAAS,GAAG,SAAS,GAIxB;IACG,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC;IACnC,IAAI,CAAC,CAAC,EAAE,CAAC;QAAC,MAAM,IAAI,KAAK,CAAC,IAAI,gBAAgB,CAAC,IAAI,iBAAiB,CAAC,CAAA;IAAC,CAAC;IACvE,IAAI,CAAC,SAAS,EAAE,CAAC;QAAC,MAAM,IAAI,KAAK,CAAC,IAAI,gBAAgB,CAAC,IAAI,yBAAyB,CAAC,CAAA;IAAC,CAAC;IACvF,IAAI,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACxD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;QACnD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACtE,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;QAC9B,MAAM,CAAC,CAAC;IACZ,CAAC;AACL,CAAC;AAED,MAAM,WAAW,CAAC,GAAG,EAAE,sCAAsC,EAAE,KAAK,IAAI,EAAE;IAEtE,MAAM,IAAI,CAAC,GAAG,EAAE,wEAAwE,EAAE,KAAK,IAAI,EAAE;QACjG,IAAI,CAAC,GAAG,MAAM,gBAAgB,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,kEAAkE,CAAC,CAAC;IAC7G,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,CAAC,GAAG,EAAE,mFAAmF,EAAE,KAAK,IAAI,EAAE;QAC5G,IAAI,KAAK,GAAa,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;QAC/C,IAAI,CAAC,GAAG,MAAM,gBAAgB,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,mEAAmE;QACjI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,kEAAkE,CAAC,CAAC;IACjH,CAAC,CAAC,CAAC;AAEP,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"assumptions.respec.mjs","sourceRoot":"","sources":["../src/assumptions.respec.mts"],"names":[],"mappings":"AAAA,OAAO,EACsB,IAAI,EAElB,OAAO,EAAE,WAAW,EAClC,MAAM,kDAAkD,CAAC;AAC1D,MAAM,IAAI,GAAG,IAAI,OAAO,IAAI,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC;AAGhD;;;;;;;GAOG;AACH,KAAK,UAAU,gBAAgB,CAAC,EAC5B,CAAC,EACD,SAAS,GAAG,SAAS,GAIxB;IACG,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC;IACnC,IAAI,CAAC,CAAC,EAAE,CAAC;QAAC,MAAM,IAAI,KAAK,CAAC,IAAI,gBAAgB,CAAC,IAAI,iBAAiB,CAAC,CAAA;IAAC,CAAC;IACvE,IAAI,CAAC,SAAS,EAAE,CAAC;QAAC,MAAM,IAAI,KAAK,CAAC,IAAI,gBAAgB,CAAC,IAAI,yBAAyB,CAAC,CAAA;IAAC,CAAC;IACvF,IAAI,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACxD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;QACnD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACtE,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;QAC9B,MAAM,CAAC,CAAC;IACZ,CAAC;AACL,CAAC;AAED,MAAM,WAAW,CAAC,GAAG,EAAE,sCAAsC,EAAE,KAAK,IAAI,EAAE;IAEtE,MAAM,IAAI,CAAC,GAAG,EAAE,wEAAwE,EAAE,KAAK,IAAI,EAAE;QACjG,IAAI,CAAC,GAAG,MAAM,gBAAgB,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,kEAAkE,CAAC,CAAC;IAC7G,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,CAAC,GAAG,EAAE,mFAAmF,EAAE,KAAK,IAAI,EAAE;QAC5G,IAAI,KAAK,GAAa,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;QAC/C,IAAI,CAAC,GAAG,MAAM,gBAAgB,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,mEAAmE;QACjI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,kEAAkE,CAAC,CAAC;IACjH,CAAC,CAAC,CAAC;AAEP,CAAC,CAAC,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * AWS Signature Version 4 helper using native Node.js crypto module.
3
+ * Zero-dependency implementation for signing REST requests to AWS services (e.g., SES).
4
+ */
5
+ export interface AwsSigV4Options {
6
+ method: string;
7
+ url: string;
8
+ region: string;
9
+ service: string;
10
+ accessKeyId: string;
11
+ secretAccessKey: string;
12
+ body?: string | Buffer;
13
+ headers?: Record<string, string>;
14
+ timestamp?: Date;
15
+ }
16
+ export interface AwsSigV4Result {
17
+ headers: Record<string, string>;
18
+ amzDate: string;
19
+ signature: string;
20
+ authorization: string;
21
+ }
22
+ /**
23
+ * Computes AWS SigV4 signed headers for an HTTP request.
24
+ */
25
+ export declare function createAwsSigV4Headers(options: AwsSigV4Options): AwsSigV4Result;
26
+ //# sourceMappingURL=aws-sigv4-helper.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aws-sigv4-helper.d.mts","sourceRoot":"","sources":["../../../src/email/aws/aws-sigv4-helper.mts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,WAAW,eAAe;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC3B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACzB;AAcD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,eAAe,GAAG,cAAc,CAiG9E"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * AWS Signature Version 4 helper using native Node.js crypto module.
3
+ * Zero-dependency implementation for signing REST requests to AWS services (e.g., SES).
4
+ */
5
+ import crypto from 'node:crypto';
6
+ function sha256Hex(data) {
7
+ return crypto.createHash('sha256').update(data).digest('hex');
8
+ }
9
+ function hmac(key, data) {
10
+ return crypto.createHmac('sha256', key).update(data, 'utf8').digest();
11
+ }
12
+ function encodeRfc3986(str) {
13
+ return encodeURIComponent(str).replace(/[!'()*]/g, c => `%${c.charCodeAt(0).toString(16).toUpperCase()}`);
14
+ }
15
+ /**
16
+ * Computes AWS SigV4 signed headers for an HTTP request.
17
+ */
18
+ export function createAwsSigV4Headers(options) {
19
+ const { method, url: urlStr, region, service, accessKeyId, secretAccessKey, body = '', headers: extraHeaders = {}, timestamp = new Date(), } = options;
20
+ const parsedUrl = new URL(urlStr);
21
+ const amzDate = timestamp.toISOString().replace(/[:-]/g, '').replace(/\.\d{3}/, '');
22
+ const dateStamp = amzDate.slice(0, 8);
23
+ const headersToSign = {
24
+ host: parsedUrl.host,
25
+ 'x-amz-date': amzDate,
26
+ };
27
+ for (const [k, v] of Object.entries(extraHeaders)) {
28
+ headersToSign[k.toLowerCase()] = v.trim().replace(/\s+/g, ' ');
29
+ }
30
+ const sortedHeaderKeys = Object.keys(headersToSign).sort();
31
+ const canonicalHeaders = sortedHeaderKeys.map(k => `${k}:${headersToSign[k]}\n`).join('');
32
+ const signedHeaders = sortedHeaderKeys.join(';');
33
+ // Canonical URI
34
+ let canonicalUri = parsedUrl.pathname;
35
+ if (!canonicalUri) {
36
+ canonicalUri = '/';
37
+ }
38
+ else {
39
+ canonicalUri = canonicalUri
40
+ .split('/')
41
+ .map(segment => encodeRfc3986(segment))
42
+ .join('/');
43
+ }
44
+ // Canonical Query String
45
+ const queryParams = [];
46
+ parsedUrl.searchParams.forEach((val, key) => {
47
+ queryParams.push([encodeRfc3986(key), encodeRfc3986(val)]);
48
+ });
49
+ queryParams.sort(([k1, v1], [k2, v2]) => {
50
+ if (k1 === k2) {
51
+ return v1.localeCompare(v2);
52
+ }
53
+ return k1.localeCompare(k2);
54
+ });
55
+ const canonicalQueryString = queryParams.map(([k, v]) => `${k}=${v}`).join('&');
56
+ const payloadHash = sha256Hex(body);
57
+ const canonicalRequest = [
58
+ method.toUpperCase(),
59
+ canonicalUri,
60
+ canonicalQueryString,
61
+ canonicalHeaders,
62
+ signedHeaders,
63
+ payloadHash,
64
+ ].join('\n');
65
+ const hashedCanonicalRequest = sha256Hex(canonicalRequest);
66
+ const credentialScope = `${dateStamp}/${region}/${service}/aws4_request`;
67
+ const stringToSign = [
68
+ 'AWS4-HMAC-SHA256',
69
+ amzDate,
70
+ credentialScope,
71
+ hashedCanonicalRequest,
72
+ ].join('\n');
73
+ const kDate = hmac(`AWS4${secretAccessKey}`, dateStamp);
74
+ const kRegion = hmac(kDate, region);
75
+ const kService = hmac(kRegion, service);
76
+ const kSigning = hmac(kService, 'aws4_request');
77
+ const signature = crypto.createHmac('sha256', kSigning).update(stringToSign, 'utf8').digest('hex');
78
+ const authorization = `AWS4-HMAC-SHA256 Credential=${accessKeyId}/${credentialScope}, SignedHeaders=${signedHeaders}, Signature=${signature}`;
79
+ const resultHeaders = {
80
+ Host: parsedUrl.host,
81
+ 'X-Amz-Date': amzDate,
82
+ Authorization: authorization,
83
+ };
84
+ for (const [k, v] of Object.entries(extraHeaders)) {
85
+ resultHeaders[k] = v;
86
+ }
87
+ return {
88
+ headers: resultHeaders,
89
+ amzDate,
90
+ signature,
91
+ authorization,
92
+ };
93
+ }
94
+ //# sourceMappingURL=aws-sigv4-helper.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aws-sigv4-helper.mjs","sourceRoot":"","sources":["../../../src/email/aws/aws-sigv4-helper.mts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * AWS SES concrete driver implementation of EmailReceiverBase.
3
+ * Parses SES notification webhooks (SNS / S3) and evaluates spam/SPF/DKIM/virus verdicts.
4
+ */
5
+ import { EmailReceiverBase } from '../email-receiver.mjs';
6
+ import { InboundEmail } from '../email-types.mjs';
7
+ export declare class EmailReceiverAws extends EmailReceiverBase {
8
+ /**
9
+ * Parses an incoming AWS SES webhook or SNS notification payload into a normalized InboundEmail object.
10
+ */
11
+ parseInboundPayload(payload: any): Promise<InboundEmail>;
12
+ }
13
+ //# sourceMappingURL=email-receiver-aws.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email-receiver-aws.d.mts","sourceRoot":"","sources":["../../../src/email/aws/email-receiver-aws.mts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAqB,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAErE,qBAAa,gBAAiB,SAAQ,iBAAiB;IACnD;;OAEG;IACG,mBAAmB,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC,CA4F7D;CACJ"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * AWS SES concrete driver implementation of EmailReceiverBase.
3
+ * Parses SES notification webhooks (SNS / S3) and evaluates spam/SPF/DKIM/virus verdicts.
4
+ */
5
+ import { parseEmailAddress, sanitizeHeaderValue } from '../email-helpers.mjs';
6
+ import { EmailReceiverBase } from '../email-receiver.mjs';
7
+ export class EmailReceiverAws extends EmailReceiverBase {
8
+ /**
9
+ * Parses an incoming AWS SES webhook or SNS notification payload into a normalized InboundEmail object.
10
+ */
11
+ async parseInboundPayload(payload) {
12
+ let rawData = payload;
13
+ if (typeof rawData === 'string') {
14
+ try {
15
+ rawData = JSON.parse(rawData);
16
+ }
17
+ catch {
18
+ throw new Error('Invalid JSON string in AWS inbound payload. (E: 6f7890123456789abcdef6a7b8c9d0e1)');
19
+ }
20
+ }
21
+ // Validate SNS SigningCertURL domain if present (prevents SSRF / unauthenticated cert host spoofing)
22
+ if (rawData && typeof rawData === 'object' && rawData.SigningCertURL) {
23
+ try {
24
+ const certUrl = new URL(rawData.SigningCertURL);
25
+ if (certUrl.protocol !== 'https:' || !certUrl.hostname.endsWith('.amazonaws.com')) {
26
+ throw new Error(`Invalid SNS SigningCertURL host: ${rawData.SigningCertURL} (E: a9b8c7d6e5f432109876543210fedcba)`);
27
+ }
28
+ }
29
+ catch (err) {
30
+ if (err?.message?.includes('(E: ')) {
31
+ throw err;
32
+ }
33
+ throw new Error(`Invalid SNS SigningCertURL: ${err?.message || String(err)} (E: b8c7d6e5f432109876543210fedcba9)`);
34
+ }
35
+ }
36
+ // If payload is wrapped inside an SNS message: { Type: 'Notification', Message: '{...}' }
37
+ if (rawData && typeof rawData === 'object' && rawData.Message && typeof rawData.Message === 'string') {
38
+ try {
39
+ rawData = JSON.parse(rawData.Message);
40
+ }
41
+ catch {
42
+ // If Message is not JSON, retain outer object
43
+ }
44
+ }
45
+ if (!rawData || typeof rawData !== 'object') {
46
+ throw new Error('Invalid payload structure for AWS SES email parsing. (E: 7890123456789abcdef7a8b9c0d1e2f3)');
47
+ }
48
+ const mail = rawData.mail || {};
49
+ const receipt = rawData.receipt || {};
50
+ const messageId = mail.messageId || rawData.messageId || `aws-${Date.now()}-${Math.random().toString(36).substring(2, 8)}`;
51
+ const receivedAt = mail.timestamp || receipt.timestamp || new Date().toISOString();
52
+ // Extract From
53
+ let fromRaw = mail.source || mail.commonHeaders?.from?.[0] || rawData.from || 'unknown@unknown.com';
54
+ if (Array.isArray(fromRaw)) {
55
+ fromRaw = fromRaw[0];
56
+ }
57
+ const from = parseEmailAddress(fromRaw);
58
+ // Extract To
59
+ const toRawList = mail.destination || mail.commonHeaders?.to || rawData.to || [];
60
+ const toList = Array.isArray(toRawList) ? toRawList : [toRawList];
61
+ const to = toList.map(t => parseEmailAddress(t));
62
+ // Extract Cc
63
+ const ccRawList = mail.commonHeaders?.cc || rawData.cc;
64
+ const cc = ccRawList ? (Array.isArray(ccRawList) ? ccRawList : [ccRawList]).map(c => parseEmailAddress(c)) : undefined;
65
+ // Subject (sanitized against header injection)
66
+ const subjectRaw = mail.commonHeaders?.subject || rawData.subject || '(No Subject)';
67
+ const subject = sanitizeHeaderValue(subjectRaw);
68
+ // Extract Verdicts
69
+ const spamVerdicts = {
70
+ spamVerdict: receipt.spamVerdict?.status || rawData.spamVerdict || 'PASS',
71
+ virusVerdict: receipt.virusVerdict?.status || rawData.virusVerdict || 'PASS',
72
+ spfVerdict: receipt.spfVerdict?.status || rawData.spfVerdict || 'PASS',
73
+ dkimVerdict: receipt.dkimVerdict?.status || rawData.dkimVerdict || 'PASS',
74
+ dmarcVerdict: receipt.dmarcVerdict?.status || rawData.dmarcVerdict || 'PASS',
75
+ };
76
+ const folder = this.evaluateSpamVerdicts(spamVerdicts);
77
+ const textBody = rawData.textBody || rawData.content || undefined;
78
+ const htmlBody = rawData.htmlBody || undefined;
79
+ const rawMime = rawData.rawMime || (typeof rawData.content === 'string' ? rawData.content : undefined);
80
+ const inboundEmail = {
81
+ messageId,
82
+ from,
83
+ to,
84
+ cc,
85
+ subject,
86
+ textBody,
87
+ htmlBody,
88
+ rawMime,
89
+ receivedAt,
90
+ spamVerdicts,
91
+ folder,
92
+ headers: mail.commonHeaders || rawData.headers,
93
+ };
94
+ return inboundEmail;
95
+ }
96
+ }
97
+ //# sourceMappingURL=email-receiver-aws.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email-receiver-aws.mjs","sourceRoot":"","sources":["../../../src/email/aws/email-receiver-aws.mts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * AWS SES concrete driver implementation of EmailSenderBase.
3
+ */
4
+ import { EmailSenderBase } from '../email-sender.mjs';
5
+ import { EmailSendResult, OutboundEmail } from '../email-types.mjs';
6
+ export interface EmailSenderAwsOptions {
7
+ accessKeyId: string;
8
+ secretAccessKey: string;
9
+ region?: string;
10
+ endpoint?: string;
11
+ /** Custom fetch implementation (optional, defaults to globalThis.fetch) */
12
+ fetchFn?: typeof fetch;
13
+ }
14
+ export declare class EmailSenderAws extends EmailSenderBase {
15
+ private accessKeyId;
16
+ private secretAccessKey;
17
+ private region;
18
+ private endpoint;
19
+ private fetchFn;
20
+ constructor(options: EmailSenderAwsOptions);
21
+ sendEmail(email: OutboundEmail): Promise<EmailSendResult>;
22
+ }
23
+ //# sourceMappingURL=email-sender-aws.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email-sender-aws.d.mts","sourceRoot":"","sources":["../../../src/email/aws/email-sender-aws.mts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGpE,MAAM,WAAW,qBAAqB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2EAA2E;IAC3E,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAED,qBAAa,cAAe,SAAQ,eAAe;IAC/C,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,OAAO,CAAe;IAE9B,YAAY,OAAO,EAAE,qBAAqB,EAUzC;IAEK,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,eAAe,CAAC,CA0F9D;CACJ"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * AWS SES concrete driver implementation of EmailSenderBase.
3
+ */
4
+ import { DEFAULT_AWS_REGION, DEFAULT_AWS_SERVICE } from '../email-constants.mjs';
5
+ import { formatEmailAddress } from '../email-helpers.mjs';
6
+ import { EmailSenderBase } from '../email-sender.mjs';
7
+ import { createAwsSigV4Headers } from './aws-sigv4-helper.mjs';
8
+ export class EmailSenderAws extends EmailSenderBase {
9
+ accessKeyId;
10
+ secretAccessKey;
11
+ region;
12
+ endpoint;
13
+ fetchFn;
14
+ constructor(options) {
15
+ super();
16
+ if (!options.accessKeyId || !options.secretAccessKey) {
17
+ throw new Error('EmailSenderAws requires accessKeyId and secretAccessKey. (E: 5e6f7890123456789abcdef5a6b7c8d9)');
18
+ }
19
+ this.accessKeyId = options.accessKeyId;
20
+ this.secretAccessKey = options.secretAccessKey;
21
+ this.region = options.region || DEFAULT_AWS_REGION;
22
+ this.endpoint = options.endpoint || `https://email.${this.region}.amazonaws.com`;
23
+ this.fetchFn = options.fetchFn || globalThis.fetch;
24
+ }
25
+ async sendEmail(email) {
26
+ try {
27
+ this.validateOutboundEmail(email);
28
+ const params = new URLSearchParams();
29
+ params.append('Action', 'SendEmail');
30
+ params.append('Version', '2010-12-01');
31
+ params.append('Source', formatEmailAddress(email.from));
32
+ email.to.forEach((addr, idx) => {
33
+ params.append(`Destination.ToAddresses.member.${idx + 1}`, formatEmailAddress(addr));
34
+ });
35
+ if (email.cc && email.cc.length > 0) {
36
+ email.cc.forEach((addr, idx) => {
37
+ params.append(`Destination.CcAddresses.member.${idx + 1}`, formatEmailAddress(addr));
38
+ });
39
+ }
40
+ if (email.bcc && email.bcc.length > 0) {
41
+ email.bcc.forEach((addr, idx) => {
42
+ params.append(`Destination.BccAddresses.member.${idx + 1}`, formatEmailAddress(addr));
43
+ });
44
+ }
45
+ if (email.replyTo) {
46
+ params.append('ReplyToAddresses.member.1', formatEmailAddress(email.replyTo));
47
+ }
48
+ params.append('Message.Subject.Data', email.subject);
49
+ params.append('Message.Subject.Charset', 'UTF-8');
50
+ if (email.textBody) {
51
+ params.append('Message.Body.Text.Data', email.textBody);
52
+ params.append('Message.Body.Text.Charset', 'UTF-8');
53
+ }
54
+ if (email.htmlBody) {
55
+ params.append('Message.Body.Html.Data', email.htmlBody);
56
+ params.append('Message.Body.Html.Charset', 'UTF-8');
57
+ }
58
+ const bodyString = params.toString();
59
+ const headers = {
60
+ 'Content-Type': 'application/x-www-form-urlencoded',
61
+ };
62
+ const sigV4Result = createAwsSigV4Headers({
63
+ method: 'POST',
64
+ url: this.endpoint,
65
+ region: this.region,
66
+ service: DEFAULT_AWS_SERVICE,
67
+ accessKeyId: this.accessKeyId,
68
+ secretAccessKey: this.secretAccessKey,
69
+ body: bodyString,
70
+ headers,
71
+ });
72
+ const response = await this.fetchFn(this.endpoint, {
73
+ method: 'POST',
74
+ headers: sigV4Result.headers,
75
+ body: bodyString,
76
+ });
77
+ const responseText = await response.text();
78
+ if (response.ok) {
79
+ // Parse MessageId from XML response: <MessageId>010001...</MessageId>
80
+ const messageIdMatch = responseText.match(/<MessageId>(.*?)<\/MessageId>/);
81
+ const messageId = messageIdMatch ? messageIdMatch[1] : undefined;
82
+ return {
83
+ success: true,
84
+ messageId,
85
+ statusCode: response.status,
86
+ };
87
+ }
88
+ else {
89
+ const errorMatch = responseText.match(/<Message>(.*?)<\/Message>/);
90
+ const errorMsg = errorMatch ? errorMatch[1] : responseText;
91
+ return {
92
+ success: false,
93
+ error: `AWS SES Error (${response.status}): ${errorMsg}`,
94
+ statusCode: response.status,
95
+ };
96
+ }
97
+ }
98
+ catch (error) {
99
+ return {
100
+ success: false,
101
+ error: error?.message || String(error),
102
+ };
103
+ }
104
+ }
105
+ }
106
+ //# sourceMappingURL=email-sender-aws.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email-sender-aws.mjs","sourceRoot":"","sources":["../../../src/email/aws/email-sender-aws.mts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * AWS email driver exports.
3
+ */
4
+ export * from './aws-sigv4-helper.mjs';
5
+ export * from './email-sender-aws.mjs';
6
+ export * from './email-receiver-aws.mjs';
7
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../../src/email/aws/index.mts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * AWS email driver exports.
3
+ */
4
+ export * from './aws-sigv4-helper.mjs';
5
+ export * from './email-sender-aws.mjs';
6
+ export * from './email-receiver-aws.mjs';
7
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../../src/email/aws/index.mts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Constants for email infrastructure in node-gib.
3
+ */
4
+ export declare const DEFAULT_EMAIL_CHARSET = "UTF-8";
5
+ export declare const EMAIL_MODE_AWS = "aws";
6
+ export declare const EMAIL_MODE_MOCK = "mock";
7
+ export declare const DEFAULT_AWS_REGION = "us-east-1";
8
+ export declare const DEFAULT_AWS_SES_ENDPOINT = "https://email.us-east-1.amazonaws.com";
9
+ export declare const DEFAULT_AWS_SERVICE = "ses";
10
+ export declare const VERDICT_PASS = "PASS";
11
+ export declare const VERDICT_FAIL = "FAIL";
12
+ export declare const VERDICT_GRAY = "GRAY";
13
+ export declare const FOLDER_INBOX = "inbox";
14
+ export declare const FOLDER_JUNK = "junk";
15
+ //# sourceMappingURL=email-constants.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email-constants.d.mts","sourceRoot":"","sources":["../../src/email/email-constants.mts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,qBAAqB,UAAU,CAAC;AAC7C,eAAO,MAAM,cAAc,QAAQ,CAAC;AACpC,eAAO,MAAM,eAAe,SAAS,CAAC;AAEtC,eAAO,MAAM,kBAAkB,cAAc,CAAC;AAC9C,eAAO,MAAM,wBAAwB,0CAA0C,CAAC;AAChF,eAAO,MAAM,mBAAmB,QAAQ,CAAC;AAEzC,eAAO,MAAM,YAAY,SAAS,CAAC;AACnC,eAAO,MAAM,YAAY,SAAS,CAAC;AACnC,eAAO,MAAM,YAAY,SAAS,CAAC;AAEnC,eAAO,MAAM,YAAY,UAAU,CAAC;AACpC,eAAO,MAAM,WAAW,SAAS,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Constants for email infrastructure in node-gib.
3
+ */
4
+ export const DEFAULT_EMAIL_CHARSET = 'UTF-8';
5
+ export const EMAIL_MODE_AWS = 'aws';
6
+ export const EMAIL_MODE_MOCK = 'mock';
7
+ export const DEFAULT_AWS_REGION = 'us-east-1';
8
+ export const DEFAULT_AWS_SES_ENDPOINT = 'https://email.us-east-1.amazonaws.com';
9
+ export const DEFAULT_AWS_SERVICE = 'ses';
10
+ export const VERDICT_PASS = 'PASS';
11
+ export const VERDICT_FAIL = 'FAIL';
12
+ export const VERDICT_GRAY = 'GRAY';
13
+ export const FOLDER_INBOX = 'inbox';
14
+ export const FOLDER_JUNK = 'junk';
15
+ //# sourceMappingURL=email-constants.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email-constants.mjs","sourceRoot":"","sources":["../../src/email/email-constants.mts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG,OAAO,CAAC;AAC7C,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAC;AACpC,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC;AAEtC,MAAM,CAAC,MAAM,kBAAkB,GAAG,WAAW,CAAC;AAC9C,MAAM,CAAC,MAAM,wBAAwB,GAAG,uCAAuC,CAAC;AAChF,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC;AAEzC,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC;AACnC,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC;AACnC,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC;AAEnC,MAAM,CAAC,MAAM,YAAY,GAAG,OAAO,CAAC;AACpC,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Helper functions for email parsing, validation, and MIME string formatting.
3
+ */
4
+ import { EmailAddress, OutboundEmail } from './email-types.mjs';
5
+ /**
6
+ * Validates whether an email string matches standard email formatting.
7
+ */
8
+ export declare function validateEmail(email: string): boolean;
9
+ /** Alias for validateEmail for email address format checking. */
10
+ export declare function validateEmailAddress(email: string): boolean;
11
+ /**
12
+ * Sanitizes header values by stripping carriage return (\r) and newline (\n) characters
13
+ * to prevent MIME header injection.
14
+ */
15
+ export declare function sanitizeHeaderValue(val: string): string;
16
+ /**
17
+ * Parses a string or EmailAddress object into a normalized EmailAddress object.
18
+ * Examples:
19
+ * - "Alice <alice@example.com>" -> { name: "Alice", address: "alice@example.com" }
20
+ * - "alice@example.com" -> { address: "alice@example.com" }
21
+ */
22
+ export declare function parseEmailAddress(addr: EmailAddress | string): EmailAddress;
23
+ /**
24
+ * Formats an EmailAddress or string into RFC 2822 format (e.g. `"Alice" <alice@example.com>`).
25
+ */
26
+ export declare function formatEmailAddress(addr: EmailAddress | string): string;
27
+ /**
28
+ * Parses raw MIME headers string or header record into a key-value record with normalized header names.
29
+ */
30
+ export declare function parseRawMimeHeaders(raw: string | Record<string, string>): Record<string, string>;
31
+ /**
32
+ * Formats an OutboundEmail object into a raw MIME string (RFC 2822).
33
+ */
34
+ export declare function formatRawMimeString(email: OutboundEmail, charset?: string): string;
35
+ //# sourceMappingURL=email-helpers.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email-helpers.d.mts","sourceRoot":"","sources":["../../src/email/email-helpers.mts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAIhE;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAGpD;AAED,iEAAiE;AACjE,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE3D;AAGD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAGvD;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,GAAG,YAAY,CAoB3E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,GAAG,MAAM,CAMtE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAwBhG;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,GAAE,MAA8B,GAAG,MAAM,CAwDzG"}