Socket
Socket
Sign inDemoInstall

@kano/common

Package Overview
Dependencies
Maintainers
8
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@kano/common - npm Package Compare versions

Comparing version 1.0.2 to 1.0.3

.eslintrc.js

136

cancellation/index.js
import { EventEmitter, Event } from '../events/index.js';
// Event triggered immediately
const shortcutEvent = Object.freeze(function (callback, context) {
let handle = setTimeout(callback.bind(context), 0);
return { dispose() { clearTimeout(handle); } };
const shortcutEvent = Object.freeze((callback, context) => {
const handle = setTimeout(callback.bind(context), 0);
return { dispose() { clearTimeout(handle); } };
});

@@ -11,10 +11,10 @@

export const CancellationTokenTypes = {
None: Object.freeze({
isCancellationRequested: false,
onCancellationRequested: Event.None,
}),
Cancelled: Object.freeze({
isCancellationRequested: true,
onCancellationRequested: shortcutEvent,
}),
None: Object.freeze({
isCancellationRequested: false,
onCancellationRequested: Event.None,
}),
Cancelled: Object.freeze({
isCancellationRequested: true,
onCancellationRequested: shortcutEvent,
}),
};

@@ -32,66 +32,64 @@

}
cancel() {
if (!this._isCancelled) {
this._isCancelled = true;
if (this._emitter) {
this._emitter.fire(undefined);
this.dispose();
}
}
}
get isCancellationRequested() {
return this._isCancelled;
}
cancel() {
if (!this._isCancelled) {
this._isCancelled = true;
if (this._emitter) {
this._emitter.fire(undefined);
this.dispose();
}
}
}
get isCancellationRequested() {
return this._isCancelled;
}
get onCancellationRequested() {
if (this._isCancelled) {
return shortcutEvent;
}
if (!this._emitter) {
this._emitter = new EventEmitter();
}
return this._emitter.event;
}
get onCancellationRequested() {
if (this._isCancelled) {
return shortcutEvent;
}
if (!this._emitter) {
this._emitter = new EventEmitter();
}
return this._emitter.event;
}
dispose() {
if (this._emitter) {
this._emitter.dispose();
this._emitter = undefined;
}
}
dispose() {
if (this._emitter) {
this._emitter.dispose();
this._emitter = undefined;
}
}
}
export class CancellationTokenSource {
get token() {
if (!this._token) {
// be lazy and create the token only when
// actually needed
this._token = new CancellationToken();
}
return this._token;
}
get token() {
if (!this._token) {
// be lazy and create the token only when
// actually needed
this._token = new CancellationToken();
}
return this._token;
}
cancel() {
if (!this._token) {
// save an object by returning the default
// cancelled token when cancellation happens
// before someone asks for the token
this._token = CancellationToken.Cancelled;
cancel() {
if (!this._token) {
// save an object by returning the default
// cancelled token when cancellation happens
// before someone asks for the token
this._token = CancellationToken.Cancelled;
} else if (this._token instanceof CancellationToken) {
// actually cancel
this._token.cancel();
}
}
} else if (this._token instanceof CancellationToken) {
// actually cancel
this._token.cancel();
}
}
dispose() {
if (!this._token) {
// ensure to initialize with an empty token if we had none
this._token = CancellationToken.None;
} else if (this._token instanceof CancellationToken) {
// actually dispose
this._token.dispose();
}
}
}
dispose() {
if (!this._token) {
// ensure to initialize with an empty token if we had none
this._token = CancellationToken.None;
} else if (this._token instanceof CancellationToken) {
// actually dispose
this._token.dispose();
}
}
}
export const Event = {
get None() {
const _disposable = { dispose() { } };
return function () { return _disposable; };
}
}
return function none() { return _disposable; };
},
};

@@ -16,3 +16,4 @@ export class EventEmitter {

}
const addedListener = this._listeners.push(!thisArg ? listener : [listener, thisArg]);
const addedListener = this._listeners.push(!thisArg ?
listener : [listener, thisArg]);
const result = {

@@ -26,9 +27,9 @@ dispose: () => {

this._listeners.splice(index, 1);
}
},
};
if (Array.isArray(disposables)) {
disposables.push(result);
if (disposables && typeof disposables.push === 'function') {
disposables.push(result);
}
return result;
}
};
}

@@ -38,10 +39,10 @@ return this._event;

fire(event) {
if (this._listeners) {
// put all [listener,event]-pairs into delivery queue
// then emit all event. an inner/nested event might be
// the driver of this
if (!this._deliveryQueue) {
this._deliveryQueue = [];
if (this._listeners) {
// put all [listener,event]-pairs into delivery queue
// then emit all event. an inner/nested event might be
// the driver of this
if (!this._deliveryQueue) {
this._deliveryQueue = [];
}
this._listeners.forEach((listener) => {

@@ -51,21 +52,21 @@ this._deliveryQueue.push([listener, event]);

while (this._deliveryQueue.length > 0) {
const [listener, event] = this._deliveryQueue.shift();
while (this._deliveryQueue.length > 0) {
const [listener, e] = this._deliveryQueue.shift();
if (typeof listener === 'function') {
listener.call(undefined, event);
listener.call(undefined, e);
} else {
listener[0].call(listener[1], event);
listener[0].call(listener[1], e);
}
}
}
}
}
}
dispose() {
if (this._listeners) {
this._listeners = null;
}
if (this._deliveryQueue) {
this._deliveryQueue.length = 0;
}
this._disposed = true;
}
if (this._listeners) {
this._listeners = null;
}
if (this._deliveryQueue) {
this._deliveryQueue.length = 0;
}
this._disposed = true;
}
}

@@ -83,3 +84,3 @@

};
if (Array.isArray(disposables)) {
if (disposables && typeof disposables.push === 'function') {
disposables.push(result);

@@ -100,3 +101,3 @@ }

};
if (Array.isArray(disposables)) {
if (disposables && typeof disposables.push === 'function') {
disposables.push(result);

@@ -103,0 +104,0 @@ }

@@ -15,5 +15,43 @@ export class Disposables {

export const Disposable = {
None: { dispose() {} },
None: { dispose() { } },
};
/**
* Comvenience function to call dispose on an array of disposable objects.
* Also support a single disposable or a set of them passed to the function
* @param {Disposable} first A single or array of disposable objects
* @param {...Disposable} rest An array of disposable
*/
export function dispose(first, ...rest) {
if (Array.isArray(first)) {
first.forEach(d => d && d.dispose());
return [];
} else if (rest.length === 0) {
if (first) {
first.dispose();
return first;
}
return undefined;
}
dispose(first);
dispose(rest);
return [];
}
/**
* Convenience function to combine a set of disposable object into one
* @param {Disposable[]} disposables An array of disposable to combine into one
*/
export function combinedDisposable(disposables) {
return { dispose: () => dispose(disposables) };
}
/**
* Returns a disposable for a given function
* @param {Function} fn A function freeing up a resource
*/
export function toDisposable(fn) {
return { dispose() { fn(); } };
}
export default Disposables;
{
"name": "@kano/common",
"version": "1.0.2",
"version": "1.0.3",
"main": "index.js",

@@ -8,6 +8,20 @@ "repository": "git@github.com:KanoComputing/web-common.git",

"license": "MIT",
"scripts": {
"serve-test": "web-tester serve **/*.test.js",
"test": "web-tester run **/*.test.js",
"test-ci": "yarn run --silent test -r xunit > test-results.xml",
"coverage": "web-tester cover **/*.test.js",
"coverage-ci": "yarn run --silent coverage -r cobertura",
"lint": "eslint ./index.js ./cancellation/index.js ./events/index.js ./events/emitter.js ./lifecycle/index.js ./lifecycle/disposables.js ./time/index.js",
"lint-ci": "yarn lint -f checkstyle -o eslint.xml",
"prepublishOnly": "yarn lint"
},
"devDependencies": {
"@kano/eslint-config": "^1.0.0",
"@kano/web-tester": "^1.0.0-alpha.14",
"chai": "^4.1.2",
"eslint": "^4.19.1",
"eslint-plugin-import": "^2.14.0",
"mocha": "^5.2.0"
}
}

@@ -9,3 +9,3 @@ export function subscribeTimeout(callback, timeout, thisArg, disposables) {

};
if (Array.isArray(disposables)) {
if (disposables && typeof disposables.push === 'function') {
disposables.push(result);

@@ -24,3 +24,3 @@ }

};
if (Array.isArray(disposables)) {
if (disposables && typeof disposables.push === 'function') {
disposables.push(result);

@@ -27,0 +27,0 @@ }

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