Socket
Socket
Sign inDemoInstall

@shopify/react-effect

Package Overview
Dependencies
Maintainers
19
Versions
75
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@shopify/react-effect - npm Package Compare versions

Comparing version 3.3.6 to 4.0.0

build/cjs/_virtual/_rollupPluginBabelHelpers.js

17

build/cjs/context.js

@@ -1,14 +0,13 @@

"use strict";
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.EffectContext = void 0;
Object.defineProperty(exports, '__esModule', { value: true });
var _react = _interopRequireDefault(require("react"));
var React = require('react');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
var EffectContext = /*#__PURE__*/_react["default"].createContext(null);
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
exports.EffectContext = EffectContext;
const EffectContext = /*#__PURE__*/React__default['default'].createContext(null);
exports.EffectContext = EffectContext;

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

"use strict";
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Effect = Effect;
Object.defineProperty(exports, '__esModule', { value: true });
var _hook = require("./hook.js");
var hook = require('./hook.js');
function Effect(_ref) {
var kind = _ref.kind,
perform = _ref.perform;
(0, _hook.useServerEffect)(perform, kind);
function Effect({
kind,
perform
}) {
hook.useServerEffect(perform, kind);
return null;
}
}
exports.Effect = Effect;

@@ -1,14 +0,10 @@

"use strict";
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useServerEffect = useServerEffect;
Object.defineProperty(exports, '__esModule', { value: true });
var _react = require("react");
var React = require('react');
var context = require('./context.js');
var _context = require("./context.js");
function useServerEffect(perform, kind) {
var manager = (0, _react.useContext)(_context.EffectContext);
const manager = React.useContext(context.EffectContext);

@@ -20,2 +16,4 @@ if (manager == null || kind != null && !manager.shouldPerform(kind)) {

manager.add(perform(), kind);
}
}
exports.useServerEffect = useServerEffect;

@@ -1,37 +0,15 @@

"use strict";
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "Effect", {
enumerable: true,
get: function get() {
return _Effect.Effect;
}
});
Object.defineProperty(exports, "EffectManager", {
enumerable: true,
get: function get() {
return _manager.EffectManager;
}
});
Object.defineProperty(exports, "useServerEffect", {
enumerable: true,
get: function get() {
return _hook.useServerEffect;
}
});
Object.defineProperty(exports, "restrictToServer", {
enumerable: true,
get: function get() {
return _utilities.restrictToServer;
}
});
Object.defineProperty(exports, '__esModule', { value: true });
var _Effect = require("./Effect.js");
var Effect = require('./Effect.js');
var manager = require('./manager.js');
var hook = require('./hook.js');
var utilities = require('./utilities.js');
var _manager = require("./manager.js");
var _hook = require("./hook.js");
var _utilities = require("./utilities.js");
exports.Effect = Effect.Effect;
exports.EffectManager = manager.EffectManager;
exports.useServerEffect = hook.useServerEffect;
exports.restrictToServer = utilities.restrictToServer;

@@ -1,44 +0,15 @@

"use strict";
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.EffectManager = void 0;
Object.defineProperty(exports, '__esModule', { value: true });
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _rollupPluginBabelHelpers = require('./_virtual/_rollupPluginBabelHelpers.js');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
class EffectManager {
get finished() {
return this.effects.length === 0;
}
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); }
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
var EffectManager = /*#__PURE__*/function () {
function EffectManager() {
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
_ref$include = _ref.include,
include = _ref$include === void 0 ? true : _ref$include;
_classCallCheck(this, EffectManager);
constructor({
include = true
} = {}) {
this.include = void 0;

@@ -50,128 +21,58 @@ this.effects = [];

_createClass(EffectManager, [{
key: "finished",
get: function get() {
return this.effects.length === 0;
reset() {
this.effects = [];
this.kinds = new Set();
}
add(effect, kind) {
if (kind != null) {
this.kinds.add(kind);
}
}, {
key: "reset",
value: function reset() {
this.effects = [];
this.kinds = new Set();
}
}, {
key: "add",
value: function add(effect, kind) {
if (kind != null) {
this.kinds.add(kind);
}
if (effect == null || _typeof(effect) !== 'object' || !('then' in effect)) {
return;
}
this.effects.push(effect);
if (effect == null || typeof effect !== 'object' || !('then' in effect)) {
return;
}
}, {
key: "resolve",
value: function () {
var _resolve = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
return _regenerator["default"].wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
_context.next = 2;
return Promise.all(this.effects);
case 2:
case "end":
return _context.stop();
}
}
}, _callee, this);
}));
this.effects.push(effect);
}
function resolve() {
return _resolve.apply(this, arguments);
}
resolve() {
var _this = this;
return resolve;
}()
}, {
key: "betweenEachPass",
value: function () {
var _betweenEachPass = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee2(pass) {
return _regenerator["default"].wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
_context2.next = 2;
return Promise.all(_toConsumableArray(this.kinds).map(function (kind) {
return typeof kind.betweenEachPass === 'function' ? kind.betweenEachPass(pass) : Promise.resolve();
}));
return _rollupPluginBabelHelpers.asyncToGenerator(function* () {
yield Promise.all(_this.effects);
})();
}
case 2:
case "end":
return _context2.stop();
}
}
}, _callee2, this);
}));
betweenEachPass(pass) {
var _this2 = this;
function betweenEachPass(_x) {
return _betweenEachPass.apply(this, arguments);
}
return _rollupPluginBabelHelpers.asyncToGenerator(function* () {
yield Promise.all([..._this2.kinds].map(kind => typeof kind.betweenEachPass === 'function' ? kind.betweenEachPass(pass) : Promise.resolve()));
})();
}
return betweenEachPass;
}()
}, {
key: "afterEachPass",
value: function () {
var _afterEachPass = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee3(pass) {
var results;
return _regenerator["default"].wrap(function _callee3$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
_context3.next = 2;
return Promise.all(_toConsumableArray(this.kinds).map(function (kind) {
return typeof kind.afterEachPass === 'function' ? kind.afterEachPass(pass) : Promise.resolve();
}));
afterEachPass(pass) {
var _this3 = this;
case 2:
results = _context3.sent;
return _context3.abrupt("return", results.every(function (result) {
return result !== false;
}));
return _rollupPluginBabelHelpers.asyncToGenerator(function* () {
const results = yield Promise.all([..._this3.kinds].map(kind => typeof kind.afterEachPass === 'function' ? kind.afterEachPass(pass) : Promise.resolve()));
return results.every(result => result !== false);
})();
}
case 4:
case "end":
return _context3.stop();
}
}
}, _callee3, this);
}));
shouldPerform(kind) {
const {
include
} = this;
function afterEachPass(_x2) {
return _afterEachPass.apply(this, arguments);
}
if (!include) {
return false;
}
return afterEachPass;
}()
}, {
key: "shouldPerform",
value: function shouldPerform(kind) {
var include = this.include;
return include === true || kind != null && include.includes(kind.id);
}
if (!include) {
return false;
}
}
return include === true || kind != null && include.includes(kind.id);
}
}]);
return EffectManager;
}();
exports.EffectManager = EffectManager;
exports.EffectManager = EffectManager;

@@ -1,212 +0,107 @@

"use strict";
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.extract = extract;
Object.defineProperty(exports, "Effect", {
enumerable: true,
get: function get() {
return _Effect.Effect;
}
});
Object.defineProperty(exports, '__esModule', { value: true });
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _rollupPluginBabelHelpers = require('./_virtual/_rollupPluginBabelHelpers.js');
var React = require('react');
var server = require('react-dom/server');
var context = require('./context.js');
var manager = require('./manager.js');
var Effect = require('./Effect.js');
var _react = _interopRequireDefault(require("react"));
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
var _server = require("react-dom/server");
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
var _context2 = require("./context.js");
var _manager = require("./manager.js");
var _Effect = require("./Effect.js");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
var DEFAULT_MAX_PASSES = 5;
function extract(app) {
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
include = _ref.include,
_ref$maxPasses = _ref.maxPasses,
maxPasses = _ref$maxPasses === void 0 ? DEFAULT_MAX_PASSES : _ref$maxPasses,
_ref$decorate = _ref.decorate,
decorate = _ref$decorate === void 0 ? identity : _ref$decorate,
_ref$renderFunction = _ref.renderFunction,
renderFunction = _ref$renderFunction === void 0 ? _server.renderToStaticMarkup : _ref$renderFunction,
betweenEachPass = _ref.betweenEachPass,
afterEachPass = _ref.afterEachPass;
var manager = new _manager.EffectManager({
include: include
const DEFAULT_MAX_PASSES = 5;
function extract(app, {
include,
maxPasses = DEFAULT_MAX_PASSES,
decorate = identity,
renderFunction = server.renderToStaticMarkup,
betweenEachPass,
afterEachPass
} = {}) {
const manager$1 = new manager.EffectManager({
include
});
var element = /*#__PURE__*/_react["default"].createElement(_context2.EffectContext.Provider, {
value: manager
const element = /*#__PURE__*/React__default['default'].createElement(context.EffectContext.Provider, {
value: manager$1
}, decorate(app));
return function () {
var _perform = _rollupPluginBabelHelpers.asyncToGenerator(function* (index = 0) {
const start = Date.now();
const result = renderFunction(element);
const cancelled = !manager$1.finished && index + 1 >= maxPasses;
return function () {
var _perform = _asyncToGenerator( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
var index,
start,
result,
if (manager$1.finished || cancelled) {
const duration = Date.now() - start;
yield manager$1.afterEachPass({
index,
finished: true,
cancelled,
duration,
resolveStart,
renderDuration,
resolveDuration,
performNextPass,
_args = arguments;
return _regenerator["default"].wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
index = _args.length > 0 && _args[0] !== undefined ? _args[0] : 0;
start = Date.now();
result = renderFunction(element);
cancelled = !manager.finished && index + 1 >= maxPasses;
renderDuration: duration,
resolveDuration: 0
});
if (!(manager.finished || cancelled)) {
_context.next = 14;
break;
}
if (afterEachPass) {
yield afterEachPass({
index,
finished: true,
cancelled,
renderDuration: duration,
resolveDuration: 0
});
}
duration = Date.now() - start;
_context.next = 8;
return manager.afterEachPass({
index: index,
finished: true,
cancelled: cancelled,
renderDuration: duration,
resolveDuration: 0
});
return result;
} else {
const resolveStart = Date.now();
const renderDuration = resolveStart - start;
yield manager$1.resolve();
const resolveDuration = Date.now() - resolveStart;
let performNextPass = true;
performNextPass = shouldContinue(yield manager$1.afterEachPass({
index,
finished: false,
cancelled: false,
renderDuration,
resolveDuration
})) && performNextPass;
case 8:
if (!afterEachPass) {
_context.next = 11;
break;
}
if (afterEachPass) {
performNextPass = shouldContinue(yield afterEachPass({
index,
finished: false,
cancelled: false,
renderDuration,
resolveDuration
})) && performNextPass;
}
_context.next = 11;
return afterEachPass({
index: index,
finished: true,
cancelled: cancelled,
renderDuration: duration,
resolveDuration: 0
});
if (performNextPass) {
yield manager$1.betweenEachPass({
index,
finished: false,
cancelled: false,
renderDuration,
resolveDuration
});
case 11:
return _context.abrupt("return", result);
case 14:
resolveStart = Date.now();
renderDuration = resolveStart - start;
_context.next = 18;
return manager.resolve();
case 18:
resolveDuration = Date.now() - resolveStart;
performNextPass = true;
_context.t1 = shouldContinue;
_context.next = 23;
return manager.afterEachPass({
index: index,
finished: false,
cancelled: false,
renderDuration: renderDuration,
resolveDuration: resolveDuration
});
case 23:
_context.t2 = _context.sent;
_context.t0 = (0, _context.t1)(_context.t2);
if (!_context.t0) {
_context.next = 27;
break;
}
_context.t0 = performNextPass;
case 27:
performNextPass = _context.t0;
if (!afterEachPass) {
_context.next = 37;
break;
}
_context.t4 = shouldContinue;
_context.next = 32;
return afterEachPass({
index: index,
finished: false,
cancelled: false,
renderDuration: renderDuration,
resolveDuration: resolveDuration
});
case 32:
_context.t5 = _context.sent;
_context.t3 = (0, _context.t4)(_context.t5);
if (!_context.t3) {
_context.next = 36;
break;
}
_context.t3 = performNextPass;
case 36:
performNextPass = _context.t3;
case 37:
if (!performNextPass) {
_context.next = 43;
break;
}
_context.next = 40;
return manager.betweenEachPass({
index: index,
finished: false,
cancelled: false,
renderDuration: renderDuration,
resolveDuration: resolveDuration
});
case 40:
if (!betweenEachPass) {
_context.next = 43;
break;
}
_context.next = 43;
return betweenEachPass({
index: index,
finished: false,
cancelled: false,
renderDuration: renderDuration,
resolveDuration: resolveDuration
});
case 43:
manager.reset();
return _context.abrupt("return", performNextPass ? perform(index + 1) : result);
case 45:
case "end":
return _context.stop();
if (betweenEachPass) {
yield betweenEachPass({
index,
finished: false,
cancelled: false,
renderDuration,
resolveDuration
});
}
}
}, _callee);
}));
manager$1.reset();
return performNextPass ? perform(index + 1) : result;
}
});
function perform() {

@@ -226,2 +121,5 @@ return _perform.apply(this, arguments);

return value;
}
}
exports.Effect = Effect.Effect;
exports.extract = extract;

@@ -1,13 +0,8 @@

"use strict";
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.restrictToServer = restrictToServer;
Object.defineProperty(exports, '__esModule', { value: true });
function restrictToServer(Component) {
if (typeof window !== 'undefined') {
var NoopComponent = function NoopComponent() {
return null;
};
const NoopComponent = () => null;

@@ -19,2 +14,4 @@ NoopComponent.displayName = Component.displayName || Component.name;

return Component;
}
}
exports.restrictToServer = restrictToServer;

@@ -10,2 +10,8 @@ # Changelog

## 4.0.0 - 2021-05-21
### Breaking Change
- Update minimum supported node version to 12.14.0. Add engines field to help enforce usage of this version. [#1906](https://github.com/Shopify/quilt/pull/1906)
## 3.3.4 - 2021-04-13

@@ -12,0 +18,0 @@

{
"name": "@shopify/react-effect",
"version": "3.3.6",
"version": "4.0.0",
"license": "MIT",

@@ -23,2 +23,5 @@ "description": "A component and set of utilities for performing effects within a universal React app",

"homepage": "https://github.com/Shopify/quilt/blob/main/packages/react-effect/README.md",
"engines": {
"node": ">=12.14.0"
},
"devDependencies": {

@@ -58,3 +61,3 @@ "@types/react-dom": "^16.0.11"

},
"gitHead": "4324f27f72ae7b1800ec6bde9087af4ed89b3833"
"gitHead": "40de4af181104f298cbab42d2d3d68e228a9a31a"
}

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

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