File tree Expand file tree Collapse file tree 4 files changed +71
-3
lines changed Expand file tree Collapse file tree 4 files changed +71
-3
lines changed Original file line number Diff line number Diff line change 5656 "watch:labextension" : " jupyter labextension watch ."
5757 },
5858 "dependencies" : {
59- "@jupyterlab/application" : " ^4.0.0"
59+ "@jupyterlab/application" : " ^4.0.0" ,
60+ "@jupyterlab/statedb" :" ^4.0.0" ,
61+ "@lumino/coreutils" : " ^2.1.2"
6062 },
6163 "devDependencies" : {
6264 "@jupyterlab/builder" : " ^4.0.0" ,
Original file line number Diff line number Diff line change @@ -2,17 +2,26 @@ import {
22 JupyterFrontEnd ,
33 JupyterFrontEndPlugin
44} from '@jupyterlab/application' ;
5+ import { SecretsManager } from './manager' ;
6+ import { ISecretsConnector , ISecretsManager } from './token' ;
57
68/**
79 * Initialization data for the jupyter-secrets-manager extension.
810 */
9- const plugin : JupyterFrontEndPlugin < void > = {
11+ const plugin : JupyterFrontEndPlugin < ISecretsManager > = {
1012 id : 'jupyter-secrets-manager:plugin' ,
1113 description : 'A JupyterLab extension to manage secrets.' ,
1214 autoStart : true ,
13- activate : ( app : JupyterFrontEnd ) => {
15+ provides : ISecretsManager ,
16+ requires : [ ISecretsConnector ] ,
17+ activate : (
18+ app : JupyterFrontEnd ,
19+ connector : ISecretsConnector
20+ ) : ISecretsManager => {
1421 console . log ( 'JupyterLab extension jupyter-secrets-manager is activated!' ) ;
22+ return new SecretsManager ( { connector } ) ;
1523 }
1624} ;
1725
26+ export * from './token' ;
1827export default plugin ;
Original file line number Diff line number Diff line change 1+ import { ISecret , ISecretsConnector , ISecretsManager } from './token' ;
2+
3+ export namespace SecretsManager {
4+ export interface IOptions {
5+ connector : ISecretsConnector ;
6+ }
7+ }
8+ export class SecretsManager implements ISecretsManager {
9+ constructor ( options : SecretsManager . IOptions ) {
10+ this . _connector = options . connector ;
11+ }
12+
13+ async get ( id : string ) : Promise < ISecret | undefined > {
14+ return this . _connector . fetch ( id ) ;
15+ }
16+
17+ async set ( secret : ISecret ) : Promise < void > {
18+ this . _connector . save ( secret . id , secret ) ;
19+ }
20+
21+ async remove ( id : string ) : Promise < void > {
22+ this . _connector . remove ( id ) ;
23+ }
24+
25+ async list ( namespace : string ) : Promise < string [ ] > {
26+ return ( await this . _connector . list ( namespace ) ) . ids ;
27+ }
28+
29+ private _connector : ISecretsConnector ;
30+ }
Original file line number Diff line number Diff line change 1+ import { IDataConnector } from '@jupyterlab/statedb' ;
2+ import { Token } from '@lumino/coreutils' ;
3+
4+ export interface ISecret {
5+ id : string ;
6+ value : string ;
7+ namespace : string ;
8+ }
9+
10+ export interface ISecretsConnector extends IDataConnector < ISecret > { }
11+
12+ export const ISecretsConnector = new Token < ISecretsConnector > (
13+ 'jupyter-secret-manager:connector' ,
14+ 'The secrets manager connector'
15+ ) ;
16+
17+ export interface ISecretsManager {
18+ get ( id : string ) : Promise < ISecret | undefined > ;
19+ set ( secret : ISecret ) : Promise < void > ;
20+ remove ( id : string ) : Promise < void > ;
21+ list ( namespace : string ) : Promise < string [ ] > ;
22+ }
23+
24+ export const ISecretsManager = new Token < ISecretsManager > (
25+ 'jupyter-secret-manager:manager' ,
26+ 'The secrets manager'
27+ ) ;
You can’t perform that action at this time.
0 commit comments