Latest Threat Research:SANDWORM_MODE: Shai-Hulud-Style npm Worm Hijacks CI Workflows and Poisons AI Toolchains.Details
Socket
Book a DemoInstallSign in
Socket

@jupyterlab/coreutils

Package Overview
Dependencies
Maintainers
8
Versions
404
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@jupyterlab/coreutils - npm Package Compare versions

Comparing version
6.5.0
to
6.5.1
+22
lib/pluginregistry.d.ts
import { IPlugin, PluginRegistry } from '@lumino/coreutils';
export declare class JupyterPluginRegistry<T = any> extends PluginRegistry<T> {
constructor(options?: JupyterPluginRegistry.IOptions);
registerPlugin(plugin: IPlugin<T, any>): void;
activatePlugin(id: string): Promise<void>;
private _getDependentCount;
private _pluginData;
private _expectedActivationTime;
}
export declare namespace JupyterPluginRegistry {
/**
* Options for Jupyter plugin registry.
*/
interface IOptions extends PluginRegistry.IOptions {
/**
* Time within the plugins are expected to activate.
*
* If a plugin activation time exceed this value, a warning will be logged in the console.
*/
expectedActivationTime?: number;
}
}
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.JupyterPluginRegistry = void 0;
const coreutils_1 = require("@lumino/coreutils");
const PLUGIN_ACTIVATION_TIMEOUT = 5000;
class JupyterPluginRegistry extends coreutils_1.PluginRegistry {
constructor(options) {
var _a;
super(options);
this._pluginData = new Map();
this._expectedActivationTime =
(_a = options === null || options === void 0 ? void 0 : options.expectedActivationTime) !== null && _a !== void 0 ? _a : PLUGIN_ACTIVATION_TIMEOUT;
}
registerPlugin(plugin) {
this._pluginData.set(plugin.id, plugin);
return super.registerPlugin(plugin);
}
async activatePlugin(id) {
const startTime = performance.now();
// Set a timeout to detect if the plugin stalls
let timeoutId = setTimeout(() => {
console.warn(`Plugin ${id} is taking too long to activate.`);
}, this._expectedActivationTime);
try {
const result = await super.activatePlugin(id);
clearTimeout(timeoutId);
const endTime = performance.now();
const activationTime = endTime - startTime;
if (activationTime >= this._expectedActivationTime) {
const dependantCount = this._getDependentCount(id);
console.warn(`Plugin ${id} (with ${dependantCount} dependants) took ${activationTime.toFixed(2)}ms to activate.`);
}
return result;
}
catch (error) {
clearTimeout(timeoutId);
console.error(`Error activating plugin: ${id}`, error);
throw error;
}
}
_getDependentCount(id) {
var _a;
const plugin = this._pluginData.get(id);
if (!(plugin === null || plugin === void 0 ? void 0 : plugin.provides))
return 0;
const tokenName = plugin.provides.name;
let dependentCount = 0;
for (const [otherId, otherPlugin] of this._pluginData.entries()) {
if (otherId === id)
continue;
const isDependant = (_a = otherPlugin.requires) === null || _a === void 0 ? void 0 : _a.filter((token) => !!token).some((token) => token.name === tokenName);
if (isDependant) {
dependentCount++;
}
}
return dependentCount;
}
}
exports.JupyterPluginRegistry = JupyterPluginRegistry;
//# sourceMappingURL=pluginregistry.js.map
{"version":3,"file":"pluginregistry.js","sourceRoot":"","sources":["../src/pluginregistry.ts"],"names":[],"mappings":";;;AAAA,iDAAmE;AAEnE,MAAM,yBAAyB,GAAG,IAAI,CAAC;AAEvC,MAAa,qBAA+B,SAAQ,0BAAiB;IACnE,YAAY,OAAwC;;QAClD,KAAK,CAAC,OAAO,CAAC,CAAC;QA+DT,gBAAW,GAAiC,IAAI,GAAG,EAAE,CAAC;QA9D5D,IAAI,CAAC,uBAAuB;YAC1B,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,sBAAsB,mCAAI,yBAAyB,CAAC;IACjE,CAAC;IAED,cAAc,CAAC,MAAuB;QACpC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QACxC,OAAO,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,EAAU;QAC7B,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAEpC,+CAA+C;QAC/C,IAAI,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;YAC9B,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,kCAAkC,CAAC,CAAC;QAC/D,CAAC,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAEjC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;YAC9C,YAAY,CAAC,SAAS,CAAC,CAAC;YACxB,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;YAClC,MAAM,cAAc,GAAG,OAAO,GAAG,SAAS,CAAC;YAE3C,IAAI,cAAc,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;gBACnD,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;gBACnD,OAAO,CAAC,IAAI,CACV,UAAU,EAAE,UAAU,cAAc,qBAAqB,cAAc,CAAC,OAAO,CAC7E,CAAC,CACF,iBAAiB,CACnB,CAAC;YACJ,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,YAAY,CAAC,SAAS,CAAC,CAAC;YACxB,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;YACvD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAEO,kBAAkB,CAAC,EAAU;;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACxC,IAAI,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,CAAA;YAAE,OAAO,CAAC,CAAC;QAEhC,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;QACvC,IAAI,cAAc,GAAG,CAAC,CAAC;QAEvB,KAAK,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC;YAChE,IAAI,OAAO,KAAK,EAAE;gBAAE,SAAS;YAE7B,MAAM,WAAW,GAAG,MAAA,WAAW,CAAC,QAAQ,0CACpC,MAAM,CAAC,CAAC,KAAiB,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EACtC,IAAI,CAAC,CAAC,KAAiB,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;YAEzD,IAAI,WAAW,EAAE,CAAC;gBAChB,cAAc,EAAE,CAAC;YACnB,CAAC;QACH,CAAC;QAED,OAAO,cAAc,CAAC;IACxB,CAAC;CAIF;AAnED,sDAmEC"}
import { IPlugin, PluginRegistry, Token } from '@lumino/coreutils';
const PLUGIN_ACTIVATION_TIMEOUT = 5000;
export class JupyterPluginRegistry<T = any> extends PluginRegistry<T> {
constructor(options?: JupyterPluginRegistry.IOptions) {
super(options);
this._expectedActivationTime =
options?.expectedActivationTime ?? PLUGIN_ACTIVATION_TIMEOUT;
}
registerPlugin(plugin: IPlugin<T, any>): void {
this._pluginData.set(plugin.id, plugin);
return super.registerPlugin(plugin);
}
async activatePlugin(id: string) {
const startTime = performance.now();
// Set a timeout to detect if the plugin stalls
let timeoutId = setTimeout(() => {
console.warn(`Plugin ${id} is taking too long to activate.`);
}, this._expectedActivationTime);
try {
const result = await super.activatePlugin(id);
clearTimeout(timeoutId);
const endTime = performance.now();
const activationTime = endTime - startTime;
if (activationTime >= this._expectedActivationTime) {
const dependantCount = this._getDependentCount(id);
console.warn(
`Plugin ${id} (with ${dependantCount} dependants) took ${activationTime.toFixed(
2
)}ms to activate.`
);
}
return result;
} catch (error) {
clearTimeout(timeoutId);
console.error(`Error activating plugin: ${id}`, error);
throw error;
}
}
private _getDependentCount(id: string): number {
const plugin = this._pluginData.get(id);
if (!plugin?.provides) return 0;
const tokenName = plugin.provides.name;
let dependentCount = 0;
for (const [otherId, otherPlugin] of this._pluginData.entries()) {
if (otherId === id) continue;
const isDependant = otherPlugin.requires
?.filter((token: Token<any>) => !!token)
.some((token: Token<any>) => token.name === tokenName);
if (isDependant) {
dependentCount++;
}
}
return dependentCount;
}
private _pluginData: Map<string, IPlugin<T, any>> = new Map();
private _expectedActivationTime: number;
}
export namespace JupyterPluginRegistry {
/**
* Options for Jupyter plugin registry.
*/
export interface IOptions extends PluginRegistry.IOptions {
/**
* Time within the plugins are expected to activate.
*
* If a plugin activation time exceed this value, a warning will be logged in the console.
*/
expectedActivationTime?: number;
}
}
+1
-0

@@ -15,1 +15,2 @@ /**

export * from './url';
export * from './pluginregistry';

@@ -33,2 +33,3 @@ "use strict";

__exportStar(require("./url"), exports);
__exportStar(require("./pluginregistry"), exports);
//# sourceMappingURL=index.js.map
+1
-1

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

{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,0CAA0C;AAC1C,2DAA2D;AAC3D;;;GAGG;;;;;;;;;;;;;;;;AAEH,oDAAkC;AAClC,+CAA6B;AAC7B,wCAAsB;AACtB,uDAAqC;AACrC,+CAA6B;AAC7B,yCAAuB;AACvB,2CAAyB;AACzB,yCAAuB;AACvB,yCAAuB;AACvB,wCAAsB"}
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,0CAA0C;AAC1C,2DAA2D;AAC3D;;;GAGG;;;;;;;;;;;;;;;;AAEH,oDAAkC;AAClC,+CAA6B;AAC7B,wCAAsB;AACtB,uDAAqC;AACrC,+CAA6B;AAC7B,yCAAuB;AACvB,2CAAyB;AACzB,yCAAuB;AACvB,yCAAuB;AACvB,wCAAsB;AACtB,mDAAiC"}
{
"name": "@jupyterlab/coreutils",
"version": "6.5.0",
"version": "6.5.1",
"description": "JupyterLab - Core Utilities",

@@ -5,0 +5,0 @@ "homepage": "https://github.com/jupyterlab/jupyterlab",

@@ -18,1 +18,2 @@ // Copyright (c) Jupyter Development Team.

export * from './url';
export * from './pluginregistry';