@ibgib/node-gib 0.0.14 → 0.0.17

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 (218) hide show
  1. package/data/identity_index/email/hashes/32/13/49/e64f32730f01a61ada211f29eaf0a210fc2386b668ad04d7e8a9b16766.json +4 -0
  2. package/dist/email/email-helpers.d.mts.map +1 -1
  3. package/dist/email/email-helpers.mjs.map +1 -1
  4. package/dist/email/index.d.mts +3 -0
  5. package/dist/email/index.d.mts.map +1 -1
  6. package/dist/email/index.mjs +3 -0
  7. package/dist/email/index.mjs.map +1 -1
  8. package/dist/email/verify/email-verify-constants.d.mts +3 -0
  9. package/dist/email/verify/email-verify-constants.d.mts.map +1 -0
  10. package/dist/email/verify/email-verify-constants.mjs +3 -0
  11. package/dist/email/verify/email-verify-constants.mjs.map +1 -0
  12. package/dist/email/verify/email-verify-helpers.d.mts +107 -0
  13. package/dist/email/verify/email-verify-helpers.d.mts.map +1 -0
  14. package/dist/email/verify/email-verify-helpers.mjs +357 -0
  15. package/dist/email/verify/email-verify-helpers.mjs.map +1 -0
  16. package/dist/email/verify/email-verify-types.d.mts +41 -0
  17. package/dist/email/verify/email-verify-types.d.mts.map +1 -0
  18. package/dist/email/verify/email-verify-types.mjs +2 -0
  19. package/dist/email/verify/email-verify-types.mjs.map +1 -0
  20. package/dist/identity/sso/custodian-auth-helpers.d.mts +45 -0
  21. package/dist/identity/sso/custodian-auth-helpers.d.mts.map +1 -0
  22. package/dist/identity/sso/custodian-auth-helpers.mjs +108 -0
  23. package/dist/identity/sso/custodian-auth-helpers.mjs.map +1 -0
  24. package/dist/identity/sso/sso-config-helper.d.mts +7 -0
  25. package/dist/identity/sso/sso-config-helper.d.mts.map +1 -0
  26. package/dist/identity/sso/sso-config-helper.mjs +42 -0
  27. package/dist/identity/sso/sso-config-helper.mjs.map +1 -0
  28. package/dist/identity/sso/sso-custodian-service.d.mts +139 -0
  29. package/dist/identity/sso/sso-custodian-service.d.mts.map +1 -0
  30. package/dist/identity/sso/sso-custodian-service.mjs +471 -0
  31. package/dist/identity/sso/sso-custodian-service.mjs.map +1 -0
  32. package/dist/identity/sso/sso-types.d.mts +71 -0
  33. package/dist/identity/sso/sso-types.d.mts.map +1 -0
  34. package/dist/identity/sso/sso-types.mjs +7 -0
  35. package/dist/identity/sso/sso-types.mjs.map +1 -0
  36. package/dist/index.d.mts +5 -1
  37. package/dist/index.d.mts.map +1 -1
  38. package/dist/index.mjs +5 -1
  39. package/dist/index.mjs.map +1 -1
  40. package/dist/serve-gib/handlers/api/email/email-outbound.handler.d.mts.map +1 -1
  41. package/dist/serve-gib/handlers/api/email/email-outbound.handler.mjs +9 -2
  42. package/dist/serve-gib/handlers/api/email/email-outbound.handler.mjs.map +1 -1
  43. package/dist/serve-gib/handlers/api/email/email-verification-code.handler.d.mts +29 -0
  44. package/dist/serve-gib/handlers/api/email/email-verification-code.handler.d.mts.map +1 -0
  45. package/dist/serve-gib/handlers/api/email/email-verification-code.handler.mjs +149 -0
  46. package/dist/serve-gib/handlers/api/email/email-verification-code.handler.mjs.map +1 -0
  47. package/dist/serve-gib/handlers/api/email/email-verify-code-onetime.handler.d.mts +24 -0
  48. package/dist/serve-gib/handlers/api/email/email-verify-code-onetime.handler.d.mts.map +1 -0
  49. package/dist/serve-gib/handlers/api/email/email-verify-code-onetime.handler.mjs +212 -0
  50. package/dist/serve-gib/handlers/api/email/email-verify-code-onetime.handler.mjs.map +1 -0
  51. package/dist/serve-gib/handlers/api/identity/keystone-custodian-genesis.handler.d.mts +37 -0
  52. package/dist/serve-gib/handlers/api/identity/keystone-custodian-genesis.handler.d.mts.map +1 -0
  53. package/dist/serve-gib/handlers/api/identity/keystone-custodian-genesis.handler.mjs +192 -0
  54. package/dist/serve-gib/handlers/api/identity/keystone-custodian-genesis.handler.mjs.map +1 -0
  55. package/dist/serve-gib/handlers/api/identity/keystone-custodian-register-delegate.handler.d.mts +33 -0
  56. package/dist/serve-gib/handlers/api/identity/keystone-custodian-register-delegate.handler.d.mts.map +1 -0
  57. package/dist/serve-gib/handlers/api/identity/keystone-custodian-register-delegate.handler.mjs +173 -0
  58. package/dist/serve-gib/handlers/api/identity/keystone-custodian-register-delegate.handler.mjs.map +1 -0
  59. package/dist/serve-gib/handlers/api/keystone/keystone-check-email.handler.d.mts.map +1 -1
  60. package/dist/serve-gib/handlers/api/keystone/keystone-check-email.handler.mjs +2 -3
  61. package/dist/serve-gib/handlers/api/keystone/keystone-check-email.handler.mjs.map +1 -1
  62. package/dist/serve-gib/handlers/api/keystone/keystone-evolve.handler.d.mts.map +1 -1
  63. package/dist/serve-gib/handlers/api/keystone/keystone-evolve.handler.mjs +38 -3
  64. package/dist/serve-gib/handlers/api/keystone/keystone-evolve.handler.mjs.map +1 -1
  65. package/dist/serve-gib/handlers/api/keystone/keystone-genesis.handler.d.mts.map +1 -1
  66. package/dist/serve-gib/handlers/api/keystone/keystone-genesis.handler.mjs +54 -24
  67. package/dist/serve-gib/handlers/api/keystone/keystone-genesis.handler.mjs.map +1 -1
  68. package/dist/serve-gib/handlers/api/keystone/keystone-lookup.handler.d.mts.map +1 -1
  69. package/dist/serve-gib/handlers/api/keystone/keystone-lookup.handler.mjs +13 -13
  70. package/dist/serve-gib/handlers/api/keystone/keystone-lookup.handler.mjs.map +1 -1
  71. package/dist/serve-gib/handlers/api/keystone/keystone-post.handler.mjs +1 -1
  72. package/dist/serve-gib/handlers/api/keystone/keystone-post.handler.mjs.map +1 -1
  73. package/dist/serve-gib/handlers/api/keystone/sso-config.handler.mjs +3 -3
  74. package/dist/serve-gib/handlers/api/keystone/sso-config.handler.mjs.map +1 -1
  75. package/dist/serve-gib/handlers/api/keystone/sso-link.handler.d.mts.map +1 -1
  76. package/dist/serve-gib/handlers/api/keystone/sso-link.handler.mjs +28 -15
  77. package/dist/serve-gib/handlers/api/keystone/sso-link.handler.mjs.map +1 -1
  78. package/dist/serve-gib/handlers/api/keystone/sso-login.handler.d.mts +29 -15
  79. package/dist/serve-gib/handlers/api/keystone/sso-login.handler.d.mts.map +1 -1
  80. package/dist/serve-gib/handlers/api/keystone/sso-login.handler.mjs +105 -108
  81. package/dist/serve-gib/handlers/api/keystone/sso-login.handler.mjs.map +1 -1
  82. package/dist/serve-gib/identity-index/identity-index-constants.d.mts +3 -2
  83. package/dist/serve-gib/identity-index/identity-index-constants.d.mts.map +1 -1
  84. package/dist/serve-gib/identity-index/identity-index-constants.mjs +4 -2
  85. package/dist/serve-gib/identity-index/identity-index-constants.mjs.map +1 -1
  86. package/dist/serve-gib/identity-index/identity-index-helpers.d.mts.map +1 -1
  87. package/dist/serve-gib/identity-index/identity-index-helpers.mjs +28 -11
  88. package/dist/serve-gib/identity-index/identity-index-helpers.mjs.map +1 -1
  89. package/dist/serve-gib/identity-index/identity-index-service.d.mts +20 -3
  90. package/dist/serve-gib/identity-index/identity-index-service.d.mts.map +1 -1
  91. package/dist/serve-gib/identity-index/identity-index-service.mjs +134 -18
  92. package/dist/serve-gib/identity-index/identity-index-service.mjs.map +1 -1
  93. package/dist/serve-gib/identity-index/identity-index-types.d.mts +4 -2
  94. package/dist/serve-gib/identity-index/identity-index-types.d.mts.map +1 -1
  95. package/dist/serve-gib/index.d.mts +4 -0
  96. package/dist/serve-gib/index.d.mts.map +1 -1
  97. package/dist/serve-gib/index.mjs +12 -0
  98. package/dist/serve-gib/index.mjs.map +1 -1
  99. package/dist/serve-gib/path-constants.d.mts +17 -0
  100. package/dist/serve-gib/path-constants.d.mts.map +1 -1
  101. package/dist/serve-gib/path-constants.mjs +17 -0
  102. package/dist/serve-gib/path-constants.mjs.map +1 -1
  103. package/e2e/identity-custodian-lifecycle.e2e.md +93 -0
  104. package/e2e/identity-sso-lifecycle.e2e.md +132 -0
  105. package/package.json +5 -5
  106. package/src/email/email-helpers.mts +0 -1
  107. package/src/email/index.mts +3 -0
  108. package/src/email/verify/email-verify-constants.mts +3 -0
  109. package/src/email/verify/email-verify-helpers.mts +466 -0
  110. package/src/email/verify/email-verify-types.mts +47 -0
  111. package/src/identity/sso/custodian-auth-helpers.mts +146 -0
  112. package/src/identity/sso/custodian-auth-helpers.respec.mts +97 -0
  113. package/src/identity/sso/sso-config-helper.mts +52 -0
  114. package/src/identity/sso/sso-custodian-service.mts +566 -0
  115. package/src/identity/sso/sso-custodian-service.respec.mts +297 -0
  116. package/src/identity/sso/sso-types.mts +80 -0
  117. package/src/index.mts +14 -0
  118. package/src/serve-gib/handlers/api/email/email-outbound.handler.mts +8 -2
  119. package/src/serve-gib/handlers/api/email/email-verification-code.handler.mts +163 -0
  120. package/src/serve-gib/handlers/api/email/email-verify-code-onetime.handler.mts +231 -0
  121. package/src/serve-gib/handlers/api/email/email-verify.respec.mts +183 -0
  122. package/src/serve-gib/handlers/api/identity/keystone-custodian-genesis.handler.mts +233 -0
  123. package/src/serve-gib/handlers/api/identity/keystone-custodian-genesis.respec.mts +93 -0
  124. package/src/serve-gib/handlers/api/identity/keystone-custodian-register-delegate.handler.mts +210 -0
  125. package/src/serve-gib/handlers/api/identity/keystone-custodian-register-delegate.respec.mts +112 -0
  126. package/src/serve-gib/handlers/api/keystone/keystone-check-email.handler.mts +2 -4
  127. package/src/serve-gib/handlers/api/keystone/keystone-evolve.handler.mts +42 -3
  128. package/src/serve-gib/handlers/api/keystone/keystone-genesis.handler.mts +46 -23
  129. package/src/serve-gib/handlers/api/keystone/keystone-lookup.handler.mts +11 -15
  130. package/src/serve-gib/handlers/api/keystone/keystone-post.handler.mts +1 -1
  131. package/src/serve-gib/handlers/api/keystone/sso-config.handler.mts +3 -3
  132. package/src/serve-gib/handlers/api/keystone/sso-link.handler.mts +29 -17
  133. package/src/serve-gib/handlers/api/keystone/sso-login.handler.mts +132 -125
  134. package/src/serve-gib/identity-index/identity-index-constants.mts +5 -2
  135. package/src/serve-gib/identity-index/identity-index-helpers.mts +26 -12
  136. package/src/serve-gib/identity-index/identity-index-service.mts +133 -16
  137. package/src/serve-gib/identity-index/identity-index-service.respec.mts +1 -1
  138. package/src/serve-gib/identity-index/identity-index-types.mts +4 -2
  139. package/src/serve-gib/index.mts +12 -0
  140. package/src/serve-gib/path-constants.mts +20 -0
  141. package/tsconfig.json +2 -2
  142. package/tsconfig.test.json +1 -1
  143. package/dist/assumptions.respec.d.mts +0 -2
  144. package/dist/assumptions.respec.d.mts.map +0 -1
  145. package/dist/assumptions.respec.mjs +0 -41
  146. package/dist/assumptions.respec.mjs.map +0 -1
  147. package/dist/email/email-service.respec.d.mts +0 -2
  148. package/dist/email/email-service.respec.d.mts.map +0 -1
  149. package/dist/email/email-service.respec.mjs +0 -115
  150. package/dist/email/email-service.respec.mjs.map +0 -1
  151. package/dist/serve-gib/bootstrap-helper.respec.d.mts +0 -2
  152. package/dist/serve-gib/bootstrap-helper.respec.d.mts.map +0 -1
  153. package/dist/serve-gib/bootstrap-helper.respec.mjs +0 -85
  154. package/dist/serve-gib/bootstrap-helper.respec.mjs.map +0 -1
  155. package/dist/serve-gib/handlers/api/health.respec.d.mts +0 -2
  156. package/dist/serve-gib/handlers/api/health.respec.d.mts.map +0 -1
  157. package/dist/serve-gib/handlers/api/health.respec.mjs +0 -47
  158. package/dist/serve-gib/handlers/api/health.respec.mjs.map +0 -1
  159. package/dist/serve-gib/handlers/api/keystone/keystone-get.respec.d.mts +0 -2
  160. package/dist/serve-gib/handlers/api/keystone/keystone-get.respec.d.mts.map +0 -1
  161. package/dist/serve-gib/handlers/api/keystone/keystone-get.respec.mjs +0 -98
  162. package/dist/serve-gib/handlers/api/keystone/keystone-get.respec.mjs.map +0 -1
  163. package/dist/serve-gib/handlers/api/keystone/keystone-post.respec.d.mts +0 -2
  164. package/dist/serve-gib/handlers/api/keystone/keystone-post.respec.d.mts.map +0 -1
  165. package/dist/serve-gib/handlers/api/keystone/keystone-post.respec.mjs +0 -131
  166. package/dist/serve-gib/handlers/api/keystone/keystone-post.respec.mjs.map +0 -1
  167. package/dist/serve-gib/identity-index/identity-index-service.respec.d.mts +0 -2
  168. package/dist/serve-gib/identity-index/identity-index-service.respec.d.mts.map +0 -1
  169. package/dist/serve-gib/identity-index/identity-index-service.respec.mjs +0 -109
  170. package/dist/serve-gib/identity-index/identity-index-service.respec.mjs.map +0 -1
  171. package/dist/serve-gib/keystone-schema-helpers.respec.d.mts +0 -2
  172. package/dist/serve-gib/keystone-schema-helpers.respec.d.mts.map +0 -1
  173. package/dist/serve-gib/keystone-schema-helpers.respec.mjs +0 -68
  174. package/dist/serve-gib/keystone-schema-helpers.respec.mjs.map +0 -1
  175. package/dist/serve-gib/path-helper.respec.d.mts +0 -2
  176. package/dist/serve-gib/path-helper.respec.d.mts.map +0 -1
  177. package/dist/serve-gib/path-helper.respec.mjs +0 -83
  178. package/dist/serve-gib/path-helper.respec.mjs.map +0 -1
  179. package/dist/serve-gib/serve-gib.respec.d.mts +0 -2
  180. package/dist/serve-gib/serve-gib.respec.d.mts.map +0 -1
  181. package/dist/serve-gib/serve-gib.respec.mjs +0 -85
  182. package/dist/serve-gib/serve-gib.respec.mjs.map +0 -1
  183. package/dist/spec-helper.node.respec.d.mts +0 -13
  184. package/dist/spec-helper.node.respec.d.mts.map +0 -1
  185. package/dist/spec-helper.node.respec.mjs +0 -50
  186. package/dist/spec-helper.node.respec.mjs.map +0 -1
  187. package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_createAndInit.node-indexed-filesystem-space-v1.respec.d.mts +0 -2
  188. package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_createAndInit.node-indexed-filesystem-space-v1.respec.d.mts.map +0 -1
  189. package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_createAndInit.node-indexed-filesystem-space-v1.respec.mjs +0 -52
  190. package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_createAndInit.node-indexed-filesystem-space-v1.respec.mjs.map +0 -1
  191. package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_persistTransformResult.node-indexed-filesystem-space-v1.respec.d.mts +0 -2
  192. package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_persistTransformResult.node-indexed-filesystem-space-v1.respec.d.mts.map +0 -1
  193. package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_persistTransformResult.node-indexed-filesystem-space-v1.respec.mjs +0 -53
  194. package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_persistTransformResult.node-indexed-filesystem-space-v1.respec.mjs.map +0 -1
  195. package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_putGetDelete.node-indexed-filesystem-space-v1.respec.d.mts +0 -2
  196. package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_putGetDelete.node-indexed-filesystem-space-v1.respec.d.mts.map +0 -1
  197. package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_putGetDelete.node-indexed-filesystem-space-v1.respec.mjs +0 -59
  198. package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_putGetDelete.node-indexed-filesystem-space-v1.respec.mjs.map +0 -1
  199. package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_registerNewIbGib_GetLatest.node-indexed-filesystem-space-v1.respec.d.mts +0 -2
  200. package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_registerNewIbGib_GetLatest.node-indexed-filesystem-space-v1.respec.d.mts.map +0 -1
  201. package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_registerNewIbGib_GetLatest.node-indexed-filesystem-space-v1.respec.mjs +0 -55
  202. package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_registerNewIbGib_GetLatest.node-indexed-filesystem-space-v1.respec.mjs.map +0 -1
  203. package/dist/witness/space/node-filesystem-space/respec/testSpace_createAndInit.node-filesystem-space-v1.respec.d.mts +0 -2
  204. package/dist/witness/space/node-filesystem-space/respec/testSpace_createAndInit.node-filesystem-space-v1.respec.d.mts.map +0 -1
  205. package/dist/witness/space/node-filesystem-space/respec/testSpace_createAndInit.node-filesystem-space-v1.respec.mjs +0 -67
  206. package/dist/witness/space/node-filesystem-space/respec/testSpace_createAndInit.node-filesystem-space-v1.respec.mjs.map +0 -1
  207. package/dist/witness/space/node-filesystem-space/respec/testSpace_persistTransformResult.node-filesystem-space-v1.respec.d.mts +0 -2
  208. package/dist/witness/space/node-filesystem-space/respec/testSpace_persistTransformResult.node-filesystem-space-v1.respec.d.mts.map +0 -1
  209. package/dist/witness/space/node-filesystem-space/respec/testSpace_persistTransformResult.node-filesystem-space-v1.respec.mjs +0 -67
  210. package/dist/witness/space/node-filesystem-space/respec/testSpace_persistTransformResult.node-filesystem-space-v1.respec.mjs.map +0 -1
  211. package/dist/witness/space/node-filesystem-space/respec/testSpace_putGetDelete.node-filesystem-space-v1.respec.d.mts +0 -2
  212. package/dist/witness/space/node-filesystem-space/respec/testSpace_putGetDelete.node-filesystem-space-v1.respec.d.mts.map +0 -1
  213. package/dist/witness/space/node-filesystem-space/respec/testSpace_putGetDelete.node-filesystem-space-v1.respec.mjs +0 -68
  214. package/dist/witness/space/node-filesystem-space/respec/testSpace_putGetDelete.node-filesystem-space-v1.respec.mjs.map +0 -1
  215. package/dist/witness/space/node-filesystem-space/respec/testSpace_registerNewIbGib_GetLatest.node-filesystem-space-v1.respec.d.mts +0 -2
  216. package/dist/witness/space/node-filesystem-space/respec/testSpace_registerNewIbGib_GetLatest.node-filesystem-space-v1.respec.d.mts.map +0 -1
  217. package/dist/witness/space/node-filesystem-space/respec/testSpace_registerNewIbGib_GetLatest.node-filesystem-space-v1.respec.mjs +0 -69
  218. package/dist/witness/space/node-filesystem-space/respec/testSpace_registerNewIbGib_GetLatest.node-filesystem-space-v1.respec.mjs.map +0 -1
@@ -1,47 +0,0 @@
1
- import { respecfully, iReckon, ifWe } from '@ibgib/helper-gib/dist/respec-gib/respec-gib.mjs';
2
- import { ServeGib_V1 } from '../../serve-gib-v1.mjs';
3
- import { HealthHandler } from './health.handler.mjs';
4
- import { ErrorHandler } from '../error-handler.mjs';
5
- const sir = `[${import.meta.url}]`;
6
- await respecfully(sir, 'Health Handler Integration', async () => {
7
- const testDataDir = './test-data-health';
8
- const port = 3002;
9
- await ifWe(sir, 'get a 200 OK from /api/health', async () => {
10
- // 1. Setup ServeGib_V1
11
- const serveGib = new ServeGib_V1({
12
- port,
13
- dataDir: testDataDir,
14
- handlers: [new HealthHandler()],
15
- errorHandler: new ErrorHandler()
16
- });
17
- // 2. Mock GET Request
18
- const req = {
19
- url: '/api/health',
20
- method: 'GET',
21
- headers: {},
22
- on: (event, cb) => {
23
- if (event === 'end') {
24
- cb();
25
- }
26
- }
27
- };
28
- let capturedStatus = 0;
29
- let capturedBody = null;
30
- const res = {
31
- writeHead: (status) => {
32
- capturedStatus = status;
33
- },
34
- end: (body) => {
35
- capturedBody = JSON.parse(body);
36
- },
37
- statusCode: 0
38
- };
39
- // 3. Handle
40
- await serveGib.handleRequest(req, res);
41
- // 4. Verify
42
- iReckon(sir, capturedStatus).asTo('captured status code').isGonnaBe(200);
43
- iReckon(sir, capturedBody.status).asTo('captured body status').isGonnaBe('ok');
44
- iReckon(sir, capturedBody.timestamp).asTo('captured body timestamp').isGonnaBe(capturedBody.timestamp);
45
- });
46
- });
47
- //# sourceMappingURL=health.respec.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"health.respec.mjs","sourceRoot":"","sources":["../../../../src/serve-gib/handlers/api/health.respec.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAa,MAAM,kDAAkD,CAAC;AACzG,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,MAAM,GAAG,GAAG,IAAI,OAAO,IAAI,CAAC,GAAG,GAAG,CAAC;AAEnC,MAAM,WAAW,CAAC,GAAG,EAAE,4BAA4B,EAAE,KAAK,IAAI,EAAE;IAC5D,MAAM,WAAW,GAAG,oBAAoB,CAAC;IACzC,MAAM,IAAI,GAAG,IAAI,CAAC;IAElB,MAAM,IAAI,CAAC,GAAG,EAAE,+BAA+B,EAAE,KAAK,IAAI,EAAE;QACxD,uBAAuB;QACvB,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC;YAC7B,IAAI;YACJ,OAAO,EAAE,WAAW;YACpB,QAAQ,EAAE,CAAC,IAAI,aAAa,EAAE,CAAC;YAC/B,YAAY,EAAE,IAAI,YAAY,EAAE;SACnC,CAAC,CAAC;QAEH,sBAAsB;QACtB,MAAM,GAAG,GAAQ;YACb,GAAG,EAAE,aAAa;YAClB,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,EAAE;YACX,EAAE,EAAE,CAAC,KAAa,EAAE,EAAO,EAAE,EAAE;gBAC3B,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;oBAAC,EAAE,EAAE,CAAC;gBAAC,CAAC;YAClC,CAAC;SACJ,CAAC;QAEF,IAAI,cAAc,GAAW,CAAC,CAAC;QAC/B,IAAI,YAAY,GAAQ,IAAI,CAAC;QAC7B,MAAM,GAAG,GAAQ;YACb,SAAS,EAAE,CAAC,MAAc,EAAE,EAAE;gBAC1B,cAAc,GAAG,MAAM,CAAC;YAC5B,CAAC;YACD,GAAG,EAAE,CAAC,IAAY,EAAE,EAAE;gBAClB,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACpC,CAAC;YACD,UAAU,EAAE,CAAC;SAChB,CAAC;QAEF,YAAY;QACZ,MAAM,QAAQ,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAEvC,YAAY;QACZ,OAAO,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACzE,OAAO,CAAC,GAAG,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC/E,OAAO,CAAC,GAAG,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAC3G,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=keystone-get.respec.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"keystone-get.respec.d.mts","sourceRoot":"","sources":["../../../../../src/serve-gib/handlers/api/keystone/keystone-get.respec.mts"],"names":[],"mappings":""}
@@ -1,98 +0,0 @@
1
- import { existsSync, rmSync, mkdirSync } from 'node:fs';
2
- import { respecfully, iReckon, ifWe } from '@ibgib/helper-gib/dist/respec-gib/respec-gib.mjs';
3
- const sir = `[${import.meta.url}]`;
4
- import { getIbGibAddr } from '@ibgib/ts-gib/dist/helper.mjs';
5
- import { KeystoneService_V1 } from '@ibgib/core-gib/dist/keystone/keystone-service-v1.mjs';
6
- import { createStandardPoolConfig } from '@ibgib/core-gib/dist/keystone/keystone-config-builder.mjs';
7
- import { POOL_ID_DEFAULT } from '@ibgib/core-gib/dist/keystone/keystone-constants.mjs';
8
- import { GLOBAL_LOG_A_LOT } from '../../../constants.mjs';
9
- import { ServeGib_V1 } from '../../../serve-gib-v1.mjs';
10
- import { KeystonePostHandler } from './keystone-post.handler.mjs';
11
- import { KeystoneGetHandler } from './keystone-get.handler.mjs';
12
- import { ErrorHandler } from '../../error-handler.mjs';
13
- const logalot = GLOBAL_LOG_A_LOT;
14
- class MockMetaspace {
15
- async getLocalUserSpace() { return new MockSpace(); }
16
- async put() { }
17
- async registerNewIbGib() { }
18
- }
19
- class MockSpace {
20
- async witness() { return { data: { success: true } }; }
21
- }
22
- await respecfully(sir, 'Keystone GET Integration', async () => {
23
- const testDataDir = './test-data-get';
24
- const port = 3003;
25
- // Clean test data
26
- if (existsSync(testDataDir)) {
27
- try {
28
- rmSync(testDataDir, { recursive: true, force: true, maxRetries: 5, retryDelay: 100 });
29
- }
30
- catch { /* ignore */ }
31
- }
32
- mkdirSync(testDataDir, { recursive: true });
33
- await ifWe(sir, 'retrieve a keystone chain via GET /api/keystone/:addr', async () => {
34
- const keystoneService = new KeystoneService_V1();
35
- const config = createStandardPoolConfig({ id: POOL_ID_DEFAULT, salt: POOL_ID_DEFAULT });
36
- // 1. Setup ServeGib_V1 with both POST and GET handlers
37
- const serveGib = new ServeGib_V1({
38
- port,
39
- dataDir: testDataDir,
40
- handlers: [
41
- new KeystonePostHandler(),
42
- new KeystoneGetHandler(),
43
- ],
44
- errorHandler: new ErrorHandler()
45
- });
46
- // 2. Generate and POST genesis
47
- const genesis = await keystoneService.genesis({
48
- masterSecret: 'AliceSecret',
49
- configs: [config],
50
- metaspace: new MockMetaspace(),
51
- space: new MockSpace(),
52
- });
53
- const addr = getIbGibAddr({ ibGib: genesis });
54
- const postReq = {
55
- url: '/api/keystone',
56
- method: 'POST',
57
- headers: { 'ibgib-domain': addr, 'content-type': 'application/json' },
58
- on: (event, cb) => {
59
- if (event === 'data') {
60
- cb(Buffer.from(JSON.stringify({ ibGibs: [genesis] })));
61
- }
62
- if (event === 'end') {
63
- cb();
64
- }
65
- }
66
- };
67
- const postRes = {
68
- writeHead: () => { },
69
- end: () => { },
70
- };
71
- await serveGib.handleRequest(postReq, postRes);
72
- // 3. Mock GET Request
73
- const getReq = {
74
- url: `/api/keystone/${encodeURIComponent(addr)}`,
75
- method: 'GET',
76
- headers: { 'ibgib-domain': addr },
77
- on: (event, cb) => {
78
- if (event === 'end') {
79
- cb();
80
- }
81
- }
82
- };
83
- let capturedStatus = 0;
84
- let capturedBody = null;
85
- const getRes = {
86
- writeHead: (status) => { capturedStatus = status; },
87
- end: (body) => { capturedBody = JSON.parse(body); },
88
- };
89
- // 4. Handle GET
90
- await serveGib.handleRequest(getReq, getRes);
91
- // 5. Verify
92
- iReckon(sir, capturedStatus).asTo('captured status code').isGonnaBe(200);
93
- iReckon(sir, capturedBody.domainGraph).asTo('captured body domainGraph').isGonnaBeTruthy();
94
- const graphKeys = Object.keys(capturedBody.domainGraph || {});
95
- iReckon(sir, graphKeys.length > 0).asTo('domainGraph has keys').isGonnaBe(true);
96
- });
97
- });
98
- //# sourceMappingURL=keystone-get.respec.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"keystone-get.respec.mjs","sourceRoot":"","sources":["../../../../../src/serve-gib/handlers/api/keystone/keystone-get.respec.mts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=keystone-post.respec.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"keystone-post.respec.d.mts","sourceRoot":"","sources":["../../../../../src/serve-gib/handlers/api/keystone/keystone-post.respec.mts"],"names":[],"mappings":""}
@@ -1,131 +0,0 @@
1
- import { join } from 'node:path';
2
- import { existsSync, rmSync, mkdirSync, readdirSync } from 'node:fs';
3
- import { respecfully, iReckon, ifWe } from '@ibgib/helper-gib/dist/respec-gib/respec-gib.mjs';
4
- const sir = `[${import.meta.url}]`;
5
- import { extractErrorMsg } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
6
- import { getIbGibAddr } from '@ibgib/ts-gib/dist/helper.mjs';
7
- import { KeystoneService_V1 } from '@ibgib/core-gib/dist/keystone/keystone-service-v1.mjs';
8
- import { createStandardPoolConfig } from '@ibgib/core-gib/dist/keystone/keystone-config-builder.mjs';
9
- import { POOL_ID_DEFAULT } from '@ibgib/core-gib/dist/keystone/keystone-constants.mjs';
10
- import { GLOBAL_LOG_A_LOT } from '../../../constants.mjs';
11
- import { ServeGib_V1 } from '../../../serve-gib-v1.mjs';
12
- import { KeystonePostHandler } from './keystone-post.handler.mjs';
13
- import { ErrorHandler } from '../../error-handler.mjs';
14
- import { getDomainRootPath } from '../../../bootstrap-helper.mjs';
15
- const logalot = GLOBAL_LOG_A_LOT;
16
- if (logalot) {
17
- console.log(`[test] keystone-post.respec.mts top-level entry`);
18
- }
19
- class MockMetaspace {
20
- async getLocalUserSpace() { return new MockSpace(); }
21
- async put() { }
22
- async registerNewIbGib() { }
23
- }
24
- class MockSpace {
25
- async witness() { return { data: { success: true } }; }
26
- }
27
- await respecfully(sir, 'Keystone POST Integration', async () => {
28
- const testDataDir = './test-data-post';
29
- const port = 3001;
30
- // Clean test data
31
- if (existsSync(testDataDir)) {
32
- try {
33
- rmSync(testDataDir, { recursive: true, force: true, maxRetries: 5, retryDelay: 100 });
34
- }
35
- catch { /* ignore */ }
36
- }
37
- mkdirSync(testDataDir, { recursive: true });
38
- await ifWe(sir, 'bootstrap a new domain via POST /api/keystone', async () => {
39
- const keystoneService = new KeystoneService_V1();
40
- const config = createStandardPoolConfig({ id: POOL_ID_DEFAULT, salt: POOL_ID_DEFAULT });
41
- // 1. Generate real genesis
42
- const genesis = await keystoneService.genesis({
43
- masterSecret: 'AliceSecret',
44
- configs: [config],
45
- metaspace: new MockMetaspace(),
46
- space: new MockSpace(),
47
- });
48
- const addr = getIbGibAddr({ ibGib: genesis });
49
- if (logalot) {
50
- console.log(`[test] Generated genesis: ${addr}`);
51
- }
52
- // 2. Setup ServeGib_V1
53
- const serveGib = new ServeGib_V1({
54
- port,
55
- dataDir: testDataDir,
56
- handlers: [new KeystonePostHandler()],
57
- errorHandler: new ErrorHandler()
58
- });
59
- if (logalot) {
60
- console.log(`[test] ServeGib_V1 setup. Posting to /api/keystone...`);
61
- }
62
- // 3. Mock POST Request
63
- const req = {
64
- url: '/api/keystone',
65
- method: 'POST',
66
- headers: {
67
- 'ibgib-domain': addr,
68
- 'content-type': 'application/json'
69
- },
70
- on: (event, cb) => {
71
- if (event === 'data') {
72
- if (logalot) {
73
- console.log(`[test] sending data chunk...`);
74
- }
75
- cb(Buffer.from(JSON.stringify({ ibGibs: [genesis] })));
76
- }
77
- if (event === 'end') {
78
- if (logalot) {
79
- console.log(`[test] end of request.`);
80
- }
81
- cb();
82
- }
83
- }
84
- };
85
- let capturedStatus = 0;
86
- let capturedBody = null;
87
- const res = {
88
- writeHead: (status) => {
89
- if (logalot) {
90
- console.log(`[test] writeHead: ${status}`);
91
- }
92
- capturedStatus = status;
93
- },
94
- end: (body) => {
95
- if (logalot) {
96
- console.log(`[test] res.end called with body length: ${body?.length}`);
97
- }
98
- capturedBody = JSON.parse(body);
99
- },
100
- statusCode: 0
101
- };
102
- // 4. Handle
103
- if (logalot) {
104
- console.log(`[test] Calling handleRequest...`);
105
- }
106
- await serveGib.handleRequest(req, res);
107
- if (logalot) {
108
- console.log(`[test] handleRequest completed.`);
109
- }
110
- // 5. Verify
111
- iReckon(sir, capturedStatus).asTo('captured status code').isGonnaBe(201);
112
- iReckon(sir, capturedBody.success).asTo(`Handler failed: ${capturedBody.message || 'no message'}`).isGonnaBe(true);
113
- const domainPath = getDomainRootPath(genesis.gib, testDataDir);
114
- iReckon(sir, existsSync(domainPath)).asTo('domain path exists').isGonnaBe(true);
115
- // Verify the ibgib actually exists in the new domain's storage
116
- // With indexed storage, it's in a bucketed subpath: ibgib/default/ibgibs/B1/B2/
117
- const bucket1 = genesis.gib.substring(0, 3).toUpperCase();
118
- const bucket2 = genesis.gib.substring(3, 6).toUpperCase();
119
- const bucketPath = join(domainPath, 'ibgib', 'default', 'ibgibs', bucket1, bucket2);
120
- iReckon(sir, existsSync(bucketPath)).asTo(`Bucket path does not exist: ${bucketPath}`).isGonnaBe(true);
121
- // We don't know the random filename, but we know it's a .json file in that bucket
122
- try {
123
- const files = readdirSync(bucketPath).filter(f => f.endsWith('.json'));
124
- iReckon(sir, files.length > 0).asTo(`No .json files found in bucket: ${bucketPath}`).isGonnaBe(true);
125
- }
126
- catch (error) {
127
- iReckon(sir, true).asTo(`error trying to readdir ${bucketPath}: ${extractErrorMsg(error)}`).isGonnaBe(true);
128
- }
129
- });
130
- });
131
- //# sourceMappingURL=keystone-post.respec.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"keystone-post.respec.mjs","sourceRoot":"","sources":["../../../../../src/serve-gib/handlers/api/keystone/keystone-post.respec.mts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=identity-index-service.respec.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"identity-index-service.respec.d.mts","sourceRoot":"","sources":["../../../src/serve-gib/identity-index/identity-index-service.respec.mts"],"names":[],"mappings":""}
@@ -1,109 +0,0 @@
1
- import * as fs from 'fs/promises';
2
- import * as path from 'path';
3
- import { respecfully, iReckon, ifWe } from '@ibgib/helper-gib/dist/respec-gib/respec-gib.mjs';
4
- import { IdentityIndexService } from './identity-index-service.mjs';
5
- import { normalizeEmail, getIdentityEmailHash, getShardedIndexPath, validateEmail } from './identity-index-helpers.mjs';
6
- const sir = `[${import.meta.url}]`;
7
- const TEST_SALT = 'test_salt_12345';
8
- const TEST_BASE_DIR = path.join(process.cwd(), 'test-data-identity-index');
9
- await respecfully(sir, 'IdentityIndexService & Helpers', async () => {
10
- // Cleanup test data directory before & after tests
11
- const cleanupDir = async () => {
12
- try {
13
- await fs.rm(TEST_BASE_DIR, { recursive: true, force: true });
14
- }
15
- catch { /* ignore */ }
16
- };
17
- await cleanupDir();
18
- await ifWe(sir, 'normalize email strings correctly', async () => {
19
- iReckon(sir, normalizeEmail(' Alice@Example.com ')).willEqual('alice@example.com');
20
- iReckon(sir, normalizeEmail('BOB@DOMAIN.ORG')).willEqual('bob@domain.org');
21
- iReckon(sir, normalizeEmail('')).willEqual('');
22
- });
23
- await ifWe(sir, 'validate email addresses accurately using validateEmail', async () => {
24
- // Valid emails
25
- iReckon(sir, validateEmail({ email: 'user@example.com' }).length).willEqual(0);
26
- iReckon(sir, validateEmail({ email: 'user+tag@sub.domain.co.uk' }).length).willEqual(0);
27
- iReckon(sir, validateEmail({ email: ' alice@company.org ' }).length).willEqual(0);
28
- // Invalid emails
29
- iReckon(sir, validateEmail({ email: '' }).length > 0).isGonnaBeTrue();
30
- iReckon(sir, validateEmail({ email: ' ' }).length > 0).isGonnaBeTrue();
31
- iReckon(sir, validateEmail({ email: null }).length > 0).isGonnaBeTrue();
32
- iReckon(sir, validateEmail({ email: undefined }).length > 0).isGonnaBeTrue();
33
- iReckon(sir, validateEmail({ email: 'no-at-sign.com' }).length > 0).isGonnaBeTrue();
34
- iReckon(sir, validateEmail({ email: 'user@no-dot' }).length > 0).isGonnaBeTrue();
35
- iReckon(sir, validateEmail({ email: 'user @space.com' }).length > 0).isGonnaBeTrue();
36
- iReckon(sir, validateEmail({ email: '@domain.com' }).length > 0).isGonnaBeTrue();
37
- });
38
- await ifWe(sir, 'calculate consistent SHA256 email hashes with salt', async () => {
39
- const hash1 = await getIdentityEmailHash({ email: 'Alice@Example.com', salt: TEST_SALT });
40
- const hash2 = await getIdentityEmailHash({ email: 'alice@example.com', salt: TEST_SALT });
41
- iReckon(sir, hash1).willEqual(hash2);
42
- iReckon(sir, hash1.length > 30).isGonnaBeTrue();
43
- const diffSaltHash = await getIdentityEmailHash({ email: 'alice@example.com', salt: 'different_salt' });
44
- iReckon(sir, hash1).not.willEqual(diffSaltHash);
45
- });
46
- await ifWe(sir, 'calculate sharded folder paths and truncated filenames', async () => {
47
- const fullHash = 'abcdef1234567890abcdef1234567890';
48
- const { folderPath, filePath, filename } = getShardedIndexPath({ baseDir: TEST_BASE_DIR, emailHash: fullHash });
49
- const expectedSubfolder = path.join(TEST_BASE_DIR, 'email_hashes', 'ab', 'cd', 'ef');
50
- iReckon(sir, folderPath).willEqual(expectedSubfolder);
51
- // Filename strips the leading 6 chars ('abcdef')
52
- iReckon(sir, filename).willEqual('1234567890abcdef1234567890.json');
53
- iReckon(sir, filePath).willEqual(path.join(expectedSubfolder, '1234567890abcdef1234567890.json'));
54
- });
55
- await ifWe(sir, 'register an email index and read it back', async () => {
56
- const service = new IdentityIndexService({ baseDir: TEST_BASE_DIR, salt: TEST_SALT });
57
- const email = 'user1@example.com';
58
- const tjpAddr = 'keystone^AF5BB54AE1254FB499C434A2915C6BA08BC1D53936E57D19D415EA17FA3CE475';
59
- const result = await service.registerEmailIndex({ email, tjpAddr });
60
- iReckon(sir, result.emailHash).isGonnaBeTruthy();
61
- iReckon(sir, result.record.tjpAddr).willEqual(tjpAddr);
62
- iReckon(sir, result.record.createdAt > 0).isGonnaBeTrue();
63
- const retrieved = await service.getEmailIndex({ email });
64
- iReckon(sir, retrieved).isGonnaBeTruthy();
65
- iReckon(sir, retrieved.tjpAddr).willEqual(tjpAddr);
66
- });
67
- await ifWe(sir, 'atomically reject duplicate email registration with duplicate_identity_409', async () => {
68
- const service = new IdentityIndexService({ baseDir: TEST_BASE_DIR, salt: TEST_SALT });
69
- const email = 'duplicate@example.com';
70
- const tjpAddr1 = 'keystone^1111111111111111111111111111111111111111111111111111111111111111';
71
- const tjpAddr2 = 'keystone^2222222222222222222222222222222222222222222222222222222222222222';
72
- await service.registerEmailIndex({ email, tjpAddr: tjpAddr1 });
73
- let duplicateCaught = false;
74
- try {
75
- await service.registerEmailIndex({ email, tjpAddr: tjpAddr2 });
76
- }
77
- catch (error) {
78
- if (error.message.includes('duplicate_identity_409')) {
79
- duplicateCaught = true;
80
- }
81
- }
82
- iReckon(sir, duplicateCaught).asTo('duplicate registration rejected via flag wx EEXIST').isGonnaBeTrue();
83
- });
84
- await ifWe(sir, 'support multiple email hashes pointing to the same identity tjpAddr', async () => {
85
- const service = new IdentityIndexService({ baseDir: TEST_BASE_DIR, salt: TEST_SALT });
86
- const primaryTjp = 'keystone^3333333333333333333333333333333333333333333333333333333333333333';
87
- const email1 = 'personal@example.com';
88
- const email2 = 'work@company.com';
89
- await service.registerEmailIndex({ email: email1, tjpAddr: primaryTjp });
90
- await service.registerEmailIndex({ email: email2, tjpAddr: primaryTjp });
91
- const record1 = await service.getEmailIndex({ email: email1 });
92
- const record2 = await service.getEmailIndex({ email: email2 });
93
- iReckon(sir, record1.tjpAddr).willEqual(primaryTjp);
94
- iReckon(sir, record2.tjpAddr).willEqual(primaryTjp);
95
- });
96
- await ifWe(sir, 'unregister an email index cleanly', async () => {
97
- const service = new IdentityIndexService({ baseDir: TEST_BASE_DIR, salt: TEST_SALT });
98
- const email = 'delete-me@example.com';
99
- const tjpAddr = 'keystone^4444444444444444444444444444444444444444444444444444444444444444';
100
- await service.registerEmailIndex({ email, tjpAddr });
101
- iReckon(sir, await service.getEmailIndex({ email })).isGonnaBeTruthy();
102
- const unindexed = await service.unregisterEmailIndex({ email });
103
- iReckon(sir, unindexed).isGonnaBeTrue();
104
- const retrievedAfter = await service.getEmailIndex({ email });
105
- iReckon(sir, retrievedAfter).isGonnaBeUndefined();
106
- });
107
- await cleanupDir();
108
- });
109
- //# sourceMappingURL=identity-index-service.respec.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"identity-index-service.respec.mjs","sourceRoot":"","sources":["../../../src/serve-gib/identity-index/identity-index-service.respec.mts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=keystone-schema-helpers.respec.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"keystone-schema-helpers.respec.d.mts","sourceRoot":"","sources":["../../src/serve-gib/keystone-schema-helpers.respec.mts"],"names":[],"mappings":""}
@@ -1,68 +0,0 @@
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
@@ -1 +0,0 @@
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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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=path-helper.respec.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"path-helper.respec.d.mts","sourceRoot":"","sources":["../../src/serve-gib/path-helper.respec.mts"],"names":[],"mappings":""}