Socket
Socket
Sign inDemoInstall

@dxos/context

Package Overview
Dependencies
Maintainers
7
Versions
2216
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@dxos/context - npm Package Compare versions

Comparing version 0.1.46 to 0.1.47

2

dist/lib/browser/meta.json

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

{"inputs":{"packages/common/context/src/context.ts":{"bytes":11838,"imports":[{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}]},"packages/common/context/src/promise-utils.ts":{"bytes":2064,"imports":[{"path":"@dxos/errors","kind":"import-statement","external":true}]},"packages/common/context/src/index.ts":{"bytes":476,"imports":[{"path":"packages/common/context/src/context.ts","kind":"import-statement","original":"./context"},{"path":"packages/common/context/src/promise-utils.ts","kind":"import-statement","original":"./promise-utils"}]}},"outputs":{"packages/common/context/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":6405},"packages/common/context/dist/lib/browser/index.mjs":{"imports":[{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/errors","kind":"import-statement","external":true}],"exports":["Context","cancelWithContext","rejectOnDispose"],"entryPoint":"packages/common/context/src/index.ts","inputs":{"packages/common/context/src/context.ts":{"bytesInOutput":3500},"packages/common/context/src/index.ts":{"bytesInOutput":0},"packages/common/context/src/promise-utils.ts":{"bytesInOutput":300}},"bytes":3988}}}
{"inputs":{"packages/common/context/src/context.ts":{"bytes":14238,"imports":[{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}]},"packages/common/context/src/promise-utils.ts":{"bytes":2879,"imports":[{"path":"@dxos/errors","kind":"import-statement","external":true}]},"packages/common/context/src/index.ts":{"bytes":476,"imports":[{"path":"packages/common/context/src/context.ts","kind":"import-statement","original":"./context"},{"path":"packages/common/context/src/promise-utils.ts","kind":"import-statement","original":"./promise-utils"}]}},"outputs":{"packages/common/context/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":7881},"packages/common/context/dist/lib/browser/index.mjs":{"imports":[{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/errors","kind":"import-statement","external":true}],"exports":["Context","cancelWithContext","rejectOnDispose"],"entryPoint":"packages/common/context/src/index.ts","inputs":{"packages/common/context/src/context.ts":{"bytesInOutput":4195},"packages/common/context/src/index.ts":{"bytesInOutput":0},"packages/common/context/src/promise-utils.ts":{"bytesInOutput":475}},"bytes":4858}}}

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

{"inputs":{"packages/common/context/src/context.ts":{"bytes":11838,"imports":[{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}]},"packages/common/context/src/promise-utils.ts":{"bytes":2064,"imports":[{"path":"@dxos/errors","kind":"import-statement","external":true}]},"packages/common/context/src/index.ts":{"bytes":476,"imports":[{"path":"packages/common/context/src/context.ts","kind":"import-statement","original":"./context"},{"path":"packages/common/context/src/promise-utils.ts","kind":"import-statement","original":"./promise-utils"}]}},"outputs":{"packages/common/context/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":6557},"packages/common/context/dist/lib/node/index.cjs":{"imports":[{"path":"@dxos/log","kind":"require-call","external":true},{"path":"@dxos/util","kind":"require-call","external":true},{"path":"@dxos/errors","kind":"require-call","external":true}],"exports":[],"entryPoint":"packages/common/context/src/index.ts","inputs":{"packages/common/context/src/index.ts":{"bytesInOutput":207},"packages/common/context/src/context.ts":{"bytesInOutput":3541},"packages/common/context/src/promise-utils.ts":{"bytesInOutput":312}},"bytes":5168}}}
{"inputs":{"packages/common/context/src/context.ts":{"bytes":14238,"imports":[{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}]},"packages/common/context/src/promise-utils.ts":{"bytes":2879,"imports":[{"path":"@dxos/errors","kind":"import-statement","external":true}]},"packages/common/context/src/index.ts":{"bytes":476,"imports":[{"path":"packages/common/context/src/context.ts","kind":"import-statement","original":"./context"},{"path":"packages/common/context/src/promise-utils.ts","kind":"import-statement","original":"./promise-utils"}]}},"outputs":{"packages/common/context/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":8034},"packages/common/context/dist/lib/node/index.cjs":{"imports":[{"path":"@dxos/log","kind":"require-call","external":true},{"path":"@dxos/util","kind":"require-call","external":true},{"path":"@dxos/errors","kind":"require-call","external":true}],"exports":[],"entryPoint":"packages/common/context/src/index.ts","inputs":{"packages/common/context/src/index.ts":{"bytesInOutput":207},"packages/common/context/src/context.ts":{"bytesInOutput":4247},"packages/common/context/src/promise-utils.ts":{"bytesInOutput":501}},"bytes":6063}}}

@@ -19,4 +19,6 @@ export type ContextErrorHandler = (error: Error) => void;

* NOTE: Will call the callback immediately if the context is already disposed.
*
* @returns A function that can be used to remove the callback from the dispose list.
*/
onDispose(callback: DisposeCallback): void;
onDispose(callback: DisposeCallback): () => void;
/**

@@ -23,0 +25,0 @@ * Runs all dispose callbacks.

{
"name": "@dxos/context",
"version": "0.1.46",
"version": "0.1.47",
"description": "Async utils.",

@@ -19,5 +19,5 @@ "homepage": "https://dxos.org",

"dependencies": {
"@dxos/errors": "0.1.46",
"@dxos/log": "0.1.46",
"@dxos/util": "0.1.46"
"@dxos/errors": "0.1.47",
"@dxos/log": "0.1.47",
"@dxos/util": "0.1.47"
},

@@ -24,0 +24,0 @@ "publishConfig": {

@@ -16,2 +16,7 @@ //

/**
* Maximum number of dispose callbacks before we start logging warnings.
*/
const MAX_SAFE_DISPOSE_CALLBACKS = 100;
@safeInstanceof('Context')

@@ -45,2 +50,4 @@ export class Context {

* NOTE: Will call the callback immediately if the context is already disposed.
*
* @returns A function that can be used to remove the callback from the dispose list.
*/

@@ -60,2 +67,15 @@ onDispose(callback: DisposeCallback) {

this._disposeCallbacks.push(callback);
if (this._disposeCallbacks.length > MAX_SAFE_DISPOSE_CALLBACKS) {
log.warn('Context has a large number of dispose callbacks. This might be a memory leak.', {
count: this._disposeCallbacks.length,
safeThreshold: MAX_SAFE_DISPOSE_CALLBACKS,
});
}
return () => {
const index = this._disposeCallbacks.indexOf(callback);
if (index !== -1) {
this._disposeCallbacks.splice(index, 1);
}
};
}

@@ -62,0 +82,0 @@

@@ -12,2 +12,3 @@ //

*/
// TODO(dmaretskyi): Memory leak.
export const rejectOnDispose = (ctx: Context, error = new CancelledError()): Promise<never> =>

@@ -22,3 +23,10 @@ new Promise((resolve, reject) => {

export const cancelWithContext = <T>(ctx: Context, promise: Promise<T>): Promise<T> => {
return Promise.race([promise, rejectOnDispose(ctx)]);
let clearDispose: () => void;
return Promise.race([
promise,
new Promise<never>((resolve, reject) => {
// Will be called before .finally() handlers.
clearDispose = ctx.onDispose(() => reject(new CancelledError()));
}),
]).finally(() => clearDispose?.());
};

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