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