@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.
- package/dist/assumptions.respec.mjs.map +1 -1
- package/dist/email/aws/aws-sigv4-helper.d.mts +26 -0
- package/dist/email/aws/aws-sigv4-helper.d.mts.map +1 -0
- package/dist/email/aws/aws-sigv4-helper.mjs +94 -0
- package/dist/email/aws/aws-sigv4-helper.mjs.map +1 -0
- package/dist/email/aws/email-receiver-aws.d.mts +13 -0
- package/dist/email/aws/email-receiver-aws.d.mts.map +1 -0
- package/dist/email/aws/email-receiver-aws.mjs +97 -0
- package/dist/email/aws/email-receiver-aws.mjs.map +1 -0
- package/dist/email/aws/email-sender-aws.d.mts +23 -0
- package/dist/email/aws/email-sender-aws.d.mts.map +1 -0
- package/dist/email/aws/email-sender-aws.mjs +106 -0
- package/dist/email/aws/email-sender-aws.mjs.map +1 -0
- package/dist/email/aws/index.d.mts +7 -0
- package/dist/email/aws/index.d.mts.map +1 -0
- package/dist/email/aws/index.mjs +7 -0
- package/dist/email/aws/index.mjs.map +1 -0
- package/dist/email/email-constants.d.mts +15 -0
- package/dist/email/email-constants.d.mts.map +1 -0
- package/dist/email/email-constants.mjs +15 -0
- package/dist/email/email-constants.mjs.map +1 -0
- package/dist/email/email-helpers.d.mts +35 -0
- package/dist/email/email-helpers.d.mts.map +1 -0
- package/dist/email/email-helpers.mjs +144 -0
- package/dist/email/email-helpers.mjs.map +1 -0
- package/dist/email/email-receiver.d.mts +12 -0
- package/dist/email/email-receiver.d.mts.map +1 -0
- package/dist/email/email-receiver.mjs +23 -0
- package/dist/email/email-receiver.mjs.map +1 -0
- package/dist/email/email-sender.d.mts +13 -0
- package/dist/email/email-sender.d.mts.map +1 -0
- package/dist/email/email-sender.mjs +35 -0
- package/dist/email/email-sender.mjs.map +1 -0
- package/dist/email/email-service.respec.d.mts +2 -0
- package/dist/email/email-service.respec.d.mts.map +1 -0
- package/dist/email/email-service.respec.mjs +115 -0
- package/dist/email/email-service.respec.mjs.map +1 -0
- package/dist/email/email-types.d.mts +53 -0
- package/dist/email/email-types.d.mts.map +1 -0
- package/dist/email/email-types.mjs +5 -0
- package/dist/email/email-types.mjs.map +1 -0
- package/dist/email/index.d.mts +11 -0
- package/dist/email/index.d.mts.map +1 -0
- package/dist/email/index.mjs +11 -0
- package/dist/email/index.mjs.map +1 -0
- package/dist/email/mock/email-sender-mock.d.mts +20 -0
- package/dist/email/mock/email-sender-mock.d.mts.map +1 -0
- package/dist/email/mock/email-sender-mock.mjs +47 -0
- package/dist/email/mock/email-sender-mock.mjs.map +1 -0
- package/dist/email/mock/index.d.mts +5 -0
- package/dist/email/mock/index.d.mts.map +1 -0
- package/dist/email/mock/index.mjs +5 -0
- package/dist/email/mock/index.mjs.map +1 -0
- package/dist/index.d.mts +13 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +14 -0
- package/dist/index.mjs.map +1 -0
- package/dist/respec-gib.node.mjs +3 -4
- package/dist/respec-gib.node.mjs.map +1 -1
- package/dist/serve-gib/bootstrap-helper.d.mts +27 -0
- package/dist/serve-gib/bootstrap-helper.d.mts.map +1 -0
- package/dist/serve-gib/bootstrap-helper.mjs +116 -0
- package/dist/serve-gib/bootstrap-helper.mjs.map +1 -0
- package/dist/serve-gib/bootstrap-helper.respec.d.mts +2 -0
- package/dist/serve-gib/bootstrap-helper.respec.d.mts.map +1 -0
- package/dist/serve-gib/bootstrap-helper.respec.mjs +85 -0
- package/dist/serve-gib/bootstrap-helper.respec.mjs.map +1 -0
- package/dist/serve-gib/constants.d.mts +2 -0
- package/dist/serve-gib/constants.d.mts.map +1 -0
- package/dist/serve-gib/constants.mjs +2 -0
- package/dist/serve-gib/constants.mjs.map +1 -0
- package/dist/serve-gib/handlers/api/debug/ws-echo.handler.d.mts +39 -0
- package/dist/serve-gib/handlers/api/debug/ws-echo.handler.d.mts.map +1 -0
- package/dist/serve-gib/handlers/api/debug/ws-echo.handler.mjs +99 -0
- package/dist/serve-gib/handlers/api/debug/ws-echo.handler.mjs.map +1 -0
- package/dist/serve-gib/handlers/api/email/email-inbound.handler.d.mts +25 -0
- package/dist/serve-gib/handlers/api/email/email-inbound.handler.d.mts.map +1 -0
- package/dist/serve-gib/handlers/api/email/email-inbound.handler.mjs +54 -0
- package/dist/serve-gib/handlers/api/email/email-inbound.handler.mjs.map +1 -0
- package/dist/serve-gib/handlers/api/email/email-outbound.handler.d.mts +24 -0
- package/dist/serve-gib/handlers/api/email/email-outbound.handler.d.mts.map +1 -0
- package/dist/serve-gib/handlers/api/email/email-outbound.handler.mjs +72 -0
- package/dist/serve-gib/handlers/api/email/email-outbound.handler.mjs.map +1 -0
- package/dist/serve-gib/handlers/api/health.handler.d.mts +14 -0
- package/dist/serve-gib/handlers/api/health.handler.d.mts.map +1 -0
- package/dist/serve-gib/handlers/api/health.handler.mjs +21 -0
- package/dist/serve-gib/handlers/api/health.handler.mjs.map +1 -0
- package/dist/serve-gib/handlers/api/health.respec.d.mts +2 -0
- package/dist/serve-gib/handlers/api/health.respec.d.mts.map +1 -0
- package/dist/serve-gib/handlers/api/health.respec.mjs +47 -0
- package/dist/serve-gib/handlers/api/health.respec.mjs.map +1 -0
- package/dist/serve-gib/handlers/api/ibgib/ibgib-handler-types.d.mts +41 -0
- package/dist/serve-gib/handlers/api/ibgib/ibgib-handler-types.d.mts.map +1 -0
- package/dist/serve-gib/handlers/api/ibgib/ibgib-handler-types.mjs +34 -0
- package/dist/serve-gib/handlers/api/ibgib/ibgib-handler-types.mjs.map +1 -0
- package/dist/serve-gib/handlers/api/ibgib/ibgib.handler.d.mts +26 -0
- package/dist/serve-gib/handlers/api/ibgib/ibgib.handler.d.mts.map +1 -0
- package/dist/serve-gib/handlers/api/ibgib/ibgib.handler.mjs +179 -0
- package/dist/serve-gib/handlers/api/ibgib/ibgib.handler.mjs.map +1 -0
- package/dist/serve-gib/handlers/api/keystone/keystone-check-email.handler.d.mts +23 -0
- package/dist/serve-gib/handlers/api/keystone/keystone-check-email.handler.d.mts.map +1 -0
- package/dist/serve-gib/handlers/api/keystone/keystone-check-email.handler.mjs +52 -0
- package/dist/serve-gib/handlers/api/keystone/keystone-check-email.handler.mjs.map +1 -0
- package/dist/serve-gib/handlers/api/keystone/keystone-evolve.handler.d.mts +44 -0
- package/dist/serve-gib/handlers/api/keystone/keystone-evolve.handler.d.mts.map +1 -0
- package/dist/serve-gib/handlers/api/keystone/keystone-evolve.handler.mjs +127 -0
- package/dist/serve-gib/handlers/api/keystone/keystone-evolve.handler.mjs.map +1 -0
- package/dist/serve-gib/handlers/api/keystone/keystone-genesis.handler.d.mts +45 -0
- package/dist/serve-gib/handlers/api/keystone/keystone-genesis.handler.d.mts.map +1 -0
- package/dist/serve-gib/handlers/api/keystone/keystone-genesis.handler.mjs +159 -0
- package/dist/serve-gib/handlers/api/keystone/keystone-genesis.handler.mjs.map +1 -0
- package/dist/serve-gib/handlers/api/keystone/keystone-get.handler.d.mts +25 -0
- package/dist/serve-gib/handlers/api/keystone/keystone-get.handler.d.mts.map +1 -0
- package/dist/serve-gib/handlers/api/keystone/keystone-get.handler.mjs +183 -0
- package/dist/serve-gib/handlers/api/keystone/keystone-get.handler.mjs.map +1 -0
- package/dist/serve-gib/handlers/api/keystone/keystone-get.respec.d.mts +2 -0
- package/dist/serve-gib/handlers/api/keystone/keystone-get.respec.d.mts.map +1 -0
- package/dist/serve-gib/handlers/api/keystone/keystone-get.respec.mjs +98 -0
- package/dist/serve-gib/handlers/api/keystone/keystone-get.respec.mjs.map +1 -0
- package/dist/serve-gib/handlers/api/keystone/keystone-handler-types.d.mts +22 -0
- package/dist/serve-gib/handlers/api/keystone/keystone-handler-types.d.mts.map +1 -0
- package/dist/serve-gib/handlers/api/keystone/keystone-handler-types.mjs +19 -0
- package/dist/serve-gib/handlers/api/keystone/keystone-handler-types.mjs.map +1 -0
- package/dist/serve-gib/handlers/api/keystone/keystone-lookup.handler.d.mts +19 -0
- package/dist/serve-gib/handlers/api/keystone/keystone-lookup.handler.d.mts.map +1 -0
- package/dist/serve-gib/handlers/api/keystone/keystone-lookup.handler.mjs +82 -0
- package/dist/serve-gib/handlers/api/keystone/keystone-lookup.handler.mjs.map +1 -0
- package/dist/serve-gib/handlers/api/keystone/keystone-post.handler.d.mts +20 -0
- package/dist/serve-gib/handlers/api/keystone/keystone-post.handler.d.mts.map +1 -0
- package/dist/serve-gib/handlers/api/keystone/keystone-post.handler.mjs +77 -0
- package/dist/serve-gib/handlers/api/keystone/keystone-post.handler.mjs.map +1 -0
- package/dist/serve-gib/handlers/api/keystone/keystone-post.respec.d.mts +2 -0
- package/dist/serve-gib/handlers/api/keystone/keystone-post.respec.d.mts.map +1 -0
- package/dist/serve-gib/handlers/api/keystone/keystone-post.respec.mjs +131 -0
- package/dist/serve-gib/handlers/api/keystone/keystone-post.respec.mjs.map +1 -0
- package/dist/serve-gib/handlers/api/keystone/sso-config.handler.d.mts +23 -0
- package/dist/serve-gib/handlers/api/keystone/sso-config.handler.d.mts.map +1 -0
- package/dist/serve-gib/handlers/api/keystone/sso-config.handler.mjs +62 -0
- package/dist/serve-gib/handlers/api/keystone/sso-config.handler.mjs.map +1 -0
- package/dist/serve-gib/handlers/api/keystone/sso-link.handler.d.mts +23 -0
- package/dist/serve-gib/handlers/api/keystone/sso-link.handler.d.mts.map +1 -0
- package/dist/serve-gib/handlers/api/keystone/sso-link.handler.mjs +118 -0
- package/dist/serve-gib/handlers/api/keystone/sso-link.handler.mjs.map +1 -0
- package/dist/serve-gib/handlers/api/keystone/sso-login.handler.d.mts +24 -0
- package/dist/serve-gib/handlers/api/keystone/sso-login.handler.d.mts.map +1 -0
- package/dist/serve-gib/handlers/api/keystone/sso-login.handler.mjs +160 -0
- package/dist/serve-gib/handlers/api/keystone/sso-login.handler.mjs.map +1 -0
- package/dist/serve-gib/handlers/error-handler.d.mts +14 -0
- package/dist/serve-gib/handlers/error-handler.d.mts.map +1 -0
- package/dist/serve-gib/handlers/error-handler.mjs +35 -0
- package/dist/serve-gib/handlers/error-handler.mjs.map +1 -0
- package/dist/serve-gib/handlers/handler-base.d.mts +129 -0
- package/dist/serve-gib/handlers/handler-base.d.mts.map +1 -0
- package/dist/serve-gib/handlers/handler-base.mjs +402 -0
- package/dist/serve-gib/handlers/handler-base.mjs.map +1 -0
- package/dist/serve-gib/handlers/static-handler.d.mts +17 -0
- package/dist/serve-gib/handlers/static-handler.d.mts.map +1 -0
- package/dist/serve-gib/handlers/static-handler.mjs +85 -0
- package/dist/serve-gib/handlers/static-handler.mjs.map +1 -0
- package/dist/serve-gib/handlers/ws/sync-upgrade-handler-base.d.mts +35 -0
- package/dist/serve-gib/handlers/ws/sync-upgrade-handler-base.d.mts.map +1 -0
- package/dist/serve-gib/handlers/ws/sync-upgrade-handler-base.mjs +219 -0
- package/dist/serve-gib/handlers/ws/sync-upgrade-handler-base.mjs.map +1 -0
- package/dist/serve-gib/handlers/ws/sync-upgrade.handler.d.mts +21 -0
- package/dist/serve-gib/handlers/ws/sync-upgrade.handler.d.mts.map +1 -0
- package/dist/serve-gib/handlers/ws/sync-upgrade.handler.mjs +21 -0
- package/dist/serve-gib/handlers/ws/sync-upgrade.handler.mjs.map +1 -0
- package/dist/serve-gib/handlers/ws/ws-helper.d.mts +29 -0
- package/dist/serve-gib/handlers/ws/ws-helper.d.mts.map +1 -0
- package/dist/serve-gib/handlers/ws/ws-helper.mjs +195 -0
- package/dist/serve-gib/handlers/ws/ws-helper.mjs.map +1 -0
- package/dist/serve-gib/handlers/ws/ws-types.d.mts +32 -0
- package/dist/serve-gib/handlers/ws/ws-types.d.mts.map +1 -0
- package/dist/serve-gib/handlers/ws/ws-types.mjs +2 -0
- package/dist/serve-gib/handlers/ws/ws-types.mjs.map +1 -0
- package/dist/serve-gib/identity-index/identity-index-constants.d.mts +4 -0
- package/dist/serve-gib/identity-index/identity-index-constants.d.mts.map +1 -0
- package/dist/serve-gib/identity-index/identity-index-constants.mjs +4 -0
- package/dist/serve-gib/identity-index/identity-index-constants.mjs.map +1 -0
- package/dist/serve-gib/identity-index/identity-index-helpers.d.mts +35 -0
- package/dist/serve-gib/identity-index/identity-index-helpers.d.mts.map +1 -0
- package/dist/serve-gib/identity-index/identity-index-helpers.mjs +69 -0
- package/dist/serve-gib/identity-index/identity-index-helpers.mjs.map +1 -0
- package/dist/serve-gib/identity-index/identity-index-service.d.mts +41 -0
- package/dist/serve-gib/identity-index/identity-index-service.d.mts.map +1 -0
- package/dist/serve-gib/identity-index/identity-index-service.mjs +86 -0
- package/dist/serve-gib/identity-index/identity-index-service.mjs.map +1 -0
- package/dist/serve-gib/identity-index/identity-index-service.respec.d.mts +2 -0
- package/dist/serve-gib/identity-index/identity-index-service.respec.d.mts.map +1 -0
- package/dist/serve-gib/identity-index/identity-index-service.respec.mjs +109 -0
- package/dist/serve-gib/identity-index/identity-index-service.respec.mjs.map +1 -0
- package/dist/serve-gib/identity-index/identity-index-types.d.mts +31 -0
- package/dist/serve-gib/identity-index/identity-index-types.d.mts.map +1 -0
- package/dist/serve-gib/identity-index/identity-index-types.mjs +2 -0
- package/dist/serve-gib/identity-index/identity-index-types.mjs.map +1 -0
- package/dist/serve-gib/index.d.mts +50 -0
- package/dist/serve-gib/index.d.mts.map +1 -0
- package/dist/serve-gib/index.mjs +80 -0
- package/dist/serve-gib/index.mjs.map +1 -0
- package/dist/serve-gib/keystone-schema-helpers.d.mts +50 -0
- package/dist/serve-gib/keystone-schema-helpers.d.mts.map +1 -0
- package/dist/serve-gib/keystone-schema-helpers.mjs +99 -0
- package/dist/serve-gib/keystone-schema-helpers.mjs.map +1 -0
- package/dist/serve-gib/keystone-schema-helpers.respec.d.mts +2 -0
- package/dist/serve-gib/keystone-schema-helpers.respec.d.mts.map +1 -0
- package/dist/serve-gib/keystone-schema-helpers.respec.mjs +68 -0
- package/dist/serve-gib/keystone-schema-helpers.respec.mjs.map +1 -0
- package/dist/serve-gib/metaspace-nodeindexedspace/metaspace-nodeindexedspace.d.mts +38 -0
- package/dist/serve-gib/metaspace-nodeindexedspace/metaspace-nodeindexedspace.d.mts.map +1 -0
- package/dist/serve-gib/metaspace-nodeindexedspace/metaspace-nodeindexedspace.mjs +85 -0
- package/dist/serve-gib/metaspace-nodeindexedspace/metaspace-nodeindexedspace.mjs.map +1 -0
- package/dist/serve-gib/path-constants.d.mts +102 -0
- package/dist/serve-gib/path-constants.d.mts.map +1 -0
- package/dist/serve-gib/path-constants.mjs +107 -0
- package/dist/serve-gib/path-constants.mjs.map +1 -0
- package/dist/serve-gib/path-helper.d.mts +23 -0
- package/dist/serve-gib/path-helper.d.mts.map +1 -0
- package/dist/serve-gib/path-helper.mjs +107 -0
- package/dist/serve-gib/path-helper.mjs.map +1 -0
- package/dist/serve-gib/path-helper.respec.d.mts +2 -0
- package/dist/serve-gib/path-helper.respec.d.mts.map +1 -0
- package/dist/serve-gib/path-helper.respec.mjs +83 -0
- package/dist/serve-gib/path-helper.respec.mjs.map +1 -0
- package/dist/serve-gib/serve-gib-helpers.d.mts +14 -0
- package/dist/serve-gib/serve-gib-helpers.d.mts.map +1 -0
- package/dist/serve-gib/serve-gib-helpers.mjs +30 -0
- package/dist/serve-gib/serve-gib-helpers.mjs.map +1 -0
- package/dist/serve-gib/serve-gib-v1.d.mts +40 -0
- package/dist/serve-gib/serve-gib-v1.d.mts.map +1 -0
- package/dist/serve-gib/serve-gib-v1.mjs +157 -0
- package/dist/serve-gib/serve-gib-v1.mjs.map +1 -0
- package/dist/serve-gib/serve-gib.respec.d.mts +2 -0
- package/dist/serve-gib/serve-gib.respec.d.mts.map +1 -0
- package/dist/serve-gib/serve-gib.respec.mjs +85 -0
- package/dist/serve-gib/serve-gib.respec.mjs.map +1 -0
- package/dist/serve-gib/server-constants.d.mts +3 -0
- package/dist/serve-gib/server-constants.d.mts.map +1 -0
- package/dist/serve-gib/server-constants.mjs +3 -0
- package/dist/serve-gib/server-constants.mjs.map +1 -0
- package/dist/serve-gib/types.d.mts +94 -0
- package/dist/serve-gib/types.d.mts.map +1 -0
- package/dist/serve-gib/types.mjs +7 -0
- package/dist/serve-gib/types.mjs.map +1 -0
- package/dist/witness/space/metaspace/metaspace-nodespace/metaspace-nodespace-helper.mjs.map +1 -1
- package/dist/witness/space/metaspace/metaspace-nodespace/metaspace-nodespace.d.mts +5 -0
- package/dist/witness/space/metaspace/metaspace-nodespace/metaspace-nodespace.d.mts.map +1 -1
- package/dist/witness/space/metaspace/metaspace-nodespace/metaspace-nodespace.mjs +37 -0
- package/dist/witness/space/metaspace/metaspace-nodespace/metaspace-nodespace.mjs.map +1 -1
- package/dist/witness/space/node-filesystem-space/node-filesystem-space-helper.mjs +1 -1
- package/dist/witness/space/node-filesystem-space/node-filesystem-space-helper.mjs.map +1 -1
- package/dist/witness/space/node-filesystem-space/node-filesystem-space-types.d.mts.map +1 -1
- package/dist/witness/space/node-filesystem-space/node-filesystem-space-v1.d.mts.map +1 -1
- package/dist/witness/space/node-filesystem-space/node-filesystem-space-v1.mjs.map +1 -1
- package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/node-indexed-filesystem-space-v1.d.mts.map +1 -1
- package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_createAndInit.node-indexed-filesystem-space-v1.respec.mjs.map +1 -1
- package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_persistTransformResult.node-indexed-filesystem-space-v1.respec.mjs.map +1 -1
- package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_putGetDelete.node-indexed-filesystem-space-v1.respec.mjs.map +1 -1
- 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
- package/dist/witness/space/node-filesystem-space/respec/testSpace_createAndInit.node-filesystem-space-v1.respec.mjs.map +1 -1
- package/dist/witness/space/node-filesystem-space/respec/testSpace_persistTransformResult.node-filesystem-space-v1.respec.mjs.map +1 -1
- package/dist/witness/space/node-filesystem-space/respec/testSpace_putGetDelete.node-filesystem-space-v1.respec.mjs.map +1 -1
- package/dist/witness/space/node-filesystem-space/respec/testSpace_registerNewIbGib_GetLatest.node-filesystem-space-v1.respec.mjs.map +1 -1
- package/package.json +2 -2
- package/src/email/aws/aws-sigv4-helper.mts +139 -0
- package/src/email/aws/email-receiver-aws.mts +107 -0
- package/src/email/aws/email-sender-aws.mts +130 -0
- package/src/email/aws/index.mts +7 -0
- package/src/email/email-constants.mts +18 -0
- package/src/email/email-helpers.mts +160 -0
- package/src/email/email-receiver.mts +29 -0
- package/src/email/email-sender.mts +44 -0
- package/src/email/email-service.respec.mts +134 -0
- package/src/email/email-types.mts +59 -0
- package/src/email/index.mts +11 -0
- package/src/email/mock/email-sender-mock.mts +54 -0
- package/src/email/mock/index.mts +5 -0
- package/src/index.mts +41 -0
- package/src/respec-gib.node.mts +4 -5
- package/src/serve-gib/CHANGELOG.md +34 -0
- package/src/serve-gib/README.md +77 -0
- package/src/serve-gib/SERVE_REFACTOR_IMPLEMENTATION.md +112 -0
- package/src/serve-gib/bootstrap-helper.mts +141 -0
- package/src/serve-gib/bootstrap-helper.respec.mts +100 -0
- package/src/serve-gib/constants.mts +1 -0
- package/src/serve-gib/handlers/api/debug/ws-echo.handler.mts +105 -0
- package/src/serve-gib/handlers/api/email/email-inbound.handler.mts +67 -0
- package/src/serve-gib/handlers/api/email/email-outbound.handler.mts +82 -0
- package/src/serve-gib/handlers/api/health.handler.mts +23 -0
- package/src/serve-gib/handlers/api/health.respec.mts +51 -0
- package/src/serve-gib/handlers/api/ibgib/ibgib-handler-types.mts +49 -0
- package/src/serve-gib/handlers/api/ibgib/ibgib.handler.mts +176 -0
- package/src/serve-gib/handlers/api/keystone/keystone-check-email.handler.mts +60 -0
- package/src/serve-gib/handlers/api/keystone/keystone-evolve.handler.mts +150 -0
- package/src/serve-gib/handlers/api/keystone/keystone-genesis.handler.mts +171 -0
- package/src/serve-gib/handlers/api/keystone/keystone-get.handler.mts +198 -0
- package/src/serve-gib/handlers/api/keystone/keystone-get.respec.mts +106 -0
- package/src/serve-gib/handlers/api/keystone/keystone-handler-types.mts +29 -0
- package/src/serve-gib/handlers/api/keystone/keystone-lookup.handler.mts +95 -0
- package/src/serve-gib/handlers/api/keystone/keystone-post.handler.mts +75 -0
- package/src/serve-gib/handlers/api/keystone/keystone-post.respec.mts +130 -0
- package/src/serve-gib/handlers/api/keystone/sso-config.handler.mts +66 -0
- package/src/serve-gib/handlers/api/keystone/sso-link.handler.mts +140 -0
- package/src/serve-gib/handlers/api/keystone/sso-login.handler.mts +190 -0
- package/src/serve-gib/handlers/error-handler.mts +36 -0
- package/src/serve-gib/handlers/handler-base.mts +383 -0
- package/src/serve-gib/handlers/static-handler.mts +83 -0
- package/src/serve-gib/handlers/ws/sync-upgrade-handler-base.mts +233 -0
- package/src/serve-gib/handlers/ws/sync-upgrade.handler.mts +24 -0
- package/src/serve-gib/handlers/ws/ws-helper.mts +216 -0
- package/src/serve-gib/handlers/ws/ws-types.mts +53 -0
- package/src/serve-gib/identity-index/identity-index-constants.mts +3 -0
- package/src/serve-gib/identity-index/identity-index-helpers.mts +85 -0
- package/src/serve-gib/identity-index/identity-index-service.mts +109 -0
- package/src/serve-gib/identity-index/identity-index-service.respec.mts +135 -0
- package/src/serve-gib/identity-index/identity-index-types.mts +33 -0
- package/src/serve-gib/index.mts +92 -0
- package/src/serve-gib/keystone-schema-helpers.mts +120 -0
- package/src/serve-gib/keystone-schema-helpers.respec.mts +85 -0
- package/src/serve-gib/metaspace-nodeindexedspace/metaspace-nodeindexedspace.mts +109 -0
- package/src/serve-gib/path-constants.mts +119 -0
- package/src/serve-gib/path-helper.mts +101 -0
- package/src/serve-gib/path-helper.respec.mts +99 -0
- package/src/serve-gib/serve-gib-helpers.mts +32 -0
- package/src/serve-gib/serve-gib-v1.mts +172 -0
- package/src/serve-gib/serve-gib.respec.mts +90 -0
- package/src/serve-gib/server-constants.mts +2 -0
- package/src/serve-gib/types.mts +102 -0
- package/src/witness/space/metaspace/metaspace-nodespace/metaspace-nodespace.mts +41 -0
- package/src/witness/space/node-filesystem-space/node-filesystem-space-helper.mts +1 -1
|
@@ -0,0 +1,98 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { DomainInfo } from "../../../types.mjs";
|
|
2
|
+
export interface KeystoneParams {
|
|
3
|
+
domainInfo: DomainInfo;
|
|
4
|
+
}
|
|
5
|
+
export declare const DEFAULT_QUERY_PARAMS_GET_KEYSTONE: {
|
|
6
|
+
/**
|
|
7
|
+
* If true, will get the latest keystone frame.
|
|
8
|
+
*/
|
|
9
|
+
getLatest: boolean;
|
|
10
|
+
/**
|
|
11
|
+
* If true, will get the keystone's entire dependency graph
|
|
12
|
+
*/
|
|
13
|
+
getGraph: boolean;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* @see {@link DEFAULT_QUERY_PARAMS_GET_KEYSTONE} key/values for jsdocs
|
|
17
|
+
*/
|
|
18
|
+
export type KeystoneGetQueryParams = Partial<typeof DEFAULT_QUERY_PARAMS_GET_KEYSTONE>;
|
|
19
|
+
export type KNOWN_QUERY_PARAMS_KEYSTONE_GET = keyof KeystoneGetQueryParams;
|
|
20
|
+
export declare const KNOWN_QUERY_PARAMS_KEYSTONE_GET: KNOWN_QUERY_PARAMS_KEYSTONE_GET[];
|
|
21
|
+
export declare function isKnownQueryParamsKey_KeystoneGet(key: any): key is KNOWN_QUERY_PARAMS_KEYSTONE_GET;
|
|
22
|
+
//# sourceMappingURL=keystone-handler-types.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keystone-handler-types.d.mts","sourceRoot":"","sources":["../../../../../src/serve-gib/handlers/api/keystone/keystone-handler-types.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,MAAM,WAAW,cAAc;IAC3B,UAAU,EAAE,UAAU,CAAC;CAC1B;AAGD,eAAO,MAAM,iCAAiC;IAC1C;;OAEG;IACH,SAAS;IACT;;OAEG;IACH,QAAQ;CACX,CAAC;AACF;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,OAAO,CAAC,OAAO,iCAAiC,CAAC,CAAC;AACvF,MAAM,MAAM,+BAA+B,GAAG,MAAM,sBAAsB,CAAC;AAC3E,eAAO,MAAM,+BAA+B,EAAqD,+BAA+B,EAAE,CAAC;AACnI,wBAAgB,iCAAiC,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,+BAA+B,CAIlG"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// #region KeystoneGetQueryParams
|
|
2
|
+
export const DEFAULT_QUERY_PARAMS_GET_KEYSTONE = {
|
|
3
|
+
/**
|
|
4
|
+
* If true, will get the latest keystone frame.
|
|
5
|
+
*/
|
|
6
|
+
getLatest: true,
|
|
7
|
+
/**
|
|
8
|
+
* If true, will get the keystone's entire dependency graph
|
|
9
|
+
*/
|
|
10
|
+
getGraph: true,
|
|
11
|
+
};
|
|
12
|
+
export const KNOWN_QUERY_PARAMS_KEYSTONE_GET = Object.keys(DEFAULT_QUERY_PARAMS_GET_KEYSTONE);
|
|
13
|
+
export function isKnownQueryParamsKey_KeystoneGet(key) {
|
|
14
|
+
return !!key && typeof key === 'string' ?
|
|
15
|
+
KNOWN_QUERY_PARAMS_KEYSTONE_GET.includes(key) :
|
|
16
|
+
false;
|
|
17
|
+
}
|
|
18
|
+
// #endregion KeystoneGetQueryParams
|
|
19
|
+
//# sourceMappingURL=keystone-handler-types.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keystone-handler-types.mjs","sourceRoot":"","sources":["../../../../../src/serve-gib/handlers/api/keystone/keystone-handler-types.mts"],"names":[],"mappings":"AAMA,iCAAiC;AACjC,MAAM,CAAC,MAAM,iCAAiC,GAAG;IAC7C;;OAEG;IACH,SAAS,EAAE,IAAI;IACf;;OAEG;IACH,QAAQ,EAAE,IAAI;CACjB,CAAC;AAMF,MAAM,CAAC,MAAM,+BAA+B,GAAG,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAsC,CAAC;AACnI,MAAM,UAAU,iCAAiC,CAAC,GAAQ;IACtD,OAAO,CAAC,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC;QACrC,+BAA+B,CAAC,QAAQ,CAAC,GAAU,CAAC,CAAC,CAAC;QACtD,KAAK,CAAC;AACd,CAAC;AACD,oCAAoC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module serve-gib/handlers/api/keystone/keystone-lookup.handler
|
|
3
|
+
*
|
|
4
|
+
* POST /api/keystone/lookup
|
|
5
|
+
*
|
|
6
|
+
* Looks up a primary identity keystone by username or email hash in the server's identity index.
|
|
7
|
+
*/
|
|
8
|
+
import { ServeGibHandlerBase } from '../../handler-base.mjs';
|
|
9
|
+
import { RequestContext, ResponseResult, ServeGibHttpMethod } from '../../../types.mjs';
|
|
10
|
+
/**
|
|
11
|
+
* POST /api/keystone/lookup
|
|
12
|
+
*/
|
|
13
|
+
export declare class KeystoneLookupHandler extends ServeGibHandlerBase<undefined, undefined> {
|
|
14
|
+
protected lc: string;
|
|
15
|
+
protected method: ServeGibHttpMethod;
|
|
16
|
+
protected regex: RegExp;
|
|
17
|
+
protected handleRouteImpl(reqCtx: RequestContext<undefined, undefined>): Promise<ResponseResult | undefined>;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=keystone-lookup.handler.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keystone-lookup.handler.d.mts","sourceRoot":"","sources":["../../../../../src/serve-gib/handlers/api/keystone/keystone-lookup.handler.mts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAIxF;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC;IAChF,UAAmB,EAAE,EAAE,MAAM,CAAqC;IAClE,UAAmB,MAAM,EAAE,kBAAkB,CAAU;IACvD,UAAmB,KAAK,SAAoC;IAE5D,UAAgB,eAAe,CAC3B,MAAM,EAAE,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,GAC7C,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAiErC;CACJ"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module serve-gib/handlers/api/keystone/keystone-lookup.handler
|
|
3
|
+
*
|
|
4
|
+
* POST /api/keystone/lookup
|
|
5
|
+
*
|
|
6
|
+
* Looks up a primary identity keystone by username or email hash in the server's identity index.
|
|
7
|
+
*/
|
|
8
|
+
import * as path from 'node:path';
|
|
9
|
+
import { extractErrorMsg } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
|
|
10
|
+
import { getGibInfo } from '@ibgib/ts-gib/dist/V1/transforms/transform-helper.mjs';
|
|
11
|
+
import { IdentityIndexService } from '../../../identity-index/identity-index-service.mjs';
|
|
12
|
+
import { ServeGibHandlerBase } from '../../handler-base.mjs';
|
|
13
|
+
import { API_PATH_REGEXES } from '../../../path-constants.mjs';
|
|
14
|
+
import { bootstrapDomainMetaspace } from '../../../bootstrap-helper.mjs';
|
|
15
|
+
/**
|
|
16
|
+
* POST /api/keystone/lookup
|
|
17
|
+
*/
|
|
18
|
+
export class KeystoneLookupHandler extends ServeGibHandlerBase {
|
|
19
|
+
lc = `[${KeystoneLookupHandler.name}]`;
|
|
20
|
+
method = 'POST';
|
|
21
|
+
regex = API_PATH_REGEXES.KEYSTONE_LOOKUP;
|
|
22
|
+
async handleRouteImpl(reqCtx) {
|
|
23
|
+
const lc = `${this.lc}[${this.handleRouteImpl.name}]`;
|
|
24
|
+
try {
|
|
25
|
+
// Anti-timing side-channel protection: add bounded random jitter delay (150ms-350ms)
|
|
26
|
+
const jitterMs = Math.floor(Math.random() * 200) + 150;
|
|
27
|
+
await new Promise(resolve => setTimeout(resolve, jitterMs));
|
|
28
|
+
let parsed;
|
|
29
|
+
try {
|
|
30
|
+
parsed = JSON.parse(reqCtx.body);
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
console.error(`${lc} Rejecting request: body must be valid JSON.`);
|
|
34
|
+
return this.error(400, 'Request body must be valid JSON');
|
|
35
|
+
}
|
|
36
|
+
const identifier = (parsed.identifier || '').trim();
|
|
37
|
+
if (!identifier) {
|
|
38
|
+
console.error(`${lc} Rejecting lookup: identifier missing or empty.`);
|
|
39
|
+
return this.error(400, 'Identifier is required');
|
|
40
|
+
}
|
|
41
|
+
const indexService = new IdentityIndexService({ baseDir: path.join(reqCtx.dataDir, 'index') });
|
|
42
|
+
const record = await indexService.getEmailIndex({ email: identifier });
|
|
43
|
+
if (!record) {
|
|
44
|
+
console.log(`${lc} Lookup missed for identifier '${identifier}'`);
|
|
45
|
+
return this.error(404, `No registered identity found for '${identifier}'. Please check your username/email or create a new account.`);
|
|
46
|
+
}
|
|
47
|
+
const { tjpAddr } = record;
|
|
48
|
+
const { tjpGib, punctiliarHash } = getGibInfo({ ibGibAddr: tjpAddr });
|
|
49
|
+
const domainGib = tjpGib || punctiliarHash;
|
|
50
|
+
if (!domainGib) {
|
|
51
|
+
console.error(`${lc} Could not extract domain identifier from tjpAddr: ${tjpAddr}`);
|
|
52
|
+
return this.error(500, `Internal server error locating primary identity.`);
|
|
53
|
+
}
|
|
54
|
+
// Load primary keystone from domain space
|
|
55
|
+
const metaspace = await bootstrapDomainMetaspace(tjpAddr, reqCtx.dataDir);
|
|
56
|
+
const space = await metaspace.getLocalUserSpace({ lock: false });
|
|
57
|
+
if (!space) {
|
|
58
|
+
console.error(`${lc} Could not load space for domain ${domainGib}`);
|
|
59
|
+
return this.error(500, `Internal server error loading domain space.`);
|
|
60
|
+
}
|
|
61
|
+
const latestAddr = await metaspace.getLatestAddr({ addr: tjpAddr, space }) ?? tjpAddr;
|
|
62
|
+
const resGet = await metaspace.get({ addr: latestAddr, space });
|
|
63
|
+
const primaryKeystone = resGet?.ibGibs?.[0];
|
|
64
|
+
if (!primaryKeystone) {
|
|
65
|
+
console.error(`${lc} Primary keystone ${latestAddr} indexed but not found in domain space.`);
|
|
66
|
+
return this.error(404, `Primary identity keystone not found in space.`);
|
|
67
|
+
}
|
|
68
|
+
console.log(`${lc} Found latest primary identity keystone for '${identifier}': ${latestAddr} (tjp: ${tjpAddr})`);
|
|
69
|
+
return this.ok({
|
|
70
|
+
success: true,
|
|
71
|
+
tjpAddr,
|
|
72
|
+
primaryKeystoneIbGib: primaryKeystone
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
const emsg = extractErrorMsg(error);
|
|
77
|
+
console.error(`${lc} ${emsg}`);
|
|
78
|
+
return this.error(500, emsg);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=keystone-lookup.handler.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keystone-lookup.handler.mjs","sourceRoot":"","sources":["../../../../../src/serve-gib/handlers/api/keystone/keystone-lookup.handler.mts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module serve-gib/handlers/api/keystone
|
|
3
|
+
*/
|
|
4
|
+
import { ServeGibHandlerWithMetaspaceBase } from '../../handler-base.mjs';
|
|
5
|
+
import { RequestContext, ResponseResult, ServeGibHttpMethod } from '../../../types.mjs';
|
|
6
|
+
import { KeystoneParams } from './keystone-handler-types.mjs';
|
|
7
|
+
/**
|
|
8
|
+
* POST /api/keystone
|
|
9
|
+
*/
|
|
10
|
+
export declare class KeystonePostHandler extends ServeGibHandlerWithMetaspaceBase<KeystoneParams, any> {
|
|
11
|
+
protected lc: string;
|
|
12
|
+
protected method: ServeGibHttpMethod;
|
|
13
|
+
protected regex: RegExp;
|
|
14
|
+
protected parseParamsImpl(reqCtx: RequestContext<KeystoneParams, any>): Promise<KeystoneParams | undefined>;
|
|
15
|
+
protected validateQueryParams({ queryParams }: {
|
|
16
|
+
queryParams: any;
|
|
17
|
+
}): Promise<string[]>;
|
|
18
|
+
protected handleRouteImpl(reqCtx: RequestContext<KeystoneParams, any>): Promise<ResponseResult | undefined>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=keystone-post.handler.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keystone-post.handler.d.mts","sourceRoot":"","sources":["../../../../../src/serve-gib/handlers/api/keystone/keystone-post.handler.mts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,EAAE,gCAAgC,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExF,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAK9D;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,gCAAgC,CAAC,cAAc,EAAE,GAAG,CAAC;IAC1F,UAAmB,EAAE,EAAE,MAAM,CAAmC;IAChE,UAAmB,MAAM,EAAE,kBAAkB,CAAU;IACvD,UAAmB,KAAK,SAA6B;IAErD,UAAyB,eAAe,CAAC,MAAM,EAAE,cAAc,CAAC,cAAc,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAazH;IAED,UAAyB,mBAAmB,CAAC,EAAE,WAAW,EAAE,EAAE;QAAE,WAAW,EAAE,GAAG,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAErG;IAED,UAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,CAAC,cAAc,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CA8BhH;CACJ"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module serve-gib/handlers/api/keystone
|
|
3
|
+
*/
|
|
4
|
+
import { extractErrorMsg } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
|
|
5
|
+
import { validateAndRegisterPostKeystones } from '@ibgib/core-gib/dist/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-receiver/sync-websocket-peer-helpers.mjs';
|
|
6
|
+
import { GLOBAL_LOG_A_LOT } from '../../../constants.mjs';
|
|
7
|
+
import { ServeGibHandlerWithMetaspaceBase } from '../../handler-base.mjs';
|
|
8
|
+
import { API_PATH_REGEXES } from '../../../path-constants.mjs';
|
|
9
|
+
import { getIbGibAddr } from '@ibgib/ts-gib/dist/helper.mjs';
|
|
10
|
+
const logalot = GLOBAL_LOG_A_LOT || true;
|
|
11
|
+
/**
|
|
12
|
+
* POST /api/keystone
|
|
13
|
+
*/
|
|
14
|
+
export class KeystonePostHandler extends ServeGibHandlerWithMetaspaceBase {
|
|
15
|
+
lc = `[${KeystonePostHandler.name}]`;
|
|
16
|
+
method = 'POST';
|
|
17
|
+
regex = API_PATH_REGEXES.KEYSTONE;
|
|
18
|
+
async parseParamsImpl(reqCtx) {
|
|
19
|
+
let domainAddr = reqCtx.headers?.['ibgib-domain'];
|
|
20
|
+
if (!domainAddr) {
|
|
21
|
+
let bodyJson;
|
|
22
|
+
try {
|
|
23
|
+
bodyJson = JSON.parse(reqCtx.body);
|
|
24
|
+
}
|
|
25
|
+
catch { /* ignore */ }
|
|
26
|
+
if (bodyJson?.ibGibs?.[0]) {
|
|
27
|
+
domainAddr = getIbGibAddr({ ibGib: bodyJson.ibGibs[0] });
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
if (!domainAddr) {
|
|
31
|
+
return undefined;
|
|
32
|
+
}
|
|
33
|
+
return {
|
|
34
|
+
domainInfo: this.getDomainInfo({ domainAddr }),
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
async validateQueryParams({ queryParams }) {
|
|
38
|
+
return [];
|
|
39
|
+
}
|
|
40
|
+
async handleRouteImpl(reqCtx) {
|
|
41
|
+
const lc = `[${this.handleRouteImpl.name}]`;
|
|
42
|
+
try {
|
|
43
|
+
if (logalot) {
|
|
44
|
+
console.log(`${lc} starting... (I: 63bab8214834cb6e383e0fc364ee8826)`);
|
|
45
|
+
}
|
|
46
|
+
const { metaspace } = reqCtx;
|
|
47
|
+
if (!metaspace) {
|
|
48
|
+
throw new Error(`(UNEXPECTED) reqCtx.metaspace falsy? (E: 3d03027ea7f6f237980e511801255826)`);
|
|
49
|
+
}
|
|
50
|
+
const { ibGibs } = JSON.parse(reqCtx.body);
|
|
51
|
+
if (!Array.isArray(ibGibs))
|
|
52
|
+
return this.error(400, 'ibGibs array required');
|
|
53
|
+
const space = await metaspace.getLocalUserSpace({ lock: false });
|
|
54
|
+
if (!space) {
|
|
55
|
+
throw new Error(`No local user space found`);
|
|
56
|
+
}
|
|
57
|
+
// Delegate all intrinsic validation, keystone-specific checks, registration, and persistence to core-gib
|
|
58
|
+
await validateAndRegisterPostKeystones({
|
|
59
|
+
ibGibs,
|
|
60
|
+
metaspace,
|
|
61
|
+
space
|
|
62
|
+
});
|
|
63
|
+
return { status: 201, body: { success: true }, isJson: true };
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
const emsg = `${lc} ${extractErrorMsg(error)}`;
|
|
67
|
+
console.error(emsg);
|
|
68
|
+
return this.error(500, emsg);
|
|
69
|
+
}
|
|
70
|
+
finally {
|
|
71
|
+
if (logalot) {
|
|
72
|
+
console.log(`${lc} complete.`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=keystone-post.handler.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keystone-post.handler.mjs","sourceRoot":"","sources":["../../../../../src/serve-gib/handlers/api/keystone/keystone-post.handler.mts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keystone-post.respec.d.mts","sourceRoot":"","sources":["../../../../../src/serve-gib/handlers/api/keystone/keystone-post.respec.mts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,131 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ServeGibHandlerBase } from '../../handler-base.mjs';
|
|
2
|
+
import { RequestContext, ResponseResult, ServeGibHttpMethod } from '../../../types.mjs';
|
|
3
|
+
/**
|
|
4
|
+
* GET /api/identity/sso/config
|
|
5
|
+
*
|
|
6
|
+
* Retrieves safe public client configurations (client ID, scope, auth URLs) for active OAuth2 providers.
|
|
7
|
+
*/
|
|
8
|
+
export declare class SsoConfigHandler extends ServeGibHandlerBase<any, any> {
|
|
9
|
+
protected lc: string;
|
|
10
|
+
protected method: ServeGibHttpMethod;
|
|
11
|
+
protected regex: RegExp;
|
|
12
|
+
protected parseParamsImpl(reqCtx: RequestContext<any, any>): Promise<any>;
|
|
13
|
+
protected validateQueryParams({ queryParams }: {
|
|
14
|
+
queryParams: any;
|
|
15
|
+
}): Promise<string[]>;
|
|
16
|
+
/**
|
|
17
|
+
* @param reqCtx Context details of the incoming request.
|
|
18
|
+
* - Visibility: Public/Private (Contextual request information containing headers).
|
|
19
|
+
* - Generator: Server (Constructed dynamically by serve-gib-v1 pipeline).
|
|
20
|
+
*/
|
|
21
|
+
protected handleRouteImpl(reqCtx: RequestContext<any>): Promise<ResponseResult | undefined>;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=sso-config.handler.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sso-config.handler.d.mts","sourceRoot":"","sources":["../../../../../src/serve-gib/handlers/api/keystone/sso-config.handler.mts"],"names":[],"mappings":"AAKA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAaxF;;;;GAIG;AACH,qBAAa,gBAAiB,SAAQ,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC;IAC/D,UAAmB,EAAE,EAAE,MAAM,CAAgC;IAC7D,UAAmB,MAAM,EAAE,kBAAkB,CAAS;IACtD,UAAmB,KAAK,SAAwC;IAEhE,UAAyB,eAAe,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAEvF;IAED,UAAyB,mBAAmB,CAAC,EAAE,WAAW,EAAE,EAAE;QAAE,WAAW,EAAE,GAAG,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAErG;IAED;;;;OAIG;IACH,UAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAqBhG;CACJ"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { extractErrorMsg } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
|
|
2
|
+
import { loadSsoServerConfig } from '@ibgib/web-gib/dist/identity/sso/sso-config-helper.mjs';
|
|
3
|
+
import { SsoCustodianService } from '@ibgib/web-gib/dist/identity/sso/sso-custodian-service.mjs';
|
|
4
|
+
import { GLOBAL_LOG_A_LOT } from '../../../constants.mjs';
|
|
5
|
+
import { ServeGibHandlerBase } from '../../handler-base.mjs';
|
|
6
|
+
import { API_PATH_REGEXES } from '../../../path-constants.mjs';
|
|
7
|
+
const logalot = GLOBAL_LOG_A_LOT || true;
|
|
8
|
+
let custodian;
|
|
9
|
+
function getCustodian() {
|
|
10
|
+
if (!custodian) {
|
|
11
|
+
const config = loadSsoServerConfig();
|
|
12
|
+
custodian = new SsoCustodianService(config);
|
|
13
|
+
}
|
|
14
|
+
return custodian;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* GET /api/identity/sso/config
|
|
18
|
+
*
|
|
19
|
+
* Retrieves safe public client configurations (client ID, scope, auth URLs) for active OAuth2 providers.
|
|
20
|
+
*/
|
|
21
|
+
export class SsoConfigHandler extends ServeGibHandlerBase {
|
|
22
|
+
lc = `[${SsoConfigHandler.name}]`;
|
|
23
|
+
method = 'GET';
|
|
24
|
+
regex = API_PATH_REGEXES.IDENTITY_SSO_CONFIG;
|
|
25
|
+
async parseParamsImpl(reqCtx) {
|
|
26
|
+
return undefined;
|
|
27
|
+
}
|
|
28
|
+
async validateQueryParams({ queryParams }) {
|
|
29
|
+
return [];
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* @param reqCtx Context details of the incoming request.
|
|
33
|
+
* - Visibility: Public/Private (Contextual request information containing headers).
|
|
34
|
+
* - Generator: Server (Constructed dynamically by serve-gib-v1 pipeline).
|
|
35
|
+
*/
|
|
36
|
+
async handleRouteImpl(reqCtx) {
|
|
37
|
+
const lc = `${this.lc}[${this.handleRouteImpl.name}]`;
|
|
38
|
+
try {
|
|
39
|
+
if (logalot) {
|
|
40
|
+
console.log(`${lc} starting...`);
|
|
41
|
+
}
|
|
42
|
+
const service = getCustodian();
|
|
43
|
+
const hostUrl = `${reqCtx.protocol}://${reqCtx.headers.host}`;
|
|
44
|
+
const providers = service.getSsoClientConfigs(hostUrl);
|
|
45
|
+
return this.ok({
|
|
46
|
+
success: true,
|
|
47
|
+
providers
|
|
48
|
+
}, 200);
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
const emsg = extractErrorMsg(error);
|
|
52
|
+
console.error(`${lc} Fetching SSO config failed: ${emsg}`);
|
|
53
|
+
return this.error(500, `SSO configuration retrieval failed: ${emsg}`);
|
|
54
|
+
}
|
|
55
|
+
finally {
|
|
56
|
+
if (logalot) {
|
|
57
|
+
console.log(`${lc} complete.`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=sso-config.handler.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sso-config.handler.mjs","sourceRoot":"","sources":["../../../../../src/serve-gib/handlers/api/keystone/sso-config.handler.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iDAAiD,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,MAAM,wDAAwD,CAAC;AAC7F,OAAO,EAAE,mBAAmB,EAAE,MAAM,4DAA4D,CAAC;AAEjG,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAG/D,MAAM,OAAO,GAAG,gBAAgB,IAAI,IAAI,CAAC;AAEzC,IAAI,SAA0C,CAAC;AAC/C,SAAS,YAAY;IACjB,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,mBAAmB,EAAE,CAAC;QACrC,SAAS,GAAG,IAAI,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAED;;;;GAIG;AACH,MAAM,OAAO,gBAAiB,SAAQ,mBAA6B;IAC5C,EAAE,GAAW,IAAI,gBAAgB,CAAC,IAAI,GAAG,CAAC;IAC1C,MAAM,GAAuB,KAAK,CAAC;IACnC,KAAK,GAAG,gBAAgB,CAAC,mBAAmB,CAAC;IAE7C,KAAK,CAAC,eAAe,CAAC,MAAgC;QACrE,OAAO,SAAS,CAAC;IACrB,CAAC;IAEkB,KAAK,CAAC,mBAAmB,CAAC,EAAE,WAAW,EAAwB;QAC9E,OAAO,EAAE,CAAC;IACd,CAAC;IAED;;;;OAIG;IACO,KAAK,CAAC,eAAe,CAAC,MAA2B;QACvD,MAAM,EAAE,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,CAAC;QACtD,IAAI,CAAC;YACD,IAAI,OAAO,EAAE,CAAC;gBAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;YAAC,CAAC;YAElD,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,GAAG,MAAM,CAAC,QAAQ,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAC9D,MAAM,SAAS,GAAG,OAAO,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAEvD,OAAO,IAAI,CAAC,EAAE,CAAC;gBACX,OAAO,EAAE,IAAI;gBACb,SAAS;aACZ,EAAE,GAAG,CAAC,CAAC;QAEZ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;YACpC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,gCAAgC,IAAI,EAAE,CAAC,CAAC;YAC3D,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,uCAAuC,IAAI,EAAE,CAAC,CAAC;QAC1E,CAAC;gBAAS,CAAC;YACP,IAAI,OAAO,EAAE,CAAC;gBAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;YAAC,CAAC;QACpD,CAAC;IACL,CAAC;CACJ"}
|