{"_id":"react-asyncmodule","_rev":"32-44b95e2a1600b198cdb15b6337f98617","name":"react-asyncmodule","dist-tags":{"latest":"1.1.0","next":"1.0.0-alpha.4","beta":"1.2.0-beta.6"},"versions":{"0.1.0":{"name":"react-asyncmodule","version":"0.1.0","description":"react async load component","author":{"name":"caoren"},"keywords":["react","async","module"],"bugs":{"url":"https://github.com/caoren/react-asyncmodule/issues"},"homepage":"https://github.com/caoren/react-asyncmodule","repository":{"type":"git","url":"git+https://github.com/caoren/react-asyncmodule.git"},"scripts":{"dev":"webpack-dev-server --port 7909 --content-base demo/ --config demo/webpack.config.js --progress --hot --inline","js:commonjs":"cross-env BABEL_ENV=commonjs babel src/ --out-dir dist/","js:es":"cross-env BABEL_ENV=es babel src --out-dir es","test":"jest","build":"npm run test && npm run js:commonjs && npm run js:es"},"devDependencies":{"autoprefixer":"^7.1.4","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^8.0.1","babel-jest":"^22.2.2","babel-loader":"^7.1.2","babel-plugin-add-module-exports":"^0.2.1","babel-plugin-syntax-dynamic-import":"^6.18.0","babel-preset-env":"^1.6.0","babel-preset-react":"^6.24.1","babel-preset-stage-0":"^6.24.1","copyfiles":"^1.2.0","cross-env":"^5.0.5","css-loader":"^0.28.7","enzyme":"^3.3.0","enzyme-adapter-react-15":"^1.0.5","eslint":"^4.9.0","eslint-config-airbnb-base":"^11.3.0","eslint-loader":"^1.9.0","eslint-plugin-import":"^2.7.0","eslint-plugin-jsx-a11y":"^6.0.2","eslint-plugin-react":"^7.4.0","extract-text-webpack-plugin":"^3.0.1","file-loader":"^1.1.4","jest":"^22.2.2","less":"^2.7.1","less-loader":"^2.2.3","less-plugin-autoprefix":"^1.5.1","less-plugin-inline-urls":"^1.2.0","postcss-loader":"^2.0.6","prop-types":"^15.3.0","react":"^15.3.0","react-dom":"^15.3.0","react-router":"^4.2.0","react-router-config":"^1.0.0-beta.4","react-router-dom":"^4.2.2","react-test-renderer":"^15.6.2","rimraf":"^2.6.2","style-loader":"^0.18.2","url-loader":"^0.5.8","webpack":"^3.6.0","webpack-dev-server":"^2.9.2","yargs":"^9.0.1"},"peerDependencies":{"prop-types":">=15.3.0","react":">=15.3.0","react-dom":">=15.3.0"},"engines":{"node":">= 6.2.0","npm":">= 3.0.0"},"jsnext:main":"es/index.js","main":"dist/index.js","jest":{"collectCoverage":true,"moduleFileExtensions":["js","jsx"],"testMatch":["<rootDir>/test/*.js?(x)"],"transform":{"^.+\\.js$":"babel-jest"}},"_id":"react-asyncmodule@0.1.0","_shasum":"fbd292b2dae6bfcdec4ea1cf34cd7f62b050747e","_from":".","_npmVersion":"3.10.8","_nodeVersion":"6.9.0","_npmUser":{"name":"caor1987","email":"caor1987@gmail.com"},"dist":{"shasum":"fbd292b2dae6bfcdec4ea1cf34cd7f62b050747e","tarball":"https://registry.npmjs.org/react-asyncmodule/-/react-asyncmodule-0.1.0.tgz","fileCount":23,"unpackedSize":133843,"integrity":"sha512-2ZPgW/a7Ba+cMFTp1d9Zvm7OauD+hw3vx/W8NAFsvgHFhnwB8mjrU2PYe0t824Q9sEDb5R5PgnzoJXqMOlePgA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDo/EuHvSoeETlruLfVvmy2ozBrZHDVxvOrjSZ1CYpH6wIgYwXf+aDwpg95ANS30eMNepT+cS709v3/UJrPbUyCKrU="}]},"maintainers":[{"name":"caor1987","email":"caor1987@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-asyncmodule_0.1.0_1532309535801_0.1888462422222652"},"_hasShrinkwrap":false},"0.1.1":{"name":"react-asyncmodule","version":"0.1.1","description":"react async load component","author":{"name":"caoren"},"keywords":["react","async","module"],"bugs":{"url":"https://github.com/caoren/react-asyncmodule/issues"},"homepage":"https://github.com/caoren/react-asyncmodule","repository":{"type":"git","url":"git+https://github.com/caoren/react-asyncmodule.git"},"scripts":{"dev":"webpack-dev-server --port 7909 --content-base demo/ --config demo/webpack.config.js --progress --hot --inline","js:commonjs":"cross-env BABEL_ENV=commonjs babel src/ --out-dir dist/","js:es":"cross-env BABEL_ENV=es babel src --out-dir es","test":"jest","build":"npm run test && npm run js:commonjs && npm run js:es"},"devDependencies":{"autoprefixer":"^7.1.4","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^8.0.1","babel-jest":"^22.2.2","babel-loader":"^7.1.2","babel-plugin-add-module-exports":"^0.2.1","babel-plugin-syntax-dynamic-import":"^6.18.0","babel-preset-env":"^1.6.0","babel-preset-react":"^6.24.1","babel-preset-stage-0":"^6.24.1","copyfiles":"^1.2.0","cross-env":"^5.0.5","css-loader":"^0.28.7","enzyme":"^3.3.0","enzyme-adapter-react-15":"^1.0.5","eslint":"^4.9.0","eslint-config-airbnb-base":"^11.3.0","eslint-loader":"^1.9.0","eslint-plugin-import":"^2.7.0","eslint-plugin-jsx-a11y":"^6.0.2","eslint-plugin-react":"^7.4.0","extract-text-webpack-plugin":"^3.0.1","file-loader":"^1.1.4","jest":"^22.2.2","less":"^2.7.1","less-loader":"^2.2.3","less-plugin-autoprefix":"^1.5.1","less-plugin-inline-urls":"^1.2.0","postcss-loader":"^2.0.6","prop-types":"^15.3.0","react":"^15.3.0","react-dom":"^15.3.0","react-router":"^4.2.0","react-router-config":"^1.0.0-beta.4","react-router-dom":"^4.2.2","react-test-renderer":"^15.6.2","rimraf":"^2.6.2","style-loader":"^0.18.2","url-loader":"^0.5.8","webpack":"^3.6.0","webpack-dev-server":"^2.9.2","yargs":"^9.0.1"},"peerDependencies":{"prop-types":">=15.3.0","react":">=15.3.0","react-dom":">=15.3.0"},"engines":{"node":">= 6.2.0","npm":">= 3.0.0"},"jsnext:main":"es/index.js","main":"dist/index.js","jest":{"collectCoverage":true,"moduleFileExtensions":["js","jsx"],"testMatch":["<rootDir>/test/*.js?(x)"],"transform":{"^.+\\.js$":"babel-jest"}},"_id":"react-asyncmodule@0.1.1","_shasum":"299217722b6344dde3390e93509b02e2f72c199b","_from":".","_npmVersion":"3.10.8","_nodeVersion":"6.9.0","_npmUser":{"name":"caor1987","email":"caor1987@gmail.com"},"dist":{"shasum":"299217722b6344dde3390e93509b02e2f72c199b","tarball":"https://registry.npmjs.org/react-asyncmodule/-/react-asyncmodule-0.1.1.tgz","fileCount":18,"unpackedSize":126916,"integrity":"sha512-MLVXmclxZYwn/jQe7lo/4vquWba4iezdx5m816FteQ1OOywXYrCEOOnWYpPQsLSedSMrLmcn1Hs//WeIp+ZqSw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFs6W4d4Qn5d1vPZhJoHJZVgpIhUkqidFIchMrZklOnGAiEA9iRu6KrSYRQ886KVyx99y5QNWM4BIlZ/3ZkL09dYu0E="}]},"maintainers":[{"name":"caor1987","email":"caor1987@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-asyncmodule_0.1.1_1532346621795_0.931345293574291"},"_hasShrinkwrap":false},"0.1.2":{"name":"react-asyncmodule","version":"0.1.2","description":"react async load component","author":{"name":"caoren"},"keywords":["react","async","module"],"bugs":{"url":"https://github.com/caoren/react-asyncmodule/issues"},"homepage":"https://github.com/caoren/react-asyncmodule","repository":{"type":"git","url":"git+https://github.com/caoren/react-asyncmodule.git"},"scripts":{"dev":"webpack-dev-server --port 7909 --content-base demo/ --config demo/webpack.config.js --progress --hot --inline","js:commonjs":"cross-env BABEL_ENV=commonjs babel src/ --out-dir dist/","js:es":"cross-env BABEL_ENV=es babel src --out-dir es","test":"jest","build":"npm run test && npm run js:commonjs && npm run js:es"},"devDependencies":{"autoprefixer":"^7.1.4","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^8.0.1","babel-jest":"^22.2.2","babel-loader":"^7.1.2","babel-plugin-add-module-exports":"^0.2.1","babel-plugin-syntax-dynamic-import":"^6.18.0","babel-preset-env":"^1.6.0","babel-preset-react":"^6.24.1","babel-preset-stage-0":"^6.24.1","copyfiles":"^1.2.0","cross-env":"^5.0.5","css-loader":"^0.28.7","enzyme":"^3.3.0","enzyme-adapter-react-15":"^1.0.5","eslint":"^4.9.0","eslint-config-airbnb-base":"^11.3.0","eslint-loader":"^1.9.0","eslint-plugin-import":"^2.7.0","eslint-plugin-jsx-a11y":"^6.0.2","eslint-plugin-react":"^7.4.0","extract-text-webpack-plugin":"^3.0.1","file-loader":"^1.1.4","jest":"^22.2.2","less":"^2.7.1","less-loader":"^2.2.3","less-plugin-autoprefix":"^1.5.1","less-plugin-inline-urls":"^1.2.0","postcss-loader":"^2.0.6","prop-types":"^15.3.0","react":"^15.3.0","react-dom":"^15.3.0","react-router":"^4.2.0","react-router-config":"^1.0.0-beta.4","react-router-dom":"^4.2.2","react-test-renderer":"^15.6.2","rimraf":"^2.6.2","style-loader":"^0.18.2","url-loader":"^0.5.8","webpack":"^3.6.0","webpack-dev-server":"^2.9.2","yargs":"^9.0.1"},"peerDependencies":{"prop-types":">=15.3.0","react":">=15.3.0","react-dom":">=15.3.0"},"engines":{"node":">= 6.2.0","npm":">= 3.0.0"},"jsnext:main":"es/index.js","main":"dist/index.js","jest":{"collectCoverage":true,"moduleFileExtensions":["js","jsx"],"testMatch":["<rootDir>/test/*.js?(x)"],"transform":{"^.+\\.js$":"babel-jest"}},"_id":"react-asyncmodule@0.1.2","_shasum":"3776ad2b5d8a9870befd26f29ae7b9facb702f41","_from":".","_npmVersion":"3.10.8","_nodeVersion":"6.9.0","_npmUser":{"name":"caor1987","email":"caor1987@gmail.com"},"dist":{"shasum":"3776ad2b5d8a9870befd26f29ae7b9facb702f41","tarball":"https://registry.npmjs.org/react-asyncmodule/-/react-asyncmodule-0.1.2.tgz","fileCount":18,"unpackedSize":126992,"integrity":"sha512-ILxKXHJhC1jbz7vDzwQBjyaTrGUzrEuMK/mXJ7DbvLh43LsqLTA+xuZjLFFH6EKMlK/Aw1cV7pQtayXlHRJ9Gw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD8b8/kHi4HaebdQCtFcO/sq0lsSHbLLu6wB/BMaPTpHAIgUp/iTi6wrujbNZ6j3HHlOP+4XZMD6hmVG2xjAfZPjmY="}]},"maintainers":[{"name":"caor1987","email":"caor1987@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-asyncmodule_0.1.2_1532505335887_0.7967273316304939"},"_hasShrinkwrap":false},"0.1.3":{"name":"react-asyncmodule","version":"0.1.3","description":"react async load component","author":{"name":"caoren"},"keywords":["react","async","module"],"bugs":{"url":"https://github.com/caoren/react-asyncmodule/issues"},"homepage":"https://github.com/caoren/react-asyncmodule","repository":{"type":"git","url":"git+https://github.com/caoren/react-asyncmodule.git"},"scripts":{"dev":"webpack-dev-server --port 7909 --content-base demo/ --config demo/webpack.config.js --progress --hot --inline","js:commonjs":"cross-env BABEL_ENV=commonjs babel src/ --out-dir dist/","js:es":"cross-env BABEL_ENV=es babel src --out-dir es","test":"jest","build":"npm run test && npm run js:commonjs && npm run js:es"},"devDependencies":{"autoprefixer":"^7.1.4","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^8.0.1","babel-jest":"^22.2.2","babel-loader":"^7.1.2","babel-plugin-add-module-exports":"^0.2.1","babel-plugin-syntax-dynamic-import":"^6.18.0","babel-preset-env":"^1.6.0","babel-preset-react":"^6.24.1","babel-preset-stage-0":"^6.24.1","copyfiles":"^1.2.0","cross-env":"^5.0.5","css-loader":"^0.28.7","enzyme":"^3.3.0","enzyme-adapter-react-15":"^1.0.5","eslint":"^4.9.0","eslint-config-airbnb-base":"^11.3.0","eslint-loader":"^1.9.0","eslint-plugin-import":"^2.7.0","eslint-plugin-jsx-a11y":"^6.0.2","eslint-plugin-react":"^7.4.0","extract-text-webpack-plugin":"^3.0.1","file-loader":"^1.1.4","jest":"^22.2.2","less":"^3.8.1","less-loader":"^2.2.3","less-plugin-autoprefix":"^1.5.1","less-plugin-inline-urls":"^1.2.0","postcss-loader":"^2.0.6","prop-types":"^15.3.0","react":"^15.3.0","react-dom":"^15.3.0","react-router":"^4.2.0","react-router-config":"^1.0.0-beta.4","react-router-dom":"^4.2.2","react-test-renderer":"^15.6.2","rimraf":"^2.6.2","style-loader":"^0.18.2","url-loader":"^1.1.1","webpack":"^3.6.0","webpack-dev-server":"^2.9.2","yargs":"^9.0.1"},"peerDependencies":{"prop-types":">=15.3.0","react":">=15.3.0","react-dom":">=15.3.0"},"engines":{"node":">= 6.2.0","npm":">= 3.0.0"},"jsnext:main":"es/index.js","main":"dist/index.js","jest":{"collectCoverage":true,"moduleFileExtensions":["js","jsx"],"testEnvironmentOptions":{"url":"http://localhost"},"testMatch":["<rootDir>/test/*.js?(x)"],"transform":{"^.+\\.js$":"babel-jest"}},"_id":"react-asyncmodule@0.1.3","_npmVersion":"6.4.1","_nodeVersion":"10.8.0","_npmUser":{"name":"caor1987","email":"caor1987@gmail.com"},"dist":{"integrity":"sha512-UekMN2mUn6OCHhTUAISePNBWsDomXMCFyDoAQCVrkumYeS/83Wd0g3PUccFVLJRp9hujD8Uvv68liy9rlrh4jA==","shasum":"059e587b93b60ef796315377771b02ec086d6650","tarball":"https://registry.npmjs.org/react-asyncmodule/-/react-asyncmodule-0.1.3.tgz","fileCount":6,"unpackedSize":27651,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbnlgkCRA9TVsSAnZWagAA2koP/jL2uy77v3V4MUnrrnnA\nXex3g6QUNjrE1hHpAK8eSYoIC3ELEt2ip0NaU6IRkQZCvdY17jsI27Ua4soK\n5Qp1cz3AiioAmipJOhyLcoR2ixdLp0EYHoO6JpuMTDuJD19qp4eG1g6uszR7\nVWAWw8WI50tpVr/3tMYRQW9qvMpNQgusFbjdHh7LQWdeYRQpnnUrEYClq3Yb\nTMftTskcLQ/TwZD8Iolqy13hEQnNdR61s0FVfU8djItiMsZnrunw9Llp6j0m\nvIyhIEJvqLMoUNpEmh7u21Uw6+alcbjb75NHoJhzxFzbXV/LPpJ/P5+J0GjB\nFBpazKYKYCN8qaRmtO1VVxC0moTtF26JcxDjz5YhcB24NZB6vNQcOfzlYB8z\ndrkXoSFYRo78GiRtnUXZgKp4J+KUvDaYXKWUMVwjIQJ/EkXHFs1JUF+X/MuR\nl5rqXZrFf65FbvhgALS3iQabtArOqzXpzf2U209sS8zDTI8EzxOQByGLwBxz\nqGyU3GUQE5aSHA5/8uzAt6KHp6o+1yDaDbL3iiAnVvnT2zqhkaqG0kOdria7\nScprmG8SBHzQCUDHIlvSnwMQCrhRVXQCN0HfwdJGCb4ffm6pYOdRn3Fuz7B/\n+f3Kq+sbbmmRCjCqjmn0EC10gE5jL+QYZpcRQAu6qQOBhphpt/0OFVlSTv4L\nijPa\r\n=Vu3G\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCa5ZIuBaWF53zjQKLXUe0ohUpbRpkmRGlnAWz9OmVs8QIhANqL4gzSe80VvEofGmwd5zICE4vAXb0dSxtkDMynDRON"}]},"maintainers":[{"name":"caor1987","email":"caor1987@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-asyncmodule_0.1.3_1537103907475_0.12503855640797124"},"_hasShrinkwrap":false},"0.1.4":{"name":"react-asyncmodule","version":"0.1.4","description":"react async load component","author":{"name":"caoren"},"keywords":["react","async","module"],"bugs":{"url":"https://github.com/caoren/react-asyncmodule/issues"},"homepage":"https://github.com/caoren/react-asyncmodule","repository":{"type":"git","url":"git+https://github.com/caoren/react-asyncmodule.git"},"scripts":{"dev":"webpack-dev-server --port 7909 --content-base demo/ --config demo/webpack.config.js --progress --hot --inline","js:commonjs":"cross-env BABEL_ENV=commonjs babel src/ --out-dir dist/","js:es":"cross-env BABEL_ENV=es babel src --out-dir es","test":"jest","build":"npm run test && npm run js:commonjs && npm run js:es"},"devDependencies":{"autoprefixer":"^7.1.4","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^8.0.1","babel-jest":"^22.2.2","babel-loader":"^7.1.2","babel-plugin-add-module-exports":"^0.2.1","babel-plugin-syntax-dynamic-import":"^6.18.0","babel-preset-env":"^1.6.0","babel-preset-react":"^6.24.1","babel-preset-stage-0":"^6.24.1","copyfiles":"^1.2.0","cross-env":"^5.0.5","css-loader":"^0.28.7","enzyme":"^3.3.0","enzyme-adapter-react-15":"^1.0.5","eslint":"^4.9.0","eslint-config-airbnb-base":"^11.3.0","eslint-loader":"^1.9.0","eslint-plugin-import":"^2.7.0","eslint-plugin-jsx-a11y":"^6.0.2","eslint-plugin-react":"^7.4.0","extract-text-webpack-plugin":"^3.0.1","file-loader":"^1.1.4","jest":"^22.2.2","less":"^3.8.1","less-loader":"^2.2.3","less-plugin-autoprefix":"^1.5.1","less-plugin-inline-urls":"^1.2.0","postcss-loader":"^2.0.6","prop-types":"^15.3.0","react":"^15.3.0","react-dom":"^15.3.0","react-router":"^4.2.0","react-router-config":"^1.0.0-beta.4","react-router-dom":"^4.2.2","react-test-renderer":"^15.6.2","rimraf":"^2.6.2","style-loader":"^0.18.2","url-loader":"^1.1.1","webpack":"^3.6.0","webpack-dev-server":"^2.9.2","yargs":"^9.0.1"},"peerDependencies":{"prop-types":">=15.3.0","react":">=15.3.0","react-dom":">=15.3.0"},"engines":{"node":">= 6.2.0","npm":">= 3.0.0"},"jsnext:main":"es/index.js","main":"dist/index.js","jest":{"collectCoverage":true,"moduleFileExtensions":["js","jsx"],"testEnvironmentOptions":{"url":"http://localhost"},"testMatch":["<rootDir>/test/*.js?(x)"],"transform":{"^.+\\.js$":"babel-jest"}},"_id":"react-asyncmodule@0.1.4","_npmVersion":"6.4.1","_nodeVersion":"10.8.0","_npmUser":{"name":"caor1987","email":"caor1987@gmail.com"},"dist":{"integrity":"sha512-dLVWoaj6aaKqm6XZQlTTxq0r1CHPaGwbTVMkkIdH4v81ln1RRjafMWI/UJri1dGeBsWxLKCut1977/mhwJNZ2Q==","shasum":"4a37a115e6f8d3126d79c12160be46bc534dcb7b","tarball":"https://registry.npmjs.org/react-asyncmodule/-/react-asyncmodule-0.1.4.tgz","fileCount":6,"unpackedSize":27583,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJboJUyCRA9TVsSAnZWagAAxOIP/jsssyupwh+MarHdHu94\n6OymcfisaH2T9VR6/cKNYXlSARvBfcHWJq/BHOynX6QxXTsxV8KbKBRwhCIP\nWqd8aQRcYUzR3WAiOdH7C9IVW+vrO5Xvon0W5PBYrSzrtu0fDcND+DQnWjNA\nQbwSIMcohFWqhhQ7PAys5BN9LIpY4YpGrf3scj59TqvRtBwNF5ndChBQ/Zms\nAMam2ak90fjukcZc3r8Y6IgthmdC5OhCCctmW39tRBK6BnVdW2/UWXqhmxkZ\nV7gZjcNaCmwJN0Och5qaRQ7yxgYkDBPAq0hfLn9J68ogdNE3YLgLspEOsKVW\nN/9hzPwSW08c+ISRhNqkN6SGT0fCG4Xs7mNYflOiOi7PnwMo9ALAiDFJKxbv\nuMB7Qe/R5Y7Hrr7WSCwYlMBLKU4smWDgw9WsNbmGo1NEh9S2/hwuPWl3AWSx\nG7v9PPd+dP7u0XoNZqEcQh+eoNlhncGgyUaCey46r2aWlbxPUWRVB7HlmcZc\nvAJSrt0RuIMLD3b5h5AbLz1x+zzpRliyNQNnOt1BjIj7BF7wq1QvRQW4sWJ4\nrP8bnLJL+KnCDPIIod8aHOai1ZPnVjksOLP67fZz0OO2kglBPEC0CsfYXbqT\nedExcNzmOjJKfOxzJFS8afwRAjtzheYzlCRSFA4S1Oa6wjzy+jVXYDDUuzrq\njRAu\r\n=Tyb5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAO3462buq0hsApnljg+x4eA6BhAIEtgdmTG1ORQq8ouAiASXqJBz75kB88MCoPNEqkuZlh2BRVVKwojr4oZL29vyQ=="}]},"maintainers":[{"name":"caor1987","email":"caor1987@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-asyncmodule_0.1.4_1537250610238_0.988519545129481"},"_hasShrinkwrap":false},"1.0.0-alpha.1":{"name":"react-asyncmodule","version":"1.0.0-alpha.1","description":"react async load component","author":{"name":"caoren"},"keywords":["react","async","module"],"bugs":{"url":"https://github.com/caoren/react-asyncmodule/issues"},"homepage":"https://github.com/caoren/react-asyncmodule","repository":{"type":"git","url":"git+https://github.com/caoren/react-asyncmodule.git"},"scripts":{"dev":"webpack-dev-server --port 7909 --content-base demo/ --config demo/webpack.config.js --progress --hot --inline","js:commonjs":"cross-env BABEL_ENV=commonjs babel src/ --out-dir dist/","js:es":"cross-env BABEL_ENV=es babel src --out-dir es","test":"jest","build":"npm run test && npm run js:commonjs && npm run js:es"},"devDependencies":{"autoprefixer":"^7.1.4","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^8.0.1","babel-jest":"^22.2.2","babel-loader":"^7.1.2","babel-plugin-add-module-exports":"^0.2.1","babel-plugin-syntax-dynamic-import":"^6.18.0","babel-preset-env":"^1.6.0","babel-preset-react":"^6.24.1","babel-preset-stage-0":"^6.24.1","copyfiles":"^1.2.0","cross-env":"^5.0.5","css-loader":"^0.28.7","enzyme":"^3.3.0","enzyme-adapter-react-15":"^1.0.5","eslint":"^4.9.0","eslint-config-airbnb-base":"^11.3.0","eslint-loader":"^1.9.0","eslint-plugin-import":"^2.7.0","eslint-plugin-jsx-a11y":"^6.0.2","eslint-plugin-react":"^7.4.0","extract-text-webpack-plugin":"^3.0.1","file-loader":"^1.1.4","jest":"^22.2.2","less":"^3.8.1","less-loader":"^2.2.3","less-plugin-autoprefix":"^1.5.1","less-plugin-inline-urls":"^1.2.0","postcss-loader":"^2.0.6","prop-types":"^15.3.0","react":"^15.3.0","react-dom":"^15.3.0","react-router":"^4.2.0","react-router-config":"^1.0.0-beta.4","react-router-dom":"^4.2.2","react-test-renderer":"^15.6.2","rimraf":"^2.6.2","style-loader":"^0.18.2","url-loader":"^1.1.1","webpack":"^3.6.0","webpack-dev-server":"^2.9.2","yargs":"^9.0.1"},"peerDependencies":{"prop-types":">=15.3.0","react":">=15.3.0","react-dom":">=15.3.0"},"engines":{"node":">= 6.2.0","npm":">= 3.0.0"},"jsnext:main":"es/index.js","main":"dist/index.js","jest":{"collectCoverage":true,"moduleFileExtensions":["js","jsx"],"testEnvironmentOptions":{"url":"http://localhost"},"testMatch":["<rootDir>/test/*.js?(x)"],"transform":{"^.+\\.js$":"babel-jest"}},"dependencies":{"create-react-context":"^0.2.3"},"readme":"# react-asyncmodule\n\nwebpack2+, it's recommended to use `import` method implementation code spliting, this component can help you simplify your code.\n\n## Installation\n\n```javascript\nnpm install react-asyncmodule --save\n```\n\n## Basic usage\n\n```javascript\nimport AsyncModule from 'react-asyncmodule';\n\nconst Home = AsyncModule({\n    load: () => import(/* webpackChunkName: \"home\" */ './home'),\n    resolveWeak: () => require.resolveWeak('./home'),\n    chunk: () => 'home',\n    loading: <Loading />,\n    error: <ErrorView />\n});\n\nconst List = AsyncModule({\n    load: () => import(/* webpackChunkName: \"list\" */ './list'),\n    resolveWeak: () => require.resolveWeak('./list'),\n    chunk: () => 'list',\n    loading: <Loading />,\n    error: <ErrorView />\n});\n```\n\n通过上面的代码，我们可以发现 `loading` and `error` 2个选项是相同的，可以这样简化。\n\n```javascript\nconst AsyncComponent = AsyncModule({\n    loading: <Loading />,\n    error: <ErrorView />\n});\n\nconst Home = AsyncComponent({\n    load: () => import(/* webpackChunkName: \"home\" */ './home'),\n    resolveWeak: () => require.resolveWeak('./home'),\n    chunk: () => 'home'\n});\n\nconst List = AsyncModule({\n    load: () => import(/* webpackChunkName: \"list\" */ './list'),\n    resolveWeak: () => require.resolveWeak('./list'),\n    chunk: () => 'list'\n});\n```\n很好，但是还有一些重复的代码。\n\n```javascript\nconst Home = AsyncComponent(import('./home'));\nconst List = AsyncComponent(import('./list'));\n```\n\n完美，使用这个 babel 插件 [babel-plugin-asyncmodule-import](https://github.com/caoren/react-asyncmodule/tree/master/packages/asyncmodule-import)。\n\n返回的 AsnycComponent 组件上有以下一些静态属性和方法。\n\n### chunkName\n\n属性，返回当前组件的 chunk 名称，即上面代码中的 `chunk` 方法的返回值。\n\n### preload\n\n预加载方法，返回一个 promise 实例，可在回调中获取到当前组件。\n\n### preloadWeak\n\n预加载方法，不同于 `preload`，该方法是同步返回当前的组件，通常用于 server render。\n\n\n## AsyncChunk\n\n该组件获取到当前匹配到的组件的 `chunkName`(就是上面 chunk 方法的返回) 和 `getInitialData` 组件上的静态方法，通常用于 server render。\n\n```javascript\nimport { AsyncChunk } from 'react-asyncmodule';\nimport { StaticRouter } from 'react-router';\nimport { renderToStaticMarkup } from 'react-dom/server';\n\nconst context = {};\nconst modules = [];\nconst saveModule = (module) => {\n    modules.push(module);\n}\nrenderToStaticMarkup(\n    <StaticRouter\n        location={url}\n        context={context}\n    >\n        <AsyncChunk report={saveModule}>\n            <Approutes />\n        </AsyncChunk>\n    </StaticRouter>\n);\n// [{ chunkName: 'list', getInitialData: [Function] ]\n```\n\n如果你未使用任何第三方数据状态管理库(如redux)，获取到数据后可通过 `AsyncChunk` 组件的 `receiveData` props传递数据至组件上。\n\n```javascript\nmodule[0].getInitialData({ ctx.req }).then((data) => {\n    const html = renderToString(\n        <StaticRouter\n                location={url}\n                context={context}\n            >\n            <AsyncChunk receiveData={data}>\n                <Approutes />\n            </AsyncChunk>\n        </StaticRouter>\n    );\n});\n```\n\n## API\n\n```javascript\nAsyncModule(Options);\n```\n\n## Options\n\n### load\n\n函数, 返回一个 `Promise` 实例. 通常由 webpack 提供的 `import` 方法生成.\n\n### render\n\n自定义渲染函数，接收两个参数分别是 `props` 和 `Component`。\n\n```javascript\nconst List = AsyncModule({\n    load: () => import(/* webpackChunkName: \"list\" */ './list'),\n    render: (props, Comp) => <Comp {...props} />\n});\n```\n\n### resolveWeak\n\n返回当前导入组件的 moduleId。由 webpack 的 `require.resolveWeak` 方法自动生成。\n\n### loading\n\n加载时显示的组件。\n\n\n### error\n\n加载错误时显示的组件。 接受两个参数`onRetry`和`error`。\n\n\n### delay\n\n默认 `200` ms。 `loading` 组件延迟显示的时间，单位ms。\n\n当网络速度很快时，用户看不到加载组件。\n\n### timeout\n\n默认 `120000` ms。 加载超时，单位ms。\n","readmeFilename":"README.md","_id":"react-asyncmodule@1.0.0-alpha.1","_npmVersion":"6.4.1","_nodeVersion":"10.14.2","_npmUser":{"name":"caor1987","email":"caor1987@gmail.com"},"dist":{"integrity":"sha512-H4YDT6LD37aauaW3ggIROcx1jw9fEu+I5c0Uny/VMgx2Myn9Q8TBy7RzabtWjSzAhS2Ufmk8S3mFRJZLxSDdSg==","shasum":"f6ff8e11d7db6d34ce8d7229b555ee3b8102180a","tarball":"https://registry.npmjs.org/react-asyncmodule/-/react-asyncmodule-1.0.0-alpha.1.tgz","fileCount":10,"unpackedSize":37131,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcrAVTCRA9TVsSAnZWagAAzigQAJDmIxDpkJ3JUALjGWl0\neHfXu1Eyw1Y8Ifmr/1QuA8XcN9YXC9Eeg45pX82ZtdE2l0mzRIBbUa4mQBvt\nT+I1HITeHZmCdgoZxhIzuXDC4X7ZQEM1S2PyFcFMY3hBXpESuKP+uoLEqa4s\nXM5FZINU60X8hu2399uSoeyPEWym3IGHt0az4cIpIvWxnIlHonedTPyow4Q2\nUOwZY6Is5Eznde0D0Qz2xp+1sagGuHujSd17wd93JnU6dFoxX9iAHhHYgXzL\n3dazvzeDHsfYuBet7ebOdqaKFxeViS2ycPpaZ8m8//N5XHNgIH/kEyVvb2gD\nXqEMDpp26Cau7sfu9PS2eVPlW6cIe8PNH60n0oUS7nUo+cQaOl4sLjgwT9KA\noW/+5gn4DOrxG4E5PE24pmB3sy+j2pCC5zdpAq69qeUmCadkaNRO00kPcnNQ\n35anVBvpsSs/Mw3XiDVeg7cS0E78zwEPLz9ErU6dbZisQ77Q5+8roHgmGbrA\ndCjTLFLRFG8eiRKXQJLKJSGqXNS+GLku3HKhQO+xlN/EOBr1EsGTAkxnDT5y\nnKhpeVfrrXhugnLryPQc4VbKWoUqshyTGA2L8Wfa9VPLDJCSLtySGiRTdfpP\nTY9pVAjeB7YbMXsng5T3uRlw6HPkQwMpdq8VLKAeG3OMgbXD2yY8zE/+VRFk\nQgp1\r\n=jLlf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDK8vM5nFtC+q22yHSTyBTcfJCH+eTxbVDCEhRepZmX9QIgA/RaC0CLz2zaTSk3mCHi11NcVqWYMcS+cy5BzICQM3Y="}]},"maintainers":[{"name":"caor1987","email":"caor1987@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-asyncmodule_1.0.0-alpha.1_1554777426332_0.4325849144011913"},"_hasShrinkwrap":false},"1.0.0-alpha.2":{"name":"react-asyncmodule","version":"1.0.0-alpha.2","description":"react async load component","author":{"name":"caoren"},"keywords":["react","async","module"],"bugs":{"url":"https://github.com/caoren/react-asyncmodule/issues"},"homepage":"https://github.com/caoren/react-asyncmodule","repository":{"type":"git","url":"git+https://github.com/caoren/react-asyncmodule.git"},"scripts":{"dev":"webpack-dev-server --port 7909 --content-base demo/ --config demo/webpack.config.js --progress --hot --inline","js:commonjs":"cross-env BABEL_ENV=commonjs babel src/ --out-dir dist/","js:es":"cross-env BABEL_ENV=es babel src --out-dir es","test":"jest","build":"npm run test && npm run js:commonjs && npm run js:es"},"devDependencies":{"autoprefixer":"^7.1.4","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^8.0.1","babel-jest":"^22.2.2","babel-loader":"^7.1.2","babel-plugin-add-module-exports":"^0.2.1","babel-plugin-syntax-dynamic-import":"^6.18.0","babel-preset-env":"^1.6.0","babel-preset-react":"^6.24.1","babel-preset-stage-0":"^6.24.1","copyfiles":"^1.2.0","cross-env":"^5.0.5","css-loader":"^0.28.7","enzyme":"^3.3.0","enzyme-adapter-react-16":"^1.13.0","eslint":"^4.9.0","eslint-config-airbnb-base":"^11.3.0","eslint-loader":"^1.9.0","eslint-plugin-import":"^2.7.0","eslint-plugin-jsx-a11y":"^6.0.2","eslint-plugin-react":"^7.4.0","extract-text-webpack-plugin":"^3.0.1","file-loader":"^1.1.4","jest":"^22.2.2","less":"^3.8.1","less-loader":"^2.2.3","less-plugin-autoprefix":"^1.5.1","less-plugin-inline-urls":"^1.2.0","postcss-loader":"^2.0.6","prop-types":"^15.6.0","react":"^16.3.0","react-dom":"^16.3.0","react-hot-loader":"^4.8.5","react-router":"^4.2.0","react-router-config":"^1.0.0-beta.4","react-router-dom":"^4.2.2","react-test-renderer":"^16.8.6","rimraf":"^2.6.2","style-loader":"^0.18.2","url-loader":"^1.1.1","webpack":"^3.6.0","webpack-dev-server":"^2.11.2","yargs":"^9.0.1"},"peerDependencies":{"prop-types":">=15.3.0","react":">=15.3.0","react-dom":">=15.3.0"},"engines":{"node":">= 6.2.0","npm":">= 3.0.0"},"jsnext:main":"es/index.js","main":"dist/index.js","jest":{"collectCoverage":true,"moduleFileExtensions":["js","jsx"],"testEnvironmentOptions":{"url":"http://localhost"},"testMatch":["<rootDir>/test/*.js?(x)"],"transform":{"^.+\\.js$":"babel-jest"}},"dependencies":{"create-react-context":"^0.2.3","hoist-non-react-statics":"^3.3.0"},"readme":"# react-asyncmodule\n\nwebpack2+, it's recommended to use `import` method implementation code spliting, this component can help you simplify your code.\n\n## Installation\n\n```javascript\nnpm install react-asyncmodule --save\n```\n\n## Basic usage\n\n```javascript\nimport AsyncModule from 'react-asyncmodule';\n\nconst Home = AsyncModule({\n    load: () => import(/* webpackChunkName: \"home\" */ './home'),\n    resolveWeak: () => require.resolveWeak('./home'),\n    chunk: () => 'home',\n    loading: <Loading />,\n    error: <ErrorView />\n});\n\nconst List = AsyncModule({\n    load: () => import(/* webpackChunkName: \"list\" */ './list'),\n    resolveWeak: () => require.resolveWeak('./list'),\n    chunk: () => 'list',\n    loading: <Loading />,\n    error: <ErrorView />\n});\n```\n\n通过上面的代码，我们可以发现 `loading` and `error` 2个选项是相同的，可以这样简化。\n\n```javascript\nconst AsyncComponent = AsyncModule({\n    loading: <Loading />,\n    error: <ErrorView />\n});\n\nconst Home = AsyncComponent({\n    load: () => import(/* webpackChunkName: \"home\" */ './home'),\n    resolveWeak: () => require.resolveWeak('./home'),\n    chunk: () => 'home'\n});\n\nconst List = AsyncModule({\n    load: () => import(/* webpackChunkName: \"list\" */ './list'),\n    resolveWeak: () => require.resolveWeak('./list'),\n    chunk: () => 'list'\n});\n```\n很好，但是还有一些重复的代码。\n\n```javascript\nconst Home = AsyncComponent(import('./home'));\nconst List = AsyncComponent(import('./list'));\n```\n\n完美，使用这个 babel 插件 [babel-plugin-asyncmodule-import](https://github.com/caoren/react-asyncmodule/tree/master/packages/asyncmodule-import)。\n\n返回的 AsnycComponent 组件上有以下一些静态属性和方法。\n\n### chunkName\n\n属性，返回当前组件的 chunk 名称，即上面代码中的 `chunk` 方法的返回值。\n\n### preload\n\n预加载方法，返回一个 promise 实例，可在回调中获取到当前组件。\n\n### preloadWeak\n\n预加载方法，不同于 `preload`，该方法是同步返回当前的组件，通常用于 server render。\n\n\n## AsyncChunk\n\n该组件获取到当前匹配到的组件的 `chunkName`(就是上面 chunk 方法的返回) 和 `getInitialData` 组件上的静态方法，通常用于 server render。\n\n```javascript\nimport { AsyncChunk } from 'react-asyncmodule';\nimport { StaticRouter } from 'react-router';\nimport { renderToStaticMarkup } from 'react-dom/server';\n\nconst context = {};\nconst modules = [];\nconst saveModule = (module) => {\n    modules.push(module);\n}\nrenderToStaticMarkup(\n    <StaticRouter\n        location={url}\n        context={context}\n    >\n        <AsyncChunk report={saveModule}>\n            <Approutes />\n        </AsyncChunk>\n    </StaticRouter>\n);\n// [{ chunkName: 'list', getInitialData: [Function] ]\n```\n\n如果你未使用任何第三方数据状态管理库(如redux)，获取到数据后可通过 `AsyncChunk` 组件的 `receiveData` props传递数据至组件上。\n\n```javascript\nmodule[0].getInitialData({ ctx.req }).then((data) => {\n    const html = renderToString(\n        <StaticRouter\n                location={url}\n                context={context}\n            >\n            <AsyncChunk receiveData={data}>\n                <Approutes />\n            </AsyncChunk>\n        </StaticRouter>\n    );\n});\n```\n\n## API\n\n```javascript\nAsyncModule(Options);\n```\n\n## Options\n\n### load\n\n函数, 返回一个 `Promise` 实例. 通常由 webpack 提供的 `import` 方法生成.\n\n### render\n\n自定义渲染函数，接收两个参数分别是 `props` 和 `Component`。\n\n```javascript\nconst List = AsyncModule({\n    load: () => import(/* webpackChunkName: \"list\" */ './list'),\n    render: (props, Comp) => <Comp {...props} />\n});\n```\n\n### resolveWeak\n\n返回当前导入组件的 moduleId。由 webpack 的 `require.resolveWeak` 方法自动生成。\n\n### loading\n\n加载时显示的组件。\n\n\n### error\n\n加载错误时显示的组件。 接受两个参数`onRetry`和`error`。\n\n\n### delay\n\n默认 `200` ms。 `loading` 组件延迟显示的时间，单位ms。\n\n当网络速度很快时，用户看不到加载组件。\n\n### timeout\n\n默认 `120000` ms。 加载超时，单位ms。\n\n### onModuleLoaded\n\nmodule加载完执行，返回2个参数，comp当前module，chunkName当前module的chunk名称\n\n`onModuleLoaded(comp, chunkName)`\n\n\n","readmeFilename":"README.md","_id":"react-asyncmodule@1.0.0-alpha.2","_npmVersion":"6.4.1","_nodeVersion":"10.14.2","_npmUser":{"name":"caor1987","email":"caor1987@gmail.com"},"dist":{"integrity":"sha512-W9KWECpIiaOC5P9TIc/iuZpOMzFVMQXl6StFhu9RP1/e3w0MmvjWJF/0RPEQlPkzPDOBAP5Dn425T4C/UWqSXw==","shasum":"1f0aebd7c0417e4d2cc33b292ba78ac3be1b9ce8","tarball":"https://registry.npmjs.org/react-asyncmodule/-/react-asyncmodule-1.0.0-alpha.2.tgz","fileCount":10,"unpackedSize":35590,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc3pCECRA9TVsSAnZWagAAc9oP/jdemk/zB/DhbUwZSj1n\nyLDFsefY3K1R6A1ox2UUJAKEih0n2XXPG64XGc08Mj9rARclcJ5tzcDRP6Sw\nlsUkH4SQUpO0NXxRzdpDgUXulKj02czNOaaNkGFqJORvteBEk+p2XvxfB3ZV\ncaZn9S4kv3YQpTrhuXnNrUKqgHnQymHTxTAfYuB++A6tBlqLj2hkf/dE0aqZ\nnR1O8OTiu6aJ9QSnAtbjyVdgraxbfWGau2uEk6NfiOQsMfI0caKjW/+9sDGB\ng8dyX9CL3GTVWpTy2I+/a6SkaCU9+0sNrXiRJCiVs9BWt6TH7msEtdwHSlZH\nmP55I3073m+jeRAT1RqFfTiBztP5+oUt/sqAyHJGkrk8R1vf7N0YqHdG3zhT\nBx1/t2kT2MzJxeoeanMkFuqalAZbsHiDflTITeADsM7GRNFZlF6ET2WN55v8\n3D97YgSSPBSANFQtonFEBO+qZjVaXGfUmfwafjJpYEff9EEdj5NuUN0yEqYO\nN6E5sM2P4gRiH4rJg4UUqLZ5vFElw1qjuzczBZmeorrKsNt6P7wAcuR9z4QF\nkpB4q7TgFrdg4g3z92MrZdvOqER5ru7fws+VCy4zvL36apb7OX5e3KoOQJ0P\nrMsB7+MFABn9k+DTuv+hzha+mXsq1NfSYTE8EaA5yQp+kCI6xP5aSRSM5IXq\neJQw\r\n=8Pc6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCs0REp6Hrsf4d4znSr+HdZEqhaeWBegYIHcprMxv74cAIgRM1vU9Fx3e9sR5/SZmFIjRGwWG9CHT/DXueUnGwO+t8="}]},"maintainers":[{"name":"caor1987","email":"caor1987@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-asyncmodule_1.0.0-alpha.2_1558089859542_0.5310460463158873"},"_hasShrinkwrap":false},"1.0.0-alpha.3":{"name":"react-asyncmodule","version":"1.0.0-alpha.3","description":"react async load component","author":{"name":"caoren"},"keywords":["react","async","module"],"bugs":{"url":"https://github.com/caoren/react-asyncmodule/issues"},"homepage":"https://github.com/caoren/react-asyncmodule","repository":{"type":"git","url":"git+https://github.com/caoren/react-asyncmodule.git"},"scripts":{"dev":"webpack-dev-server --port 7909 --content-base demo/ --config demo/webpack.config.js --progress --hot --inline","js:commonjs":"cross-env BABEL_ENV=commonjs babel src/ --out-dir dist/","js:es":"cross-env BABEL_ENV=es babel src --out-dir es","test":"jest","build":"npm run test && npm run js:commonjs && npm run js:es"},"devDependencies":{"autoprefixer":"^7.1.4","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^8.0.1","babel-jest":"^22.2.2","babel-loader":"^7.1.2","babel-plugin-add-module-exports":"^0.2.1","babel-plugin-asyncmodule-import":"^0.2.0","babel-plugin-syntax-dynamic-import":"^6.18.0","babel-preset-env":"^1.6.0","babel-preset-react":"^6.24.1","babel-preset-stage-0":"^6.24.1","copyfiles":"^1.2.0","cross-env":"^5.0.5","css-loader":"^0.28.7","enzyme":"^3.3.0","enzyme-adapter-react-16":"^1.13.0","eslint":"^4.9.0","eslint-config-airbnb-base":"^11.3.0","eslint-loader":"^1.9.0","eslint-plugin-import":"^2.7.0","eslint-plugin-jsx-a11y":"^6.0.2","eslint-plugin-react":"^7.4.0","extract-text-webpack-plugin":"^3.0.1","file-loader":"^1.1.4","jest":"^22.2.2","less":"^3.8.1","less-loader":"^2.2.3","less-plugin-autoprefix":"^1.5.1","less-plugin-inline-urls":"^1.2.0","postcss-loader":"^2.0.6","prop-types":"^15.6.0","react":"^16.3.0","react-dom":"^16.3.0","react-hot-loader":"^4.8.5","react-router":"^4.2.0","react-router-config":"^1.0.0-beta.4","react-router-dom":"^4.2.2","react-test-renderer":"^16.8.6","rimraf":"^2.6.2","style-loader":"^0.18.2","url-loader":"^1.1.1","webpack":"^3.6.0","webpack-dev-server":"^2.11.2","yargs":"^9.0.1"},"peerDependencies":{"prop-types":">=15.3.0","react":">=15.3.0","react-dom":">=15.3.0"},"engines":{"node":">= 6.2.0","npm":">= 3.0.0"},"jsnext:main":"es/index.js","main":"dist/index.js","jest":{"collectCoverage":true,"moduleFileExtensions":["js","jsx"],"testEnvironmentOptions":{"url":"http://localhost"},"testMatch":["<rootDir>/test/*.js?(x)"],"transform":{"^.+\\.js$":"babel-jest"}},"dependencies":{"create-react-context":"^0.2.3","hoist-non-react-statics":"^3.3.0"},"_id":"react-asyncmodule@1.0.0-alpha.3","_npmVersion":"6.4.1","_nodeVersion":"10.14.2","_npmUser":{"name":"caor1987","email":"caor1987@gmail.com"},"dist":{"integrity":"sha512-bWbUKpfUrrE30IS+7uGR1njfUwaetCupd0keyiTkQqvI3YgBU1VEKaelmK3dB+PFnF4tlB2Ym4KQ7F+IwaxwsQ==","shasum":"3318d124b9c68f44fa8e93637dca45bc8803b1cd","tarball":"https://registry.npmjs.org/react-asyncmodule/-/react-asyncmodule-1.0.0-alpha.3.tgz","fileCount":10,"unpackedSize":36427,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc5L7uCRA9TVsSAnZWagAAgUkP/iYLmK3m/W8xgP8W/FGF\n6JVmcyBCKX7kwxwqMBlfYs9Nig7zHVdBkVht6+lT4Wb0f3gakv3eUpXEgRvZ\nScu3bBnKZ5V4J2fTDR0JJgoyzySTqRqS0y2sWS6T+eVc9KBkRhB2yUgT8EU8\nzdJxsUfQxjUCe/TKIBqsmJ2TqYI+gspeBvgy5JYDlADgNWeffUE9rgTlCbhM\nBvPw+24dOrXc9IMzGNCK0hHQ/iVJgLmU6PBppTd2yAYLoh2w4SqwpbVfm7Kz\ndV8We+7qj1OHo4wH1feaWSu8vn2QcHLzykRYGi5S0SPqB0qScZNwkKc3iDPh\nInD/XQwom9t8ckIBcEvTDwHg3h3AuidjXoalsp7L/dxpZLcRdOQH0Kv3ITE/\nGZZ6dG1sstz6wLtdSCPnF0/rdoDHE5jOwM2lyw7bjwDfFZSMftxdc3MEFJQE\n6X2hib6pUUzdccf5flXiWZMrrsFgsAmenV6ISNfjhbkEYSmD6xr65QJqAAKY\nEnLJrRHnQBCpgXHAovRotgwU5Yw9lI2PYcvnz8MRMVoKKil4brIAYgglhKW6\nrThofPZQXZpmFkfbIr8qKAoEvHKWdU30/I0nk/WABuXinvwx+j4mve/g1qhz\nnq/kbC2oxgszxGHWgFVIIYcTOkv9cybzfWyAmKe3gPUhV0KZ8B508Jk2FPbs\nKY9N\r\n=2zRq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD7GNIlZp3VgXegFCPuEVIHs0Wg3nSDeB0iz/vUhHQ9FQIgXfSrnnqNhbMsUDrNLoBTC/tDpC/n5YP26hzcK5g1how="}]},"maintainers":[{"name":"caor1987","email":"caor1987@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-asyncmodule_1.0.0-alpha.3_1558494957638_0.4396675138845272"},"_hasShrinkwrap":false},"1.0.0-alpha.4":{"name":"react-asyncmodule","version":"1.0.0-alpha.4","description":"react async load component","author":{"name":"caoren"},"keywords":["react","async","module"],"bugs":{"url":"https://github.com/caoren/react-asyncmodule/issues"},"homepage":"https://github.com/caoren/react-asyncmodule","repository":{"type":"git","url":"git+https://github.com/caoren/react-asyncmodule.git"},"scripts":{"dev":"webpack-dev-server --port 7909 --content-base demo/ --config demo/webpack.config.js --progress --hot --inline","js:commonjs":"cross-env BABEL_ENV=commonjs babel src/ --out-dir dist/","js:es":"cross-env BABEL_ENV=es babel src --out-dir es","test":"jest","build":"npm run test && npm run js:commonjs && npm run js:es"},"devDependencies":{"autoprefixer":"^7.1.4","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^8.0.1","babel-jest":"^22.2.2","babel-loader":"^7.1.2","babel-plugin-add-module-exports":"^0.2.1","babel-plugin-asyncmodule-import":"^0.2.0","babel-plugin-syntax-dynamic-import":"^6.18.0","babel-preset-env":"^1.6.0","babel-preset-react":"^6.24.1","babel-preset-stage-0":"^6.24.1","copyfiles":"^1.2.0","cross-env":"^5.0.5","css-loader":"^0.28.7","enzyme":"^3.3.0","enzyme-adapter-react-16":"^1.13.0","eslint":"^4.9.0","eslint-config-airbnb-base":"^11.3.0","eslint-loader":"^1.9.0","eslint-plugin-import":"^2.7.0","eslint-plugin-jsx-a11y":"^6.0.2","eslint-plugin-react":"^7.4.0","extract-text-webpack-plugin":"^3.0.1","file-loader":"^1.1.4","jest":"^22.2.2","less":"^3.8.1","less-loader":"^2.2.3","less-plugin-autoprefix":"^1.5.1","less-plugin-inline-urls":"^1.2.0","postcss-loader":"^2.0.6","prop-types":"^15.6.0","react":"^16.3.0","react-dom":"^16.3.0","react-hot-loader":"^4.8.5","react-router":"^4.2.0","react-router-config":"^1.0.0-beta.4","react-router-dom":"^4.2.2","react-test-renderer":"^16.8.6","rimraf":"^2.6.2","style-loader":"^0.18.2","url-loader":"^1.1.1","webpack":"^3.6.0","webpack-dev-server":"^2.11.2","yargs":"^9.0.1"},"peerDependencies":{"prop-types":">=15.3.0","react":">=15.3.0","react-dom":">=15.3.0"},"engines":{"node":">= 6.2.0","npm":">= 3.0.0"},"jsnext:main":"es/index.js","main":"dist/index.js","jest":{"collectCoverage":true,"moduleFileExtensions":["js","jsx"],"testEnvironmentOptions":{"url":"http://localhost"},"testMatch":["<rootDir>/test/*.js?(x)"],"transform":{"^.+\\.js$":"babel-jest"}},"dependencies":{"hoist-non-react-statics":"^3.3.0","react-asyncmodule-chunk":"^1.0.0"},"readme":"# react-asyncmodule\n\nwebpack2+, it's recommended to use `import` method implementation code spliting, this component can help you simplify your code.\n\n## Installation\n\n```javascript\nnpm install react-asyncmodule --save\n```\n\n## Basic usage\n\n```javascript\nimport AsyncModule from 'react-asyncmodule';\n\nconst Home = AsyncModule({\n    load: () => import(/* webpackChunkName: \"home\" */ './home'),\n    resolveWeak: () => require.resolveWeak('./home'),\n    chunk: () => 'home',\n    loading: <Loading />,\n    error: <ErrorView />\n});\n\nconst List = AsyncModule({\n    load: () => import(/* webpackChunkName: \"list\" */ './list'),\n    resolveWeak: () => require.resolveWeak('./list'),\n    chunk: () => 'list',\n    loading: <Loading />,\n    error: <ErrorView />\n});\n```\n\n通过上面的代码，我们可以发现 `loading` and `error` 2个选项是相同的，可以这样简化。\n\n```javascript\nconst AsyncComponent = AsyncModule({\n    loading: <Loading />,\n    error: <ErrorView />\n});\n\nconst Home = AsyncComponent({\n    load: () => import(/* webpackChunkName: \"home\" */ './home'),\n    resolveWeak: () => require.resolveWeak('./home'),\n    chunk: () => 'home'\n});\n\nconst List = AsyncModule({\n    load: () => import(/* webpackChunkName: \"list\" */ './list'),\n    resolveWeak: () => require.resolveWeak('./list'),\n    chunk: () => 'list'\n});\n```\n很好，但是还有一些重复的代码。\n\n```javascript\nconst Home = AsyncComponent(import('./home'));\nconst List = AsyncComponent(import('./list'));\n```\n\n完美，使用这个 babel 插件 [babel-plugin-asyncmodule-import](https://github.com/caoren/react-asyncmodule/tree/master/packages/asyncmodule-import)。\n\n返回的 AsnycComponent 组件上有以下一些静态属性和方法。\n\n### chunkName\n\n属性，返回当前组件的 chunk 名称，即上面代码中的 `chunk` 方法的返回值。\n\n### preload\n\n预加载方法，返回一个 promise 实例，可在回调中获取到当前组件。\n\n### preloadWeak\n\n预加载方法，不同于 `preload`，该方法是同步返回当前的组件，通常用于 server render。\n\n## API\n\n```javascript\nAsyncModule(Options);\n```\n\n## Options\n\n### load\n\n函数, 返回一个 `Promise` 实例. 通常由 webpack 提供的 `import` 方法生成.\n\n### render\n\n自定义渲染函数，接收两个参数分别是 `props` 和 `Component`。\n\n```javascript\nconst List = AsyncModule({\n    load: () => import(/* webpackChunkName: \"list\" */ './list'),\n    render: (props, Comp) => <Comp {...props} />\n});\n```\n\n### resolveWeak\n\n返回当前导入组件的 moduleId。由 webpack 的 `require.resolveWeak` 方法自动生成。\n\n### loading\n\n加载时显示的组件。\n\n\n### error\n\n加载错误时显示的组件。 接受两个参数`onRetry`和`error`。\n\n\n### delay\n\n默认 `200` ms。 `loading` 组件延迟显示的时间，单位ms。\n\n当网络速度很快时，用户看不到加载组件。\n\n### timeout\n\n默认 `120000` ms。 加载超时，单位ms。\n\n### onModuleLoaded\n\nmodule加载完执行，返回3个参数\n\n* comp, 当前module\n* chunkName, 当前module的chunk名称\n* isServer, 当前是否为 node 端\n\n`onModuleLoaded(comp, chunkName, isServer)`\n\n\n","readmeFilename":"README.md","_id":"react-asyncmodule@1.0.0-alpha.4","_npmVersion":"6.4.1","_nodeVersion":"10.14.2","_npmUser":{"name":"caor1987","email":"caor1987@gmail.com"},"dist":{"integrity":"sha512-4R/tp3Ix/5EwXoJAh5r1uYkgvGHwEQVmgQFy78LQ/Vmz2Q0OOl+MTL7PMrj8o2Q6D0o8je+W+WksK2orPqrUDQ==","shasum":"a9749a2e71d36dfbc5f86bac9edf9bf864e2190e","tarball":"https://registry.npmjs.org/react-asyncmodule/-/react-asyncmodule-1.0.0-alpha.4.tgz","fileCount":10,"unpackedSize":35035,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc5hGACRA9TVsSAnZWagAA9awP/1dVxAMQc696uoELT3n5\nXswwRPpNhMCsw9vTeNr3uGKVYxzYOiqIzXrVxfmWNvbCacJqRIs4pGpbWZKH\nea2GXDg0FO0wd4KV3719c1D/836Y04f4SJ2l+mbsF5gYZJ1TkLQqqCxDUYeC\nhBtUCSlDlEpTXVk4cxvI7pjN8BhgqmOwAAlqml2L8/2ploOB/U75iHSHW2SU\nWvvA6+omBAY4xkpOAUGNQs4TFfBRmiXo/TWlrJwDkqt/eq4/tPUk8ABpELv7\n6fFVMrdDQwNJVSaAahVonQUnvWltbeYif3EmCNgN4AQuvF4VlXxBmkIM6A5l\n+GLAQtwYRSmDq9x4AIbwI0pewSwvFdDa+AHdEaJlweHgdkKZfGtBiSXoTxdD\nvSeRvDBaKiN5qzxxbV/cp4uBOMXxTVovGqxcMu0MwHVSspT6iVxdT6oQYpbH\nb2XOs69O4w3p+SJjnrX+jjDV4hPxi47eUTod0ZJAexCARTFQwBBlla4thIgF\nE7plnyI1KEbGmOTV1n7JsN618AUc/W6BD7E3Lxh0MqxFo6UML85lCNd8jhSk\nLhGbXTl8Zec/AiiS/oaz/35X7ndxL/cdj/KKcOeUHE+1ykDmOQ4rKTeFPwO2\nAg40ujsbdBVRsWt3Z38N1GppSUwyBaCbUoGBGJelb24V3Y6vGdQoScw7kK5C\nRfyU\r\n=xisJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFz0TyrAn1+Sxp0kq5ArxnVIs+2hConO5v9xbn44wVWsAiEAkiLfLgMHxFJJU47Vvi6ihr3wWmxJ6q0BV/PE4FU9mC0="}]},"maintainers":[{"name":"caor1987","email":"caor1987@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-asyncmodule_1.0.0-alpha.4_1558581632178_0.025343337439990066"},"_hasShrinkwrap":false},"1.0.0":{"name":"react-asyncmodule","version":"1.0.0","description":"react async load component","author":{"name":"caoren"},"keywords":["react","async","module"],"bugs":{"url":"https://github.com/caoren/react-asyncmodule/issues"},"homepage":"https://github.com/caoren/react-asyncmodule","repository":{"type":"git","url":"git+https://github.com/caoren/react-asyncmodule.git"},"scripts":{"dev":"webpack-dev-server --port 7909 --content-base demo/ --config demo/webpack.config.js --progress --hot --inline","js:commonjs":"cross-env BABEL_ENV=commonjs babel src/ --out-dir dist/","js:es":"cross-env BABEL_ENV=es babel src --out-dir es","test":"jest","build":"npm run test && npm run js:commonjs && npm run js:es"},"devDependencies":{"autoprefixer":"^7.1.4","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^8.0.1","babel-jest":"^22.2.2","babel-loader":"^7.1.2","babel-plugin-add-module-exports":"^0.2.1","babel-plugin-asyncmodule-import":"^0.2.0","babel-plugin-syntax-dynamic-import":"^6.18.0","babel-preset-env":"^1.6.0","babel-preset-react":"^6.24.1","babel-preset-stage-0":"^6.24.1","copyfiles":"^1.2.0","cross-env":"^5.0.5","css-loader":"^0.28.7","enzyme":"^3.3.0","enzyme-adapter-react-16":"^1.13.0","eslint":"^4.9.0","eslint-config-airbnb-base":"^11.3.0","eslint-loader":"^3.0.0","eslint-plugin-import":"^2.7.0","eslint-plugin-jsx-a11y":"^6.0.2","eslint-plugin-react":"^7.4.0","extract-css-chunks-webpack-plugin":"^4.6.0","file-loader":"^1.1.4","jest":"^22.2.2","less":"^3.8.1","less-loader":"^2.2.3","less-plugin-autoprefix":"^1.5.1","less-plugin-inline-urls":"^1.2.0","postcss-loader":"^2.0.6","prop-types":"^15.6.0","react":"^16.3.0","react-dom":"^16.3.0","react-hot-loader":"^4.8.5","react-router":"^5.0.1","react-router-config":"^5.0.1","react-router-dom":"^5.0.1","react-test-renderer":"^16.8.6","rimraf":"^2.6.2","style-loader":"^0.18.2","url-loader":"^1.1.1","webpack":"^4.39.3","webpack-cli":"^3.3.8","webpack-dev-server":"^3.1.11","yargs":"^9.0.1"},"peerDependencies":{"prop-types":">=15.3.0","react":">=15.3.0","react-dom":">=15.3.0"},"engines":{"node":">= 6.2.0","npm":">= 3.0.0"},"jsnext:main":"es/index.js","main":"dist/index.js","jest":{"collectCoverage":true,"moduleFileExtensions":["js","jsx"],"testEnvironmentOptions":{"url":"http://localhost"},"testMatch":["<rootDir>/test/*.js?(x)"],"transform":{"^.+\\.js$":"babel-jest"}},"dependencies":{"hoist-non-react-statics":"^3.3.0","react-asyncmodule-chunk":"^1.0.0"},"browserslist":["iOS >= 8.0","Android >= 4.4"],"_id":"react-asyncmodule@1.0.0","_npmVersion":"6.4.1","_nodeVersion":"10.14.2","_npmUser":{"name":"caor1987","email":"caor1987@gmail.com"},"dist":{"integrity":"sha512-sxZGWQdpOXeGsTiY6d7TiKxvI8B1jGaTml3JiFFYgV+kOA12tweN47t+3vUHfWqgHj0dIcJTccEXxvzJXAngiA==","shasum":"e87834c46f45d65eaa59f811213145a29790c575","tarball":"https://registry.npmjs.org/react-asyncmodule/-/react-asyncmodule-1.0.0.tgz","fileCount":6,"unpackedSize":31094,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdeMCSCRA9TVsSAnZWagAAlz0P/jJ+iLnZCuT+FXSumQQc\ngg/VCNP45Mt9C0Nwtjr66ehTTeG31dEkuWLA69y9onZnl7kgXu1v1Fcer9GI\n+4DH4zLLaGD1FsKw84Weu3rxsXCF1PPjkaRcdWzeK0zJKyyzQFrN3ibVKIwl\nJfmVyTMTJqLOxM2b3BmIXx9e1/q0yXCJtNgm/F3tqqxI9plfI287hOjht7zx\nY22CFFwy4Rlr1GsYs+XkZFG2t4/8r9F6mJZujsVY3+LwBT71D+wzNZsKL3OH\n3MJo6zeO8deZpJzj2mHoS8vKCJSvMlj9ry6yXVkMpyHZPI53tg3x8tFqyPob\nJ6xj6iOGYeCU9m+zMO46pQIJ7LmHMrCNu06/ameft2YezbZDu/yjwuZOMHX0\noZxCcWn64APdK/pPuDJewUXRKzbabtCVeuE/kqXvYCzRy+axKVFxueZoNs9w\neQMYcyEp8InL34npwKGEJ24eqtI2+yu6lBGn04Q6cg/a1ilO70vaYaaBzF0Z\nPtDoFFtkxnbc1cDMDT/r91nJoXOMOQ4MqFNhNGxMqL9Ua0YxzTEvNUbOW+S0\nvuBRFjlcOsInT49UhfEaL/ouFvcOFD1vKdsCA6vXCSO78IOoEGCy5y+FRCDY\npNBxvcy0X9OZQRaNRw9rgEGh4t4lkRj+oZNqGsgW8X/1yawn/OXhaIqcEeBg\nlTkD\r\n=yDEv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGKDpNAZxfAVUvelP1zQ/Mujjddb5r97Hy0xMnw5OE3MAiEAuJBAWW/7eDIYb6VID7EDhqPMysUo5IrL0zI8MI4uAWQ="}]},"maintainers":[{"name":"caor1987","email":"caor1987@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-asyncmodule_1.0.0_1568194705897_0.8225653044858814"},"_hasShrinkwrap":false},"1.1.0-alpha.0":{"name":"react-asyncmodule","version":"1.1.0-alpha.0","description":"react async load component","author":{"name":"caoren"},"keywords":["react","async","module"],"bugs":{"url":"https://github.com/caoren/react-asyncmodule/issues"},"homepage":"https://github.com/caoren/react-asyncmodule","repository":{"type":"git","url":"git+https://github.com/caoren/react-asyncmodule.git"},"scripts":{"dev":"webpack-dev-server --port 7909 --content-base demo/ --config demo/webpack.config.js --progress --hot --inline","js:commonjs":"cross-env BABEL_ENV=commonjs babel src/ --out-dir dist/","js:es":"cross-env BABEL_ENV=es babel src --out-dir es","test":"jest","build":"npm run test && npm run js:commonjs && npm run js:es"},"devDependencies":{"autoprefixer":"^7.1.4","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^8.0.1","babel-jest":"^22.2.2","babel-loader":"^7.1.2","babel-plugin-add-module-exports":"^0.2.1","babel-plugin-asyncmodule-import":"^0.2.0","babel-plugin-syntax-dynamic-import":"^6.18.0","babel-preset-env":"^1.6.0","babel-preset-react":"^6.24.1","babel-preset-stage-0":"^6.24.1","copyfiles":"^1.2.0","cross-env":"^5.0.5","css-loader":"^0.28.7","enzyme":"^3.3.0","enzyme-adapter-react-16":"^1.13.0","eslint":"^4.9.0","eslint-config-airbnb-base":"^11.3.0","eslint-loader":"^3.0.0","eslint-plugin-import":"^2.7.0","eslint-plugin-jsx-a11y":"^6.0.2","eslint-plugin-react":"^7.4.0","extract-css-chunks-webpack-plugin":"^4.6.0","file-loader":"^1.1.4","jest":"^22.2.2","less":"^3.8.1","less-loader":"^2.2.3","less-plugin-autoprefix":"^1.5.1","less-plugin-inline-urls":"^1.2.0","postcss-loader":"^2.0.6","prop-types":"^15.6.0","react":"^16.3.0","react-dom":"^16.3.0","react-hot-loader":"^4.8.5","react-router":"^5.0.1","react-router-config":"^5.0.1","react-router-dom":"^5.0.1","react-test-renderer":"^16.8.6","rimraf":"^2.6.2","style-loader":"^0.18.2","url-loader":"^1.1.1","webpack":"^4.39.3","webpack-cli":"^3.3.8","webpack-dev-server":"^3.1.11","yargs":"^9.0.1"},"peerDependencies":{"prop-types":">=15.3.0","react":">=15.3.0","react-dom":">=15.3.0"},"engines":{"node":">= 6.2.0","npm":">= 3.0.0"},"jsnext:main":"es/index.js","main":"dist/index.js","jest":{"collectCoverage":true,"moduleFileExtensions":["js","jsx"],"testEnvironmentOptions":{"url":"http://localhost"},"testMatch":["<rootDir>/test/*.js?(x)"],"transform":{"^.+\\.js$":"babel-jest"}},"dependencies":{"hoist-non-react-statics":"^3.3.0","react-asyncmodule-chunk":"^1.1.0-alpha.0"},"browserslist":["iOS >= 8.0","Android >= 4.4"],"gitHead":"573430655e76f94e169263a41266d84129f6dedb","_resolved":"","_integrity":"","_from":"file:react-asyncmodule-1.1.0-alpha.0.tgz","_id":"react-asyncmodule@1.1.0-alpha.0","_nodeVersion":"12.13.1","_npmVersion":"6.13.6","dist":{"integrity":"sha512-ilXgPAIB8TnFUw9IudV0GmOBi+sYU75FOzlozcmNKy2XzjHTO04p+o4ik4AUrFzdpHnjMeTy7CCY1fL1pBhrJg==","shasum":"383915ab282925164c4948d35ced29dddda9ead2","tarball":"https://registry.npmjs.org/react-asyncmodule/-/react-asyncmodule-1.1.0-alpha.0.tgz","fileCount":11,"unpackedSize":37203,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeaE7NCRA9TVsSAnZWagAAmr8P/0yglRD40exusmHmwutl\n/4GDV7w8kxL8onuMMycTl0awgYq3N1iAQc/tIzTKHsEbVwUAQO63gtIRtrFp\nVibp5Y5f3lbY/yVO0WYlVTrCHpRMby5zwYOZq6QzZ9rxqFh6rg+j/K6CWfK+\n2bD/Elco3x8IbQ7B/iW+p4aS01gtOEIKN8lpT29hY3jZbS44tbLK86LJXR/U\nFq6WRD02cpSKD56ZU9Mw37i7u2TvZ23W3g24odlzpQeuIcy51IA7YiSstQZ3\nNbUZLYc0EkPXbId8WVzEVwHS1Pju+PedSPc073+gOt8PUzhkuZuEqZtkxA2l\ntAn8TPmeHwbeLg0fvk7FS1ydii2yOaExIFBzZT0twt3kNzA668mdrtpmvjVn\nBVurEFoj3kJ8sAESZRIfcpSc8hjaa/6uQILMIIUgAjz2J45k5hSFI2ftqsRB\nnuCLw8VR8MiqpceloE+2xyMI/xsF6G+tjh+/P5nDg3dab8zkSuyh+Nrji5el\nhVm2HkqG2/a8cAvxBLaLvP/zKzl35GKhHtUHGy4KGPGfSKuY6GD+qADW70ZI\nfgOf/lPuTVU6cu/GIA5CHBlXHuBFkH3hU+VZ8Zr9hjO180hAY4KgyOAYWzy9\nKyPeTYTktGqlJiDBh4/UaRG/OreNEQL7zatqrOw9Wc4WKkTaE5iZrS6eIUgh\n3xrg\r\n=QlGw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDuZuVrQ50GzsV+5ZSo6AfOE/ZYw/1SIRYiGQKmxlko9QIgVOfalv/5R+ULbZrh/Uwi1zPcEQ9MSaeUR0IGonh24Ik="}]},"maintainers":[{"name":"caor1987","email":"caor1987@gmail.com"}],"_npmUser":{"name":"caor1987","email":"caor1987@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-asyncmodule_1.1.0-alpha.0_1583894221373_0.741466967886415"},"_hasShrinkwrap":false},"1.1.0-alpha.1":{"name":"react-asyncmodule","version":"1.1.0-alpha.1","description":"react async load component","author":{"name":"caoren"},"keywords":["react","async","module"],"bugs":{"url":"https://github.com/caoren/react-asyncmodule/issues"},"homepage":"https://github.com/caoren/react-asyncmodule","repository":{"type":"git","url":"git+https://github.com/caoren/react-asyncmodule.git"},"scripts":{"dev":"webpack-dev-server --port 7909 --content-base demo/ --config demo/webpack.config.js --progress --hot --inline","js:commonjs":"cross-env BABEL_ENV=commonjs babel src/ --out-dir dist/","js:es":"cross-env BABEL_ENV=es babel src --out-dir es","test":"jest","build":"npm run test && npm run js:commonjs && npm run js:es"},"devDependencies":{"autoprefixer":"^7.1.4","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^8.0.1","babel-jest":"^22.2.2","babel-loader":"^7.1.2","babel-plugin-add-module-exports":"^0.2.1","babel-plugin-asyncmodule-import":"^0.2.0","babel-plugin-syntax-dynamic-import":"^6.18.0","babel-preset-env":"^1.6.0","babel-preset-react":"^6.24.1","babel-preset-stage-0":"^6.24.1","copyfiles":"^1.2.0","cross-env":"^5.0.5","css-loader":"^0.28.7","enzyme":"^3.3.0","enzyme-adapter-react-16":"^1.13.0","eslint":"^4.9.0","eslint-config-airbnb-base":"^11.3.0","eslint-loader":"^3.0.0","eslint-plugin-import":"^2.7.0","eslint-plugin-jsx-a11y":"^6.0.2","eslint-plugin-react":"^7.4.0","extract-css-chunks-webpack-plugin":"^4.6.0","file-loader":"^1.1.4","jest":"^22.2.2","less":"^3.8.1","less-loader":"^2.2.3","less-plugin-autoprefix":"^1.5.1","less-plugin-inline-urls":"^1.2.0","postcss-loader":"^2.0.6","prop-types":"^15.6.0","react":"^16.3.0","react-dom":"^16.3.0","react-hot-loader":"^4.8.5","react-router":"^5.0.1","react-router-config":"^5.0.1","react-router-dom":"^5.0.1","react-test-renderer":"^16.8.6","rimraf":"^2.6.2","style-loader":"^0.18.2","url-loader":"^1.1.1","webpack":"^4.39.3","webpack-cli":"^3.3.8","webpack-dev-server":"^3.1.11","yargs":"^9.0.1"},"peerDependencies":{"prop-types":">=15.3.0","react":">=15.3.0","react-dom":">=15.3.0"},"engines":{"node":">= 6.2.0","npm":">= 3.0.0"},"jsnext:main":"es/index.js","main":"dist/index.js","jest":{"collectCoverage":true,"moduleFileExtensions":["js","jsx"],"testEnvironmentOptions":{"url":"http://localhost"},"testMatch":["<rootDir>/test/*.js?(x)"],"transform":{"^.+\\.js$":"babel-jest"}},"dependencies":{"hoist-non-react-statics":"^3.3.0","react-asyncmodule-chunk":"^1.1.0-alpha.1"},"browserslist":["iOS >= 8.0","Android >= 4.4"],"gitHead":"e704bf27d8842530793674cac7c39e6dfcf83d89","readme":"# react-asyncmodule\n\nwebpack2+, it's recommended to use `import` method implementation code spliting, this component can help you simplify your code.\n\n## Installation\n\n```javascript\nnpm install react-asyncmodule --save\n```\n\n## Basic usage\n\n```javascript\nimport AsyncModule from 'react-asyncmodule';\n\nconst Home = AsyncModule({\n    load: () => import(/* webpackChunkName: \"home\" */ './home'),\n    resolveWeak: () => require.resolveWeak('./home'),\n    chunk: () => 'home',\n    loading: <Loading />,\n    error: <ErrorView />\n});\n\nconst List = AsyncModule({\n    load: () => import(/* webpackChunkName: \"list\" */ './list'),\n    resolveWeak: () => require.resolveWeak('./list'),\n    chunk: () => 'list',\n    loading: <Loading />,\n    error: <ErrorView />\n});\n```\n\n通过上面的代码，我们可以发现 `loading` and `error` 2个选项是相同的，可以这样简化。\n\n```javascript\nconst AsyncComponent = AsyncModule({\n    loading: <Loading />,\n    error: <ErrorView />\n});\n\nconst Home = AsyncComponent({\n    load: () => import(/* webpackChunkName: \"home\" */ './home'),\n    resolveWeak: () => require.resolveWeak('./home'),\n    chunk: () => 'home'\n});\n\nconst List = AsyncModule({\n    load: () => import(/* webpackChunkName: \"list\" */ './list'),\n    resolveWeak: () => require.resolveWeak('./list'),\n    chunk: () => 'list'\n});\n```\n很好，但是还有一些重复的代码。\n\n```javascript\nconst Home = AsyncComponent(import('./home'));\nconst List = AsyncComponent(import('./list'));\n```\n\n完美，使用这个 babel 插件 [babel-plugin-asyncmodule-import](https://github.com/caoren/react-asyncmodule/tree/master/packages/asyncmodule-import)。\n\n返回的 AsnycComponent 组件上有以下一些静态属性和方法。\n\n### chunkName\n\n属性，返回当前组件的 chunk 名称，即上面代码中的 `chunk` 方法的返回值。\n\n### preload\n\n预加载方法，返回一个 promise 实例，可在回调中获取到当前组件。a\n\n### preloadWeak\n\n预加载方法，不同于 `preload`，该方法是同步返回当前的组件，通常用于 server render。\n\n## asyncReady\n\n```javascript\nimport { asyncReady } from 'react-asyncmodule';\n\nasyncReady(() => {\n    // 依赖的 chunk 准备就绪，再进行注水，防止因 chunk 还未加载完成和 server 端渲染不一致\n    ReactDOM.hydrate();\n});\n```\n\n## API\n\n```javascript\nAsyncModule(Options);\n```\n\n## Options\n\n### load\n\n函数, 返回一个 `Promise` 实例. 通常由 webpack 提供的 `import` 方法生成.\n\n### render\n\n自定义渲染函数，接收两个参数分别是 `props` 和 `Component`。\n\n```javascript\nconst List = AsyncModule({\n    load: () => import(/* webpackChunkName: \"list\" */ './list'),\n    render: (props, Comp) => <Comp {...props} />\n});\n```\n\n### resolveWeak\n\n返回当前导入组件的 moduleId。由 webpack 的 `require.resolveWeak` 方法自动生成。\n\n### loading\n\n加载时显示的组件。\n\n\n### error\n\n加载错误时显示的组件。 接受两个参数`onRetry`和`error`。\n\n\n### delay\n\n默认 `200` ms。 `loading` 组件延迟显示的时间，单位ms。\n\n当网络速度很快时，用户看不到加载组件。\n\n### timeout\n\n默认 `120000` ms。 加载超时，单位ms。\n\n### onModuleLoaded\n\nmodule加载完执行，返回3个参数\n\n* comp, 当前module\n* chunkName, 当前module的chunk名称\n* isServer, 当前是否为 node 端\n\n`onModuleLoaded(comp, chunkName, isServer)`\n","readmeFilename":"README.md","_id":"react-asyncmodule@1.1.0-alpha.1","_nodeVersion":"12.13.1","_npmVersion":"6.13.6","dist":{"integrity":"sha512-Z4MHgdmNXyeEybBkmua2cirFcsoiEKoboIDWq04SXwHNavC/Mh8jSpiGSA/iaHh2VpP+yHkITvPPYEg6ntidiw==","shasum":"177a2b84274a77dfc5db0291c5626489d5cfcfe1","tarball":"https://registry.npmjs.org/react-asyncmodule/-/react-asyncmodule-1.1.0-alpha.1.tgz","fileCount":11,"unpackedSize":44025,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJea6C8CRA9TVsSAnZWagAAAKoP/iGDvZbK4AJY4s1vj8td\nkPM7ppgH4UopUGJZ9Pu6TmaNFS51yOpJGkb9c6FooIrhYEhO9W9alx+cz4IK\nHLGPoz/MaboEVvs9s0Q7y5hniLJ6UqpedFTzeHlyyJitSQABa6oaO8MhFb91\nA9GEjXV8q3CVLcFNIlhoVQyTLK8oW5gEZdS6joZaDbeD8jfCjkihwQAUOO7E\nPLltuMDgpP88lIR4ZU+gpMkKV+0i+yVBKL0fN8V88TPxIsZ4GcODY6JHu//w\n39UUd1XxO0EqRgnEsEkt/9EzhTWSs23nm8PlkrH3XdjS6FA33f8UerONgBah\ncrQvTS43I1tZuCZd1Gd/B6kmz++RlQyvRJPc0sbdRhE1Oonbl628Tuju8YPA\nOwI213mJzHFI8MUOWnY6CVwOfWU0NbFflcNgRF7pW6N4fBNH75YlQhWocfPR\nMoqXubgZj6hNvHtQFkpGmD3t5DCZCIgIydRF6d1nmywM8J0TPXOW6MMhXDZl\n2rMysD3pLZudwjA8XOOE07EH9tWoQNTjjjWyGxn46lilFUs4/f/7ik9ex3Dk\nmLKAfxN84KvR6uy49uyxZnCGzkMLyOvWCabKfsD4SW6AonSfBzu0t2zjeEgx\nnHEvEDNWeWcxC0khn0WahwrOkgCstnnqB/Ny9eTYU5DGTuefanol5n9A/I0g\n3aTc\r\n=dHsO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHYq1Q8me01Wne8LWsE1wnW92F0+eP6BVtyp7ppzhbIYAiEAzXlUXJujncDZe+CV4huVc7ljgteYyrOWLZ/UwvkE3Ng="}]},"maintainers":[{"name":"caor1987","email":"caor1987@gmail.com"}],"_npmUser":{"name":"caor1987","email":"caor1987@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-asyncmodule_1.1.0-alpha.1_1584111804173_0.8147797970356971"},"_hasShrinkwrap":false},"1.1.0-alpha.2":{"name":"react-asyncmodule","version":"1.1.0-alpha.2","description":"react async load component","author":{"name":"caoren"},"keywords":["react","async","module"],"bugs":{"url":"https://github.com/caoren/react-asyncmodule/issues"},"homepage":"https://github.com/caoren/react-asyncmodule","repository":{"type":"git","url":"git+https://github.com/caoren/react-asyncmodule.git"},"scripts":{"dev":"webpack-dev-server --port 7909 --content-base demo/ --config demo/webpack.config.js --progress --hot --inline","js:commonjs":"cross-env BABEL_ENV=commonjs babel src/ --out-dir dist/","js:es":"cross-env BABEL_ENV=es babel src --out-dir es","test":"jest","build":"npm run test && npm run js:commonjs && npm run js:es"},"devDependencies":{"autoprefixer":"^7.1.4","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^8.0.1","babel-jest":"^22.2.2","babel-loader":"^7.1.2","babel-plugin-add-module-exports":"^0.2.1","babel-plugin-asyncmodule-import":"^0.2.0","babel-plugin-syntax-dynamic-import":"^6.18.0","babel-preset-env":"^1.6.0","babel-preset-react":"^6.24.1","babel-preset-stage-0":"^6.24.1","copyfiles":"^1.2.0","cross-env":"^5.0.5","css-loader":"^0.28.7","enzyme":"^3.3.0","enzyme-adapter-react-16":"^1.13.0","eslint":"^4.9.0","eslint-config-airbnb-base":"^11.3.0","eslint-loader":"^3.0.0","eslint-plugin-import":"^2.7.0","eslint-plugin-jsx-a11y":"^6.0.2","eslint-plugin-react":"^7.4.0","extract-css-chunks-webpack-plugin":"^4.6.0","file-loader":"^1.1.4","jest":"^22.2.2","less":"^3.8.1","less-loader":"^2.2.3","less-plugin-autoprefix":"^1.5.1","less-plugin-inline-urls":"^1.2.0","postcss-loader":"^2.0.6","prop-types":"^15.6.0","react":"^16.3.0","react-dom":"^16.3.0","react-hot-loader":"^4.8.5","react-router":"^5.0.1","react-router-config":"^5.0.1","react-router-dom":"^5.0.1","react-test-renderer":"^16.8.6","rimraf":"^2.6.2","style-loader":"^0.18.2","url-loader":"^1.1.1","webpack":"^4.39.3","webpack-cli":"^3.3.8","webpack-dev-server":"^3.1.11","yargs":"^9.0.1"},"peerDependencies":{"prop-types":">=15.3.0","react":">=15.3.0","react-dom":">=15.3.0"},"engines":{"node":">= 6.2.0","npm":">= 3.0.0"},"jsnext:main":"es/index.js","main":"dist/index.js","jest":{"collectCoverage":true,"moduleFileExtensions":["js","jsx"],"testEnvironmentOptions":{"url":"http://localhost"},"testMatch":["<rootDir>/test/*.js?(x)"],"transform":{"^.+\\.js$":"babel-jest"}},"dependencies":{"hoist-non-react-statics":"^3.3.0","react-asyncmodule-chunk":"^1.1.0-alpha.1"},"browserslist":["iOS >= 8.0","Android >= 4.4"],"gitHead":"e704bf27d8842530793674cac7c39e6dfcf83d89","readme":"# react-asyncmodule\n\nwebpack2+, it's recommended to use `import` method implementation code spliting, this component can help you simplify your code.\n\n## Installation\n\n```javascript\nnpm install react-asyncmodule --save\n```\n\n## Basic usage\n\n```javascript\nimport AsyncModule from 'react-asyncmodule';\n\nconst Home = AsyncModule({\n    load: () => import(/* webpackChunkName: \"home\" */ './home'),\n    resolveWeak: () => require.resolveWeak('./home'),\n    chunk: () => 'home',\n    loading: <Loading />,\n    error: <ErrorView />\n});\n\nconst List = AsyncModule({\n    load: () => import(/* webpackChunkName: \"list\" */ './list'),\n    resolveWeak: () => require.resolveWeak('./list'),\n    chunk: () => 'list',\n    loading: <Loading />,\n    error: <ErrorView />\n});\n```\n\n通过上面的代码，我们可以发现 `loading` and `error` 2个选项是相同的，可以这样简化。\n\n```javascript\nconst AsyncComponent = AsyncModule({\n    loading: <Loading />,\n    error: <ErrorView />\n});\n\nconst Home = AsyncComponent({\n    load: () => import(/* webpackChunkName: \"home\" */ './home'),\n    resolveWeak: () => require.resolveWeak('./home'),\n    chunk: () => 'home'\n});\n\nconst List = AsyncModule({\n    load: () => import(/* webpackChunkName: \"list\" */ './list'),\n    resolveWeak: () => require.resolveWeak('./list'),\n    chunk: () => 'list'\n});\n```\n很好，但是还有一些重复的代码。\n\n```javascript\nconst Home = AsyncComponent(import('./home'));\nconst List = AsyncComponent(import('./list'));\n```\n\n完美，使用这个 babel 插件 [babel-plugin-asyncmodule-import](https://github.com/caoren/react-asyncmodule/tree/master/packages/asyncmodule-import)。\n\n返回的 AsnycComponent 组件上有以下一些静态属性和方法。\n\n### chunkName\n\n属性，返回当前组件的 chunk 名称，即上面代码中的 `chunk` 方法的返回值。\n\n### preload\n\n预加载方法，返回一个 promise 实例，可在回调中获取到当前组件。a\n\n### preloadWeak\n\n预加载方法，不同于 `preload`，该方法是同步返回当前的组件，通常用于 server render。\n\n## asyncReady\n\n```javascript\nimport { asyncReady } from 'react-asyncmodule';\n\nasyncReady(() => {\n    // 依赖的 chunk 准备就绪，再进行注水，防止因 chunk 还未加载完成和 server 端渲染不一致\n    ReactDOM.hydrate();\n});\n```\n\n## API\n\n```javascript\nAsyncModule(Options);\n```\n\n## Options\n\n### load\n\n函数, 返回一个 `Promise` 实例. 通常由 webpack 提供的 `import` 方法生成.\n\n### render\n\n自定义渲染函数，接收两个参数分别是 `props` 和 `Component`。\n\n```javascript\nconst List = AsyncModule({\n    load: () => import(/* webpackChunkName: \"list\" */ './list'),\n    render: (props, Comp) => <Comp {...props} />\n});\n```\n\n### resolveWeak\n\n返回当前导入组件的 moduleId。由 webpack 的 `require.resolveWeak` 方法自动生成。\n\n### loading\n\n加载时显示的组件。\n\n\n### error\n\n加载错误时显示的组件。 接受两个参数`onRetry`和`error`。\n\n\n### delay\n\n默认 `200` ms。 `loading` 组件延迟显示的时间，单位ms。\n\n当网络速度很快时，用户看不到加载组件。\n\n### timeout\n\n默认 `120000` ms。 加载超时，单位ms。\n\n### onModuleLoaded\n\nmodule加载完执行，返回3个参数\n\n* comp, 当前module\n* chunkName, 当前module的chunk名称\n* isServer, 当前是否为 node 端\n\n`onModuleLoaded(comp, chunkName, isServer)`\n","readmeFilename":"README.md","_id":"react-asyncmodule@1.1.0-alpha.2","_nodeVersion":"12.13.1","_npmVersion":"6.13.6","dist":{"integrity":"sha512-y+0zZLQKu8H7CsCQWY0WE52RLnJwKrXgdsZeHKPiVhBjSYGKhj3yzpnKmZkWHswlx1Y4M2rOqWUcNI/C8D8Hfg==","shasum":"9c4c78deb2799adc40d15bb2989156cc9e3c64c5","tarball":"https://registry.npmjs.org/react-asyncmodule/-/react-asyncmodule-1.1.0-alpha.2.tgz","fileCount":10,"unpackedSize":36352,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJehYOPCRA9TVsSAnZWagAAdPoP/3MzSwzskvDJ0Y1x0JIp\nPOtUIQQsIhYRYCY/XKWA1nBo/I6qLPwwJhr26opYK110K5AQIeDGEeM1XXgU\ncJb7W8Xo0qkuun1LpPrnuQLrSCloZ1TSgaBTxMjNP6fNTTpbuomyepqdRsoz\n92oFH/42mskiMILERZRWU38Sg5fjEsCFqeep4G7x5IegSVPswZiMgQfPpru0\ndmYl8LwPCGS7pu+MGsxQJFzmWa6jnVw7I2P6o+Ccx0FW2ZGlSQo4ytpDZAdI\n///GvtyPPpy3RMY0luZG0bp9jUG2T5/a7nh/Dc+p+5JKZwS1gGLb6KHnFhnP\njaQWG/pYcx0Q0oQrWqSSQdfGRmq400hTxtxUpodx/ZczUw0M563KvgvfbBeD\noJ2+Pwt5VQhgR6dTEKfnIwolK4+1z7C2zPRUSwiZ/kzE+2wRgQfU2uUgb0JB\nBfXdvFJsAgRBlGfRPxSkItjkNDbCQSHXEQFnxwntZ9k5W5nlNGSPhyyGqeRU\nB5lbj0nJAj3CV+pZWoStLnrWvtDB2fpV+iTfDe1OyiQzFkEnIJI0Ip3m/Aex\n40GEi9uZRHl/gWvD5zcybnMYdHox9t3ZuMnATfxe9VpDDiIw+U1IyT7WPWZq\ndRycFsF8VFDtSnVk8aJFB5XSsl8ZMCEnI3PwA6bh6xB0gxVAV855zjmSPCIM\nb4Pa\r\n=cHlR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDbWTRZlmeH31twBu2ToDtHm92iAvnuPjTw9BTIZ3eTjAiAFfXC1NlmLcJ002T+Do2GBpLRchWno+1wbRcNRPPPedg=="}]},"maintainers":[{"name":"caor1987","email":"caor1987@gmail.com"}],"_npmUser":{"name":"caor1987","email":"caor1987@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-asyncmodule_1.1.0-alpha.2_1585808270800_0.2636654441204018"},"_hasShrinkwrap":false},"1.1.0":{"name":"react-asyncmodule","version":"1.1.0","description":"react async load component","author":{"name":"caoren"},"keywords":["react","async","module"],"bugs":{"url":"https://github.com/caoren/react-asyncmodule/issues"},"homepage":"https://github.com/caoren/react-asyncmodule","repository":{"type":"git","url":"git+https://github.com/caoren/react-asyncmodule.git"},"scripts":{"dev":"webpack-dev-server --port 7909 --content-base demo/ --config demo/webpack.config.js --progress --hot --inline","js:commonjs":"cross-env BABEL_ENV=commonjs babel src/ --out-dir dist/","js:es":"cross-env BABEL_ENV=es babel src --out-dir es","test":"jest","build":"npm run test && npm run js:commonjs && npm run js:es"},"devDependencies":{"autoprefixer":"^7.1.4","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^8.0.1","babel-jest":"^22.2.2","babel-loader":"^7.1.2","babel-plugin-add-module-exports":"^0.2.1","babel-plugin-asyncmodule-import":"^0.2.0","babel-plugin-syntax-dynamic-import":"^6.18.0","babel-preset-env":"^1.6.0","babel-preset-react":"^6.24.1","babel-preset-stage-0":"^6.24.1","copyfiles":"^1.2.0","cross-env":"^5.0.5","css-loader":"^0.28.7","enzyme":"^3.3.0","enzyme-adapter-react-16":"^1.13.0","eslint":"^4.9.0","eslint-config-airbnb-base":"^11.3.0","eslint-loader":"^3.0.0","eslint-plugin-import":"^2.7.0","eslint-plugin-jsx-a11y":"^6.0.2","eslint-plugin-react":"^7.4.0","extract-css-chunks-webpack-plugin":"^4.6.0","file-loader":"^1.1.4","jest":"^22.2.2","less":"^3.8.1","less-loader":"^2.2.3","less-plugin-autoprefix":"^1.5.1","less-plugin-inline-urls":"^1.2.0","postcss-loader":"^2.0.6","prop-types":"^15.6.0","react":"^16.3.0","react-dom":"^16.3.0","react-hot-loader":"^4.8.5","react-router":"^5.0.1","react-router-config":"^5.0.1","react-router-dom":"^5.0.1","react-test-renderer":"^16.8.6","rimraf":"^2.6.2","style-loader":"^0.18.2","url-loader":"^1.1.1","webpack":"^4.39.3","webpack-cli":"^3.3.8","webpack-dev-server":"^3.1.11","yargs":"^9.0.1"},"peerDependencies":{"prop-types":">=15.3.0","react":">=15.3.0","react-dom":">=15.3.0"},"engines":{"node":">= 6.2.0","npm":">= 3.0.0"},"jsnext:main":"es/index.js","main":"dist/index.js","jest":{"collectCoverage":true,"moduleFileExtensions":["js","jsx"],"testEnvironmentOptions":{"url":"http://localhost"},"testMatch":["<rootDir>/test/*.js?(x)"],"transform":{"^.+\\.js$":"babel-jest"}},"dependencies":{"hoist-non-react-statics":"^3.3.0","react-asyncmodule-chunk":"^1.1.0"},"browserslist":["iOS >= 8.0","Android >= 4.4"],"gitHead":"348d2d65dd8843d004d76a60c0b7766234d3dd08","_resolved":"","_integrity":"","_from":"file:react-asyncmodule-1.1.0.tgz","_id":"react-asyncmodule@1.1.0","_nodeVersion":"12.13.1","_npmVersion":"6.13.6","dist":{"integrity":"sha512-AskUs8p41drH1I40JYbdEUaBQoVjZByDYq2yjH0JVtqgpjuexDsYtkPsV/gDFrgbuIzulmiBrW72gtAwBLXI4A==","shasum":"0b40a681e3c1fb2d1488c61c8775b8f8c454e83e","tarball":"https://registry.npmjs.org/react-asyncmodule/-/react-asyncmodule-1.1.0.tgz","fileCount":11,"unpackedSize":37429,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJehYSiCRA9TVsSAnZWagAAUY8P/39HZnV6ULfp6OSvQVfx\nwtVBrsTHHvjKYYPT+fJMC86mNWrXMm2vpityTIuPBb1QdGTyM7d2o92ElnMU\nyvym2rrgkoXWTaDN5aBB4TGdGuIwaKg39azsEsSYOrCg8b/c1eKYPZkC6LDK\nbPlcufmNHXD4/QcJuXBRE0xUOVtJxoHbDOWZH9U6iSIWNE3FoFSEsPv43nrQ\nOddUo4SgRlripO5f+xS5oyQA4Keb9/nRNc1WAWpOXXioSYVDZLvCbnPwxosx\nqcltwPZtSRhC0QSir47N9uPL5JQ97UdTPitSXskEouvj+sFSVAd1bB6dW0SF\nuH1HhIP2LZH4mk4i1zKW7gW1nmeEOtjz+vO53szSBT9c72/aHMYDm01/cynl\nEOrJtAd+til2b4NByojTBluma6tNGIZfj95wh2fnAj3O3rJLHXoa92NnFLqZ\nzrLoWUcNxZpiwEzfcUgtdajhPkApd5Tpml3/5UN+c4rGt4gHc10PvjowcTjB\nckwDhysxEF7k6sPjsDmaNLo6w/W3M6SQZA+Icj0KSR/OYjbSrnc8O+P1VztW\nPY+wTiG7K2dVZH2NPfC85Uiu7Zus51QQ4xhAV/DGEel8Y3AAxvvyGdkkw1UP\nAGeaUPIDFXE0PbTnzUC/+nxu8G7m4hM2GLJ8i2DYDJAiiPf3/h8XJYBfENKt\nQsbN\r\n=4mSY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF7GM9ntSeS0Mp0ZzCVlk1xoWBVvHxNIG3qbK4Uq8i+3AiBK10Tj1c/cI07SoMX18GGEK11wh33xnF9lQIfBbRFa8Q=="}]},"maintainers":[{"name":"caor1987","email":"caor1987@gmail.com"}],"_npmUser":{"name":"caor1987","email":"caor1987@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-asyncmodule_1.1.0_1585808546127_0.8450196829355658"},"_hasShrinkwrap":false},"1.2.0-alpha.0":{"name":"react-asyncmodule","version":"1.2.0-alpha.0","description":"react async load component","author":{"name":"caoren"},"keywords":["react","async","module"],"bugs":{"url":"https://github.com/caoren/react-asyncmodule/issues"},"homepage":"https://github.com/caoren/react-asyncmodule","repository":{"type":"git","url":"git+https://github.com/caoren/react-asyncmodule.git"},"scripts":{"dev":"webpack-dev-server --port 7909 --content-base demo/ --config demo/webpack.config.js --progress --hot --inline","js:commonjs":"cross-env BABEL_ENV=commonjs babel src/ --out-dir dist/","js:es":"cross-env BABEL_ENV=es babel src --out-dir es","test":"jest","build":"npm run test && npm run js:commonjs && npm run js:es"},"devDependencies":{"autoprefixer":"^7.1.4","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^8.0.1","babel-jest":"^22.2.2","babel-loader":"^7.1.2","babel-plugin-add-module-exports":"^0.2.1","babel-plugin-asyncmodule-import":"^0.2.0","babel-plugin-syntax-dynamic-import":"^6.18.0","babel-preset-env":"^1.6.0","babel-preset-react":"^6.24.1","babel-preset-stage-0":"^6.24.1","copyfiles":"^1.2.0","cross-env":"^5.0.5","css-loader":"^0.28.7","enzyme":"^3.3.0","enzyme-adapter-react-16":"^1.13.0","eslint":"^4.9.0","eslint-config-airbnb-base":"^11.3.0","eslint-loader":"^3.0.0","eslint-plugin-import":"^2.7.0","eslint-plugin-jsx-a11y":"^6.0.2","eslint-plugin-react":"^7.4.0","extract-css-chunks-webpack-plugin":"^4.6.0","file-loader":"^1.1.4","jest":"^22.2.2","less":"^3.8.1","less-loader":"^2.2.3","less-plugin-autoprefix":"^1.5.1","less-plugin-inline-urls":"^1.2.0","postcss-loader":"^2.0.6","prop-types":"^15.6.0","react":"^16.3.0","react-dom":"^16.3.0","react-hot-loader":"^4.8.5","react-router":"^5.0.1","react-router-config":"^5.0.1","react-router-dom":"^5.0.1","react-test-renderer":"^16.8.6","rimraf":"^2.6.2","style-loader":"^0.18.2","url-loader":"^1.1.1","webpack":"^4.39.3","webpack-cli":"^3.3.8","webpack-dev-server":"^3.1.11","yargs":"^9.0.1"},"peerDependencies":{"prop-types":">=15.3.0","react":">=15.3.0","react-dom":">=15.3.0"},"engines":{"node":">= 6.2.0","npm":">= 3.0.0"},"jsnext:main":"es/index.js","main":"dist/index.js","jest":{"collectCoverage":true,"moduleFileExtensions":["js","jsx"],"testEnvironmentOptions":{"url":"http://localhost"},"testMatch":["<rootDir>/test/*.js?(x)"],"transform":{"^.+\\.js$":"babel-jest"}},"dependencies":{"hoist-non-react-statics":"^3.3.0","react-asyncmodule-chunk":"^1.2.0-alpha.0"},"browserslist":["iOS >= 8.0","Android >= 4.4"],"gitHead":"53069abcd00b9227d6a3a80daef77953f8e2c939","_resolved":"","_integrity":"","_from":"file:react-asyncmodule-1.2.0-alpha.0.tgz","readme":"# react-asyncmodule\n\nwebpack2+, it's recommended to use `import` method implementation code spliting, this component can help you simplify your code.\n\n## Installation\n\n```javascript\nnpm install react-asyncmodule --save\n```\n\n## Basic usage\n\n```javascript\nimport AsyncModule from 'react-asyncmodule';\n\nconst Home = AsyncModule({\n    load: () => import(/* webpackChunkName: \"home\" */ './home'),\n    resolveWeak: () => require.resolveWeak('./home'),\n    chunk: () => 'home',\n    loading: <Loading />,\n    error: <ErrorView />\n});\n\nconst List = AsyncModule({\n    load: () => import(/* webpackChunkName: \"list\" */ './list'),\n    resolveWeak: () => require.resolveWeak('./list'),\n    chunk: () => 'list',\n    loading: <Loading />,\n    error: <ErrorView />\n});\n```\n\n通过上面的代码，我们可以发现 `loading` and `error` 2个选项是相同的，可以这样简化。\n\n```javascript\nconst AsyncComponent = AsyncModule({\n    loading: <Loading />,\n    error: <ErrorView />\n});\n\nconst Home = AsyncComponent({\n    load: () => import(/* webpackChunkName: \"home\" */ './home'),\n    resolveWeak: () => require.resolveWeak('./home'),\n    chunk: () => 'home'\n});\n\nconst List = AsyncModule({\n    load: () => import(/* webpackChunkName: \"list\" */ './list'),\n    resolveWeak: () => require.resolveWeak('./list'),\n    chunk: () => 'list'\n});\n```\n很好，但是还有一些重复的代码。\n\n```javascript\nconst Home = AsyncComponent(import('./home'));\nconst List = AsyncComponent(import('./list'));\n```\n\n完美，使用这个 babel 插件 [babel-plugin-asyncmodule-import](https://github.com/caoren/react-asyncmodule/tree/master/packages/asyncmodule-import)。\n\n返回的 AsnycComponent 组件上有以下一些静态属性和方法。\n\n### chunkName\n\n属性，返回当前组件的 chunk 名称，即上面代码中的 `chunk` 方法的返回值。\n\n### preload\n\n预加载方法，返回一个 promise 实例，可在回调中获取到当前组件。a\n\n### preloadWeak\n\n预加载方法，不同于 `preload`，该方法是同步返回当前的组件，通常用于 server render。\n\n\n## asyncReady\n\n配合 script 的 `async` 属性使用，保证 hydrate 时 chunk 都已经加载好.\n\n```javascript\nimport { asyncReady } from 'react-asyncmodule';\n\nasyncReady(() => {\n    // 依赖的 chunk 准备就绪，再进行注水，防止因 chunk 还未加载完成和 server 端渲染不一致\n    ReactDOM.hydrate();\n});\n```\n\n## API\n\n```javascript\nAsyncModule(Options);\n```\n\n## Options\n\n### load\n\n函数, 返回一个 `Promise` 实例. 通常由 webpack 提供的 `import` 方法生成.\n\n### render\n\n自定义渲染函数，接收两个参数分别是 `props` 和 `Component`。\n\n```javascript\nconst List = AsyncModule({\n    load: () => import(/* webpackChunkName: \"list\" */ './list'),\n    render: (props, Comp) => <Comp {...props} />\n});\n```\n\n### resolveWeak\n\n返回当前导入组件的 moduleId。由 webpack 的 `require.resolveWeak` 方法自动生成。\n\n### loading\n\n加载时显示的组件。\n\n\n### error\n\n加载错误时显示的组件。 接受两个参数`onRetry`和`error`。\n\n\n### delay\n\n默认 `200` ms。 `loading` 组件延迟显示的时间，单位ms。\n\n当网络速度很快时，用户看不到加载组件。\n\n### timeout\n\n默认 `120000` ms。 加载超时，单位ms。\n\n### onModuleLoaded\n\nmodule加载完执行，返回4个参数\n\n* comp, 当前module\n* chunkName, 当前module的chunk名称\n* isServer, 当前是否为 node 端\n* setState, 可设置当前 AsyncMosule 组件的state，以 props 方式透传到 comp 内\n\n`onModuleLoaded(comp, chunkName, isServer, setState)`\n","readmeFilename":"README.md","_id":"react-asyncmodule@1.2.0-alpha.0","_nodeVersion":"12.13.1","_npmVersion":"6.13.6","dist":{"integrity":"sha512-GbAdSoiTIohsMJlRDMZgANfwnQ6EPY1V638L+WdsDo9ibb7Wr89lMVUVkzDsiIJ5IVDT0W0uKB/ijKy1Ap4Dsw==","shasum":"ed53a40d65a2c81078b8d217b2480febf73cb26b","tarball":"https://registry.npmjs.org/react-asyncmodule/-/react-asyncmodule-1.2.0-alpha.0.tgz","fileCount":11,"unpackedSize":39477,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJel7uvCRA9TVsSAnZWagAAz7IP/12BjQQiqFd8dUxlIjLq\n2JFHBVH+aKsrO7OUSQ8qVG6aMinxnwHagEaSfmTPjgz8BSmJwmytd1gKsyPH\nY7mCc4rd08IxFZS8eBtj+FFlbKCwj9QBW2+lDPKICpK9Z0VY4I//o1qdnk+l\nl/+MH1vc5AilRtS9Gy8OBooNHL8j9xwVVVllQZMt47+NqEvdQHOKWtFfyNYQ\nADD9d69Qkfx2aK+27RBpG9v8fEzlkSyb8EQ9dx9BwExg8zT2dsiJfBvS5bNL\nboEX4fjUNNlTMxdpTlYCZ6SLiSrtDc8wLlT65BPrvVran2L4x1zzyJy3n7fH\nH49yft8UfhzjAXahN7gEzXpooWYYZUxr5Te5pryfuTh9k1OzidwBWrCvfqsC\nujbb+xBUhKAJVWN+P6wyk2mr7oDCwC4k1UCNFzWk2v8kItJI20rTrMGCUXmk\nxsVr4oA2NV2rzT9ACRjfUJc452w7oeHlTe1pIfhZ0KSxX74mQ5eEgi98BCa0\nsHps/IQ6gtMCPuQt3JdotjeE9KIoQlp987ChbGt1haH2nD0Oz731uOWVOv7t\nQt3ld8/FWH7JUTIbl4IC++AMMUW0F37ccXcHeLtl53IdrRttRNsc38LYXr9i\nBOvVvJ6GtmAwgY52/hJ1Bw6TJhtn46w9U87EqXaiQjRRSuSAW8gpSxcsyWQ2\nrsbY\r\n=Lp12\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCjZzjTUDqUGWNwPqk8J2k1oNZCqaBChmCGhQAtKRDhxQIhAL32zMcizjttzaGw9jxSASdDbDdU8Mgll25ZFlJ2GsKJ"}]},"maintainers":[{"name":"caor1987","email":"caor1987@gmail.com"}],"_npmUser":{"name":"caor1987","email":"caor1987@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-asyncmodule_1.2.0-alpha.0_1587002286884_0.7399222130978851"},"_hasShrinkwrap":false},"1.2.0-alpha.1":{"name":"react-asyncmodule","version":"1.2.0-alpha.1","description":"react async load component","author":{"name":"caoren"},"keywords":["react","async","module"],"bugs":{"url":"https://github.com/caoren/react-asyncmodule/issues"},"homepage":"https://github.com/caoren/react-asyncmodule","repository":{"type":"git","url":"git+https://github.com/caoren/react-asyncmodule.git"},"scripts":{"dev":"webpack-dev-server --port 7909 --content-base demo/ --config demo/webpack.config.js --progress --hot --inline","js:commonjs":"cross-env BABEL_ENV=commonjs babel src/ --out-dir dist/","js:es":"cross-env BABEL_ENV=es babel src --out-dir es","test":"jest","build":"npm run test && npm run js:commonjs && npm run js:es"},"devDependencies":{"autoprefixer":"^7.1.4","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^8.0.1","babel-jest":"^22.2.2","babel-loader":"^7.1.2","babel-plugin-add-module-exports":"^0.2.1","babel-plugin-asyncmodule-import":"^0.2.0","babel-plugin-syntax-dynamic-import":"^6.18.0","babel-preset-env":"^1.6.0","babel-preset-react":"^6.24.1","babel-preset-stage-0":"^6.24.1","copyfiles":"^1.2.0","cross-env":"^5.0.5","css-loader":"^0.28.7","enzyme":"^3.3.0","enzyme-adapter-react-16":"^1.13.0","eslint":"^4.9.0","eslint-config-airbnb-base":"^11.3.0","eslint-loader":"^3.0.0","eslint-plugin-import":"^2.7.0","eslint-plugin-jsx-a11y":"^6.0.2","eslint-plugin-react":"^7.4.0","extract-css-chunks-webpack-plugin":"^4.6.0","file-loader":"^1.1.4","jest":"^22.2.2","less":"^3.8.1","less-loader":"^2.2.3","less-plugin-autoprefix":"^1.5.1","less-plugin-inline-urls":"^1.2.0","postcss-loader":"^2.0.6","prop-types":"^15.6.0","react":"^16.3.0","react-dom":"^16.3.0","react-hot-loader":"^4.8.5","react-router":"^5.0.1","react-router-config":"^5.0.1","react-router-dom":"^5.0.1","react-test-renderer":"^16.8.6","rimraf":"^2.6.2","style-loader":"^0.18.2","url-loader":"^1.1.1","webpack":"^4.39.3","webpack-cli":"^3.3.8","webpack-dev-server":"^3.1.11","yargs":"^9.0.1"},"peerDependencies":{"prop-types":">=15.3.0","react":">=15.3.0","react-dom":">=15.3.0"},"engines":{"node":">= 6.2.0","npm":">= 3.0.0"},"jsnext:main":"es/index.js","main":"dist/index.js","jest":{"collectCoverage":true,"moduleFileExtensions":["js","jsx"],"testEnvironmentOptions":{"url":"http://localhost"},"testMatch":["<rootDir>/test/*.js?(x)"],"transform":{"^.+\\.js$":"babel-jest"}},"dependencies":{"hoist-non-react-statics":"^3.3.0","react-asyncmodule-chunk":"^1.2.0-alpha.1"},"browserslist":["iOS >= 8.0","Android >= 4.4"],"gitHead":"53069abcd00b9227d6a3a80daef77953f8e2c939","_resolved":"","_integrity":"","_from":"file:react-asyncmodule-1.2.0-alpha.1.tgz","readme":"# react-asyncmodule\n\nwebpack2+, it's recommended to use `import` method implementation code spliting, this component can help you simplify your code.\n\n## Installation\n\n```javascript\nnpm install react-asyncmodule --save\n```\n\n## Basic usage\n\n```javascript\nimport AsyncModule from 'react-asyncmodule';\n\nconst Home = AsyncModule({\n    load: () => import(/* webpackChunkName: \"home\" */ './home'),\n    resolveWeak: () => require.resolveWeak('./home'),\n    chunk: () => 'home',\n    loading: <Loading />,\n    error: <ErrorView />\n});\n\nconst List = AsyncModule({\n    load: () => import(/* webpackChunkName: \"list\" */ './list'),\n    resolveWeak: () => require.resolveWeak('./list'),\n    chunk: () => 'list',\n    loading: <Loading />,\n    error: <ErrorView />\n});\n```\n\n通过上面的代码，我们可以发现 `loading` and `error` 2个选项是相同的，可以这样简化。\n\n```javascript\nconst AsyncComponent = AsyncModule({\n    loading: <Loading />,\n    error: <ErrorView />\n});\n\nconst Home = AsyncComponent({\n    load: () => import(/* webpackChunkName: \"home\" */ './home'),\n    resolveWeak: () => require.resolveWeak('./home'),\n    chunk: () => 'home'\n});\n\nconst List = AsyncModule({\n    load: () => import(/* webpackChunkName: \"list\" */ './list'),\n    resolveWeak: () => require.resolveWeak('./list'),\n    chunk: () => 'list'\n});\n```\n很好，但是还有一些重复的代码。\n\n```javascript\nconst Home = AsyncComponent(import('./home'));\nconst List = AsyncComponent(import('./list'));\n```\n\n完美，使用这个 babel 插件 [babel-plugin-asyncmodule-import](https://github.com/caoren/react-asyncmodule/tree/master/packages/asyncmodule-import)。\n\n返回的 AsnycComponent 组件上有以下一些静态属性和方法。\n\n### chunkName\n\n属性，返回当前组件的 chunk 名称，即上面代码中的 `chunk` 方法的返回值。\n\n### preload\n\n预加载方法，返回一个 promise 实例，可在回调中获取到当前组件。a\n\n### preloadWeak\n\n预加载方法，不同于 `preload`，该方法是同步返回当前的组件，通常用于 server render。\n\n\n## asyncReady\n\n配合 script 的 `async` 属性使用，保证 hydrate 时 chunk 都已经加载好.\n\n```javascript\nimport { asyncReady } from 'react-asyncmodule';\n\nasyncReady(() => {\n    // 依赖的 chunk 准备就绪，再进行注水，防止因 chunk 还未加载完成和 server 端渲染不一致\n    ReactDOM.hydrate();\n});\n```\n\n## API\n\n```javascript\nAsyncModule(Options);\n```\n\n## Options\n\n### load\n\n函数, 返回一个 `Promise` 实例. 通常由 webpack 提供的 `import` 方法生成.\n\n### render\n\n自定义渲染函数，接收两个参数分别是 `props` 和 `Component`。\n\n```javascript\nconst List = AsyncModule({\n    load: () => import(/* webpackChunkName: \"list\" */ './list'),\n    render: (props, Comp) => <Comp {...props} />\n});\n```\n\n### resolveWeak\n\n返回当前导入组件的 moduleId。由 webpack 的 `require.resolveWeak` 方法自动生成。\n\n### loading\n\n加载时显示的组件。\n\n\n### error\n\n加载错误时显示的组件。 接受两个参数`onRetry`和`error`。\n\n\n### delay\n\n默认 `200` ms。 `loading` 组件延迟显示的时间，单位ms。\n\n当网络速度很快时，用户看不到加载组件。\n\n### timeout\n\n默认 `120000` ms。 加载超时，单位ms。\n\n### onModuleLoaded(option)\n\nmodule加载完执行，返回一个对象，有 5 个属性值，详细如下\n\n* component, 当前module\n* chunkName, 当前module的chunk名称\n* isServer, 当前是否为 node 端\n* setState, 可设置当前 AsyncMosule 组件的state，以 props 方式透传到 comp 内\n* props, 组件的props\n\n`onModuleLoaded({ component, chunkName, isServer, setState, props })`\n","readmeFilename":"README.md","_id":"react-asyncmodule@1.2.0-alpha.1","_nodeVersion":"12.13.1","_npmVersion":"6.13.6","dist":{"integrity":"sha512-4Ejag7xBkzwB4ZRDcoMd+BeeLQfDQ8HUc5Nbwg3bevXPpZlf1YNfICeMhNgkSJlSo5vUnEp2jZQqG6FbBnRhxg==","shasum":"f5892b51675d76d4253935148a6d7615e4703dee","tarball":"https://registry.npmjs.org/react-asyncmodule/-/react-asyncmodule-1.2.0-alpha.1.tgz","fileCount":11,"unpackedSize":40070,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJevKkJCRA9TVsSAnZWagAAIrMP/1yvmJmhzFzZ5227SA7f\n9pFw5xxb7J+DnTmydgeKPm1staRUBFUR8LOFoLHZ+j4rb4yagz0NojUL4Y6f\nu774765jwHaI+pW7oGr9Rh/p9AcFhRnZnT+ypzx2Hg/TAQ1wrf2tCvWNNneN\nXxQEaTc3PR3BjlhnRUkENXsQzPqpz/p5Hoo3R0nyeneQg/V6oWwIJvaYCKwQ\nT5KdHJZ1iH3SCSrOqoAgz74iVct9C8lB2boeEAW5jSYaCrP0NmFiqFXdlYQj\nX82+aqwYc0zFrgm5WZ83gAbgAQZ+rmMy5EpUbWADSecLRnkzTrHm3/j8KGL4\nNjlNShAa0x3oH31WitcOs8AjPlKLMFrk9wXVi6y0AIq9HxEoOq2WwVFEuSZS\n/SlWYhzYEAEd7/d6mmegX/Az0tpfiJZE+5sDr7XylfDbzUxn9v6lDvNByXC/\n1OvZJ+bIyANk2JW0ZMoblcqNXMj/Sp5bY33DwVy5eo/c9W8Jvw/EZZ/nV1L6\nMJyjuyRz7I/uAP0B/yYyRv4YtM0ofy9/WV0zrAsrG2RYLQ8/OJ0guexFM0a0\nC7HJNb/o5N7hCaoc0SI/JQVn7jrP+/mRsNzyQM6WJ4Y9FeQTCo7EE07Pirx5\npdoJn2o7Bl2h4oncIJCODambLtiwVmuPXgkktw2A0ih0vxFN1WQBJnF27puM\nAClK\r\n=kdQj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDzXTzMGPfQmL5VOwT+XP4qOuUNT2lESAGqaShWfHEIoAiEAp+PzUUSDfcumpWjUdgLjdlkqNzhztI40K49KdsYo3aY="}]},"maintainers":[{"name":"caor1987","email":"caor1987@gmail.com"}],"_npmUser":{"name":"caor1987","email":"caor1987@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-asyncmodule_1.2.0-alpha.1_1589422345211_0.34190772757795673"},"_hasShrinkwrap":false},"1.2.0-alpha.2":{"name":"react-asyncmodule","version":"1.2.0-alpha.2","description":"react async load component","author":{"name":"caoren"},"keywords":["react","async","module"],"bugs":{"url":"https://github.com/caoren/react-asyncmodule/issues"},"homepage":"https://github.com/caoren/react-asyncmodule","repository":{"type":"git","url":"git+https://github.com/caoren/react-asyncmodule.git"},"scripts":{"dev":"webpack-dev-server --port 7909 --content-base demo/ --config demo/webpack.config.js --progress --hot --inline","js:commonjs":"cross-env BABEL_ENV=commonjs babel src/ --out-dir dist/","js:es":"cross-env BABEL_ENV=es babel src --out-dir es","test":"jest","build":"npm run test && npm run js:commonjs && npm run js:es"},"devDependencies":{"autoprefixer":"^7.1.4","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^8.0.1","babel-jest":"^22.2.2","babel-loader":"^7.1.2","babel-plugin-add-module-exports":"^0.2.1","babel-plugin-asyncmodule-import":"^0.2.0","babel-plugin-syntax-dynamic-import":"^6.18.0","babel-preset-env":"^1.6.0","babel-preset-react":"^6.24.1","babel-preset-stage-0":"^6.24.1","copyfiles":"^1.2.0","cross-env":"^5.0.5","css-loader":"^0.28.7","enzyme":"^3.3.0","enzyme-adapter-react-16":"^1.13.0","eslint":"^4.9.0","eslint-config-airbnb-base":"^11.3.0","eslint-loader":"^3.0.0","eslint-plugin-import":"^2.7.0","eslint-plugin-jsx-a11y":"^6.0.2","eslint-plugin-react":"^7.4.0","extract-css-chunks-webpack-plugin":"^4.6.0","file-loader":"^1.1.4","jest":"^22.2.2","less":"^3.8.1","less-loader":"^2.2.3","less-plugin-autoprefix":"^1.5.1","less-plugin-inline-urls":"^1.2.0","postcss-loader":"^2.0.6","prop-types":"^15.6.0","react":"^16.3.0","react-dom":"^16.3.0","react-hot-loader":"^4.8.5","react-router":"^5.0.1","react-router-config":"^5.0.1","react-router-dom":"^5.0.1","react-test-renderer":"^16.8.6","rimraf":"^2.6.2","style-loader":"^0.18.2","url-loader":"^1.1.1","webpack":"^4.39.3","webpack-cli":"^3.3.8","webpack-dev-server":"^3.1.11","yargs":"^9.0.1"},"peerDependencies":{"prop-types":">=15.3.0","react":">=15.3.0","react-dom":">=15.3.0"},"engines":{"node":">= 6.2.0","npm":">= 3.0.0"},"jsnext:main":"es/index.js","main":"dist/index.js","jest":{"collectCoverage":true,"moduleFileExtensions":["js","jsx"],"testEnvironmentOptions":{"url":"http://localhost"},"testMatch":["<rootDir>/test/*.js?(x)"],"transform":{"^.+\\.js$":"babel-jest"}},"dependencies":{"hoist-non-react-statics":"^3.3.0","react-asyncmodule-chunk":"^1.1.0"},"browserslist":["iOS >= 8.0","Android >= 4.4"],"gitHead":"21b2af92d7f8a51f4ec236e2dfd17a3e71d78f72","_resolved":"","_integrity":"","_from":"file:react-asyncmodule-1.2.0-alpha.2.tgz","readme":"# react-asyncmodule\n\nwebpack2+, it's recommended to use `import` method implementation code spliting, this component can help you simplify your code.\n\n## Installation\n\n```javascript\nnpm install react-asyncmodule --save\n```\n\n## Basic usage\n\n```javascript\nimport AsyncModule from 'react-asyncmodule';\n\nconst Home = AsyncModule({\n    load: () => import(/* webpackChunkName: \"home\" */ './home'),\n    resolveWeak: () => require.resolveWeak('./home'),\n    chunk: () => 'home',\n    loading: <Loading />,\n    error: <ErrorView />\n});\n\nconst List = AsyncModule({\n    load: () => import(/* webpackChunkName: \"list\" */ './list'),\n    resolveWeak: () => require.resolveWeak('./list'),\n    chunk: () => 'list',\n    loading: <Loading />,\n    error: <ErrorView />\n});\n```\n\n通过上面的代码，我们可以发现 `loading` and `error` 2个选项是相同的，可以这样简化。\n\n```javascript\nconst AsyncComponent = AsyncModule({\n    loading: <Loading />,\n    error: <ErrorView />\n});\n\nconst Home = AsyncComponent({\n    load: () => import(/* webpackChunkName: \"home\" */ './home'),\n    resolveWeak: () => require.resolveWeak('./home'),\n    chunk: () => 'home'\n});\n\nconst List = AsyncModule({\n    load: () => import(/* webpackChunkName: \"list\" */ './list'),\n    resolveWeak: () => require.resolveWeak('./list'),\n    chunk: () => 'list'\n});\n```\n很好，但是还有一些重复的代码。\n\n```javascript\nconst Home = AsyncComponent(import('./home'));\nconst List = AsyncComponent(import('./list'));\n```\n\n完美，使用这个 babel 插件 [babel-plugin-asyncmodule-import](https://github.com/caoren/react-asyncmodule/tree/master/packages/asyncmodule-import)。\n\n返回的 AsnycComponent 组件上有以下一些静态属性和方法。\n\n### chunkName\n\n属性，返回当前组件的 chunk 名称，即上面代码中的 `chunk` 方法的返回值。\n\n### preload\n\n预加载方法，返回一个 promise 实例，可在回调中获取到当前组件。a\n\n### preloadWeak\n\n预加载方法，不同于 `preload`，该方法是同步返回当前的组件，通常用于 server render。\n\n\n## asyncReady\n\n配合 script 的 `async` 属性使用，保证 hydrate 时 chunk 都已经加载好.\n\n```javascript\nimport { asyncReady } from 'react-asyncmodule';\n\nasyncReady(() => {\n    // 依赖的 chunk 准备就绪，再进行注水，防止因 chunk 还未加载完成和 server 端渲染不一致\n    ReactDOM.hydrate();\n});\n```\n\n## API\n\n```javascript\nAsyncModule(Options);\n```\n\n## Options\n\n### load\n\n函数, 返回一个 `Promise` 实例. 通常由 webpack 提供的 `import` 方法生成.\n\n### render\n\n自定义渲染函数，接收两个参数分别是 `props` 和 `Component`。\n\n```javascript\nconst List = AsyncModule({\n    load: () => import(/* webpackChunkName: \"list\" */ './list'),\n    render: (props, Comp) => <Comp {...props} />\n});\n```\n\n### resolveWeak\n\n返回当前导入组件的 moduleId。由 webpack 的 `require.resolveWeak` 方法自动生成。\n\n### loading\n\n加载时显示的组件。\n\n\n### error\n\n加载错误时显示的组件。 接受两个参数`onRetry`和`error`。\n\n\n### delay\n\n默认 `200` ms。 `loading` 组件延迟显示的时间，单位ms。\n\n当网络速度很快时，用户看不到加载组件。\n\n### timeout\n\n默认 `120000` ms。 加载超时，单位ms。\n\n### onModuleLoaded\n\nmodule加载完执行，返回 1 个 options 对象, 包含 5 个属性，详细如下。\n\n* component, 当前module\n* chunkName, 当前module的chunk名称\n* isServer, 当前是否为 node 端\n* setState, 可设置当前 AsyncMosule 组件的state，以 props 方式透传到 comp 内\n* props, 当前组件的props\n\n`onModuleLoaded(options)`\n","readmeFilename":"README.md","_id":"react-asyncmodule@1.2.0-alpha.2","_nodeVersion":"12.13.1","_npmVersion":"6.13.6","dist":{"integrity":"sha512-FETeMd3qgu/vJizKxynM9BCE6KiBC421jyylPHwQXysGNWRv7qvoJVttpNybezeDENQmOoYwKa/z8efvgs/00A==","shasum":"cc50c6b6e81c1f2161fadb6d7e49cf22dcbf2d7d","tarball":"https://registry.npmjs.org/react-asyncmodule/-/react-asyncmodule-1.2.0-alpha.2.tgz","fileCount":11,"unpackedSize":39935,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJevLLeCRA9TVsSAnZWagAAcb4P/jICWQ2hOIYwVtDetf7u\nGY44BwI3LMV2LYQFOt4lV/Arlpj6qQzQK4tV3b1Lx7RvKTThlOVoUnWxhxFl\nxTrP8kRIGs/i48YXe8RUhRKTywDpHn3R2Abit7T1rkeS2MoHRv1Gzn842Kcj\nZprX8eqbT9R+UAwPsywP0IqwtXj7Q7fb4KHnhTyGH+NknOA4acnt3VkgKNaC\nFrQ0vG8eqYE8jXq+IBvPdx+WoATrwBhsh9WT0gyMaqy97uWdwNaXDCl1Ahsi\nLvhtXqR9F3MiLnf2bT9dxeEY/QD5/tlwYDCe1ACgyNWbqReeqeAqpCFXYT0f\nGQMGfBeM/c3r8RV+eh2NvIK1uHbFQY01W5LoYsVJy8gmxkIydzF6u1a2WS2F\nSjmlcYTjgiZT2w4XBEzlGaSoKULWl5K5lwI2vikcFerBsAt03NiiL2eWBo7O\nndRINDTs469BhzIrd0BCoBWduYgzI6MPg/9cteky4dnrox5HzvriOcHyGPFo\nQECsGxFdf51gVLff+Nv3Jzk/0Kove6kVyNC6BgV7z3b1Pdl92zoT5YO0fl+M\nVvwfZUha423B93hotN+SFlKvw9AwLLSQ038Sp2p6+PpEZbS5IYmTtAu9HiWo\nd75npkKVvC46kb8jq1jaBXrROHj7k3nECsynnut30GbALa6Igt22NhhcWRU0\n1yuK\r\n=aC8x\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAlCqiZTk6mJLHukbdHg1T+KdKWufczr4mmXD/JThBcnAiEApj0NG9zUcoXfYT5uNGc3qX1iwZXap4xzgP0J3JNi2Ss="}]},"maintainers":[{"name":"caor1987","email":"caor1987@gmail.com"}],"_npmUser":{"name":"caor1987","email":"caor1987@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-asyncmodule_1.2.0-alpha.2_1589424862335_0.5522974663282809"},"_hasShrinkwrap":false},"1.2.0-alpha.3":{"name":"react-asyncmodule","version":"1.2.0-alpha.3","description":"react async load component","author":{"name":"caoren"},"keywords":["react","async","module"],"bugs":{"url":"https://github.com/caoren/react-asyncmodule/issues"},"homepage":"https://github.com/caoren/react-asyncmodule","repository":{"type":"git","url":"git+https://github.com/caoren/react-asyncmodule.git"},"scripts":{"dev":"webpack-dev-server --port 7909 --content-base demo/ --config demo/webpack.config.js --progress --hot --inline","js:commonjs":"cross-env BABEL_ENV=commonjs babel src/ --out-dir dist/","js:es":"cross-env BABEL_ENV=es babel src --out-dir es","test":"jest","build":"npm run test && npm run js:commonjs && npm run js:es"},"devDependencies":{"autoprefixer":"^7.1.4","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^8.0.1","babel-jest":"^22.2.2","babel-loader":"^7.1.2","babel-plugin-add-module-exports":"^0.2.1","babel-plugin-asyncmodule-import":"^0.2.0","babel-plugin-syntax-dynamic-import":"^6.18.0","babel-preset-env":"^1.6.0","babel-preset-react":"^6.24.1","babel-preset-stage-0":"^6.24.1","copyfiles":"^1.2.0","cross-env":"^5.0.5","css-loader":"^0.28.7","enzyme":"^3.3.0","enzyme-adapter-react-16":"^1.13.0","eslint":"^4.9.0","eslint-config-airbnb-base":"^11.3.0","eslint-loader":"^3.0.0","eslint-plugin-import":"^2.7.0","eslint-plugin-jsx-a11y":"^6.0.2","eslint-plugin-react":"^7.4.0","extract-css-chunks-webpack-plugin":"^4.6.0","file-loader":"^1.1.4","jest":"^22.2.2","less":"^3.8.1","less-loader":"^2.2.3","less-plugin-autoprefix":"^1.5.1","less-plugin-inline-urls":"^1.2.0","postcss-loader":"^2.0.6","prop-types":"^15.6.0","react":"^16.3.0","react-dom":"^16.3.0","react-hot-loader":"^4.8.5","react-router":"^5.0.1","react-router-config":"^5.0.1","react-router-dom":"^5.0.1","react-test-renderer":"^16.8.6","rimraf":"^2.6.2","style-loader":"^0.18.2","url-loader":"^1.1.1","webpack":"^4.39.3","webpack-cli":"^3.3.8","webpack-dev-server":"^3.1.11","yargs":"^9.0.1"},"peerDependencies":{"prop-types":">=15.3.0","react":">=15.3.0","react-dom":">=15.3.0"},"engines":{"node":">= 6.2.0","npm":">= 3.0.0"},"jsnext:main":"es/index.js","main":"dist/index.js","jest":{"collectCoverage":true,"moduleFileExtensions":["js","jsx"],"testEnvironmentOptions":{"url":"http://localhost"},"testMatch":["<rootDir>/test/*.js?(x)"],"transform":{"^.+\\.js$":"babel-jest"}},"dependencies":{"hoist-non-react-statics":"^3.3.0","react-asyncmodule-chunk":"^1.1.0"},"browserslist":["iOS >= 8.0","Android >= 4.4"],"gitHead":"8dd615212eb79681bb683c1b923ff7859b36ef5b","_resolved":"","_integrity":"","_from":"file:react-asyncmodule-1.2.0-alpha.3.tgz","readme":"# react-asyncmodule\n\nwebpack2+, it's recommended to use `import` method implementation code spliting, this component can help you simplify your code.\n\n## Installation\n\n```javascript\nnpm install react-asyncmodule --save\n```\n\n## Basic usage\n\n```javascript\nimport AsyncModule from 'react-asyncmodule';\n\nconst Home = AsyncModule({\n    load: () => import(/* webpackChunkName: \"home\" */ './home'),\n    resolveWeak: () => require.resolveWeak('./home'),\n    chunk: () => 'home',\n    loading: <Loading />,\n    error: <ErrorView />\n});\n\nconst List = AsyncModule({\n    load: () => import(/* webpackChunkName: \"list\" */ './list'),\n    resolveWeak: () => require.resolveWeak('./list'),\n    chunk: () => 'list',\n    loading: <Loading />,\n    error: <ErrorView />\n});\n```\n\n通过上面的代码，我们可以发现 `loading` and `error` 2个选项是相同的，可以这样简化。\n\n```javascript\nconst AsyncComponent = AsyncModule({\n    loading: <Loading />,\n    error: <ErrorView />\n});\n\nconst Home = AsyncComponent({\n    load: () => import(/* webpackChunkName: \"home\" */ './home'),\n    resolveWeak: () => require.resolveWeak('./home'),\n    chunk: () => 'home'\n});\n\nconst List = AsyncModule({\n    load: () => import(/* webpackChunkName: \"list\" */ './list'),\n    resolveWeak: () => require.resolveWeak('./list'),\n    chunk: () => 'list'\n});\n```\n很好，但是还有一些重复的代码。\n\n```javascript\nconst Home = AsyncComponent(import('./home'));\nconst List = AsyncComponent(import('./list'));\n```\n\n完美，使用这个 babel 插件 [babel-plugin-asyncmodule-import](https://github.com/caoren/react-asyncmodule/tree/master/packages/asyncmodule-import)。\n\n返回的 AsnycComponent 组件上有以下一些静态属性和方法。\n\n### chunkName\n\n属性，返回当前组件的 chunk 名称，即上面代码中的 `chunk` 方法的返回值。\n\n### preload\n\n预加载方法，返回一个 promise 实例，可在回调中获取到当前组件。a\n\n### preloadWeak\n\n预加载方法，不同于 `preload`，该方法是同步返回当前的组件，通常用于 server render。\n\n\n## asyncReady\n\n配合 script 的 `async` 属性使用，保证 hydrate 时 chunk 都已经加载好.\n\n```javascript\nimport { asyncReady } from 'react-asyncmodule';\n\nasyncReady(() => {\n    // 依赖的 chunk 准备就绪，再进行注水，防止因 chunk 还未加载完成和 server 端渲染不一致\n    ReactDOM.hydrate();\n});\n```\n\n## API\n\n```javascript\nAsyncModule(Options);\n```\n\n## Options\n\n### load\n\n函数, 返回一个 `Promise` 实例. 通常由 webpack 提供的 `import` 方法生成.\n\n### render\n\n自定义渲染函数，接收两个参数分别是 `props` 和 `Component`。\n\n```javascript\nconst List = AsyncModule({\n    load: () => import(/* webpackChunkName: \"list\" */ './list'),\n    render: (props, Comp) => <Comp {...props} />\n});\n```\n\n### resolveWeak\n\n返回当前导入组件的 moduleId。由 webpack 的 `require.resolveWeak` 方法自动生成。\n\n### loading\n\n加载时显示的组件。\n\n\n### error\n\n加载错误时显示的组件。 接受两个参数`onRetry`和`error`。\n\n\n### delay\n\n默认 `200` ms。 `loading` 组件延迟显示的时间，单位ms。\n\n当网络速度很快时，用户看不到加载组件。\n\n### timeout\n\n默认 `120000` ms。 加载超时，单位ms。\n\n### onModuleLoaded\n\nmodule加载完执行，返回 1 个 options 对象, 包含 5 个属性，详细如下。\n\n* component, 当前module\n* chunkName, 当前module的chunk名称\n* isServer, 当前是否为 node 端\n* setState, 可设置当前 AsyncMosule 组件的state，以 props 方式透传到 comp 内\n* props, 当前组件的props\n\n`onModuleLoaded(options)`\n","readmeFilename":"README.md","_id":"react-asyncmodule@1.2.0-alpha.3","_nodeVersion":"12.13.1","_npmVersion":"6.13.6","dist":{"integrity":"sha512-+PA/wqlFtE/ARqW/5nTdjh97JizeH5HtWET133UAPMpkg81MhBFbWTQNk3e712OKEecchu8oAWQgJN9OyHt2SQ==","shasum":"fd45898a6682ad34debd911bc51e603ae9d6c128","tarball":"https://registry.npmjs.org/react-asyncmodule/-/react-asyncmodule-1.2.0-alpha.3.tgz","fileCount":11,"unpackedSize":40063,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJew6jfCRA9TVsSAnZWagAAUYAP/1ZITtEAn214GJGOX0x1\nHQa0T0MeK7q2Zdrv9KiOvvSq3mxqmoAlDSyTBp2ecJ66/9sK5CL64m1OkQkO\n7VVOIH4Bu2PFsZm+9BvK2l/SwdGIz9qUAxizQMOgrVXPwx5p/jkprOoEERBE\nUPmZe1KPXc/tjdNKZXCb/dRdYQr8Nh5Z/0nLMp72H/SD9f4AEEPgShhiVJQl\nste+PzJhmM5abApne3LTg4mASKBGlW5nfY1nfkxvuupmiKyMSjSspq0/gleT\n8+ABxo+ijURInnHI2bDk4W8Ue8ma6gQeL0EM1e7RGKRkuwmlzBpN38Ph5yf0\nMp34b7zrA+Jdy+szz0KZtGKykOxnyCjYFkAseA8FsPLkOPY4bUMGlOlWVOB9\n8TZZjQXDDOGL+xx3xoz6ahJmYqW5y4VXvnTgwSPl/9mhkVAOg++ZH4gHmJEA\nzcJVCh3hQDtbV2h31v2xCUHW6rJQDp5oxwoPBkWyJvqGuuPG5SQjzzj6ih9Z\n2T8apNg2Bay41edC9+JSS0fSN+5D05FsU1EOAcbtxqIr5SPaxASPc1gI/PeP\nkbf9piIQUEDi+PTQ1WHMNYkDGf/kOnvKp0n1NkjO94JmR0D9kORjzwJ42B9v\nYqRpCDIoW3+ACCUjAnBwf1mX3AzSsb9IiDM1B33xR+bKxnUPycQfGRCDhCF4\nqKlM\r\n=lHSN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF8bBLsJSSDRkyI5SuIgwMzSeO12XMPOsv1JhWYxMT84AiANNwJpBgnPvSTXL0R0uHWbnGnfUQybW0YBeGGpCYB9ug=="}]},"maintainers":[{"name":"caor1987","email":"caor1987@gmail.com"}],"_npmUser":{"name":"caor1987","email":"caor1987@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-asyncmodule_1.2.0-alpha.3_1589881054834_0.691679254336756"},"_hasShrinkwrap":false},"1.2.0-alpha.4":{"name":"react-asyncmodule","version":"1.2.0-alpha.4","description":"react async load component","author":{"name":"caoren"},"keywords":["react","async","module"],"bugs":{"url":"https://github.com/caoren/react-asyncmodule/issues"},"homepage":"https://github.com/caoren/react-asyncmodule","repository":{"type":"git","url":"git+https://github.com/caoren/react-asyncmodule.git"},"scripts":{},"devDependencies":{"autoprefixer":"^7.1.4","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^8.0.1","babel-jest":"^22.2.2","babel-loader":"^7.1.2","babel-plugin-add-module-exports":"^0.2.1","babel-plugin-asyncmodule-import":"^0.2.0","babel-plugin-syntax-dynamic-import":"^6.18.0","babel-preset-env":"^1.6.0","babel-preset-react":"^6.24.1","babel-preset-stage-0":"^6.24.1","copyfiles":"^1.2.0","cross-env":"^5.0.5","css-loader":"^0.28.7","enzyme":"^3.3.0","enzyme-adapter-react-16":"^1.13.0","eslint":"^4.9.0","eslint-config-airbnb-base":"^11.3.0","eslint-loader":"^3.0.0","eslint-plugin-import":"^2.7.0","eslint-plugin-jsx-a11y":"^6.0.2","eslint-plugin-react":"^7.4.0","extract-css-chunks-webpack-plugin":"^4.6.0","file-loader":"^1.1.4","jest":"^22.2.2","less":"^3.8.1","less-loader":"^2.2.3","less-plugin-autoprefix":"^1.5.1","less-plugin-inline-urls":"^1.2.0","postcss-loader":"^2.0.6","prop-types":"^15.6.0","react":"^16.3.0","react-dom":"^16.3.0","react-hot-loader":"^4.8.5","react-router":"^5.0.1","react-router-config":"^5.0.1","react-router-dom":"^5.0.1","react-test-renderer":"^16.8.6","rimraf":"^2.6.2","style-loader":"^0.18.2","url-loader":"^1.1.1","webpack":"^4.39.3","webpack-cli":"^3.3.8","webpack-dev-server":"^3.1.11","yargs":"^9.0.1"},"peerDependencies":{"prop-types":">=15.3.0","react":">=15.3.0","react-dom":">=15.3.0"},"engines":{"node":">= 6.2.0","npm":">= 3.0.0"},"jsnext:main":"es/index.js","main":"dist/index.js","jest":{"collectCoverage":true,"moduleFileExtensions":["js","jsx"],"testEnvironmentOptions":{"url":"http://localhost"},"testMatch":["<rootDir>/test/*.js?(x)"],"transform":{"^.+\\.js$":"babel-jest"}},"dependencies":{"hoist-non-react-statics":"^3.3.0","react-asyncmodule-chunk":"^1.1.0"},"browserslist":["iOS >= 8.0","Android >= 4.4"],"gitHead":"3d7fd7cc9cac14c41c9e773e8b408d8599764901","readme":"# react-asyncmodule\n\nwebpack2+, it's recommended to use `import` method implementation code spliting, this component can help you simplify your code.\n\n## Installation\n\n```javascript\nnpm install react-asyncmodule --save\n```\n\n## Basic usage\n\n```javascript\nimport AsyncModule from 'react-asyncmodule';\n\nconst Home = AsyncModule({\n    load: () => import(/* webpackChunkName: \"home\" */ './home'),\n    resolveWeak: () => require.resolveWeak('./home'),\n    chunk: () => 'home',\n    loading: <Loading />,\n    error: <ErrorView />\n});\n\nconst List = AsyncModule({\n    load: () => import(/* webpackChunkName: \"list\" */ './list'),\n    resolveWeak: () => require.resolveWeak('./list'),\n    chunk: () => 'list',\n    loading: <Loading />,\n    error: <ErrorView />\n});\n```\n\n通过上面的代码，我们可以发现 `loading` and `error` 2个选项是相同的，可以这样简化。\n\n```javascript\nconst AsyncComponent = AsyncModule({\n    loading: <Loading />,\n    error: <ErrorView />\n});\n\nconst Home = AsyncComponent({\n    load: () => import(/* webpackChunkName: \"home\" */ './home'),\n    resolveWeak: () => require.resolveWeak('./home'),\n    chunk: () => 'home'\n});\n\nconst List = AsyncModule({\n    load: () => import(/* webpackChunkName: \"list\" */ './list'),\n    resolveWeak: () => require.resolveWeak('./list'),\n    chunk: () => 'list'\n});\n```\n很好，但是还有一些重复的代码。\n\n```javascript\nconst Home = AsyncComponent(import('./home'));\nconst List = AsyncComponent(import('./list'));\n```\n\n完美，使用这个 babel 插件 [babel-plugin-asyncmodule-import](https://github.com/caoren/react-asyncmodule/tree/master/packages/asyncmodule-import)。\n\n返回的 AsnycComponent 组件上有以下一些静态属性和方法。\n\n### chunkName\n\n属性，返回当前组件的 chunk 名称，即上面代码中的 `chunk` 方法的返回值。\n\n### preload\n\n预加载方法，返回一个 promise 实例，可在回调中获取到当前组件。a\n\n### preloadWeak\n\n预加载方法，不同于 `preload`，该方法是同步返回当前的组件，通常用于 server render。\n\n\n## asyncReady\n\n配合 script 的 `async` 属性使用，保证 hydrate 时 chunk 都已经加载好.\n\n```javascript\nimport { asyncReady } from 'react-asyncmodule';\n\nasyncReady(() => {\n    // 依赖的 chunk 准备就绪，再进行注水，防止因 chunk 还未加载完成和 server 端渲染不一致\n    ReactDOM.hydrate();\n});\n```\n\n## API\n\n```javascript\nAsyncModule(Options);\n```\n\n## Options\n\n### load\n\n函数, 返回一个 `Promise` 实例. 通常由 webpack 提供的 `import` 方法生成.\n\n### render\n\n自定义渲染函数，接收两个参数分别是 `props` 和 `Component`。\n\n```javascript\nconst List = AsyncModule({\n    load: () => import(/* webpackChunkName: \"list\" */ './list'),\n    render: (props, Comp) => <Comp {...props} />\n});\n```\n\n### resolveWeak\n\n返回当前导入组件的 moduleId。由 webpack 的 `require.resolveWeak` 方法自动生成。\n\n### loading\n\n加载时显示的组件。\n\n\n### error\n\n加载错误时显示的组件。 接受两个参数`onRetry`和`error`。\n\n\n### delay\n\n默认 `200` ms。 `loading` 组件延迟显示的时间，单位ms。\n\n当网络速度很快时，用户看不到加载组件。\n\n### timeout\n\n默认 `120000` ms。 加载超时，单位ms。\n\n### onModuleLoaded\n\nmodule加载完执行，返回 1 个 options 对象, 包含 5 个属性，详细如下。\n\n* component, 当前module\n* chunkName, 当前module的chunk名称\n* isServer, 当前是否为 node 端\n* setState, 可设置当前 AsyncMosule 组件的state，以 props 方式透传到 comp 内\n* props, 当前组件的props\n\n`onModuleLoaded(options)`\n","readmeFilename":"README.md","_id":"react-asyncmodule@1.2.0-alpha.4","_shasum":"a4c9547b1f3bdc504820497c274b946080bcda63","_resolved":"file:react-asyncmodule-1.2.0-alpha.4.tgz","_from":"react-asyncmodule-1.2.0-alpha.4.tgz","_npmVersion":"3.10.8","_nodeVersion":"6.9.0","_npmUser":{"name":"caor1987","email":"caor1987@gmail.com"},"dist":{"shasum":"a4c9547b1f3bdc504820497c274b946080bcda63","tarball":"https://registry.npmjs.org/react-asyncmodule/-/react-asyncmodule-1.2.0-alpha.4.tgz","integrity":"sha512-r97ixMDiuZYTV0d85AK3yrrYi8ef+wLE+eJ/bO6hKZWci41qa4xAiSLeor31VCQju1gtwZ2aYt2kzEpRr49CLA==","fileCount":12,"unpackedSize":666672,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexfAkCRA9TVsSAnZWagAAucEP/0nqIUhdE/M33Nsppdsy\n14TQJyXLCZMXyje34LEezufgby+gqMUKCRGIsdwMcRI6c6j8PDtcFZMkTdAE\n4ddxiMIZWM/Aioev+NxaIKpOuofCisGt3LWGhF9Gx1daeA6EYsZ2mSiF25qP\npm11rf6oxYiIg7zB2T2TLB8fdyRrZQdHmonPR1vdwNKOeyAUj+Xedit8suHy\nU5j/BzrvL7NIi8FHzqAD62Qc5YEiPDZqFTsbe2b7W+fXdbeVUsGqZeJfcIrF\nF0cS5Zavod66vtDc6B34xY/d/8X+oSLiOlLPy+o1Giu740uk9ugIuLs1A/9e\nBh1jCmFL5Z56uqMqSDoMc8sFu5lKTG2ixyPqZeu6GRsYsnSsXK1a67s/sG8q\nyEohsvLeqat6HuPb4fm/P9y5KlEY1bg/atZRXKc9ldTu/j7046JXQ9lEfiFY\nVb4ret4Mu9KMMiWIO4IE0+p/YqYyyIkEswkjNoAsxBend3t1kU8EtaqRAbDf\nbA6IectiFFkyw8WHITwXdS5hrFbifNhAHwqnre9VLIU4Sa3/8q348i/hBiox\nAM9LMTsKpETOUWoyUMAGGrEFwpWkc0jYsmt+2c0VRHxWUaK5ioU54cu08zO3\nt+xL6hgUVO7y9b+prUD9Ky0vcbyLWiV+Y68N5ubpvapRd9USX9c8biK6dcOZ\nn6Q2\r\n=jvLS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEOfyiZvxMabUQ+3MjBg4Aw5Z3i4GWddQhlfVg0rwTM9AiB3nbDiFncdjCx8Kkd1Wut/5aVsDkaW4guUm/cbJAXptg=="}]},"maintainers":[{"name":"caor1987","email":"caor1987@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-asyncmodule_1.2.0-alpha.4_1590030372097_0.3718413848113127"},"_hasShrinkwrap":false},"1.2.0-beta.0":{"name":"react-asyncmodule","version":"1.2.0-beta.0","description":"react async load component","author":{"name":"caoren"},"keywords":["react","async","module"],"bugs":{"url":"https://github.com/caoren/react-asyncmodule/issues"},"homepage":"https://github.com/caoren/react-asyncmodule","repository":{"type":"git","url":"git+https://github.com/caoren/react-asyncmodule.git"},"scripts":{"dev":"webpack-dev-server --port 7909 --content-base demo/ --config demo/webpack.config.js --progress --hot --inline","js:commonjs":"cross-env BABEL_ENV=commonjs babel src/ --out-dir dist/","js:es":"cross-env BABEL_ENV=es babel src --out-dir es","test":"jest","build":"npm run test && npm run js:commonjs && npm run js:es"},"devDependencies":{"autoprefixer":"^7.1.4","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^8.0.1","babel-jest":"^22.2.2","babel-loader":"^7.1.2","babel-plugin-add-module-exports":"^0.2.1","babel-plugin-asyncmodule-import":"^0.2.0","babel-plugin-syntax-dynamic-import":"^6.18.0","babel-preset-env":"^1.6.0","babel-preset-react":"^6.24.1","babel-preset-stage-0":"^6.24.1","copyfiles":"^1.2.0","cross-env":"^5.0.5","css-loader":"^0.28.7","enzyme":"^3.3.0","enzyme-adapter-react-16":"^1.13.0","eslint":"^4.9.0","eslint-config-airbnb-base":"^11.3.0","eslint-loader":"^3.0.0","eslint-plugin-import":"^2.7.0","eslint-plugin-jsx-a11y":"^6.0.2","eslint-plugin-react":"^7.4.0","extract-css-chunks-webpack-plugin":"^4.6.0","file-loader":"^1.1.4","jest":"^22.2.2","less":"^3.8.1","less-loader":"^2.2.3","less-plugin-autoprefix":"^1.5.1","less-plugin-inline-urls":"^1.2.0","postcss-loader":"^2.0.6","prop-types":"^15.6.0","react":"^16.3.0","react-dom":"^16.3.0","react-hot-loader":"^4.8.5","react-router":"^5.0.1","react-router-config":"^5.0.1","react-router-dom":"^5.0.1","react-test-renderer":"^16.8.6","rimraf":"^2.6.2","style-loader":"^0.18.2","url-loader":"^1.1.1","webpack":"^4.39.3","webpack-cli":"^3.3.8","webpack-dev-server":"^3.1.11","yargs":"^9.0.1"},"peerDependencies":{"prop-types":">=15.3.0","react":">=15.3.0","react-dom":">=15.3.0"},"engines":{"node":">= 6.2.0","npm":">= 3.0.0"},"jsnext:main":"es/index.js","main":"dist/index.js","jest":{"collectCoverage":true,"moduleFileExtensions":["js","jsx"],"testEnvironmentOptions":{"url":"http://localhost"},"testMatch":["<rootDir>/test/*.js?(x)"],"transform":{"^.+\\.js$":"babel-jest"}},"dependencies":{"hoist-non-react-statics":"^3.3.0","react-asyncmodule-chunk":"^1.2.0-beta.0"},"browserslist":["iOS >= 8.0","Android >= 4.4"],"gitHead":"e704bf27d8842530793674cac7c39e6dfcf83d89","_id":"react-asyncmodule@1.2.0-beta.0","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-B5pJmahLpXp+jEGR/L8w+AH08zWFwbEGokD4yBdCEzM+qCUF4mzDIC/75T3ES6MKAFaH4CSm5pdymLySoW8Ltg==","shasum":"13b9f2483b682bfab7906b3ab0fa1b7796960763","tarball":"https://registry.npmjs.org/react-asyncmodule/-/react-asyncmodule-1.2.0-beta.0.tgz","fileCount":10,"unpackedSize":44463,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf5wgYCRA9TVsSAnZWagAAelkP/2msJk2Qd9B4P+qkPkZj\nOvvfC+6qDSDUIeKe9ZA4Wz3i6cJz6W/QnucqSGRocVFW4zrkXpq/U6dfskT8\nu9DJTsa5yYjQ46U8pOO14uOZ3BTdW+2TuTlR1dZXA7p1VvnRxMjSj6UAT/VP\n+45uskS2aeCZakNXiagQK4zgeE4++FU/zK2CWZkyjWjZ2IIUHEUy322b59tk\nu8ewAJCrj2TUiYJhyRD8ccFXUMCQ4xPrljmdduNdcVYiuBk8UJSN/av+Nn6J\nBwvqooxsu02D2gMOh94L7KJx+LadVr7ko6F8DJtHH2v7ngRIGyrD4f7UIJBy\nsnuCfG/4ddl+x8HwPioj2uEH/l2FPnQMkrTTd3FxFP+AsnkvuHrHZwpdo6zh\nd/1DJBMbLvcG40QELjntCALnIhytcbdocV+RfriQ531TEp08DVZOnZlLXZCs\n3eKoB6NOY0iZO2Xt5cxp/WH+4tUmDONpLiIW7DUjJJQm6He8inJXFYVP1qdK\nngmt8SD9IeMcyxrPmUVnOqKQzBa0kTow6VuanPgPAvNGK7qQTVsEASn9aryI\nBIaTzvPRuPGFgIwEqCF0XlBD0WCDYjIjU9xkug7XBFSYo1B5mFzlLtTPEDbY\nu2N3vvPfXdyh6cUnCqMD3IyByDTwimIVgJJKRtusiuyY18dtQ+7K5BcQO70e\njk87\r\n=EV1C\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBGJLaXVa66TB1JeLXOJhfl6LpAhO+u2w8G6rXiWvcfmAiEAl/Q5d/Y72X9SdgnaEYx6dOQHAXrsS3NaOeZrmca9bTk="}]},"_npmUser":{"name":"caor1987","email":"caor1987@gmail.com"},"directories":{},"maintainers":[{"name":"caor1987","email":"caor1987@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-asyncmodule_1.2.0-beta.0_1608976408573_0.9065279878250938"},"_hasShrinkwrap":false},"1.2.0-beta.3":{"name":"react-asyncmodule","version":"1.2.0-beta.3","description":"react async load component","author":{"name":"caoren"},"keywords":["react","async","module"],"bugs":{"url":"https://github.com/caoren/react-asyncmodule/issues"},"homepage":"https://github.com/caoren/react-asyncmodule","repository":{"type":"git","url":"git+https://github.com/caoren/react-asyncmodule.git"},"scripts":{"dev":"webpack-dev-server --port 7909 --content-base demo/ --config demo/webpack.config.js --progress --hot --inline","js:commonjs":"cross-env BABEL_ENV=commonjs babel src/ --out-dir dist/","js:es":"cross-env BABEL_ENV=es babel src --out-dir es","test":"jest","build":"npm run test && npm run js:commonjs && npm run js:es"},"devDependencies":{"autoprefixer":"^7.1.4","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^8.0.1","babel-jest":"^22.2.2","babel-loader":"^7.1.2","babel-plugin-add-module-exports":"^0.2.1","babel-plugin-asyncmodule-import":"^0.2.0","babel-plugin-syntax-dynamic-import":"^6.18.0","babel-preset-env":"^1.6.0","babel-preset-react":"^6.24.1","babel-preset-stage-0":"^6.24.1","copyfiles":"^1.2.0","cross-env":"^5.0.5","css-loader":"^0.28.7","enzyme":"^3.3.0","enzyme-adapter-react-16":"^1.13.0","eslint":"^4.9.0","eslint-config-airbnb-base":"^11.3.0","eslint-loader":"^3.0.0","eslint-plugin-import":"^2.7.0","eslint-plugin-jsx-a11y":"^6.0.2","eslint-plugin-react":"^7.4.0","extract-css-chunks-webpack-plugin":"^4.6.0","file-loader":"^1.1.4","jest":"^22.2.2","less":"^3.8.1","less-loader":"^2.2.3","less-plugin-autoprefix":"^1.5.1","less-plugin-inline-urls":"^1.2.0","postcss-loader":"^2.0.6","prop-types":"^15.6.0","react":"^16.3.0","react-dom":"^16.3.0","react-hot-loader":"^4.8.5","react-router":"^5.0.1","react-router-config":"^5.0.1","react-router-dom":"^5.0.1","react-test-renderer":"^16.8.6","rimraf":"^2.6.2","style-loader":"^0.18.2","url-loader":"^1.1.1","webpack":"^4.39.3","webpack-cli":"^3.3.8","webpack-dev-server":"^3.1.11","yargs":"^9.0.1"},"peerDependencies":{"prop-types":">=15.3.0","react":">=15.3.0","react-dom":">=15.3.0"},"engines":{"node":">= 6.2.0","npm":">= 3.0.0"},"jsnext:main":"es/index.js","main":"dist/index.js","jest":{"collectCoverage":true,"moduleFileExtensions":["js","jsx"],"testEnvironmentOptions":{"url":"http://localhost"},"testMatch":["<rootDir>/test/*.js?(x)"],"transform":{"^.+\\.js$":"babel-jest"}},"dependencies":{"hoist-non-react-statics":"^3.3.0","react-asyncmodule-chunk":"^1.2.0-beta.3"},"browserslist":["iOS >= 8.0","Android >= 4.4"],"gitHead":"e704bf27d8842530793674cac7c39e6dfcf83d89","_id":"react-asyncmodule@1.2.0-beta.3","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-vc6X7lm2CW3QDFfvPEmchDkIA7EmW7Mp3scElHFKBYPYADDh7bKuTQjVIApcIe66Nv/eK3aLAN3KPxE7M3zrcg==","shasum":"3bc02a020cbc5a6b3e5c2ccc85822c0fc5e46333","tarball":"https://registry.npmjs.org/react-asyncmodule/-/react-asyncmodule-1.2.0-beta.3.tgz","fileCount":12,"unpackedSize":47802,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgDjJ/CRA9TVsSAnZWagAAFqYP/1fIefeFMabo1LKcqgLc\nLyvOfyt7p9yfxUyTvmBADlWxivPNxA9Quwo8aNnPtUAQ/Xgq2t4Sbbh5R/MK\n1bTo20buiVAcz5WH1QEU23yxaypStESup+SMo7pcTFRewyj0PDtMib+8rFeK\nCouQnGfPVLY/SpERuEuKYcCgtZQ0bS5u/a56OcQ8ZSeTJAQFC4c60kkw3FbV\nGIDW/FcHjFLhYaZYLGgzQ8DxKvqSi4uyJKuqiAoMtPnMzTm510zG1KKivv6z\njcONlrJKdHW05Fa54e7ZkQX2PzIAN3ShbJ4iPav5vBeZF38yjf4y/BFUp0Wt\nUcbe/1LDALu9qVCIW7oc/Tr1BAbfqZ9uyWdM3eGfmk9c8qWB23H2U1VlxtMn\nV1q9heuHRa/V+dScelqqMcXxmIdU1ZrxSAtI7DLqK7L401kNgyBY7yVvSIb5\niegLTucGAj7y0SgV42ZA+TMIFYd8MgfF+dSSXUL79i3S0qowEZG0w7RY6C2z\nJGnTZb1+Az+LDyVJ2tHbpuCagpZ89+Gl2hdgBzEQd4V5AZWvvLtzoBPzW6zs\n5HRwaDo2P5Cdh8DGCVQ7sbpOSGC/MV87QfnuWG+mP4ha2WyzvDpofUgfMYBJ\nYoBAdQgF51TEOoscbZfq3mdgGUmuwvfbhEn6qqnHYpARMLUpEjggF16INu1n\nTnFg\r\n=VCsv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFyJOfgrFvuDK7B0hCp8Le7YNs+5CrI1zxdr4SfR/w1XAiEAhwj8kfRFUyxrQ8IuxEhDiDbhNIC/SPaCC2wQp+oaVzE="}]},"_npmUser":{"name":"caor1987","email":"caor1987@gmail.com"},"directories":{},"maintainers":[{"name":"caor1987","email":"caor1987@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-asyncmodule_1.2.0-beta.3_1611543166750_0.6012570834784912"},"_hasShrinkwrap":false},"1.2.0-beta.4":{"name":"react-asyncmodule","version":"1.2.0-beta.4","description":"react async load component","author":{"name":"caoren"},"keywords":["react","async","module"],"bugs":{"url":"https://github.com/caoren/react-asyncmodule/issues"},"homepage":"https://github.com/caoren/react-asyncmodule","repository":{"type":"git","url":"git+https://github.com/caoren/react-asyncmodule.git"},"scripts":{"dev":"webpack-dev-server --port 7909 --content-base demo/ --config demo/webpack.config.js --progress --hot --inline","js:commonjs":"cross-env BABEL_ENV=commonjs babel src/ --out-dir dist/","js:es":"cross-env BABEL_ENV=es babel src --out-dir es","test":"jest","build":"npm run test && npm run js:commonjs && npm run js:es"},"devDependencies":{"autoprefixer":"^7.1.4","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^8.0.1","babel-jest":"^22.2.2","babel-loader":"^7.1.2","babel-plugin-add-module-exports":"^0.2.1","babel-plugin-asyncmodule-import":"^0.2.0","babel-plugin-syntax-dynamic-import":"^6.18.0","babel-preset-env":"^1.6.0","babel-preset-react":"^6.24.1","babel-preset-stage-0":"^6.24.1","copyfiles":"^1.2.0","cross-env":"^5.0.5","css-loader":"^0.28.7","enzyme":"^3.3.0","enzyme-adapter-react-16":"^1.13.0","eslint":"^4.9.0","eslint-config-airbnb-base":"^11.3.0","eslint-loader":"^3.0.0","eslint-plugin-import":"^2.7.0","eslint-plugin-jsx-a11y":"^6.0.2","eslint-plugin-react":"^7.4.0","extract-css-chunks-webpack-plugin":"^4.6.0","file-loader":"^1.1.4","jest":"^22.2.2","less":"^3.8.1","less-loader":"^2.2.3","less-plugin-autoprefix":"^1.5.1","less-plugin-inline-urls":"^1.2.0","postcss-loader":"^2.0.6","prop-types":"^15.6.0","react":"^16.3.0","react-dom":"^16.3.0","react-hot-loader":"^4.8.5","react-router":"^5.0.1","react-router-config":"^5.0.1","react-router-dom":"^5.0.1","react-test-renderer":"^16.8.6","rimraf":"^2.6.2","style-loader":"^0.18.2","url-loader":"^1.1.1","webpack":"^4.39.3","webpack-cli":"^3.3.8","webpack-dev-server":"^3.1.11","yargs":"^9.0.1"},"peerDependencies":{"prop-types":">=15.3.0","react":">=15.3.0","react-dom":">=15.3.0"},"engines":{"node":">= 6.2.0","npm":">= 3.0.0"},"jsnext:main":"es/index.js","main":"dist/index.js","jest":{"collectCoverage":true,"moduleFileExtensions":["js","jsx"],"testEnvironmentOptions":{"url":"http://localhost"},"testMatch":["<rootDir>/test/*.js?(x)"],"transform":{"^.+\\.js$":"babel-jest"}},"dependencies":{"hoist-non-react-statics":"^3.3.0","react-asyncmodule-chunk":"^1.2.0-beta.4"},"browserslist":["iOS >= 8.0","Android >= 4.4"],"gitHead":"e704bf27d8842530793674cac7c39e6dfcf83d89","readme":"# react-asyncmodule\n\nwebpack2+, it's recommended to use `import` method implementation code spliting, this component can help you simplify your code.\n\n## Installation\n\n```javascript\nnpm install react-asyncmodule --save\n```\n\n## Basic usage\n\n```javascript\nimport AsyncModule from 'react-asyncmodule';\n\nconst Home = AsyncModule({\n    load: () => import(/* webpackChunkName: \"home\" */ './home'),\n    resolveWeak: () => require.resolveWeak('./home'),\n    chunk: () => 'home',\n    loading: <Loading />,\n    error: <ErrorView />\n});\n\nconst List = AsyncModule({\n    load: () => import(/* webpackChunkName: \"list\" */ './list'),\n    resolveWeak: () => require.resolveWeak('./list'),\n    chunk: () => 'list',\n    loading: <Loading />,\n    error: <ErrorView />\n});\n```\n\n通过上面的代码，我们可以发现 `loading` and `error` 2个选项是相同的，可以这样简化。\n\n```javascript\nconst AsyncComponent = AsyncModule({\n    loading: <Loading />,\n    error: <ErrorView />\n});\n\nconst Home = AsyncComponent({\n    load: () => import(/* webpackChunkName: \"home\" */ './home'),\n    resolveWeak: () => require.resolveWeak('./home'),\n    chunk: () => 'home'\n});\n\nconst List = AsyncModule({\n    load: () => import(/* webpackChunkName: \"list\" */ './list'),\n    resolveWeak: () => require.resolveWeak('./list'),\n    chunk: () => 'list'\n});\n```\n很好，但是还有一些重复的代码。\n\n```javascript\nconst Home = AsyncComponent(import('./home'));\nconst List = AsyncComponent(import('./list'));\n```\n\n完美，使用这个 babel 插件 [babel-plugin-asyncmodule-import](https://github.com/caoren/react-asyncmodule/tree/master/packages/asyncmodule-import)。\n\n返回的 AsnycComponent 组件上有以下一些静态属性和方法。\n\n### chunkName\n\n属性，返回当前组件的 chunk 名称，即上面代码中的 `chunk` 方法的返回值。\n\n### preload\n\n预加载方法，返回一个 promise 实例，可在回调中获取到当前组件。\n\n### preloadWeak\n\n预加载方法，不同于 `preload`，该方法是同步返回当前的组件，通常用于 server render。\n\n## API\n\n```javascript\nAsyncModule(Options);\n```\n\n## Options\n\n### load\n\n函数, 返回一个 `Promise` 实例. 通常由 webpack 提供的 `import` 方法生成.\n\n### render\n\n自定义渲染函数，接收两个参数分别是 `props` 和 `Component`。\n\n```javascript\nconst List = AsyncModule({\n    load: () => import(/* webpackChunkName: \"list\" */ './list'),\n    render: (props, Comp) => <Comp {...props} />\n});\n```\n\n### resolveWeak\n\n返回当前导入组件的 moduleId。由 webpack 的 `require.resolveWeak` 方法自动生成。\n\n### loading\n\n加载时显示的组件。\n\n\n### error\n\n加载错误时显示的组件。 接受两个参数`onRetry`和`error`。\n\n\n### delay\n\n默认 `200` ms。 `loading` 组件延迟显示的时间，单位ms。\n\n当网络速度很快时，用户看不到加载组件。\n\n### timeout\n\n默认 `120000` ms。 加载超时，单位ms。\n\n### onModuleLoaded\n\nmodule加载完执行，返回 1 个 options 对象, 包含 5 个属性，详细如下。\n\n* component, 当前module\n* chunkName, 当前module的chunk名称\n* isServer, 当前是否为 node 端\n* setState, 可设置当前 AsyncMosule 组件的state，以 props 方式透传到 comp 内\n* props, 当前组件的props\n\n`onModuleLoaded(options)`\n\n\n## other\n\nasyncmodule 组件其他的方法.\n\n### asyncReady\n\n配合 script 的 `async` 属性使用，保证 hydrate 时 chunk 都已经加载好.\n\n```javascript\nimport { asyncReady } from 'react-asyncmodule';\n\nasyncReady(() => {\n    // 依赖的 chunk 准备就绪，再进行注水，防止因 chunk 还未加载完成和 server 端渲染不一致\n    ReactDOM.hydrate();\n});\n```\n\n### chunkReady\n\n配合 `federation` 的场景，保证 hydrate 时 chunk 的依赖已经加载好.\n\n```javascript\nimport { chunkReady } from 'react-asyncmodule';\n\nchunkReady(() => {\n    // 依赖的 chunk 准备就绪，再进行注水，防止因 chunk 还未加载完成和 server 端渲染不一致\n    ReactDOM.hydrate();\n});\n```\n\n### AsyncOperate\n\n存储已经示例的 asyncmodule 的组件，一般用于等待依赖的场景，可获取组件执行对应的 preload.\n\n```javascript\nimport { AsyncOperate } from 'react-asyncmodule';\n\nAsyncOperate.get(chunkName); // { weakId, preload }\n```\n","readmeFilename":"README.md","_id":"react-asyncmodule@1.2.0-beta.4","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-xR3A+ORfmbSGbCDNW7+0h2VKY9Lyx+4Mr1axWiZ3nx2Yfeak6f6xywSNxfXbD/yL+8OOLsCOc+NHuaX2QDblBg==","shasum":"8e3c101c65985816d033a3d69ad3da6d98bf2b53","tarball":"https://registry.npmjs.org/react-asyncmodule/-/react-asyncmodule-1.2.0-beta.4.tgz","fileCount":12,"unpackedSize":47802,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGSE+CRA9TVsSAnZWagAAO0oP/2JjA7wYKxz5UdAajFHL\nbb1IS1DtOAQ2wajmdAxfgrclo+eq2TWTinxSqO8XfzdmPnlnc1NnRN56SEPp\nPBXV4Eey4TQKnXldZWtx6B0OUSA6L5a/5BW1rVtOUdGibgWzcZtvDhaawgV+\njPUidtY+XZYaErIfP8+hmgwddVSeVNwtaJUcLTPXtjeXKArmOpjj0Z2pdBps\nkF062jmV9D0vl5ZZjOGt4xVI4xqL6kWOyLH+X9azABVsRtxJ+2sBLjt8Ds7z\nGCjOTQ77ix1IjprvsTk/eZWq25rQ1sduLxySkfXmg6jo/PEJQc2noxkaYAzx\n0H8g5KacEytyxcWoZdSlArlH692wwTBc+zaGBA5AiYVpwW6qxbxcAf8wvvmQ\nX68EF7dnxGP83Xo98NPOiQaI3gZyW+VLNns8MOkxNaHkeswc35zJET3MLEaN\nsDb2U/gGy4BMHXUILjVawyLTKcwKmE5hHIU2oSMl91fgVaz1A0WiXV7CmuQa\nS+FoxGGsJR9TM9gZJqU85/hVuntkZEq7spBPsrZtgcm62YMtfagreyJU5TdS\nWor6+tRIXVoqktipmRviqUIowUWAqdZbFg3LU2VBlnvjfCGIrQIiivYVpuWm\nbdQprjNbNvtQk2UwmSFmMxEsOXTTcRrVdilclc/OTheCscAHhUh8DC76v8vA\ntG58\r\n=3a8s\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHL157gl0aLOo1CUMtleTOWQ/nPisCOh39WSaj29YEqFAiEA1EOIgix0XyTNhupf0KuE1ZHhDriAvA3MIrx+0ZGOW6I="}]},"_npmUser":{"name":"caor1987","email":"caor1987@gmail.com"},"directories":{},"maintainers":[{"name":"caor1987","email":"caor1987@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-asyncmodule_1.2.0-beta.4_1612259645736_0.6217005901555006"},"_hasShrinkwrap":false},"1.2.0-beta.5":{"name":"react-asyncmodule","version":"1.2.0-beta.5","description":"react async load component","author":{"name":"caoren"},"keywords":["react","async","module"],"bugs":{"url":"https://github.com/caoren/react-asyncmodule/issues"},"homepage":"https://github.com/caoren/react-asyncmodule","repository":{"type":"git","url":"git+https://github.com/caoren/react-asyncmodule.git"},"scripts":{"dev":"webpack-dev-server --port 7909 --content-base demo/ --config demo/webpack.config.js --progress --hot --inline","js:commonjs":"cross-env BABEL_ENV=commonjs babel src/ --out-dir dist/","js:es":"cross-env BABEL_ENV=es babel src --out-dir es","test":"jest","build":"npm run test && npm run js:commonjs && npm run js:es"},"devDependencies":{"autoprefixer":"^7.1.4","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^8.0.1","babel-jest":"^22.2.2","babel-loader":"^7.1.2","babel-plugin-add-module-exports":"^0.2.1","babel-plugin-asyncmodule-import":"^0.2.0","babel-plugin-syntax-dynamic-import":"^6.18.0","babel-preset-env":"^1.6.0","babel-preset-react":"^6.24.1","babel-preset-stage-0":"^6.24.1","copyfiles":"^1.2.0","cross-env":"^5.0.5","css-loader":"^0.28.7","enzyme":"^3.3.0","enzyme-adapter-react-16":"^1.13.0","eslint":"^4.9.0","eslint-config-airbnb-base":"^11.3.0","eslint-loader":"^3.0.0","eslint-plugin-import":"^2.7.0","eslint-plugin-jsx-a11y":"^6.0.2","eslint-plugin-react":"^7.4.0","extract-css-chunks-webpack-plugin":"^4.6.0","file-loader":"^1.1.4","jest":"^22.2.2","less":"^3.8.1","less-loader":"^2.2.3","less-plugin-autoprefix":"^1.5.1","less-plugin-inline-urls":"^1.2.0","postcss-loader":"^2.0.6","prop-types":"^15.6.0","react":"^16.3.0","react-dom":"^16.3.0","react-hot-loader":"^4.8.5","react-router":"^5.0.1","react-router-config":"^5.0.1","react-router-dom":"^5.0.1","react-test-renderer":"^16.8.6","rimraf":"^2.6.2","style-loader":"^0.18.2","url-loader":"^1.1.1","webpack":"^4.39.3","webpack-cli":"^3.3.8","webpack-dev-server":"^3.1.11","yargs":"^9.0.1"},"peerDependencies":{"prop-types":">=15.3.0","react":">=15.3.0","react-dom":">=15.3.0"},"engines":{"node":">= 6.2.0","npm":">= 3.0.0"},"jsnext:main":"es/index.js","main":"dist/index.js","jest":{"collectCoverage":true,"moduleFileExtensions":["js","jsx"],"testEnvironmentOptions":{"url":"http://localhost"},"testMatch":["<rootDir>/test/*.js?(x)"],"transform":{"^.+\\.js$":"babel-jest"}},"dependencies":{"hoist-non-react-statics":"^3.3.0","react-asyncmodule-chunk":"^1.2.0-beta.5"},"browserslist":["iOS >= 8.0","Android >= 4.4"],"gitHead":"e704bf27d8842530793674cac7c39e6dfcf83d89","readme":"# react-asyncmodule\n\nwebpack2+, it's recommended to use `import` method implementation code spliting, this component can help you simplify your code.\n\n## Installation\n\n```javascript\nnpm install react-asyncmodule --save\n```\n\n## Basic usage\n\n```javascript\nimport AsyncModule from 'react-asyncmodule';\n\nconst Home = AsyncModule({\n    load: () => import(/* webpackChunkName: \"home\" */ './home'),\n    resolveWeak: () => require.resolveWeak('./home'),\n    chunk: () => 'home',\n    loading: <Loading />,\n    error: <ErrorView />\n});\n\nconst List = AsyncModule({\n    load: () => import(/* webpackChunkName: \"list\" */ './list'),\n    resolveWeak: () => require.resolveWeak('./list'),\n    chunk: () => 'list',\n    loading: <Loading />,\n    error: <ErrorView />\n});\n```\n\n通过上面的代码，我们可以发现 `loading` and `error` 2个选项是相同的，可以这样简化。\n\n```javascript\nconst AsyncComponent = AsyncModule({\n    loading: <Loading />,\n    error: <ErrorView />\n});\n\nconst Home = AsyncComponent({\n    load: () => import(/* webpackChunkName: \"home\" */ './home'),\n    resolveWeak: () => require.resolveWeak('./home'),\n    chunk: () => 'home'\n});\n\nconst List = AsyncModule({\n    load: () => import(/* webpackChunkName: \"list\" */ './list'),\n    resolveWeak: () => require.resolveWeak('./list'),\n    chunk: () => 'list'\n});\n```\n很好，但是还有一些重复的代码。\n\n```javascript\nconst Home = AsyncComponent(import('./home'));\nconst List = AsyncComponent(import('./list'));\n```\n\n完美，使用这个 babel 插件 [babel-plugin-asyncmodule-import](https://github.com/caoren/react-asyncmodule/tree/master/packages/asyncmodule-import)。\n\n返回的 AsnycComponent 组件上有以下一些静态属性和方法。\n\n### chunkName\n\n属性，返回当前组件的 chunk 名称，即上面代码中的 `chunk` 方法的返回值。\n\n### preload\n\n预加载方法，返回一个 promise 实例，可在回调中获取到当前组件。\n\n### preloadWeak\n\n预加载方法，不同于 `preload`，该方法是同步返回当前的组件，通常用于 server render。\n\n## API\n\n```javascript\nAsyncModule(Options);\n```\n\n## Options\n\n### load\n\n函数, 返回一个 `Promise` 实例. 通常由 webpack 提供的 `import` 方法生成.\n\n### render\n\n自定义渲染函数，接收两个参数分别是 `props` 和 `Component`。\n\n```javascript\nconst List = AsyncModule({\n    load: () => import(/* webpackChunkName: \"list\" */ './list'),\n    render: (props, Comp) => <Comp {...props} />\n});\n```\n\n### resolveWeak\n\n返回当前导入组件的 moduleId。由 webpack 的 `require.resolveWeak` 方法自动生成。\n\n### loading\n\n加载时显示的组件。\n\n\n### error\n\n加载错误时显示的组件。 接受两个参数`onRetry`和`error`。\n\n\n### delay\n\n默认 `200` ms。 `loading` 组件延迟显示的时间，单位ms。\n\n当网络速度很快时，用户看不到加载组件。\n\n### timeout\n\n默认 `120000` ms。 加载超时，单位ms。\n\n### onModuleLoaded\n\ncomponent 加载完执行，返回 1 个 options 对象, 包含 5 个属性，详细如下。\n\n* component, 当前module\n* chunkName, 当前module的chunk名称\n* isServer, 当前是否为 node 端\n* setState, 可设置当前 AsyncMosule 组件的state，以 props 方式透传到 comp 内\n* props, 当前组件的props\n\n`onModuleLoaded(options)`\n\n### onBeforeRender\n\ncomponent render 前执行的回调，返回当前组件对象；\n\n`onBeforeRender(comp)`\n\n\n## other\n\nasyncmodule 组件其他的方法.\n\n### asyncReady\n\n配合 script 的 `async` 属性使用，保证 hydrate 时 chunk 都已经加载好.\n\n```javascript\nimport { asyncReady } from 'react-asyncmodule';\n\nasyncReady(() => {\n    // 依赖的 chunk 准备就绪，再进行注水，防止因 chunk 还未加载完成和 server 端渲染不一致\n    ReactDOM.hydrate();\n});\n```\n\n### chunkReady\n\n配合 `federation` 的场景，保证 hydrate 时 chunk 的依赖已经加载好.\n\n```javascript\nimport { chunkReady } from 'react-asyncmodule';\n\nchunkReady(() => {\n    // 依赖的 chunk 准备就绪，再进行注水，防止因 chunk 还未加载完成和 server 端渲染不一致\n    ReactDOM.hydrate();\n});\n```\n\n### AsyncOperate\n\n存储已经示例的 asyncmodule 的组件，一般用于等待依赖的场景，可获取组件执行对应的 preload.\n\n```javascript\nimport { AsyncOperate } from 'react-asyncmodule';\n\nAsyncOperate.get(chunkName); // { weakId, preload }\n```\n","readmeFilename":"README.md","_id":"react-asyncmodule@1.2.0-beta.5","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-sjqAfl2OfG6J+6DyuWrkmHDxY1MnVFv51mT6Y3sJHd0g07YAHIb6ROuZP6okVoU7Mcg02OtLre5V39570h/bZA==","shasum":"b7692d1d011e74a2e2e46d803c64c86643e421c1","tarball":"https://registry.npmjs.org/react-asyncmodule/-/react-asyncmodule-1.2.0-beta.5.tgz","fileCount":12,"unpackedSize":48777,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgRx+gCRA9TVsSAnZWagAAdBIP/jzyRGfC8RadtGl86iJJ\ndVWYFRAXLsP2/7jMpzE5ec04oyb0fXr/7MxT4h+zcSNPlL0f2Am0BYxST0N7\nL4TkXWLcwA2nGogUWfmb+0MxSpOlvTFosxfmCa8bZOfvvNawo5QH+sZ1EQu8\naX/qFQkaBM4fUQPmyCevJPG/VM/Ch517xdlEf389TLRjNYgp+jBGCq86vWtJ\nmI6iRSiQV556/GwV6TVk8k4mAo2Pet3ixf60KHAukDdpheq1Ar1klWrh5jCP\nLDCmZdBy+fVxl5G07HZumO/kHTVLupwfGtqFdVr28al1pYESmcWXSuGElCNq\n9wtJ6jkZ6xxGoPVvhY1sMdpRFktHFh7s44boYpN9vS8QQLOVwZZi2NQutYwa\njEa7CdKFbTBVN63LMk7fMysiNb2XeTUE0Dl0t0d0gaIC7GAhpBpLQm4ntDfv\nWydmnLWLX+TAFj6/TmfAdqkTs2Ug/mXUtCfhFB/6sIQyQ0RohwXmmlWEfz54\n0UYIw8kT6NRPmDD2l/2/tbu5tb2fd+Q5cH+TaN8CCNzFUx9KCbWMpC8Ztk5x\nc8+zUF+/1+jtpFsE3qD0nJovshwb0pSWUgfRRP2uaFXguhc8booVXPx0r9XY\nea7IQLhgbzc3Ln27M8hE19mjnWZ6hwGLUjyeHkoTtOQfIl1kZ1YgIbod/Mqe\npOOn\r\n=7bNY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGCTJd4DJgo6uFCozzDuCneU+MvGtezIZbT5gwoNVjmxAiEA8fx+1knoHhdbDMi840HV5i/1uLsg4d/lhn1Cld2Q0xQ="}]},"_npmUser":{"name":"caor1987","email":"caor1987@gmail.com"},"directories":{},"maintainers":[{"name":"caor1987","email":"caor1987@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-asyncmodule_1.2.0-beta.5_1615273887600_0.5402789910613999"},"_hasShrinkwrap":false},"1.2.0-beta.6":{"name":"react-asyncmodule","version":"1.2.0-beta.6","description":"react async load component","author":{"name":"caoren"},"keywords":["react","async","module"],"bugs":{"url":"https://github.com/caoren/react-asyncmodule/issues"},"homepage":"https://github.com/caoren/react-asyncmodule","repository":{"type":"git","url":"git+https://github.com/caoren/react-asyncmodule.git"},"scripts":{"dev":"webpack-dev-server --port 7909 --content-base demo/ --config demo/webpack.config.js --progress --hot --inline","js:commonjs":"cross-env BABEL_ENV=commonjs babel src/ --out-dir dist/","js:es":"cross-env BABEL_ENV=es babel src --out-dir es","test":"jest","build":"npm run test && npm run js:commonjs && npm run js:es"},"devDependencies":{"autoprefixer":"^7.1.4","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-eslint":"^8.0.1","babel-jest":"^22.2.2","babel-loader":"^7.1.2","babel-plugin-add-module-exports":"^0.2.1","babel-plugin-asyncmodule-import":"^0.2.0","babel-plugin-syntax-dynamic-import":"^6.18.0","babel-preset-env":"^1.6.0","babel-preset-react":"^6.24.1","babel-preset-stage-0":"^6.24.1","copyfiles":"^1.2.0","cross-env":"^5.0.5","css-loader":"^0.28.7","enzyme":"^3.3.0","enzyme-adapter-react-16":"^1.13.0","eslint":"^4.9.0","eslint-config-airbnb-base":"^11.3.0","eslint-loader":"^3.0.0","eslint-plugin-import":"^2.7.0","eslint-plugin-jsx-a11y":"^6.0.2","eslint-plugin-react":"^7.4.0","extract-css-chunks-webpack-plugin":"^4.6.0","file-loader":"^1.1.4","jest":"^22.2.2","less":"^3.8.1","less-loader":"^2.2.3","less-plugin-autoprefix":"^1.5.1","less-plugin-inline-urls":"^1.2.0","postcss-loader":"^2.0.6","prop-types":"^15.6.0","react":"^16.3.0","react-dom":"^16.3.0","react-hot-loader":"^4.8.5","react-router":"^5.0.1","react-router-config":"^5.0.1","react-router-dom":"^5.0.1","react-test-renderer":"^16.8.6","rimraf":"^2.6.2","style-loader":"^0.18.2","url-loader":"^1.1.1","webpack":"^4.39.3","webpack-cli":"^3.3.8","webpack-dev-server":"^3.1.11","yargs":"^9.0.1"},"peerDependencies":{"prop-types":">=15.3.0","react":">=15.3.0","react-dom":">=15.3.0"},"engines":{"node":">= 6.2.0","npm":">= 3.0.0"},"jsnext:main":"es/index.js","main":"dist/index.js","jest":{"collectCoverage":true,"moduleFileExtensions":["js","jsx"],"testEnvironmentOptions":{"url":"http://localhost"},"testMatch":["<rootDir>/test/*.js?(x)"],"transform":{"^.+\\.js$":"babel-jest"}},"dependencies":{"hoist-non-react-statics":"^3.3.0","react-asyncmodule-chunk":"^1.2.0-beta.6"},"browserslist":["iOS >= 8.0","Android >= 4.4"],"gitHead":"e704bf27d8842530793674cac7c39e6dfcf83d89","readme":"# react-asyncmodule\n\nwebpack2+, it's recommended to use `import` method implementation code spliting, this component can help you simplify your code.\n\n## Installation\n\n```javascript\nnpm install react-asyncmodule --save\n```\n\n## Basic usage\n\n```javascript\nimport AsyncModule from 'react-asyncmodule';\n\nconst Home = AsyncModule({\n    load: () => import(/* webpackChunkName: \"home\" */ './home'),\n    resolveWeak: () => require.resolveWeak('./home'),\n    chunk: () => 'home',\n    loading: <Loading />,\n    error: <ErrorView />\n});\n\nconst List = AsyncModule({\n    load: () => import(/* webpackChunkName: \"list\" */ './list'),\n    resolveWeak: () => require.resolveWeak('./list'),\n    chunk: () => 'list',\n    loading: <Loading />,\n    error: <ErrorView />\n});\n```\n\n通过上面的代码，我们可以发现 `loading` and `error` 2个选项是相同的，可以这样简化。\n\n```javascript\nconst AsyncComponent = AsyncModule({\n    loading: <Loading />,\n    error: <ErrorView />\n});\n\nconst Home = AsyncComponent({\n    load: () => import(/* webpackChunkName: \"home\" */ './home'),\n    resolveWeak: () => require.resolveWeak('./home'),\n    chunk: () => 'home'\n});\n\nconst List = AsyncModule({\n    load: () => import(/* webpackChunkName: \"list\" */ './list'),\n    resolveWeak: () => require.resolveWeak('./list'),\n    chunk: () => 'list'\n});\n```\n很好，但是还有一些重复的代码。\n\n```javascript\nconst Home = AsyncComponent(import('./home'));\nconst List = AsyncComponent(import('./list'));\n```\n\n完美，使用这个 babel 插件 [babel-plugin-asyncmodule-import](https://github.com/caoren/react-asyncmodule/tree/master/packages/asyncmodule-import)。\n\n返回的 AsnycComponent 组件上有以下一些静态属性和方法。\n\n### chunkName\n\n属性，返回当前组件的 chunk 名称，即上面代码中的 `chunk` 方法的返回值。\n\n### preload\n\n预加载方法，返回一个 promise 实例，可在回调中获取到当前组件。\n\n### preloadWeak\n\n预加载方法，不同于 `preload`，该方法是同步返回当前的组件，通常用于 server render。\n\n## API\n\n```javascript\nAsyncModule(Options);\n```\n\n## Options\n\n### load\n\n函数, 返回一个 `Promise` 实例. 通常由 webpack 提供的 `import` 方法生成.\n\n### render\n\n自定义渲染函数，接收两个参数分别是 `props` 和 `Component`。\n\n```javascript\nconst List = AsyncModule({\n    load: () => import(/* webpackChunkName: \"list\" */ './list'),\n    render: (props, Comp) => <Comp {...props} />\n});\n```\n\n### resolveWeak\n\n返回当前导入组件的 moduleId。由 webpack 的 `require.resolveWeak` 方法自动生成。\n\n### loading\n\n加载时显示的组件。\n\n\n### error\n\n加载错误时显示的组件。 接受两个参数`onRetry`和`error`。\n\n\n### delay\n\n默认 `200` ms。 `loading` 组件延迟显示的时间，单位ms。\n\n当网络速度很快时，用户看不到加载组件。\n\n### timeout\n\n默认 `120000` ms。 加载超时，单位ms。\n\n### onModuleLoaded\n\ncomponent 加载完执行，返回 1 个 options 对象, 包含 5 个属性，详细如下。\n\n* component, 当前module\n* chunkName, 当前module的chunk名称\n* isServer, 当前是否为 node 端\n* setState, 可设置当前 AsyncMosule 组件的state，以 props 方式透传到 comp 内\n* props, 当前组件的props\n\n`onModuleLoaded(options)`\n\n### onBeforeRender\n\ncomponent render 前执行的回调，返回当前组件对象；\n\n`onBeforeRender(comp)`\n\n\n## other\n\nasyncmodule 组件其他的方法.\n\n### asyncReady\n\n配合 script 的 `async` 属性使用，保证 hydrate 时 chunk 都已经加载好.\n\n```javascript\nimport { asyncReady } from 'react-asyncmodule';\n\nasyncReady(() => {\n    // 依赖的 chunk 准备就绪，再进行注水，防止因 chunk 还未加载完成和 server 端渲染不一致\n    ReactDOM.hydrate();\n});\n```\n\n### chunkReady\n\n配合 `federation` 的场景，保证 hydrate 时 chunk 的依赖已经加载好.\n\n```javascript\nimport { chunkReady } from 'react-asyncmodule';\n\nchunkReady(() => {\n    // 依赖的 chunk 准备就绪，再进行注水，防止因 chunk 还未加载完成和 server 端渲染不一致\n    ReactDOM.hydrate();\n});\n```\n\n### AsyncOperate\n\n存储已经示例的 asyncmodule 的组件，一般用于等待依赖的场景，可获取组件执行对应的 preload.\n\n```javascript\nimport { AsyncOperate } from 'react-asyncmodule';\n\nAsyncOperate.get(chunkName); // { weakId, preload }\n```\n","readmeFilename":"README.md","_id":"react-asyncmodule@1.2.0-beta.6","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-shdYNMZ/SD006cYKk/FshgoypejAVucpvSxIcskd2nx66A48t4bnO+oy2tDzMHLKMItMYoyw9GlBJrug60PYLg==","shasum":"909685bebe6981d9e7a884636a97a5e2eb5cd639","tarball":"https://registry.npmjs.org/react-asyncmodule/-/react-asyncmodule-1.2.0-beta.6.tgz","fileCount":12,"unpackedSize":48777,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgSy7BCRA9TVsSAnZWagAAl1AP/Rp7OVNA90f3XcFSiBiO\n8Q6SejzXDlg+c5tpHDkd4mxIImDw5KOFXPVxlRSVE+nMmXgaknAvZTipZUCG\nYeKPL4Av0wmVVJ9RyxRfUk7WaVOjZz6h8GkCChkTNkkmxEWlOnilPk3eslLN\nf4wlIQ9+6YHzBpf5lk4jUT5HteyGTsfKGKQ0giylka76N6y4qOCOTNIeHTc/\nCsDBxthEhEzdVJS57A0HvrENuRhtlLjHG+WQ9ziEyE4JHkPtN4YsKw4ANq4H\nQJGKMqaGpXdWlYul2w+tVZdiZBZ+DcugLV7d/J0dgj5gyVQciSEOEooiM7tY\nDFbpUGb3nJI0SMLBhtQMwoX8NK+ydXghwu4Rvb5iDDO6jS7fg8lzwG5WbIOe\nWAE3qd9jq/YzsblPIkl0BlOATT61qYso3fFY6RfqilHjT5o45UkLbjI+09+I\n5S1yNzow4B8yR01TKAQDSOKPbw9aUakt99h4SMHS/2VC3oHxIwJOTb+VdBGj\nzB9mJ5e5oL+ri2kPy0fpVMo7/0zTLEUvQDq56AL/sO7XIK2J+/GxCu+zbimw\npDV+0Nx9pzzt17QkDVYEdG/y7QL01XPK5hqkryAJ5v8H3cYLNItEe5EqiKd9\nFjh6A7d+sB8YQdzZ03AVlBgEZL8CLM3yYeGWfb4VxvJjugQGlJxhStlUwhDi\n5XXJ\r\n=E73c\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDdfWBq/Oo7eFefP25wOF+yQe0O6mxwfcYpLDkWLh2/UgIgJxpHTZnHOIkF6PKVcWDh672F94hOZp+qss4iy9aWIts="}]},"_npmUser":{"name":"caor1987","email":"caor1987@gmail.com"},"directories":{},"maintainers":[{"name":"caor1987","email":"caor1987@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-asyncmodule_1.2.0-beta.6_1615539904776_0.8758618169466341"},"_hasShrinkwrap":false}},"time":{"created":"2018-07-23T01:32:15.799Z","0.1.0":"2018-07-23T01:32:15.902Z","modified":"2022-06-25T16:27:39.671Z","0.1.1":"2018-07-23T11:50:21.878Z","0.1.2":"2018-07-25T07:55:36.041Z","0.1.3":"2018-09-16T13:18:27.602Z","0.1.4":"2018-09-18T06:03:30.391Z","1.0.0-alpha.1":"2019-04-09T02:37:06.471Z","1.0.0-alpha.2":"2019-05-17T10:44:19.691Z","1.0.0-alpha.3":"2019-05-22T03:15:57.820Z","1.0.0-alpha.4":"2019-05-23T03:20:32.294Z","1.0.0":"2019-09-11T09:38:26.065Z","1.1.0-alpha.0":"2020-03-11T02:37:01.541Z","1.1.0-alpha.1":"2020-03-13T15:03:24.276Z","1.1.0-alpha.2":"2020-04-02T06:17:50.895Z","1.1.0":"2020-04-02T06:22:26.317Z","1.2.0-alpha.0":"2020-04-16T01:58:07.116Z","1.2.0-alpha.1":"2020-05-14T02:12:25.314Z","1.2.0-alpha.2":"2020-05-14T02:54:22.454Z","1.2.0-alpha.3":"2020-05-19T09:37:34.994Z","1.2.0-alpha.4":"2020-05-21T03:06:12.312Z","1.2.0-beta.0":"2020-12-26T09:53:28.691Z","1.2.0-beta.3":"2021-01-25T02:52:46.893Z","1.2.0-beta.4":"2021-02-02T09:54:05.867Z","1.2.0-beta.5":"2021-03-09T07:11:27.773Z","1.2.0-beta.6":"2021-03-12T09:05:04.997Z"},"maintainers":[{"name":"caor1987","email":"caor1987@gmail.com"}],"description":"react async load component","homepage":"https://github.com/caoren/react-asyncmodule","keywords":["react","async","module"],"repository":{"type":"git","url":"git+https://github.com/caoren/react-asyncmodule.git"},"author":{"name":"caoren"},"bugs":{"url":"https://github.com/caoren/react-asyncmodule/issues"},"readme":"","readmeFilename":""}