cnpmcore 4.0.2 → 4.1.0
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/README.md +5 -3
- package/dist/app/common/AbstractService.js +5 -9
- package/dist/app/common/CryptoUtil.js +9 -17
- package/dist/app/common/ErrorUtil.js +2 -5
- package/dist/app/common/FileUtil.js +22 -31
- package/dist/app/common/LogUtil.js +2 -5
- package/dist/app/common/PackageUtil.d.ts +1 -1
- package/dist/app/common/PackageUtil.js +27 -75
- package/dist/app/common/SyncUtil.js +2 -5
- package/dist/app/common/UserUtil.js +19 -64
- package/dist/app/common/adapter/BugVersionStore.d.ts +1 -1
- package/dist/app/common/adapter/BugVersionStore.js +6 -9
- package/dist/app/common/adapter/CacheAdapter.js +7 -10
- package/dist/app/common/adapter/NFSAdapter.js +18 -21
- package/dist/app/common/adapter/NPMRegistry.d.ts +1 -1
- package/dist/app/common/adapter/NPMRegistry.js +13 -16
- package/dist/app/common/adapter/binary/AbstractBinary.d.ts +2 -2
- package/dist/app/common/adapter/binary/AbstractBinary.js +7 -11
- package/dist/app/common/adapter/binary/ApiBinary.d.ts +1 -1
- package/dist/app/common/adapter/binary/ApiBinary.js +10 -13
- package/dist/app/common/adapter/binary/BucketBinary.d.ts +2 -2
- package/dist/app/common/adapter/binary/BucketBinary.js +14 -20
- package/dist/app/common/adapter/binary/ChromeForTestingBinary.d.ts +1 -1
- package/dist/app/common/adapter/binary/ChromeForTestingBinary.js +11 -14
- package/dist/app/common/adapter/binary/CypressBinary.d.ts +1 -1
- package/dist/app/common/adapter/binary/CypressBinary.js +9 -12
- package/dist/app/common/adapter/binary/EdgedriverBinary.d.ts +1 -1
- package/dist/app/common/adapter/binary/EdgedriverBinary.js +12 -18
- package/dist/app/common/adapter/binary/ElectronBinary.d.ts +3 -3
- package/dist/app/common/adapter/binary/ElectronBinary.js +13 -19
- package/dist/app/common/adapter/binary/GithubBinary.d.ts +2 -2
- package/dist/app/common/adapter/binary/GithubBinary.js +11 -17
- package/dist/app/common/adapter/binary/ImageminBinary.d.ts +2 -2
- package/dist/app/common/adapter/binary/ImageminBinary.js +11 -17
- package/dist/app/common/adapter/binary/NodeBinary.d.ts +2 -2
- package/dist/app/common/adapter/binary/NodeBinary.js +14 -20
- package/dist/app/common/adapter/binary/NodePreGypBinary.d.ts +2 -2
- package/dist/app/common/adapter/binary/NodePreGypBinary.js +14 -20
- package/dist/app/common/adapter/binary/NwjsBinary.d.ts +2 -2
- package/dist/app/common/adapter/binary/NwjsBinary.js +12 -18
- package/dist/app/common/adapter/binary/PlaywrightBinary.d.ts +1 -1
- package/dist/app/common/adapter/binary/PlaywrightBinary.js +13 -19
- package/dist/app/common/adapter/binary/PrismaBinary.d.ts +2 -2
- package/dist/app/common/adapter/binary/PrismaBinary.js +14 -20
- package/dist/app/common/adapter/binary/PuppeteerBinary.d.ts +1 -1
- package/dist/app/common/adapter/binary/PuppeteerBinary.js +10 -13
- package/dist/app/common/adapter/binary/SqlcipherBinary.d.ts +1 -1
- package/dist/app/common/adapter/binary/SqlcipherBinary.js +9 -12
- package/dist/app/common/adapter/changesStream/AbstractChangesStream.d.ts +2 -2
- package/dist/app/common/adapter/changesStream/AbstractChangesStream.js +7 -11
- package/dist/app/common/adapter/changesStream/CnpmcoreChangesStream.d.ts +2 -2
- package/dist/app/common/adapter/changesStream/CnpmcoreChangesStream.js +11 -14
- package/dist/app/common/adapter/changesStream/CnpmjsorgChangesStream.d.ts +2 -2
- package/dist/app/common/adapter/changesStream/CnpmjsorgChangesStream.js +11 -14
- package/dist/app/common/adapter/changesStream/NpmChangesStream.d.ts +2 -2
- package/dist/app/common/adapter/changesStream/NpmChangesStream.js +11 -14
- package/dist/app/common/aop/AsyncTimer.js +10 -13
- package/dist/app/common/constants.js +17 -20
- package/dist/app/common/dayjs.js +5 -10
- package/dist/app/common/enum/Binary.js +3 -6
- package/dist/app/common/enum/Hook.js +5 -8
- package/dist/app/common/enum/Registry.js +3 -6
- package/dist/app/common/enum/Task.js +5 -8
- package/dist/app/common/enum/User.js +5 -8
- package/dist/app/common/package.json +2 -1
- package/dist/app/common/typing.d.ts +1 -1
- package/dist/app/common/typing.js +1 -2
- package/dist/app/core/entity/Binary.d.ts +2 -2
- package/dist/app/core/entity/Binary.js +5 -9
- package/dist/app/core/entity/BugVersion.js +2 -6
- package/dist/app/core/entity/Change.d.ts +2 -2
- package/dist/app/core/entity/Change.js +5 -9
- package/dist/app/core/entity/Dist.d.ts +2 -2
- package/dist/app/core/entity/Dist.js +5 -9
- package/dist/app/core/entity/Entity.js +2 -6
- package/dist/app/core/entity/Hook.d.ts +3 -3
- package/dist/app/core/entity/Hook.js +7 -14
- package/dist/app/core/entity/HookEvent.d.ts +1 -1
- package/dist/app/core/entity/HookEvent.js +11 -15
- package/dist/app/core/entity/Package.d.ts +4 -3
- package/dist/app/core/entity/Package.js +14 -15
- package/dist/app/core/entity/PackageTag.d.ts +2 -2
- package/dist/app/core/entity/PackageTag.js +5 -9
- package/dist/app/core/entity/PackageVersion.d.ts +3 -3
- package/dist/app/core/entity/PackageVersion.js +7 -11
- package/dist/app/core/entity/PackageVersionBlock.d.ts +2 -2
- package/dist/app/core/entity/PackageVersionBlock.js +5 -9
- package/dist/app/core/entity/PackageVersionFile.d.ts +3 -3
- package/dist/app/core/entity/PackageVersionFile.js +5 -9
- package/dist/app/core/entity/PackageVersionManifest.d.ts +2 -2
- package/dist/app/core/entity/PackageVersionManifest.js +5 -9
- package/dist/app/core/entity/PaddingSemVer.js +5 -9
- package/dist/app/core/entity/ProxyCache.d.ts +3 -3
- package/dist/app/core/entity/ProxyCache.js +8 -12
- package/dist/app/core/entity/Registry.d.ts +3 -3
- package/dist/app/core/entity/Registry.js +5 -9
- package/dist/app/core/entity/Scope.d.ts +2 -2
- package/dist/app/core/entity/Scope.js +5 -9
- package/dist/app/core/entity/SqlRange.js +8 -12
- package/dist/app/core/entity/Task.d.ts +4 -4
- package/dist/app/core/entity/Task.js +46 -53
- package/dist/app/core/entity/Token.d.ts +2 -2
- package/dist/app/core/entity/Token.js +10 -18
- package/dist/app/core/entity/User.d.ts +2 -2
- package/dist/app/core/entity/User.js +7 -11
- package/dist/app/core/entity/WebauthnCredential.d.ts +2 -2
- package/dist/app/core/entity/WebauthnCredential.js +5 -9
- package/dist/app/core/event/BugVersionFixHandler.js +12 -15
- package/dist/app/core/event/CacheCleaner.js +39 -42
- package/dist/app/core/event/ChangesStream.d.ts +4 -4
- package/dist/app/core/event/ChangesStream.js +59 -62
- package/dist/app/core/event/StoreManifest.js +17 -20
- package/dist/app/core/event/SyncESPackage.d.ts +1 -1
- package/dist/app/core/event/SyncESPackage.js +22 -25
- package/dist/app/core/event/SyncPackageVersionFile.js +25 -28
- package/dist/app/core/event/index.d.ts +1 -1
- package/dist/app/core/event/index.js +13 -16
- package/dist/app/core/package.json +2 -1
- package/dist/app/core/service/BinarySyncerService.d.ts +7 -7
- package/dist/app/core/service/BinarySyncerService.js +44 -50
- package/dist/app/core/service/BugVersionService.d.ts +1 -1
- package/dist/app/core/service/BugVersionService.js +28 -34
- package/dist/app/core/service/CacheService.d.ts +2 -2
- package/dist/app/core/service/CacheService.js +15 -18
- package/dist/app/core/service/ChangesStreamService.d.ts +3 -3
- package/dist/app/core/service/ChangesStreamService.js +52 -58
- package/dist/app/core/service/CreateHookTriggerService.d.ts +2 -2
- package/dist/app/core/service/CreateHookTriggerService.js +39 -45
- package/dist/app/core/service/EventCorkerAdvice.js +7 -10
- package/dist/app/core/service/FixNoPaddingVersionService.js +14 -20
- package/dist/app/core/service/HomeService.d.ts +1 -1
- package/dist/app/core/service/HomeService.js +13 -16
- package/dist/app/core/service/HookManageService.d.ts +2 -2
- package/dist/app/core/service/HookManageService.js +20 -23
- package/dist/app/core/service/HookTriggerService.d.ts +3 -3
- package/dist/app/core/service/HookTriggerService.js +32 -35
- package/dist/app/core/service/PackageManagerService.d.ts +7 -7
- package/dist/app/core/service/PackageManagerService.js +98 -104
- package/dist/app/core/service/PackageSearchService.d.ts +4 -4
- package/dist/app/core/service/PackageSearchService.js +31 -37
- package/dist/app/core/service/PackageSyncerService.d.ts +6 -6
- package/dist/app/core/service/PackageSyncerService.js +92 -99
- package/dist/app/core/service/PackageVersionFileService.d.ts +4 -4
- package/dist/app/core/service/PackageVersionFileService.js +64 -69
- package/dist/app/core/service/PackageVersionService.d.ts +4 -1
- package/dist/app/core/service/PackageVersionService.js +41 -59
- package/dist/app/core/service/ProxyCacheService.d.ts +5 -6
- package/dist/app/core/service/ProxyCacheService.js +62 -69
- package/dist/app/core/service/RegistryManagerService.d.ts +3 -3
- package/dist/app/core/service/RegistryManagerService.js +33 -36
- package/dist/app/core/service/ScopeManagerService.d.ts +3 -3
- package/dist/app/core/service/ScopeManagerService.js +13 -16
- package/dist/app/core/service/TaskService.d.ts +7 -7
- package/dist/app/core/service/TaskService.js +28 -29
- package/dist/app/core/service/TokenService.d.ts +4 -4
- package/dist/app/core/service/TokenService.js +30 -36
- package/dist/app/core/service/UserService.d.ts +6 -6
- package/dist/app/core/service/UserService.js +43 -49
- package/dist/app/core/util/EntityUtil.d.ts +1 -1
- package/dist/app/core/util/EntityUtil.js +7 -13
- package/dist/app/infra/AuthAdapter.d.ts +1 -1
- package/dist/app/infra/AuthAdapter.js +12 -15
- package/dist/app/infra/NFSClientAdapter.d.ts +1 -1
- package/dist/app/infra/NFSClientAdapter.js +11 -17
- package/dist/app/infra/QueueAdapter.d.ts +1 -1
- package/dist/app/infra/QueueAdapter.js +9 -12
- package/dist/app/infra/SearchAdapter.d.ts +1 -1
- package/dist/app/infra/SearchAdapter.js +10 -13
- package/dist/app/infra/package.json +2 -1
- package/dist/app/port/UserRoleManager.d.ts +3 -3
- package/dist/app/port/UserRoleManager.js +30 -33
- package/dist/app/port/config.d.ts +3 -3
- package/dist/app/port/config.js +2 -6
- package/dist/app/port/controller/AbstractController.d.ts +8 -8
- package/dist/app/port/controller/AbstractController.js +33 -37
- package/dist/app/port/controller/AccessController.d.ts +1 -1
- package/dist/app/port/controller/AccessController.js +22 -25
- package/dist/app/port/controller/BinarySyncController.d.ts +2 -2
- package/dist/app/port/controller/BinarySyncController.js +42 -48
- package/dist/app/port/controller/ChangesStreamController.d.ts +1 -1
- package/dist/app/port/controller/ChangesStreamController.js +17 -20
- package/dist/app/port/controller/DownloadController.d.ts +1 -1
- package/dist/app/port/controller/DownloadController.js +30 -36
- package/dist/app/port/controller/HomeController.d.ts +2 -2
- package/dist/app/port/controller/HomeController.js +29 -31
- package/dist/app/port/controller/HookController.d.ts +5 -5
- package/dist/app/port/controller/HookController.js +43 -46
- package/dist/app/port/controller/PackageBlockController.d.ts +2 -2
- package/dist/app/port/controller/PackageBlockController.js +37 -40
- package/dist/app/port/controller/PackageSyncController.d.ts +5 -5
- package/dist/app/port/controller/PackageSyncController.js +64 -67
- package/dist/app/port/controller/PackageTagController.d.ts +1 -1
- package/dist/app/port/controller/PackageTagController.js +33 -36
- package/dist/app/port/controller/PackageVersionFileController.d.ts +1 -1
- package/dist/app/port/controller/PackageVersionFileController.js +56 -59
- package/dist/app/port/controller/ProxyCacheController.d.ts +7 -7
- package/dist/app/port/controller/ProxyCacheController.js +56 -58
- package/dist/app/port/controller/RegistryController.d.ts +7 -7
- package/dist/app/port/controller/RegistryController.js +57 -60
- package/dist/app/port/controller/ScopeController.d.ts +3 -3
- package/dist/app/port/controller/ScopeController.js +28 -31
- package/dist/app/port/controller/TokenController.d.ts +17 -17
- package/dist/app/port/controller/TokenController.js +52 -55
- package/dist/app/port/controller/UserController.d.ts +8 -8
- package/dist/app/port/controller/UserController.js +52 -55
- package/dist/app/port/controller/admin/PaddingVersionController.d.ts +1 -1
- package/dist/app/port/controller/admin/PaddingVersionController.js +14 -17
- package/dist/app/port/controller/convertor/HookConvertor.d.ts +4 -4
- package/dist/app/port/controller/convertor/HookConvertor.js +2 -6
- package/dist/app/port/controller/package/DownloadPackageVersionTar.d.ts +6 -6
- package/dist/app/port/controller/package/DownloadPackageVersionTar.js +69 -60
- package/dist/app/port/controller/package/RemovePackageVersionController.d.ts +1 -1
- package/dist/app/port/controller/package/RemovePackageVersionController.js +26 -29
- package/dist/app/port/controller/package/SavePackageVersionController.d.ts +9 -9
- package/dist/app/port/controller/package/SavePackageVersionController.js +57 -96
- package/dist/app/port/controller/package/SearchPackageController.d.ts +4 -4
- package/dist/app/port/controller/package/SearchPackageController.js +31 -34
- package/dist/app/port/controller/package/ShowPackageController.d.ts +1 -1
- package/dist/app/port/controller/package/ShowPackageController.js +32 -35
- package/dist/app/port/controller/package/ShowPackageVersionController.d.ts +2 -2
- package/dist/app/port/controller/package/ShowPackageVersionController.js +33 -36
- package/dist/app/port/controller/package/UpdatePackageController.d.ts +6 -6
- package/dist/app/port/controller/package/UpdatePackageController.js +25 -28
- package/dist/app/port/middleware/AdminAccess.js +6 -9
- package/dist/app/port/middleware/AlwaysAuth.js +4 -7
- package/dist/app/port/middleware/ErrorHandler.js +4 -7
- package/dist/app/port/middleware/Tracing.js +2 -5
- package/dist/app/port/middleware/index.js +10 -13
- package/dist/app/port/package.json +2 -1
- package/dist/app/port/schedule/ChangesStreamWorker.js +12 -15
- package/dist/app/port/schedule/CheckProxyCacheUpdateWorker.js +19 -21
- package/dist/app/port/schedule/CheckRecentlyUpdatedPackages.js +20 -23
- package/dist/app/port/schedule/CleanTempDir.js +23 -30
- package/dist/app/port/schedule/CreateSyncBinaryTask.js +13 -19
- package/dist/app/port/schedule/CreateTriggerHookWorker.js +18 -21
- package/dist/app/port/schedule/SavePackageVersionDownloadCounter.js +10 -13
- package/dist/app/port/schedule/SyncBinaryWorker.js +14 -17
- package/dist/app/port/schedule/SyncPackageWorker.js +14 -17
- package/dist/app/port/schedule/SyncProxyCacheWorker.js +14 -17
- package/dist/app/port/schedule/TaskTimeoutHandler.js +14 -17
- package/dist/app/port/schedule/TriggerHookWorker.js +18 -21
- package/dist/app/port/schedule/UpdateTotalData.js +32 -38
- package/dist/app/port/typebox.d.ts +73 -73
- package/dist/app/port/typebox.js +83 -90
- package/dist/app/port/webauth/WebauthController.d.ts +6 -6
- package/dist/app/port/webauth/WebauthController.js +91 -91
- package/dist/app/repository/AbstractRepository.js +4 -8
- package/dist/app/repository/BinaryRepository.d.ts +2 -2
- package/dist/app/repository/BinaryRepository.js +15 -18
- package/dist/app/repository/ChangeRepository.d.ts +3 -3
- package/dist/app/repository/ChangeRepository.js +11 -14
- package/dist/app/repository/DistRepository.d.ts +2 -2
- package/dist/app/repository/DistRepository.js +12 -15
- package/dist/app/repository/HookRepository.d.ts +2 -2
- package/dist/app/repository/HookRepository.js +14 -17
- package/dist/app/repository/PackageRepository.d.ts +8 -8
- package/dist/app/repository/PackageRepository.js +59 -62
- package/dist/app/repository/PackageVersionBlockRepository.d.ts +3 -3
- package/dist/app/repository/PackageVersionBlockRepository.js +14 -17
- package/dist/app/repository/PackageVersionDownloadRepository.d.ts +2 -2
- package/dist/app/repository/PackageVersionDownloadRepository.js +9 -12
- package/dist/app/repository/PackageVersionFileRepository.d.ts +2 -2
- package/dist/app/repository/PackageVersionFileRepository.js +19 -22
- package/dist/app/repository/PackageVersionRepository.d.ts +3 -3
- package/dist/app/repository/PackageVersionRepository.js +12 -15
- package/dist/app/repository/ProxyCacheRepository.d.ts +5 -5
- package/dist/app/repository/ProxyCacheRepository.js +16 -19
- package/dist/app/repository/RegistryRepository.d.ts +4 -4
- package/dist/app/repository/RegistryRepository.js +19 -22
- package/dist/app/repository/ScopeRepository.d.ts +4 -4
- package/dist/app/repository/ScopeRepository.js +19 -22
- package/dist/app/repository/SearchRepository.d.ts +1 -1
- package/dist/app/repository/SearchRepository.js +7 -10
- package/dist/app/repository/TaskRepository.d.ts +8 -8
- package/dist/app/repository/TaskRepository.js +31 -34
- package/dist/app/repository/UserRepository.d.ts +4 -4
- package/dist/app/repository/UserRepository.js +38 -41
- package/dist/app/repository/model/Binary.d.ts +1 -1
- package/dist/app/repository/model/Binary.js +17 -20
- package/dist/app/repository/model/Change.d.ts +1 -1
- package/dist/app/repository/model/Change.js +14 -17
- package/dist/app/repository/model/Dist.d.ts +1 -1
- package/dist/app/repository/model/Dist.js +16 -19
- package/dist/app/repository/model/HistoryTask.d.ts +2 -2
- package/dist/app/repository/model/HistoryTask.js +22 -25
- package/dist/app/repository/model/Hook.d.ts +2 -2
- package/dist/app/repository/model/Hook.js +19 -22
- package/dist/app/repository/model/Maintainer.d.ts +1 -1
- package/dist/app/repository/model/Maintainer.js +12 -15
- package/dist/app/repository/model/Package.d.ts +1 -1
- package/dist/app/repository/model/Package.js +21 -24
- package/dist/app/repository/model/PackageDep.d.ts +1 -1
- package/dist/app/repository/model/PackageDep.js +15 -18
- package/dist/app/repository/model/PackageTag.d.ts +1 -1
- package/dist/app/repository/model/PackageTag.js +14 -17
- package/dist/app/repository/model/PackageVersion.d.ts +1 -1
- package/dist/app/repository/model/PackageVersion.js +27 -30
- package/dist/app/repository/model/PackageVersionBlock.d.ts +1 -1
- package/dist/app/repository/model/PackageVersionBlock.js +14 -17
- package/dist/app/repository/model/PackageVersionDownload.d.ts +1 -1
- package/dist/app/repository/model/PackageVersionDownload.js +44 -47
- package/dist/app/repository/model/PackageVersionFile.d.ts +1 -1
- package/dist/app/repository/model/PackageVersionFile.js +19 -22
- package/dist/app/repository/model/PackageVersionManifest.d.ts +1 -1
- package/dist/app/repository/model/PackageVersionManifest.js +14 -17
- package/dist/app/repository/model/ProxyCache.d.ts +2 -2
- package/dist/app/repository/model/ProxyCache.js +15 -18
- package/dist/app/repository/model/Registry.d.ts +2 -2
- package/dist/app/repository/model/Registry.js +18 -21
- package/dist/app/repository/model/Scope.d.ts +1 -1
- package/dist/app/repository/model/Scope.js +13 -16
- package/dist/app/repository/model/Task.d.ts +2 -2
- package/dist/app/repository/model/Task.js +23 -26
- package/dist/app/repository/model/Token.d.ts +1 -1
- package/dist/app/repository/model/Token.js +23 -26
- package/dist/app/repository/model/TokenPackage.d.ts +1 -1
- package/dist/app/repository/model/TokenPackage.js +12 -15
- package/dist/app/repository/model/User.d.ts +1 -1
- package/dist/app/repository/model/User.js +18 -21
- package/dist/app/repository/model/WebauthnCredential.d.ts +1 -1
- package/dist/app/repository/model/WebauthnCredential.js +15 -18
- package/dist/app/repository/package.json +1 -3
- package/dist/app/repository/util/EntityProperty.js +6 -9
- package/dist/app/repository/util/ErrorUtil.js +2 -5
- package/dist/app/repository/util/ModelConvertor.d.ts +5 -5
- package/dist/app/repository/util/ModelConvertor.js +17 -24
- package/dist/app/repository/util/ModelConvertorUtil.js +5 -9
- package/dist/app/repository/util/leoric.d.ts +4 -0
- package/dist/app/repository/util/leoric.js +4 -0
- package/dist/app.d.ts +3 -3
- package/dist/app.js +9 -15
- package/dist/config/binaries.d.ts +8 -1
- package/dist/config/binaries.js +99 -94
- package/dist/config/config.default.d.ts +1 -1
- package/dist/config/config.default.js +69 -74
- package/dist/config/config.unittest.d.ts +1 -2
- package/dist/config/config.unittest.js +11 -16
- package/dist/config/database.js +20 -23
- package/dist/config/plugin.js +3 -5
- package/package.json +17 -16
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
2
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
3
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -8,26 +7,24 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
8
7
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
8
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
9
|
};
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
const Task_2 = require("../entity/Task");
|
|
19
|
-
let TaskService = class TaskService extends AbstractService_1.AbstractService {
|
|
10
|
+
import { AccessLevel, SingletonProto, Inject, } from '@eggjs/tegg';
|
|
11
|
+
import { NFSAdapter } from '../../common/adapter/NFSAdapter.js';
|
|
12
|
+
import { TaskState, TaskType } from '../../common/enum/Task.js';
|
|
13
|
+
import { AbstractService } from '../../common/AbstractService.js';
|
|
14
|
+
import { TaskRepository } from '../../repository/TaskRepository.js';
|
|
15
|
+
import { Task } from '../entity/Task.js';
|
|
16
|
+
let TaskService = class TaskService extends AbstractService {
|
|
20
17
|
async getTaskQueueLength(taskType) {
|
|
21
18
|
return await this.queueAdapter.length(taskType);
|
|
22
19
|
}
|
|
23
20
|
async createTask(task, addTaskQueueOnExists) {
|
|
24
21
|
const existsTask = await this.taskRepository.findTaskByTargetName(task.targetName, task.type);
|
|
25
22
|
// 只在包同步场景下做任务合并,其余场景通过 bizId 来进行任务幂等
|
|
26
|
-
if (existsTask &&
|
|
23
|
+
if (existsTask && Task.needMergeWhenWaiting(task.type)) {
|
|
27
24
|
// 在包同步场景,如果任务还未被触发,就不继续重复创建
|
|
28
25
|
// 如果任务正在执行,可能任务状态已更新,这种情况需要继续创建
|
|
29
|
-
if (existsTask.state ===
|
|
30
|
-
if (task.type ===
|
|
26
|
+
if (existsTask.state === TaskState.Waiting) {
|
|
27
|
+
if (task.type === TaskType.SyncPackage) {
|
|
31
28
|
// 如果是specificVersions的任务则可能可以和存量任务进行合并
|
|
32
29
|
const specificVersions = task.data?.specificVersions;
|
|
33
30
|
const existsTaskSpecificVersions = existsTask.data?.specificVersions;
|
|
@@ -65,7 +62,7 @@ let TaskService = class TaskService extends AbstractService_1.AbstractService {
|
|
|
65
62
|
if (appendLog) {
|
|
66
63
|
await this.appendLogToNFS(task, appendLog);
|
|
67
64
|
}
|
|
68
|
-
task.state =
|
|
65
|
+
task.state = TaskState.Waiting;
|
|
69
66
|
await this.taskRepository.saveTask(task);
|
|
70
67
|
await this.queueAdapter.push(task.type, task.taskId);
|
|
71
68
|
const queueLength = await this.getTaskQueueLength(task.type);
|
|
@@ -87,7 +84,7 @@ let TaskService = class TaskService extends AbstractService_1.AbstractService {
|
|
|
87
84
|
task = await this.taskRepository.findTask(taskId);
|
|
88
85
|
// 任务已删除或任务已执行
|
|
89
86
|
// 继续取下一个任务
|
|
90
|
-
if (task === null || task?.state !==
|
|
87
|
+
if (task === null || task?.state !== TaskState.Waiting) {
|
|
91
88
|
taskId = await this.queueAdapter.pop(taskType);
|
|
92
89
|
continue;
|
|
93
90
|
}
|
|
@@ -103,12 +100,12 @@ let TaskService = class TaskService extends AbstractService_1.AbstractService {
|
|
|
103
100
|
}
|
|
104
101
|
async retryExecuteTimeoutTasks() {
|
|
105
102
|
// try processing timeout tasks in 10 mins
|
|
106
|
-
const tasks = await this.taskRepository.findTimeoutTasks(
|
|
103
|
+
const tasks = await this.taskRepository.findTimeoutTasks(TaskState.Processing, 60000 * 10);
|
|
107
104
|
for (const task of tasks) {
|
|
108
105
|
try {
|
|
109
106
|
// ignore ChangesStream task, it won't timeout
|
|
110
|
-
if (task.attempts >= 3 && task.type !==
|
|
111
|
-
await this.finishTask(task,
|
|
107
|
+
if (task.attempts >= 3 && task.type !== TaskType.ChangesStream) {
|
|
108
|
+
await this.finishTask(task, TaskState.Timeout);
|
|
112
109
|
this.logger.warn('[TaskService.retryExecuteTimeoutTasks:timeout] taskType: %s, targetName: %s, taskId: %s, attempts %s set to fail', task.type, task.targetName, task.taskId, task.attempts);
|
|
113
110
|
continue;
|
|
114
111
|
}
|
|
@@ -121,10 +118,11 @@ let TaskService = class TaskService extends AbstractService_1.AbstractService {
|
|
|
121
118
|
}
|
|
122
119
|
catch (e) {
|
|
123
120
|
this.logger.error('[TaskService.retryExecuteTimeoutTasks:error] processing task, taskType: %s, targetName: %s, taskId: %s, attempts %s will retry again', task.type, task.targetName, task.taskId, task.attempts);
|
|
121
|
+
this.logger.error(e);
|
|
124
122
|
}
|
|
125
123
|
}
|
|
126
124
|
// try waiting timeout tasks in 30 mins
|
|
127
|
-
const waitingTasks = await this.taskRepository.findTimeoutTasks(
|
|
125
|
+
const waitingTasks = await this.taskRepository.findTimeoutTasks(TaskState.Waiting, 60000 * 30);
|
|
128
126
|
for (const task of waitingTasks) {
|
|
129
127
|
try {
|
|
130
128
|
await this.retryTask(task);
|
|
@@ -132,6 +130,7 @@ let TaskService = class TaskService extends AbstractService_1.AbstractService {
|
|
|
132
130
|
}
|
|
133
131
|
catch (e) {
|
|
134
132
|
this.logger.error('[TaskService.retryExecuteTimeoutTasks:error] waiting task, taskType: %s, targetName: %s, taskId: %s, attempts %s will retry again', task.type, task.targetName, task.taskId, task.attempts);
|
|
133
|
+
this.logger.error(e);
|
|
135
134
|
}
|
|
136
135
|
}
|
|
137
136
|
return {
|
|
@@ -171,22 +170,22 @@ let TaskService = class TaskService extends AbstractService_1.AbstractService {
|
|
|
171
170
|
}
|
|
172
171
|
}
|
|
173
172
|
};
|
|
174
|
-
exports.TaskService = TaskService;
|
|
175
173
|
__decorate([
|
|
176
|
-
|
|
177
|
-
__metadata("design:type",
|
|
174
|
+
Inject(),
|
|
175
|
+
__metadata("design:type", TaskRepository)
|
|
178
176
|
], TaskService.prototype, "taskRepository", void 0);
|
|
179
177
|
__decorate([
|
|
180
|
-
|
|
181
|
-
__metadata("design:type",
|
|
178
|
+
Inject(),
|
|
179
|
+
__metadata("design:type", NFSAdapter)
|
|
182
180
|
], TaskService.prototype, "nfsAdapter", void 0);
|
|
183
181
|
__decorate([
|
|
184
|
-
|
|
182
|
+
Inject(),
|
|
185
183
|
__metadata("design:type", Object)
|
|
186
184
|
], TaskService.prototype, "queueAdapter", void 0);
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
accessLevel:
|
|
185
|
+
TaskService = __decorate([
|
|
186
|
+
SingletonProto({
|
|
187
|
+
accessLevel: AccessLevel.PUBLIC,
|
|
190
188
|
})
|
|
191
189
|
], TaskService);
|
|
192
|
-
|
|
190
|
+
export { TaskService };
|
|
191
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGFza1NlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9hcHAvY29yZS9zZXJ2aWNlL1Rhc2tTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sRUFDTCxXQUFXLEVBQ1gsY0FBYyxFQUNkLE1BQU0sR0FDUCxNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDaEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxJQUFJLEVBQTZCLE1BQU0sbUJBQW1CLENBQUM7QUFNN0QsSUFBTSxXQUFXLEdBQWpCLE1BQU0sV0FBWSxTQUFRLGVBQWU7SUFRdkMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLFFBQWtCO1FBQ2hELE9BQU8sTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRU0sS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFVLEVBQUUsb0JBQTZCO1FBQy9ELE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUU5RixxQ0FBcUM7UUFDckMsSUFBSSxVQUFVLElBQUksSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3ZELDRCQUE0QjtZQUM1QixnQ0FBZ0M7WUFDaEMsSUFBSSxVQUFVLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDM0MsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztvQkFDdkMsdUNBQXVDO29CQUN2QyxNQUFNLGdCQUFnQixHQUFJLElBQXdDLENBQUMsSUFBSSxFQUFFLGdCQUFnQixDQUFDO29CQUMxRixNQUFNLDBCQUEwQixHQUFJLFVBQThDLENBQUMsSUFBSSxFQUFFLGdCQUFnQixDQUFDO29CQUMxRyxJQUFJLDBCQUEwQixFQUFFLENBQUM7d0JBQy9CLElBQUksZ0JBQWdCLEVBQUUsQ0FBQzs0QkFDckIsb0NBQW9DOzRCQUNwQyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsbUNBQW1DLENBQUMsVUFBVSxFQUFFLGdCQUFnQixDQUFDLENBQUM7d0JBQzlGLENBQUM7NkJBQU0sQ0FBQzs0QkFDTixxQ0FBcUM7NEJBQ3JDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQ0FBbUMsQ0FBQyxVQUFVLENBQUMsQ0FBQzt3QkFDNUUsQ0FBQztvQkFDSCxDQUFDO29CQUNELHdCQUF3QjtnQkFDMUIsQ0FBQztnQkFDRCxXQUFXO2dCQUNYLElBQUksb0JBQW9CLEVBQUUsQ0FBQztvQkFDekIsTUFBTSxXQUFXLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUM3RCxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO3dCQUM5RCxrQ0FBa0M7d0JBQ2xDLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQVMsSUFBSSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7d0JBQ25FLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLG1HQUFtRyxFQUNsSCxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztvQkFDMUQsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztZQUNELE9BQU8sVUFBVSxDQUFDO1FBQ3BCLENBQUM7UUFDRCxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQVMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0QsTUFBTSxXQUFXLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHVGQUF1RixFQUN0RyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztRQUN4RCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQVUsRUFBRSxTQUFrQjtRQUNuRCxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ2QsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztRQUM3QyxDQUFDO1FBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDO1FBQy9CLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekMsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBUyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3RCxNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsdUZBQXVGLEVBQ3RHLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFTSxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQWM7UUFDbEMsT0FBTyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFTSxLQUFLLENBQUMsU0FBUyxDQUFDLFVBQXlCO1FBQzlDLE9BQU8sTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRU0sS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFVO1FBQ2pDLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRU0sS0FBSyxDQUFDLGVBQWUsQ0FBQyxRQUFrQjtRQUM3QyxJQUFJLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFTLFFBQVEsQ0FBQyxDQUFDO1FBQzNELElBQUksSUFBaUIsQ0FBQztRQUV0QixPQUFPLE1BQU0sRUFBRSxDQUFDO1lBQ2QsSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFbEQsY0FBYztZQUNkLFdBQVc7WUFDWCxJQUFJLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxFQUFFLEtBQUssS0FBSyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ3ZELE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFTLFFBQVEsQ0FBQyxDQUFDO2dCQUN2RCxTQUFTO1lBQ1gsQ0FBQztZQUVELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMvQixNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQ2xGLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDakIsTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQVMsUUFBUSxDQUFDLENBQUM7Z0JBQ3ZELFNBQVM7WUFDWCxDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sS0FBSyxDQUFDLHdCQUF3QjtRQUNuQywwQ0FBMEM7UUFDMUMsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQzNGLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDO2dCQUNILDhDQUE4QztnQkFDOUMsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxhQUFhLEVBQUUsQ0FBQztvQkFDL0QsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQy9DLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNkLGtIQUFrSCxFQUNsSCxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQzFELFNBQVM7Z0JBQ1gsQ0FBQztnQkFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUM7b0JBQ3ZCLGdCQUFnQjtvQkFDaEIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUN0QixDQUFDO2dCQUNELE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ2QscUhBQXFILEVBQ3JILElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM1RCxDQUFDO1lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDWCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDZixzSUFBc0ksRUFDdEksSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUMxRCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2QixDQUFDO1FBQ0gsQ0FBQztRQUNELHVDQUF1QztRQUN2QyxNQUFNLFlBQVksR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDL0YsS0FBSyxNQUFNLElBQUksSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUM7Z0JBQ0gsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDZCwrR0FBK0csRUFDL0csSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM3QyxDQUFDO1lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDWCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDZixtSUFBbUksRUFDbkksSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUMxRCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2QixDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU87WUFDTCxVQUFVLEVBQUUsS0FBSyxDQUFDLE1BQU07WUFDeEIsT0FBTyxFQUFFLFlBQVksQ0FBQyxNQUFNO1NBQzdCLENBQUM7SUFDSixDQUFDO0lBRU0sS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFVLEVBQUUsU0FBaUI7UUFDdEQsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztRQUMzQyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFTSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQVUsRUFBRSxTQUFvQixFQUFFLFNBQWtCO1FBQzFFLElBQUksU0FBUyxFQUFFLENBQUM7WUFDZCxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFDRCxJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQztRQUN2QixNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVPLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBVSxFQUFFLFNBQWlCO1FBQ3hELElBQUksQ0FBQztZQUNILE1BQU0sWUFBWSxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQ3BELElBQUksQ0FBQyxPQUFPLEVBQ1osTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEVBQzdCLElBQUksQ0FBQyxnQkFBZ0IsRUFDckI7Z0JBQ0UsY0FBYyxFQUFFLDJCQUEyQjthQUM1QyxDQUNGLENBQUM7WUFDRixJQUFJLFlBQVksRUFBRSxDQUFDO2dCQUNqQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsWUFBWSxDQUFDO1lBQ3ZDLENBQUM7UUFDSCxDQUFDO1FBQUMsT0FBTyxHQUFRLEVBQUUsQ0FBQztZQUNsQixxRkFBcUY7WUFDckYsMkRBQTJEO1lBQzNELElBQUksR0FBRyxDQUFDLElBQUksS0FBSywwQkFBMEIsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLHFCQUFxQixFQUFFLENBQUM7Z0JBQ2xGLDJCQUEyQjtnQkFDM0IsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FDL0IsSUFBSSxDQUFDLE9BQU8sRUFDWixNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsQ0FDOUIsQ0FBQztnQkFDRixPQUFPO1lBQ1QsQ0FBQztZQUNELE1BQU0sR0FBRyxDQUFDO1FBQ1osQ0FBQztJQUNILENBQUM7Q0FDRixDQUFBO0FBak1rQjtJQURoQixNQUFNLEVBQUU7OEJBQ3dCLGNBQWM7bURBQUM7QUFFL0I7SUFEaEIsTUFBTSxFQUFFOzhCQUNvQixVQUFVOytDQUFDO0FBRXZCO0lBRGhCLE1BQU0sRUFBRTs7aURBQ21DO0FBTmpDLFdBQVc7SUFIdkIsY0FBYyxDQUFDO1FBQ2QsV0FBVyxFQUFFLFdBQVcsQ0FBQyxNQUFNO0tBQ2hDLENBQUM7R0FDVyxXQUFXLENBbU12QiJ9
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { AbstractService } from '../../common/AbstractService';
|
|
2
|
-
import { Token } from '../entity/Token';
|
|
3
|
-
import { Package as PackageEntity } from '../entity/Package';
|
|
1
|
+
import { AbstractService } from '../../common/AbstractService.js';
|
|
2
|
+
import { Token } from '../entity/Token.js';
|
|
3
|
+
import { Package as PackageEntity } from '../entity/Package.js';
|
|
4
4
|
export declare class TokenService extends AbstractService {
|
|
5
5
|
private readonly TokenPackage;
|
|
6
6
|
private readonly Package;
|
|
@@ -10,6 +10,6 @@ export declare class TokenService extends AbstractService {
|
|
|
10
10
|
checkGranularTokenAccess(token: Token, fullname: string): Promise<boolean>;
|
|
11
11
|
getUserAndToken(authorization: string): Promise<{
|
|
12
12
|
token: Token;
|
|
13
|
-
user: import("../entity/User").User;
|
|
13
|
+
user: import("../entity/User.js").User;
|
|
14
14
|
} | null>;
|
|
15
15
|
}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
2
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
3
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -8,46 +7,41 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
8
7
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
8
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
9
|
};
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
};
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
const egg_errors_1 = require("egg-errors");
|
|
24
|
-
const PackageUtil_1 = require("../../../app/common/PackageUtil");
|
|
25
|
-
const UserUtil_1 = require("../../../app/common/UserUtil");
|
|
26
|
-
const UserRepository_1 = require("../../../app/repository/UserRepository");
|
|
27
|
-
let TokenService = class TokenService extends AbstractService_1.AbstractService {
|
|
10
|
+
import dayjs from 'dayjs';
|
|
11
|
+
import { AccessLevel, SingletonProto, Inject, } from '@eggjs/tegg';
|
|
12
|
+
import { isEmpty } from 'lodash-es';
|
|
13
|
+
import { ForbiddenError, UnauthorizedError } from 'egg-errors';
|
|
14
|
+
import { AbstractService } from '../../common/AbstractService.js';
|
|
15
|
+
import { isGranularToken } from '../entity/Token.js';
|
|
16
|
+
import { ModelConvertor } from '../../../app/repository/util/ModelConvertor.js';
|
|
17
|
+
import { Package as PackageEntity } from '../entity/Package.js';
|
|
18
|
+
import { getScopeAndName } from '../../../app/common/PackageUtil.js';
|
|
19
|
+
import { sha512 } from '../../../app/common/UserUtil.js';
|
|
20
|
+
import { UserRepository } from '../../../app/repository/UserRepository.js';
|
|
21
|
+
let TokenService = class TokenService extends AbstractService {
|
|
28
22
|
async listTokenPackages(token) {
|
|
29
|
-
if (
|
|
23
|
+
if (isGranularToken(token)) {
|
|
30
24
|
const models = await this.TokenPackage.find({ tokenId: token.tokenId });
|
|
31
25
|
const packages = await this.Package.find({ packageId: models.map(m => m.packageId) });
|
|
32
|
-
return packages.map(pkg =>
|
|
26
|
+
return packages.map(pkg => ModelConvertor.convertModelToEntity(pkg, PackageEntity));
|
|
33
27
|
}
|
|
34
28
|
return null;
|
|
35
29
|
}
|
|
36
30
|
async checkTokenStatus(token) {
|
|
37
31
|
// check for expires
|
|
38
|
-
if (
|
|
39
|
-
throw new
|
|
32
|
+
if (isGranularToken(token) && dayjs(token.expiredAt).isBefore(new Date())) {
|
|
33
|
+
throw new UnauthorizedError('Token expired');
|
|
40
34
|
}
|
|
41
35
|
token.lastUsedAt = new Date();
|
|
42
36
|
this.userRepository.saveToken(token);
|
|
43
37
|
}
|
|
44
38
|
async checkGranularTokenAccess(token, fullname) {
|
|
45
39
|
// check for scope whitelist
|
|
46
|
-
const [scope, name] =
|
|
40
|
+
const [scope, name] = getScopeAndName(fullname);
|
|
47
41
|
// check for packages whitelist
|
|
48
42
|
const allowedPackages = await this.listTokenPackages(token);
|
|
49
43
|
// check for scope & packages access
|
|
50
|
-
if (
|
|
44
|
+
if (isEmpty(allowedPackages) && isEmpty(token.allowedScopes)) {
|
|
51
45
|
return true;
|
|
52
46
|
}
|
|
53
47
|
const existPkgConfig = allowedPackages?.find(pkg => pkg.scope === scope && pkg.name === name);
|
|
@@ -58,36 +52,36 @@ let TokenService = class TokenService extends AbstractService_1.AbstractService
|
|
|
58
52
|
if (existScopeConfig) {
|
|
59
53
|
return true;
|
|
60
54
|
}
|
|
61
|
-
throw new
|
|
55
|
+
throw new ForbiddenError(`can't access package "${fullname}"`);
|
|
62
56
|
}
|
|
63
57
|
async getUserAndToken(authorization) {
|
|
64
58
|
if (!authorization)
|
|
65
59
|
return null;
|
|
66
|
-
const matchs = /^Bearer ([\w
|
|
60
|
+
const matchs = /^Bearer ([\w.]+?)$/.exec(authorization);
|
|
67
61
|
if (!matchs)
|
|
68
62
|
return null;
|
|
69
63
|
const tokenValue = matchs[1];
|
|
70
|
-
const tokenKey =
|
|
64
|
+
const tokenKey = sha512(tokenValue);
|
|
71
65
|
const authorizedUserAndToken = await this.userRepository.findUserAndTokenByTokenKey(tokenKey);
|
|
72
66
|
return authorizedUserAndToken;
|
|
73
67
|
}
|
|
74
68
|
};
|
|
75
|
-
exports.TokenService = TokenService;
|
|
76
69
|
__decorate([
|
|
77
|
-
|
|
70
|
+
Inject(),
|
|
78
71
|
__metadata("design:type", Object)
|
|
79
72
|
], TokenService.prototype, "TokenPackage", void 0);
|
|
80
73
|
__decorate([
|
|
81
|
-
|
|
74
|
+
Inject(),
|
|
82
75
|
__metadata("design:type", Object)
|
|
83
76
|
], TokenService.prototype, "Package", void 0);
|
|
84
77
|
__decorate([
|
|
85
|
-
|
|
86
|
-
__metadata("design:type",
|
|
78
|
+
Inject(),
|
|
79
|
+
__metadata("design:type", UserRepository)
|
|
87
80
|
], TokenService.prototype, "userRepository", void 0);
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
accessLevel:
|
|
81
|
+
TokenService = __decorate([
|
|
82
|
+
SingletonProto({
|
|
83
|
+
accessLevel: AccessLevel.PUBLIC,
|
|
91
84
|
})
|
|
92
85
|
], TokenService);
|
|
93
|
-
|
|
86
|
+
export { TokenService };
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVG9rZW5TZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vYXBwL2NvcmUvc2VydmljZS9Ub2tlblNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFDTCxXQUFXLEVBQ1gsY0FBYyxFQUNkLE1BQU0sR0FDUCxNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2xFLE9BQU8sRUFBUyxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUc1RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDaEYsT0FBTyxFQUFFLE9BQU8sSUFBSSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDckUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUtwRSxJQUFNLFlBQVksR0FBbEIsTUFBTSxZQUFhLFNBQVEsZUFBZTtJQVF4QyxLQUFLLENBQUMsaUJBQWlCLENBQUMsS0FBWTtRQUN6QyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzNCLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDeEUsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxD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
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { User as UserEntity } from '../entity/User';
|
|
2
|
-
import { Token as TokenEntity, TokenType } from '../entity/Token';
|
|
3
|
-
import { WebauthnCredential as WebauthnCredentialEntity } from '../entity/WebauthnCredential';
|
|
4
|
-
import { LoginResultCode } from '../../common/enum/User';
|
|
5
|
-
import { AbstractService } from '../../common/AbstractService';
|
|
6
|
-
import { Registry } from '../entity/Registry';
|
|
1
|
+
import { User as UserEntity } from '../entity/User.js';
|
|
2
|
+
import { Token as TokenEntity, TokenType } from '../entity/Token.js';
|
|
3
|
+
import { WebauthnCredential as WebauthnCredentialEntity } from '../entity/WebauthnCredential.js';
|
|
4
|
+
import { LoginResultCode } from '../../common/enum/User.js';
|
|
5
|
+
import { AbstractService } from '../../common/AbstractService.js';
|
|
6
|
+
import { Registry } from '../entity/Registry.js';
|
|
7
7
|
type Optional<T, K extends keyof T> = Omit<T, K> & Partial<T>;
|
|
8
8
|
type CreateUser = {
|
|
9
9
|
name: string;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
2
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
3
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -8,27 +7,22 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
8
7
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
8
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
9
|
};
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
};
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
const UserUtil_1 = require("../../common/UserUtil");
|
|
25
|
-
const AbstractService_1 = require("../../common/AbstractService");
|
|
26
|
-
const RegistryManagerService_1 = require("./RegistryManagerService");
|
|
27
|
-
const PackageUtil_1 = require("../../common/PackageUtil");
|
|
28
|
-
let UserService = class UserService extends AbstractService_1.AbstractService {
|
|
10
|
+
import crypto from 'node:crypto';
|
|
11
|
+
import { AccessLevel, SingletonProto, Inject, } from '@eggjs/tegg';
|
|
12
|
+
import { NotFoundError, ForbiddenError } from 'egg-errors';
|
|
13
|
+
import { UserRepository } from '../../repository/UserRepository.js';
|
|
14
|
+
import { User as UserEntity } from '../entity/User.js';
|
|
15
|
+
import { Token as TokenEntity } from '../entity/Token.js';
|
|
16
|
+
import { WebauthnCredential as WebauthnCredentialEntity } from '../entity/WebauthnCredential.js';
|
|
17
|
+
import { LoginResultCode } from '../../common/enum/User.js';
|
|
18
|
+
import { integrity, checkIntegrity, randomToken, sha512 } from '../../common/UserUtil.js';
|
|
19
|
+
import { AbstractService } from '../../common/AbstractService.js';
|
|
20
|
+
import { RegistryManagerService } from './RegistryManagerService.js';
|
|
21
|
+
import { getPrefixedName } from '../../common/PackageUtil.js';
|
|
22
|
+
let UserService = class UserService extends AbstractService {
|
|
29
23
|
checkPassword(user, password) {
|
|
30
24
|
const plain = `${user.passwordSalt}${password}`;
|
|
31
|
-
return
|
|
25
|
+
return checkIntegrity(plain, user.passwordIntegrity);
|
|
32
26
|
}
|
|
33
27
|
async findUserByNameOrDisplayName(name) {
|
|
34
28
|
const hasPrefix = name.includes(':');
|
|
@@ -36,16 +30,16 @@ let UserService = class UserService extends AbstractService_1.AbstractService {
|
|
|
36
30
|
return await this.findUserByName(name);
|
|
37
31
|
}
|
|
38
32
|
const selfRegistry = await this.registryManagerService.ensureSelfRegistry();
|
|
39
|
-
const selfUser = await this.findUserByName(
|
|
33
|
+
const selfUser = await this.findUserByName(getPrefixedName(selfRegistry.userPrefix, name));
|
|
40
34
|
if (selfUser) {
|
|
41
35
|
return selfUser;
|
|
42
36
|
}
|
|
43
37
|
const defaultRegistry = await this.registryManagerService.ensureDefaultRegistry();
|
|
44
|
-
const defaultUser = await this.findUserByName(
|
|
38
|
+
const defaultUser = await this.findUserByName(getPrefixedName(defaultRegistry.userPrefix, name));
|
|
45
39
|
return defaultUser;
|
|
46
40
|
}
|
|
47
41
|
async findInRegistry(registry, name) {
|
|
48
|
-
return await this.findUserByName(
|
|
42
|
+
return await this.findUserByName(getPrefixedName(registry.userPrefix, name));
|
|
49
43
|
}
|
|
50
44
|
async findUserByName(name) {
|
|
51
45
|
return await this.userRepository.findUserByName(name);
|
|
@@ -53,14 +47,14 @@ let UserService = class UserService extends AbstractService_1.AbstractService {
|
|
|
53
47
|
async login(name, password) {
|
|
54
48
|
const user = await this.userRepository.findUserByName(name);
|
|
55
49
|
if (!user)
|
|
56
|
-
return { code:
|
|
50
|
+
return { code: LoginResultCode.UserNotFound };
|
|
57
51
|
if (!this.checkPassword(user, password)) {
|
|
58
|
-
return { code:
|
|
52
|
+
return { code: LoginResultCode.Fail };
|
|
59
53
|
}
|
|
60
54
|
const token = await this.createToken(user.userId);
|
|
61
|
-
return { code:
|
|
55
|
+
return { code: LoginResultCode.Success, user, token };
|
|
62
56
|
}
|
|
63
|
-
async findOrCreateUser({ name, email, ip, password =
|
|
57
|
+
async findOrCreateUser({ name, email, ip, password = crypto.randomUUID() }) {
|
|
64
58
|
let user = await this.userRepository.findUserByName(name);
|
|
65
59
|
if (!user) {
|
|
66
60
|
const createRes = await this.create({
|
|
@@ -79,10 +73,10 @@ let UserService = class UserService extends AbstractService_1.AbstractService {
|
|
|
79
73
|
return { user, token };
|
|
80
74
|
}
|
|
81
75
|
async create(createUser) {
|
|
82
|
-
const passwordSalt =
|
|
76
|
+
const passwordSalt = crypto.randomBytes(30).toString('hex');
|
|
83
77
|
const plain = `${passwordSalt}${createUser.password}`;
|
|
84
|
-
const passwordIntegrity =
|
|
85
|
-
const userEntity =
|
|
78
|
+
const passwordIntegrity = integrity(plain);
|
|
79
|
+
const userEntity = UserEntity.create({
|
|
86
80
|
name: createUser.name,
|
|
87
81
|
email: createUser.email,
|
|
88
82
|
ip: createUser.ip,
|
|
@@ -98,9 +92,9 @@ let UserService = class UserService extends AbstractService_1.AbstractService {
|
|
|
98
92
|
const storeName = name.startsWith('name:') ? name : `${userPrefix}${name}`;
|
|
99
93
|
let user = await this.userRepository.findUserByName(storeName);
|
|
100
94
|
if (!user) {
|
|
101
|
-
const passwordSalt =
|
|
102
|
-
const passwordIntegrity =
|
|
103
|
-
user =
|
|
95
|
+
const passwordSalt = crypto.randomBytes(20).toString('hex');
|
|
96
|
+
const passwordIntegrity = integrity(passwordSalt);
|
|
97
|
+
user = UserEntity.create({
|
|
104
98
|
name: storeName,
|
|
105
99
|
email,
|
|
106
100
|
ip: '',
|
|
@@ -123,10 +117,10 @@ let UserService = class UserService extends AbstractService_1.AbstractService {
|
|
|
123
117
|
// https://github.blog/2021-09-23-announcing-npms-new-access-token-format/
|
|
124
118
|
// https://github.blog/2021-04-05-behind-githubs-new-authentication-token-formats/
|
|
125
119
|
// https://github.blog/changelog/2022-12-06-limit-scope-of-npm-tokens-with-the-new-granular-access-tokens/
|
|
126
|
-
const token =
|
|
127
|
-
const tokenKey =
|
|
120
|
+
const token = randomToken(this.config.cnpmcore.name);
|
|
121
|
+
const tokenKey = sha512(token);
|
|
128
122
|
const tokenMark = token.substring(0, token.indexOf('_') + 4);
|
|
129
|
-
const tokenEntity =
|
|
123
|
+
const tokenEntity = TokenEntity.create({
|
|
130
124
|
tokenKey,
|
|
131
125
|
tokenMark,
|
|
132
126
|
userId,
|
|
@@ -140,13 +134,13 @@ let UserService = class UserService extends AbstractService_1.AbstractService {
|
|
|
140
134
|
let token = await this.userRepository.findTokenByTokenKey(tokenKeyOrTokenValue);
|
|
141
135
|
if (!token) {
|
|
142
136
|
// tokenKeyOrTokenValue is token value, sha512 and find again
|
|
143
|
-
token = await this.userRepository.findTokenByTokenKey(
|
|
137
|
+
token = await this.userRepository.findTokenByTokenKey(sha512(tokenKeyOrTokenValue));
|
|
144
138
|
}
|
|
145
139
|
if (!token) {
|
|
146
|
-
throw new
|
|
140
|
+
throw new NotFoundError(`Token "${tokenKeyOrTokenValue}" not exists`);
|
|
147
141
|
}
|
|
148
142
|
if (token.userId !== userId) {
|
|
149
|
-
throw new
|
|
143
|
+
throw new ForbiddenError(`Not authorized to remove token "${tokenKeyOrTokenValue}"`);
|
|
150
144
|
}
|
|
151
145
|
await this.userRepository.removeToken(token.tokenId);
|
|
152
146
|
}
|
|
@@ -155,7 +149,7 @@ let UserService = class UserService extends AbstractService_1.AbstractService {
|
|
|
155
149
|
return credential;
|
|
156
150
|
}
|
|
157
151
|
async createWebauthnCredential(userId, options) {
|
|
158
|
-
const credentialEntity =
|
|
152
|
+
const credentialEntity = WebauthnCredentialEntity.create({
|
|
159
153
|
userId: userId,
|
|
160
154
|
credentialId: options.credentialId,
|
|
161
155
|
publicKey: options.publicKey,
|
|
@@ -171,18 +165,18 @@ let UserService = class UserService extends AbstractService_1.AbstractService {
|
|
|
171
165
|
}
|
|
172
166
|
}
|
|
173
167
|
};
|
|
174
|
-
exports.UserService = UserService;
|
|
175
168
|
__decorate([
|
|
176
|
-
|
|
177
|
-
__metadata("design:type",
|
|
169
|
+
Inject(),
|
|
170
|
+
__metadata("design:type", UserRepository)
|
|
178
171
|
], UserService.prototype, "userRepository", void 0);
|
|
179
172
|
__decorate([
|
|
180
|
-
|
|
181
|
-
__metadata("design:type",
|
|
173
|
+
Inject(),
|
|
174
|
+
__metadata("design:type", RegistryManagerService)
|
|
182
175
|
], UserService.prototype, "registryManagerService", void 0);
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
accessLevel:
|
|
176
|
+
UserService = __decorate([
|
|
177
|
+
SingletonProto({
|
|
178
|
+
accessLevel: AccessLevel.PUBLIC,
|
|
186
179
|
})
|
|
187
180
|
], UserService);
|
|
188
|
-
|
|
181
|
+
export { UserService };
|
|
182
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXNlclNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9hcHAvY29yZS9zZXJ2aWNlL1VzZXJTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sTUFBTSxNQUFNLGFBQWEsQ0FBQztBQUNqQyxPQUFPLEVBQ0wsV0FBVyxFQUNYLGNBQWMsRUFDZCxNQUFNLEdBQ1AsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxJQUFJLElBQUksVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdkQsT0FBTyxFQUFFLEtBQUssSUFBSSxXQUFXLEVBQWEsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsa0JBQWtCLElBQUksd0JBQXdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUE4Q3ZELElBQU0sV0FBVyxHQUFqQixNQUFNLFdBQVksU0FBUSxlQUFlO0lBTTlDLGFBQWEsQ0FBQyxJQUFnQixFQUFFLFFBQWdCO1FBQzlDLE1BQU0sS0FBSyxHQUFHLEdBQUcsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLEVBQUUsQ0FBQztRQUNoRCxPQUFPLGNBQWMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxJQUFZO1FBQzVDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckMsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNkLE9BQU8sTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pDLENBQUM7UUFFRCxNQUFNLFlBQVksR0FBRyxNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzVFLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzNGLElBQUksUUFBUSxFQUFFLENBQUM7WUFDYixPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDO1FBRUQsTUFBTSxlQUFlLEdBQUcsTUFBTSxJQUFJLENBQUMsc0JBQXNCLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUNsRixNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUVqRyxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRUQsS0FBSyxDQUFDLGNBQWMsQ0FBQyxRQUFpQixFQUFFLElBQVk7UUFDbEQsT0FBTyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRUQsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFZO1FBQy9CLE9BQU8sTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFZLEVBQUUsUUFBZ0I7UUFDeEMsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3pELElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ3hDLE9BQU8sRUFBRSxJQUFJLEVBQUUsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3hDLENBQUM7UUFDRCxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xELE9BQU8sRUFBRSxJQUFJLEVBQUUsZUFBZSxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDeEQsQ0FBQztJQUVELEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFFBQVEsR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQW9DO1FBQzFHLElBQUksSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1YsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDO2dCQUNsQyxJQUFJO2dCQUNKLEtBQUs7Z0JBQ0wsUUFBUTtnQkFDUixFQUFFO2FBQ0gsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUM7UUFDeEIsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxJQUFzQztRQUM1RCxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQyxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xELE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBc0I7UUFDakMsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUQsTUFBTSxLQUFLLEdBQUcsR0FBRyxZQUFZLEdBQUcsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3RELE1BQU0saUJBQWlCLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNDLE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFDbkMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxJQUFJO1lBQ3JCLEtBQUssRUFBRSxVQUFVLENBQUMsS0FBSztZQUN2QixFQUFFLEVBQUUsVUFBVSxDQUFDLEVBQUU7WUFDakIsWUFBWTtZQUNaLGlCQUFpQjtZQUNqQixTQUFTLEVBQUUsSUFBSTtTQUNoQixDQUFDLENBQUM7UUFDSCxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQy9DLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEQsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVELEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxHQUFHLE1BQU0sRUFBRSxJQUFZLEVBQUUsS0FBYTtRQUM3RCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxHQUFHLElBQUksRUFBRSxDQUFDO1FBQzNFLElBQUksSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1YsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDNUQsTUFBTSxpQkFBaUIsR0FBRyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDbEQsSUFBSSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7Z0JBQ3ZCLElBQUksRUFBRSxTQUFTO2dCQUNmLEtBQUs7Z0JBQ0wsRUFBRSxFQUFFLEVBQUU7Z0JBQ04sWUFBWTtnQkFDWixpQkFBaUI7Z0JBQ2pCLFNBQVMsRUFBRSxLQUFLO2FBQ2pCLENBQUMsQ0FBQztZQUNILE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDekMsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDakMsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUN6QixPQUFPO1lBQ1AsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDbEMsQ0FBQztRQUNELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekMsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBYyxFQUFFLFVBQTZCLEVBQUU7UUFDL0QsMEVBQTBFO1FBQzFFLGtGQUFrRjtRQUNsRiwwR0FBMEc7UUFDMUcsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JELE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQixNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzdELE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUM7WUFDckMsUUFBUTtZQUNSLFNBQVM7WUFDVCxNQUFNO1lBQ04sR0FBRyxPQUFPO1NBQ1gsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNqRCxXQUFXLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUMxQixPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRUQsS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFjLEVBQUUsb0JBQTRCO1FBQzVELElBQUksS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ2hGLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLDZEQUE2RDtZQUM3RCxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7UUFDdEYsQ0FBQztRQUNELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLE1BQU0sSUFBSSxhQUFhLENBQUMsVUFBVSxvQkFBb0IsY0FBYyxDQUFDLENBQUM7UUFDeEUsQ0FBQztRQUNELElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUM1QixNQUFNLElBQUksY0FBYyxDQUFDLG1DQUFtQyxvQkFBb0IsR0FBRyxDQUFDLENBQUM7UUFDdkYsQ0FBQztRQUNELE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxLQUFLLENBQUMsc0JBQXNCLENBQUMsTUFBYyxFQUFFLFdBQXNDO1FBQ2pGLE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQ0FBb0MsQ0FBQyxNQUFNLEVBQUUsV0FBVyxJQUFJLElBQUksQ0FBQyxDQUFDO1FBQy9HLE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxLQUFLLENBQUMsd0JBQXdCLENBQUMsTUFBMEIsRUFBRSxPQUF3QztRQUNqRyxNQUFNLGdCQUFnQixHQUFHLHdCQUF3QixDQUFDLE1BQU0sQ0FBQztZQUN2RCxNQUFNLEVBQUUsTUFBZ0I7WUFDeEIsWUFBWSxFQUFFLE9BQU8sQ0FBQyxZQUFZO1lBQ2xDLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUztZQUM1QixXQUFXLEVBQUUsT0FBTyxDQUFDLFdBQVc7U0FDakMsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzNELE9BQU8sZ0JBQWdCLENBQUM7SUFDMUIsQ0FBQztJQUVELEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxNQUFlLEVBQUUsV0FBb0I7UUFDbEUsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLG9DQUFvQyxDQUFDLE1BQU0sRUFBRSxXQUFXLElBQUksSUFBSSxDQUFDLENBQUM7UUFDL0csSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNmLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEUsQ0FBQztJQUNILENBQUM7Q0FFRixDQUFBO0FBcktrQjtJQURoQixNQUFNLEVBQUU7OEJBQ3dCLGNBQWM7bURBQUM7QUFFL0I7SUFEaEIsTUFBTSxFQUFFOzhCQUNnQyxzQkFBc0I7MkRBQUM7QUFKckQsV0FBVztJQUh2QixjQUFjLENBQUM7UUFDZCxXQUFXLEVBQUUsV0FBVyxDQUFDLE1BQU07S0FDaEMsQ0FBQztHQUNXLFdBQVcsQ0F1S3ZCIn0=
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { EntityData } from '../entity/Entity';
|
|
1
|
+
import { EntityData } from '../entity/Entity.js';
|
|
2
2
|
type PartialBy<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;
|
|
3
3
|
export type EasyData<T extends EntityData, Id extends keyof T> = PartialBy<T, 'createdAt' | 'updatedAt' | Id>;
|
|
4
4
|
export interface PageOptions {
|
|
@@ -1,13 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.EntityUtil = void 0;
|
|
7
|
-
const bson_objectid_1 = __importDefault(require("bson-objectid"));
|
|
8
|
-
const egg_errors_1 = require("egg-errors");
|
|
1
|
+
import ObjectID from 'bson-objectid';
|
|
2
|
+
import { E400 } from 'egg-errors';
|
|
9
3
|
const MAX_PAGE_SIZE = 100;
|
|
10
|
-
class EntityUtil {
|
|
4
|
+
export class EntityUtil {
|
|
11
5
|
static defaultData(data, id) {
|
|
12
6
|
Reflect.set(data, id, EntityUtil.createId());
|
|
13
7
|
data.createdAt = data.createdAt || new Date();
|
|
@@ -15,12 +9,13 @@ class EntityUtil {
|
|
|
15
9
|
return data;
|
|
16
10
|
}
|
|
17
11
|
static createId() {
|
|
18
|
-
|
|
12
|
+
// @ts-expect-error ObjectID has no construct signatures
|
|
13
|
+
return new ObjectID().toHexString();
|
|
19
14
|
}
|
|
20
15
|
static convertPageOptionsToLimitOption(page) {
|
|
21
16
|
const { pageIndex = 0, pageSize = 20 } = page;
|
|
22
17
|
if (pageSize > MAX_PAGE_SIZE) {
|
|
23
|
-
throw new
|
|
18
|
+
throw new E400(`max page size is 100, current request is ${pageSize}`);
|
|
24
19
|
}
|
|
25
20
|
return {
|
|
26
21
|
offset: pageIndex * pageSize,
|
|
@@ -28,5 +23,4 @@ class EntityUtil {
|
|
|
28
23
|
};
|
|
29
24
|
}
|
|
30
25
|
}
|
|
31
|
-
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRW50aXR5VXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2FwcC9jb3JlL3V0aWwvRW50aXR5VXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxrRUFBcUM7QUFDckMsMkNBQWtDO0FBT2xDLE1BQU0sYUFBYSxHQUFHLEdBQVksQ0FBQztBQWNuQyxNQUFhLFVBQVU7SUFDckIsTUFBTSxDQUFDLFdBQVcsQ0FBMkMsSUFBcUIsRUFBRSxFQUFNO1FBQ3hGLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUM5QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUM5QyxPQUFPLElBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQVE7UUFDYixPQUFPLElBQUksdUJBQVEsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxNQUFNLENBQUMsK0JBQStCLENBQUMsSUFBaUI7UUFDdEQsTUFBTSxFQUFFLFNBQVMsR0FBRyxDQUFDLEVBQUUsUUFBUSxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQztRQUM5QyxJQUFJLFFBQVEsR0FBRyxhQUFhLEVBQUUsQ0FBQztZQUM3QixNQUFNLElBQUksaUJBQUksQ0FBQyw0Q0FBNEMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUN6RSxDQUFDO1FBQ0QsT0FBTztZQUNMLE1BQU0sRUFBRSxTQUFTLEdBQUcsUUFBUTtZQUM1QixLQUFLLEVBQUUsUUFBUTtTQUNoQixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBdEJELGdDQXNCQyJ9
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRW50aXR5VXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2FwcC9jb3JlL3V0aWwvRW50aXR5VXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFFBQVEsTUFBTSxlQUFlLENBQUM7QUFDckMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFlBQVksQ0FBQztBQVFsQyxNQUFNLGFBQWEsR0FBRyxHQUFZLENBQUM7QUFjbkMsTUFBTSxPQUFPLFVBQVU7SUFDckIsTUFBTSxDQUFDLFdBQVcsQ0FBMkMsSUFBcUIsRUFBRSxFQUFNO1FBQ3hGLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUM5QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUM5QyxPQUFPLElBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQVE7UUFDYix3REFBd0Q7UUFDeEQsT0FBTyxJQUFJLFFBQVEsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxNQUFNLENBQUMsK0JBQStCLENBQUMsSUFBaUI7UUFDdEQsTUFBTSxFQUFFLFNBQVMsR0FBRyxDQUFDLEVBQUUsUUFBUSxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQztRQUM5QyxJQUFJLFFBQVEsR0FBRyxhQUFhLEVBQUUsQ0FBQztZQUM3QixNQUFNLElBQUksSUFBSSxDQUFDLDRDQUE0QyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3pFLENBQUM7UUFDRCxPQUFPO1lBQ0wsTUFBTSxFQUFFLFNBQVMsR0FBRyxRQUFRO1lBQzVCLEtBQUssRUFBRSxRQUFRO1NBQ2hCLENBQUM7SUFDSixDQUFDO0NBQ0YifQ==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { EggContext } from '@eggjs/tegg';
|
|
2
2
|
import { Redis } from 'ioredis';
|
|
3
|
-
import { AuthClient, AuthUrlResult, userResult } from '../common/typing';
|
|
3
|
+
import { AuthClient, AuthUrlResult, userResult } from '../common/typing.js';
|
|
4
4
|
type SSO_USER = {
|
|
5
5
|
name: string;
|
|
6
6
|
email: string;
|