@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,99 @@
1
+ /**
2
+ * Strict flatcase regex for individual tokens (username, role, deviceId, providerId).
3
+ * Lowercase alphanumeric characters only [a-z0-9], no hyphens or punctuation.
4
+ */
5
+ export const FLATCASE_TOKEN_REGEXP = /^[a-z0-9]+$/;
6
+ /**
7
+ * Validates if a string token is strict flatcase ([a-z0-9]+).
8
+ */
9
+ export function validateFlatcaseToken(token) {
10
+ if (!token || typeof token !== 'string') {
11
+ return false;
12
+ }
13
+ return FLATCASE_TOKEN_REGEXP.test(token);
14
+ }
15
+ /**
16
+ * Sanitizes an input string to strict flatcase ([a-z0-9]).
17
+ */
18
+ export function sanitizeToken(input) {
19
+ if (!input || typeof input !== 'string') {
20
+ return '';
21
+ }
22
+ return input.toLowerCase().replace(/[^a-z0-9]/g, '');
23
+ }
24
+ /**
25
+ * Validates a keystone name string against the naming conventions:
26
+ * 1. Primary identity: `[username]` (e.g. `alice`)
27
+ * 2. Delegate: `[username]-[role]-[deviceIdOrProviderId]` (e.g. `alice-sync-browsera` or `alice-sync-google`)
28
+ *
29
+ * Enforces strict flatcase on all inner tokens (`[a-z0-9]+`).
30
+ */
31
+ export function validateKeystoneNameSchema(name) {
32
+ if (!name || typeof name !== 'string') {
33
+ return { valid: false, error: 'Keystone name must be a non-empty string.' };
34
+ }
35
+ const parts = name.split('-');
36
+ if (parts.length === 1) {
37
+ const username = parts[0];
38
+ if (!validateFlatcaseToken(username)) {
39
+ return { valid: false, error: `Invalid primary username token '${username}'. Must be flatcase [a-z0-9]+.` };
40
+ }
41
+ return { valid: true, type: 'primary', username };
42
+ }
43
+ else if (parts.length === 3) {
44
+ const [username, role, deviceIdOrProviderId] = parts;
45
+ if (!validateFlatcaseToken(username)) {
46
+ return { valid: false, error: `Invalid username token '${username}'. Must be flatcase [a-z0-9]+.` };
47
+ }
48
+ if (!validateFlatcaseToken(role)) {
49
+ return { valid: false, error: `Invalid role token '${role}'. Must be flatcase [a-z0-9]+.` };
50
+ }
51
+ if (!validateFlatcaseToken(deviceIdOrProviderId)) {
52
+ return { valid: false, error: `Invalid deviceId/providerId token '${deviceIdOrProviderId}'. Must be flatcase [a-z0-9]+.` };
53
+ }
54
+ return { valid: true, type: 'delegate', username, role, deviceIdOrProviderId };
55
+ }
56
+ else {
57
+ return {
58
+ valid: false,
59
+ error: `Invalid keystone name format '${name}'. Expected '[username]' or '[username]-[role]-[deviceId]' (3 hyphen-separated flatcase tokens).`
60
+ };
61
+ }
62
+ }
63
+ /**
64
+ * Validates a challenge pool ID string against pool conventions:
65
+ * 1. Native/User-Owned pool: single flatcase word (e.g. `manage`, `default`, `revoke`, `sync`, `connect`).
66
+ * 2. Custodial/Foreign pool: `custodian-[what]-[providerId]` (e.g. `custodian-manage-google`, `custodian-revoke-github`).
67
+ */
68
+ export function validateChallengePoolIdSchema(poolId) {
69
+ if (!poolId || typeof poolId !== 'string') {
70
+ return { valid: false, error: 'Pool ID must be a non-empty string.' };
71
+ }
72
+ const parts = poolId.split('-');
73
+ if (parts.length === 1) {
74
+ if (!validateFlatcaseToken(parts[0])) {
75
+ return { valid: false, error: `Invalid native pool ID '${poolId}'. Must be flatcase [a-z0-9]+.` };
76
+ }
77
+ return { valid: true, isForeign: false };
78
+ }
79
+ else if (parts.length === 3) {
80
+ const [who, what, providerId] = parts;
81
+ if (who !== 'custodian') {
82
+ return { valid: false, error: `Invalid foreign pool 'who' token '${who}'. Must be 'custodian'.` };
83
+ }
84
+ if (!['manage', 'sync', 'revoke'].includes(what)) {
85
+ return { valid: false, error: `Invalid foreign pool 'what' token '${what}'. Must be 'manage', 'sync', or 'revoke'.` };
86
+ }
87
+ if (!validateFlatcaseToken(providerId)) {
88
+ return { valid: false, error: `Invalid foreign pool providerId token '${providerId}'. Must be flatcase [a-z0-9]+.` };
89
+ }
90
+ return { valid: true, isForeign: true, who, what, providerId };
91
+ }
92
+ else {
93
+ return {
94
+ valid: false,
95
+ error: `Invalid challenge pool ID '${poolId}'. Expected single flatcase word or 'custodian-[what]-[providerId]'.`
96
+ };
97
+ }
98
+ }
99
+ //# sourceMappingURL=keystone-schema-helpers.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keystone-schema-helpers.mjs","sourceRoot":"","sources":["../../src/serve-gib/keystone-schema-helpers.mts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=keystone-schema-helpers.respec.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keystone-schema-helpers.respec.d.mts","sourceRoot":"","sources":["../../src/serve-gib/keystone-schema-helpers.respec.mts"],"names":[],"mappings":""}
@@ -0,0 +1,68 @@
1
+ import { respecfully, iReckon, ifWe } from '@ibgib/helper-gib/dist/respec-gib/respec-gib.mjs';
2
+ import { validateFlatcaseToken, sanitizeToken, validateKeystoneNameSchema, validateChallengePoolIdSchema, } from './keystone-schema-helpers.mjs';
3
+ const sir = `[${import.meta.url}]`;
4
+ await respecfully(sir, 'Keystone Schema Helpers', async () => {
5
+ await ifWe(sir, 'validate flatcase tokens accurately', async () => {
6
+ iReckon(sir, validateFlatcaseToken('alice')).isGonnaBeTrue();
7
+ iReckon(sir, validateFlatcaseToken('bobbobbins')).isGonnaBeTrue();
8
+ iReckon(sir, validateFlatcaseToken('dev123')).isGonnaBeTrue();
9
+ iReckon(sir, validateFlatcaseToken('google')).isGonnaBeTrue();
10
+ // Invalid: hyphens, uppercase, spaces, special chars
11
+ iReckon(sir, validateFlatcaseToken('alice-bob')).isGonnaBeFalse();
12
+ iReckon(sir, validateFlatcaseToken('Alice')).isGonnaBeFalse();
13
+ iReckon(sir, validateFlatcaseToken('user_name')).isGonnaBeFalse();
14
+ iReckon(sir, validateFlatcaseToken('user@domain')).isGonnaBeFalse();
15
+ iReckon(sir, validateFlatcaseToken('')).isGonnaBeFalse();
16
+ });
17
+ await ifWe(sir, 'sanitize tokens to clean flatcase', async () => {
18
+ iReckon(sir, sanitizeToken('Alice_Bob-123!')).willEqual('alicebob123');
19
+ iReckon(sir, sanitizeToken('user.name@example.com')).willEqual('usernameexamplecom');
20
+ iReckon(sir, sanitizeToken('GOOGLE-auth')).willEqual('googleauth');
21
+ });
22
+ await ifWe(sir, 'validate primary and delegate keystone names', async () => {
23
+ // Happy path primary identity
24
+ const resPrimary = validateKeystoneNameSchema('alice');
25
+ iReckon(sir, resPrimary.valid).isGonnaBeTrue();
26
+ iReckon(sir, resPrimary.type).willEqual('primary');
27
+ iReckon(sir, resPrimary.username).willEqual('alice');
28
+ // Happy path local device delegate
29
+ const resDelegateDev = validateKeystoneNameSchema('alice-sync-dev123');
30
+ iReckon(sir, resDelegateDev.valid).isGonnaBeTrue();
31
+ iReckon(sir, resDelegateDev.type).willEqual('delegate');
32
+ iReckon(sir, resDelegateDev.username).willEqual('alice');
33
+ iReckon(sir, resDelegateDev.role).willEqual('sync');
34
+ iReckon(sir, resDelegateDev.deviceIdOrProviderId).willEqual('dev123');
35
+ // Happy path SSO custodial delegate
36
+ const resDelegateSSO = validateKeystoneNameSchema('alice-sync-google');
37
+ iReckon(sir, resDelegateSSO.valid).isGonnaBeTrue();
38
+ iReckon(sir, resDelegateSSO.type).willEqual('delegate');
39
+ iReckon(sir, resDelegateSSO.username).willEqual('alice');
40
+ iReckon(sir, resDelegateSSO.role).willEqual('sync');
41
+ iReckon(sir, resDelegateSSO.deviceIdOrProviderId).willEqual('google');
42
+ // Sad paths: invalid token casing or hyphen counts
43
+ iReckon(sir, validateKeystoneNameSchema('alice-sync-dev-123').valid).isGonnaBeFalse(); // 4 parts
44
+ iReckon(sir, validateKeystoneNameSchema('Alice-sync-dev123').valid).isGonnaBeFalse(); // Uppercase
45
+ iReckon(sir, validateKeystoneNameSchema('alice_bob').valid).isGonnaBeFalse(); // Underscore not allowed in flatcase token
46
+ });
47
+ await ifWe(sir, 'validate native and foreign challenge pool IDs', async () => {
48
+ // Happy path native pools
49
+ const resManage = validateChallengePoolIdSchema('manage');
50
+ iReckon(sir, resManage.valid).isGonnaBeTrue();
51
+ iReckon(sir, resManage.isForeign).isGonnaBeFalse();
52
+ const resDefault = validateChallengePoolIdSchema('default');
53
+ iReckon(sir, resDefault.valid).isGonnaBeTrue();
54
+ iReckon(sir, resDefault.isForeign).isGonnaBeFalse();
55
+ // Happy path custodial foreign pool
56
+ const resForeign = validateChallengePoolIdSchema('custodian-manage-google');
57
+ iReckon(sir, resForeign.valid).isGonnaBeTrue();
58
+ iReckon(sir, resForeign.isForeign).isGonnaBeTrue();
59
+ iReckon(sir, resForeign.who).willEqual('custodian');
60
+ iReckon(sir, resForeign.what).willEqual('manage');
61
+ iReckon(sir, resForeign.providerId).willEqual('google');
62
+ // Sad paths: invalid who/what/providerId
63
+ iReckon(sir, validateChallengePoolIdSchema('user-manage-google').valid).isGonnaBeFalse(); // who must be 'custodian'
64
+ iReckon(sir, validateChallengePoolIdSchema('custodian-invalidverb-google').valid).isGonnaBeFalse(); // invalid verb
65
+ iReckon(sir, validateChallengePoolIdSchema('custodian-manage-Google').valid).isGonnaBeFalse(); // non-flatcase providerId
66
+ });
67
+ });
68
+ //# sourceMappingURL=keystone-schema-helpers.respec.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keystone-schema-helpers.respec.mjs","sourceRoot":"","sources":["../../src/serve-gib/keystone-schema-helpers.respec.mts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * @module node-metaspace driven by a node+fs storage substrate
3
+ *
4
+ * a metaspace is a space of spaces. it adds/removes spaces and does
5
+ * inter-spatial composition related things. it's similar to what people think
6
+ * of in terms of a node in a p2p network.
7
+ */
8
+ import { IbGibSpaceAny } from '@ibgib/core-gib/dist/witness/space/space-base-v1.mjs';
9
+ import { IbGibCacheService } from '@ibgib/core-gib/dist/common/cache/cache-types.mjs';
10
+ import { MetaspaceBase } from '@ibgib/core-gib/dist/witness/space/metaspace/metaspace-base.mjs';
11
+ import { MetaspaceFactory } from '@ibgib/core-gib/dist/witness/space/metaspace/metaspace-types.mjs';
12
+ import { SpaceId } from '@ibgib/core-gib/dist/witness/space/space-types.mjs';
13
+ /**
14
+ *
15
+ */
16
+ export declare class Metaspace_Nodeindexedspace extends MetaspaceBase {
17
+ protected cacheSvc: IbGibCacheService | undefined;
18
+ protected lc: string;
19
+ get zeroSpace(): IbGibSpaceAny;
20
+ constructor(cacheSvc: IbGibCacheService | undefined);
21
+ protected initializeMetaspaceFactory({ metaspaceFactory }: {
22
+ metaspaceFactory: MetaspaceFactory;
23
+ }): Promise<void>;
24
+ /**
25
+ * Space deletion on server-side `Metaspace_Nodeindexedspace` is intentionally disabled.
26
+ *
27
+ * ## security rationale
28
+ * Server metaspaces are exposed to network traffic. Exposing automated space deletion
29
+ * on the server without extensive security/authorization controls introduces a major
30
+ * attack vector. Server spaces must not be deleted via metaspace API until explicit
31
+ * server authorization controls are designed and implemented.
32
+ */
33
+ deleteLocalUserSpace({ spaceId, deletePhysicalStorage, }: {
34
+ spaceId: SpaceId;
35
+ deletePhysicalStorage?: boolean;
36
+ }): Promise<void>;
37
+ }
38
+ //# sourceMappingURL=metaspace-nodeindexedspace.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metaspace-nodeindexedspace.d.mts","sourceRoot":"","sources":["../../../src/serve-gib/metaspace-nodeindexedspace/metaspace-nodeindexedspace.mts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,EAAE,aAAa,EAAE,MAAM,sDAAsD,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAE,MAAM,mDAAmD,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,MAAM,iEAAiE,CAAC;AAChG,OAAO,EAAE,gBAAgB,EAAE,MAAM,kEAAkE,CAAC;AACpG,OAAO,EAAE,OAAO,EAAE,MAAM,oDAAoD,CAAC;AAO7E;;GAEG;AACH,qBAAa,0BAA2B,SAAQ,aAAa;IAiBzD,SAAS,CAAC,QAAQ,EAAE,iBAAiB,GAAG,SAAS;IAdnD,SAAS,CAAC,EAAE,EAAE,MAAM,CAA0C;IAE9D,IAAI,SAAS,IAAI,aAAa,CAO7B;IAED,YAGY,QAAQ,EAAE,iBAAiB,GAAG,SAAS,EAWlD;IAED,UAAgB,0BAA0B,CAAC,EAAE,gBAAgB,EAAE,EAAE;QAC/D,gBAAgB,EAAE,gBAAgB,CAAC;KACpC,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBhB;IAED;;;;;;;;OAQG;IACY,oBAAoB,CAAC,EAClC,OAAO,EACP,qBAA4B,GAC7B,EAAE;QACD,OAAO,EAAE,OAAO,CAAC;QACjB,qBAAqB,CAAC,EAAE,OAAO,CAAC;KACjC,GAAG,OAAO,CAAC,IAAI,CAAC,CAGhB;CAeF"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * @module node-metaspace driven by a node+fs storage substrate
3
+ *
4
+ * a metaspace is a space of spaces. it adds/removes spaces and does
5
+ * inter-spatial composition related things. it's similar to what people think
6
+ * of in terms of a node in a p2p network.
7
+ */
8
+ import { extractErrorMsg } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
9
+ import { MetaspaceBase } from '@ibgib/core-gib/dist/witness/space/metaspace/metaspace-base.mjs';
10
+ import { GLOBAL_LOG_A_LOT, GLOBAL_TIMER_NAME } from '../server-constants.mjs';
11
+ const logalot = GLOBAL_LOG_A_LOT;
12
+ /**
13
+ *
14
+ */
15
+ export class Metaspace_Nodeindexedspace extends MetaspaceBase {
16
+ cacheSvc;
17
+ // we won't get an object back, only a DTO ibGib essentially
18
+ lc = `[${Metaspace_Nodeindexedspace.name}]`;
19
+ get zeroSpace() {
20
+ const lc = `[${this.lc}][get zeroSpace]`;
21
+ if (this.metaspaceFactory.fnZeroSpaceFactory) {
22
+ return this.metaspaceFactory.fnZeroSpaceFactory();
23
+ }
24
+ else {
25
+ throw new Error(`${lc} (UNEXPECTED) this.metaspaceFactory.fnZeroSpaceFactory falsy. not initialized? (E: 9e6c6954dacd868b18c9f34a71e63523)`);
26
+ }
27
+ }
28
+ constructor(
29
+ // public modalController: ModalController,
30
+ // public alertController: AlertController,
31
+ cacheSvc) {
32
+ super(cacheSvc);
33
+ this.cacheSvc = cacheSvc;
34
+ const lc = `${this.lc}[ctor]`;
35
+ if (logalot) {
36
+ console.log(`${lc}${GLOBAL_TIMER_NAME}`);
37
+ console.timeLog(GLOBAL_TIMER_NAME);
38
+ console.log(`${lc} created. (I: 5690dc2ebf774df3a442bd463dee7455)`);
39
+ }
40
+ }
41
+ async initializeMetaspaceFactory({ metaspaceFactory }) {
42
+ const lc = `[${this.initializeMetaspaceFactory.name}]`;
43
+ try {
44
+ if (logalot) {
45
+ console.log(`${lc} starting... (I: 5a29670439ac47634dcdfe25225c8223)`);
46
+ }
47
+ if (!metaspaceFactory) {
48
+ throw new Error(`(UNEXPECTED) metaspaceFactory falsy? space-gib server initialization should have guaranteed this to be truthy (E: f305356c2978cf0ee8062fd818940826)`);
49
+ }
50
+ if (!metaspaceFactory.fnDefaultLocalSpaceFactory) {
51
+ throw new Error(`(UNEXPECTED) !metaspaceFactory.fnDefaultLocalSpaceFactory? space-gib server initialization should have guaranteed this to be truthy (E: 884281e5251bd65528eb7b3f48737826)`);
52
+ }
53
+ if (!metaspaceFactory.fnDtoToSpace) {
54
+ throw new Error(`(UNEXPECTED) !metaspaceFactory.fnDtoToSpace? space-gib server initialization should have guaranteed this to be truthy (E: 885b7828606f36f9183bb9e687e25826)`);
55
+ }
56
+ if (!metaspaceFactory.fnZeroSpaceFactory) {
57
+ throw new Error(`(UNEXPECTED) !metaspaceFactory.fnZeroSpaceFactory? space-gib server initialization should have guaranteed this to be truthy (E: 336cf6655758bad4aaeea8ce08d8c826)`);
58
+ }
59
+ await super.initializeMetaspaceFactory({ metaspaceFactory });
60
+ }
61
+ catch (error) {
62
+ console.error(`${lc} ${extractErrorMsg(error)}`);
63
+ throw error;
64
+ }
65
+ finally {
66
+ if (logalot) {
67
+ console.log(`${lc} complete.`);
68
+ }
69
+ }
70
+ }
71
+ /**
72
+ * Space deletion on server-side `Metaspace_Nodeindexedspace` is intentionally disabled.
73
+ *
74
+ * ## security rationale
75
+ * Server metaspaces are exposed to network traffic. Exposing automated space deletion
76
+ * on the server without extensive security/authorization controls introduces a major
77
+ * attack vector. Server spaces must not be deleted via metaspace API until explicit
78
+ * server authorization controls are designed and implemented.
79
+ */
80
+ async deleteLocalUserSpace({ spaceId, deletePhysicalStorage = true, }) {
81
+ const lc = `${this.lc}[${this.deleteLocalUserSpace.name}]`;
82
+ throw new Error(`${lc} Space deletion on server-side Metaspace_Nodeindexedspace is intentionally disabled to prevent internet-exposed attack vectors. (E: c9410a5170d14b4fb2478d102e3b2e23)`);
83
+ }
84
+ }
85
+ //# sourceMappingURL=metaspace-nodeindexedspace.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metaspace-nodeindexedspace.mjs","sourceRoot":"","sources":["../../../src/serve-gib/metaspace-nodeindexedspace/metaspace-nodeindexedspace.mts"],"names":[],"mappings":"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"}
@@ -0,0 +1,102 @@
1
+ /** Maximum allowed path length to prevent DoS. */
2
+ export declare const MAX_PATH_LENGTH = 2048;
3
+ /**
4
+ * Blacklisted patterns for any incoming path.
5
+ * We iterate through these for a quick security check.
6
+ */
7
+ export declare const FORBIDDEN_PATTERNS: RegExp[];
8
+ /**
9
+ * Regex for valid API paths.
10
+ *
11
+ * IMPORTANT: See IMPLEMENTATION.md for overall path schema documentation.
12
+ *
13
+ * Paths are URL encoded. The `ib` and `gib` portions of addresses are captured explicitly
14
+ * by splitting on `%5E` or `^`.
15
+ */
16
+ export declare const API_PATH_REGEXES: {
17
+ /**
18
+ * /api/health
19
+ */
20
+ HEALTH: RegExp;
21
+ /**
22
+ * /api/ibgib/graph/:domainAddr/:ibgibAddr
23
+ */
24
+ IBGIB_GRAPH: RegExp;
25
+ /**
26
+ * /api/ibgib/:domainAddr/:ibgibAddr
27
+ */
28
+ IBGIB_ADDR: RegExp;
29
+ /**
30
+ * /api/keystone
31
+ */
32
+ KEYSTONE: RegExp;
33
+ /**
34
+ * /api/keystone/:domainAddr
35
+ */
36
+ KEYSTONE_ADDR: RegExp;
37
+ /**
38
+ * /api/ibgib
39
+ */
40
+ IBGIB_BASE: RegExp;
41
+ /**
42
+ * /api/keystone/evolve/:domainAddr
43
+ */
44
+ KEYSTONE_EVOLVE: RegExp;
45
+ /**
46
+ * /api/keystone/genesis
47
+ *
48
+ * Accepts a single genesis-frame keystone ibgib and creates a new
49
+ * domain-isolated metaspace for it. No `:domainAddr` in the URL because
50
+ * the server derives the domain from the incoming keystone ibgib itself.
51
+ *
52
+ * Parallel to /api/keystone/evolve.
53
+ */
54
+ KEYSTONE_GENESIS: RegExp;
55
+ /**
56
+ * /api/keystone/lookup
57
+ */
58
+ KEYSTONE_LOOKUP: RegExp;
59
+ /**
60
+ * /api/keystone/check-email
61
+ */
62
+ KEYSTONE_CHECK_EMAIL: RegExp;
63
+ /**
64
+ * /api/debug/ws-echo
65
+ *
66
+ * Minimal WebSocket echo endpoint for validating WS plumbing (Traefik
67
+ * passthrough, server upgrade handling, client connectivity) before
68
+ * integrating real sync logic.
69
+ *
70
+ * ## intent
71
+ *
72
+ * NOT for production use. Remove or gate behind a flag once WS sync is
73
+ * confirmed working end-to-end.
74
+ */
75
+ DEBUG_WS_ECHO: RegExp;
76
+ /**
77
+ * /api/sync/ws/:domainAddr
78
+ */
79
+ SYNC_WS: RegExp;
80
+ /**
81
+ * /api/identity/sso/link
82
+ */
83
+ IDENTITY_SSO_LINK: RegExp;
84
+ /**
85
+ * /api/identity/sso/login
86
+ */
87
+ IDENTITY_SSO_LOGIN: RegExp;
88
+ /**
89
+ * /api/identity/sso/config
90
+ */
91
+ IDENTITY_SSO_CONFIG: RegExp;
92
+ /**
93
+ * /api/email/inbound
94
+ */
95
+ EMAIL_INBOUND: RegExp;
96
+ /**
97
+ * /api/email/send
98
+ */
99
+ EMAIL_SEND: RegExp;
100
+ };
101
+ export declare const VALID_STATIC_PATH_REGEX: RegExp;
102
+ //# sourceMappingURL=path-constants.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-constants.d.mts","sourceRoot":"","sources":["../../src/serve-gib/path-constants.mts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,eAAO,MAAM,eAAe,OAAO,CAAC;AAEpC;;;GAGG;AACH,eAAO,MAAM,kBAAkB,UAK9B,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB;IACzB;;OAEG;IACH,MAAM;IAEN;;OAEG;IACH,WAAW;IAEX;;OAEG;IACH,UAAU;IAEV;;OAEG;IACH,QAAQ;IAER;;OAEG;IACH,aAAa;IAEb;;OAEG;IACH,UAAU;IAEV;;OAEG;IACH,eAAe;IAEf;;;;;;;;OAQG;IACH,gBAAgB;IAEhB;;OAEG;IACH,eAAe;IAEf;;OAEG;IACH,oBAAoB;IAEpB;;;;;;;;;;;OAWG;IACH,aAAa;IACb;;OAEG;IACH,OAAO;IACP;;OAEG;IACH,iBAAiB;IACjB;;OAEG;IACH,kBAAkB;IAClB;;OAEG;IACH,mBAAmB;IACnB;;OAEG;IACH,aAAa;IACb;;OAEG;IACH,UAAU;CACb,CAAC;AAEF,eAAO,MAAM,uBAAuB,QAA4B,CAAC"}
@@ -0,0 +1,107 @@
1
+ /** Maximum allowed path length to prevent DoS. */
2
+ export const MAX_PATH_LENGTH = 2048;
3
+ /**
4
+ * Blacklisted patterns for any incoming path.
5
+ * We iterate through these for a quick security check.
6
+ */
7
+ export const FORBIDDEN_PATTERNS = [
8
+ /\.\./, // No directory traversal
9
+ /\/\//, // No redundant slashes
10
+ /\0/, // No null bytes
11
+ /(^|\/)\./, // No hidden/dot-files (e.g. .env, .git)
12
+ ];
13
+ /**
14
+ * Regex for valid API paths.
15
+ *
16
+ * IMPORTANT: See IMPLEMENTATION.md for overall path schema documentation.
17
+ *
18
+ * Paths are URL encoded. The `ib` and `gib` portions of addresses are captured explicitly
19
+ * by splitting on `%5E` or `^`.
20
+ */
21
+ export const API_PATH_REGEXES = {
22
+ /**
23
+ * /api/health
24
+ */
25
+ HEALTH: /^\/api\/health\/?$/,
26
+ /**
27
+ * /api/ibgib/graph/:domainAddr/:ibgibAddr
28
+ */
29
+ IBGIB_GRAPH: /^\/api\/ibgib\/graph\/([^\/]+?)(?:%5E|\^)([^\/]+)\/([^\/]+?)(?:%5E|\^)([^\/]+)\/?$/,
30
+ /**
31
+ * /api/ibgib/:domainAddr/:ibgibAddr
32
+ */
33
+ IBGIB_ADDR: /^\/api\/ibgib\/([^\/]+?)(?:%5E|\^)([^\/]+)\/([^\/]+?)(?:%5E|\^)([^\/]+)\/?$/,
34
+ /**
35
+ * /api/keystone
36
+ */
37
+ KEYSTONE: /^\/api\/keystone\/?$/,
38
+ /**
39
+ * /api/keystone/:domainAddr
40
+ */
41
+ KEYSTONE_ADDR: /^\/api\/keystone\/([^\/]+?)(?:%5E|\^)([^\/]+)\/?$/,
42
+ /**
43
+ * /api/ibgib
44
+ */
45
+ IBGIB_BASE: /^\/api\/ibgib\/?$/,
46
+ /**
47
+ * /api/keystone/evolve/:domainAddr
48
+ */
49
+ KEYSTONE_EVOLVE: /^\/api\/keystone\/evolve\/([^\/]+?)(?:%5E|\^)([^\/]+)\/?$/,
50
+ /**
51
+ * /api/keystone/genesis
52
+ *
53
+ * Accepts a single genesis-frame keystone ibgib and creates a new
54
+ * domain-isolated metaspace for it. No `:domainAddr` in the URL because
55
+ * the server derives the domain from the incoming keystone ibgib itself.
56
+ *
57
+ * Parallel to /api/keystone/evolve.
58
+ */
59
+ KEYSTONE_GENESIS: /^\/api\/keystone\/genesis\/?$/,
60
+ /**
61
+ * /api/keystone/lookup
62
+ */
63
+ KEYSTONE_LOOKUP: /^\/api\/keystone\/lookup\/?$/,
64
+ /**
65
+ * /api/keystone/check-email
66
+ */
67
+ KEYSTONE_CHECK_EMAIL: /^\/api\/keystone\/check-email\/?$/,
68
+ /**
69
+ * /api/debug/ws-echo
70
+ *
71
+ * Minimal WebSocket echo endpoint for validating WS plumbing (Traefik
72
+ * passthrough, server upgrade handling, client connectivity) before
73
+ * integrating real sync logic.
74
+ *
75
+ * ## intent
76
+ *
77
+ * NOT for production use. Remove or gate behind a flag once WS sync is
78
+ * confirmed working end-to-end.
79
+ */
80
+ DEBUG_WS_ECHO: /^\/api\/debug\/ws-echo\/?$/,
81
+ /**
82
+ * /api/sync/ws/:domainAddr
83
+ */
84
+ SYNC_WS: /^\/api\/sync\/ws\/([^\/]+?)(?:%5E|\^)([^\/]+)\/?$/,
85
+ /**
86
+ * /api/identity/sso/link
87
+ */
88
+ IDENTITY_SSO_LINK: /^\/api\/identity\/sso\/link\/?$/,
89
+ /**
90
+ * /api/identity/sso/login
91
+ */
92
+ IDENTITY_SSO_LOGIN: /^\/api\/identity\/sso\/login\/?$/,
93
+ /**
94
+ * /api/identity/sso/config
95
+ */
96
+ IDENTITY_SSO_CONFIG: /^\/api\/identity\/sso\/config\/?$/,
97
+ /**
98
+ * /api/email/inbound
99
+ */
100
+ EMAIL_INBOUND: /^\/api\/email\/inbound\/?$/,
101
+ /**
102
+ * /api/email/send
103
+ */
104
+ EMAIL_SEND: /^\/api\/email\/send\/?$/,
105
+ };
106
+ export const VALID_STATIC_PATH_REGEX = /^\/[a-zA-Z0-9\-_\.\/]*$/;
107
+ //# sourceMappingURL=path-constants.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-constants.mjs","sourceRoot":"","sources":["../../src/serve-gib/path-constants.mts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC;AAEpC;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAC9B,MAAM,EAAO,yBAAyB;IACtC,MAAM,EAAO,uBAAuB;IACpC,IAAI,EAAS,gBAAgB;IAC7B,UAAU,EAAG,wCAAwC;CACxD,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC5B;;OAEG;IACH,MAAM,EAAE,oBAAoB;IAE5B;;OAEG;IACH,WAAW,EAAE,oFAAoF;IAEjG;;OAEG;IACH,UAAU,EAAE,6EAA6E;IAEzF;;OAEG;IACH,QAAQ,EAAE,sBAAsB;IAEhC;;OAEG;IACH,aAAa,EAAE,mDAAmD;IAElE;;OAEG;IACH,UAAU,EAAE,mBAAmB;IAE/B;;OAEG;IACH,eAAe,EAAE,2DAA2D;IAE5E;;;;;;;;OAQG;IACH,gBAAgB,EAAE,+BAA+B;IAEjD;;OAEG;IACH,eAAe,EAAE,8BAA8B;IAE/C;;OAEG;IACH,oBAAoB,EAAE,mCAAmC;IAEzD;;;;;;;;;;;OAWG;IACH,aAAa,EAAE,4BAA4B;IAC3C;;OAEG;IACH,OAAO,EAAE,mDAAmD;IAC5D;;OAEG;IACH,iBAAiB,EAAE,iCAAiC;IACpD;;OAEG;IACH,kBAAkB,EAAE,kCAAkC;IACtD;;OAEG;IACH,mBAAmB,EAAE,mCAAmC;IACxD;;OAEG;IACH,aAAa,EAAE,4BAA4B;IAC3C;;OAEG;IACH,UAAU,EAAE,yBAAyB;CACxC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,yBAAyB,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * little helper function just to DRY out code.
3
+ */
4
+ export declare function runtimeErrorValidationStrings(lc: string, error: any): string[];
5
+ /**
6
+ * Validates that a path is safe from common attacks and under max length.
7
+ */
8
+ export declare function validateRawPath(rawPath: string): string[];
9
+ /**
10
+ * simple boolean wrapper for {@link validateRawPath}
11
+ */
12
+ export declare function isSafePath(path: string): boolean;
13
+ export declare function validateStaticPath(path: string): string[];
14
+ /**
15
+ * Validates a static file path.
16
+ */
17
+ export declare function isValidStaticPath(path: string): boolean;
18
+ /**
19
+ * Decodes and validates a single ibGib address segment from a URL path.
20
+ * Uses the library's internal validateIbGibAddr for deep checking.
21
+ */
22
+ export declare function validateAddressSegment(encodedAddr: string): string[];
23
+ //# sourceMappingURL=path-helper.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-helper.d.mts","sourceRoot":"","sources":["../../src/serve-gib/path-helper.mts"],"names":[],"mappings":"AAQA;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,MAAM,EAAE,CAI9E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAuBzD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGhD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAiBzD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAIvD;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAepE"}