@pangza/express 0.0.0-stage → 1.0.2
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/Application/callbackArgs.d.ts +5 -0
- package/Application/callbackArgs.d.ts.map +1 -0
- package/Application/callbackArgs.js +98 -0
- package/Application/callbackArgs.js.map +1 -0
- package/Application/decorators.d.ts +29 -0
- package/Application/decorators.d.ts.map +1 -0
- package/Application/decorators.js +181 -0
- package/Application/decorators.js.map +1 -0
- package/Application/index.d.ts +58 -0
- package/Application/index.d.ts.map +1 -0
- package/Application/index.js +573 -0
- package/Application/index.js.map +1 -0
- package/Application/interceptors.d.ts +27 -0
- package/Application/interceptors.d.ts.map +1 -0
- package/Application/interceptors.js +58 -0
- package/Application/interceptors.js.map +1 -0
- package/Application/lifecycle.d.ts +8 -0
- package/Application/lifecycle.d.ts.map +1 -0
- package/Application/lifecycle.js +96 -0
- package/Application/lifecycle.js.map +1 -0
- package/Application/metadata.d.ts +32 -0
- package/Application/metadata.d.ts.map +1 -0
- package/Application/metadata.js +230 -0
- package/Application/metadata.js.map +1 -0
- package/Application/processGuards.d.ts +2 -0
- package/Application/processGuards.d.ts.map +1 -0
- package/Application/processGuards.js +18 -0
- package/Application/processGuards.js.map +1 -0
- package/Application/types.d.ts +42 -0
- package/Application/types.d.ts.map +1 -0
- package/Application/types.js +13 -0
- package/Application/types.js.map +1 -0
- package/Application/warmup.d.ts +2 -0
- package/Application/warmup.d.ts.map +1 -0
- package/Application/warmup.js +78 -0
- package/Application/warmup.js.map +1 -0
- package/Auth/AuthUtil.d.ts +36 -0
- package/Auth/AuthUtil.d.ts.map +1 -0
- package/Auth/AuthUtil.js +305 -0
- package/Auth/AuthUtil.js.map +1 -0
- package/Auth/context.d.ts +5 -0
- package/Auth/context.d.ts.map +1 -0
- package/Auth/context.js +10 -0
- package/Auth/context.js.map +1 -0
- package/Auth/errors.d.ts +15 -0
- package/Auth/errors.d.ts.map +1 -0
- package/Auth/errors.js +34 -0
- package/Auth/errors.js.map +1 -0
- package/Auth/flag.d.ts +2 -0
- package/Auth/flag.d.ts.map +1 -0
- package/Auth/flag.js +5 -0
- package/Auth/flag.js.map +1 -0
- package/Auth/index.d.ts +11 -0
- package/Auth/index.d.ts.map +1 -0
- package/Auth/index.js +128 -0
- package/Auth/index.js.map +1 -0
- package/Auth/store.d.ts +47 -0
- package/Auth/store.d.ts.map +1 -0
- package/Auth/store.js +151 -0
- package/Auth/store.js.map +1 -0
- package/Auth/token.d.ts +10 -0
- package/Auth/token.d.ts.map +1 -0
- package/Auth/token.js +74 -0
- package/Auth/token.js.map +1 -0
- package/Auth/types.d.ts +76 -0
- package/Auth/types.d.ts.map +1 -0
- package/Auth/types.js +3 -0
- package/Auth/types.js.map +1 -0
- package/Exception/decorators.d.ts +4 -0
- package/Exception/decorators.d.ts.map +1 -0
- package/Exception/decorators.js +40 -0
- package/Exception/decorators.js.map +1 -0
- package/Exception/handler.d.ts +3 -0
- package/Exception/handler.d.ts.map +1 -0
- package/Exception/handler.js +96 -0
- package/Exception/handler.js.map +1 -0
- package/Exception/index.d.ts +9 -0
- package/Exception/index.d.ts.map +1 -0
- package/Exception/index.js +34 -0
- package/Exception/index.js.map +1 -0
- package/Exception/registry.d.ts +6 -0
- package/Exception/registry.d.ts.map +1 -0
- package/Exception/registry.js +60 -0
- package/Exception/registry.js.map +1 -0
- package/Exception/types.d.ts +27 -0
- package/Exception/types.d.ts.map +1 -0
- package/Exception/types.js +15 -0
- package/Exception/types.js.map +1 -0
- package/Json/ObjectMapper.d.ts +13 -0
- package/Json/ObjectMapper.d.ts.map +1 -0
- package/Json/ObjectMapper.js +184 -0
- package/Json/ObjectMapper.js.map +1 -0
- package/Json/beanKeys.d.ts +3 -0
- package/Json/beanKeys.d.ts.map +1 -0
- package/Json/beanKeys.js +29 -0
- package/Json/beanKeys.js.map +1 -0
- package/Json/convert.d.ts +11 -0
- package/Json/convert.d.ts.map +1 -0
- package/Json/convert.js +89 -0
- package/Json/convert.js.map +1 -0
- package/Json/decorators.d.ts +15 -0
- package/Json/decorators.d.ts.map +1 -0
- package/Json/decorators.js +80 -0
- package/Json/decorators.js.map +1 -0
- package/Json/index.d.ts +13 -0
- package/Json/index.d.ts.map +1 -0
- package/Json/index.js +39 -0
- package/Json/index.js.map +1 -0
- package/Json/types.d.ts +27 -0
- package/Json/types.d.ts.map +1 -0
- package/Json/types.js +11 -0
- package/Json/types.js.map +1 -0
- package/Log/decorators.d.ts +3 -0
- package/Log/decorators.d.ts.map +1 -0
- package/Log/decorators.js +10 -0
- package/Log/decorators.js.map +1 -0
- package/Log/flag.d.ts +2 -0
- package/Log/flag.d.ts.map +1 -0
- package/Log/flag.js +5 -0
- package/Log/flag.js.map +1 -0
- package/Log/index.d.ts +9 -0
- package/Log/index.d.ts.map +1 -0
- package/Log/index.js +33 -0
- package/Log/index.js.map +1 -0
- package/Log/ip.d.ts +14 -0
- package/Log/ip.d.ts.map +1 -0
- package/Log/ip.js +125 -0
- package/Log/ip.js.map +1 -0
- package/Log/recorder.d.ts +18 -0
- package/Log/recorder.d.ts.map +1 -0
- package/Log/recorder.js +144 -0
- package/Log/recorder.js.map +1 -0
- package/Log/types.d.ts +53 -0
- package/Log/types.d.ts.map +1 -0
- package/Log/types.js +21 -0
- package/Log/types.js.map +1 -0
- package/Logger/index.d.ts +18 -0
- package/Logger/index.d.ts.map +1 -0
- package/Logger/index.js +150 -0
- package/Logger/index.js.map +1 -0
- package/Logger/types.d.ts +13 -0
- package/Logger/types.d.ts.map +1 -0
- package/Logger/types.js +3 -0
- package/Logger/types.js.map +1 -0
- package/ORM/BaseMapper.d.ts +54 -0
- package/ORM/BaseMapper.d.ts.map +1 -0
- package/ORM/BaseMapper.js +593 -0
- package/ORM/BaseMapper.js.map +1 -0
- package/ORM/DataSource.d.ts +47 -0
- package/ORM/DataSource.d.ts.map +1 -0
- package/ORM/DataSource.js +336 -0
- package/ORM/DataSource.js.map +1 -0
- package/ORM/Db.d.ts +43 -0
- package/ORM/Db.d.ts.map +1 -0
- package/ORM/Db.js +198 -0
- package/ORM/Db.js.map +1 -0
- package/ORM/IdType.d.ts +10 -0
- package/ORM/IdType.d.ts.map +1 -0
- package/ORM/IdType.js +22 -0
- package/ORM/IdType.js.map +1 -0
- package/ORM/QueryWrapper.d.ts +58 -0
- package/ORM/QueryWrapper.d.ts.map +1 -0
- package/ORM/QueryWrapper.js +289 -0
- package/ORM/QueryWrapper.js.map +1 -0
- package/ORM/config.d.ts +6 -0
- package/ORM/config.d.ts.map +1 -0
- package/ORM/config.js +70 -0
- package/ORM/config.js.map +1 -0
- package/ORM/dialect.d.ts +24 -0
- package/ORM/dialect.d.ts.map +1 -0
- package/ORM/dialect.js +169 -0
- package/ORM/dialect.js.map +1 -0
- package/ORM/enable.d.ts +4 -0
- package/ORM/enable.d.ts.map +1 -0
- package/ORM/enable.js +23 -0
- package/ORM/enable.js.map +1 -0
- package/ORM/entityDecorators.d.ts +39 -0
- package/ORM/entityDecorators.d.ts.map +1 -0
- package/ORM/entityDecorators.js +131 -0
- package/ORM/entityDecorators.js.map +1 -0
- package/ORM/errors.d.ts +9 -0
- package/ORM/errors.d.ts.map +1 -0
- package/ORM/errors.js +20 -0
- package/ORM/errors.js.map +1 -0
- package/ORM/fieldSelect.d.ts +25 -0
- package/ORM/fieldSelect.d.ts.map +1 -0
- package/ORM/fieldSelect.js +49 -0
- package/ORM/fieldSelect.js.map +1 -0
- package/ORM/fill.d.ts +6 -0
- package/ORM/fill.d.ts.map +1 -0
- package/ORM/fill.js +45 -0
- package/ORM/fill.js.map +1 -0
- package/ORM/flag.d.ts +4 -0
- package/ORM/flag.d.ts.map +1 -0
- package/ORM/flag.js +14 -0
- package/ORM/flag.js.map +1 -0
- package/ORM/hydrate.d.ts +12 -0
- package/ORM/hydrate.d.ts.map +1 -0
- package/ORM/hydrate.js +304 -0
- package/ORM/hydrate.js.map +1 -0
- package/ORM/identifier.d.ts +8 -0
- package/ORM/identifier.d.ts.map +1 -0
- package/ORM/identifier.js +47 -0
- package/ORM/identifier.js.map +1 -0
- package/ORM/index.d.ts +41 -0
- package/ORM/index.d.ts.map +1 -0
- package/ORM/index.js +119 -0
- package/ORM/index.js.map +1 -0
- package/ORM/relation.d.ts +53 -0
- package/ORM/relation.d.ts.map +1 -0
- package/ORM/relation.js +143 -0
- package/ORM/relation.js.map +1 -0
- package/ORM/resultMap.d.ts +3 -0
- package/ORM/resultMap.d.ts.map +1 -0
- package/ORM/resultMap.js +21 -0
- package/ORM/resultMap.js.map +1 -0
- package/ORM/security.d.ts +5 -0
- package/ORM/security.d.ts.map +1 -0
- package/ORM/security.js +39 -0
- package/ORM/security.js.map +1 -0
- package/ORM/sqlDecorators.d.ts +15 -0
- package/ORM/sqlDecorators.d.ts.map +1 -0
- package/ORM/sqlDecorators.js +106 -0
- package/ORM/sqlDecorators.js.map +1 -0
- package/ORM/sqlLog.d.ts +20 -0
- package/ORM/sqlLog.d.ts.map +1 -0
- package/ORM/sqlLog.js +172 -0
- package/ORM/sqlLog.js.map +1 -0
- package/ORM/sqlTemplate.d.ts +13 -0
- package/ORM/sqlTemplate.d.ts.map +1 -0
- package/ORM/sqlTemplate.js +89 -0
- package/ORM/sqlTemplate.js.map +1 -0
- package/ORM/table.d.ts +8 -0
- package/ORM/table.d.ts.map +1 -0
- package/ORM/table.js +45 -0
- package/ORM/table.js.map +1 -0
- package/ORM/tableSearch.d.ts +43 -0
- package/ORM/tableSearch.d.ts.map +1 -0
- package/ORM/tableSearch.js +205 -0
- package/ORM/tableSearch.js.map +1 -0
- package/ORM/transactional.d.ts +7 -0
- package/ORM/transactional.d.ts.map +1 -0
- package/ORM/transactional.js +43 -0
- package/ORM/transactional.js.map +1 -0
- package/ORM/types.d.ts +92 -0
- package/ORM/types.d.ts.map +1 -0
- package/ORM/types.js +3 -0
- package/ORM/types.js.map +1 -0
- package/ORM/xml/MapperXml.d.ts +10 -0
- package/ORM/xml/MapperXml.d.ts.map +1 -0
- package/ORM/xml/MapperXml.js +79 -0
- package/ORM/xml/MapperXml.js.map +1 -0
- package/ORM/xml/execute.d.ts +10 -0
- package/ORM/xml/execute.d.ts.map +1 -0
- package/ORM/xml/execute.js +53 -0
- package/ORM/xml/execute.js.map +1 -0
- package/ORM/xml/index.d.ts +11 -0
- package/ORM/xml/index.d.ts.map +1 -0
- package/ORM/xml/index.js +29 -0
- package/ORM/xml/index.js.map +1 -0
- package/ORM/xml/loadMappers.d.ts +10 -0
- package/ORM/xml/loadMappers.d.ts.map +1 -0
- package/ORM/xml/loadMappers.js +162 -0
- package/ORM/xml/loadMappers.js.map +1 -0
- package/ORM/xml/parseMapperXml.d.ts +3 -0
- package/ORM/xml/parseMapperXml.d.ts.map +1 -0
- package/ORM/xml/parseMapperXml.js +217 -0
- package/ORM/xml/parseMapperXml.js.map +1 -0
- package/ORM/xml/registry.d.ts +15 -0
- package/ORM/xml/registry.d.ts.map +1 -0
- package/ORM/xml/registry.js +57 -0
- package/ORM/xml/registry.js.map +1 -0
- package/ORM/xml/renderSql.d.ts +4 -0
- package/ORM/xml/renderSql.d.ts.map +1 -0
- package/ORM/xml/renderSql.js +178 -0
- package/ORM/xml/renderSql.js.map +1 -0
- package/ORM/xml/types.d.ts +50 -0
- package/ORM/xml/types.d.ts.map +1 -0
- package/ORM/xml/types.js +3 -0
- package/ORM/xml/types.js.map +1 -0
- package/ORM/xml/xmlMapper.d.ts +10 -0
- package/ORM/xml/xmlMapper.d.ts.map +1 -0
- package/ORM/xml/xmlMapper.js +44 -0
- package/ORM/xml/xmlMapper.js.map +1 -0
- package/README.md +41 -2
- package/Redis/Redis.d.ts +65 -0
- package/Redis/Redis.d.ts.map +1 -0
- package/Redis/Redis.js +622 -0
- package/Redis/Redis.js.map +1 -0
- package/Redis/cache.d.ts +4 -0
- package/Redis/cache.d.ts.map +1 -0
- package/Redis/cache.js +70 -0
- package/Redis/cache.js.map +1 -0
- package/Redis/decorators.d.ts +5 -0
- package/Redis/decorators.d.ts.map +1 -0
- package/Redis/decorators.js +20 -0
- package/Redis/decorators.js.map +1 -0
- package/Redis/enable.d.ts +4 -0
- package/Redis/enable.d.ts.map +1 -0
- package/Redis/enable.js +22 -0
- package/Redis/enable.js.map +1 -0
- package/Redis/errors.d.ts +9 -0
- package/Redis/errors.d.ts.map +1 -0
- package/Redis/errors.js +20 -0
- package/Redis/errors.js.map +1 -0
- package/Redis/flag.d.ts +4 -0
- package/Redis/flag.d.ts.map +1 -0
- package/Redis/flag.js +14 -0
- package/Redis/flag.js.map +1 -0
- package/Redis/index.d.ts +11 -0
- package/Redis/index.d.ts.map +1 -0
- package/Redis/index.js +42 -0
- package/Redis/index.js.map +1 -0
- package/Redis/rateLimit.d.ts +8 -0
- package/Redis/rateLimit.d.ts.map +1 -0
- package/Redis/rateLimit.js +82 -0
- package/Redis/rateLimit.js.map +1 -0
- package/Redis/redisson/RCountDownLatch.d.ts +12 -0
- package/Redis/redisson/RCountDownLatch.d.ts.map +1 -0
- package/Redis/redisson/RCountDownLatch.js +48 -0
- package/Redis/redisson/RCountDownLatch.js.map +1 -0
- package/Redis/redisson/RFairLock.d.ts +4 -0
- package/Redis/redisson/RFairLock.d.ts.map +1 -0
- package/Redis/redisson/RFairLock.js +29 -0
- package/Redis/redisson/RFairLock.js.map +1 -0
- package/Redis/redisson/RLock.d.ts +34 -0
- package/Redis/redisson/RLock.d.ts.map +1 -0
- package/Redis/redisson/RLock.js +146 -0
- package/Redis/redisson/RLock.js.map +1 -0
- package/Redis/redisson/RMultiLock.d.ts +15 -0
- package/Redis/redisson/RMultiLock.d.ts.map +1 -0
- package/Redis/redisson/RMultiLock.js +90 -0
- package/Redis/redisson/RMultiLock.js.map +1 -0
- package/Redis/redisson/RReadWriteLock.d.ts +9 -0
- package/Redis/redisson/RReadWriteLock.d.ts.map +1 -0
- package/Redis/redisson/RReadWriteLock.js +51 -0
- package/Redis/redisson/RReadWriteLock.js.map +1 -0
- package/Redis/redisson/RSemaphore.d.ts +13 -0
- package/Redis/redisson/RSemaphore.d.ts.map +1 -0
- package/Redis/redisson/RSemaphore.js +54 -0
- package/Redis/redisson/RSemaphore.js.map +1 -0
- package/Redis/redisson/Redisson.d.ts +30 -0
- package/Redis/redisson/Redisson.d.ts.map +1 -0
- package/Redis/redisson/Redisson.js +93 -0
- package/Redis/redisson/Redisson.js.map +1 -0
- package/Redis/redisson/index.d.ts +12 -0
- package/Redis/redisson/index.d.ts.map +1 -0
- package/Redis/redisson/index.js +32 -0
- package/Redis/redisson/index.js.map +1 -0
- package/Redis/redisson/objects.d.ts +116 -0
- package/Redis/redisson/objects.d.ts.map +1 -0
- package/Redis/redisson/objects.js +384 -0
- package/Redis/redisson/objects.js.map +1 -0
- package/Redis/redisson/scripts.d.ts +13 -0
- package/Redis/redisson/scripts.d.ts.map +1 -0
- package/Redis/redisson/scripts.js +187 -0
- package/Redis/redisson/scripts.js.map +1 -0
- package/Redis/redisson/types.d.ts +129 -0
- package/Redis/redisson/types.d.ts.map +1 -0
- package/Redis/redisson/types.js +8 -0
- package/Redis/redisson/types.js.map +1 -0
- package/Redis/redisson/utils.d.ts +9 -0
- package/Redis/redisson/utils.d.ts.map +1 -0
- package/Redis/redisson/utils.js +78 -0
- package/Redis/redisson/utils.js.map +1 -0
- package/Redis/types.d.ts +82 -0
- package/Redis/types.d.ts.map +1 -0
- package/Redis/types.js +23 -0
- package/Redis/types.js.map +1 -0
- package/Service/BaseService.d.ts +18 -0
- package/Service/BaseService.d.ts.map +1 -0
- package/Service/BaseService.js +46 -0
- package/Service/BaseService.js.map +1 -0
- package/Service/MapperType.d.ts +18 -0
- package/Service/MapperType.d.ts.map +1 -0
- package/Service/MapperType.js +46 -0
- package/Service/MapperType.js.map +1 -0
- package/Service/bean.d.ts +16 -0
- package/Service/bean.d.ts.map +1 -0
- package/Service/bean.js +72 -0
- package/Service/bean.js.map +1 -0
- package/Service/container.d.ts +18 -0
- package/Service/container.d.ts.map +1 -0
- package/Service/container.js +66 -0
- package/Service/container.js.map +1 -0
- package/Service/decorators.d.ts +12 -0
- package/Service/decorators.d.ts.map +1 -0
- package/Service/decorators.js +148 -0
- package/Service/decorators.js.map +1 -0
- package/Service/index.d.ts +11 -0
- package/Service/index.d.ts.map +1 -0
- package/Service/index.js +32 -0
- package/Service/index.js.map +1 -0
- package/Service/types.d.ts +19 -0
- package/Service/types.d.ts.map +1 -0
- package/Service/types.js +18 -0
- package/Service/types.js.map +1 -0
- package/Validate/decorators.d.ts +18 -0
- package/Validate/decorators.d.ts.map +1 -0
- package/Validate/decorators.js +77 -0
- package/Validate/decorators.js.map +1 -0
- package/Validate/engine.d.ts +5 -0
- package/Validate/engine.d.ts.map +1 -0
- package/Validate/engine.js +78 -0
- package/Validate/engine.js.map +1 -0
- package/Validate/index.d.ts +6 -0
- package/Validate/index.d.ts.map +1 -0
- package/Validate/index.js +28 -0
- package/Validate/index.js.map +1 -0
- package/Validate/rules.d.ts +11 -0
- package/Validate/rules.d.ts.map +1 -0
- package/Validate/rules.js +120 -0
- package/Validate/rules.js.map +1 -0
- package/Validate/types.d.ts +22 -0
- package/Validate/types.d.ts.map +1 -0
- package/Validate/types.js +17 -0
- package/Validate/types.js.map +1 -0
- package/config/index.d.ts +104 -0
- package/config/index.d.ts.map +1 -0
- package/config/index.js +330 -0
- package/config/index.js.map +1 -0
- package/encrypt/AESUtil.d.ts +5 -0
- package/encrypt/AESUtil.d.ts.map +1 -0
- package/encrypt/AESUtil.js +36 -0
- package/encrypt/AESUtil.js.map +1 -0
- package/encrypt/DynamicAesKeyManager.d.ts +9 -0
- package/encrypt/DynamicAesKeyManager.d.ts.map +1 -0
- package/encrypt/DynamicAesKeyManager.js +46 -0
- package/encrypt/DynamicAesKeyManager.js.map +1 -0
- package/encrypt/index.d.ts +3 -0
- package/encrypt/index.d.ts.map +1 -0
- package/encrypt/index.js +8 -0
- package/encrypt/index.js.map +1 -0
- package/index.d.ts +31 -0
- package/index.d.ts.map +1 -0
- package/index.js +260 -0
- package/index.js.map +1 -0
- package/langchain/decorators.d.ts +2 -0
- package/langchain/decorators.d.ts.map +1 -0
- package/langchain/decorators.js +6 -0
- package/langchain/decorators.js.map +1 -0
- package/langchain/index.d.ts +1 -0
- package/langchain/index.d.ts.map +1 -0
- package/langchain/index.js +2 -0
- package/langchain/index.js.map +1 -0
- package/package.json +110 -4
- package/schedule/ScheduleManager.d.ts +25 -0
- package/schedule/ScheduleManager.d.ts.map +1 -0
- package/schedule/ScheduleManager.js +125 -0
- package/schedule/ScheduleManager.js.map +1 -0
- package/types/enums.d.ts +11 -0
- package/types/enums.d.ts.map +1 -0
- package/types/enums.js +15 -0
- package/types/enums.js.map +1 -0
- package/utils/case.d.ts +6 -0
- package/utils/case.d.ts.map +1 -0
- package/utils/case.js +32 -0
- package/utils/case.js.map +1 -0
- package/utils/entity/PageResult/index.d.ts +20 -0
- package/utils/entity/PageResult/index.d.ts.map +1 -0
- package/utils/entity/PageResult/index.js +15 -0
- package/utils/entity/PageResult/index.js.map +1 -0
- package/utils/entity/ResponseData/index.d.ts +11 -0
- package/utils/entity/ResponseData/index.d.ts.map +1 -0
- package/utils/entity/ResponseData/index.js +25 -0
- package/utils/entity/ResponseData/index.js.map +1 -0
- package/utils/id.d.ts +2 -0
- package/utils/id.d.ts.map +1 -0
- package/utils/id.js +9 -0
- package/utils/id.js.map +1 -0
package/Auth/store.d.ts
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { AuthSession, LoginId } from "./types";
|
|
2
|
+
export interface SessionStore {
|
|
3
|
+
set(session: AuthSession): Promise<void>;
|
|
4
|
+
getByToken(token: string): Promise<AuthSession | null>;
|
|
5
|
+
removeByToken(token: string): Promise<void>;
|
|
6
|
+
removeByLoginId(loginId: LoginId): Promise<void>;
|
|
7
|
+
listTokensByLoginId(loginId: LoginId): Promise<string[]>;
|
|
8
|
+
touch(session: AuthSession): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
export declare class MemoryStore implements SessionStore {
|
|
11
|
+
private tokenMap;
|
|
12
|
+
private loginIdMap;
|
|
13
|
+
set(session: AuthSession): Promise<void>;
|
|
14
|
+
getByToken(token: string): Promise<AuthSession | null>;
|
|
15
|
+
removeByToken(token: string): Promise<void>;
|
|
16
|
+
removeByLoginId(loginId: LoginId): Promise<void>;
|
|
17
|
+
listTokensByLoginId(loginId: LoginId): Promise<string[]>;
|
|
18
|
+
touch(session: AuthSession): Promise<void>;
|
|
19
|
+
}
|
|
20
|
+
export type RedisLike = {
|
|
21
|
+
setJSON(key: string, value: unknown, ttlSeconds?: number): Promise<void>;
|
|
22
|
+
getJSON<T = unknown>(key: string): Promise<T | null>;
|
|
23
|
+
del(...keys: string[]): Promise<number>;
|
|
24
|
+
sAdd(key: string, ...members: string[]): Promise<number>;
|
|
25
|
+
sMembers(key: string): Promise<string[]>;
|
|
26
|
+
sRem(key: string, ...members: string[]): Promise<number>;
|
|
27
|
+
expire?(key: string, ttlSeconds: number): Promise<boolean>;
|
|
28
|
+
ttl?(key: string): Promise<number>;
|
|
29
|
+
};
|
|
30
|
+
export declare class RedisStore implements SessionStore {
|
|
31
|
+
private readonly redis;
|
|
32
|
+
constructor(redis: RedisLike);
|
|
33
|
+
private tokenKey;
|
|
34
|
+
private uidKey;
|
|
35
|
+
private ttlSeconds;
|
|
36
|
+
private refreshUidExpire;
|
|
37
|
+
set(session: AuthSession): Promise<void>;
|
|
38
|
+
getByToken(token: string): Promise<AuthSession | null>;
|
|
39
|
+
removeByToken(token: string): Promise<void>;
|
|
40
|
+
private pruneUidTokens;
|
|
41
|
+
removeByLoginId(loginId: LoginId): Promise<void>;
|
|
42
|
+
listTokensByLoginId(loginId: LoginId): Promise<string[]>;
|
|
43
|
+
touch(session: AuthSession): Promise<void>;
|
|
44
|
+
}
|
|
45
|
+
export declare function getSessionStore(): SessionStore;
|
|
46
|
+
export declare function setSessionStore(store: SessionStore): void;
|
|
47
|
+
//# sourceMappingURL=store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../../src/framework/Auth/store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGpD,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IACvD,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjD,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAEzD,KAAK,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5C;AAOD,qBAAa,WAAY,YAAW,YAAY;IAC9C,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,UAAU,CAAkC;IAE9C,GAAG,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAWxC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAItD,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY3C,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAUhD,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAKxD,KAAK,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAGjD;AAGD,MAAM,MAAM,SAAS,GAAG;IACtB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzE,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACrD,GAAG,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACxC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACzD,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACzC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACzD,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE3D,GAAG,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACpC,CAAC;AAQF,qBAAa,UAAW,YAAW,YAAY;IACjC,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,SAAS;IAE7C,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,UAAU;YAYJ,gBAAgB;IAcxB,GAAG,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAQxC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAItD,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAYnC,cAAc;IAqBtB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAUhD,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAIxD,KAAK,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAKjD;AAKD,wBAAgB,eAAe,IAAI,YAAY,CAE9C;AAGD,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAEzD"}
|
package/Auth/store.js
ADDED
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RedisStore = exports.MemoryStore = void 0;
|
|
4
|
+
exports.getSessionStore = getSessionStore;
|
|
5
|
+
exports.setSessionStore = setSessionStore;
|
|
6
|
+
class MemoryStore {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.tokenMap = new Map();
|
|
9
|
+
this.loginIdMap = new Map();
|
|
10
|
+
}
|
|
11
|
+
async set(session) {
|
|
12
|
+
this.tokenMap.set(session.token, session);
|
|
13
|
+
const key = String(session.loginId);
|
|
14
|
+
let tokens = this.loginIdMap.get(key);
|
|
15
|
+
if (!tokens) {
|
|
16
|
+
tokens = new Set();
|
|
17
|
+
this.loginIdMap.set(key, tokens);
|
|
18
|
+
}
|
|
19
|
+
tokens.add(session.token);
|
|
20
|
+
}
|
|
21
|
+
async getByToken(token) {
|
|
22
|
+
return this.tokenMap.get(token) ?? null;
|
|
23
|
+
}
|
|
24
|
+
async removeByToken(token) {
|
|
25
|
+
const session = this.tokenMap.get(token);
|
|
26
|
+
if (!session)
|
|
27
|
+
return;
|
|
28
|
+
this.tokenMap.delete(token);
|
|
29
|
+
const key = String(session.loginId);
|
|
30
|
+
const tokens = this.loginIdMap.get(key);
|
|
31
|
+
if (tokens) {
|
|
32
|
+
tokens.delete(token);
|
|
33
|
+
if (tokens.size === 0)
|
|
34
|
+
this.loginIdMap.delete(key);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
async removeByLoginId(loginId) {
|
|
38
|
+
const key = String(loginId);
|
|
39
|
+
const tokens = this.loginIdMap.get(key);
|
|
40
|
+
if (!tokens)
|
|
41
|
+
return;
|
|
42
|
+
for (const token of [...tokens]) {
|
|
43
|
+
this.tokenMap.delete(token);
|
|
44
|
+
}
|
|
45
|
+
this.loginIdMap.delete(key);
|
|
46
|
+
}
|
|
47
|
+
async listTokensByLoginId(loginId) {
|
|
48
|
+
const tokens = this.loginIdMap.get(String(loginId));
|
|
49
|
+
return tokens ? [...tokens] : [];
|
|
50
|
+
}
|
|
51
|
+
async touch(session) {
|
|
52
|
+
this.tokenMap.set(session.token, session);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.MemoryStore = MemoryStore;
|
|
56
|
+
class RedisStore {
|
|
57
|
+
constructor(redis) {
|
|
58
|
+
this.redis = redis;
|
|
59
|
+
}
|
|
60
|
+
tokenKey(token) {
|
|
61
|
+
return `auth:token:${token}`;
|
|
62
|
+
}
|
|
63
|
+
uidKey(loginId) {
|
|
64
|
+
return `auth:uid:${loginId}`;
|
|
65
|
+
}
|
|
66
|
+
ttlSeconds(session) {
|
|
67
|
+
if (session.expireTime >= Number.MAX_SAFE_INTEGER / 2) {
|
|
68
|
+
return undefined;
|
|
69
|
+
}
|
|
70
|
+
return Math.max(1, Math.ceil((session.expireTime - Date.now()) / 1000));
|
|
71
|
+
}
|
|
72
|
+
async refreshUidExpire(loginId, ttl) {
|
|
73
|
+
if (ttl == null || !this.redis.expire)
|
|
74
|
+
return;
|
|
75
|
+
const key = this.uidKey(loginId);
|
|
76
|
+
if (this.redis.ttl) {
|
|
77
|
+
const left = await this.redis.ttl(key);
|
|
78
|
+
if (left === -1)
|
|
79
|
+
return;
|
|
80
|
+
if (left > ttl)
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
await this.redis.expire(key, ttl);
|
|
84
|
+
}
|
|
85
|
+
async set(session) {
|
|
86
|
+
const ttl = this.ttlSeconds(session);
|
|
87
|
+
await this.redis.setJSON(this.tokenKey(session.token), session, ttl);
|
|
88
|
+
const uidKey = this.uidKey(session.loginId);
|
|
89
|
+
await this.redis.sAdd(uidKey, session.token);
|
|
90
|
+
await this.refreshUidExpire(session.loginId, ttl);
|
|
91
|
+
}
|
|
92
|
+
async getByToken(token) {
|
|
93
|
+
return this.redis.getJSON(this.tokenKey(token));
|
|
94
|
+
}
|
|
95
|
+
async removeByToken(token) {
|
|
96
|
+
const session = await this.redis.getJSON(this.tokenKey(token));
|
|
97
|
+
await this.redis.del(this.tokenKey(token));
|
|
98
|
+
if (session) {
|
|
99
|
+
await this.redis.sRem(this.uidKey(session.loginId), token);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
async pruneUidTokens(loginId) {
|
|
103
|
+
const key = this.uidKey(loginId);
|
|
104
|
+
const tokens = await this.redis.sMembers(key);
|
|
105
|
+
if (!tokens.length)
|
|
106
|
+
return [];
|
|
107
|
+
const alive = [];
|
|
108
|
+
const ghosts = [];
|
|
109
|
+
for (const token of tokens) {
|
|
110
|
+
const session = await this.redis.getJSON(this.tokenKey(token));
|
|
111
|
+
if (session)
|
|
112
|
+
alive.push(token);
|
|
113
|
+
else
|
|
114
|
+
ghosts.push(token);
|
|
115
|
+
}
|
|
116
|
+
if (ghosts.length) {
|
|
117
|
+
await this.redis.sRem(key, ...ghosts);
|
|
118
|
+
}
|
|
119
|
+
if (alive.length === 0) {
|
|
120
|
+
await this.redis.del(key);
|
|
121
|
+
}
|
|
122
|
+
return alive;
|
|
123
|
+
}
|
|
124
|
+
async removeByLoginId(loginId) {
|
|
125
|
+
const key = this.uidKey(loginId);
|
|
126
|
+
const tokens = await this.pruneUidTokens(loginId);
|
|
127
|
+
if (tokens.length > 0) {
|
|
128
|
+
await this.redis.del(...tokens.map((t) => this.tokenKey(t)), key);
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
await this.redis.del(key);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
async listTokensByLoginId(loginId) {
|
|
135
|
+
return this.pruneUidTokens(loginId);
|
|
136
|
+
}
|
|
137
|
+
async touch(session) {
|
|
138
|
+
const ttl = this.ttlSeconds(session);
|
|
139
|
+
await this.redis.setJSON(this.tokenKey(session.token), session, ttl);
|
|
140
|
+
await this.refreshUidExpire(session.loginId, ttl);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
exports.RedisStore = RedisStore;
|
|
144
|
+
let activeStore = new MemoryStore();
|
|
145
|
+
function getSessionStore() {
|
|
146
|
+
return activeStore;
|
|
147
|
+
}
|
|
148
|
+
function setSessionStore(store) {
|
|
149
|
+
activeStore = store;
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../../src/framework/Auth/store.ts"],"names":[],"mappings":"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"}
|
package/Auth/token.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { LoginId, ResolvedAuthOptions, TokenStyle } from "./types";
|
|
2
|
+
export declare function generateStyleToken(style: TokenStyle): string;
|
|
3
|
+
export interface CreateTokenPayload {
|
|
4
|
+
loginId: LoginId;
|
|
5
|
+
device?: string;
|
|
6
|
+
timeout: number;
|
|
7
|
+
}
|
|
8
|
+
export declare function createAuthToken(options: ResolvedAuthOptions, payload: CreateTokenPayload): Promise<string>;
|
|
9
|
+
export declare function verifyAuthToken(options: ResolvedAuthOptions, token: string): boolean;
|
|
10
|
+
//# sourceMappingURL=token.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../../../src/framework/Auth/token.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAGxE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAuB5D;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,OAAO,EAAE,MAAM,CAAC;CACjB;AAKD,wBAAsB,eAAe,CACnC,OAAO,EAAE,mBAAmB,EAC5B,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,MAAM,CAAC,CA8BjB;AAGD,wBAAgB,eAAe,CAC7B,OAAO,EAAE,mBAAmB,EAC5B,KAAK,EAAE,MAAM,GACZ,OAAO,CAeT"}
|
package/Auth/token.js
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.generateStyleToken = generateStyleToken;
|
|
7
|
+
exports.createAuthToken = createAuthToken;
|
|
8
|
+
exports.verifyAuthToken = verifyAuthToken;
|
|
9
|
+
const crypto_1 = require("crypto");
|
|
10
|
+
const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
|
|
11
|
+
function generateStyleToken(style) {
|
|
12
|
+
switch (style) {
|
|
13
|
+
case "simple-uuid":
|
|
14
|
+
return (0, crypto_1.randomUUID)().replace(/-/g, "");
|
|
15
|
+
case "uuid":
|
|
16
|
+
return (0, crypto_1.randomUUID)();
|
|
17
|
+
case "random-32":
|
|
18
|
+
return (0, crypto_1.randomBytes)(16).toString("hex");
|
|
19
|
+
case "random-64":
|
|
20
|
+
return (0, crypto_1.randomBytes)(32).toString("hex");
|
|
21
|
+
case "random-128":
|
|
22
|
+
return (0, crypto_1.randomBytes)(64).toString("hex");
|
|
23
|
+
case "tik": {
|
|
24
|
+
const part = () => (0, crypto_1.randomBytes)(3).toString("hex");
|
|
25
|
+
return `${part()}_${part()}_${part()}`;
|
|
26
|
+
}
|
|
27
|
+
case "jwt":
|
|
28
|
+
return (0, crypto_1.randomUUID)();
|
|
29
|
+
default:
|
|
30
|
+
return (0, crypto_1.randomUUID)();
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
async function createAuthToken(options, payload) {
|
|
34
|
+
if (options.createToken) {
|
|
35
|
+
return await options.createToken({
|
|
36
|
+
loginId: payload.loginId,
|
|
37
|
+
device: payload.device,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
if (options.tokenStyle === "jwt") {
|
|
41
|
+
const expiresIn = payload.timeout < 0
|
|
42
|
+
? undefined
|
|
43
|
+
: Math.max(1, Math.ceil(payload.timeout / 1000));
|
|
44
|
+
const signOptions = {
|
|
45
|
+
algorithm: (options.jwtAlgorithm || "HS256"),
|
|
46
|
+
};
|
|
47
|
+
if (expiresIn !== undefined) {
|
|
48
|
+
signOptions.expiresIn = expiresIn;
|
|
49
|
+
}
|
|
50
|
+
return jsonwebtoken_1.default.sign({
|
|
51
|
+
loginId: payload.loginId,
|
|
52
|
+
device: payload.device,
|
|
53
|
+
}, options.jwtSecret, signOptions);
|
|
54
|
+
}
|
|
55
|
+
return generateStyleToken(options.tokenStyle);
|
|
56
|
+
}
|
|
57
|
+
function verifyAuthToken(options, token) {
|
|
58
|
+
if (options.tokenStyle !== "jwt" && !options.createToken) {
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
if (options.tokenStyle !== "jwt") {
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
64
|
+
try {
|
|
65
|
+
jsonwebtoken_1.default.verify(token, options.jwtSecret, {
|
|
66
|
+
algorithms: [(options.jwtAlgorithm || "HS256")],
|
|
67
|
+
});
|
|
68
|
+
return true;
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=token.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token.js","sourceRoot":"","sources":["../../../../src/framework/Auth/token.ts"],"names":[],"mappings":"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"}
|
package/Auth/types.d.ts
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
export type AuthCheckMode = "OR" | "AND";
|
|
2
|
+
export type LoginId = string | number;
|
|
3
|
+
export type TokenStyle = "uuid" | "simple-uuid" | "random-32" | "random-64" | "random-128" | "tik" | "jwt";
|
|
4
|
+
export interface AuthSession {
|
|
5
|
+
token: string;
|
|
6
|
+
loginId: LoginId;
|
|
7
|
+
device?: string;
|
|
8
|
+
roles: string[];
|
|
9
|
+
permissions: string[];
|
|
10
|
+
username?: string;
|
|
11
|
+
avatar?: string;
|
|
12
|
+
createTime: number;
|
|
13
|
+
expireTime: number;
|
|
14
|
+
lastActiveTime: number;
|
|
15
|
+
}
|
|
16
|
+
export type AuthRedisClient = {
|
|
17
|
+
setJSON(key: string, value: unknown, ttlSeconds?: number): Promise<void>;
|
|
18
|
+
getJSON<T = unknown>(key: string): Promise<T | null>;
|
|
19
|
+
del(...keys: string[]): Promise<number>;
|
|
20
|
+
sAdd(key: string, ...members: string[]): Promise<number>;
|
|
21
|
+
sMembers(key: string): Promise<string[]>;
|
|
22
|
+
sRem(key: string, ...members: string[]): Promise<number>;
|
|
23
|
+
expire?(key: string, ttlSeconds: number): Promise<boolean>;
|
|
24
|
+
ttl?(key: string): Promise<number>;
|
|
25
|
+
};
|
|
26
|
+
export interface LoginOptions {
|
|
27
|
+
roles?: string[];
|
|
28
|
+
permissions?: string[];
|
|
29
|
+
username?: string;
|
|
30
|
+
avatar?: string;
|
|
31
|
+
device?: string;
|
|
32
|
+
timeout?: number;
|
|
33
|
+
}
|
|
34
|
+
export interface AuthOptions {
|
|
35
|
+
tokenName?: string;
|
|
36
|
+
header?: string;
|
|
37
|
+
tokenPrefix?: string;
|
|
38
|
+
timeout?: number;
|
|
39
|
+
activityTimeout?: number;
|
|
40
|
+
allowConcurrentLogin?: boolean;
|
|
41
|
+
isShare?: boolean;
|
|
42
|
+
tokenStyle?: TokenStyle;
|
|
43
|
+
createToken?: (payload: {
|
|
44
|
+
loginId: LoginId;
|
|
45
|
+
device?: string;
|
|
46
|
+
}) => string | Promise<string>;
|
|
47
|
+
jwtSecret?: string;
|
|
48
|
+
jwtAlgorithm?: string;
|
|
49
|
+
ignore?: string[];
|
|
50
|
+
redis?: AuthRedisClient;
|
|
51
|
+
readCookie?: boolean;
|
|
52
|
+
checkMode?: AuthCheckMode;
|
|
53
|
+
}
|
|
54
|
+
export interface AuthContextStore {
|
|
55
|
+
req: import("express").Request;
|
|
56
|
+
token: string | null;
|
|
57
|
+
session: AuthSession | null;
|
|
58
|
+
}
|
|
59
|
+
export interface ResolvedAuthOptions {
|
|
60
|
+
tokenName: string;
|
|
61
|
+
header: string;
|
|
62
|
+
tokenPrefix: string;
|
|
63
|
+
timeout: number;
|
|
64
|
+
activityTimeout: number;
|
|
65
|
+
allowConcurrentLogin: boolean;
|
|
66
|
+
isShare: boolean;
|
|
67
|
+
tokenStyle: TokenStyle;
|
|
68
|
+
createToken?: AuthOptions["createToken"];
|
|
69
|
+
jwtSecret: string;
|
|
70
|
+
jwtAlgorithm: string;
|
|
71
|
+
ignore: string[];
|
|
72
|
+
redis?: AuthRedisClient;
|
|
73
|
+
readCookie: boolean;
|
|
74
|
+
checkMode: AuthCheckMode;
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/framework/Auth/types.ts"],"names":[],"mappings":"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"}
|
package/Auth/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/framework/Auth/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../../../src/framework/Exception/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAsB1B,wBAAgB,gBAAgB,IAAI,cAAc,CAuBjD;AAMD,wBAAgB,gBAAgB,CAAC,SAAS,GAAE,QAAgB,GAAG,eAAe,CAY7E"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ControllerAdvice = ControllerAdvice;
|
|
4
|
+
exports.ExceptionHandler = ExceptionHandler;
|
|
5
|
+
require("reflect-metadata");
|
|
6
|
+
const registry_1 = require("./registry");
|
|
7
|
+
const HANDLERS_KEY = Symbol.for("pangza.exception.handlers");
|
|
8
|
+
function ControllerAdvice() {
|
|
9
|
+
return (ctor) => {
|
|
10
|
+
const Ctor = ctor;
|
|
11
|
+
const pending = Reflect.getOwnMetadata(HANDLERS_KEY, ctor) ??
|
|
12
|
+
[];
|
|
13
|
+
const instance = new Ctor();
|
|
14
|
+
for (const item of pending) {
|
|
15
|
+
const method = instance[item.handlerName];
|
|
16
|
+
if (typeof method !== "function") {
|
|
17
|
+
throw new Error(`[ControllerAdvice] ${Ctor.name}.${item.handlerName} 不是函数`);
|
|
18
|
+
}
|
|
19
|
+
const bound = method.bind(instance);
|
|
20
|
+
(0, registry_1.registerExceptionHandler)({
|
|
21
|
+
errorType: item.errorType,
|
|
22
|
+
handlerName: `${Ctor.name}.${item.handlerName}`,
|
|
23
|
+
handler: bound,
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
function ExceptionHandler(errorType = Error) {
|
|
29
|
+
return (target, propertyKey) => {
|
|
30
|
+
const ctor = target.constructor;
|
|
31
|
+
const list = Reflect.getOwnMetadata(HANDLERS_KEY, ctor) ??
|
|
32
|
+
[];
|
|
33
|
+
list.push({
|
|
34
|
+
errorType,
|
|
35
|
+
handlerName: String(propertyKey),
|
|
36
|
+
});
|
|
37
|
+
Reflect.defineMetadata(HANDLERS_KEY, list, ctor);
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=decorators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../../../src/framework/Exception/decorators.ts"],"names":[],"mappings":";;AAsBA,4CAuBC;AAMD,4CAYC;AA/DD,4BAA0B;AAC1B,yCAAsD;AAGtD,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;AAkB7D,SAAgB,gBAAgB;IAC9B,OAAO,CAAC,IAAI,EAAE,EAAE;QACd,MAAM,IAAI,GAAG,IAAmC,CAAC;QACjD,MAAM,OAAO,GACV,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,IAAI,CAAkC;YAC5E,EAAE,CAAC;QACL,MAAM,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC;QAE5B,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAI,QAAoC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACvE,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;gBACjC,MAAM,IAAI,KAAK,CACb,sBAAsB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,OAAO,CAC3D,CAAC;YACJ,CAAC;YACD,MAAM,KAAK,GAAI,MAAmB,CAAC,IAAI,CAAC,QAAQ,CAAuB,CAAC;YACxE,IAAA,mCAAwB,EAAC;gBACvB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,WAAW,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE;gBAC/C,OAAO,EAAE,KAAK;aACf,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAMD,SAAgB,gBAAgB,CAAC,YAAsB,KAAK;IAC1D,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE;QAC7B,MAAM,IAAI,GAAI,MAAiB,CAAC,WAAW,CAAC;QAC5C,MAAM,IAAI,GACP,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,IAAI,CAAkC;YAC5E,EAAE,CAAC;QACL,IAAI,CAAC,IAAI,CAAC;YACR,SAAS;YACT,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC;SACjC,CAAC,CAAC;QACH,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../src/framework/Exception/handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AA6BjD,wBAAsB,eAAe,CACnC,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,IAAI,CAAC,CAoBf"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.handleException = handleException;
|
|
7
|
+
const ResponseData_1 = __importDefault(require("../utils/entity/ResponseData"));
|
|
8
|
+
const enums_1 = require("../types/enums");
|
|
9
|
+
const Auth_1 = require("../Auth");
|
|
10
|
+
const Logger_1 = require("../Logger");
|
|
11
|
+
const ORM_1 = require("../ORM");
|
|
12
|
+
const Redis_1 = require("../Redis");
|
|
13
|
+
const Validate_1 = require("../Validate");
|
|
14
|
+
const registry_1 = require("./registry");
|
|
15
|
+
const types_1 = require("./types");
|
|
16
|
+
const log = (0, Logger_1.getLogger)("Exception");
|
|
17
|
+
function isResponseDataLike(value) {
|
|
18
|
+
return (!!value &&
|
|
19
|
+
typeof value === "object" &&
|
|
20
|
+
"code" in value &&
|
|
21
|
+
"message" in value &&
|
|
22
|
+
"data" in value);
|
|
23
|
+
}
|
|
24
|
+
async function handleException(req, res, error) {
|
|
25
|
+
if (res.headersSent)
|
|
26
|
+
return;
|
|
27
|
+
const ctx = { req, res, error };
|
|
28
|
+
const matched = (0, registry_1.resolveExceptionHandler)(error);
|
|
29
|
+
if (matched) {
|
|
30
|
+
try {
|
|
31
|
+
const result = await matched.handler(error, ctx);
|
|
32
|
+
if (sendHandlerResult(res, result))
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
catch (handlerError) {
|
|
36
|
+
log.error({ err: handlerError, handler: matched.handlerName }, "自定义异常处理器抛错");
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
sendBuiltin(res, error);
|
|
40
|
+
}
|
|
41
|
+
function sendHandlerResult(res, result) {
|
|
42
|
+
if (result === null || result === undefined)
|
|
43
|
+
return false;
|
|
44
|
+
if (isResponseDataLike(result)) {
|
|
45
|
+
res.status(200).send(result);
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
if (typeof result === "object") {
|
|
49
|
+
if ("rawBody" in result && result.rawBody !== undefined) {
|
|
50
|
+
const status = result.httpStatus ?? 200;
|
|
51
|
+
res.status(status).send(result.rawBody);
|
|
52
|
+
return true;
|
|
53
|
+
}
|
|
54
|
+
const httpStatus = result.httpStatus ?? 200;
|
|
55
|
+
const body = ResponseData_1.default.error(result.message ?? "操作失败", result.data ?? null, result.code ?? enums_1.ResponseCode.ERROR);
|
|
56
|
+
res.status(httpStatus).send(body);
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
function sendBuiltin(res, error) {
|
|
62
|
+
if (error instanceof types_1.BizException) {
|
|
63
|
+
res
|
|
64
|
+
.status(error.httpStatus)
|
|
65
|
+
.send(ResponseData_1.default.error(error.message, error.data, error.code));
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
if (error instanceof Validate_1.ValidationError) {
|
|
69
|
+
res
|
|
70
|
+
.status(200)
|
|
71
|
+
.send(ResponseData_1.default.error(error.message, error.errors, error.code));
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
if (error instanceof Auth_1.AuthError) {
|
|
75
|
+
res.status(200).send(ResponseData_1.default.error(error.message, null, error.code));
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
if (error instanceof ORM_1.OrmError) {
|
|
79
|
+
res.status(200).send(ResponseData_1.default.error(error.message, null, error.code));
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
if (error instanceof Redis_1.GuardError) {
|
|
83
|
+
res.status(200).send(ResponseData_1.default.error(error.message, null, error.code));
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
if (error instanceof Redis_1.LockError) {
|
|
87
|
+
res
|
|
88
|
+
.status(200)
|
|
89
|
+
.send(ResponseData_1.default.error(error.message, null, enums_1.ResponseCode.ERROR));
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
const message = error instanceof Error ? error.message : "错误";
|
|
93
|
+
log.error({ err: error }, "unhandled exception");
|
|
94
|
+
res.status(500).send(ResponseData_1.default.error(message));
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../../src/framework/Exception/handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ExceptionHandlerFn } from "./types";
|
|
2
|
+
export { ControllerAdvice, ExceptionHandler } from "./decorators";
|
|
3
|
+
export { handleException } from "./handler";
|
|
4
|
+
export { registerExceptionHandler, clearExceptionHandlers, getExceptionHandlers, resolveExceptionHandler, } from "./registry";
|
|
5
|
+
export { BizException } from "./types";
|
|
6
|
+
export type { ExceptionContext, ExceptionHandlerFn, ExceptionHandlerResult, ExceptionHandlerMeta, } from "./types";
|
|
7
|
+
export declare function registerHandler(errorType: Function, handler: ExceptionHandlerFn): void;
|
|
8
|
+
export default function Exception(): (_req: unknown, _res: unknown, next: (err?: unknown) => void) => void;
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/framework/Exception/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAElD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,YAAY,EACV,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,SAAS,CAAC;AAQjB,wBAAgB,eAAe,CAC7B,SAAS,EAAE,QAAQ,EACnB,OAAO,EAAE,kBAAkB,GAC1B,IAAI,CAMN;AAOD,MAAM,CAAC,OAAO,UAAU,SAAS,WAEvB,OAAO,QACP,OAAO,QACP,CAAC,GAAG,CAAC,EAAE,OAAO,KAAK,IAAI,UAOhC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BizException = exports.resolveExceptionHandler = exports.getExceptionHandlers = exports.clearExceptionHandlers = exports.registerExceptionHandler = exports.handleException = exports.ExceptionHandler = exports.ControllerAdvice = void 0;
|
|
4
|
+
exports.registerHandler = registerHandler;
|
|
5
|
+
exports.default = Exception;
|
|
6
|
+
const registry_1 = require("./registry");
|
|
7
|
+
var decorators_1 = require("./decorators");
|
|
8
|
+
Object.defineProperty(exports, "ControllerAdvice", { enumerable: true, get: function () { return decorators_1.ControllerAdvice; } });
|
|
9
|
+
Object.defineProperty(exports, "ExceptionHandler", { enumerable: true, get: function () { return decorators_1.ExceptionHandler; } });
|
|
10
|
+
var handler_1 = require("./handler");
|
|
11
|
+
Object.defineProperty(exports, "handleException", { enumerable: true, get: function () { return handler_1.handleException; } });
|
|
12
|
+
var registry_2 = require("./registry");
|
|
13
|
+
Object.defineProperty(exports, "registerExceptionHandler", { enumerable: true, get: function () { return registry_2.registerExceptionHandler; } });
|
|
14
|
+
Object.defineProperty(exports, "clearExceptionHandlers", { enumerable: true, get: function () { return registry_2.clearExceptionHandlers; } });
|
|
15
|
+
Object.defineProperty(exports, "getExceptionHandlers", { enumerable: true, get: function () { return registry_2.getExceptionHandlers; } });
|
|
16
|
+
Object.defineProperty(exports, "resolveExceptionHandler", { enumerable: true, get: function () { return registry_2.resolveExceptionHandler; } });
|
|
17
|
+
var types_1 = require("./types");
|
|
18
|
+
Object.defineProperty(exports, "BizException", { enumerable: true, get: function () { return types_1.BizException; } });
|
|
19
|
+
function registerHandler(errorType, handler) {
|
|
20
|
+
(0, registry_1.registerExceptionHandler)({
|
|
21
|
+
errorType,
|
|
22
|
+
handlerName: `functional:${errorType.name || "Anonymous"}`,
|
|
23
|
+
handler,
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
function Exception() {
|
|
27
|
+
const middleware = (_req, _res, next) => next();
|
|
28
|
+
Object.defineProperty(middleware, Symbol.for("pangza.exception.module"), {
|
|
29
|
+
value: true,
|
|
30
|
+
enumerable: false,
|
|
31
|
+
});
|
|
32
|
+
return middleware;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/framework/Exception/index.ts"],"names":[],"mappings":";;;AAyBA,0CASC;AAOD,4BAWC;AApDD,yCAAsD;AAGtD,2CAAkE;AAAzD,8GAAA,gBAAgB,OAAA;AAAE,8GAAA,gBAAgB,OAAA;AAC3C,qCAA4C;AAAnC,0GAAA,eAAe,OAAA;AACxB,uCAKoB;AAJlB,oHAAA,wBAAwB,OAAA;AACxB,kHAAA,sBAAsB,OAAA;AACtB,gHAAA,oBAAoB,OAAA;AACpB,mHAAA,uBAAuB,OAAA;AAEzB,iCAAuC;AAA9B,qGAAA,YAAY,OAAA;AAcrB,SAAgB,eAAe,CAC7B,SAAmB,EACnB,OAA2B;IAE3B,IAAA,mCAAwB,EAAC;QACvB,SAAS;QACT,WAAW,EAAE,cAAc,SAAS,CAAC,IAAI,IAAI,WAAW,EAAE;QAC1D,OAAO;KACR,CAAC,CAAC;AACL,CAAC;AAOD,SAAwB,SAAS;IAC/B,MAAM,UAAU,GAAG,CACjB,IAAa,EACb,IAAa,EACb,IAA6B,EAC7B,EAAE,CAAC,IAAI,EAAE,CAAC;IACZ,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,yBAAyB,CAAC,EAAE;QACvE,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,KAAK;KAClB,CAAC,CAAC;IACH,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ExceptionHandlerMeta } from "./types";
|
|
2
|
+
export declare function registerExceptionHandler(meta: ExceptionHandlerMeta): void;
|
|
3
|
+
export declare function clearExceptionHandlers(): void;
|
|
4
|
+
export declare function getExceptionHandlers(): ExceptionHandlerMeta[];
|
|
5
|
+
export declare function resolveExceptionHandler(error: unknown): ExceptionHandlerMeta | undefined;
|
|
6
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../../src/framework/Exception/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAKpD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,oBAAoB,GAAG,IAAI,CAEzE;AAGD,wBAAgB,sBAAsB,IAAI,IAAI,CAE7C;AAGD,wBAAgB,oBAAoB,IAAI,oBAAoB,EAAE,CAE7D;AAMD,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,OAAO,GACb,oBAAoB,GAAG,SAAS,CAoClC"}
|