Skip to content

Commit 4bceac5

Browse files
authored
fix: export _cnpmcore_publish_time on abbreviated manifests (#374)
1 parent e09cdad commit 4bceac5

File tree

2 files changed

+20
-2
lines changed

2 files changed

+20
-2
lines changed

app/core/service/PackageManagerService.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,9 +129,14 @@ export class PackageManagerService extends AbstractService {
129129
delete cmd.packageJson.readme;
130130
}
131131

132+
const publishTime = cmd.publishTime || new Date();
133+
132134
// add _cnpmcore_publish_time field to cmd.packageJson
133135
if (!cmd.packageJson._cnpmcore_publish_time) {
134-
cmd.packageJson._cnpmcore_publish_time = new Date();
136+
cmd.packageJson._cnpmcore_publish_time = publishTime;
137+
}
138+
if (!cmd.packageJson.publish_time) {
139+
cmd.packageJson.publish_time = publishTime.getTime();
135140
}
136141

137142
// https://github.com/npm/registry/blob/master/docs/responses/package-metadata.md#abbreviated-version-object
@@ -187,6 +192,9 @@ export class PackageManagerService extends AbstractService {
187192
engines: cmd.packageJson.engines,
188193
_hasShrinkwrap: cmd.packageJson._hasShrinkwrap,
189194
hasInstallScript,
195+
// https://github.com/cnpm/npminstall/blob/13efc7eec21a61e509226e3772bfb75cd5605612/lib/install_package.js#L176
196+
// npminstall require publish time to show the recently update versions
197+
publish_time: cmd.packageJson.publish_time,
190198
});
191199
const abbreviatedDistBytes = Buffer.from(abbreviated);
192200
const abbreviatedDistIntegrity = await calculateIntegrity(abbreviatedDistBytes);
@@ -198,7 +206,7 @@ export class PackageManagerService extends AbstractService {
198206
pkgVersion = PackageVersion.create({
199207
packageId: pkg.packageId,
200208
version: cmd.version,
201-
publishTime: cmd.publishTime || new Date(),
209+
publishTime,
202210
manifestDist: pkg.createManifest(cmd.version, {
203211
size: manifestDistBytes.length,
204212
shasum: manifestDistIntegrity.shasum,

test/port/controller/package/ShowPackageController.test.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ describe('test/port/controller/package/ShowPackageController.test.ts', () => {
8383
const versionOne = pkg.versions['1.0.0'];
8484
assert.equal(versionOne.dist.unpackedSize, 6497043);
8585
assert(versionOne._cnpmcore_publish_time);
86+
assert(versionOne.publish_time);
8687
assert.equal(pkg._id, name);
8788
assert(pkg._rev);
8889
assert(versionOne._id);
@@ -214,6 +215,9 @@ describe('test/port/controller/package/ShowPackageController.test.ts', () => {
214215
const versionOne = pkg.versions['1.0.0'];
215216
assert(versionOne.dist.unpackedSize === 6497043);
216217
assert(versionOne._cnpmcore_publish_time);
218+
assert.equal(typeof versionOne._cnpmcore_publish_time, 'string');
219+
assert(versionOne.publish_time);
220+
assert.equal(typeof versionOne.publish_time, 'number');
217221
assert(pkg._id === scopedName);
218222
assert(pkg._rev);
219223
assert(versionOne._id);
@@ -258,6 +262,8 @@ describe('test/port/controller/package/ShowPackageController.test.ts', () => {
258262
const versionOne = pkg.versions['2.0.0'];
259263
assert.equal(versionOne.dist.unpackedSize, 6497043);
260264
assert(!versionOne._cnpmcore_publish_time);
265+
assert(versionOne.publish_time);
266+
assert.equal(typeof versionOne.publish_time, 'number');
261267
assert(!pkg._rev);
262268
assert(!pkg._id);
263269
assert(!versionOne._id);
@@ -325,6 +331,8 @@ describe('test/port/controller/package/ShowPackageController.test.ts', () => {
325331
const versionOne = pkg.versions['2.0.0'];
326332
assert.equal(versionOne.dist.unpackedSize, 6497043);
327333
assert(!versionOne._cnpmcore_publish_time);
334+
assert(versionOne.publish_time);
335+
assert.equal(typeof versionOne.publish_time, 'number');
328336
assert(!pkg._rev);
329337
assert(!pkg._id);
330338
assert(!versionOne._id);
@@ -347,6 +355,8 @@ describe('test/port/controller/package/ShowPackageController.test.ts', () => {
347355
const versionOne = pkg.versions['2.0.0'];
348356
assert(versionOne.dist.unpackedSize === 6497043);
349357
assert(!versionOne._cnpmcore_publish_time);
358+
assert(versionOne.publish_time);
359+
assert.equal(typeof versionOne.publish_time, 'number');
350360
assert(!pkg._rev);
351361
assert(!pkg._id);
352362
assert(!versionOne._id);

0 commit comments

Comments
 (0)