mirror of
https://github.com/facebook/react.git
synced 2026-02-25 05:03:03 +00:00
* New context API Introduces a declarative context API that propagates updates even when shouldComponentUpdate returns false. * Fuzz tester for context * Use ReactElement for provider and consumer children * Unify more branches in createFiberFromElement * Compare context values using Object.is Same semantics as PureComponent/shallowEqual. * Add support for Provider and Consumer to server-side renderer * Store providers on global stack Rather than using a linked list stored on the context type. The global stack can be reset in case of an interruption or error, whereas with the linked list implementation, you'd need to keep track of every context type. * Put new context API behind a feature flag We'll enable this in www only for now. * Store nearest provider on context object * Handle reentrancy in server renderer Context stack should be per server renderer instance. * Bailout of consumer updates using bitmask The context type defines an optional function that compares two context values, returning a bitfield. A consumer may specify the bits it needs for rendering. If a provider's context changes, and the consumer's bits do not intersect with the changed bits, we can skip the consumer. This is similar to how selectors are used in Redux but fast enough to do while scanning the tree. The only user code involved is the function that computes the changed bits. But that's only called once per provider update, not for every consumer. * Store current value and changed bits on context object There are fewer providers than consumers, so better to do this work at the provider. * Use maximum of 31 bits for bitmask This is the largest integer size in V8 on 32-bit systems. Warn in development if too large a number is used. * ProviderComponent -> ContextProvider, ConsumerComponent -> ContextConsumer * Inline Object.is * Warn if multiple renderers concurrently render the same context provider Let's see if we can get away with not supporting this for now. If it turns out that it's needed, we can fall back to backtracking the fiber return path. * Nits that came up during review
122 lines
4.7 KiB
JSON
122 lines
4.7 KiB
JSON
{
|
|
"private": true,
|
|
"version": "16.2.0",
|
|
"workspaces": [
|
|
"packages/*"
|
|
],
|
|
"devDependencies": {
|
|
"art": "^0.10.1",
|
|
"async": "^1.5.0",
|
|
"babel-cli": "^6.6.5",
|
|
"babel-code-frame": "^6.26.0",
|
|
"babel-core": "^6.0.0",
|
|
"babel-eslint": "^8.0.0",
|
|
"babel-jest": "^22.0.6",
|
|
"babel-plugin-check-es2015-constants": "^6.5.0",
|
|
"babel-plugin-external-helpers": "^6.22.0",
|
|
"babel-plugin-syntax-trailing-function-commas": "^6.5.0",
|
|
"babel-plugin-transform-async-to-generator": "^6.22.0",
|
|
"babel-plugin-transform-class-properties": "^6.11.5",
|
|
"babel-plugin-transform-es2015-arrow-functions": "^6.5.2",
|
|
"babel-plugin-transform-es2015-block-scoped-functions": "^6.5.0",
|
|
"babel-plugin-transform-es2015-block-scoping": "^6.23.0",
|
|
"babel-plugin-transform-es2015-classes": "^6.5.2",
|
|
"babel-plugin-transform-es2015-computed-properties": "^6.5.2",
|
|
"babel-plugin-transform-es2015-destructuring": "^6.5.0",
|
|
"babel-plugin-transform-es2015-for-of": "^6.5.2",
|
|
"babel-plugin-transform-es2015-literals": "^6.5.0",
|
|
"babel-plugin-transform-es2015-modules-commonjs": "^6.5.2",
|
|
"babel-plugin-transform-es2015-object-super": "^6.5.0",
|
|
"babel-plugin-transform-es2015-parameters": "^6.5.0",
|
|
"babel-plugin-transform-es2015-shorthand-properties": "^6.5.0",
|
|
"babel-plugin-transform-es2015-spread": "^6.5.2",
|
|
"babel-plugin-transform-es2015-template-literals": "^6.5.2",
|
|
"babel-plugin-transform-es3-member-expression-literals": "^6.5.0",
|
|
"babel-plugin-transform-es3-property-literals": "^6.5.0",
|
|
"babel-plugin-transform-object-rest-spread": "^6.6.5",
|
|
"babel-plugin-transform-react-jsx-source": "^6.8.0",
|
|
"babel-plugin-transform-regenerator": "^6.26.0",
|
|
"babel-preset-react": "^6.5.0",
|
|
"babel-traverse": "^6.9.0",
|
|
"babylon": "6.15.0",
|
|
"bundle-collapser": "^1.1.1",
|
|
"chalk": "^1.1.3",
|
|
"cli-table": "^0.3.1",
|
|
"coffee-script": "^1.8.0",
|
|
"core-js": "^2.2.1",
|
|
"coveralls": "^2.11.6",
|
|
"create-react-class": "^15.6.2",
|
|
"cross-env": "^5.1.1",
|
|
"danger": "^3.0.4",
|
|
"del": "^2.0.2",
|
|
"derequire": "^2.0.3",
|
|
"escape-string-regexp": "^1.0.5",
|
|
"eslint": "^4.1.0",
|
|
"eslint-config-fbjs": "^1.1.1",
|
|
"eslint-plugin-babel": "^3.3.0",
|
|
"eslint-plugin-flowtype": "^2.25.0",
|
|
"eslint-plugin-jest": "^21.6.1",
|
|
"eslint-plugin-react": "^6.7.1",
|
|
"eslint-plugin-react-internal": "link:./scripts/eslint-rules/",
|
|
"fbjs": "^0.8.16",
|
|
"fbjs-scripts": "^0.6.0",
|
|
"filesize": "^3.5.6",
|
|
"flow-bin": "^0.61.0",
|
|
"flow-coverage-report": "^0.4.0",
|
|
"git-branch": "^0.3.0",
|
|
"glob": "^6.0.4",
|
|
"glob-stream": "^6.1.0",
|
|
"gzip-js": "~0.3.2",
|
|
"gzip-size": "^3.0.0",
|
|
"jasmine-check": "^1.0.0-rc.0",
|
|
"jest": "^22.0.6",
|
|
"jest-diff": "^22.1.0",
|
|
"merge-stream": "^1.0.0",
|
|
"minimatch": "^3.0.4",
|
|
"minimist": "^1.2.0",
|
|
"mkdirp": "^0.5.1",
|
|
"ncp": "^2.0.0",
|
|
"object-assign": "^4.1.1",
|
|
"platform": "^1.1.0",
|
|
"prettier": "1.8.1",
|
|
"prop-types": "^15.6.0",
|
|
"random-seed": "^0.3.0",
|
|
"rimraf": "^2.6.1",
|
|
"rollup": "^0.52.1",
|
|
"rollup-plugin-babel": "^3.0.1",
|
|
"rollup-plugin-closure-compiler-js": "^1.0.6",
|
|
"rollup-plugin-commonjs": "^8.2.6",
|
|
"rollup-plugin-node-resolve": "^2.1.1",
|
|
"rollup-plugin-prettier": "^0.3.0",
|
|
"rollup-plugin-replace": "^2.0.0",
|
|
"rollup-plugin-strip-banner": "^0.2.0",
|
|
"run-sequence": "^1.1.4",
|
|
"targz": "^1.0.1",
|
|
"through2": "^2.0.0",
|
|
"tmp": "~0.0.28",
|
|
"typescript": "~1.8.10",
|
|
"yargs": "^6.3.0"
|
|
},
|
|
"devEngines": {
|
|
"node": "8.x || 9.x"
|
|
},
|
|
"scripts": {
|
|
"build": "npm run version-check && node ./scripts/rollup/build.js",
|
|
"flow-coverage": "flow-coverage-report --config ./.flowcoverage",
|
|
"linc": "node ./scripts/tasks/linc.js",
|
|
"lint": "node ./scripts/tasks/eslint.js",
|
|
"lint-build": "node ./scripts/rollup/validate/index.js",
|
|
"postinstall": "node node_modules/fbjs-scripts/node/check-dev-engines.js package.json",
|
|
"debug-test": "cross-env NODE_ENV=development node --inspect-brk node_modules/.bin/jest --config ./scripts/jest/config.source.js --runInBand",
|
|
"test": "cross-env NODE_ENV=development jest --config ./scripts/jest/config.source.js",
|
|
"test-prod": "cross-env NODE_ENV=production jest --config ./scripts/jest/config.source.js",
|
|
"test-prod-build": "yarn test-build-prod",
|
|
"test-build": "cross-env NODE_ENV=development jest --config ./scripts/jest/config.build.js",
|
|
"test-build-prod": "cross-env NODE_ENV=production jest --config ./scripts/jest/config.build.js",
|
|
"flow": "node ./scripts/tasks/flow.js",
|
|
"prettier": "node ./scripts/prettier/index.js write-changed",
|
|
"prettier-all": "node ./scripts/prettier/index.js write",
|
|
"version-check": "node ./scripts/tasks/version-check.js"
|
|
}
|
|
}
|