diff --git a/packages/application/package.json b/packages/application/package.json index 30e5cba5e7ff..e0a462bdd92f 100644 --- a/packages/application/package.json +++ b/packages/application/package.json @@ -50,7 +50,7 @@ "@lumino/coreutils": "^1.4.2", "@lumino/disposable": "^1.3.5", "@lumino/messaging": "^1.3.3", - "@lumino/polling": "^1.0.4", + "@lumino/polling": "^1.1.1", "@lumino/properties": "^1.1.6", "@lumino/signaling": "^1.3.5", "@lumino/widgets": "^1.11.1" diff --git a/packages/apputils-extension/package.json b/packages/apputils-extension/package.json index 3e5aa164a538..2a9cb012fa22 100644 --- a/packages/apputils-extension/package.json +++ b/packages/apputils-extension/package.json @@ -48,7 +48,7 @@ "@lumino/commands": "^1.10.1", "@lumino/coreutils": "^1.4.2", "@lumino/disposable": "^1.3.5", - "@lumino/polling": "^1.0.4", + "@lumino/polling": "^1.1.1", "@lumino/widgets": "^1.11.1", "es6-promise": "~4.2.8" }, diff --git a/packages/apputils-extension/src/settingconnector.ts b/packages/apputils-extension/src/settingconnector.ts index d64cf1ee8a0d..b34738a2a7e2 100644 --- a/packages/apputils-extension/src/settingconnector.ts +++ b/packages/apputils-extension/src/settingconnector.ts @@ -1,8 +1,10 @@ import { PageConfig } from '@jupyterlab/coreutils'; +import { ISettingRegistry } from '@jupyterlab/settingregistry'; + import { DataConnector, IDataConnector } from '@jupyterlab/statedb'; -import { ISettingRegistry } from '@jupyterlab/settingregistry'; +import { Throttler } from '@lumino/polling'; /** * A data connector for fetching settings. @@ -19,8 +21,19 @@ export class SettingConnector extends DataConnector< this._connector = connector; } + /** + * Fetch settings for a plugin. + * @param id - The plugin ID + * + * #### Notes + * The REST API requests are throttled at one request per plugin per 100ms. + */ fetch(id: string): Promise { - return this._connector.fetch(id); + const throttlers = this._throttlers; + if (!(id in throttlers)) { + throttlers[id] = new Throttler(() => this._connector.fetch(id), 100); + } + return throttlers[id].invoke(); } async list( @@ -44,4 +57,5 @@ export class SettingConnector extends DataConnector< } private _connector: IDataConnector; + private _throttlers: { [key: string]: Throttler } = Object.create(null); } diff --git a/packages/codemirror/package.json b/packages/codemirror/package.json index 90baf8148d07..9bc54607a13b 100644 --- a/packages/codemirror/package.json +++ b/packages/codemirror/package.json @@ -43,7 +43,7 @@ "@lumino/commands": "^1.10.1", "@lumino/coreutils": "^1.4.2", "@lumino/disposable": "^1.3.5", - "@lumino/polling": "^1.0.4", + "@lumino/polling": "^1.1.1", "@lumino/signaling": "^1.3.5", "@lumino/widgets": "^1.11.1", "codemirror": "~5.49.2", diff --git a/packages/csvviewer-extension/package.json b/packages/csvviewer-extension/package.json index 95fc35542fd2..822f8002bb28 100644 --- a/packages/csvviewer-extension/package.json +++ b/packages/csvviewer-extension/package.json @@ -41,7 +41,7 @@ "@jupyterlab/docregistry": "^2.0.2", "@jupyterlab/documentsearch": "^2.0.2", "@jupyterlab/mainmenu": "^2.0.2", - "@lumino/datagrid": "^0.5.3", + "@lumino/datagrid": "^0.6.0", "@lumino/signaling": "^1.3.5", "@lumino/widgets": "^1.11.1" }, diff --git a/packages/csvviewer/package.json b/packages/csvviewer/package.json index 20b3e1412560..b16559c0a4ba 100644 --- a/packages/csvviewer/package.json +++ b/packages/csvviewer/package.json @@ -40,7 +40,7 @@ "@jupyterlab/docregistry": "^2.0.2", "@lumino/algorithm": "^1.2.3", "@lumino/coreutils": "^1.4.2", - "@lumino/datagrid": "^0.5.3", + "@lumino/datagrid": "^0.6.0", "@lumino/disposable": "^1.3.5", "@lumino/messaging": "^1.3.3", "@lumino/signaling": "^1.3.5", diff --git a/packages/docmanager-extension/src/index.ts b/packages/docmanager-extension/src/index.ts index a73280981442..cfa34c99a1d2 100644 --- a/packages/docmanager-extension/src/index.ts +++ b/packages/docmanager-extension/src/index.ts @@ -242,22 +242,9 @@ ${fileTypes}`; } }); - // callback to registry change that ensures not to invoke reload method when there is already a promise that is pending - let reloadSettingsRegistry = () => { - let promisePending = false; - - return async () => { - if (!promisePending) { - promisePending = true; - await settingRegistry.reload(pluginId); - promisePending = false; - } - }; - }; - // If the document registry gains or loses a factory or file type, // regenerate the settings description with the available options. - registry.changed.connect(reloadSettingsRegistry()); + registry.changed.connect(() => settingRegistry.reload(pluginId)); return docManager; } diff --git a/packages/documentsearch/package.json b/packages/documentsearch/package.json index 58a4ef8ec599..e101cca339fc 100644 --- a/packages/documentsearch/package.json +++ b/packages/documentsearch/package.json @@ -42,7 +42,7 @@ "@lumino/algorithm": "^1.2.3", "@lumino/coreutils": "^1.4.2", "@lumino/disposable": "^1.3.5", - "@lumino/polling": "^1.0.4", + "@lumino/polling": "^1.1.1", "@lumino/signaling": "^1.3.5", "@lumino/widgets": "^1.11.1", "codemirror": "~5.49.2", diff --git a/packages/extensionmanager/package.json b/packages/extensionmanager/package.json index 41691913c306..661aa2f16a05 100644 --- a/packages/extensionmanager/package.json +++ b/packages/extensionmanager/package.json @@ -39,7 +39,7 @@ "@jupyterlab/services": "^5.0.2", "@jupyterlab/ui-components": "^2.0.2", "@lumino/messaging": "^1.3.3", - "@lumino/polling": "^1.0.4", + "@lumino/polling": "^1.1.1", "react": "~16.9.0", "react-paginate": "^6.3.2", "semver": "^6.3.0" diff --git a/packages/filebrowser/package.json b/packages/filebrowser/package.json index 0fad2554f87d..6ab7a58727d1 100644 --- a/packages/filebrowser/package.json +++ b/packages/filebrowser/package.json @@ -49,7 +49,7 @@ "@lumino/domutils": "^1.1.7", "@lumino/dragdrop": "^1.5.1", "@lumino/messaging": "^1.3.3", - "@lumino/polling": "^1.0.4", + "@lumino/polling": "^1.1.1", "@lumino/signaling": "^1.3.5", "@lumino/widgets": "^1.11.1", "react": "~16.9.0" diff --git a/packages/inspector/package.json b/packages/inspector/package.json index fc42ee06d8b5..42f76bcc5c0d 100644 --- a/packages/inspector/package.json +++ b/packages/inspector/package.json @@ -43,7 +43,7 @@ "@jupyterlab/statedb": "^2.0.1", "@lumino/coreutils": "^1.4.2", "@lumino/disposable": "^1.3.5", - "@lumino/polling": "^1.0.4", + "@lumino/polling": "^1.1.1", "@lumino/signaling": "^1.3.5", "@lumino/widgets": "^1.11.1" }, diff --git a/packages/services/package.json b/packages/services/package.json index 59aa1f0a9b51..90358801818b 100644 --- a/packages/services/package.json +++ b/packages/services/package.json @@ -49,7 +49,7 @@ "@lumino/algorithm": "^1.2.3", "@lumino/coreutils": "^1.4.2", "@lumino/disposable": "^1.3.5", - "@lumino/polling": "^1.0.4", + "@lumino/polling": "^1.1.1", "@lumino/signaling": "^1.3.5", "node-fetch": "^2.6.0", "ws": "^7.2.0" diff --git a/packages/statusbar/package.json b/packages/statusbar/package.json index 24e829586e55..ba1ab59c0654 100644 --- a/packages/statusbar/package.json +++ b/packages/statusbar/package.json @@ -40,7 +40,7 @@ "@lumino/coreutils": "^1.4.2", "@lumino/disposable": "^1.3.5", "@lumino/messaging": "^1.3.3", - "@lumino/polling": "^1.0.4", + "@lumino/polling": "^1.1.1", "@lumino/signaling": "^1.3.5", "@lumino/widgets": "^1.11.1", "csstype": "~2.6.9", diff --git a/tests/test-csvviewer/package.json b/tests/test-csvviewer/package.json index d98139abadad..b71fd2abd81a 100644 --- a/tests/test-csvviewer/package.json +++ b/tests/test-csvviewer/package.json @@ -22,7 +22,7 @@ "@jupyterlab/services": "^5.0.2", "@jupyterlab/testutils": "^2.0.2", "@lumino/coreutils": "^1.4.2", - "@lumino/datagrid": "^0.5.3", + "@lumino/datagrid": "^0.6.0", "@lumino/widgets": "^1.11.1", "chai": "^4.2.0", "csv-spectrum": "~1.0.0", diff --git a/yarn.lock b/yarn.lock index 21826b4c6d2d..452b74400ddc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2000,10 +2000,10 @@ resolved "https://registry.yarnpkg.com/@lumino/coreutils/-/coreutils-1.4.2.tgz#44cd3d55bb692e876c792f1ecc0df3daa1de63e9" integrity sha512-SmQ4YDANe25rZd0bLoW7LVAHmgySjkrJmyNPnPW0GrpBt2u4/6D+EQJ8PCCMNWuJvrljBCdlmgOFsT38qYhfcw== -"@lumino/datagrid@^0.5.3": - version "0.5.3" - resolved "https://registry.yarnpkg.com/@lumino/datagrid/-/datagrid-0.5.3.tgz#62ac692a199e033d811cc2229fa979b01c058889" - integrity sha512-5W86WnbZKrX/P+WkXMPRkToM0yISjmKu2ewJ2CtyKw+OsGsBcgshM147k4wxDskAtIv/+wsgdth7sIdzx6OW+A== +"@lumino/datagrid@^0.6.0": + version "0.6.0" + resolved "https://registry.yarnpkg.com/@lumino/datagrid/-/datagrid-0.6.0.tgz#8272fe4cf8bb27f3ec9cc8fee279329c35695d19" + integrity sha512-TkpCm4AbCAVwGg3pC5618YnjfHSyzhWxRaM1FQ7RKWS+mZoKhMWVbN0I2o2OLpdaBjvf7sV9JUp08rsouHRqOQ== dependencies: "@lumino/algorithm" "^1.2.3" "@lumino/coreutils" "^1.4.2" @@ -2049,10 +2049,10 @@ "@lumino/algorithm" "^1.2.3" "@lumino/collections" "^1.2.3" -"@lumino/polling@^1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@lumino/polling/-/polling-1.0.4.tgz#85f956933fa63c47edf808c141cdb9a7a1a49f4c" - integrity sha512-9OYIDTohToj6SLrxOr+FbeyPvirBU/r53FgmPxulcDgUVnVk4tqTSLIJAUu3mjJd9hnmZZqpSn9ppyjQAo3qSg== +"@lumino/polling@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@lumino/polling/-/polling-1.1.1.tgz#15dcb848dca26573d416f00493e343bc43d79d01" + integrity sha512-4ofwz9zOkh3GtTTPKfX9KmsZD66g8M0BG/lLji86GRCQvQDGJaI35c0qD62jMzacfsVxbCBfp89/sbXGDoRIZA== dependencies: "@lumino/coreutils" "^1.4.2" "@lumino/disposable" "^1.3.5"