mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-12 19:18:32 -05:00
* Fix initial build breaks from 1.67 merge (#2514) * Update yarn lock files * Update build scripts * Fix tsconfig * Build breaks * WIP * Update yarn lock files * Misc breaks * Updates to package.json * Breaks * Update yarn * Fix breaks * Breaks * Build breaks * Breaks * Breaks * Breaks * Breaks * Breaks * Missing file * Breaks * Breaks * Breaks * Breaks * Breaks * Fix several runtime breaks (#2515) * Missing files * Runtime breaks * Fix proxy ordering issue * Remove commented code * Fix breaks with opening query editor * Fix post merge break * Updates related to setup build and other breaks (#2516) * Fix bundle build issues * Update distro * Fix distro merge and update build JS files * Disable pipeline steps * Remove stats call * Update license name * Make new RPM dependencies a warning * Fix extension manager version checks * Update JS file * Fix a few runtime breaks * Fixes * Fix runtime issues * Fix build breaks * Update notebook tests (part 1) * Fix broken tests * Linting errors * Fix hygiene * Disable lint rules * Bump distro * Turn off smoke tests * Disable integration tests * Remove failing "activate" test * Remove failed test assertion * Disable other broken test * Disable query history tests * Disable extension unit tests * Disable failing tasks
85 lines
3.1 KiB
TypeScript
85 lines
3.1 KiB
TypeScript
/*---------------------------------------------------------------------------------------------
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
|
*--------------------------------------------------------------------------------------------*/
|
|
|
|
import { Event } from 'vs/base/common/event';
|
|
import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
|
|
|
|
export const ICredentialsService = createDecorator<ICredentialsService>('credentialsService');
|
|
|
|
export interface ICredentialsProvider {
|
|
getPassword(service: string, account: string): Promise<string | null>;
|
|
setPassword(service: string, account: string, password: string): Promise<void>;
|
|
deletePassword(service: string, account: string): Promise<boolean>;
|
|
findPassword(service: string): Promise<string | null>;
|
|
findCredentials(service: string): Promise<Array<{ account: string; password: string }>>;
|
|
clear?(): Promise<void>;
|
|
}
|
|
|
|
export interface ICredentialsChangeEvent {
|
|
service: string;
|
|
account: string;
|
|
}
|
|
|
|
export interface ICredentialsService extends ICredentialsProvider {
|
|
readonly _serviceBrand: undefined;
|
|
readonly onDidChangePassword: Event<ICredentialsChangeEvent>;
|
|
|
|
/*
|
|
* Each CredentialsService must provide a prefix that will be used
|
|
* by the SecretStorage API when storing secrets.
|
|
* This is a method that returns a Promise so that it can be defined in
|
|
* the main process and proxied on the renderer side.
|
|
*/
|
|
getSecretStoragePrefix(): Promise<string>;
|
|
}
|
|
|
|
export const ICredentialsMainService = createDecorator<ICredentialsMainService>('credentialsMainService');
|
|
|
|
export interface ICredentialsMainService extends ICredentialsService { }
|
|
|
|
interface ISecretVault {
|
|
[service: string]: { [account: string]: string } | undefined;
|
|
}
|
|
|
|
export class InMemoryCredentialsProvider implements ICredentialsProvider {
|
|
private secretVault: ISecretVault = {};
|
|
|
|
async getPassword(service: string, account: string): Promise<string | null> {
|
|
return this.secretVault[service]?.[account] ?? null;
|
|
}
|
|
|
|
async setPassword(service: string, account: string, password: string): Promise<void> {
|
|
this.secretVault[service] = this.secretVault[service] ?? {};
|
|
this.secretVault[service]![account] = password;
|
|
}
|
|
|
|
async deletePassword(service: string, account: string): Promise<boolean> {
|
|
if (!this.secretVault[service]?.[account]) {
|
|
return false;
|
|
}
|
|
delete this.secretVault[service]![account];
|
|
if (Object.keys(this.secretVault[service]!).length === 0) {
|
|
delete this.secretVault[service];
|
|
}
|
|
return true;
|
|
}
|
|
|
|
async findPassword(service: string): Promise<string | null> {
|
|
return JSON.stringify(this.secretVault[service]) ?? null;
|
|
}
|
|
|
|
async findCredentials(service: string): Promise<Array<{ account: string; password: string }>> {
|
|
const credentials: { account: string; password: string }[] = [];
|
|
for (const account of Object.keys(this.secretVault[service] || {})) {
|
|
credentials.push({ account, password: this.secretVault[service]![account] });
|
|
}
|
|
return credentials;
|
|
}
|
|
|
|
async clear(): Promise<void> {
|
|
this.secretVault = {};
|
|
}
|
|
}
|