Move protocol client out (#643)

* close

* connection is working

* formatting

* adds all

* formatting

* formatting and changing how features are initialized

* formatting

* changed named of typings file

* update

* updated to use dataprotocol npm

* formatting

* removed unneeded logging

* readd npm shrinkwrap

* still not working

* removed unnecessary codfe

* addressed comments

* readded azure resource provider

* fix capabilities cacheing

* added backwards capat for older protocol

* update shrinkwrap

* update shrinkwrap

* updated shrinkwrap

* fixed tests

* removed dead code

* remove dead code

* fix compile

* remove backcompat stuff

* change location of npm

* vbump sqltools

* merge master

* fix imports

* fix build breaks

* update for sqlops

* update yarn dependencies
This commit is contained in:
Anthony Dresser
2018-02-20 13:38:16 -08:00
committed by GitHub
parent 8a9ee40524
commit 8570910a43
159 changed files with 4421 additions and 7180 deletions

View File

@@ -5,7 +5,7 @@
'use strict';
import * as data from 'data';
import * as sqlops from 'sqlops';
import * as nls from 'vs/nls';
import * as platform from 'vs/platform/registry/common/platform';
import * as statusbar from 'vs/workbench/browser/parts/statusbar/statusbar';
@@ -39,8 +39,8 @@ export class AccountManagementService implements IAccountManagementService {
private _addAccountProviderEmitter: Emitter<AccountProviderAddedEventParams>;
public get addAccountProviderEvent(): Event<AccountProviderAddedEventParams> { return this._addAccountProviderEmitter.event; }
private _removeAccountProviderEmitter: Emitter<data.AccountProviderMetadata>;
public get removeAccountProviderEvent(): Event<data.AccountProviderMetadata> { return this._removeAccountProviderEmitter.event; }
private _removeAccountProviderEmitter: Emitter<sqlops.AccountProviderMetadata>;
public get removeAccountProviderEvent(): Event<sqlops.AccountProviderMetadata> { return this._removeAccountProviderEmitter.event; }
private _updateAccountListEmitter: Emitter<UpdateAccountListEventParams>;
public get updateAccountListEvent(): Event<UpdateAccountListEventParams> { return this._updateAccountListEmitter.event; }
@@ -61,7 +61,7 @@ export class AccountManagementService implements IAccountManagementService {
// Setup the event emitters
this._addAccountProviderEmitter = new Emitter<AccountProviderAddedEventParams>();
this._removeAccountProviderEmitter = new Emitter<data.AccountProviderMetadata>();
this._removeAccountProviderEmitter = new Emitter<sqlops.AccountProviderMetadata>();
this._updateAccountListEmitter = new Emitter<UpdateAccountListEventParams>();
// Register status bar item
@@ -87,7 +87,7 @@ export class AccountManagementService implements IAccountManagementService {
* account's properties have been updated (usually when the account goes stale).
* @param {Account} updatedAccount Account with the updated properties
*/
public accountUpdated(updatedAccount: data.Account): Thenable<void> {
public accountUpdated(updatedAccount: sqlops.Account): Thenable<void> {
let self = this;
// 1) Update the account in the store
@@ -155,7 +155,7 @@ export class AccountManagementService implements IAccountManagementService {
* @param {Account} account account to refresh
* @return {Thenable<Account>} Promise to return an account
*/
public refreshAccount(account: data.Account): Thenable<data.Account> {
public refreshAccount(account: sqlops.Account): Thenable<sqlops.Account> {
let self = this;
return this.doWithProvider(account.key.providerId, (provider) => {
@@ -186,7 +186,7 @@ export class AccountManagementService implements IAccountManagementService {
* Retrieves metadata of all providers that have been registered
* @returns {Thenable<AccountProviderMetadata[]>} Registered account providers
*/
public getAccountProviderMetadata(): Thenable<data.AccountProviderMetadata[]> {
public getAccountProviderMetadata(): Thenable<sqlops.AccountProviderMetadata[]> {
return Promise.resolve(Object.values(this._providers).map(provider => provider.metadata));
}
@@ -195,7 +195,7 @@ export class AccountManagementService implements IAccountManagementService {
* @param {string} providerId ID of the provider the returned accounts belong to
* @returns {Thenable<Account[]>} Promise to return a list of accounts
*/
public getAccountsForProvider(providerId: string): Thenable<data.Account[]> {
public getAccountsForProvider(providerId: string): Thenable<sqlops.Account[]> {
let self = this;
// Make sure the provider exists before attempting to retrieve accounts
@@ -219,7 +219,7 @@ export class AccountManagementService implements IAccountManagementService {
* @param {Account} account Account to generate security token for
* @return {Thenable<{}>} Promise to return the security token
*/
public getSecurityToken(account: data.Account): Thenable<{}> {
public getSecurityToken(account: sqlops.Account): Thenable<{}> {
return this.doWithProvider(account.key.providerId, provider => {
return provider.provider.getSecurityToken(account);
});
@@ -231,7 +231,7 @@ export class AccountManagementService implements IAccountManagementService {
* @returns {Thenable<void>} Promise with result of account removal, true if account was
* removed, false otherwise.
*/
public removeAccount(accountKey: data.AccountKey): Thenable<boolean> {
public removeAccount(accountKey: sqlops.AccountKey): Thenable<boolean> {
let self = this;
// Step 1) Remove the account
@@ -309,8 +309,8 @@ export class AccountManagementService implements IAccountManagementService {
public cancelAutoOAuthDeviceCode(providerId: string): void {
this.doWithProvider(providerId, provider => provider.provider.autoOAuthCancelled())
.then( // Swallow errors
null,
err => { console.warn(`Error when cancelling auto OAuth: ${err}`); }
null,
err => { console.warn(`Error when cancelling auto OAuth: ${err}`); }
)
.then(() => this.autoOAuthDialogController.closeAutoOAuthDialog());
}
@@ -326,10 +326,10 @@ export class AccountManagementService implements IAccountManagementService {
// SERVICE MANAGEMENT METHODS //////////////////////////////////////////
/**
* Called by main thread to register an account provider from extension
* @param {data.AccountProviderMetadata} providerMetadata Metadata of the provider that is being registered
* @param {data.AccountProvider} provider References to the methods of the provider
* @param {sqlops.AccountProviderMetadata} providerMetadata Metadata of the provider that is being registered
* @param {sqlops.AccountProvider} provider References to the methods of the provider
*/
public registerProvider(providerMetadata: data.AccountProviderMetadata, provider: data.AccountProvider): Thenable<void> {
public registerProvider(providerMetadata: sqlops.AccountProviderMetadata, provider: sqlops.AccountProvider): Thenable<void> {
let self = this;
// Store the account provider
@@ -346,10 +346,10 @@ export class AccountManagementService implements IAccountManagementService {
// 4) Write the accounts back to the store
// 5) Fire the event to let folks know we have another account provider now
return this._accountStore.getAccountsByProvider(providerMetadata.id)
.then((accounts: data.Account[]) => {
.then((accounts: sqlops.Account[]) => {
return provider.initialize(accounts);
})
.then((accounts: data.Account[]) => {
.then((accounts: sqlops.Account[]) => {
self._providers[providerMetadata.id].accounts = accounts;
let writePromises = accounts.map(account => {
return self._accountStore.addOrUpdate(account);
@@ -376,7 +376,7 @@ export class AccountManagementService implements IAccountManagementService {
}
}
public unregisterProvider(providerMetadata: data.AccountProviderMetadata): void {
public unregisterProvider(providerMetadata: sqlops.AccountProviderMetadata): void {
// Delete this account provider
delete this._providers[providerMetadata.id];
@@ -400,7 +400,7 @@ export class AccountManagementService implements IAccountManagementService {
private fireAccountListUpdate(provider: AccountProviderWithMetadata, sort: boolean) {
// Step 1) Get and sort the list
if (sort) {
provider.accounts.sort((a: data.Account, b: data.Account) => {
provider.accounts.sort((a: sqlops.Account, b: sqlops.Account) => {
if (a.displayInfo.displayName < b.displayInfo.displayName) {
return -1;
}
@@ -419,7 +419,7 @@ export class AccountManagementService implements IAccountManagementService {
this._updateAccountListEmitter.fire(eventArg);
}
private spliceModifiedAccount(provider: AccountProviderWithMetadata, modifiedAccount: data.Account) {
private spliceModifiedAccount(provider: AccountProviderWithMetadata, modifiedAccount: sqlops.Account) {
// Find the updated account and splice the updated one in
let indexToRemove: number = provider.accounts.findIndex(account => {
return account.key.accountId === modifiedAccount.key.accountId;
@@ -434,7 +434,7 @@ export class AccountManagementService implements IAccountManagementService {
* Joins together an account provider, its metadata, and its accounts, used in the provider list
*/
export interface AccountProviderWithMetadata {
metadata: data.AccountProviderMetadata;
provider: data.AccountProvider;
accounts: data.Account[];
metadata: sqlops.AccountProviderMetadata;
provider: sqlops.AccountProvider;
accounts: sqlops.Account[];
}

View File

@@ -5,7 +5,7 @@
'use strict';
import * as data from 'data';
import * as sqlops from 'sqlops';
import { AccountAdditionResult } from 'sql/services/accountManagement/eventTypes';
import { IAccountStore } from 'sql/services/accountManagement/interfaces';
@@ -19,7 +19,7 @@ export default class AccountStore implements IAccountStore {
constructor(private _memento: object) { }
// PUBLIC METHODS //////////////////////////////////////////////////////
public addOrUpdate(newAccount: data.Account): Thenable<AccountAdditionResult> {
public addOrUpdate(newAccount: sqlops.Account): Thenable<AccountAdditionResult> {
let self = this;
return this.doOperation(() => {
@@ -36,7 +36,7 @@ export default class AccountStore implements IAccountStore {
});
}
public getAccountsByProvider(providerId: string): Thenable<data.Account[]> {
public getAccountsByProvider(providerId: string): Thenable<sqlops.Account[]> {
let self = this;
return this.doOperation(() => {
@@ -45,7 +45,7 @@ export default class AccountStore implements IAccountStore {
});
}
public getAllAccounts(): Thenable<data.Account[]> {
public getAllAccounts(): Thenable<sqlops.Account[]> {
let self = this;
return this.doOperation(() => {
@@ -53,7 +53,7 @@ export default class AccountStore implements IAccountStore {
});
}
public remove(key: data.AccountKey): Thenable<boolean> {
public remove(key: sqlops.AccountKey): Thenable<boolean> {
let self = this;
return this.doOperation(() => {
@@ -64,7 +64,7 @@ export default class AccountStore implements IAccountStore {
});
}
public update(key: data.AccountKey, updateOperation: (account: data.Account) => void): Thenable<boolean> {
public update(key: sqlops.AccountKey, updateOperation: (account: sqlops.Account) => void): Thenable<boolean> {
let self = this;
return this.doOperation(() => {
@@ -76,12 +76,12 @@ export default class AccountStore implements IAccountStore {
}
// PRIVATE METHODS /////////////////////////////////////////////////////
private static findAccountByKey(key1: data.AccountKey, key2: data.AccountKey): boolean {
private static findAccountByKey(key1: sqlops.AccountKey, key2: sqlops.AccountKey): boolean {
// Provider ID and Account ID must match
return key1.providerId === key2.providerId && key1.accountId === key2.accountId;
}
private static mergeAccounts(source: data.Account, target: data.Account): void {
private static mergeAccounts(source: sqlops.Account, target: sqlops.Account): void {
// Take any display info changes
target.displayInfo = source.displayInfo;
@@ -109,7 +109,7 @@ export default class AccountStore implements IAccountStore {
return <Promise<T>>this._activeOperation;
}
private addToAccountList(accounts: data.Account[], accountToAdd: data.Account): AccountListOperationResult {
private addToAccountList(accounts: sqlops.Account[], accountToAdd: sqlops.Account): AccountListOperationResult {
// Check if the entry already exists
let match = accounts.findIndex(account => AccountStore.findAccountByKey(account.key, accountToAdd.key));
if (match >= 0) {
@@ -134,7 +134,7 @@ export default class AccountStore implements IAccountStore {
};
}
private removeFromAccountList(accounts: data.Account[], accountToRemove: data.AccountKey): AccountListOperationResult {
private removeFromAccountList(accounts: sqlops.Account[], accountToRemove: sqlops.AccountKey): AccountListOperationResult {
// Check if the entry exists
let match = accounts.findIndex(account => AccountStore.findAccountByKey(account.key, accountToRemove));
if (match >= 0) {
@@ -151,7 +151,7 @@ export default class AccountStore implements IAccountStore {
};
}
private updateAccountList(accounts: data.Account[], accountToUpdate: data.AccountKey, updateOperation: (account: data.Account) => void): AccountListOperationResult {
private updateAccountList(accounts: sqlops.Account[], accountToUpdate: sqlops.AccountKey, updateOperation: (account: sqlops.Account) => void): AccountListOperationResult {
// Check if the entry exists
let match = accounts.findIndex(account => AccountStore.findAccountByKey(account.key, accountToUpdate));
if (match < 0) {
@@ -178,7 +178,7 @@ export default class AccountStore implements IAccountStore {
}
// MEMENTO IO METHODS //////////////////////////////////////////////////
private readFromMemento(): Thenable<data.Account[]> {
private readFromMemento(): Thenable<sqlops.Account[]> {
// Initialize the account list if it isn't already
let accounts = this._memento[AccountStore.MEMENTO_KEY];
if (!accounts) {
@@ -191,7 +191,7 @@ export default class AccountStore implements IAccountStore {
return Promise.resolve(accounts);
}
private writeToMemento(accounts: data.Account[]): Thenable<void> {
private writeToMemento(accounts: sqlops.Account[]): Thenable<void> {
// Store a shallow copy of the account list to disconnect the memento list from the active list
this._memento[AccountStore.MEMENTO_KEY] = JSON.parse(JSON.stringify(accounts));
return Promise.resolve();
@@ -200,5 +200,5 @@ export default class AccountStore implements IAccountStore {
interface AccountListOperationResult extends AccountAdditionResult {
accountRemoved: boolean;
updatedAccounts: data.Account[];
updatedAccounts: sqlops.Account[];
}

View File

@@ -5,7 +5,7 @@
'use strict';
import * as data from 'data';
import * as sqlops from 'sqlops';
/**
* Result from calling add/update on the account store
@@ -24,7 +24,7 @@ export interface AccountAdditionResult {
/**
* The account that was added/updated (with any updates applied)
*/
changedAccount: data.Account;
changedAccount: sqlops.Account;
}
/**
@@ -34,12 +34,12 @@ export interface AccountProviderAddedEventParams {
/**
* The provider that was registered
*/
addedProvider: data.AccountProviderMetadata;
addedProvider: sqlops.AccountProviderMetadata;
/**
* The accounts that were rehydrated with the provider
*/
initialAccounts: data.Account[];
initialAccounts: sqlops.Account[];
}
/**
@@ -54,5 +54,5 @@ export interface UpdateAccountListEventParams {
/**
* Updated list of accounts, sorted appropriately
*/
accountList: data.Account[];
accountList: sqlops.Account[];
}

View File

@@ -5,7 +5,7 @@
'use strict';
import * as data from 'data';
import * as sqlops from 'sqlops';
import Event from 'vs/base/common/event';
import { AccountAdditionResult, AccountProviderAddedEventParams, UpdateAccountListEventParams } from 'sql/services/accountManagement/eventTypes';
import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
@@ -18,13 +18,13 @@ export interface IAccountManagementService {
_serviceBrand: any;
// ACCOUNT MANAGEMENT METHODS //////////////////////////////////////////
accountUpdated(account: data.Account): Thenable<void>;
accountUpdated(account: sqlops.Account): Thenable<void>;
addAccount(providerId: string): Thenable<void>;
getAccountProviderMetadata(): Thenable<data.AccountProviderMetadata[]>;
getAccountsForProvider(providerId: string): Thenable<data.Account[]>;
getSecurityToken(account: data.Account): Thenable<{}>;
removeAccount(accountKey: data.AccountKey): Thenable<boolean>;
refreshAccount(account: data.Account): Thenable<data.Account>;
getAccountProviderMetadata(): Thenable<sqlops.AccountProviderMetadata[]>;
getAccountsForProvider(providerId: string): Thenable<sqlops.Account[]>;
getSecurityToken(account: sqlops.Account): Thenable<{}>;
removeAccount(accountKey: sqlops.AccountKey): Thenable<boolean>;
refreshAccount(account: sqlops.Account): Thenable<sqlops.Account>;
// UI METHODS //////////////////////////////////////////////////////////
openAccountListDialog(): Thenable<void>;
@@ -34,13 +34,13 @@ export interface IAccountManagementService {
copyUserCodeAndOpenBrowser(userCode: string, uri: string): void;
// SERVICE MANAGEMENT METHODS /////////////////////////////////////////
registerProvider(providerMetadata: data.AccountProviderMetadata, provider: data.AccountProvider): void;
registerProvider(providerMetadata: sqlops.AccountProviderMetadata, provider: sqlops.AccountProvider): void;
shutdown(): void;
unregisterProvider(providerMetadata: data.AccountProviderMetadata): void;
unregisterProvider(providerMetadata: sqlops.AccountProviderMetadata): void;
// EVENTING ////////////////////////////////////////////////////////////
readonly addAccountProviderEvent: Event<AccountProviderAddedEventParams>;
readonly removeAccountProviderEvent: Event<data.AccountProviderMetadata>;
readonly removeAccountProviderEvent: Event<sqlops.AccountProviderMetadata>;
readonly updateAccountListEvent: Event<UpdateAccountListEventParams>;
}
@@ -50,20 +50,20 @@ export interface IAccountStore {
* @param {Account} account Account to add/update
* @return {Thenable<AccountAdditionResult>} Results of the add/update operation
*/
addOrUpdate(account: data.Account): Thenable<AccountAdditionResult>;
addOrUpdate(account: sqlops.Account): Thenable<AccountAdditionResult>;
/**
* Retrieves all accounts, filtered by provider ID
* @param {string} providerId ID of the provider to filter by
* @return {Thenable<Account[]>} Promise to return all accounts that belong to the provided provider
*/
getAccountsByProvider(providerId: string): Thenable<data.Account[]>;
getAccountsByProvider(providerId: string): Thenable<sqlops.Account[]>;
/**
* Retrieves all accounts in the store. Returns empty array if store is not initialized
* @return {Thenable<Account[]>} Promise to return all accounts
*/
getAllAccounts(): Thenable<data.Account[]>;
getAllAccounts(): Thenable<sqlops.Account[]>;
/**
* Removes an account.
@@ -72,7 +72,7 @@ export interface IAccountStore {
* @param key - The key of an account.
* @returns True if the account was removed, false if the account doesn't exist
*/
remove(key: data.AccountKey): Thenable<boolean>;
remove(key: sqlops.AccountKey): Thenable<boolean>;
/**
* Updates the custom properties stored with an account.
@@ -82,5 +82,5 @@ export interface IAccountStore {
* @param updateOperation - Operation to perform on the matching account
* @returns True if the account was modified, false if the account doesn't exist
*/
update(key: data.AccountKey, updateOperation: (account: data.Account) => void): Thenable<boolean>;
update(key: sqlops.AccountKey, updateOperation: (account: sqlops.Account) => void): Thenable<boolean>;
}