@jupyterlite/settings 0.6.0-alpha.1 → 0.6.0-alpha.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/index.d.ts +0 -1
- package/lib/index.js +0 -1
- package/lib/index.js.map +1 -1
- package/lib/settings.d.ts +23 -7
- package/lib/settings.js +39 -9
- package/lib/settings.js.map +1 -1
- package/package.json +7 -7
- package/src/index.ts +0 -1
- package/src/settings.ts +59 -18
- package/lib/tokens.d.ts +0 -65
- package/lib/tokens.js +0 -6
- package/lib/tokens.js.map +0 -1
- package/src/tokens.ts +0 -75
package/lib/index.d.ts
CHANGED
package/lib/index.js
CHANGED
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,2DAA2D;AAE3D,cAAc,YAAY,CAAC
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,2DAA2D;AAE3D,cAAc,YAAY,CAAC"}
|
package/lib/settings.d.ts
CHANGED
|
@@ -1,9 +1,17 @@
|
|
|
1
|
+
import { ServerConnection, Setting, SettingManager } from '@jupyterlab/services';
|
|
2
|
+
import { ISettingRegistry } from '@jupyterlab/settingregistry';
|
|
1
3
|
import type localforage from 'localforage';
|
|
2
|
-
import { IPlugin, ISettings } from './tokens';
|
|
3
4
|
/**
|
|
4
|
-
*
|
|
5
|
+
* The settings file to request
|
|
5
6
|
*/
|
|
6
|
-
export
|
|
7
|
+
export type SettingsFile = 'all.json' | 'all_federated.json';
|
|
8
|
+
/**
|
|
9
|
+
* A class to manage settings in the browser.
|
|
10
|
+
*/
|
|
11
|
+
export declare class Settings extends SettingManager implements Setting.IManager {
|
|
12
|
+
/**
|
|
13
|
+
* Create a new settings service.
|
|
14
|
+
*/
|
|
7
15
|
constructor(options: Settings.IOptions);
|
|
8
16
|
/**
|
|
9
17
|
* A promise that resolves when the settings storage is fully initialized
|
|
@@ -35,12 +43,13 @@ export declare class Settings implements ISettings {
|
|
|
35
43
|
* @param pluginId the id of the plugin
|
|
36
44
|
*
|
|
37
45
|
*/
|
|
38
|
-
|
|
46
|
+
fetch(pluginId: string): Promise<ISettingRegistry.IPlugin>;
|
|
39
47
|
/**
|
|
40
48
|
* Get all the settings
|
|
41
49
|
*/
|
|
42
|
-
|
|
43
|
-
|
|
50
|
+
list(query?: 'ids'): Promise<{
|
|
51
|
+
ids: string[];
|
|
52
|
+
values: ISettingRegistry.IPlugin[];
|
|
44
53
|
}>;
|
|
45
54
|
/**
|
|
46
55
|
* Save settings for a given plugin id
|
|
@@ -49,7 +58,13 @@ export declare class Settings implements ISettings {
|
|
|
49
58
|
* @param raw The raw settings
|
|
50
59
|
*
|
|
51
60
|
*/
|
|
52
|
-
save(
|
|
61
|
+
save(id: string, raw: string): Promise<void>;
|
|
62
|
+
/**
|
|
63
|
+
* Clear all stored settings
|
|
64
|
+
*
|
|
65
|
+
* @returns A promise which resolves when the settings are cleared
|
|
66
|
+
*/
|
|
67
|
+
clear(): Promise<void>;
|
|
53
68
|
/**
|
|
54
69
|
* Get all the settings for core or federated plugins
|
|
55
70
|
*/
|
|
@@ -71,5 +86,6 @@ export declare namespace Settings {
|
|
|
71
86
|
localforage: typeof localforage;
|
|
72
87
|
storageName?: string | null;
|
|
73
88
|
storageDrivers?: string[] | null;
|
|
89
|
+
serverSettings?: ServerConnection.ISettings;
|
|
74
90
|
}
|
|
75
91
|
}
|
package/lib/settings.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { PageConfig, URLExt } from '@jupyterlab/coreutils';
|
|
2
|
+
import { SettingManager } from '@jupyterlab/services';
|
|
2
3
|
import { PromiseDelegate } from '@lumino/coreutils';
|
|
3
4
|
import * as json5 from 'json5';
|
|
4
5
|
/**
|
|
@@ -6,16 +7,23 @@ import * as json5 from 'json5';
|
|
|
6
7
|
*/
|
|
7
8
|
const DEFAULT_STORAGE_NAME = 'JupyterLite Storage';
|
|
8
9
|
/**
|
|
9
|
-
* A class to
|
|
10
|
+
* A class to manage settings in the browser.
|
|
10
11
|
*/
|
|
11
|
-
export class Settings {
|
|
12
|
+
export class Settings extends SettingManager {
|
|
13
|
+
/**
|
|
14
|
+
* Create a new settings service.
|
|
15
|
+
*/
|
|
12
16
|
constructor(options) {
|
|
17
|
+
super({
|
|
18
|
+
serverSettings: options.serverSettings,
|
|
19
|
+
});
|
|
13
20
|
this._storageName = DEFAULT_STORAGE_NAME;
|
|
14
21
|
this._storageDrivers = null;
|
|
15
22
|
this._localforage = options.localforage;
|
|
16
23
|
this._storageName = options.storageName || DEFAULT_STORAGE_NAME;
|
|
17
24
|
this._storageDrivers = options.storageDrivers || null;
|
|
18
25
|
this._ready = new PromiseDelegate();
|
|
26
|
+
void this.initialize().catch(console.warn);
|
|
19
27
|
}
|
|
20
28
|
/**
|
|
21
29
|
* A promise that resolves when the settings storage is fully initialized
|
|
@@ -70,18 +78,22 @@ export class Settings {
|
|
|
70
78
|
* @param pluginId the id of the plugin
|
|
71
79
|
*
|
|
72
80
|
*/
|
|
73
|
-
async
|
|
74
|
-
const all = await this.
|
|
75
|
-
const settings = all.
|
|
81
|
+
async fetch(pluginId) {
|
|
82
|
+
const all = await this.list();
|
|
83
|
+
const settings = all.values;
|
|
76
84
|
const setting = settings.find((setting) => {
|
|
77
85
|
return setting.id === pluginId;
|
|
78
86
|
});
|
|
87
|
+
if (!setting) {
|
|
88
|
+
throw new Error(`Setting ${pluginId} not found`);
|
|
89
|
+
}
|
|
79
90
|
return setting;
|
|
80
91
|
}
|
|
81
92
|
/**
|
|
82
93
|
* Get all the settings
|
|
83
94
|
*/
|
|
84
|
-
async
|
|
95
|
+
async list(query) {
|
|
96
|
+
var _a, _b;
|
|
85
97
|
const allCore = await this._getAll('all.json');
|
|
86
98
|
let allFederated = [];
|
|
87
99
|
try {
|
|
@@ -105,7 +117,17 @@ export class Settings {
|
|
|
105
117
|
settings: json5.parse(raw),
|
|
106
118
|
};
|
|
107
119
|
}));
|
|
108
|
-
|
|
120
|
+
// format the settings
|
|
121
|
+
const ids = (_a = settings.map((plugin) => plugin.id)) !== null && _a !== void 0 ? _a : [];
|
|
122
|
+
let values = [];
|
|
123
|
+
if (!query) {
|
|
124
|
+
values =
|
|
125
|
+
(_b = settings.map((plugin) => {
|
|
126
|
+
plugin.data = { composite: {}, user: {} };
|
|
127
|
+
return plugin;
|
|
128
|
+
})) !== null && _b !== void 0 ? _b : [];
|
|
129
|
+
}
|
|
130
|
+
return { ids, values };
|
|
109
131
|
}
|
|
110
132
|
/**
|
|
111
133
|
* Save settings for a given plugin id
|
|
@@ -114,8 +136,16 @@ export class Settings {
|
|
|
114
136
|
* @param raw The raw settings
|
|
115
137
|
*
|
|
116
138
|
*/
|
|
117
|
-
async save(
|
|
118
|
-
await (await this.storage).setItem(
|
|
139
|
+
async save(id, raw) {
|
|
140
|
+
await (await this.storage).setItem(id, raw);
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Clear all stored settings
|
|
144
|
+
*
|
|
145
|
+
* @returns A promise which resolves when the settings are cleared
|
|
146
|
+
*/
|
|
147
|
+
async clear() {
|
|
148
|
+
await (await this.storage).clear();
|
|
119
149
|
}
|
|
120
150
|
/**
|
|
121
151
|
* Get all the settings for core or federated plugins
|
package/lib/settings.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAA6B,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAIjF,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAS/B;;GAEG;AACH,MAAM,oBAAoB,GAAG,qBAAqB,CAAC;AAEnD;;GAEG;AACH,MAAM,OAAO,QAAS,SAAQ,cAAc;IAC1C;;OAEG;IACH,YAAY,OAA0B;QACpC,KAAK,CAAC;YACJ,cAAc,EAAE,OAAO,CAAC,cAAc;SACvC,CAAC,CAAC;QA6JG,iBAAY,GAAW,oBAAoB,CAAC;QAC5C,oBAAe,GAAoB,IAAI,CAAC;QA7J9C,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;QACxC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,WAAW,IAAI,oBAAoB,CAAC;QAChE,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC;QAEtD,IAAI,CAAC,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACpC,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,IAAc,OAAO;QACnB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAuB,CAAC,CAAC;IAC7D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACzB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,WAAW;QACzB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,IAAc,qBAAqB;;QACjC,MAAM,MAAM,GAAG,CAAA,MAAA,IAAI,CAAC,eAAe,0CAAE,MAAM,EAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1E,OAAO;YACL,OAAO,EAAE,CAAC;YACV,IAAI,EAAE,IAAI,CAAC,YAAY;YACvB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9B,CAAC;IACJ,CAAC;IAED;;OAEG;IACO,sBAAsB;QAC9B,OAAO,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC;YACtC,WAAW,EAAE,8BAA8B;YAC3C,SAAS,EAAE,UAAU;YACrB,GAAG,IAAI,CAAC,qBAAqB;SAC9B,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,KAAK,CAAC,QAAgB;QAC1B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAoC,CAAC;QAC1D,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAiC,EAAE,EAAE;YAClE,OAAO,OAAO,CAAC,EAAE,KAAK,QAAQ,CAAC;QACjC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,WAAW,QAAQ,YAAY,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CACR,KAAa;;QAEb,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC/C,IAAI,YAAY,GAA+B,EAAE,CAAC;QAClD,IAAI,CAAC;YACH,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;QAC1D,CAAC;QAAC,MAAM,CAAC;YACP,wDAAwD;QAC1D,CAAC;QAED,6DAA6D;QAC7D,iEAAiE;QACjE,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAEzC,8CAA8C;QAC9C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC;QACnC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAChC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;;YACvB,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM,CAAC;YACtB,MAAM,GAAG,GAAG,MAAC,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAY,mCAAI,MAAM,CAAC,GAAG,CAAC;YAClE,OAAO;gBACL,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAC3B,GAAG;gBACH,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;aAC3B,CAAC;QACJ,CAAC,CAAC,CACH,CAAC;QAEF,sBAAsB;QACtB,MAAM,GAAG,GAAG,MAAA,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAgC,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,mCAAI,EAAE,CAAC;QAEhF,IAAI,MAAM,GAA+B,EAAE,CAAC;QAC5C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM;gBACJ,MAAA,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAgC,EAAE,EAAE;oBAChD,MAAM,CAAC,IAAI,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;oBAC1C,OAAO,MAAM,CAAC;gBAChB,CAAC,CAAC,mCAAI,EAAE,CAAC;QACb,CAAC;QAED,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;IACzB,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,IAAI,CAAC,EAAU,EAAE,GAAW;QAChC,MAAM,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IAC9C,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,KAAK;QACT,MAAM,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;IACrC,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,OAAO,CAAC,IAAkB;;QACtC,MAAM,WAAW,GAAG,MAAA,UAAU,CAAC,SAAS,CAAC,aAAa,CAAC,mCAAI,GAAG,CAAC;QAC/D,MAAM,GAAG,GAAG,CAAC,MAAM,CACjB,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAC5C,CAAC,IAAI,EAAE,CAA+B,CAAC;QACxC,OAAO,GAAG,CAAC;IACb,CAAC;CAOF;AAiBD;;GAEG;AACH,IAAU,OAAO,CAqBhB;AArBD,WAAU,OAAO;IACf,MAAM,UAAU,GACd,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,mBAAmB,CAAC,IAAI,IAAI,CAAC,CAAC;IAEhE;;;;OAIG;IACH,SAAgB,QAAQ,CAAC,MAAgC;QACvD,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;gBAC9B,gEAAgE;gBAChE,MAAM,CAAC,MAAM,CAAC,UAAU,GAAG,EAAE,CAAC;YAChC,CAAC;YACD,KAAK,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;gBAC9E,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,GAAG,WAAW,CAAC;YACvD,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAXe,gBAAQ,WAWvB,CAAA;AACH,CAAC,EArBS,OAAO,KAAP,OAAO,QAqBhB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jupyterlite/settings",
|
|
3
|
-
"version": "0.6.0-alpha.
|
|
3
|
+
"version": "0.6.0-alpha.10",
|
|
4
4
|
"description": "JupyterLite - Settings",
|
|
5
5
|
"homepage": "https://github.com/jupyterlite/jupyterlite",
|
|
6
6
|
"bugs": {
|
|
@@ -43,22 +43,22 @@
|
|
|
43
43
|
"watch": "tsc -b --watch"
|
|
44
44
|
},
|
|
45
45
|
"dependencies": {
|
|
46
|
-
"@jupyterlab/coreutils": "~6.4.
|
|
47
|
-
"@jupyterlab/settingregistry": "~4.4.
|
|
48
|
-
"@jupyterlite/localforage": "^0.6.0-alpha.
|
|
49
|
-
"@lumino/coreutils": "^2.2.
|
|
46
|
+
"@jupyterlab/coreutils": "~6.4.2",
|
|
47
|
+
"@jupyterlab/settingregistry": "~4.4.2",
|
|
48
|
+
"@jupyterlite/localforage": "^0.6.0-alpha.10",
|
|
49
|
+
"@lumino/coreutils": "^2.2.1",
|
|
50
50
|
"json5": "^2.2.0",
|
|
51
51
|
"localforage": "^1.9.0"
|
|
52
52
|
},
|
|
53
53
|
"devDependencies": {
|
|
54
54
|
"@babel/core": "^7.11.6",
|
|
55
55
|
"@babel/preset-env": "^7.12.1",
|
|
56
|
-
"@jupyterlab/testutils": "~4.4.
|
|
56
|
+
"@jupyterlab/testutils": "~4.4.2",
|
|
57
57
|
"@types/jest": "^29.5.3",
|
|
58
58
|
"jest": "^29.6.2",
|
|
59
59
|
"rimraf": "~5.0.1",
|
|
60
60
|
"ts-jest": "^29.1.1",
|
|
61
|
-
"typescript": "~5.
|
|
61
|
+
"typescript": "~5.5.4"
|
|
62
62
|
},
|
|
63
63
|
"publishConfig": {
|
|
64
64
|
"access": "public"
|
package/src/index.ts
CHANGED
package/src/settings.ts
CHANGED
|
@@ -1,12 +1,19 @@
|
|
|
1
1
|
import { PageConfig, URLExt } from '@jupyterlab/coreutils';
|
|
2
2
|
|
|
3
|
+
import { ServerConnection, Setting, SettingManager } from '@jupyterlab/services';
|
|
4
|
+
|
|
5
|
+
import { ISettingRegistry } from '@jupyterlab/settingregistry';
|
|
6
|
+
|
|
3
7
|
import { PromiseDelegate } from '@lumino/coreutils';
|
|
4
8
|
|
|
5
9
|
import * as json5 from 'json5';
|
|
6
10
|
|
|
7
11
|
import type localforage from 'localforage';
|
|
8
12
|
|
|
9
|
-
|
|
13
|
+
/**
|
|
14
|
+
* The settings file to request
|
|
15
|
+
*/
|
|
16
|
+
export type SettingsFile = 'all.json' | 'all_federated.json';
|
|
10
17
|
|
|
11
18
|
/**
|
|
12
19
|
* The name of the local storage.
|
|
@@ -14,15 +21,22 @@ import { IPlugin, ISettings, SettingsFile } from './tokens';
|
|
|
14
21
|
const DEFAULT_STORAGE_NAME = 'JupyterLite Storage';
|
|
15
22
|
|
|
16
23
|
/**
|
|
17
|
-
* A class to
|
|
24
|
+
* A class to manage settings in the browser.
|
|
18
25
|
*/
|
|
19
|
-
export class Settings implements
|
|
26
|
+
export class Settings extends SettingManager implements Setting.IManager {
|
|
27
|
+
/**
|
|
28
|
+
* Create a new settings service.
|
|
29
|
+
*/
|
|
20
30
|
constructor(options: Settings.IOptions) {
|
|
31
|
+
super({
|
|
32
|
+
serverSettings: options.serverSettings,
|
|
33
|
+
});
|
|
21
34
|
this._localforage = options.localforage;
|
|
22
35
|
this._storageName = options.storageName || DEFAULT_STORAGE_NAME;
|
|
23
36
|
this._storageDrivers = options.storageDrivers || null;
|
|
24
37
|
|
|
25
38
|
this._ready = new PromiseDelegate();
|
|
39
|
+
void this.initialize().catch(console.warn);
|
|
26
40
|
}
|
|
27
41
|
|
|
28
42
|
/**
|
|
@@ -83,21 +97,26 @@ export class Settings implements ISettings {
|
|
|
83
97
|
* @param pluginId the id of the plugin
|
|
84
98
|
*
|
|
85
99
|
*/
|
|
86
|
-
async
|
|
87
|
-
const all = await this.
|
|
88
|
-
const settings = all.
|
|
89
|
-
const setting = settings.find((setting: IPlugin) => {
|
|
100
|
+
async fetch(pluginId: string): Promise<ISettingRegistry.IPlugin> {
|
|
101
|
+
const all = await this.list();
|
|
102
|
+
const settings = all.values as ISettingRegistry.IPlugin[];
|
|
103
|
+
const setting = settings.find((setting: ISettingRegistry.IPlugin) => {
|
|
90
104
|
return setting.id === pluginId;
|
|
91
105
|
});
|
|
106
|
+
if (!setting) {
|
|
107
|
+
throw new Error(`Setting ${pluginId} not found`);
|
|
108
|
+
}
|
|
92
109
|
return setting;
|
|
93
110
|
}
|
|
94
111
|
|
|
95
112
|
/**
|
|
96
113
|
* Get all the settings
|
|
97
114
|
*/
|
|
98
|
-
async
|
|
115
|
+
async list(
|
|
116
|
+
query?: 'ids',
|
|
117
|
+
): Promise<{ ids: string[]; values: ISettingRegistry.IPlugin[] }> {
|
|
99
118
|
const allCore = await this._getAll('all.json');
|
|
100
|
-
let allFederated: IPlugin[] = [];
|
|
119
|
+
let allFederated: ISettingRegistry.IPlugin[] = [];
|
|
101
120
|
try {
|
|
102
121
|
allFederated = await this._getAll('all_federated.json');
|
|
103
122
|
} catch {
|
|
@@ -121,7 +140,20 @@ export class Settings implements ISettings {
|
|
|
121
140
|
};
|
|
122
141
|
}),
|
|
123
142
|
);
|
|
124
|
-
|
|
143
|
+
|
|
144
|
+
// format the settings
|
|
145
|
+
const ids = settings.map((plugin: ISettingRegistry.IPlugin) => plugin.id) ?? [];
|
|
146
|
+
|
|
147
|
+
let values: ISettingRegistry.IPlugin[] = [];
|
|
148
|
+
if (!query) {
|
|
149
|
+
values =
|
|
150
|
+
settings.map((plugin: ISettingRegistry.IPlugin) => {
|
|
151
|
+
plugin.data = { composite: {}, user: {} };
|
|
152
|
+
return plugin;
|
|
153
|
+
}) ?? [];
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
return { ids, values };
|
|
125
157
|
}
|
|
126
158
|
|
|
127
159
|
/**
|
|
@@ -131,18 +163,27 @@ export class Settings implements ISettings {
|
|
|
131
163
|
* @param raw The raw settings
|
|
132
164
|
*
|
|
133
165
|
*/
|
|
134
|
-
async save(
|
|
135
|
-
await (await this.storage).setItem(
|
|
166
|
+
async save(id: string, raw: string): Promise<void> {
|
|
167
|
+
await (await this.storage).setItem(id, raw);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* Clear all stored settings
|
|
172
|
+
*
|
|
173
|
+
* @returns A promise which resolves when the settings are cleared
|
|
174
|
+
*/
|
|
175
|
+
async clear(): Promise<void> {
|
|
176
|
+
await (await this.storage).clear();
|
|
136
177
|
}
|
|
137
178
|
|
|
138
179
|
/**
|
|
139
180
|
* Get all the settings for core or federated plugins
|
|
140
181
|
*/
|
|
141
|
-
private async _getAll(file: SettingsFile): Promise<IPlugin[]> {
|
|
182
|
+
private async _getAll(file: SettingsFile): Promise<ISettingRegistry.IPlugin[]> {
|
|
142
183
|
const settingsUrl = PageConfig.getOption('settingsUrl') ?? '/';
|
|
143
184
|
const all = (await (
|
|
144
185
|
await fetch(URLExt.join(settingsUrl, file))
|
|
145
|
-
).json()) as IPlugin[];
|
|
186
|
+
).json()) as ISettingRegistry.IPlugin[];
|
|
146
187
|
return all;
|
|
147
188
|
}
|
|
148
189
|
|
|
@@ -164,6 +205,7 @@ export namespace Settings {
|
|
|
164
205
|
localforage: typeof localforage;
|
|
165
206
|
storageName?: string | null;
|
|
166
207
|
storageDrivers?: string[] | null;
|
|
208
|
+
serverSettings?: ServerConnection.ISettings;
|
|
167
209
|
}
|
|
168
210
|
}
|
|
169
211
|
|
|
@@ -171,16 +213,15 @@ export namespace Settings {
|
|
|
171
213
|
* A namespace for private data
|
|
172
214
|
*/
|
|
173
215
|
namespace Private {
|
|
174
|
-
const _overrides: Record<string, IPlugin['schema']['default']> =
|
|
175
|
-
PageConfig.getOption('settingsOverrides') || '{}'
|
|
176
|
-
);
|
|
216
|
+
const _overrides: Record<string, ISettingRegistry.IPlugin['schema']['default']> =
|
|
217
|
+
JSON.parse(PageConfig.getOption('settingsOverrides') || '{}');
|
|
177
218
|
|
|
178
219
|
/**
|
|
179
220
|
* Override the defaults of the schema with ones from PageConfig
|
|
180
221
|
*
|
|
181
222
|
* @see https://github.com/jupyterlab/jupyterlab_server/blob/v2.5.2/jupyterlab_server/settings_handler.py#L216-L227
|
|
182
223
|
*/
|
|
183
|
-
export function override(plugin: IPlugin): IPlugin {
|
|
224
|
+
export function override(plugin: ISettingRegistry.IPlugin): ISettingRegistry.IPlugin {
|
|
184
225
|
if (_overrides[plugin.id]) {
|
|
185
226
|
if (!plugin.schema.properties) {
|
|
186
227
|
// probably malformed, or only provides keyboard shortcuts, etc.
|
package/lib/tokens.d.ts
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { ISettingRegistry } from '@jupyterlab/settingregistry';
|
|
2
|
-
import { JSONObject, PartialJSONObject, Token } from '@lumino/coreutils';
|
|
3
|
-
/**
|
|
4
|
-
* The token for the settings service.
|
|
5
|
-
*/
|
|
6
|
-
export declare const ISettings: Token<ISettings>;
|
|
7
|
-
/**
|
|
8
|
-
* The settings file to request
|
|
9
|
-
*/
|
|
10
|
-
export type SettingsFile = 'all.json' | 'all_federated.json';
|
|
11
|
-
/**
|
|
12
|
-
* An interface for the plugin settings.
|
|
13
|
-
*/
|
|
14
|
-
export interface IPlugin extends PartialJSONObject {
|
|
15
|
-
/**
|
|
16
|
-
* The name of the plugin.
|
|
17
|
-
*/
|
|
18
|
-
id: string;
|
|
19
|
-
/**
|
|
20
|
-
* The settings for the plugin.
|
|
21
|
-
*/
|
|
22
|
-
settings: JSONObject;
|
|
23
|
-
/**
|
|
24
|
-
* The raw user settings data as a string containing JSON with comments.
|
|
25
|
-
*/
|
|
26
|
-
raw: string;
|
|
27
|
-
/**
|
|
28
|
-
* The JSON schema for the plugin.
|
|
29
|
-
*/
|
|
30
|
-
schema: ISettingRegistry.ISchema;
|
|
31
|
-
/**
|
|
32
|
-
* The published version of the NPM package containing the plugin.
|
|
33
|
-
*/
|
|
34
|
-
version: string;
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* The interface for the Settings service.
|
|
38
|
-
*/
|
|
39
|
-
export interface ISettings {
|
|
40
|
-
/**
|
|
41
|
-
* A promise that resolves after the settings have been full initialized
|
|
42
|
-
*/
|
|
43
|
-
ready: Promise<void>;
|
|
44
|
-
/**
|
|
45
|
-
* Get settings by plugin id
|
|
46
|
-
*
|
|
47
|
-
* @param pluginId the id of the plugin
|
|
48
|
-
*
|
|
49
|
-
*/
|
|
50
|
-
get(pluginId: string): Promise<IPlugin | undefined>;
|
|
51
|
-
/**
|
|
52
|
-
* Get all the settings
|
|
53
|
-
*/
|
|
54
|
-
getAll(): Promise<{
|
|
55
|
-
settings: IPlugin[];
|
|
56
|
-
}>;
|
|
57
|
-
/**
|
|
58
|
-
* Save settings for a given plugin id
|
|
59
|
-
*
|
|
60
|
-
* @param pluginId The id of the plugin
|
|
61
|
-
* @param raw The raw settings
|
|
62
|
-
*
|
|
63
|
-
*/
|
|
64
|
-
save(pluginId: string, raw: string): Promise<void>;
|
|
65
|
-
}
|
package/lib/tokens.js
DELETED
package/lib/tokens.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiC,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAEzE;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,KAAK,CAAY,iCAAiC,CAAC,CAAC"}
|
package/src/tokens.ts
DELETED
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import { ISettingRegistry } from '@jupyterlab/settingregistry';
|
|
2
|
-
|
|
3
|
-
import { JSONObject, PartialJSONObject, Token } from '@lumino/coreutils';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* The token for the settings service.
|
|
7
|
-
*/
|
|
8
|
-
export const ISettings = new Token<ISettings>('@jupyterlite/settings:ISettings');
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* The settings file to request
|
|
12
|
-
*/
|
|
13
|
-
export type SettingsFile = 'all.json' | 'all_federated.json';
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* An interface for the plugin settings.
|
|
17
|
-
*/
|
|
18
|
-
export interface IPlugin extends PartialJSONObject {
|
|
19
|
-
/**
|
|
20
|
-
* The name of the plugin.
|
|
21
|
-
*/
|
|
22
|
-
id: string;
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* The settings for the plugin.
|
|
26
|
-
*/
|
|
27
|
-
settings: JSONObject;
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* The raw user settings data as a string containing JSON with comments.
|
|
31
|
-
*/
|
|
32
|
-
raw: string;
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* The JSON schema for the plugin.
|
|
36
|
-
*/
|
|
37
|
-
schema: ISettingRegistry.ISchema;
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* The published version of the NPM package containing the plugin.
|
|
41
|
-
*/
|
|
42
|
-
version: string;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* The interface for the Settings service.
|
|
47
|
-
*/
|
|
48
|
-
export interface ISettings {
|
|
49
|
-
/**
|
|
50
|
-
* A promise that resolves after the settings have been full initialized
|
|
51
|
-
*/
|
|
52
|
-
ready: Promise<void>;
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
* Get settings by plugin id
|
|
56
|
-
*
|
|
57
|
-
* @param pluginId the id of the plugin
|
|
58
|
-
*
|
|
59
|
-
*/
|
|
60
|
-
get(pluginId: string): Promise<IPlugin | undefined>;
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* Get all the settings
|
|
64
|
-
*/
|
|
65
|
-
getAll(): Promise<{ settings: IPlugin[] }>;
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* Save settings for a given plugin id
|
|
69
|
-
*
|
|
70
|
-
* @param pluginId The id of the plugin
|
|
71
|
-
* @param raw The raw settings
|
|
72
|
-
*
|
|
73
|
-
*/
|
|
74
|
-
save(pluginId: string, raw: string): Promise<void>;
|
|
75
|
-
}
|