Socket
Socket
Sign inDemoInstall

@rpldy/life-events

Package Overview
Dependencies
Maintainers
1
Versions
96
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@rpldy/life-events - npm Package Compare versions

Comparing version 1.3.1 to 1.4.0-rc.0

2

lib/cjs/defaults.js

@@ -7,5 +7,3 @@ "use strict";

exports.default = void 0;
var _shared = require("@rpldy/shared");
const defaults = (0, _shared.devFreeze)({

@@ -12,0 +10,0 @@ allowRegisterNonExistent: true,

@@ -30,11 +30,6 @@ "use strict";

});
var _lifeEvents = _interopRequireWildcard(require("./lifeEvents"));
var _lifePack = _interopRequireDefault(require("./lifePack"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }

78

lib/cjs/lifeEvents.js

@@ -7,30 +7,18 @@ "use strict";

exports.isLE = exports.default = void 0;
var _shared = require("@rpldy/shared");
var _defaults = _interopRequireDefault(require("./defaults"));
var _utils = require("./utils");
var _consts = require("./consts");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
//TODO: implement STATS
const getLE = obj => obj ? obj[_consts.LESYM] : null;
const getValidLE = obj => {
const le = getLE(obj);
if (!le) {
throw new Error("Didnt find LE internal object. Something very bad happened!");
}
return le;
};
const isLE = obj => !!getLE(obj);
exports.isLE = isLE;
const addRegistration = function (obj, name, cb) {

@@ -40,9 +28,6 @@ let once = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;

const le = getValidLE(obj);
if (!le.options.allowRegisterNonExistent && !~le.events.indexOf(name)) {
throw new Error(`Cannot register for event ${name.toString()} that wasn't already defined (allowRegisterNonExistent = false)`);
}
const namedRegistry = le.registry[name] || [];
if (!namedRegistry.find(r => r.cb === cb)) {

@@ -57,12 +42,8 @@ //only add same callback for a name once

}
return () => unregister.call(obj, name, cb);
};
const findRegistrations = (obj, name) => {
const registry = getValidLE(obj).registry;
return name ? registry[name] ? registry[name].slice() : [] : //$FlowIssue - flow doesnt know how to work with Array.values() :(
Object.values(registry).flat();
return name ? registry[name] ? registry[name].slice() : [] : Object.values(registry).flat();
};
const publicMethods = {

@@ -74,3 +55,2 @@ "on": register,

};
const getPublicMethods = () => Object.entries(publicMethods).reduce((res, _ref) => {

@@ -82,5 +62,5 @@ let [key, m] = _ref;

return res;
}, {}); //using string keys here because can't rely on function names to stay after (babel/webpack) build
}, {});
//using string keys here because can't rely on function names to stay after (babel/webpack) build
const apiMethods = {

@@ -95,2 +75,4 @@ "trigger": trigger,

//placating flow while using reduce to create an object API
const createApi = target => Object.keys(apiMethods).reduce((res, name) => {

@@ -103,7 +85,5 @@ res[name] = apiMethods[name].bind(target);

});
const cleanRegistryForName = function (obj, name) {
let force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
const registry = getValidLE(obj).registry;
if (registry[name] && (force || !registry[name].length)) {

@@ -113,6 +93,4 @@ delete registry[name];

};
const removeRegItem = (obj, name, cb) => {
const registry = getValidLE(obj).registry;
if (registry[name]) {

@@ -127,19 +105,14 @@ if (!cb) {

};
function register(name, cb) {
return addRegistration(this, name, cb);
}
function registerOnce(name, cb) {
return addRegistration(this, name, cb, true);
}
function unregister(name, cb) {
removeRegItem(this, name, cb);
}
function getEvents() {
return getValidLE(this).events.slice();
}
function trigger(name) {

@@ -149,11 +122,7 @@ for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {

}
const regs = findRegistrations(this, name);
let results;
if (regs.length) {
var _args$;
let packValue;
if (args.length === 1 && ((_args$ = args[0]) === null || _args$ === void 0 ? void 0 : _args$[_consts.LE_PACK_SYM]) === true) {

@@ -163,10 +132,7 @@ //life-pack always returns array as params to spread

}
results = regs.map(r => {
let result;
if (r.once) {
removeRegItem(this, name, r.cb);
}
if (packValue) {

@@ -185,11 +151,9 @@ result = r.cb(...packValue);

}
return result;
}).filter(result => !(0, _utils.isUndefined)(result)).map(result => (0, _shared.isPromise)(result) ? result : Promise.resolve(result));
}
return results && (results.length ? results : undefined);
} //registry, events, stats become shared
}
//registry, events, stats become shared
function assign(toObj) {

@@ -200,9 +164,6 @@ const le = getValidLE(this);

}
function addEvent(name) {
const le = getValidLE(this);
if (le.options.canAddEvents) {
const index = le.events.indexOf(name);
if (!~index) {

@@ -217,6 +178,4 @@ le.events.push(name);

}
function removeEvent(name) {
const le = getValidLE(this);
if (le.options.canRemoveEvents) {

@@ -229,3 +188,2 @@ const index = le.events.indexOf(name);

}
function hasEvent(name) {

@@ -235,10 +193,10 @@ const le = getValidLE(this);

}
function hasEventRegistrations(name) {
return !!findRegistrations(this, name).length;
} // function getStats(name?: any) {
}
// function getStats(name?: any) {
//
// }
const defineLifeData = function (target, options) {

@@ -249,2 +207,3 @@ let events = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];

Object.defineProperties(target, {
// $FlowIssue[invalid-computed-prop] - https://github.com/facebook/flow/issues/3258
[_consts.LESYM]: {

@@ -261,19 +220,16 @@ value: Object.seal({

};
const addLife = function (target) {
let events = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
let options = arguments.length > 2 ? arguments[2] : undefined;
target = target || {};
options = { ..._defaults.default,
const useTarget = target || {};
const usedOptions = {
..._defaults.default,
...options
};
if (!isLE(target)) {
defineLifeData(target, options, events);
if (!isLE(useTarget)) {
defineLifeData(useTarget, usedOptions, events);
}
return createApi(target);
return createApi(useTarget);
};
var _default = addLife;
exports.default = _default;

@@ -7,5 +7,3 @@ "use strict";

exports.default = void 0;
var _consts = require("./consts");
/**

@@ -27,4 +25,3 @@ * create a pack that will only execute when there are registered event handlers

};
var _default = createLifePack;
exports.default = _default;

@@ -7,5 +7,3 @@ "use strict";

exports.validateFunction = exports.isUndefined = void 0;
var _shared = require("@rpldy/shared");
const validateFunction = (f, name) => {

@@ -16,7 +14,4 @@ if (!(0, _shared.isFunction)(f)) {

};
exports.validateFunction = validateFunction;
const isUndefined = val => typeof val === "undefined";
exports.isUndefined = isUndefined;

@@ -5,18 +5,13 @@ import { isPromise } from "@rpldy/shared";

import { LESYM, LE_PACK_SYM } from "./consts";
//TODO: implement STATS
//TODO: implement STATS
const getLE = obj => obj ? obj[LESYM] : null;
const getValidLE = obj => {
const le = getLE(obj);
if (!le) {
throw new Error("Didnt find LE internal object. Something very bad happened!");
}
return le;
};
const isLE = obj => !!getLE(obj);
const addRegistration = function (obj, name, cb) {

@@ -26,9 +21,6 @@ let once = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;

const le = getValidLE(obj);
if (!le.options.allowRegisterNonExistent && !~le.events.indexOf(name)) {
throw new Error(`Cannot register for event ${name.toString()} that wasn't already defined (allowRegisterNonExistent = false)`);
}
const namedRegistry = le.registry[name] || [];
if (!namedRegistry.find(r => r.cb === cb)) {

@@ -43,12 +35,8 @@ //only add same callback for a name once

}
return () => unregister.call(obj, name, cb);
};
const findRegistrations = (obj, name) => {
const registry = getValidLE(obj).registry;
return name ? registry[name] ? registry[name].slice() : [] : //$FlowIssue - flow doesnt know how to work with Array.values() :(
Object.values(registry).flat();
return name ? registry[name] ? registry[name].slice() : [] : Object.values(registry).flat();
};
const publicMethods = {

@@ -60,3 +48,2 @@ "on": register,

};
const getPublicMethods = () => Object.entries(publicMethods).reduce((res, _ref) => {

@@ -68,5 +55,5 @@ let [key, m] = _ref;

return res;
}, {}); //using string keys here because can't rely on function names to stay after (babel/webpack) build
}, {});
//using string keys here because can't rely on function names to stay after (babel/webpack) build
const apiMethods = {

@@ -81,2 +68,4 @@ "trigger": trigger,

//placating flow while using reduce to create an object API
const createApi = target => Object.keys(apiMethods).reduce((res, name) => {

@@ -89,7 +78,5 @@ res[name] = apiMethods[name].bind(target);

});
const cleanRegistryForName = function (obj, name) {
let force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
const registry = getValidLE(obj).registry;
if (registry[name] && (force || !registry[name].length)) {

@@ -99,6 +86,4 @@ delete registry[name];

};
const removeRegItem = (obj, name, cb) => {
const registry = getValidLE(obj).registry;
if (registry[name]) {

@@ -113,19 +98,14 @@ if (!cb) {

};
function register(name, cb) {
return addRegistration(this, name, cb);
}
function registerOnce(name, cb) {
return addRegistration(this, name, cb, true);
}
function unregister(name, cb) {
removeRegItem(this, name, cb);
}
function getEvents() {
return getValidLE(this).events.slice();
}
function trigger(name) {

@@ -135,11 +115,7 @@ for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {

}
const regs = findRegistrations(this, name);
let results;
if (regs.length) {
var _args$;
let packValue;
if (args.length === 1 && ((_args$ = args[0]) === null || _args$ === void 0 ? void 0 : _args$[LE_PACK_SYM]) === true) {

@@ -149,10 +125,7 @@ //life-pack always returns array as params to spread

}
results = regs.map(r => {
let result;
if (r.once) {
removeRegItem(this, name, r.cb);
}
if (packValue) {

@@ -171,11 +144,9 @@ result = r.cb(...packValue);

}
return result;
}).filter(result => !isUndefined(result)).map(result => isPromise(result) ? result : Promise.resolve(result));
}
return results && (results.length ? results : undefined);
} //registry, events, stats become shared
}
//registry, events, stats become shared
function assign(toObj) {

@@ -186,9 +157,6 @@ const le = getValidLE(this);

}
function addEvent(name) {
const le = getValidLE(this);
if (le.options.canAddEvents) {
const index = le.events.indexOf(name);
if (!~index) {

@@ -203,6 +171,4 @@ le.events.push(name);

}
function removeEvent(name) {
const le = getValidLE(this);
if (le.options.canRemoveEvents) {

@@ -215,3 +181,2 @@ const index = le.events.indexOf(name);

}
function hasEvent(name) {

@@ -221,10 +186,10 @@ const le = getValidLE(this);

}
function hasEventRegistrations(name) {
return !!findRegistrations(this, name).length;
} // function getStats(name?: any) {
}
// function getStats(name?: any) {
//
// }
const defineLifeData = function (target, options) {

@@ -235,2 +200,3 @@ let events = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];

Object.defineProperties(target, {
// $FlowIssue[invalid-computed-prop] - https://github.com/facebook/flow/issues/3258
[LESYM]: {

@@ -247,19 +213,16 @@ value: Object.seal({

};
const addLife = function (target) {
let events = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
let options = arguments.length > 2 ? arguments[2] : undefined;
target = target || {};
options = { ...defaults,
const useTarget = target || {};
const usedOptions = {
...defaults,
...options
};
if (!isLE(target)) {
defineLifeData(target, options, events);
if (!isLE(useTarget)) {
defineLifeData(useTarget, usedOptions, events);
}
return createApi(target);
return createApi(useTarget);
};
export default addLife;
export { isLE };
import { LE_PACK_SYM } from "./consts";
/**

@@ -8,3 +9,2 @@ * create a pack that will only execute when there are registered event handlers

*/
const createLifePack = creator => {

@@ -20,3 +20,2 @@ const lp = {

};
export default createLifePack;
import { isFunction } from "@rpldy/shared";
const validateFunction = (f, name) => {

@@ -8,5 +7,3 @@ if (!isFunction(f)) {

};
const isUndefined = val => typeof val === "undefined";
export { validateFunction, isUndefined };
{
"version": "1.3.1",
"version": "1.4.0-rc.0",
"name": "@rpldy/life-events",

@@ -31,6 +31,6 @@ "description": "events pub/sub management with return values",

"dependencies": {
"@rpldy/shared": "^1.3.1"
"@rpldy/shared": "^1.4.0-rc.0"
},
"devDependencies": {
"flow-bin": "^0.182.0"
"flow-bin": "^0.199.1"
},

@@ -40,3 +40,3 @@ "publishConfig": {

},
"gitHead": "8a2473ae6d9521c5f16f5ae525466075ac02fd1f"
"gitHead": "96a9141aa17e74962f1606d836f8f9f5c4b7aef0"
}
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