cnpmcore 4.13.0 → 4.13.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app/common/CryptoUtil.js +9 -5
- package/dist/app/common/ErrorUtil.js +2 -4
- package/dist/app/common/FileUtil.js +5 -6
- package/dist/app/common/PackageUtil.js +2 -4
- package/dist/app/common/UserUtil.d.ts +2 -2
- package/dist/app/common/UserUtil.js +4 -5
- package/dist/app/common/adapter/NFSAdapter.d.ts +1 -1
- package/dist/app/common/adapter/NFSAdapter.js +1 -1
- package/dist/app/common/adapter/NPMRegistry.js +1 -1
- package/dist/app/common/adapter/binary/AbstractBinary.d.ts +1 -1
- package/dist/app/common/adapter/binary/AbstractBinary.js +2 -2
- package/dist/app/common/adapter/binary/ApiBinary.js +3 -4
- package/dist/app/common/adapter/binary/BucketBinary.js +2 -2
- package/dist/app/common/adapter/binary/ChromeForTestingBinary.js +3 -5
- package/dist/app/common/adapter/binary/CypressBinary.js +3 -9
- package/dist/app/common/adapter/binary/EdgedriverBinary.js +2 -2
- package/dist/app/common/adapter/binary/ElectronBinary.d.ts +1 -1
- package/dist/app/common/adapter/binary/ElectronBinary.js +3 -4
- package/dist/app/common/adapter/binary/FirefoxBinary.js +2 -2
- package/dist/app/common/adapter/binary/ImageminBinary.js +3 -4
- package/dist/app/common/adapter/binary/NodeBinary.js +3 -3
- package/dist/app/common/adapter/binary/NodePreGypBinary.js +9 -19
- package/dist/app/common/adapter/binary/NwjsBinary.js +3 -5
- package/dist/app/common/adapter/binary/PlaywrightBinary.js +16 -18
- package/dist/app/common/adapter/binary/PrismaBinary.js +3 -5
- package/dist/app/common/adapter/binary/PuppeteerBinary.js +4 -7
- package/dist/app/common/adapter/binary/SqlcipherBinary.js +3 -10
- package/dist/app/common/adapter/changesStream/AbstractChangesStream.js +2 -2
- package/dist/app/common/adapter/changesStream/CnpmcoreChangesStream.js +2 -2
- package/dist/app/common/adapter/changesStream/CnpmjsorgChangesStream.js +2 -2
- package/dist/app/common/adapter/changesStream/NpmChangesStream.js +2 -2
- package/dist/app/common/aop/AsyncTimer.js +2 -2
- package/dist/app/common/constants.js +1 -1
- package/dist/app/common/typing.d.ts +2 -2
- package/dist/app/core/entity/Binary.d.ts +1 -1
- package/dist/app/core/entity/Binary.js +2 -2
- package/dist/app/core/entity/BugVersion.d.ts +16 -1
- package/dist/app/core/entity/BugVersion.js +12 -5
- package/dist/app/core/entity/Change.d.ts +1 -1
- package/dist/app/core/entity/Change.js +2 -2
- package/dist/app/core/entity/Dist.d.ts +1 -1
- package/dist/app/core/entity/Dist.js +2 -2
- package/dist/app/core/entity/Hook.d.ts +2 -2
- package/dist/app/core/entity/Hook.js +3 -6
- package/dist/app/core/entity/HookEvent.js +1 -1
- package/dist/app/core/entity/Package.d.ts +1 -1
- package/dist/app/core/entity/Package.js +4 -5
- package/dist/app/core/entity/PackageTag.d.ts +1 -1
- package/dist/app/core/entity/PackageTag.js +2 -2
- package/dist/app/core/entity/PackageVersion.d.ts +1 -1
- package/dist/app/core/entity/PackageVersion.js +2 -2
- package/dist/app/core/entity/PackageVersionBlock.d.ts +1 -1
- package/dist/app/core/entity/PackageVersionBlock.js +2 -2
- package/dist/app/core/entity/PackageVersionFile.d.ts +1 -1
- package/dist/app/core/entity/PackageVersionFile.js +3 -5
- package/dist/app/core/entity/PackageVersionManifest.d.ts +1 -1
- package/dist/app/core/entity/PackageVersionManifest.js +2 -2
- package/dist/app/core/entity/ProxyCache.d.ts +1 -1
- package/dist/app/core/entity/ProxyCache.js +2 -2
- package/dist/app/core/entity/Registry.d.ts +2 -2
- package/dist/app/core/entity/Registry.js +2 -2
- package/dist/app/core/entity/Scope.d.ts +1 -1
- package/dist/app/core/entity/Scope.js +2 -2
- package/dist/app/core/entity/SqlRange.js +2 -3
- package/dist/app/core/entity/Task.d.ts +1 -1
- package/dist/app/core/entity/Task.js +4 -4
- package/dist/app/core/entity/Token.d.ts +1 -1
- package/dist/app/core/entity/Token.js +3 -5
- package/dist/app/core/entity/User.d.ts +1 -1
- package/dist/app/core/entity/User.js +3 -3
- package/dist/app/core/entity/WebauthnCredential.d.ts +1 -1
- package/dist/app/core/entity/WebauthnCredential.js +2 -2
- package/dist/app/core/event/BugVersionFixHandler.js +2 -2
- package/dist/app/core/event/CacheCleaner.js +1 -1
- package/dist/app/core/event/ChangesStream.d.ts +1 -1
- package/dist/app/core/event/ChangesStream.js +2 -2
- package/dist/app/core/event/StoreManifest.js +2 -2
- package/dist/app/core/event/SyncESPackage.js +1 -1
- package/dist/app/core/event/SyncPackageVersionFile.js +3 -4
- package/dist/app/core/event/TotalHandler.js +1 -1
- package/dist/app/core/service/BinarySyncerService.d.ts +2 -2
- package/dist/app/core/service/BinarySyncerService.js +9 -9
- package/dist/app/core/service/BugVersionService.d.ts +17 -3
- package/dist/app/core/service/BugVersionService.js +32 -10
- package/dist/app/core/service/CacheService.d.ts +2 -0
- package/dist/app/core/service/CacheService.js +11 -1
- package/dist/app/core/service/ChangesStreamService.d.ts +2 -2
- package/dist/app/core/service/ChangesStreamService.js +7 -7
- package/dist/app/core/service/CreateHookTriggerService.js +2 -2
- package/dist/app/core/service/EventCorkerAdvice.js +1 -1
- package/dist/app/core/service/FixNoPaddingVersionService.js +3 -5
- package/dist/app/core/service/HomeService.js +2 -2
- package/dist/app/core/service/HookManageService.d.ts +1 -1
- package/dist/app/core/service/HookManageService.js +1 -1
- package/dist/app/core/service/HookTriggerService.d.ts +2 -2
- package/dist/app/core/service/HookTriggerService.js +2 -2
- package/dist/app/core/service/PackageManagerService.d.ts +30 -1
- package/dist/app/core/service/PackageManagerService.js +364 -72
- package/dist/app/core/service/PackageSearchService.d.ts +5 -1
- package/dist/app/core/service/PackageSearchService.js +44 -47
- package/dist/app/core/service/PackageSyncerService.d.ts +2 -1
- package/dist/app/core/service/PackageSyncerService.js +107 -56
- package/dist/app/core/service/PackageVersionFileService.d.ts +2 -2
- package/dist/app/core/service/PackageVersionFileService.js +3 -3
- package/dist/app/core/service/PackageVersionService.js +1 -1
- package/dist/app/core/service/ProxyCacheService.d.ts +2 -2
- package/dist/app/core/service/ProxyCacheService.js +4 -4
- package/dist/app/core/service/RegistryManagerService.js +7 -11
- package/dist/app/core/service/ScopeManagerService.js +1 -1
- package/dist/app/core/service/TaskService.d.ts +1 -1
- package/dist/app/core/service/TaskService.js +4 -6
- package/dist/app/core/service/TokenService.d.ts +1 -1
- package/dist/app/core/service/TokenService.js +10 -10
- package/dist/app/core/service/UserService.d.ts +5 -5
- package/dist/app/core/service/UserService.js +7 -7
- package/dist/app/core/util/EntityUtil.js +1 -1
- package/dist/app/infra/AuthAdapter.js +2 -2
- package/dist/app/infra/NFSClientAdapter.js +2 -2
- package/dist/app/infra/QueueAdapter.js +1 -1
- package/dist/app/infra/SearchAdapter.js +1 -1
- package/dist/app/port/UserRoleManager.d.ts +1 -1
- package/dist/app/port/UserRoleManager.js +5 -6
- package/dist/app/port/config.d.ts +6 -1
- package/dist/app/port/config.js +1 -1
- package/dist/app/port/controller/AbstractController.d.ts +6 -6
- package/dist/app/port/controller/AbstractController.js +7 -12
- package/dist/app/port/controller/AccessController.js +4 -4
- package/dist/app/port/controller/BinarySyncController.d.ts +1 -1
- package/dist/app/port/controller/BinarySyncController.js +6 -8
- package/dist/app/port/controller/ChangesStreamController.js +3 -3
- package/dist/app/port/controller/DownloadController.js +4 -4
- package/dist/app/port/controller/HomeController.d.ts +1 -1
- package/dist/app/port/controller/HomeController.js +2 -2
- package/dist/app/port/controller/HookController.js +6 -6
- package/dist/app/port/controller/PackageBlockController.d.ts +1 -1
- package/dist/app/port/controller/PackageBlockController.js +4 -4
- package/dist/app/port/controller/PackageSyncController.d.ts +1 -1
- package/dist/app/port/controller/PackageSyncController.js +7 -11
- package/dist/app/port/controller/PackageTagController.js +3 -3
- package/dist/app/port/controller/PackageVersionFileController.js +6 -11
- package/dist/app/port/controller/ProxyCacheController.d.ts +2 -2
- package/dist/app/port/controller/ProxyCacheController.js +8 -8
- package/dist/app/port/controller/RegistryController.d.ts +2 -2
- package/dist/app/port/controller/RegistryController.js +3 -3
- package/dist/app/port/controller/ScopeController.d.ts +2 -2
- package/dist/app/port/controller/ScopeController.js +2 -2
- package/dist/app/port/controller/TokenController.d.ts +2 -2
- package/dist/app/port/controller/TokenController.js +10 -10
- package/dist/app/port/controller/UserController.d.ts +1 -1
- package/dist/app/port/controller/UserController.js +6 -7
- package/dist/app/port/controller/admin/PaddingVersionController.js +2 -2
- package/dist/app/port/controller/convertor/HookConvertor.d.ts +1 -1
- package/dist/app/port/controller/convertor/HookConvertor.js +1 -1
- package/dist/app/port/controller/package/DownloadPackageVersionTar.d.ts +1 -1
- package/dist/app/port/controller/package/DownloadPackageVersionTar.js +4 -4
- package/dist/app/port/controller/package/RemovePackageVersionController.js +4 -5
- package/dist/app/port/controller/package/SavePackageVersionController.d.ts +2 -2
- package/dist/app/port/controller/package/SavePackageVersionController.js +12 -16
- package/dist/app/port/controller/package/SearchPackageController.d.ts +2 -2
- package/dist/app/port/controller/package/SearchPackageController.js +2 -2
- package/dist/app/port/controller/package/ShowPackageController.d.ts +2 -0
- package/dist/app/port/controller/package/ShowPackageController.js +83 -11
- package/dist/app/port/controller/package/ShowPackageVersionController.js +7 -9
- package/dist/app/port/controller/package/UpdatePackageController.d.ts +1 -1
- package/dist/app/port/controller/package/UpdatePackageController.js +5 -6
- package/dist/app/port/middleware/AlwaysAuth.js +1 -1
- package/dist/app/port/middleware/ErrorHandler.js +5 -13
- package/dist/app/port/schedule/ChangesStreamWorker.js +3 -4
- package/dist/app/port/schedule/CheckProxyCacheUpdateWorker.js +2 -2
- package/dist/app/port/schedule/CheckRecentlyUpdatedPackages.js +7 -11
- package/dist/app/port/schedule/CleanTempDir.js +2 -2
- package/dist/app/port/schedule/CreateSyncBinaryTask.js +2 -2
- package/dist/app/port/schedule/CreateTriggerHookWorker.js +4 -6
- package/dist/app/port/schedule/SavePackageVersionDownloadCounter.js +2 -2
- package/dist/app/port/schedule/SyncBinaryWorker.js +2 -2
- package/dist/app/port/schedule/SyncPackageWorker.js +3 -4
- package/dist/app/port/schedule/SyncProxyCacheWorker.js +3 -4
- package/dist/app/port/schedule/TaskTimeoutHandler.js +2 -2
- package/dist/app/port/schedule/TriggerHookWorker.js +3 -4
- package/dist/app/port/schedule/UpdateTotalData.js +3 -3
- package/dist/app/port/typebox.d.ts +2 -2
- package/dist/app/port/typebox.js +6 -6
- package/dist/app/port/webauth/WebauthController.d.ts +1 -1
- package/dist/app/port/webauth/WebauthController.js +10 -13
- package/dist/app/repository/BinaryRepository.js +3 -3
- package/dist/app/repository/ChangeRepository.d.ts +1 -1
- package/dist/app/repository/ChangeRepository.js +2 -2
- package/dist/app/repository/DistRepository.d.ts +6 -1
- package/dist/app/repository/DistRepository.js +38 -1
- package/dist/app/repository/HookRepository.d.ts +1 -1
- package/dist/app/repository/HookRepository.js +3 -3
- package/dist/app/repository/PackageRepository.d.ts +3 -3
- package/dist/app/repository/PackageRepository.js +20 -34
- package/dist/app/repository/PackageVersionBlockRepository.d.ts +1 -1
- package/dist/app/repository/PackageVersionBlockRepository.js +2 -2
- package/dist/app/repository/PackageVersionDownloadRepository.js +1 -1
- package/dist/app/repository/PackageVersionFileRepository.js +4 -6
- package/dist/app/repository/PackageVersionRepository.d.ts +1 -1
- package/dist/app/repository/PackageVersionRepository.js +6 -8
- package/dist/app/repository/ProxyCacheRepository.d.ts +3 -3
- package/dist/app/repository/ProxyCacheRepository.js +5 -7
- package/dist/app/repository/RegistryRepository.d.ts +1 -1
- package/dist/app/repository/RegistryRepository.js +4 -4
- package/dist/app/repository/ScopeRepository.d.ts +2 -2
- package/dist/app/repository/ScopeRepository.js +7 -9
- package/dist/app/repository/SearchRepository.js +1 -1
- package/dist/app/repository/TaskRepository.d.ts +1 -1
- package/dist/app/repository/TaskRepository.js +9 -9
- package/dist/app/repository/TotalRepository.js +2 -2
- package/dist/app/repository/UserRepository.d.ts +1 -1
- package/dist/app/repository/UserRepository.js +7 -7
- package/dist/app/repository/model/HistoryTask.d.ts +1 -1
- package/dist/app/repository/model/HistoryTask.js +1 -1
- package/dist/app/repository/model/Hook.d.ts +1 -1
- package/dist/app/repository/model/Hook.js +1 -1
- package/dist/app/repository/model/Package.js +2 -2
- package/dist/app/repository/model/PackageVersion.js +3 -3
- package/dist/app/repository/model/PackageVersionFile.js +2 -2
- package/dist/app/repository/model/ProxyCache.d.ts +1 -1
- package/dist/app/repository/model/ProxyCache.js +1 -1
- package/dist/app/repository/model/Registry.d.ts +1 -1
- package/dist/app/repository/model/Registry.js +1 -1
- package/dist/app/repository/model/Task.d.ts +1 -1
- package/dist/app/repository/model/Task.js +1 -1
- package/dist/app/repository/util/EntityProperty.js +1 -1
- package/dist/app/repository/util/ModelConvertor.js +3 -6
- package/dist/app/repository/util/ModelConvertorUtil.js +1 -1
- package/dist/app.js +2 -2
- package/dist/config/config.default.js +4 -3
- package/dist/config/config.unittest.d.ts +2 -2
- package/dist/config/config.unittest.js +4 -1
- package/dist/config/database.js +3 -2
- package/dist/config/plugin.js +1 -1
- package/package.json +46 -48
|
@@ -8,20 +8,21 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
8
8
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
9
|
};
|
|
10
10
|
var PackageManagerService_1;
|
|
11
|
-
import { readFile, stat } from 'node:fs/promises';
|
|
12
11
|
import assert from 'node:assert/strict';
|
|
13
|
-
import {
|
|
12
|
+
import { readFile, stat } from 'node:fs/promises';
|
|
13
|
+
import { JSONBuilder } from '@cnpmjs/packument';
|
|
14
|
+
import { AccessLevel, Inject, SingletonProto } from 'egg';
|
|
14
15
|
import { BadRequestError, ForbiddenError, NotFoundError } from 'egg/errors';
|
|
15
16
|
import npa from 'npm-package-arg';
|
|
16
|
-
import semver from 'semver';
|
|
17
17
|
import pMap from 'p-map';
|
|
18
|
-
import
|
|
18
|
+
import semver from 'semver';
|
|
19
19
|
import { AbstractService } from "../../common/AbstractService.js";
|
|
20
|
+
import { calculateIntegrity, detectInstallScript, formatTarball, getFullname, getScopeAndName, hasShrinkWrapInTgz, } from "../../common/PackageUtil.js";
|
|
20
21
|
import { isDuplicateKeyError } from "../../repository/util/ErrorUtil.js";
|
|
21
22
|
import { Package } from "../entity/Package.js";
|
|
23
|
+
import { PackageTag } from "../entity/PackageTag.js";
|
|
22
24
|
import { PackageVersion } from "../entity/PackageVersion.js";
|
|
23
25
|
import { PackageVersionBlock } from "../entity/PackageVersionBlock.js";
|
|
24
|
-
import { PackageTag } from "../entity/PackageTag.js";
|
|
25
26
|
import { PACKAGE_ADDED, PACKAGE_BLOCKED, PACKAGE_MAINTAINER_CHANGED, PACKAGE_MAINTAINER_REMOVED, PACKAGE_META_CHANGED, PACKAGE_TAG_ADDED, PACKAGE_TAG_CHANGED, PACKAGE_TAG_REMOVED, PACKAGE_UNBLOCKED, PACKAGE_UNPUBLISHED, PACKAGE_VERSION_ADDED, PACKAGE_VERSION_REMOVED, } from "../event/index.js";
|
|
26
27
|
const TOTAL = '@@TOTAL@@';
|
|
27
28
|
const SCOPE_TOTAL_PREFIX = '@@SCOPE@@:';
|
|
@@ -81,25 +82,34 @@ let PackageManagerService = PackageManagerService_1 = class PackageManagerServic
|
|
|
81
82
|
if (cmd.packageJson._hasShrinkwrap === undefined) {
|
|
82
83
|
const contentOrFile = cmd.dist.content || cmd.dist.localFile;
|
|
83
84
|
if (contentOrFile) {
|
|
84
|
-
cmd.packageJson._hasShrinkwrap =
|
|
85
|
-
await hasShrinkWrapInTgz(contentOrFile);
|
|
85
|
+
cmd.packageJson._hasShrinkwrap = await hasShrinkWrapInTgz(contentOrFile);
|
|
86
86
|
}
|
|
87
87
|
}
|
|
88
|
-
//
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
88
|
+
// override _npmUser field if is private package or _npmUser field not exists
|
|
89
|
+
// otherwise avoid overriding _npmUser field from sync package, e.g.: oidc publish package
|
|
90
|
+
// "_npmUser": {
|
|
91
|
+
// "name": "GitHub Actions",
|
|
92
|
+
// "email": "npm-oidc-no-reply@github.com",
|
|
93
|
+
// "trustedPublisher": {
|
|
94
|
+
// "id": "github",
|
|
95
|
+
// "oidcConfigId": "oidc:d0f693c3-ada3-4197-b34c-b7aaeb524f11"
|
|
96
|
+
// }
|
|
97
|
+
// }
|
|
98
|
+
if (cmd.isPrivate || !cmd.packageJson._npmUser) {
|
|
99
|
+
// set _npmUser field to cmd.packageJson
|
|
100
|
+
cmd.packageJson._npmUser = {
|
|
101
|
+
// clean user scope prefix
|
|
102
|
+
name: publisher.displayName,
|
|
103
|
+
email: publisher.email,
|
|
104
|
+
};
|
|
105
|
+
}
|
|
94
106
|
// add _registry_name field to cmd.packageJson
|
|
95
107
|
const registry = await this.getSourceRegistry(pkg);
|
|
96
108
|
if (registry) {
|
|
97
109
|
cmd.packageJson._source_registry_name = registry.name;
|
|
98
110
|
}
|
|
99
111
|
// https://github.com/npm/registry/blob/master/docs/responses/package-metadata.md#abbreviated-version-object
|
|
100
|
-
const hasInstallScript = detectInstallScript(cmd.packageJson)
|
|
101
|
-
? true
|
|
102
|
-
: undefined;
|
|
112
|
+
const hasInstallScript = detectInstallScript(cmd.packageJson) ? true : undefined;
|
|
103
113
|
let tarDistIntegrity;
|
|
104
114
|
let tarDistSize = 0;
|
|
105
115
|
if (cmd.dist.content) {
|
|
@@ -160,6 +170,7 @@ let PackageManagerService = PackageManagerService_1 = class PackageManagerServic
|
|
|
160
170
|
// npminstall require publish time to show the recently update versions
|
|
161
171
|
publish_time: cmd.packageJson.publish_time,
|
|
162
172
|
_source_registry_name: cmd.packageJson._source_registry_name,
|
|
173
|
+
_npmUser: cmd.packageJson._npmUser,
|
|
163
174
|
});
|
|
164
175
|
const abbreviatedDistBytes = Buffer.from(abbreviated);
|
|
165
176
|
const abbreviatedDistIntegrity = await calculateIntegrity(abbreviatedDistBytes);
|
|
@@ -241,15 +252,28 @@ let PackageManagerService = PackageManagerService_1 = class PackageManagerServic
|
|
|
241
252
|
}
|
|
242
253
|
await this.packageVersionBlockRepository.savePackageVersionBlock(block);
|
|
243
254
|
if (pkg.manifestsDist && pkg.abbreviatedsDist) {
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
255
|
+
if (this.config.cnpmcore.experimental.enableJSONBuilder) {
|
|
256
|
+
const fullManifestsBuilder = await this.distRepository.readDistBytesToJSONBuilder(pkg.manifestsDist);
|
|
257
|
+
if (fullManifestsBuilder) {
|
|
258
|
+
fullManifestsBuilder.setIn(['block'], reason);
|
|
259
|
+
}
|
|
260
|
+
const abbreviatedManifestsBuilder = await this.distRepository.readDistBytesToJSONBuilder(pkg.abbreviatedsDist);
|
|
261
|
+
if (abbreviatedManifestsBuilder) {
|
|
262
|
+
abbreviatedManifestsBuilder.setIn(['block'], reason);
|
|
263
|
+
}
|
|
264
|
+
await this._updatePackageManifestsToDistsWithBuilder(pkg, fullManifestsBuilder, abbreviatedManifestsBuilder);
|
|
247
265
|
}
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
266
|
+
else {
|
|
267
|
+
const fullManifests = await this.distRepository.readDistBytesToJSON(pkg.manifestsDist);
|
|
268
|
+
if (fullManifests) {
|
|
269
|
+
fullManifests.block = reason;
|
|
270
|
+
}
|
|
271
|
+
const abbreviatedManifests = await this.distRepository.readDistBytesToJSON(pkg.abbreviatedsDist);
|
|
272
|
+
if (abbreviatedManifests) {
|
|
273
|
+
abbreviatedManifests.block = reason;
|
|
274
|
+
}
|
|
275
|
+
await this._updatePackageManifestsToDists(pkg, fullManifests || null, abbreviatedManifests || null);
|
|
251
276
|
}
|
|
252
|
-
await this._updatePackageManifestsToDists(pkg, fullManifests || null, abbreviatedManifests || null);
|
|
253
277
|
this.eventBus.emit(PACKAGE_BLOCKED, pkg.fullname);
|
|
254
278
|
this.logger.info('[packageManagerService.blockPackage:success] packageId: %s, reason: %j', pkg.packageId, reason);
|
|
255
279
|
}
|
|
@@ -269,21 +293,38 @@ let PackageManagerService = PackageManagerService_1 = class PackageManagerServic
|
|
|
269
293
|
await this.packageVersionBlockRepository.removePackageVersionBlock(block.packageVersionBlockId);
|
|
270
294
|
}
|
|
271
295
|
if (pkg.manifestsDist && pkg.abbreviatedsDist) {
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
296
|
+
if (this.config.cnpmcore.experimental.enableJSONBuilder) {
|
|
297
|
+
const fullManifestsBuffer = await this.distRepository.readDistBytesToBuffer(pkg.manifestsDist);
|
|
298
|
+
let fullManifestsBuilder;
|
|
299
|
+
if (fullManifestsBuffer) {
|
|
300
|
+
fullManifestsBuilder = new JSONBuilder(fullManifestsBuffer);
|
|
301
|
+
fullManifestsBuilder.deleteIn(['block']);
|
|
302
|
+
}
|
|
303
|
+
const abbreviatedManifestsBuffer = await this.distRepository.readDistBytesToBuffer(pkg.abbreviatedsDist);
|
|
304
|
+
let abbreviatedManifestsBuilder;
|
|
305
|
+
if (abbreviatedManifestsBuffer) {
|
|
306
|
+
abbreviatedManifestsBuilder = new JSONBuilder(abbreviatedManifestsBuffer);
|
|
307
|
+
abbreviatedManifestsBuilder.deleteIn(['block']);
|
|
308
|
+
}
|
|
309
|
+
await this._updatePackageManifestsToDistsWithBuilder(pkg, fullManifestsBuilder, abbreviatedManifestsBuilder);
|
|
275
310
|
}
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
311
|
+
else {
|
|
312
|
+
const fullManifests = await this.distRepository.readDistBytesToJSON(pkg.manifestsDist);
|
|
313
|
+
if (fullManifests) {
|
|
314
|
+
fullManifests.block = undefined;
|
|
315
|
+
}
|
|
316
|
+
const abbreviatedManifests = await this.distRepository.readDistBytesToJSON(pkg.abbreviatedsDist);
|
|
317
|
+
if (abbreviatedManifests) {
|
|
318
|
+
abbreviatedManifests.block = undefined;
|
|
319
|
+
}
|
|
320
|
+
await this._updatePackageManifestsToDists(pkg, fullManifests || null, abbreviatedManifests || null);
|
|
279
321
|
}
|
|
280
|
-
await this._updatePackageManifestsToDists(pkg, fullManifests || null, abbreviatedManifests || null);
|
|
281
322
|
this.eventBus.emit(PACKAGE_UNBLOCKED, pkg.fullname);
|
|
282
323
|
this.logger.info('[packageManagerService.unblockPackage:success] packageId: %s', pkg.packageId);
|
|
283
324
|
}
|
|
284
325
|
}
|
|
285
326
|
async replacePackageMaintainersAndDist(pkg, maintainers) {
|
|
286
|
-
await this.packageRepository.replacePackageMaintainers(pkg.packageId, maintainers.map(m => m.userId));
|
|
327
|
+
await this.packageRepository.replacePackageMaintainers(pkg.packageId, maintainers.map((m) => m.userId));
|
|
287
328
|
await this.refreshPackageMaintainersToDists(pkg);
|
|
288
329
|
this.eventBus.emit(PACKAGE_MAINTAINER_CHANGED, pkg.fullname, maintainers);
|
|
289
330
|
}
|
|
@@ -313,9 +354,15 @@ let PackageManagerService = PackageManagerService_1 = class PackageManagerServic
|
|
|
313
354
|
async listPackageFullManifests(scope, name, isSync = false) {
|
|
314
355
|
return await this._listPackageFullOrAbbreviatedManifests(scope, name, true, isSync);
|
|
315
356
|
}
|
|
357
|
+
async listPackageFullManifestsBuffer(scope, name) {
|
|
358
|
+
return await this._listPackageFullOrAbbreviatedManifestsBuffer(scope, name, true);
|
|
359
|
+
}
|
|
316
360
|
async listPackageAbbreviatedManifests(scope, name, isSync = false) {
|
|
317
361
|
return await this._listPackageFullOrAbbreviatedManifests(scope, name, false, isSync);
|
|
318
362
|
}
|
|
363
|
+
async listPackageAbbreviatedManifestsBuffer(scope, name) {
|
|
364
|
+
return await this._listPackageFullOrAbbreviatedManifestsBuffer(scope, name, false);
|
|
365
|
+
}
|
|
319
366
|
async showPackageVersionByVersionOrTag(scope, name, spec) {
|
|
320
367
|
const pkg = await this.packageRepository.findPackage(scope, name);
|
|
321
368
|
if (!pkg)
|
|
@@ -428,6 +475,23 @@ let PackageManagerService = PackageManagerService_1 = class PackageManagerServic
|
|
|
428
475
|
await this._mergeManifestDist(pkgVersion.manifestDist, mergeManifest);
|
|
429
476
|
await this._mergeManifestDist(pkgVersion.abbreviatedDist, mergeAbbreviated);
|
|
430
477
|
}
|
|
478
|
+
async savePackageVersionManifestWithBuilder(pkgVersion, manifestBuilder, abbreviatedBuilder) {
|
|
479
|
+
const manifestBytes = manifestBuilder.build();
|
|
480
|
+
const manifestIntegrity = await calculateIntegrity(manifestBytes);
|
|
481
|
+
pkgVersion.manifestDist.size = manifestBytes.length;
|
|
482
|
+
pkgVersion.manifestDist.shasum = manifestIntegrity.shasum;
|
|
483
|
+
pkgVersion.manifestDist.integrity = manifestIntegrity.integrity;
|
|
484
|
+
await this.distRepository.saveDist(pkgVersion.manifestDist, manifestBytes);
|
|
485
|
+
if (abbreviatedBuilder) {
|
|
486
|
+
const abbreviatedBytes = abbreviatedBuilder.build();
|
|
487
|
+
const abbreviatedIntegrity = await calculateIntegrity(abbreviatedBytes);
|
|
488
|
+
pkgVersion.abbreviatedDist.size = abbreviatedBytes.length;
|
|
489
|
+
pkgVersion.abbreviatedDist.shasum = abbreviatedIntegrity.shasum;
|
|
490
|
+
pkgVersion.abbreviatedDist.integrity = abbreviatedIntegrity.integrity;
|
|
491
|
+
await this.distRepository.saveDist(pkgVersion.abbreviatedDist, abbreviatedBytes);
|
|
492
|
+
}
|
|
493
|
+
await this.packageRepository.savePackageVersion(pkgVersion);
|
|
494
|
+
}
|
|
431
495
|
/**
|
|
432
496
|
* save package version readme
|
|
433
497
|
*/
|
|
@@ -438,12 +502,22 @@ let PackageManagerService = PackageManagerService_1 = class PackageManagerServic
|
|
|
438
502
|
async savePackageReadme(pkg, readmeFile) {
|
|
439
503
|
if (!pkg.manifestsDist)
|
|
440
504
|
return;
|
|
441
|
-
const
|
|
442
|
-
if (
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
505
|
+
const readme = await readFile(readmeFile, 'utf8');
|
|
506
|
+
if (this.config.cnpmcore.experimental.enableJSONBuilder) {
|
|
507
|
+
const fullManifestsBuilder = await this.distRepository.readDistBytesToJSONBuilder(pkg.manifestsDist);
|
|
508
|
+
if (!fullManifestsBuilder)
|
|
509
|
+
return;
|
|
510
|
+
fullManifestsBuilder.setIn(['readme'], readme);
|
|
511
|
+
await this._updatePackageManifestsToDistsWithBuilder(pkg, fullManifestsBuilder, undefined);
|
|
512
|
+
}
|
|
513
|
+
else {
|
|
514
|
+
const fullManifests = await this.distRepository.readDistBytesToJSON(pkg.manifestsDist);
|
|
515
|
+
if (!fullManifests)
|
|
516
|
+
return;
|
|
517
|
+
fullManifests.readme = readme;
|
|
518
|
+
await this._updatePackageManifestsToDists(pkg, fullManifests, null);
|
|
519
|
+
}
|
|
520
|
+
this.logger.info('[PackageManagerService.savePackageReadme] save packageId:%s readme, size: %s', pkg.packageId, readme.length);
|
|
447
521
|
}
|
|
448
522
|
async _removePackageVersionAndDist(pkgVersion) {
|
|
449
523
|
// remove nfs dists
|
|
@@ -455,6 +529,7 @@ let PackageManagerService = PackageManagerService_1 = class PackageManagerServic
|
|
|
455
529
|
]);
|
|
456
530
|
// remove from repository
|
|
457
531
|
await this.packageRepository.removePackageVersion(pkgVersion);
|
|
532
|
+
this.logger.info('[packageManagerService.removePackageVersionAndDist:success] packageVersionId: %s', pkgVersion.packageVersionId);
|
|
458
533
|
}
|
|
459
534
|
async unpublishPackage(pkg) {
|
|
460
535
|
const pkgVersions = await this.packageRepository.listPackageVersions(pkg.packageId);
|
|
@@ -486,12 +561,12 @@ let PackageManagerService = PackageManagerService_1 = class PackageManagerServic
|
|
|
486
561
|
// oxlint-disable-next-line typescript-eslint/no-non-null-assertion
|
|
487
562
|
pkg.abbreviatedsDist, undefined, unpublishedInfo);
|
|
488
563
|
this.eventBus.emit(PACKAGE_UNPUBLISHED, pkg.fullname);
|
|
564
|
+
this.logger.info('[packageManagerService.unpublishPackage:success] packageId: %s, fullname: %s', pkg.packageId, pkg.fullname);
|
|
489
565
|
}
|
|
490
566
|
async removePackageVersion(pkg, pkgVersion, skipRefreshPackageManifests = false) {
|
|
491
567
|
const currentVersions = await this.packageRepository.listPackageVersionNames(pkg.packageId);
|
|
492
568
|
// only one version, unpublish the package
|
|
493
|
-
if (currentVersions.length === 1 &&
|
|
494
|
-
currentVersions[0] === pkgVersion.version) {
|
|
569
|
+
if (currentVersions.length === 1 && currentVersions[0] === pkgVersion.version) {
|
|
495
570
|
await this.unpublishPackage(pkg);
|
|
496
571
|
return;
|
|
497
572
|
}
|
|
@@ -512,9 +587,7 @@ let PackageManagerService = PackageManagerService_1 = class PackageManagerServic
|
|
|
512
587
|
}
|
|
513
588
|
}
|
|
514
589
|
if (skipRefreshPackageManifests !== true) {
|
|
515
|
-
await this.refreshPackageChangeVersionsToDists(pkg, undefined, [
|
|
516
|
-
pkgVersion.version,
|
|
517
|
-
]);
|
|
590
|
+
await this.refreshPackageChangeVersionsToDists(pkg, undefined, [pkgVersion.version]);
|
|
518
591
|
this.eventBus.emit(PACKAGE_VERSION_REMOVED, pkg.fullname, pkgVersion.version, updateTag);
|
|
519
592
|
}
|
|
520
593
|
return;
|
|
@@ -557,7 +630,11 @@ let PackageManagerService = PackageManagerService_1 = class PackageManagerServic
|
|
|
557
630
|
return true;
|
|
558
631
|
}
|
|
559
632
|
async refreshPackageChangeVersionsToDists(pkg, updateVersions, removeVersions) {
|
|
633
|
+
if (this.config.cnpmcore.experimental.enableJSONBuilder) {
|
|
634
|
+
return await this._refreshPackageChangeVersionsToDistsWithBuilder(pkg, updateVersions, removeVersions);
|
|
635
|
+
}
|
|
560
636
|
if (!pkg.manifestsDist?.distId || !pkg.abbreviatedsDist?.distId) {
|
|
637
|
+
// no dists, refresh all again, the first time sync package will not have dists
|
|
561
638
|
return await this._refreshPackageManifestsToDists(pkg);
|
|
562
639
|
}
|
|
563
640
|
const fullManifests = await this.distRepository.readDistBytesToJSON(pkg.manifestsDist);
|
|
@@ -577,16 +654,13 @@ let PackageManagerService = PackageManagerService_1 = class PackageManagerServic
|
|
|
577
654
|
delete manifest.readme;
|
|
578
655
|
}
|
|
579
656
|
fullManifests.versions[packageVersion.version] = manifest;
|
|
580
|
-
fullManifests.time[packageVersion.version] =
|
|
581
|
-
packageVersion.publishTime;
|
|
657
|
+
fullManifests.time[packageVersion.version] = packageVersion.publishTime;
|
|
582
658
|
const abbreviatedManifest = await this.distRepository.readDistBytesToJSON(packageVersion.abbreviatedDist);
|
|
583
659
|
if (abbreviatedManifest) {
|
|
584
|
-
abbreviatedManifests.versions[packageVersion.version] =
|
|
585
|
-
abbreviatedManifest;
|
|
660
|
+
abbreviatedManifests.versions[packageVersion.version] = abbreviatedManifest;
|
|
586
661
|
// abbreviatedManifests.time is guaranteed to exist since it's initialized in _listPackageAbbreviatedManifests
|
|
587
662
|
if (abbreviatedManifests.time) {
|
|
588
|
-
abbreviatedManifests.time[packageVersion.version] =
|
|
589
|
-
packageVersion.publishTime;
|
|
663
|
+
abbreviatedManifests.time[packageVersion.version] = packageVersion.publishTime;
|
|
590
664
|
}
|
|
591
665
|
}
|
|
592
666
|
}
|
|
@@ -605,6 +679,57 @@ let PackageManagerService = PackageManagerService_1 = class PackageManagerServic
|
|
|
605
679
|
// store to nfs dist
|
|
606
680
|
await this._updatePackageManifestsToDists(pkg, fullManifests, abbreviatedManifests);
|
|
607
681
|
}
|
|
682
|
+
async _refreshPackageChangeVersionsToDistsWithBuilder(pkg, updateVersions, removeVersions) {
|
|
683
|
+
if (!pkg.manifestsDist?.distId || !pkg.abbreviatedsDist?.distId) {
|
|
684
|
+
// no dists, refresh all again, the first time sync package will not have dists
|
|
685
|
+
return await this._refreshPackageManifestsToDists(pkg);
|
|
686
|
+
}
|
|
687
|
+
const fullManifestsBuffer = await this.distRepository.readDistBytesToBuffer(pkg.manifestsDist);
|
|
688
|
+
const abbreviatedManifestsBuffer = await this.distRepository.readDistBytesToBuffer(pkg.abbreviatedsDist);
|
|
689
|
+
if (!fullManifestsBuffer || !abbreviatedManifestsBuffer) {
|
|
690
|
+
// is unpublished, refresh all again
|
|
691
|
+
return await this._refreshPackageManifestsToDists(pkg);
|
|
692
|
+
}
|
|
693
|
+
const fullManifestsBuilder = new JSONBuilder(fullManifestsBuffer);
|
|
694
|
+
const abbreviatedManifestsBuilder = new JSONBuilder(abbreviatedManifestsBuffer);
|
|
695
|
+
if (!fullManifestsBuilder.hasIn(['versions']) || !abbreviatedManifestsBuilder.hasIn(['versions'])) {
|
|
696
|
+
// is unpublished, refresh all again
|
|
697
|
+
return await this._refreshPackageManifestsToDists(pkg);
|
|
698
|
+
}
|
|
699
|
+
if (updateVersions) {
|
|
700
|
+
for (const version of updateVersions) {
|
|
701
|
+
const packageVersion = await this.packageRepository.findPackageVersion(pkg.packageId, version);
|
|
702
|
+
if (packageVersion) {
|
|
703
|
+
const manifest = await this.distRepository.readDistBytesToJSON(packageVersion.manifestDist);
|
|
704
|
+
if (!manifest)
|
|
705
|
+
continue;
|
|
706
|
+
if ('readme' in manifest) {
|
|
707
|
+
delete manifest.readme;
|
|
708
|
+
}
|
|
709
|
+
fullManifestsBuilder.setIn(['versions', packageVersion.version], manifest);
|
|
710
|
+
fullManifestsBuilder.setIn(['time', packageVersion.version], packageVersion.publishTime);
|
|
711
|
+
const abbreviatedManifest = await this.distRepository.readDistBytesToJSON(packageVersion.abbreviatedDist);
|
|
712
|
+
if (abbreviatedManifest) {
|
|
713
|
+
abbreviatedManifestsBuilder.setIn(['versions', packageVersion.version], abbreviatedManifest);
|
|
714
|
+
// abbreviatedManifests.time is guaranteed to exist since it's initialized in _listPackageAbbreviatedManifests
|
|
715
|
+
abbreviatedManifestsBuilder.setIn(['time', packageVersion.version], packageVersion.publishTime);
|
|
716
|
+
}
|
|
717
|
+
}
|
|
718
|
+
}
|
|
719
|
+
}
|
|
720
|
+
if (removeVersions) {
|
|
721
|
+
for (const version of removeVersions) {
|
|
722
|
+
fullManifestsBuilder.deleteIn(['versions', version]);
|
|
723
|
+
fullManifestsBuilder.deleteIn(['time', version]);
|
|
724
|
+
abbreviatedManifestsBuilder.deleteIn(['versions', version]);
|
|
725
|
+
abbreviatedManifestsBuilder.deleteIn(['time', version]);
|
|
726
|
+
}
|
|
727
|
+
}
|
|
728
|
+
// update dist-tags
|
|
729
|
+
await this._setPackageDistTagsAndLatestInfosWithBuilder(pkg, fullManifestsBuilder, abbreviatedManifestsBuilder);
|
|
730
|
+
// store to nfs dist
|
|
731
|
+
await this._updatePackageManifestsToDistsWithBuilder(pkg, fullManifestsBuilder, abbreviatedManifestsBuilder);
|
|
732
|
+
}
|
|
608
733
|
async getSourceRegistry(pkg) {
|
|
609
734
|
let registry;
|
|
610
735
|
if (pkg.registryId) {
|
|
@@ -633,28 +758,45 @@ let PackageManagerService = PackageManagerService_1 = class PackageManagerServic
|
|
|
633
758
|
}
|
|
634
759
|
// only refresh root attributes only, e.g.: dist-tags, maintainers
|
|
635
760
|
async _refreshPackageManifestRootAttributeOnlyToDists(pkg, refreshAttr) {
|
|
761
|
+
if (this.config.cnpmcore.experimental.enableJSONBuilder) {
|
|
762
|
+
return await this._refreshPackageManifestRootAttributeOnlyToDistsWithBuilder(pkg, refreshAttr);
|
|
763
|
+
}
|
|
636
764
|
if (refreshAttr === 'maintainers') {
|
|
637
|
-
const fullManifests = await this.distRepository.readDistBytesToJSON(
|
|
638
|
-
// oxlint-disable-next-line typescript-eslint/no-non-null-assertion
|
|
639
|
-
pkg.manifestsDist);
|
|
640
|
-
const maintainers = await this.maintainers(pkg);
|
|
765
|
+
const fullManifests = await this.distRepository.readDistBytesToJSON(pkg.manifestsDist);
|
|
641
766
|
if (fullManifests) {
|
|
767
|
+
const maintainers = await this.maintainers(pkg);
|
|
642
768
|
fullManifests.maintainers = maintainers;
|
|
643
769
|
await this._updatePackageManifestsToDists(pkg, fullManifests, null);
|
|
644
770
|
}
|
|
645
771
|
}
|
|
646
772
|
else if (refreshAttr === 'dist-tags') {
|
|
647
|
-
const fullManifests = await this.distRepository.readDistBytesToJSON(
|
|
648
|
-
// oxlint-disable-next-line typescript-eslint/no-non-null-assertion
|
|
649
|
-
pkg.manifestsDist);
|
|
773
|
+
const fullManifests = await this.distRepository.readDistBytesToJSON(pkg.manifestsDist);
|
|
650
774
|
if (fullManifests) {
|
|
651
|
-
const abbreviatedManifests = await this.distRepository.readDistBytesToJSON(
|
|
652
|
-
// oxlint-disable-next-line typescript-eslint/no-non-null-assertion
|
|
653
|
-
pkg.abbreviatedsDist);
|
|
775
|
+
const abbreviatedManifests = await this.distRepository.readDistBytesToJSON(pkg.abbreviatedsDist);
|
|
654
776
|
if (abbreviatedManifests) {
|
|
655
777
|
await this._setPackageDistTagsAndLatestInfos(pkg, fullManifests, abbreviatedManifests);
|
|
656
778
|
}
|
|
657
|
-
await this._updatePackageManifestsToDists(pkg, fullManifests, abbreviatedManifests
|
|
779
|
+
await this._updatePackageManifestsToDists(pkg, fullManifests, abbreviatedManifests);
|
|
780
|
+
}
|
|
781
|
+
}
|
|
782
|
+
}
|
|
783
|
+
async _refreshPackageManifestRootAttributeOnlyToDistsWithBuilder(pkg, refreshAttr) {
|
|
784
|
+
if (refreshAttr === 'maintainers') {
|
|
785
|
+
const fullManifestsBuilder = await this.distRepository.readDistBytesToJSONBuilder(pkg.manifestsDist);
|
|
786
|
+
if (fullManifestsBuilder) {
|
|
787
|
+
const maintainers = await this.maintainers(pkg);
|
|
788
|
+
fullManifestsBuilder.setIn(['maintainers'], maintainers);
|
|
789
|
+
await this._updatePackageManifestsToDistsWithBuilder(pkg, fullManifestsBuilder, undefined);
|
|
790
|
+
}
|
|
791
|
+
}
|
|
792
|
+
else if (refreshAttr === 'dist-tags') {
|
|
793
|
+
const fullManifestsBuilder = await this.distRepository.readDistBytesToJSONBuilder(pkg.manifestsDist);
|
|
794
|
+
if (fullManifestsBuilder) {
|
|
795
|
+
const abbreviatedManifestsBuilder = await this.distRepository.readDistBytesToJSONBuilder(pkg.abbreviatedsDist);
|
|
796
|
+
if (abbreviatedManifestsBuilder) {
|
|
797
|
+
await this._setPackageDistTagsAndLatestInfosWithBuilder(pkg, fullManifestsBuilder, abbreviatedManifestsBuilder);
|
|
798
|
+
}
|
|
799
|
+
await this._updatePackageManifestsToDistsWithBuilder(pkg, fullManifestsBuilder, abbreviatedManifestsBuilder);
|
|
658
800
|
}
|
|
659
801
|
}
|
|
660
802
|
}
|
|
@@ -680,6 +822,28 @@ let PackageManagerService = PackageManagerService_1 = class PackageManagerServic
|
|
|
680
822
|
}
|
|
681
823
|
}
|
|
682
824
|
}
|
|
825
|
+
_mergeLatestManifestFieldsWithBuilder(fullManifestsBuilder, latestManifest) {
|
|
826
|
+
if (!latestManifest)
|
|
827
|
+
return;
|
|
828
|
+
// https://github.com/npm/registry/blob/master/docs/responses/package-metadata.md#full-metadata-format
|
|
829
|
+
const fieldsFromLatestManifest = [
|
|
830
|
+
'author',
|
|
831
|
+
'bugs',
|
|
832
|
+
'contributors',
|
|
833
|
+
'description',
|
|
834
|
+
'homepage',
|
|
835
|
+
'keywords',
|
|
836
|
+
'license',
|
|
837
|
+
'readmeFilename',
|
|
838
|
+
'repository',
|
|
839
|
+
];
|
|
840
|
+
// the latest version metas
|
|
841
|
+
for (const field of fieldsFromLatestManifest) {
|
|
842
|
+
if (latestManifest[field]) {
|
|
843
|
+
fullManifestsBuilder.setIn([field], latestManifest[field]);
|
|
844
|
+
}
|
|
845
|
+
}
|
|
846
|
+
}
|
|
683
847
|
async _setPackageDistTagsAndLatestInfos(pkg, fullManifests, abbreviatedManifests) {
|
|
684
848
|
const distTags = await this.distTags(pkg);
|
|
685
849
|
if (distTags.latest) {
|
|
@@ -687,12 +851,26 @@ let PackageManagerService = PackageManagerService_1 = class PackageManagerServic
|
|
|
687
851
|
if (packageVersion) {
|
|
688
852
|
fullManifests.readme = await this.distRepository.readDistBytesToString(packageVersion.readmeDist);
|
|
689
853
|
const latestManifest = await this.distRepository.readDistBytesToJSON(packageVersion.manifestDist);
|
|
690
|
-
this._mergeLatestManifestFields(fullManifests, latestManifest
|
|
854
|
+
this._mergeLatestManifestFields(fullManifests, latestManifest);
|
|
691
855
|
}
|
|
692
856
|
}
|
|
693
857
|
fullManifests['dist-tags'] = distTags;
|
|
694
858
|
abbreviatedManifests['dist-tags'] = distTags;
|
|
695
859
|
}
|
|
860
|
+
async _setPackageDistTagsAndLatestInfosWithBuilder(pkg, fullManifestsBuilder, abbreviatedManifestsBuilder) {
|
|
861
|
+
const distTags = await this.distTags(pkg);
|
|
862
|
+
if (distTags.latest) {
|
|
863
|
+
const packageVersion = await this.packageRepository.findPackageVersion(pkg.packageId, distTags.latest);
|
|
864
|
+
if (packageVersion) {
|
|
865
|
+
const readme = await this.distRepository.readDistBytesToString(packageVersion.readmeDist);
|
|
866
|
+
fullManifestsBuilder.setIn(['readme'], readme);
|
|
867
|
+
const latestManifest = await this.distRepository.readDistBytesToJSON(packageVersion.manifestDist);
|
|
868
|
+
this._mergeLatestManifestFieldsWithBuilder(fullManifestsBuilder, latestManifest);
|
|
869
|
+
}
|
|
870
|
+
}
|
|
871
|
+
fullManifestsBuilder.setIn(['dist-tags'], distTags);
|
|
872
|
+
abbreviatedManifestsBuilder.setIn(['dist-tags'], distTags);
|
|
873
|
+
}
|
|
696
874
|
async _mergeManifestDist(manifestDist, mergeData, replaceData) {
|
|
697
875
|
let manifest = await this.distRepository.readDistBytesToJSON(manifestDist);
|
|
698
876
|
if (mergeData && manifest) {
|
|
@@ -707,6 +885,7 @@ let PackageManagerService = PackageManagerService_1 = class PackageManagerServic
|
|
|
707
885
|
manifestDist.shasum = manifestIntegrity.shasum;
|
|
708
886
|
manifestDist.integrity = manifestIntegrity.integrity;
|
|
709
887
|
await this.distRepository.saveDist(manifestDist, manifestBytes);
|
|
888
|
+
// FIXME: should store new size, shasum and integrity to database
|
|
710
889
|
}
|
|
711
890
|
async _updatePackageManifestsToDists(pkg, fullManifests, abbreviatedManifests) {
|
|
712
891
|
const modified = new Date();
|
|
@@ -737,8 +916,49 @@ let PackageManagerService = PackageManagerService_1 = class PackageManagerServic
|
|
|
737
916
|
if (pkg.abbreviatedsDist?.distId) {
|
|
738
917
|
pkg.abbreviatedsDist.size = abbreviatedManifestsDistBytes.length;
|
|
739
918
|
pkg.abbreviatedsDist.shasum = abbreviatedManifestsDistIntegrity.shasum;
|
|
740
|
-
pkg.abbreviatedsDist.integrity =
|
|
741
|
-
|
|
919
|
+
pkg.abbreviatedsDist.integrity = abbreviatedManifestsDistIntegrity.integrity;
|
|
920
|
+
}
|
|
921
|
+
else {
|
|
922
|
+
pkg.abbreviatedsDist = pkg.createAbbreviatedManifests({
|
|
923
|
+
size: abbreviatedManifestsDistBytes.length,
|
|
924
|
+
shasum: abbreviatedManifestsDistIntegrity.shasum,
|
|
925
|
+
integrity: abbreviatedManifestsDistIntegrity.integrity,
|
|
926
|
+
});
|
|
927
|
+
}
|
|
928
|
+
await this.distRepository.saveDist(pkg.abbreviatedsDist, abbreviatedManifestsDistBytes);
|
|
929
|
+
await this.packageRepository.savePackageDist(pkg, false);
|
|
930
|
+
}
|
|
931
|
+
}
|
|
932
|
+
async _updatePackageManifestsToDistsWithBuilder(pkg, fullManifestsBuilder, abbreviatedManifestsBuilder) {
|
|
933
|
+
const modified = new Date();
|
|
934
|
+
if (fullManifestsBuilder) {
|
|
935
|
+
fullManifestsBuilder.setIn(['time', 'modified'], modified);
|
|
936
|
+
// same to dist
|
|
937
|
+
const fullManifestsDistBytes = fullManifestsBuilder.build();
|
|
938
|
+
const fullManifestsDistIntegrity = await calculateIntegrity(fullManifestsDistBytes);
|
|
939
|
+
if (pkg.manifestsDist?.distId) {
|
|
940
|
+
pkg.manifestsDist.size = fullManifestsDistBytes.length;
|
|
941
|
+
pkg.manifestsDist.shasum = fullManifestsDistIntegrity.shasum;
|
|
942
|
+
pkg.manifestsDist.integrity = fullManifestsDistIntegrity.integrity;
|
|
943
|
+
}
|
|
944
|
+
else {
|
|
945
|
+
pkg.manifestsDist = pkg.createFullManifests({
|
|
946
|
+
size: fullManifestsDistBytes.length,
|
|
947
|
+
shasum: fullManifestsDistIntegrity.shasum,
|
|
948
|
+
integrity: fullManifestsDistIntegrity.integrity,
|
|
949
|
+
});
|
|
950
|
+
}
|
|
951
|
+
await this.distRepository.saveDist(pkg.manifestsDist, fullManifestsDistBytes);
|
|
952
|
+
await this.packageRepository.savePackageDist(pkg, true);
|
|
953
|
+
}
|
|
954
|
+
if (abbreviatedManifestsBuilder) {
|
|
955
|
+
abbreviatedManifestsBuilder.setIn(['modified'], modified);
|
|
956
|
+
const abbreviatedManifestsDistBytes = abbreviatedManifestsBuilder.build();
|
|
957
|
+
const abbreviatedManifestsDistIntegrity = await calculateIntegrity(abbreviatedManifestsDistBytes);
|
|
958
|
+
if (pkg.abbreviatedsDist?.distId) {
|
|
959
|
+
pkg.abbreviatedsDist.size = abbreviatedManifestsDistBytes.length;
|
|
960
|
+
pkg.abbreviatedsDist.shasum = abbreviatedManifestsDistIntegrity.shasum;
|
|
961
|
+
pkg.abbreviatedsDist.integrity = abbreviatedManifestsDistIntegrity.integrity;
|
|
742
962
|
}
|
|
743
963
|
else {
|
|
744
964
|
pkg.abbreviatedsDist = pkg.createAbbreviatedManifests({
|
|
@@ -776,7 +996,7 @@ let PackageManagerService = PackageManagerService_1 = class PackageManagerServic
|
|
|
776
996
|
const data = (await this.distRepository.readDistBytesToJSON(dist));
|
|
777
997
|
let needCalculateIntegrity = false;
|
|
778
998
|
if (bugVersion) {
|
|
779
|
-
const fixedVersions = await this.bugVersionService.fixPackageBugVersions(bugVersion, fullname, data
|
|
999
|
+
const fixedVersions = await this.bugVersionService.fixPackageBugVersions(bugVersion, fullname, data);
|
|
780
1000
|
if (fixedVersions.length > 0) {
|
|
781
1001
|
// calculate integrity after fix bug version
|
|
782
1002
|
needCalculateIntegrity = true;
|
|
@@ -796,12 +1016,8 @@ let PackageManagerService = PackageManagerService_1 = class PackageManagerServic
|
|
|
796
1016
|
return { etag, data, blockReason };
|
|
797
1017
|
}
|
|
798
1018
|
// read from database then update to dist, the next time will read from dist
|
|
799
|
-
const fullManifests = isFullManifests
|
|
800
|
-
|
|
801
|
-
: null;
|
|
802
|
-
const abbreviatedManifests = isFullManifests
|
|
803
|
-
? null
|
|
804
|
-
: await this._listPackageAbbreviatedManifests(pkg);
|
|
1019
|
+
const fullManifests = isFullManifests ? await this._listPackageFullManifests(pkg) : null;
|
|
1020
|
+
const abbreviatedManifests = isFullManifests ? null : await this._listPackageAbbreviatedManifests(pkg);
|
|
805
1021
|
if (!fullManifests && !abbreviatedManifests) {
|
|
806
1022
|
// not exists
|
|
807
1023
|
return { etag, data: null, blockReason };
|
|
@@ -810,7 +1026,7 @@ let PackageManagerService = PackageManagerService_1 = class PackageManagerServic
|
|
|
810
1026
|
await this._updatePackageManifestsToDists(pkg, fullManifests, abbreviatedManifests);
|
|
811
1027
|
const manifests = (fullManifests || abbreviatedManifests);
|
|
812
1028
|
if (bugVersion) {
|
|
813
|
-
const fixedVersions = await this.bugVersionService.fixPackageBugVersions(bugVersion, fullname, manifests
|
|
1029
|
+
const fixedVersions = await this.bugVersionService.fixPackageBugVersions(bugVersion, fullname, manifests);
|
|
814
1030
|
if (fixedVersions.length > 0) {
|
|
815
1031
|
// calculate integrity after fix bug version
|
|
816
1032
|
const distBytes = Buffer.from(JSON.stringify(manifests));
|
|
@@ -824,6 +1040,83 @@ let PackageManagerService = PackageManagerService_1 = class PackageManagerServic
|
|
|
824
1040
|
}
|
|
825
1041
|
return { etag, data: manifests, blockReason };
|
|
826
1042
|
}
|
|
1043
|
+
async _listPackageFullOrAbbreviatedManifestsBuffer(scope, name, isFullManifests) {
|
|
1044
|
+
let etag = '';
|
|
1045
|
+
let blockReason = '';
|
|
1046
|
+
const pkg = await this.packageRepository.findPackage(scope, name);
|
|
1047
|
+
if (!pkg) {
|
|
1048
|
+
return { etag, data: null, blockReason };
|
|
1049
|
+
}
|
|
1050
|
+
const block = await this.packageVersionBlockRepository.findPackageBlock(pkg.packageId);
|
|
1051
|
+
if (block) {
|
|
1052
|
+
blockReason = block.reason;
|
|
1053
|
+
}
|
|
1054
|
+
// let bugVersion: BugVersion | undefined;
|
|
1055
|
+
// // sync mode response no bug version fixed
|
|
1056
|
+
// if (!isSync) {
|
|
1057
|
+
// bugVersion = await this.bugVersionService.getBugVersion();
|
|
1058
|
+
// }
|
|
1059
|
+
// const fullname = getFullname(scope, name);
|
|
1060
|
+
let dist = isFullManifests ? pkg.manifestsDist : pkg.abbreviatedsDist;
|
|
1061
|
+
// read from dist
|
|
1062
|
+
if (dist?.distId) {
|
|
1063
|
+
etag = `"${dist.shasum}"`;
|
|
1064
|
+
const builder = await this.distRepository.readDistBytesToJSONBuilder(dist);
|
|
1065
|
+
if (!builder) {
|
|
1066
|
+
this.logger.warn('[PackageManagerService] dist: %s not found', dist.distId);
|
|
1067
|
+
return { etag, data: null, blockReason };
|
|
1068
|
+
}
|
|
1069
|
+
let needCalculateIntegrity = false;
|
|
1070
|
+
// set _source_registry_name in full manifestDist
|
|
1071
|
+
const registry = await this.getSourceRegistry(pkg);
|
|
1072
|
+
if (registry?.name && builder.getIn(['_source_registry_name']) !== registry.name) {
|
|
1073
|
+
builder.setIn(['_source_registry_name'], registry.name);
|
|
1074
|
+
// calculate integrity after set _source_registry_name
|
|
1075
|
+
needCalculateIntegrity = true;
|
|
1076
|
+
}
|
|
1077
|
+
// TODO: support bug version with builder
|
|
1078
|
+
// if (bugVersion) {
|
|
1079
|
+
// const fixedVersions = await this.bugVersionService.fixPackageBugVersions(bugVersion, fullname, data.versions);
|
|
1080
|
+
// if (fixedVersions.length > 0) {
|
|
1081
|
+
// // calculate integrity after fix bug version
|
|
1082
|
+
// needCalculateIntegrity = true;
|
|
1083
|
+
// }
|
|
1084
|
+
// }
|
|
1085
|
+
const data = builder.build();
|
|
1086
|
+
if (needCalculateIntegrity) {
|
|
1087
|
+
const distIntegrity = await calculateIntegrity(data);
|
|
1088
|
+
etag = `"${distIntegrity.shasum}"`;
|
|
1089
|
+
}
|
|
1090
|
+
return { etag, data, blockReason };
|
|
1091
|
+
}
|
|
1092
|
+
// read from database then update to dist, the next time will read from dist
|
|
1093
|
+
const fullManifests = isFullManifests ? await this._listPackageFullManifests(pkg) : null;
|
|
1094
|
+
const abbreviatedManifests = isFullManifests ? null : await this._listPackageAbbreviatedManifests(pkg);
|
|
1095
|
+
if (!fullManifests && !abbreviatedManifests) {
|
|
1096
|
+
// not exists
|
|
1097
|
+
return { etag, data: null, blockReason };
|
|
1098
|
+
}
|
|
1099
|
+
// update to dist, the next time will read from dist
|
|
1100
|
+
await this._updatePackageManifestsToDists(pkg, fullManifests, abbreviatedManifests);
|
|
1101
|
+
const manifests = fullManifests || abbreviatedManifests;
|
|
1102
|
+
dist = isFullManifests ? pkg.manifestsDist : pkg.abbreviatedsDist;
|
|
1103
|
+
etag = `"${dist.shasum}"`;
|
|
1104
|
+
// TODO: support bug version with builder
|
|
1105
|
+
// if (bugVersion) {
|
|
1106
|
+
// const fixedVersions = await this.bugVersionService.fixPackageBugVersions(
|
|
1107
|
+
// bugVersion,
|
|
1108
|
+
// fullname,
|
|
1109
|
+
// manifests as any,
|
|
1110
|
+
// );
|
|
1111
|
+
// if (fixedVersions.length > 0) {
|
|
1112
|
+
// // calculate integrity after fix bug version
|
|
1113
|
+
// const distBytes = Buffer.from(JSON.stringify(manifests));
|
|
1114
|
+
// const distIntegrity = await calculateIntegrity(distBytes);
|
|
1115
|
+
// etag = `"${distIntegrity.shasum}"`;
|
|
1116
|
+
// }
|
|
1117
|
+
// }
|
|
1118
|
+
return { etag, data: Buffer.from(JSON.stringify(manifests)), blockReason };
|
|
1119
|
+
}
|
|
827
1120
|
async maintainers(pkg) {
|
|
828
1121
|
const users = await this.packageRepository.listPackageMaintainers(pkg.packageId);
|
|
829
1122
|
return users.map(({ displayName, email }) => ({
|
|
@@ -886,7 +1179,6 @@ let PackageManagerService = PackageManagerService_1 = class PackageManagerServic
|
|
|
886
1179
|
const manifest = await this.distRepository.readDistBytesToJSON(packageVersion.manifestDist);
|
|
887
1180
|
if (!manifest)
|
|
888
1181
|
continue;
|
|
889
|
-
/* c8 ignore next 3 */
|
|
890
1182
|
if ('readme' in manifest) {
|
|
891
1183
|
delete manifest.readme;
|
|
892
1184
|
}
|
|
@@ -996,4 +1288,4 @@ PackageManagerService = PackageManagerService_1 = __decorate([
|
|
|
996
1288
|
})
|
|
997
1289
|
], PackageManagerService);
|
|
998
1290
|
export { PackageManagerService };
|
|
999
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFja2FnZU1hbmFnZXJTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vYXBwL2NvcmUvc2VydmljZS9QYWNrYWdlTWFuYWdlclNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxNQUFNLE1BQU0sb0JBQW9CLENBQUM7QUFFeEMsT0FBTyxFQUNMLFdBQVcsRUFDWCxNQUFNLEVBQ04sY0FBYyxHQUVmLE1BQU0sS0FBSyxDQUFDO0FBQ2IsT0FBTyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRTVFLE9BQU8sR0FBRyxNQUFNLGlCQUFpQixDQUFDO0FBQ2xDLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLElBQUksTUFBTSxPQUFPLENBQUM7QUFFekIsT0FBTyxFQUNMLGtCQUFrQixFQUVsQixtQkFBbUIsRUFDbkIsYUFBYSxFQUNiLFdBQVcsRUFDWCxlQUFlLEVBQ2Ysa0JBQWtCLEdBQ25CLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBWWxFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDN0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBR3JELE9BQU8sRUFDTCxhQUFhLEVBQ2IsZUFBZSxFQUNmLDBCQUEwQixFQUMxQiwwQkFBMEIsRUFDMUIsb0JBQW9CLEVB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
|
|
1291
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFja2FnZU1hbmFnZXJTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vYXBwL2NvcmUvc2VydmljZS9QYWNrYWdlTWFuYWdlclNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLE9BQU8sTUFBTSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBaUIsTUFBTSxLQUFLLENBQUM7QUFDekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzVFLE9BQU8sR0FBRyxNQUFNLGlCQUFpQixDQUFDO0FBQ2xDLE9BQU8sSUFBSSxNQUFNLE9BQU8sQ0FBQztBQUN6QixPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFHNUIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2xFLE9BQU8sRUFDTCxrQkFBa0IsRUFFbEIsbUJBQW1CLEVBQ25CLGFBQWEsRUFDYixXQUFXLEVBQ1gsZUFBZSxFQUNmLGtCQUFrQixHQUNuQixNQUFNLDZCQUE2QixDQUFDO0FBWXJDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBR3pFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDckQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBR3ZFLE9BQU8sRUFDTCxhQUFhLEVBQ2Is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
|