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