@jupyterlab/extensionmanager 4.0.0-alpha.8 → 4.0.0-beta.0

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/dialog.js CHANGED
@@ -13,7 +13,7 @@ export function reportInstallError(name, errorMessage, translator) {
13
13
  translator = translator || nullTranslator;
14
14
  const trans = translator.load('jupyterlab');
15
15
  const entries = [];
16
- entries.push(React.createElement("p", null, trans.__('An error occurred installing <code>%1</code>.', name)));
16
+ entries.push(React.createElement("p", null, trans.__(`An error occurred installing "${name}".`)));
17
17
  if (errorMessage) {
18
18
  entries.push(React.createElement("p", null,
19
19
  React.createElement("span", { className: "jp-extensionmanager-dialog-subheader" }, trans.__('Error message:'))), React.createElement("pre", null, errorMessage.trim()));
@@ -22,7 +22,7 @@ export function reportInstallError(name, errorMessage, translator) {
22
22
  void showDialog({
23
23
  title: trans.__('Extension Installation Error'),
24
24
  body,
25
- buttons: [Dialog.warnButton({ label: trans.__('OK') })]
25
+ buttons: [Dialog.warnButton({ label: trans.__('Ok') })]
26
26
  });
27
27
  }
28
28
  //# sourceMappingURL=dialog.js.map
package/lib/dialog.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"dialog.js","sourceRoot":"","sources":["../src/dialog.tsx"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,2DAA2D;AAE3D,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAe,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAChC,IAAY,EACZ,YAAqB,EACrB,UAAwB;IAExB,UAAU,GAAG,UAAU,IAAI,cAAc,CAAC;IAC1C,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,EAAE,CAAC;IACnB,OAAO,CAAC,IAAI,CACV,+BAAI,KAAK,CAAC,EAAE,CAAC,+CAA+C,EAAE,IAAI,CAAC,CAAK,CACzE,CAAC;IACF,IAAI,YAAY,EAAE;QAChB,OAAO,CAAC,IAAI,CACV;YACE,8BAAM,SAAS,EAAC,sCAAsC,IACnD,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAAC,CACtB,CACL,EACJ,iCAAM,YAAY,CAAC,IAAI,EAAE,CAAO,CACjC,CAAC;KACH;IACD,MAAM,IAAI,GAAG,6BAAK,SAAS,EAAC,4BAA4B,IAAE,OAAO,CAAO,CAAC;IACzE,KAAK,UAAU,CAAC;QACd,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,8BAA8B,CAAC;QAC/C,IAAI;QACJ,OAAO,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACxD,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"dialog.js","sourceRoot":"","sources":["../src/dialog.tsx"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,2DAA2D;AAE3D,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAe,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAChC,IAAY,EACZ,YAAqB,EACrB,UAAwB;IAExB,UAAU,GAAG,UAAU,IAAI,cAAc,CAAC;IAC1C,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,EAAE,CAAC;IACnB,OAAO,CAAC,IAAI,CAAC,+BAAI,KAAK,CAAC,EAAE,CAAC,iCAAiC,IAAI,IAAI,CAAC,CAAK,CAAC,CAAC;IAC3E,IAAI,YAAY,EAAE;QAChB,OAAO,CAAC,IAAI,CACV;YACE,8BAAM,SAAS,EAAC,sCAAsC,IACnD,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAAC,CACtB,CACL,EACJ,iCAAM,YAAY,CAAC,IAAI,EAAE,CAAO,CACjC,CAAC;KACH;IACD,MAAM,IAAI,GAAG,6BAAK,SAAS,EAAC,4BAA4B,IAAE,OAAO,CAAO,CAAC;IACzE,KAAK,UAAU,CAAC;QACd,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,8BAA8B,CAAC;QAC/C,IAAI;QACJ,OAAO,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACxD,CAAC,CAAC;AACL,CAAC"}
package/lib/index.d.ts CHANGED
@@ -3,6 +3,4 @@
3
3
  * @module extensionmanager
4
4
  */
5
5
  export * from './model';
6
- export * from './npm';
7
- export * from './listings';
8
6
  export * from './widget';
package/lib/index.js CHANGED
@@ -5,7 +5,5 @@
5
5
  * @module extensionmanager
6
6
  */
7
7
  export * from './model';
8
- export * from './npm';
9
- export * from './listings';
10
8
  export * from './widget';
11
9
  //# sourceMappingURL=index.js.map
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;AAC3D;;;GAGG;AAEH,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,2DAA2D;AAC3D;;;GAGG;AAEH,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC"}
package/lib/model.d.ts CHANGED
@@ -1,10 +1,6 @@
1
- import { JupyterFrontEnd } from '@jupyterlab/application';
2
- import { ServerConnection, ServiceManager } from '@jupyterlab/services';
3
- import { ISettingRegistry } from '@jupyterlab/settingregistry';
1
+ import { ServiceManager } from '@jupyterlab/services';
4
2
  import { ITranslator } from '@jupyterlab/translation';
5
3
  import { VDomModel } from '@jupyterlab/ui-components';
6
- import { IListEntry, Lister } from './listings';
7
- import { ISearchResult, Searcher } from './npm';
8
4
  /**
9
5
  * Information about an extension.
10
6
  */
@@ -20,19 +16,23 @@ export interface IEntry {
20
16
  /**
21
17
  * A representative link of the package.
22
18
  */
23
- url: string;
19
+ homepage_url: string;
24
20
  /**
25
21
  * Whether the extension is currently installed.
26
22
  */
27
- installed: boolean;
23
+ installed?: boolean | null;
28
24
  /**
29
- * Whether the extension is currently enabled.
25
+ * Whether the extension is allowed or not.
30
26
  */
31
- enabled: boolean;
27
+ allowed: boolean;
32
28
  /**
33
- * A flag indicating the status of an installed extension.
29
+ * Whether the extension is approved by the system administrators.
34
30
  */
35
- status: 'ok' | 'warning' | 'error' | 'deprecated' | null;
31
+ approved: boolean;
32
+ /**
33
+ * Whether the extension is currently enabled.
34
+ */
35
+ enabled: boolean;
36
36
  /**
37
37
  * The latest version of the extension.
38
38
  */
@@ -41,8 +41,10 @@ export interface IEntry {
41
41
  * The installed version of the extension.
42
42
  */
43
43
  installed_version: string;
44
- blockedExtensionsEntry: IListEntry | undefined;
45
- allowedExtensionsEntry: IListEntry | undefined;
44
+ /**
45
+ * A flag indicating the status of an installed extension.
46
+ */
47
+ status: 'ok' | 'warning' | 'error' | 'deprecated' | null;
46
48
  /**
47
49
  * The package type (prebuilt or source).
48
50
  */
@@ -50,75 +52,36 @@ export interface IEntry {
50
52
  /**
51
53
  * The information about extension installation.
52
54
  */
53
- install: IInstall | undefined;
54
- }
55
- /**
56
- * Information about extension installation.
57
- */
58
- export interface IInstall {
59
- /**
60
- * The used package manager (e.g. pip, conda...)
61
- */
62
- packageManager: string | undefined;
63
- /**
64
- * The package name as known by the package manager.
65
- */
66
- packageName: string | undefined;
67
- /**
68
- * The uninstallation instructions as a comprehensive
69
- * text for the end user.
70
- */
71
- uninstallInstructions: string | undefined;
72
- }
73
- /**
74
- * Wire format for installed extensions.
75
- */
76
- export interface IInstalledEntry {
77
- /**
78
- * The name of the extension.
79
- */
80
- name: string;
81
- /**
82
- * A short description of the extension.
83
- */
84
- description: string;
85
- /**
86
- * A representative link of the package.
87
- */
88
- url: string;
55
+ install?: IInstall | null;
89
56
  /**
90
- * Whether the extension is currently installed.
57
+ * Package author.
91
58
  */
92
- installed?: boolean;
93
- /**
94
- * Whether the extension is currently enabled.
95
- */
96
- enabled: boolean;
59
+ author?: string;
97
60
  /**
98
- * The latest version of the extension.
61
+ * Package license.
99
62
  */
100
- latest_version: string;
63
+ license?: string;
101
64
  /**
102
- * The installed version of the extension.
65
+ * URL to the package bug tracker.
103
66
  */
104
- installed_version: string;
67
+ bug_tracker_url?: string;
105
68
  /**
106
- * A flag indicating the status of an installed extension.
69
+ * URL to the package documentation.
107
70
  */
108
- status: 'ok' | 'warning' | 'error' | 'deprecated' | null;
71
+ documentation_url?: string;
109
72
  /**
110
- * The package type (prebuilt or source).
73
+ * URL to the package URL in the packager website.
111
74
  */
112
- pkg_type: 'prebuilt' | 'source';
75
+ package_manager_url?: string;
113
76
  /**
114
- * The information about extension installation.
77
+ * URL to the package code source.
115
78
  */
116
- install: IInstallEntry | undefined;
79
+ repository_url?: string;
117
80
  }
118
81
  /**
119
82
  * Information about extension installation.
120
83
  */
121
- export interface IInstallEntry {
84
+ export interface IInstall {
122
85
  /**
123
86
  * The used package manager (e.g. pip, conda...)
124
87
  */
@@ -145,72 +108,84 @@ export interface IActionReply {
145
108
  * An optional message when the status is not 'ok'.
146
109
  */
147
110
  message?: string;
111
+ /**
112
+ * Follow-up restart needed by the action
113
+ */
114
+ needs_restart: ('frontend' | 'kernel' | 'server')[];
148
115
  }
149
116
  /**
150
117
  * Extension actions that the server API accepts
151
118
  */
152
- export declare type Action = 'install' | 'uninstall' | 'enable' | 'disable';
119
+ export type Action = 'install' | 'uninstall' | 'enable' | 'disable';
153
120
  /**
154
121
  * Model for an extension list.
155
122
  */
156
123
  export declare class ListModel extends VDomModel {
157
- constructor(app: JupyterFrontEnd, serviceManager: ServiceManager.IManager, settings: ISettingRegistry.ISettings, translator?: ITranslator);
158
- private _listingIsLoaded;
124
+ constructor(serviceManager: ServiceManager.IManager, translator?: ITranslator);
125
+ /**
126
+ * Extension manager name.
127
+ */
128
+ readonly name: string;
129
+ /**
130
+ * Whether the extension manager support installation methods or not.
131
+ */
132
+ readonly canInstall: boolean;
133
+ /**
134
+ * Extensions installation path.
135
+ */
136
+ installPath: string | null;
159
137
  /**
160
138
  * A readonly array of the installed extensions.
161
139
  */
162
140
  get installed(): ReadonlyArray<IEntry>;
141
+ /**
142
+ * Whether the warning is disclaimed or not.
143
+ */
144
+ get isDisclaimed(): boolean;
145
+ set isDisclaimed(v: boolean);
146
+ /**
147
+ * Whether the extension manager is enabled or not.
148
+ */
149
+ get isEnabled(): boolean;
150
+ set isEnabled(v: boolean);
151
+ get isLoadingInstalledExtensions(): boolean;
152
+ get isSearching(): boolean;
163
153
  /**
164
154
  * A readonly array containing the latest search result
165
155
  */
166
156
  get searchResult(): ReadonlyArray<IEntry>;
167
157
  /**
168
- * The current NPM repository search query.
158
+ * The search query.
169
159
  *
170
160
  * Setting its value triggers a new search.
171
161
  */
172
- get query(): string | null;
173
- set query(value: string | null);
162
+ get query(): string;
163
+ set query(value: string);
174
164
  /**
175
- * The current NPM repository search page.
176
- *
177
- * The npm repository search is paginated by the `pagination` attribute.
178
- * The `page` value selects which page is used.
165
+ * The current search page.
179
166
  *
180
167
  * Setting its value triggers a new search.
168
+ *
169
+ * ### Note
170
+ * First page is 1.
181
171
  */
182
172
  get page(): number;
183
173
  set page(value: number);
184
174
  /**
185
- * The NPM repository search pagination.
186
- *
187
- * The npm repository search is paginated by the `pagination` attribute.
188
- * The `page` value selects which page is used.
175
+ * The search pagination.
189
176
  *
190
177
  * Setting its value triggers a new search.
191
178
  */
192
179
  get pagination(): number;
193
180
  set pagination(value: number);
194
181
  /**
195
- * The total number of results in the current search.
196
- */
197
- get totalEntries(): number;
198
- /**
199
- * The list mode.
200
- */
201
- get listMode(): 'block' | 'allow' | 'default' | 'invalid';
202
- /**
203
- * The total number of blockedExtensions results in the current search.
204
- */
205
- get totalblockedExtensionsFound(): number;
206
- /**
207
- * The total number of allowedExtensions results in the current search.
182
+ * The last page of results in the current search.
208
183
  */
209
- get totalallowedExtensionsFound(): number;
184
+ get lastPage(): number;
210
185
  /**
211
- * Initialize the model.
186
+ * Dispose the extensions list model.
212
187
  */
213
- initialize(): Promise<void>;
188
+ dispose(): void;
214
189
  /**
215
190
  * Whether there are currently any actions pending.
216
191
  */
@@ -240,90 +215,41 @@ export declare class ListModel extends VDomModel {
240
215
  */
241
216
  disable(entry: IEntry): Promise<void>;
242
217
  /**
243
- * Check for companion packages in kernels or server.
244
- *
245
- * @param entry An entry indicating which extension to check.
246
- */
247
- checkCompanionPackages(entry: IEntry): Promise<boolean>;
248
- /**
249
- * Trigger a build check to incorporate actions taken.
250
- */
251
- triggerBuildCheck(): void;
252
- /**
253
- * Perform a build on the server
254
- */
255
- performBuild(): void;
256
- /**
257
- * Ignore a build recommendation
258
- */
259
- ignoreBuildRecommendation(): void;
260
- /**
261
- * Ignore a build recommendation
262
- */
263
- refreshInstalled(): void;
264
- /**
265
- * Translate search results from an npm repository query into entries
266
- * and remove entries with 'deprecated' in the keyword list
218
+ * Refresh installed packages
267
219
  *
268
- * @param res Promise to an npm query result.
220
+ * @param force Force refreshing the list of installed packages
269
221
  */
270
- protected translateSearchResult(res: Promise<ISearchResult>): Promise<{
271
- [key: string]: IEntry;
272
- }>;
273
- /**
274
- * Translate installed extensions information from the server into entries.
275
- *
276
- * @param res Promise to the server reply data.
277
- */
278
- protected translateInstalled(res: Promise<IInstalledEntry[]>): Promise<{
279
- [key: string]: IEntry;
280
- }>;
281
- private isListed;
282
- /**
283
- * Make a request to the server for info about its installed extensions.
284
- */
285
- protected fetchInstalled(refreshInstalled?: boolean): Promise<IInstalledEntry[]>;
222
+ refreshInstalled(force?: boolean): Promise<void>;
286
223
  /**
287
224
  * Search with current query.
288
225
  *
289
226
  * Sets searchError and totalEntries as appropriate.
290
227
  *
291
- * @returns {Promise<{ [key: string]: IEntry; }>} The search result as a map of entries.
292
- */
293
- protected performSearch(): Promise<{
294
- [key: string]: IEntry;
295
- }>;
296
- /**
297
- * Query the installed extensions.
298
- *
299
- * Sets installedError as appropriate.
300
- *
301
- * @returns {Promise<{ [key: string]: IEntry; }>} A map of installed extensions.
228
+ * @returns The extensions matching the current query.
302
229
  */
303
- protected queryInstalled(refreshInstalled: boolean): Promise<{
304
- [key: string]: IEntry;
305
- }>;
230
+ protected search(force?: boolean): Promise<void>;
306
231
  /**
307
232
  * Update the current model.
308
233
  *
309
- * This will query the NPM repository, and the notebook server.
234
+ * This will query the packages repository, and the notebook server.
310
235
  *
311
236
  * Emits the `stateChanged` signal on successful completion.
312
237
  */
313
- protected update(refreshInstalled?: boolean): Promise<void>;
238
+ protected update(force?: boolean): Promise<void>;
314
239
  /**
315
240
  * Send a request to the server to perform an action on an extension.
316
241
  *
317
242
  * @param action A valid action to perform.
318
243
  * @param entry The extension to perform the action on.
319
244
  */
320
- protected _performAction(action: string, entry: IEntry): Promise<IActionReply>;
245
+ protected performAction(action: string, entry: IEntry): Promise<IActionReply>;
321
246
  /**
322
247
  * Add a pending action.
323
248
  *
324
249
  * @param pending A promise that resolves when the action is completed.
325
250
  */
326
- protected _addPendingAction(pending: Promise<any>): void;
251
+ protected addPendingAction(pending: Promise<any>): void;
252
+ actionError: string | null;
327
253
  /**
328
254
  * Contains an error message if an error occurred when querying installed extensions.
329
255
  */
@@ -333,53 +259,26 @@ export declare class ListModel extends VDomModel {
333
259
  */
334
260
  searchError: string | null;
335
261
  /**
336
- * Contains an error message if an error occurred when searching for lists.
337
- */
338
- blockedExtensionsError: string | null;
339
- /**
340
- * Contains an error message if an error occurred when querying the server extension.
341
- */
342
- serverConnectionError: string | null;
343
- /**
344
- * Contains an error message if the server has unfulfilled requirements.
345
- */
346
- serverRequirementsError: string | null;
347
- /**
348
- * Whether the model has finished async initialization.
349
- */
350
- initialized: boolean;
351
- /**
352
- * Whether a fresh build should be considered due to actions taken.
353
- */
354
- promptBuild: boolean;
355
- /**
356
- * Settings for connecting to the notebook server.
357
- */
358
- protected serverConnectionSettings: ServerConnection.ISettings;
359
- /**
360
- * A helper for performing searches of jupyterlab extensions on the NPM repository.
262
+ * Whether a reload should be considered due to actions taken.
361
263
  */
362
- protected searcher: Searcher;
363
- protected lister: Lister;
264
+ promptReload: boolean;
364
265
  /**
365
266
  * The service manager to use for building.
366
267
  */
367
268
  protected serviceManager: ServiceManager.IManager;
368
269
  protected translator: ITranslator;
369
- private _app;
270
+ private _isDisclaimed;
271
+ private _isEnabled;
272
+ private _isLoadingInstalledExtensions;
273
+ private _isSearching;
370
274
  private _query;
371
275
  private _page;
372
276
  private _pagination;
373
- private _totalEntries;
277
+ private _lastPage;
374
278
  private _installed;
375
- private _searchResult;
279
+ private _lastSearchResult;
376
280
  private _pendingActions;
377
- private _debouncedUpdate;
378
- private _listMode;
379
- private _blockedExtensionsArray;
380
- private _allowedExtensionsArray;
381
- private _totalblockedExtensionsFound;
382
- private _totalallowedExtensionsFound;
281
+ private _debouncedSearch;
383
282
  }
384
283
  /**
385
284
  * ListModel statics.
@@ -391,6 +290,4 @@ export declare namespace ListModel {
391
290
  * @param entry The entry to check.
392
291
  */
393
292
  function entryHasUpdate(entry: IEntry): boolean;
394
- function isDisclaimed(): boolean;
395
- function toogleDisclaimed(): void;
396
293
  }