angular/packages/zone.js/package.json
JiaLiPassion 08b0c87a94 fix(zone.js): Promise.resolve(subPromise) should return subPromise (#53423)
In the original `Promise` impelmentation, zone.js follow the spec from
https://promisesaplus.com/#point-51.

```
const p1 = Promise.resolve(1);
const p2 = Promise.resolve(p1);

p1 === p2; // false
```
in this case, `p2` should be the same status with `p1` but they are
still different instances.

And for some edge case.

```
class MyPromise extends Promise {
  constructor(sub) {
    super((res) => res(null));
    this.sub = sub;
  }
  then(onFufilled, onRejected) {
    this.sub.then(onFufilled, onRejected);
  }
}

const p1 = new Promise(setTimeout(res), 100);
const myP = new MyPromise(p1);
const r = await myP;
r === 1; // false
```

So in the above code, `myP` is not the same instance with `p1`,
and since `myP` is resolved in constructor, so `await myP` will
just pass without waiting for `p1`.

And in the current `tc39` spec here https://tc39.es/ecma262/multipage/control-abstraction-objects.html#sec-promise-resolve
`Promise.resolve(subP)` should return `subP`.

```
const p1 = Promise.resolve(1);
const p2 = Promise.resolve(p1);

p1 === p2; // true
```

So the above `MyPromise` can wait for the `p1` correctly.

PR Close #53423
2023-12-11 10:55:12 -08:00

74 lines
2.1 KiB
JSON

{
"name": "zone.js",
"version": "0.14.2",
"description": "Zones for JavaScript",
"main": "./bundles/zone.umd.js",
"module": "./fesm2015/zone.js",
"es2015": "./fesm2015/zone.js",
"fesm2015": "./fesm2015/zone.js",
"typings": "./zone.d.ts",
"dependencies": {
"tslib": "^2.3.0"
},
"devDependencies": {
"@externs/nodejs": "^1.5.0",
"@types/node": "^10.9.4",
"domino": "https://github.com/angular/domino.git#9e7881d2ac1e5977cefbc557f935931ec23f6658",
"google-closure-compiler": "^20230802.0.0",
"jest": "^29.0",
"jest-environment-jsdom": "^29.0.3",
"jest-environment-node": "^29.0.3",
"mocha": "^10.2.0",
"mock-require": "3.0.3"
},
"scripts": {
"closuretest": "./scripts/closure/closure_compiler.sh",
"electrontest": "cd test/extra && node electron.js",
"jest:test": "jest --config ./test/jest/jest.config.js ./test/jest/jest.spec.js",
"jest:nodetest": "jest --config ./test/jest/jest.node.config.js ./test/jest/jest.spec.js",
"promisefinallytest": "mocha ./test/promise/promise.finally.spec.mjs"
},
"repository": {
"type": "git",
"url": "git://github.com/angular/angular.git",
"directory": "packages/zone.js"
},
"publishConfig": {
"registry": "https://wombat-dressing-room.appspot.com"
},
"author": "Brian Ford",
"license": "MIT",
"bugs": {
"url": "https://github.com/angular/angular/issues"
},
"exports": {
"./package.json": {
"default": "./package.json"
},
".": {
"types": "./zone.d.ts",
"require": "./bundles/zone.umd.js",
"default": "./fesm2015/zone.js"
},
"./testing": {
"require": "./bundles/zone-testing.umd.js",
"default": "./fesm2015/zone-testing.js"
},
"./node": {
"require": "./bundles/zone-node.umd.js",
"default": "./fesm2015/zone-node.js"
},
"./mix": {
"require": "./bundles/zone-mix.umd.js",
"default": "./fesm2015/zone-mix.js"
},
"./plugins/*.min": {
"require": "./bundles/*.umd.min.js",
"default": "./fesm2015/*.min.js"
},
"./plugins/*": {
"require": "./bundles/*.umd.js",
"default": "./fesm2015/*.js"
}
}
}