Socket
Socket
Sign inDemoInstall

react-async-component

Package Overview
Dependencies
Maintainers
1
Versions
18
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

react-async-component - npm Package Compare versions

Comparing version 1.0.0-beta.3 to 1.0.0

23

commonjs/asyncComponent.js

@@ -60,7 +60,6 @@ 'use strict';

resolver: null
};
// Takes the given module and if it has a ".default" the ".default" will
// be returned. i.e. handy when you could be dealing with es6 imports.
var es6Resolve = function es6Resolve(x) {
// Takes the given module and if it has a ".default" the ".default" will
// be returned. i.e. handy when you could be dealing with es6 imports.
};var es6Resolve = function es6Resolve(x) {
return autoResolveES2015Default && x != null && (typeof x === 'function' || (typeof x === 'undefined' ? 'undefined' : _typeof(x)) === 'object') && x.default ? x.default : x;

@@ -145,3 +144,5 @@ };

value: function componentWillMount() {
this.setState({ module: sharedState.module });
this.setState({
module: sharedState.module
});
if (sharedState.error) {

@@ -174,3 +175,5 @@ this.registerErrorState(sharedState.error);

if (env === 'browser') {
_this3.setState({ module: module });
_this3.setState({
module: module
});
}

@@ -210,3 +213,5 @@ _this3.resolving = false;

if (!_this4.unmounted) {
_this4.setState({ error: error });
_this4.setState({
error: error
});
}

@@ -237,3 +242,2 @@ }, 16);

var Component = es6Resolve(module);
// eslint-disable-next-line no-nested-ternary
return Component ? _react2.default.createElement(Component, this.props) : LoadingComponent ? _react2.default.createElement(LoadingComponent, this.props) : null;

@@ -247,2 +251,3 @@ }

AsyncComponent.displayName = name || 'AsyncComponent';
AsyncComponent.contextTypes = {

@@ -258,2 +263,3 @@ asyncComponentsAncestor: _propTypes2.default.shape({

};
AsyncComponent.childContextTypes = {

@@ -265,3 +271,2 @@ asyncComponentsAncestor: _propTypes2.default.shape({

return AsyncComponent;

@@ -268,0 +273,0 @@ }

@@ -82,2 +82,3 @@ 'use strict';

};
AsyncComponentProvider.defaultProps = {

@@ -89,2 +90,3 @@ asyncContext: undefined,

};
AsyncComponentProvider.childContextTypes = {

@@ -97,2 +99,3 @@ asyncComponents: _propTypes2.default.shape({

};
exports.default = AsyncComponentProvider;
{
"name": "react-async-component",
"version": "1.0.0-beta.3",
"description": "Create Components that resolve asynchronously, with support for server side rendering and code splitting.",
"version": "1.0.0",
"description":
"Create Components that resolve asynchronously, with support for server side rendering and code splitting.",
"license": "MIT",
"main": "commonjs/index.js",
"files": [
"*.js",
"*.md",
"umd",
"commonjs"
],
"files": ["*.js", "*.md", "umd", "commonjs"],
"typings": "./index.d.ts",
"repository": {

@@ -29,80 +26,104 @@ "type": "git",

"build": "babel-node ./tools/scripts/build.js",
"check": "yarn run lint && yarn run test",
"clean": "rimraf ./commonjs && rimraf ./umd && rimraf ./coverage && rimraf ./flow-coverage && rimraf ./umd",
"example:web": "echo 'Make sure to `cd example/web && yarn install`' && cd example/web && yarn run start",
"check": "npm run lint && npm run test",
"clean":
"rimraf ./commonjs && rimraf ./umd && rimraf ./coverage && rimraf ./flow-coverage && rimraf ./umd",
"lint": "eslint src,tools",
"prepublish": "yarn run build",
"prepublish": "npm run build",
"test": "jest",
"test:coverage": "yarn run test -- --coverage",
"test:coverage:deploy": "yarn run test:coverage && codecov"
"test:coverage": "npm run test -- --coverage",
"test:coverage:deploy": "npm run test:coverage && codecov"
},
"jest": {
"collectCoverageFrom": [
"src/**/*.{js,jsx}"
],
"snapshotSerializers": [
"<rootDir>/node_modules/enzyme-to-json/serializer"
],
"testPathIgnorePatterns": [
"<rootDir>/(commonjs|coverage|flow-typed|node_modules|tools|umd)/"
]
},
"lint-staged": {
"*.js": [
"prettier-eslint --write",
"git add"
]
},
"peerDependencies": {
"react": "^0.14.0 || ^15.0.0-0",
"react-dom": "^0.14.0 || ^15.0.0-0",
"prop-types": "^15.0.0-0"
"react": "^0.14.0 || ^15.0.0",
"react-dom": "^0.14.0 || ^15.0.0",
"prop-types": "^15.0.0"
},
"dependencies": {},
"devDependencies": {
"app-root-dir": "1.0.2",
"babel-cli": "6.24.0",
"babel-core": "6.24.0",
"babel-cli": "^6.26.0",
"babel-core": "^6.26.0",
"babel-eslint": "7.2.1",
"babel-jest": "19.0.0",
"babel-loader": "6.4.1",
"babel-plugin-transform-class-properties": "6.23.0",
"babel-polyfill": "6.23.0",
"babel-preset-env": "1.3.2",
"babel-preset-latest": "6.24.0",
"babel-preset-react": "6.23.0",
"babel-preset-stage-3": "6.22.0",
"babel-register": "6.24.0",
"codecov": "2.1.0",
"cross-env": "4.0.0",
"enzyme": "2.8.0",
"enzyme-to-json": "1.5.0",
"eslint": "3.19.0",
"eslint-config-airbnb": "14.1.0",
"eslint-plugin-import": "2.2.0",
"eslint-plugin-jsx-a11y": "4.0.0",
"eslint-plugin-react": "6.10.3",
"gzip-size": "3.0.0",
"husky": "0.13.3",
"babel-jest": "^21.0.2",
"babel-loader": "^7.1.2",
"babel-plugin-transform-class-properties": "^6.24.1",
"babel-polyfill": "^6.26.0",
"babel-preset-env": "^1.6.0",
"babel-preset-latest": "^6.24.1",
"babel-preset-react": "^6.24.1",
"babel-preset-stage-3": "^6.24.1",
"babel-register": "^6.26.0",
"codecov": "^2.3.0",
"cross-env": "^5.0.5",
"enzyme": "^2.9.1",
"enzyme-to-json": "^2.0.0",
"eslint": "^4.7.2",
"eslint-config-airbnb": "^15.1.0",
"eslint-plugin-import": "^2.7.0",
"eslint-plugin-jsx-a11y": "^5.1.1",
"eslint-plugin-react": "^7.3.0",
"gzip-size": "^4.0.0",
"husky": "^0.14.3",
"in-publish": "2.0.0",
"jest": "19.0.2",
"lint-staged": "3.4.0",
"jest": "^21.1.0",
"lint-staged": "^4.2.2",
"memory-fs": "0.4.1",
"prettier": "0.22.0",
"prettier-eslint": "4.4.0",
"prettier-eslint-cli": "3.2.0",
"prettier": "^1.7.0",
"pretty-bytes": "4.0.2",
"prop-types": "15.5.6",
"ramda": "0.23.0",
"react": "15.4.2",
"react-addons-test-utils": "15.4.2",
"react-async-bootstrapper": "^1.0.1",
"react-dom": "15.4.2",
"prop-types": "^15.5.10",
"ramda": "^0.24.1",
"react": "^15.6.1",
"react-addons-test-utils": "^15.6.0",
"react-async-bootstrapper": "^1.1.1",
"react-dom": "^15.6.1",
"readline-sync": "1.4.7",
"rimraf": "2.6.1",
"sinon": "2.1.0",
"webpack": "2.3.3",
"webpack-dev-middleware": "1.10.1",
"webpack-hot-middleware": "2.18.0"
"rimraf": "^2.6.2",
"sinon": "^3.3.0",
"webpack": "^3.6.0",
"webpack-dev-middleware": "^1.12.0",
"webpack-hot-middleware": "^2.19.1"
},
"jest": {
"collectCoverageFrom": ["src/**/*.{js,jsx}"],
"snapshotSerializers": ["<rootDir>/node_modules/enzyme-to-json/serializer"],
"testPathIgnorePatterns": [
"<rootDir>/(commonjs|coverage|flow-typed|node_modules|tools|umd)/"
]
},
"lint-staged": {
"src/**/*.js": ["prettier --write", "git add"]
},
"eslintConfig": {
"root": true,
"parser": "babel-eslint",
"env": {
"browser": true,
"es6": true,
"node": true,
"jest": true
},
"extends": "airbnb",
"rules": {
"array-callback-return": 0,
"arrow-parens": ["error", "as-needed"],
"camelcase": 0,
"import/prefer-default-export": 0,
"import/no-extraneous-dependencies": 0,
"indent": 0,
"no-mixed-operators": 0,
"no-underscore-dangle": 0,
"no-confusing-arrow": 0,
"no-nested-ternary": 0,
"react/no-array-index-key": 0,
"react/react-in-jsx-scope": 0,
"semi": [2, "never"],
"react/forbid-prop-types": 0,
"react/jsx-filename-extension": 0,
"react/sort-comp": 0
}
},
"prettier": {
"semi": false,
"singleQuote": true,
"trailingComma": "all"
}
}

@@ -1,3 +0,1 @@

> ___NOTE:___ This is an beta release of the library. I am using it in production myself however it hasn't been used for a considerable length of time. There _may_ be API changes, however, I expect them to be absolutely minimal.
# react-async-component 📬

@@ -273,12 +271,13 @@

As discussed in the ["SSR AsyncComponent Resolution Process"](#ssr-asyncComponent-resolution-process) section above it is possible to have an inefficient implementation of your `asyncComponent` instances. Therefore we introduced a new configuration object property for the `asyncComponent` factory, called `serverMode`, which provides you with a mechanism to optimise the configuration of your async Component instances. Please see the API documentation for more information.
As discussed in the ["SSR AsyncComponent Resolution Process"](#ssr-asynccomponent-resolution-process) section above it is possible to have an inefficient implementation of your `asyncComponent` instances. Therefore we introduced a new configuration object property for the `asyncComponent` factory, called `serverMode`, which provides you with a mechanism to optimise the configuration of your async Component instances. Please see the API documentation for more information.
Understand your own applications needs and use the options appropriately . I personally recommend using mostly "defer" and a bit of "boundary". Try to see code splitting as allowing you to server side render an application shell to give the user perceived performance. Of course there will be requirements otherwise (SEO), but try to isolate these components and use a "boundary" as soon as you feel you can.
## Demo
You can see a "live" version [here](https://react-universally.now.sh/). This is a deployment of the "next" branch of ["React, Universally"](https://github.com/ctrlplusb/react-universally). Open the network tab and then click the menu items to see the asynchronous component resolving in action.
## Demo
You can see a "live" version [here](https://react-universally.now.sh/). This is a deployment of the ["React, Universally"](https://github.com/ctrlplusb/react-universally) starter kit that makes use of this library. Open the network tab and then click the menu items to see the asynchronous component resolving in action.
## FAQs
> Let me know if you have any...
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory(require("prop-types"), require("react"));
module.exports = factory(require("react"), require("prop-types"));
else if(typeof define === 'function' && define.amd)
define(["prop-types", "react"], factory);
define(["react", "prop-types"], factory);
else if(typeof exports === 'object')
exports["ReactAsyncComponent"] = factory(require("prop-types"), require("react"));
exports["ReactAsyncComponent"] = factory(require("react"), require("prop-types"));
else
root["ReactAsyncComponent"] = factory(root["PropTypes"], root["React"]);
})(this, function(__WEBPACK_EXTERNAL_MODULE_1__, __WEBPACK_EXTERNAL_MODULE_2__) {
root["ReactAsyncComponent"] = factory(root["React"], root["PropTypes"]);
})(this, function(__WEBPACK_EXTERNAL_MODULE_0__, __WEBPACK_EXTERNAL_MODULE_1__) {
return /******/ (function(modules) { // webpackBootstrap

@@ -19,5 +19,5 @@ /******/ // The module cache

/******/ // Check if module is in cache
/******/ if(installedModules[moduleId])
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/
/******/ }
/******/ // Create a new module (and put it into the cache)

@@ -47,5 +47,2 @@ /******/ var module = installedModules[moduleId] = {

/******/
/******/ // identity function for calling harmony imports with the correct context
/******/ __webpack_require__.i = function(value) { return value; };
/******/
/******/ // define getter function for harmony exports

@@ -78,3 +75,3 @@ /******/ __webpack_require__.d = function(exports, name, getter) {

/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 5);
/******/ return __webpack_require__(__webpack_require__.s = 3);
/******/ })

@@ -84,2 +81,14 @@ /************************************************************************/

/* 0 */
/***/ (function(module, exports) {
module.exports = __WEBPACK_EXTERNAL_MODULE_0__;
/***/ }),
/* 1 */
/***/ (function(module, exports) {
module.exports = __WEBPACK_EXTERNAL_MODULE_1__;
/***/ }),
/* 2 */
/***/ (function(module, exports, __webpack_require__) {

@@ -119,15 +128,33 @@

/***/ }),
/* 1 */
/***/ (function(module, exports) {
/* 3 */
/***/ (function(module, exports, __webpack_require__) {
module.exports = __WEBPACK_EXTERNAL_MODULE_1__;
"use strict";
/***/ }),
/* 2 */
/***/ (function(module, exports) {
module.exports = __WEBPACK_EXTERNAL_MODULE_2__;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.asyncComponent = exports.createAsyncContext = exports.AsyncComponentProvider = undefined;
var _AsyncComponentProvider = __webpack_require__(4);
var _AsyncComponentProvider2 = _interopRequireDefault(_AsyncComponentProvider);
var _createAsyncContext = __webpack_require__(2);
var _createAsyncContext2 = _interopRequireDefault(_createAsyncContext);
var _asyncComponent = __webpack_require__(5);
var _asyncComponent2 = _interopRequireDefault(_asyncComponent);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
exports.AsyncComponentProvider = _AsyncComponentProvider2.default;
exports.createAsyncContext = _createAsyncContext2.default;
exports.asyncComponent = _asyncComponent2.default;
/***/ }),
/* 3 */
/* 4 */
/***/ (function(module, exports, __webpack_require__) {

@@ -144,3 +171,3 @@

var _react = __webpack_require__(2);
var _react = __webpack_require__(0);

@@ -153,3 +180,3 @@ var _react2 = _interopRequireDefault(_react);

var _createAsyncContext = __webpack_require__(0);
var _createAsyncContext = __webpack_require__(2);

@@ -219,2 +246,3 @@ var _createAsyncContext2 = _interopRequireDefault(_createAsyncContext);

};
AsyncComponentProvider.defaultProps = {

@@ -226,2 +254,3 @@ asyncContext: undefined,

};
AsyncComponentProvider.childContextTypes = {

@@ -234,6 +263,7 @@ asyncComponents: _propTypes2.default.shape({

};
exports.default = AsyncComponentProvider;
/***/ }),
/* 4 */
/* 5 */
/***/ (function(module, exports, __webpack_require__) {

@@ -254,3 +284,3 @@

var _react = __webpack_require__(2);
var _react = __webpack_require__(0);

@@ -302,7 +332,6 @@ var _react2 = _interopRequireDefault(_react);

resolver: null
};
// Takes the given module and if it has a ".default" the ".default" will
// be returned. i.e. handy when you could be dealing with es6 imports.
var es6Resolve = function es6Resolve(x) {
// Takes the given module and if it has a ".default" the ".default" will
// be returned. i.e. handy when you could be dealing with es6 imports.
};var es6Resolve = function es6Resolve(x) {
return autoResolveES2015Default && x != null && (typeof x === 'function' || (typeof x === 'undefined' ? 'undefined' : _typeof(x)) === 'object') && x.default ? x.default : x;

@@ -387,3 +416,5 @@ };

value: function componentWillMount() {
this.setState({ module: sharedState.module });
this.setState({
module: sharedState.module
});
if (sharedState.error) {

@@ -416,3 +447,5 @@ this.registerErrorState(sharedState.error);

if (env === 'browser') {
_this3.setState({ module: module });
_this3.setState({
module: module
});
}

@@ -452,3 +485,5 @@ _this3.resolving = false;

if (!_this4.unmounted) {
_this4.setState({ error: error });
_this4.setState({
error: error
});
}

@@ -479,3 +514,2 @@ }, 16);

var Component = es6Resolve(module);
// eslint-disable-next-line no-nested-ternary
return Component ? _react2.default.createElement(Component, this.props) : LoadingComponent ? _react2.default.createElement(LoadingComponent, this.props) : null;

@@ -489,2 +523,3 @@ }

AsyncComponent.displayName = name || 'AsyncComponent';
AsyncComponent.contextTypes = {

@@ -500,2 +535,3 @@ asyncComponentsAncestor: _propTypes2.default.shape({

};
AsyncComponent.childContextTypes = {

@@ -507,3 +543,2 @@ asyncComponentsAncestor: _propTypes2.default.shape({

return AsyncComponent;

@@ -514,34 +549,4 @@ }

/***/ }),
/* 5 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.asyncComponent = exports.createAsyncContext = exports.AsyncComponentProvider = undefined;
var _AsyncComponentProvider = __webpack_require__(3);
var _AsyncComponentProvider2 = _interopRequireDefault(_AsyncComponentProvider);
var _createAsyncContext = __webpack_require__(0);
var _createAsyncContext2 = _interopRequireDefault(_createAsyncContext);
var _asyncComponent = __webpack_require__(4);
var _asyncComponent2 = _interopRequireDefault(_asyncComponent);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
exports.AsyncComponentProvider = _AsyncComponentProvider2.default;
exports.createAsyncContext = _createAsyncContext2.default;
exports.asyncComponent = _asyncComponent2.default;
/***/ })
/******/ ]);
});

@@ -1,1 +0,1 @@

!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("prop-types"),require("react")):"function"==typeof define&&define.amd?define(["prop-types","react"],t):"object"==typeof exports?exports.ReactAsyncComponent=t(require("prop-types"),require("react")):e.ReactAsyncComponent=t(e.PropTypes,e.React)}(this,function(e,t){return function(e){function t(o){if(n[o])return n[o].exports;var r=n[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,t),r.l=!0,r.exports}var n={};return t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,o){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:o})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=5)}([function(e,t,n){"use strict";function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(){var e=0,t={};return{getNextId:function(){return e+=1},resolved:function(e){t[e]=!0},getState:function(){return{resolved:Object.keys(t).reduce(function(e,t){return Object.assign(e,o({},t,!0))},{})}}}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=r},function(t,n){t.exports=e},function(e,n){e.exports=t},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function u(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,n,o){return n&&e(t.prototype,n),o&&e(t,o),t}}(),a=n(2),l=o(a),c=n(1),f=o(c),d=n(0),p=o(d),y=function(e){function t(){return r(this,t),u(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return i(t,e),s(t,[{key:"componentWillMount",value:function(){this.asyncContext=this.props.asyncContext||(0,p.default)(),this.rehydrateState=this.props.rehydrateState}},{key:"getChildContext",value:function(){var e=this;return{asyncComponents:{getNextId:this.asyncContext.getNextId,resolved:this.asyncContext.resolved,shouldRehydrate:function(t){var n=e.rehydrateState.resolved[t];return delete e.rehydrateState.resolved[t],n}}}}},{key:"render",value:function(){return l.default.Children.only(this.props.children)}}]),t}(l.default.Component);y.propTypes={children:f.default.node.isRequired,asyncContext:f.default.shape({getNextId:f.default.func.isRequired,resolved:f.default.func.isRequired,getState:f.default.func.isRequired}),rehydrateState:f.default.shape({resolved:f.default.object})},y.defaultProps={asyncContext:void 0,rehydrateState:{resolved:{}}},y.childContextTypes={asyncComponents:f.default.shape({getNextId:f.default.func.isRequired,resolved:f.default.func.isRequired,shouldRehydrate:f.default.func.isRequired}).isRequired},t.default=y},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function u(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function s(e){var t=e.name,n=e.resolve,o=e.autoResolveES2015Default,s=void 0===o||o,f=e.serverMode,p=void 0===f?"resolve":f,h=e.LoadingComponent,m=e.ErrorComponent;if(v.indexOf(p)===-1)throw new Error("Invalid serverMode provided to asyncComponent");var b=["node","browser"].indexOf(e.env)>-1?e.env:"undefined"==typeof window?"node":"browser",C={id:null,module:null,error:null,resolver:null},x=function(e){return s&&null!=e&&("function"==typeof e||"object"===(void 0===e?"undefined":c(e)))&&e.default?e.default:e},g=function(){if(null==C.resolver)try{var e=n();C.resolver=Promise.resolve(e)}catch(e){C.resolver=Promise.reject(e)}return C.resolver},w=function(e){function t(e,n){r(this,t);var o=u(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n));return o.context.asyncComponents&&!C.id&&(C.id=o.context.asyncComponents.getNextId()),o}return i(t,e),l(t,[{key:"asyncBootstrap",value:function(){var e=this,t=this.context,n=t.asyncComponents,o=t.asyncComponentsAncestor,r=n.shouldRehydrate,u=function(){return e.resolveModule().then(function(e){return void 0!==e})};if("browser"===b)return!!r(C.id)&&u();var i=o&&o.isBoundary;return"defer"!==p&&!i&&u()}},{key:"getChildContext",value:function(){if(this.context.asyncComponents)return{asyncComponentsAncestor:{isBoundary:"boundary"===p}}}},{key:"componentWillMount",value:function(){this.setState({module:C.module}),C.error&&this.registerErrorState(C.error)}},{key:"componentDidMount",value:function(){this.state.module||this.resolveModule()}},{key:"resolveModule",value:function(){var e=this;return this.resolving=!0,g().then(function(t){if(!e.unmounted)return e.context.asyncComponents&&e.context.asyncComponents.resolved(C.id),C.module=t,"browser"===b&&e.setState({module:t}),e.resolving=!1,t}).catch(function(t){e.unmounted||(("node"===b||"browser"===b&&!m)&&(console.warn("Failed to resolve asyncComponent"),console.warn(t)),C.error=t,e.registerErrorState(t),e.resolving=!1)})}},{key:"componentWillUnmount",value:function(){this.unmounted=!0}},{key:"registerErrorState",value:function(e){var t=this;"browser"===b&&setTimeout(function(){t.unmounted||t.setState({error:e})},16)}},{key:"render",value:function(){var e=this.state,t=e.module,n=e.error;if(null!=C.module||this.resolving||"undefined"==typeof window||this.resolveModule(),n)return m?d.default.createElement(m,a({},this.props,{error:n})):null;var o=x(t);return o?d.default.createElement(o,this.props):h?d.default.createElement(h,this.props):null}}]),t}(d.default.Component);return w.displayName=t||"AsyncComponent",w.contextTypes={asyncComponentsAncestor:y.default.shape({isBoundary:y.default.bool}),asyncComponents:y.default.shape({getNextId:y.default.func.isRequired,resolved:y.default.func.isRequired,shouldRehydrate:y.default.func.isRequired})},w.childContextTypes={asyncComponentsAncestor:y.default.shape({isBoundary:y.default.bool})},w}Object.defineProperty(t,"__esModule",{value:!0});var a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},l=function(){function e(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,n,o){return n&&e(t.prototype,n),o&&e(t,o),t}}(),c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},f=n(2),d=o(f),p=n(1),y=o(p),v=["resolve","defer","boundary"];t.default=s},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.asyncComponent=t.createAsyncContext=t.AsyncComponentProvider=void 0;var r=n(3),u=o(r),i=n(0),s=o(i),a=n(4),l=o(a);t.AsyncComponentProvider=u.default,t.createAsyncContext=s.default,t.asyncComponent=l.default}])});
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react"),require("prop-types")):"function"==typeof define&&define.amd?define(["react","prop-types"],t):"object"==typeof exports?exports.ReactAsyncComponent=t(require("react"),require("prop-types")):e.ReactAsyncComponent=t(e.React,e.PropTypes)}(this,function(e,t){return function(e){function t(o){if(n[o])return n[o].exports;var r=n[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,t),r.l=!0,r.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,o){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:o})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=3)}([function(t,n){t.exports=e},function(e,n){e.exports=t},function(e,t,n){"use strict";function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(){var e=0,t={};return{getNextId:function(){return e+=1},resolved:function(e){t[e]=!0},getState:function(){return{resolved:Object.keys(t).reduce(function(e,t){return Object.assign(e,o({},t,!0))},{})}}}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=r},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.asyncComponent=t.createAsyncContext=t.AsyncComponentProvider=void 0;var r=n(4),u=o(r),i=n(2),s=o(i),a=n(5),l=o(a);t.AsyncComponentProvider=u.default,t.createAsyncContext=s.default,t.asyncComponent=l.default},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function u(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,n,o){return n&&e(t.prototype,n),o&&e(t,o),t}}(),a=n(0),l=o(a),c=n(1),f=o(c),d=n(2),p=o(d),y=function(e){function t(){return r(this,t),u(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return i(t,e),s(t,[{key:"componentWillMount",value:function(){this.asyncContext=this.props.asyncContext||(0,p.default)(),this.rehydrateState=this.props.rehydrateState}},{key:"getChildContext",value:function(){var e=this;return{asyncComponents:{getNextId:this.asyncContext.getNextId,resolved:this.asyncContext.resolved,shouldRehydrate:function(t){var n=e.rehydrateState.resolved[t];return delete e.rehydrateState.resolved[t],n}}}}},{key:"render",value:function(){return l.default.Children.only(this.props.children)}}]),t}(l.default.Component);y.propTypes={children:f.default.node.isRequired,asyncContext:f.default.shape({getNextId:f.default.func.isRequired,resolved:f.default.func.isRequired,getState:f.default.func.isRequired}),rehydrateState:f.default.shape({resolved:f.default.object})},y.defaultProps={asyncContext:void 0,rehydrateState:{resolved:{}}},y.childContextTypes={asyncComponents:f.default.shape({getNextId:f.default.func.isRequired,resolved:f.default.func.isRequired,shouldRehydrate:f.default.func.isRequired}).isRequired},t.default=y},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function u(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function s(e){var t=e.name,n=e.resolve,o=e.autoResolveES2015Default,s=void 0===o||o,f=e.serverMode,p=void 0===f?"resolve":f,h=e.LoadingComponent,m=e.ErrorComponent;if(-1===v.indexOf(p))throw new Error("Invalid serverMode provided to asyncComponent");var b=["node","browser"].indexOf(e.env)>-1?e.env:"undefined"==typeof window?"node":"browser",C={id:null,module:null,error:null,resolver:null},x=function(e){return s&&null!=e&&("function"==typeof e||"object"===(void 0===e?"undefined":c(e)))&&e.default?e.default:e},g=function(){if(null==C.resolver)try{var e=n();C.resolver=Promise.resolve(e)}catch(e){C.resolver=Promise.reject(e)}return C.resolver},w=function(e){function t(e,n){r(this,t);var o=u(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n));return o.context.asyncComponents&&!C.id&&(C.id=o.context.asyncComponents.getNextId()),o}return i(t,e),l(t,[{key:"asyncBootstrap",value:function(){var e=this,t=this.context,n=t.asyncComponents,o=t.asyncComponentsAncestor,r=n.shouldRehydrate,u=function(){return e.resolveModule().then(function(e){return void 0!==e})};if("browser"===b)return!!r(C.id)&&u();var i=o&&o.isBoundary;return"defer"!==p&&!i&&u()}},{key:"getChildContext",value:function(){if(this.context.asyncComponents)return{asyncComponentsAncestor:{isBoundary:"boundary"===p}}}},{key:"componentWillMount",value:function(){this.setState({module:C.module}),C.error&&this.registerErrorState(C.error)}},{key:"componentDidMount",value:function(){this.state.module||this.resolveModule()}},{key:"resolveModule",value:function(){var e=this;return this.resolving=!0,g().then(function(t){if(!e.unmounted)return e.context.asyncComponents&&e.context.asyncComponents.resolved(C.id),C.module=t,"browser"===b&&e.setState({module:t}),e.resolving=!1,t}).catch(function(t){e.unmounted||(("node"===b||"browser"===b&&!m)&&(console.warn("Failed to resolve asyncComponent"),console.warn(t)),C.error=t,e.registerErrorState(t),e.resolving=!1)})}},{key:"componentWillUnmount",value:function(){this.unmounted=!0}},{key:"registerErrorState",value:function(e){var t=this;"browser"===b&&setTimeout(function(){t.unmounted||t.setState({error:e})},16)}},{key:"render",value:function(){var e=this.state,t=e.module,n=e.error;if(null!=C.module||this.resolving||"undefined"==typeof window||this.resolveModule(),n)return m?d.default.createElement(m,a({},this.props,{error:n})):null;var o=x(t);return o?d.default.createElement(o,this.props):h?d.default.createElement(h,this.props):null}}]),t}(d.default.Component);return w.displayName=t||"AsyncComponent",w.contextTypes={asyncComponentsAncestor:y.default.shape({isBoundary:y.default.bool}),asyncComponents:y.default.shape({getNextId:y.default.func.isRequired,resolved:y.default.func.isRequired,shouldRehydrate:y.default.func.isRequired})},w.childContextTypes={asyncComponentsAncestor:y.default.shape({isBoundary:y.default.bool})},w}Object.defineProperty(t,"__esModule",{value:!0});var a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},l=function(){function e(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,n,o){return n&&e(t.prototype,n),o&&e(t,o),t}}(),c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},f=n(0),d=o(f),p=n(1),y=o(p),v=["resolve","defer","boundary"];t.default=s}])});
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc