From cc45df2b3865deec8bae6308f6951031e6a506ca Mon Sep 17 00:00:00 2001 From: Katelyn Nienaber Date: Fri, 17 Jul 2020 17:02:06 +0200 Subject: [PATCH 01/17] WIP Signed-off-by: Katelyn Nienaber --- __tests__/__unit__/extension.unit.test.ts | 1 + i18n/sample/package.i18n.json | 1 + i18n/sample/src/dataset/actions.i18n.json | 13 +- package.json | 16 +- package.nls.json | 1 + src/api/IZoweTree.ts | 2 +- src/api/ZoweExplorerApi.ts | 26 ++++ src/api/ZoweExplorerZosmfApi.ts | 10 ++ src/dataset/DatasetTree.ts | 11 +- src/dataset/actions.ts | 180 +++++++++++++++++----- src/extension.ts | 1 + src/uss/USSTree.ts | 2 +- 12 files changed, 214 insertions(+), 50 deletions(-) diff --git a/__tests__/__unit__/extension.unit.test.ts b/__tests__/__unit__/extension.unit.test.ts index f8d44f2664..c321f8dab8 100644 --- a/__tests__/__unit__/extension.unit.test.ts +++ b/__tests__/__unit__/extension.unit.test.ts @@ -110,6 +110,7 @@ async function createGlobalMocks() { "zowe.createMember", "zowe.deleteDataset", "zowe.deletePDS", + "zowe.allocateLike", "zowe.uploadDialog", "zowe.deleteMember", "zowe.editMember", diff --git a/i18n/sample/package.i18n.json b/i18n/sample/package.i18n.json index cdab571fed..b3358daa0b 100644 --- a/i18n/sample/package.i18n.json +++ b/i18n/sample/package.i18n.json @@ -19,6 +19,7 @@ "deleteDataset": "Delete Data Set", "deleteMember": "Delete Member", "deletePDS": "Delete PDS", + "allocateLike": "Allocate Like", "editMember": "Edit", "issueCmd": "Issue Command", "uploadDialog": "Upload Member...", diff --git a/i18n/sample/src/dataset/actions.i18n.json b/i18n/sample/src/dataset/actions.i18n.json index f6f53f5795..24b7ff91f3 100644 --- a/i18n/sample/src/dataset/actions.i18n.json +++ b/i18n/sample/src/dataset/actions.i18n.json @@ -1,23 +1,28 @@ { + "allocateLike.options.prompt": "Select a data set from which to copy attributes", + "allocateLike.noneLoaded": "No items are loaded in the tree.", + "allocateLike.noSelection": "You must select a data set.", + "allocateLike.enterPattern": "Enter a name for the new data set", + "createMember.log.error": "Error encountered when creating member! ", + "createMember.error": "Unable to create member: ", + "createDataSet.log.error": "Error encountered when creating data set! ", + "createDataSet.error": "Error encountered when creating data set! ", "enterPattern.pattern": "You must enter a pattern.", "createMember.inputBox": "Name of Member", "createMember.log.debug.createNewDataSet": "creating new data set member of name ", - "createMember.log.error": "Error encountered when creating member! ", - "createMember.error": "Unable to create member: ", "openPS.invalidNode": "openPS() called from invalid node.", "openPS.error.invalidNode": "openPS() called from invalid node. ", "openPS.log.debug.openDataSet": "opening physical sequential data set from label ", "openPS.log.error.openDataSet": "Error encountered when opening data set! ", - "createFile.quickPickOption.dataSetType": "Type of Data Set to be Created", "createFile.dataSetBinary": "Data Set Binary", "createFile.dataSetC": "Data Set C", "createFile.dataSetClassic": "Data Set Classic", "createFile.dataSetPartitioned": "Data Set Partitioned", "createFile.dataSetSequential": "Data Set Sequential", + "createFile.quickPickOption.dataSetType": "Type of Data Set to be Created", "createFile.log.debug.noValidTypeSelected": "No valid data type selected", "createFile.log.debug.creatingNewDataSet": "Creating new data set", "dataset.name": "Name of Data Set", - "createDataSet.error": "Error encountered when creating data set! ", "showDSAttributes.debug": "showing attributes of data set ", "showDSAttributes.lengthError": "No matching data set names found for query: ", "showDSAttributes.log.error": "Error encountered when listing attributes! ", diff --git a/package.json b/package.json index 6529aaf2ea..b83f3737c2 100644 --- a/package.json +++ b/package.json @@ -183,6 +183,10 @@ "command": "zowe.deletePDS", "title": "%deletePDS%" }, + { + "command": "zowe.allocateLike", + "title": "%allocateLike%" + }, { "command": "zowe.uploadDialog", "title": "%uploadDialog%" @@ -745,15 +749,20 @@ "command": "zowe.removeSavedSearch", "group": "5_workspace@3" }, + { + "when": "view == zowe.explorer && viewItem =~ /^(member|ds|pds).*/", + "command": "zowe.allocateLike", + "group": "6_cutCopyPaste@0" + }, { "when": "view == zowe.explorer && viewItem =~ /^(member|ds).*/", "command": "zowe.copyDataSet", - "group": "6_cutCopyPaste@0" + "group": "6_cutCopyPaste@1" }, { "when": "view == zowe.explorer && viewItem =~ /^(ds.*|^pds.*)/", "command": "zowe.pasteDataSet", - "group": "6_cutCopyPaste@1" + "group": "6_cutCopyPaste@2" }, { "when": "view == zowe.explorer && viewItem =~ /^(?!.*_fav.*)session.*/", @@ -936,6 +945,9 @@ "command": "zowe.deletePDS", "when": "never" }, + { + "command": "zowe.allocateLike" + }, { "command": "zowe.deleteMember", "when": "never" diff --git a/package.nls.json b/package.nls.json index b7cbaef150..b55a02cef9 100644 --- a/package.nls.json +++ b/package.nls.json @@ -19,6 +19,7 @@ "deleteDataset": "Delete Data Set", "deleteMember": "Delete Member", "deletePDS": "Delete PDS", + "allocateLike": "Allocate Like", "editMember": "Edit", "issueCmd": "Issue Command", "uploadDialog": "Upload Member...", diff --git a/src/api/IZoweTree.ts b/src/api/IZoweTree.ts index 4407e252fb..da4c3ec613 100644 --- a/src/api/IZoweTree.ts +++ b/src/api/IZoweTree.ts @@ -171,7 +171,7 @@ export interface IZoweTree extends vscode.TreeDataProvider { /** * Lets the user open a dataset by filtering the currently-loaded list */ - searchInLoadedItems?(): Promise; + searchInLoadedItems?(nodeToMatch?: string): Promise; /** * Retrieves the vscode tree container */ diff --git a/src/api/ZoweExplorerApi.ts b/src/api/ZoweExplorerApi.ts index 68c11201e1..16dc9ffe00 100644 --- a/src/api/ZoweExplorerApi.ts +++ b/src/api/ZoweExplorerApi.ts @@ -267,6 +267,32 @@ export namespace ZoweExplorerApi { options?: zowe.IUploadOptions ): Promise; + /** + * Allocates a copy of a data set with the specified options. + * + * @param {zowe.CreateDataSetTypeEnum} dataSetType + * @param {string} dataSetName + * @param {Partial} [options] + * @returns {Promise} + */ + allocateLikeDataSet( + dataSetType: zowe.CreateDataSetTypeEnum, + dataSetName: string, + options?: Partial + ): Promise; + + /** + * Allocates a copy of a data set member with given name. + * + * @param {string} dataSetName + * @param {zowe.IUploadOptions} [options] + * @returns {Promise} + */ + allocateLikeDataSetMember( + dataSetName: string, + options?: zowe.IUploadOptions + ): Promise; + /** * Copies a data set member. * diff --git a/src/api/ZoweExplorerZosmfApi.ts b/src/api/ZoweExplorerZosmfApi.ts index f63f5cb45e..109a241575 100644 --- a/src/api/ZoweExplorerZosmfApi.ts +++ b/src/api/ZoweExplorerZosmfApi.ts @@ -170,6 +170,16 @@ export class ZosmfMvsApi extends ZosmfApiCommon implements ZoweExplorerApi.IMvs return zowe.Upload.bufferToDataSet(this.getSession(), Buffer.from(""), dataSetName, options); } + public async allocateLikeDataSet(dataSetType: zowe.CreateDataSetTypeEnum, dataSetName: string, options?: Partial + ): Promise { + return zowe.Create.dataSet(this.getSession(), dataSetType, dataSetName, options); + } + + public async allocateLikeDataSetMember(dataSetName: string, options?: zowe.IUploadOptions + ): Promise { + return zowe.Upload.bufferToDataSet(this.getSession(), Buffer.from(""), dataSetName, options); + } + public async copyDataSetMember( { dataSetName: fromDataSetName, memberName: fromMemberName }: zowe.IDataSet, { dataSetName: toDataSetName, memberName: toMemberName }: zowe.IDataSet, diff --git a/src/dataset/DatasetTree.ts b/src/dataset/DatasetTree.ts index 6c8ec72d40..0e75715307 100644 --- a/src/dataset/DatasetTree.ts +++ b/src/dataset/DatasetTree.ts @@ -26,6 +26,7 @@ import * as fs from "fs"; import * as contextually from "../shared/context"; import { closeOpenedTextFile } from "../utils/workspace"; import * as nls from "vscode-nls"; +import { ZoweTreeNode } from "../abstract/ZoweTreeNode"; // Set up localization nls.config({ messageFormat: nls.MessageFormat.bundle, bundleFormat: nls.BundleFormat.standalone })(); @@ -515,7 +516,7 @@ export class DatasetTree extends ZoweTreeProvider implements IZoweTree { this.log.debug(localize("enterPattern.log.debug.prompt", "Prompting the user to choose a member from the filtered list")); const loadedItems: IZoweDatasetTreeNode[] = []; const sessions = await this.getChildren(); @@ -526,10 +527,14 @@ export class DatasetTree extends ZoweTreeProvider implements IZoweTree, node?: IZoweDatasetTreeNode) { + if (!node) { + const items: IZoweNodeType[] = []; + const qpItems = []; + const quickpick = vscode.window.createQuickPick(); + quickpick.placeholder = localize("allocateLike.options.prompt", "Select a data set from which to copy attributes"); + quickpick.ignoreFocusOut = true; + quickpick.onDidChangeValue(async (value) => { + if (value) { + quickpick.items = filterTreeByString(value, qpItems); + } else { quickpick.items = [...qpItems]; } + }); + + // Get loaded items from Dataset Provider + const newItems = await datasetProvider.searchInLoadedItems(); + items.push(...newItems); + if (items.length === 0) { + vscode.window.showInformationMessage(localize("allocateLike.noneLoaded", "No items are loaded in the tree.")); + return; + } + + let qpItem: vscode.QuickPickItem; + for (const item of items) { + if (contextually.isDsMember(item)) { + qpItem = new FilterItem(`[${item.getSessionNode().label.trim()}]: ${item.getParent().label.trim()}(${item.label.trim()})`, "Data Set Member"); + } else { + qpItem = new FilterItem(`[${item.getSessionNode().label.trim()}]: ${item.label.trim()}`, "Data Set"); + } + qpItems.push(qpItem); + } + quickpick.items = [...qpItems]; + + quickpick.show(); + const oldDS = await resolveQuickPickHelper(quickpick); + if (!oldDS) { + vscode.window.showInformationMessage(localize("allocateLike.noSelection", "You must select a data set.")); + return; + } else { + let strippedLabel = oldDS.label.replace(/\[.*?\]: /, ""); + if (strippedLabel.includes("(")) { + strippedLabel = strippedLabel.substr(strippedLabel.indexOf("("), strippedLabel.indexOf(")")); + } + node = (await datasetProvider.searchInLoadedItems(strippedLabel))[0]; + } + quickpick.dispose(); + } + let newDSName = await vscode.window.showInputBox({ ignoreFocusOut: true, + placeHolder: localize("allocateLike.enterPattern", "Enter a name for the new data set") }); + if (contextually.isDsMember(node)) { + // Allocating a copy of a member + newDSName = `${node.getParent().label}(${newDSName})`; + try { + ZoweExplorerApiRegister.getMvsApi(node.getProfile()).allocateLikeDataSetMember(newDSName); + } catch (err) { + globals.LOG.error(localize("createMember.log.error", "Error encountered when creating member! ") + JSON.stringify(err)); + errorHandling(err, newDSName, localize("createMember.error", "Unable to create member: ") + err.message); + throw (err); + } + } else { + // Allocating a copy of a data set + const dsType = contextually.isPdsNotFav(node) ? zowe.CreateDataSetTypeEnum.DATA_SET_PARTITIONED : zowe.CreateDataSetTypeEnum.DATA_SET_CLASSIC; + const options = this.getDataSetTypeAndOptions(this.getDataSetTypeAsString(dsType)); + try { + await (ZoweExplorerApiRegister.getMvsApi(node.getProfile()).allocateLikeDataSet(dsType, newDSName.toUpperCase(), options.createOptions)); + } catch (err) { + globals.LOG.error(localize("createDataSet.log.error", "Error encountered when creating data set! ") + JSON.stringify(err)); + errorHandling(err, newDSName, localize("createDataSet.error", "Unable to create data set: ") + err.message); + throw (err); + } + } + + // Refresh tree and open new node, if applicable + node.getParent().dirty = true; + datasetProvider.refreshElement(node.getParent()); + if (contextually.isDs(node) || contextually.isDsMember(node)) { + if (newDSName.includes("(")) { + newDSName = newDSName.substr(newDSName.indexOf("("), newDSName.indexOf(")")); + } + openPS( + new ZoweDatasetNode(newDSName, vscode.TreeItemCollapsibleState.None, node.getParent(), null, undefined, undefined, node.getProfile()), + true, datasetProvider); + } + datasetProvider.refresh(); +} + export async function uploadDialog(node: ZoweDatasetNode, datasetProvider: IZoweTree) { const fileOpenOptions = { canSelectFiles: true, @@ -137,12 +226,6 @@ export async function createMember(parent: IZoweDatasetTreeNode, datasetProvider * @param {IZoweDatasetTreeNode} node */ export async function openPS(node: IZoweDatasetTreeNode, previewMember: boolean, datasetProvider?: IZoweTree) { - // let sesNamePrompt: string; - // if (node.contextValue.endsWith(globals.FAV_SUFFIX)) { - // sesNamePrompt = node.getLabel().substring(1, node.getLabel().indexOf("]")); - // } else { - // sesNamePrompt = node.getLabel(); - // } if (datasetProvider) { await datasetProvider.checkCurrentProfile(node); } if (Profiles.getInstance().validProfile === ValidProfileEnum.VALID) { try { @@ -196,6 +279,52 @@ export async function openPS(node: IZoweDatasetTreeNode, previewMember: boolean, } } +export function getDataSetTypeAndOptions(type: string) { + let typeEnum; + let createOptions; + switch (type) { + case localize("createFile.dataSetBinary", "Data Set Binary"): + typeEnum = zowe.CreateDataSetTypeEnum.DATA_SET_BINARY; + createOptions = vscode.workspace.getConfiguration("Zowe-Default-Datasets-Binary"); + break; + case localize("createFile.dataSetC", "Data Set C"): + typeEnum = zowe.CreateDataSetTypeEnum.DATA_SET_C; + createOptions = vscode.workspace.getConfiguration("Zowe-Default-Datasets-C"); + break; + case localize("createFile.dataSetClassic", "Data Set Classic"): + typeEnum = zowe.CreateDataSetTypeEnum.DATA_SET_CLASSIC; + createOptions = vscode.workspace.getConfiguration("Zowe-Default-Datasets-Classic"); + break; + case localize("createFile.dataSetPartitioned", "Data Set Partitioned"): + typeEnum = zowe.CreateDataSetTypeEnum.DATA_SET_PARTITIONED; + createOptions = vscode.workspace.getConfiguration("Zowe-Default-Datasets-PDS"); + break; + case localize("createFile.dataSetSequential", "Data Set Sequential"): + typeEnum = zowe.CreateDataSetTypeEnum.DATA_SET_SEQUENTIAL; + createOptions = vscode.workspace.getConfiguration("Zowe-Default-Datasets-PS"); + break; + } + return { + typeEnum, + createOptions + }; +} + +export function getDataSetTypeAsString(type: zowe.CreateDataSetTypeEnum) { + switch (type) { + case zowe.CreateDataSetTypeEnum.DATA_SET_BINARY: + return "Data Set Binary"; + case zowe.CreateDataSetTypeEnum.DATA_SET_C: + return "Data Set C"; + case zowe.CreateDataSetTypeEnum.DATA_SET_CLASSIC: + return "Data Set Classic"; + case zowe.CreateDataSetTypeEnum.DATA_SET_PARTITIONED: + return "Data Set Partitioned"; + case zowe.CreateDataSetTypeEnum.DATA_SET_SEQUENTIAL: + return "Data Set Sequential"; + } +} + /** * Creates a new file and uploads to the server * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! @@ -218,12 +347,6 @@ export async function createFile(node: IZoweDatasetTreeNode, datasetProvider: IZ localize("createFile.dataSetPartitioned", "Data Set Partitioned"), localize("createFile.dataSetSequential", "Data Set Sequential") ]; - // let sesNamePrompt: string; - // if (node.contextValue.endsWith(globals.FAV_SUFFIX)) { - // sesNamePrompt = node.label.substring(1, node.label.indexOf("]")); - // } else { - // sesNamePrompt = node.label; - // } datasetProvider.checkCurrentProfile(node); if (Profiles.getInstance().validProfile === ValidProfileEnum.VALID) { @@ -236,30 +359,7 @@ export async function createFile(node: IZoweDatasetTreeNode, datasetProvider: IZ globals.LOG.debug(localize("createFile.log.debug.creatingNewDataSet", "Creating new data set")); } - let typeEnum; - let createOptions; - switch (type) { - case localize("createFile.dataSetBinary", "Data Set Binary"): - typeEnum = zowe.CreateDataSetTypeEnum.DATA_SET_BINARY; - createOptions = vscode.workspace.getConfiguration("Zowe-Default-Datasets-Binary"); - break; - case localize("createFile.dataSetC", "Data Set C"): - typeEnum = zowe.CreateDataSetTypeEnum.DATA_SET_C; - createOptions = vscode.workspace.getConfiguration("Zowe-Default-Datasets-C"); - break; - case localize("createFile.dataSetClassic", "Data Set Classic"): - typeEnum = zowe.CreateDataSetTypeEnum.DATA_SET_CLASSIC; - createOptions = vscode.workspace.getConfiguration("Zowe-Default-Datasets-Classic"); - break; - case localize("createFile.dataSetPartitioned", "Data Set Partitioned"): - typeEnum = zowe.CreateDataSetTypeEnum.DATA_SET_PARTITIONED; - createOptions = vscode.workspace.getConfiguration("Zowe-Default-Datasets-PDS"); - break; - case localize("createFile.dataSetSequential", "Data Set Sequential"): - typeEnum = zowe.CreateDataSetTypeEnum.DATA_SET_SEQUENTIAL; - createOptions = vscode.workspace.getConfiguration("Zowe-Default-Datasets-PS"); - break; - } + const typeEnumAndOptions = this.getDataSetTypeAndOptions(type); // get name of data set let name = await vscode.window.showInputBox({placeHolder: localize("dataset.name", "Name of Data Set")}); @@ -267,7 +367,9 @@ export async function createFile(node: IZoweDatasetTreeNode, datasetProvider: IZ name = name.trim().toUpperCase(); try { - await ZoweExplorerApiRegister.getMvsApi(node.getProfile()).createDataSet(typeEnum, name, createOptions); + await ZoweExplorerApiRegister.getMvsApi(node.getProfile()).createDataSet(typeEnumAndOptions.typeEnum, + name, + typeEnumAndOptions.createOptions); node.dirty = true; const theFilter = await datasetProvider.createFilterString(name, node); diff --git a/src/extension.ts b/src/extension.ts index 57e3be8cf9..802fbab8e1 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -194,6 +194,7 @@ function initDatasetProvider(context: vscode.ExtensionContext, datasetProvider: vscode.commands.registerCommand("zowe.createMember", (node) => dsActions.createMember(node, datasetProvider)); vscode.commands.registerCommand("zowe.deleteDataset", (node) => dsActions.deleteDataset(node, datasetProvider)); vscode.commands.registerCommand("zowe.deletePDS", (node) => dsActions.deleteDataset(node, datasetProvider)); + vscode.commands.registerCommand("zowe.allocateLike", (node) => dsActions.allocateLike(datasetProvider, node)); vscode.commands.registerCommand("zowe.uploadDialog", (node) => dsActions.uploadDialog(node, datasetProvider)); vscode.commands.registerCommand("zowe.deleteMember", (node) => dsActions.deleteDataset(node, datasetProvider)); vscode.commands.registerCommand("zowe.editMember", (node) => dsActions.openPS(node, false, datasetProvider)); diff --git a/src/uss/USSTree.ts b/src/uss/USSTree.ts index 3aeb1bd56b..fe43e8e3b9 100644 --- a/src/uss/USSTree.ts +++ b/src/uss/USSTree.ts @@ -284,7 +284,7 @@ export class USSTree extends ZoweTreeProvider implements IZoweTree { if (this.log) { this.log.debug(localize("enterPattern.log.debug.prompt", "Prompting the user to choose a member from the filtered list")); } From 1d9b10a80cd90dbd886789c2da6fa5f69f1b924e Mon Sep 17 00:00:00 2001 From: Katelyn Nienaber Date: Mon, 20 Jul 2020 11:16:13 +0200 Subject: [PATCH 02/17] WIP (Everything done but implementation of Like param in CLI) Signed-off-by: Katelyn Nienaber --- src/dataset/actions.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/dataset/actions.ts b/src/dataset/actions.ts index 06e7afea82..b78bf3b232 100644 --- a/src/dataset/actions.ts +++ b/src/dataset/actions.ts @@ -102,12 +102,12 @@ export async function allocateLike(datasetProvider: IZoweTree Date: Tue, 28 Jul 2020 12:22:16 +0200 Subject: [PATCH 03/17] Ready code for allocate like once the function is merged into the API Signed-off-by: Katelyn Nienaber --- src/api/ZoweExplorerApi.ts | 15 +----- src/api/ZoweExplorerZosmfApi.ts | 10 +--- src/dataset/actions.ts | 84 ++++++++++++--------------------- 3 files changed, 32 insertions(+), 77 deletions(-) diff --git a/src/api/ZoweExplorerApi.ts b/src/api/ZoweExplorerApi.ts index 16dc9ffe00..042153869b 100644 --- a/src/api/ZoweExplorerApi.ts +++ b/src/api/ZoweExplorerApi.ts @@ -276,21 +276,8 @@ export namespace ZoweExplorerApi { * @returns {Promise} */ allocateLikeDataSet( - dataSetType: zowe.CreateDataSetTypeEnum, - dataSetName: string, - options?: Partial - ): Promise; - - /** - * Allocates a copy of a data set member with given name. - * - * @param {string} dataSetName - * @param {zowe.IUploadOptions} [options] - * @returns {Promise} - */ - allocateLikeDataSetMember( dataSetName: string, - options?: zowe.IUploadOptions + likeDataSetName: string ): Promise; /** diff --git a/src/api/ZoweExplorerZosmfApi.ts b/src/api/ZoweExplorerZosmfApi.ts index 109a241575..be75018c00 100644 --- a/src/api/ZoweExplorerZosmfApi.ts +++ b/src/api/ZoweExplorerZosmfApi.ts @@ -170,14 +170,8 @@ export class ZosmfMvsApi extends ZosmfApiCommon implements ZoweExplorerApi.IMvs return zowe.Upload.bufferToDataSet(this.getSession(), Buffer.from(""), dataSetName, options); } - public async allocateLikeDataSet(dataSetType: zowe.CreateDataSetTypeEnum, dataSetName: string, options?: Partial - ): Promise { - return zowe.Create.dataSet(this.getSession(), dataSetType, dataSetName, options); - } - - public async allocateLikeDataSetMember(dataSetName: string, options?: zowe.IUploadOptions - ): Promise { - return zowe.Upload.bufferToDataSet(this.getSession(), Buffer.from(""), dataSetName, options); + public async allocateLikeDataSet(dataSetName: string, likeDataSetName: string): Promise { + return zowe.Create.dataSetLike(this.getSession(), dataSetName, likeDataSetName); } public async copyDataSetMember( diff --git a/src/dataset/actions.ts b/src/dataset/actions.ts index b78bf3b232..bad1e01985 100644 --- a/src/dataset/actions.ts +++ b/src/dataset/actions.ts @@ -56,83 +56,57 @@ export async function refreshAll(datasetProvider: IZoweTree, node?: IZoweDatasetTreeNode) { + let profile; + let likeDSName; + + // User called allocateLike from the command palette if (!node) { - const items: IZoweNodeType[] = []; + // The user must choose a session const qpItems = []; const quickpick = vscode.window.createQuickPick(); - quickpick.placeholder = localize("allocateLike.options.prompt", "Select a data set from which to copy attributes"); + quickpick.placeholder = localize("allocateLike.options.prompt", "Select the profile to which the original data set belongs"); quickpick.ignoreFocusOut = true; - quickpick.onDidChangeValue(async (value) => { - if (value) { - quickpick.items = filterTreeByString(value, qpItems); - } else { quickpick.items = [...qpItems]; } - }); - // Get loaded items from Dataset Provider - const newItems = await datasetProvider.searchInLoadedItems(); - items.push(...newItems); - if (items.length === 0) { - vscode.window.showInformationMessage(localize("allocateLike.noneLoaded", "No items are loaded in the tree.")); - return; - } - - let qpItem: vscode.QuickPickItem; - for (const item of items) { - if (contextually.isDsMember(item)) { - qpItem = new FilterItem(`[${item.getSessionNode().label.trim()}]: ${item.getParent().label.trim()}(${item.label.trim()})`, "Data Set Member"); - } else { - qpItem = new FilterItem(`[${item.getSessionNode().label.trim()}]: ${item.label.trim()}`, "Data Set"); - } - qpItems.push(qpItem); - } + for (const session of datasetProvider.mSessionNodes) { qpItems.push(new FilterItem(session.label.trim())); } quickpick.items = [...qpItems]; quickpick.show(); - const oldDS = await resolveQuickPickHelper(quickpick); - if (!oldDS) { + const selection = await resolveQuickPickHelper(quickpick); + if (!selection) { vscode.window.showInformationMessage(localize("allocateLike.noSelection", "You must select a data set.")); return; } else { - let strippedLabel = oldDS.label.replace(/\[.*?\]: /, ""); - if (strippedLabel.includes("(")) { - strippedLabel = strippedLabel.substr(strippedLabel.indexOf("("), strippedLabel.indexOf(")")); - } - node = (await datasetProvider.searchInLoadedItems(strippedLabel))[0]; + const session = datasetProvider.mSessionNodes.find((session) => session.label === selection.label); + profile = session.getProfile(); } quickpick.dispose(); + + // The user must enter the name of a data set to copy + likeDSName = await vscode.window.showInputBox({ ignoreFocusOut: true, + placeHolder: localize("allocateLike.enterLikePattern", "Enter the name of the data set to \"allocate like\" from") }); + } else { + // User called allocateLike by right-clicking a node + profile = node.getProfile(); + likeDSName = node.label; } + + // Get new data set name let newDSName = await vscode.window.showInputBox({ ignoreFocusOut: true, placeHolder: localize("allocateLike.enterPattern", "Enter a name for the new data set") }); - if (contextually.isDsMember(node)) { - // Allocating a copy of a member - newDSName = `${node.getParent().label}(${newDSName})`; - try { - await ZoweExplorerApiRegister.getMvsApi(node.getProfile()).allocateLikeDataSetMember(newDSName); - } catch (err) { - globals.LOG.error(localize("createMember.log.error", "Error encountered when creating member! ") + JSON.stringify(err)); - errorHandling(err, newDSName, localize("createMember.error", "Unable to create member: ") + err.message); - throw (err); - } - } else { - // Allocating a copy of a data set - const dsType = contextually.isPdsNotFav(node) ? zowe.CreateDataSetTypeEnum.DATA_SET_PARTITIONED : zowe.CreateDataSetTypeEnum.DATA_SET_CLASSIC; - let options = this.getDataSetTypeAndOptions(this.getDataSetTypeAsString(dsType)); - try { - await (ZoweExplorerApiRegister.getMvsApi(node.getProfile()).allocateLikeDataSet(dsType, newDSName.toUpperCase(), {like: node.label})); - } catch (err) { - globals.LOG.error(localize("createDataSet.log.error", "Error encountered when creating data set! ") + JSON.stringify(err)); - errorHandling(err, newDSName, localize("createDataSet.error", "Unable to create data set: ") + err.message); - throw (err); - } + + // Allocate the data set, or throw an error + try { + await (ZoweExplorerApiRegister.getMvsApi(profile).allocateLikeDataSet(newDSName.toUpperCase(), likeDSName)); + } catch (err) { + globals.LOG.error(localize("createDataSet.log.error", "Error encountered when creating data set! ") + JSON.stringify(err)); + errorHandling(err, newDSName, localize("createDataSet.error", "Unable to create data set: ") + err.message); + throw (err); } // Refresh tree and open new node, if applicable node.getParent().dirty = true; datasetProvider.refreshElement(node.getParent()); if (contextually.isDs(node) || contextually.isDsMember(node)) { - if (newDSName.includes("(")) { - newDSName = newDSName.match(/(?<=\().*?(?=\))/)[0]; - } openPS( new ZoweDatasetNode(newDSName, vscode.TreeItemCollapsibleState.None, node.getParent(), null, undefined, undefined, node.getProfile()), true, datasetProvider); From 0a5d67c10707785762f68c1bd33770b7a89372fc Mon Sep 17 00:00:00 2001 From: Katelyn Nienaber Date: Fri, 31 Jul 2020 12:07:13 +0200 Subject: [PATCH 04/17] Working copy with unit tests Signed-off-by: Katelyn Nienaber --- .../ZoweExplorerExtender.unit.test.ts | 1 + .../__unit__/dataset/actions.unit.test.ts | 97 ++++++++++++++++++- i18n/sample/src/dataset/actions.i18n.json | 11 ++- src/dataset/actions.ts | 53 +++++----- src/globals.ts | 2 +- 5 files changed, 133 insertions(+), 31 deletions(-) diff --git a/__tests__/__unit__/ZoweExplorerExtender.unit.test.ts b/__tests__/__unit__/ZoweExplorerExtender.unit.test.ts index 853250f64e..880887cf81 100644 --- a/__tests__/__unit__/ZoweExplorerExtender.unit.test.ts +++ b/__tests__/__unit__/ZoweExplorerExtender.unit.test.ts @@ -8,6 +8,7 @@ * Copyright Contributors to the Zowe Project. * * * */ + ​ import * as vscode from "vscode"; import { Profiles } from "../../src/Profiles"; diff --git a/__tests__/__unit__/dataset/actions.unit.test.ts b/__tests__/__unit__/dataset/actions.unit.test.ts index 8c100c6db1..be6e06508b 100644 --- a/__tests__/__unit__/dataset/actions.unit.test.ts +++ b/__tests__/__unit__/dataset/actions.unit.test.ts @@ -15,7 +15,8 @@ import { createBasicZosmfSession, createInstanceOfProfile, createIProfile, createISession, createISessionWithoutCredentials, createTextDocument, - createTreeView + createTreeView, + createQuickPickContent } from "../../../__mocks__/mockCreators/shared"; import { createDatasetAttributes, @@ -56,6 +57,7 @@ function createGlobalMocks() { Object.defineProperty(vscode.workspace, "getConfiguration", { value: jest.fn(), configurable: true }); Object.defineProperty(vscode.window, "showTextDocument", { value: jest.fn(), configurable: true }); Object.defineProperty(vscode.window, "showQuickPick", { value: jest.fn(), configurable: true }); + Object.defineProperty(vscode.window, "createQuickPick", { value: jest.fn(), configurable: true }); Object.defineProperty(vscode.commands, "executeCommand", { value: jest.fn(), configurable: true }); Object.defineProperty(globals, "LOG", { value: jest.fn(), configurable: true }); Object.defineProperty(globals.LOG, "debug", { value: jest.fn(), configurable: true }); @@ -66,6 +68,7 @@ function createGlobalMocks() { Object.defineProperty(zowe.Delete, "dataSet", { value: jest.fn(), configurable: true }); Object.defineProperty(zowe, "Create", { value: jest.fn(), configurable: true }); Object.defineProperty(zowe.Create, "dataSet", { value: jest.fn(), configurable: true }); + Object.defineProperty(zowe.Create, "dataSetLike", { value: jest.fn(), configurable: true }); Object.defineProperty(fs, "unlinkSync", { value: jest.fn(), configurable: true }); Object.defineProperty(fs, "existsSync", { value: jest.fn(), configurable: true }); Object.defineProperty(sharedUtils, "concatChildNodes", { value: jest.fn(), configurable: true }); @@ -1968,3 +1971,95 @@ describe("Dataset Actions Unit Tests - Function openPS", () => { expect(mocked(vscode.workspace.openTextDocument)).toBeCalledWith(sharedUtils.getDocumentFilePath(child.label, child)); }); }); + +describe("Dataset Actions Unit Tests - Function allocateLike", () => { + function createBlockMocks() { + const session = createISession(); + const imperativeProfile = createIProfile(); + const treeView = createTreeView(); + const datasetSessionNode = createDatasetSessionNode(session, imperativeProfile); + const testDatasetTree = createDatasetTree(datasetSessionNode, treeView); + const testNode = new ZoweDatasetNode("nodePDS", vscode.TreeItemCollapsibleState.None, datasetSessionNode, null); + const testSDSNode = new ZoweDatasetNode("nodeSDS", vscode.TreeItemCollapsibleState.None, datasetSessionNode, null); + const profileInstance = createInstanceOfProfile(imperativeProfile); + const mvsApi = createMvsApi(imperativeProfile); + const quickPickItem = new utils.FilterDescriptor(datasetSessionNode.label); + const quickPickContent = createQuickPickContent("", [quickPickItem], ""); + + bindMvsApi(mvsApi); + testNode.contextValue = globals.DS_PDS_CONTEXT; + testSDSNode.contextValue = globals.DS_DS_CONTEXT; + + mocked(vscode.window.createQuickPick).mockReturnValue(quickPickContent); + mocked(Profiles.getInstance).mockReturnValue(profileInstance); + mocked(vscode.window.showInputBox).mockResolvedValue("test"); + testDatasetTree.createFilterString.mockResolvedValue("test"); + jest.spyOn(utils, "resolveQuickPickHelper").mockResolvedValue(quickPickItem); + jest.spyOn(dsActions, "openPS").mockImplementation(() => null); + + return { + session, + treeView, + testNode, + quickPickContent, + testSDSNode, + quickPickItem, + profileInstance, + imperativeProfile, + datasetSessionNode, + mvsApi, + testDatasetTree + }; + } + + it("Tests that allocateLike works if called from the command palette", async () => { + createGlobalMocks(); + const blockMocks = createBlockMocks(); + + const errorHandlingSpy = jest.spyOn(utils, "errorHandling"); + + await dsActions.allocateLike(blockMocks.testDatasetTree); + + expect(errorHandlingSpy).toHaveBeenCalledTimes(0); + expect(blockMocks.quickPickContent.show).toHaveBeenCalledTimes(1); + }); + it("Tests that allocateLike works if called from the context menu", async () => { + createGlobalMocks(); + const blockMocks = createBlockMocks(); + + const errorHandlingSpy = jest.spyOn(utils, "errorHandling"); + + await dsActions.allocateLike(blockMocks.testDatasetTree, blockMocks.testNode); + + expect(errorHandlingSpy).toHaveBeenCalledTimes(0); + expect(blockMocks.quickPickContent.show).toHaveBeenCalledTimes(0); + }); + it("Tests that the dataset filter string is updated on the session, to include the new node's name", async () => { + createGlobalMocks(); + const blockMocks = createBlockMocks(); + + await dsActions.allocateLike(blockMocks.testDatasetTree, blockMocks.testNode); + + expect(blockMocks.datasetSessionNode.pattern).toEqual("TEST"); + }); + it("Tests that allocateLike fails if no profile is selected", async () => { + createGlobalMocks(); + const blockMocks = createBlockMocks(); + + jest.spyOn(utils, "resolveQuickPickHelper").mockResolvedValueOnce(null); + + await dsActions.allocateLike(blockMocks.testDatasetTree); + + expect(mocked(vscode.window.showInformationMessage)).toHaveBeenCalledWith("You must select a profile."); + }); + it("Tests that allocateLike fails if no new dataset name is provided", async () => { + createGlobalMocks(); + const blockMocks = createBlockMocks(); + + mocked(vscode.window.showInputBox).mockResolvedValueOnce(null); + + await dsActions.allocateLike(blockMocks.testDatasetTree, blockMocks.testNode); + + expect(mocked(vscode.window.showInformationMessage)).toHaveBeenCalledWith("You must enter a new data set name."); + }); +}); diff --git a/i18n/sample/src/dataset/actions.i18n.json b/i18n/sample/src/dataset/actions.i18n.json index 24b7ff91f3..ba4a23ea31 100644 --- a/i18n/sample/src/dataset/actions.i18n.json +++ b/i18n/sample/src/dataset/actions.i18n.json @@ -1,15 +1,16 @@ { - "allocateLike.options.prompt": "Select a data set from which to copy attributes", - "allocateLike.noneLoaded": "No items are loaded in the tree.", - "allocateLike.noSelection": "You must select a data set.", + "allocateLike.options.prompt": "Select the profile to which the original data set belongs", + "allocateLike.noSelection": "You must select a profile.", + "allocateLike.enterLikePattern": "Enter the name of the data set to \"allocate like\" from", "allocateLike.enterPattern": "Enter a name for the new data set", - "createMember.log.error": "Error encountered when creating member! ", - "createMember.error": "Unable to create member: ", + "allocateLike.noNewName": "You must enter a new data set name.", "createDataSet.log.error": "Error encountered when creating data set! ", "createDataSet.error": "Error encountered when creating data set! ", "enterPattern.pattern": "You must enter a pattern.", "createMember.inputBox": "Name of Member", "createMember.log.debug.createNewDataSet": "creating new data set member of name ", + "createMember.log.error": "Error encountered when creating member! ", + "createMember.error": "Unable to create member: ", "openPS.invalidNode": "openPS() called from invalid node.", "openPS.error.invalidNode": "openPS() called from invalid node. ", "openPS.log.debug.openDataSet": "opening physical sequential data set from label ", diff --git a/src/dataset/actions.ts b/src/dataset/actions.ts index d68bf0c73a..997221f164 100644 --- a/src/dataset/actions.ts +++ b/src/dataset/actions.ts @@ -58,8 +58,9 @@ export async function refreshAll(datasetProvider: IZoweTree, node?: IZoweDatasetTreeNode) { - let profile; - let likeDSName; + let profile: IProfileLoaded; + let likeDSName: string; + let currSession: IZoweDatasetTreeNode; // User called allocateLike from the command palette if (!node) { @@ -69,23 +70,23 @@ export async function allocateLike(datasetProvider: IZoweTree session.label === selection.label); - profile = session.getProfile(); + currSession = datasetProvider.mSessionNodes.find((thisSession) => thisSession.label === selection.label); + profile = currSession.getProfile(); } quickpick.dispose(); // The user must enter the name of a data set to copy likeDSName = await vscode.window.showInputBox({ ignoreFocusOut: true, - placeHolder: localize("allocateLike.enterLikePattern", "Enter the name of the data set to \"allocate like\" from") }); + placeHolder: localize("allocateLike.enterLikePattern", "Enter the name of the data set to \"allocate like\" from") }); } else { // User called allocateLike by right-clicking a node profile = node.getProfile(); @@ -93,27 +94,31 @@ export async function allocateLike(datasetProvider: IZoweTree thisSession.label === profile.name); } + const theFilter = await datasetProvider.createFilterString(newDSName, currSession); + currSession.tooltip = currSession.pattern = theFilter.toUpperCase(); + datasetProvider.addSearchHistory(theFilter); datasetProvider.refresh(); + currSession.dirty = true; + datasetProvider.refreshElement(currSession); } export async function uploadDialog(node: ZoweDatasetNode, datasetProvider: IZoweTree) { diff --git a/src/globals.ts b/src/globals.ts index be9d7d0bcb..7da1304586 100644 --- a/src/globals.ts +++ b/src/globals.ts @@ -21,7 +21,7 @@ export let USS_DIR; export let DS_DIR; export let ISTHEIA: boolean = false; // set during activate export let LOG: Logger; -export const COMMAND_COUNT = 77; +export const COMMAND_COUNT = 78; export const CONTEXT_PREFIX = "_"; export const FAV_SUFFIX = CONTEXT_PREFIX + "fav"; export const RC_SUFFIX = CONTEXT_PREFIX + "rc="; From 5ae139010f7cde34b638cb39dad2a1b57a552e18 Mon Sep 17 00:00:00 2001 From: Katelyn Nienaber Date: Fri, 31 Jul 2020 12:15:18 +0200 Subject: [PATCH 05/17] Updating CLI Signed-off-by: Katelyn Nienaber --- package-lock.json | 20 ++++++++++---------- package.json | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/package-lock.json b/package-lock.json index 68124433eb..649ca8db18 100644 --- a/package-lock.json +++ b/package-lock.json @@ -677,9 +677,9 @@ "dev": true }, "@types/lodash": { - "version": "4.14.155", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.155.tgz", - "integrity": "sha512-vEcX7S7aPhsBCivxMwAANQburHBtfN9RdyXFk84IJmu2Z4Hkg1tOFgaslRiEqqvoLtbCBi6ika1EMspE+NZ9Lg==" + "version": "4.14.158", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.158.tgz", + "integrity": "sha512-InCEXJNTv/59yO4VSfuvNrZHt7eeNtWQEgnieIA+mIC+MOWM9arOWG2eQ8Vhk6NbOre6/BidiXhkZYeDY9U35w==" }, "@types/lodash-deep": { "version": "2.0.0", @@ -1015,11 +1015,11 @@ "dev": true }, "@zowe/cli": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/@zowe/cli/-/cli-6.15.0.tgz", - "integrity": "sha512-4I452508oEd9+oxLQjGTqo+weiI7U2ZsHdN+sTl4rXldz/GR0JoO49uj2+y4B5hZZt3ZBqDToSrtjrvn4HHH3A==", + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/@zowe/cli/-/cli-6.20.0.tgz", + "integrity": "sha512-Y8fC7JLjKfh+i3uVVGiPXQdKbVwN3wsLo3Mc8jnUWJXr6ZHCGUk8PZuZJw0+SsOiW2+x2rfoDWREzQ1eRdRr2g==", "requires": { - "@zowe/imperative": "4.6.4", + "@zowe/imperative": "4.7.4", "@zowe/perf-timing": "1.0.7", "get-stdin": "7.0.0", "js-yaml": "3.13.1", @@ -1029,9 +1029,9 @@ } }, "@zowe/imperative": { - "version": "4.6.4", - "resolved": "https://registry.npmjs.org/@zowe/imperative/-/imperative-4.6.4.tgz", - "integrity": "sha512-8QQ/S1Gx0Q3yqwLK2f0SMWUkJzv5IHB6z5s2RSO/VTuUtF6e4vPCCZ84dGxQlkbFCWhlNtq9pDHRu8DClzcQOA==", + "version": "4.7.4", + "resolved": "https://registry.npmjs.org/@zowe/imperative/-/imperative-4.7.4.tgz", + "integrity": "sha512-T5oTOVEjQfOURH8Yriw5MiRJQE3LczVtQ0WUgTYKSRT+aEBzXI6sBAGoq96Vg15Isx8QLjhNOk9l44ufdhFuAg==", "requires": { "@types/lodash-deep": "2.0.0", "@types/yargs": "13.0.4", diff --git a/package.json b/package.json index b83f3737c2..6d020a61d1 100644 --- a/package.json +++ b/package.json @@ -1267,7 +1267,7 @@ "webpack-cli": "^3.3.11" }, "dependencies": { - "@zowe/cli": "6.15.0", + "@zowe/cli": "^6.20.0", "fs-extra": "8.0.1", "isbinaryfile": "4.0.4", "js-yaml": "3.13.1", From dce433f6b8f41c5736154d94a4b40ff6c46ccefc Mon Sep 17 00:00:00 2001 From: Katelyn Nienaber Date: Fri, 31 Jul 2020 13:12:41 +0200 Subject: [PATCH 06/17] Making sure newly-allocated data set is focused on in the tree after allocation Signed-off-by: Katelyn Nienaber --- __tests__/__unit__/dataset/actions.unit.test.ts | 1 + src/dataset/actions.ts | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/__tests__/__unit__/dataset/actions.unit.test.ts b/__tests__/__unit__/dataset/actions.unit.test.ts index be6e06508b..401ed2f321 100644 --- a/__tests__/__unit__/dataset/actions.unit.test.ts +++ b/__tests__/__unit__/dataset/actions.unit.test.ts @@ -1993,6 +1993,7 @@ describe("Dataset Actions Unit Tests - Function allocateLike", () => { mocked(vscode.window.createQuickPick).mockReturnValue(quickPickContent); mocked(Profiles.getInstance).mockReturnValue(profileInstance); mocked(vscode.window.showInputBox).mockResolvedValue("test"); + jest.spyOn(datasetSessionNode, "getChildren").mockResolvedValue([testNode, testSDSNode]); testDatasetTree.createFilterString.mockResolvedValue("test"); jest.spyOn(utils, "resolveQuickPickHelper").mockResolvedValue(quickPickItem); jest.spyOn(dsActions, "openPS").mockImplementation(() => null); diff --git a/src/dataset/actions.ts b/src/dataset/actions.ts index 997221f164..8c9478db9d 100644 --- a/src/dataset/actions.ts +++ b/src/dataset/actions.ts @@ -112,13 +112,16 @@ export async function allocateLike(datasetProvider: IZoweTree thisSession.label === profile.name); } + if (!currSession) { currSession = datasetProvider.mSessionNodes.find((thisSession) => thisSession.label.trim() === profile.name); } const theFilter = await datasetProvider.createFilterString(newDSName, currSession); currSession.tooltip = currSession.pattern = theFilter.toUpperCase(); datasetProvider.addSearchHistory(theFilter); datasetProvider.refresh(); currSession.dirty = true; datasetProvider.refreshElement(currSession); + const newNode = (await currSession.getChildren()).find((child) => child.label.trim() === newDSName.toUpperCase()); + await datasetProvider.getTreeView().reveal(currSession, { select: true, focus: true }); + datasetProvider.getTreeView().reveal(newNode, { select: true, focus: true }); } export async function uploadDialog(node: ZoweDatasetNode, datasetProvider: IZoweTree) { From f5bd4f24e607ede62c3ecdb9e028f2b54f39100f Mon Sep 17 00:00:00 2001 From: Katelyn Nienaber Date: Mon, 3 Aug 2020 09:58:00 +0200 Subject: [PATCH 07/17] Fixing dependency issues Signed-off-by: Katelyn Nienaber --- package-lock.json | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/package-lock.json b/package-lock.json index 649ca8db18..068c1e9af2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3134,9 +3134,9 @@ } }, "elliptic": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz", - "integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", + "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", "dev": true, "requires": { "bn.js": "^4.4.0", @@ -8445,18 +8445,18 @@ } }, "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", "dev": true, "requires": { - "minimist": "0.0.8" + "minimist": "^1.2.5" }, "dependencies": { "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true } } @@ -12197,9 +12197,9 @@ } }, "yargs-parser": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", - "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", "dev": true, "requires": { "camelcase": "^5.0.0", From 16e468982eead7316af9475b8b811651e04d364d Mon Sep 17 00:00:00 2001 From: Katelyn Nienaber Date: Tue, 4 Aug 2020 10:16:30 +0200 Subject: [PATCH 08/17] Adding one it() test block, removing unused function Signed-off-by: Katelyn Nienaber --- .../__unit__/dataset/actions.unit.test.ts | 17 +++++++ src/dataset/actions.ts | 44 +++++++------------ 2 files changed, 34 insertions(+), 27 deletions(-) diff --git a/__tests__/__unit__/dataset/actions.unit.test.ts b/__tests__/__unit__/dataset/actions.unit.test.ts index 401ed2f321..295e0b9fc5 100644 --- a/__tests__/__unit__/dataset/actions.unit.test.ts +++ b/__tests__/__unit__/dataset/actions.unit.test.ts @@ -2063,4 +2063,21 @@ describe("Dataset Actions Unit Tests - Function allocateLike", () => { expect(mocked(vscode.window.showInformationMessage)).toHaveBeenCalledWith("You must enter a new data set name."); }); + it("Tests that allocateLike fails if error is thrown", async () => { + createGlobalMocks(); + const blockMocks = createBlockMocks(); + + const errorHandlingSpy = jest.spyOn(utils, "errorHandling"); + const errorMessage = new Error("Test error"); + jest.spyOn(blockMocks.mvsApi, "allocateLikeDataSet").mockRejectedValue(errorMessage); + + try { + await dsActions.allocateLike(blockMocks.testDatasetTree); + } catch (err) { + // do nothing + } + + expect(errorHandlingSpy).toHaveBeenCalledTimes(1); + expect(errorHandlingSpy).toHaveBeenCalledWith(errorMessage, "test", "Unable to create data set: Test error"); + }); }); diff --git a/src/dataset/actions.ts b/src/dataset/actions.ts index d953d4a17d..2dff18fe2a 100644 --- a/src/dataset/actions.ts +++ b/src/dataset/actions.ts @@ -294,21 +294,6 @@ export function getDataSetTypeAndOptions(type: string) { }; } -export function getDataSetTypeAsString(type: zowe.CreateDataSetTypeEnum) { - switch (type) { - case zowe.CreateDataSetTypeEnum.DATA_SET_BINARY: - return "Data Set Binary"; - case zowe.CreateDataSetTypeEnum.DATA_SET_C: - return "Data Set C"; - case zowe.CreateDataSetTypeEnum.DATA_SET_CLASSIC: - return "Data Set Classic"; - case zowe.CreateDataSetTypeEnum.DATA_SET_PARTITIONED: - return "Data Set Partitioned"; - case zowe.CreateDataSetTypeEnum.DATA_SET_SEQUENTIAL: - return "Data Set Sequential"; - } -} - /** * Creates a new file and uploads to the server * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! @@ -598,18 +583,23 @@ export async function deleteDataset(node: IZoweTreeNode, datasetProvider: IZoweT let label = ""; let fav = false; try { - if (node.getParent().contextValue.includes(globals.FAVORITE_CONTEXT)) { - label = node.label.substring(node.label.indexOf(":") + 1).trim(); - fav = true; - } else if (node.getParent().contextValue.includes(globals.DS_PDS_CONTEXT + globals.FAV_SUFFIX)) { - label = node.getParent().getLabel().substring(node.getParent().getLabel().indexOf(":") + 1).trim() + "(" + node.getLabel() + ")"; - fav = true; - } else if (node.getParent().contextValue.includes(globals.DS_SESSION_CONTEXT)) { - label = node.getLabel(); - } else if (node.getParent().contextValue.includes(globals.DS_PDS_CONTEXT)) { - label = node.getParent().getLabel() + "(" + node.getLabel() + ")"; - } else { - throw Error(localize("deleteDataSet.invalidNode.error", "deleteDataSet() called from invalid node.")); + switch (node.getParent().contextValue) { + case (globals.FAVORITE_CONTEXT): + label = node.label.substring(node.label.indexOf(":") + 1).trim(); + fav = true; + break; + case (globals.DS_PDS_CONTEXT + globals.FAV_SUFFIX): + label = node.getParent().getLabel().substring(node.getParent().getLabel().indexOf(":") + 1).trim() + "(" + node.getLabel()+ ")"; + fav = true; + break; + case (globals.DS_SESSION_CONTEXT): + label = node.getLabel(); + break; + case (globals.DS_PDS_CONTEXT): + label = node.getParent().getLabel()+ "(" + node.getLabel()+ ")"; + break; + default: + throw Error(localize("deleteDataSet.invalidNode.error", "deleteDataSet() called from invalid node.")); } await datasetProvider.checkCurrentProfile(node); if (Profiles.getInstance().validProfile === ValidProfileEnum.VALID) { From 3122eca997800adbc1931e5cb859b3a6ca2ebc64 Mon Sep 17 00:00:00 2001 From: Katelyn Nienaber Date: Thu, 6 Aug 2020 12:50:09 +0200 Subject: [PATCH 09/17] Fixing test errors Signed-off-by: Katelyn Nienaber --- __mocks__/mockCreators/datasets.ts | 2 +- __mocks__/mockCreators/uss.ts | 2 +- .../__unit__/dataset/DatasetTree.unit.test.ts | 4 +- .../__unit__/shared/actions.unit.test.ts | 20 +++--- __tests__/__unit__/uss/USSTree.unit.test.ts | 6 +- src/__mocks__/USSTree.ts | 2 +- src/api/IZoweTree.ts | 2 +- src/dataset/DatasetTree.ts | 2 +- src/shared/actions.ts | 4 +- src/uss/USSTree.ts | 72 ++++++++++++------- 10 files changed, 67 insertions(+), 49 deletions(-) diff --git a/__mocks__/mockCreators/datasets.ts b/__mocks__/mockCreators/datasets.ts index ba32a2849d..38d756af09 100644 --- a/__mocks__/mockCreators/datasets.ts +++ b/__mocks__/mockCreators/datasets.ts @@ -44,7 +44,7 @@ export function createDatasetTree(sessionNode: ZoweDatasetNode, treeView: any): createFilterString: jest.fn(), setItem: jest.fn(), getTreeView: jest.fn().mockImplementation(() => treeView), - searchInLoadedItems: jest.fn(), + getAllLoadedItems: jest.fn(), removeFavorite: jest.fn(), deleteSession: jest.fn(), removeFileHistory: jest.fn(), diff --git a/__mocks__/mockCreators/uss.ts b/__mocks__/mockCreators/uss.ts index ab0ba67b50..c73d4f4c48 100644 --- a/__mocks__/mockCreators/uss.ts +++ b/__mocks__/mockCreators/uss.ts @@ -31,7 +31,7 @@ export function createUSSTree(favoriteNodes: ZoweUSSNode[], sessionNodes: ZoweUS newTree.removeFavorite = jest.fn().mockImplementation((badFavorite) => removeNodeFromArray(badFavorite, newTree.mFavorites)); newTree.openItemFromPath = jest.fn(); newTree.deleteSession = jest.fn().mockImplementation((badSession) => removeNodeFromArray(badSession, newTree.mSessionNodes)); - newTree.searchInLoadedItems = jest.fn(); + newTree.getAllLoadedItems = jest.fn(); newTree.getTreeView = jest.fn().mockImplementation(() => treeView); newTree.getTreeItem = jest.fn().mockImplementation(() => new vscode.TreeItem('test')); newTree.getTreeType = jest.fn().mockImplementation(() => globals.PersistenceSchemaEnum.USS); diff --git a/__tests__/__unit__/dataset/DatasetTree.unit.test.ts b/__tests__/__unit__/dataset/DatasetTree.unit.test.ts index 19e0d5b079..becbbb030c 100644 --- a/__tests__/__unit__/dataset/DatasetTree.unit.test.ts +++ b/__tests__/__unit__/dataset/DatasetTree.unit.test.ts @@ -863,7 +863,7 @@ describe("Dataset Tree Unit Tests - Function editSession", () => { expect(node.getProfile().profile).toBe("testProfile"); }); }); -describe("Dataset Tree Unit Tests - Function searchInLoadedItems", () => { +describe("Dataset Tree Unit Tests - Function getAllLoadedItems", () => { function createBlockMocks() { const session = createISession(); const imperativeProfile = createIProfile(); @@ -888,7 +888,7 @@ describe("Dataset Tree Unit Tests - Function searchInLoadedItems", () => { testTree.mSessionNodes[1], blockMocks.session, globals.DS_DS_CONTEXT); testTree.mSessionNodes[1].children.push(node); - const items = await testTree.searchInLoadedItems(); + const items = await testTree.getAllLoadedItems(); expect(items).toEqual([node]); }); diff --git a/__tests__/__unit__/shared/actions.unit.test.ts b/__tests__/__unit__/shared/actions.unit.test.ts index 4c5c8993ee..ec758814e1 100644 --- a/__tests__/__unit__/shared/actions.unit.test.ts +++ b/__tests__/__unit__/shared/actions.unit.test.ts @@ -82,8 +82,8 @@ describe("Shared Actions Unit Tests - Function searchForLoadedItems", () => { const testNode = new ZoweDatasetNode("HLQ.PROD2.STUFF", null, blockMocks.datasetSessionNode, blockMocks.session, globals.DS_PDS_CONTEXT); testNode.collapsibleState = vscode.TreeItemCollapsibleState.Collapsed; - blockMocks.testDatasetTree.searchInLoadedItems.mockResolvedValueOnce([testNode]); - blockMocks.testUssTree.searchInLoadedItems.mockResolvedValueOnce([]); + blockMocks.testDatasetTree.getAllLoadedItems.mockResolvedValueOnce([testNode]); + blockMocks.testUssTree.getAllLoadedItems.mockResolvedValueOnce([]); blockMocks.testDatasetTree.getChildren.mockImplementation((arg) => { if (arg) { return Promise.resolve([testNode]); @@ -115,8 +115,8 @@ describe("Shared Actions Unit Tests - Function searchForLoadedItems", () => { blockMocks.testDatasetTree.getChildren.mockReturnValue([blockMocks.datasetSessionNode]); jest.spyOn(dsActions, "openPS").mockResolvedValueOnce(null); - blockMocks.testDatasetTree.searchInLoadedItems.mockResolvedValueOnce([testMember]); - blockMocks.testUssTree.searchInLoadedItems.mockResolvedValueOnce([]); + blockMocks.testDatasetTree.getAllLoadedItems.mockResolvedValueOnce([testMember]); + blockMocks.testUssTree.getAllLoadedItems.mockResolvedValueOnce([]); blockMocks.testDatasetTree.getChildren.mockImplementation((arg) => { if (arg === testNode) { return Promise.resolve([testMember]); @@ -142,8 +142,8 @@ describe("Shared Actions Unit Tests - Function searchForLoadedItems", () => { const folder = new ZoweUSSNode("folder", vscode.TreeItemCollapsibleState.Collapsed, blockMocks.ussSessionNode, null, "/"); blockMocks.testDatasetTree.getChildren.mockReturnValue([blockMocks.ussSessionNode]); - blockMocks.testDatasetTree.searchInLoadedItems.mockResolvedValueOnce([]); - blockMocks.testUssTree.searchInLoadedItems.mockResolvedValueOnce([folder]); + blockMocks.testDatasetTree.getAllLoadedItems.mockResolvedValueOnce([]); + blockMocks.testUssTree.getAllLoadedItems.mockResolvedValueOnce([folder]); jest.spyOn(folder, "getProfileName").mockImplementationOnce(() => "firstName"); jest.spyOn(blockMocks.ussSessionNode, "getChildren").mockResolvedValueOnce([folder]); @@ -166,8 +166,8 @@ describe("Shared Actions Unit Tests - Function searchForLoadedItems", () => { const file = new ZoweUSSNode("file", vscode.TreeItemCollapsibleState.None, folder, null, "/folder"); blockMocks.testDatasetTree.getChildren.mockReturnValue([blockMocks.ussSessionNode]); - blockMocks.testDatasetTree.searchInLoadedItems.mockResolvedValueOnce([]); - blockMocks.testUssTree.searchInLoadedItems.mockResolvedValueOnce([file]); + blockMocks.testDatasetTree.getAllLoadedItems.mockResolvedValueOnce([]); + blockMocks.testUssTree.getAllLoadedItems.mockResolvedValueOnce([file]); jest.spyOn(blockMocks.ussSessionNode, "getChildren").mockResolvedValueOnce([folder]); jest.spyOn(folder, "getChildren").mockResolvedValueOnce([file]); @@ -187,8 +187,8 @@ describe("Shared Actions Unit Tests - Function searchForLoadedItems", () => { const globalMocks = await createGlobalMocks(); const blockMocks = createBlockMocks(); - blockMocks.testDatasetTree.searchInLoadedItems.mockResolvedValueOnce([]); - blockMocks.testUssTree.searchInLoadedItems.mockResolvedValueOnce([]); + blockMocks.testDatasetTree.getAllLoadedItems.mockResolvedValueOnce([]); + blockMocks.testUssTree.getAllLoadedItems.mockResolvedValueOnce([]); const qpItem = null; const quickPickContent = createQuickPickContent(qpItem, qpItem, globalMocks.qpPlaceholder); quickPickContent.placeholder = "Select a filter"; diff --git a/__tests__/__unit__/uss/USSTree.unit.test.ts b/__tests__/__unit__/uss/USSTree.unit.test.ts index eaea258966..abfc7b8bdf 100644 --- a/__tests__/__unit__/uss/USSTree.unit.test.ts +++ b/__tests__/__unit__/uss/USSTree.unit.test.ts @@ -540,8 +540,8 @@ describe("USSTree Unit Tests - Function USSTree.filterPrompt()", () => { }); }); -describe("USSTree Unit Tests - Function USSTree.searchInLoadedItems()", () => { - it("Testing that searchInLoadedItems() returns the correct array", async () => { +describe("USSTree Unit Tests - Function USSTree.getAllLoadedItems()", () => { + it("Testing that getAllLoadedItems() returns the correct array", async () => { const globalMocks = await createGlobalMocks(); const folder = new ZoweUSSNode("folder", vscode.TreeItemCollapsibleState.Collapsed, globalMocks.testTree.mSessionNodes[1], null, "/"); @@ -556,7 +556,7 @@ describe("USSTree Unit Tests - Function USSTree.searchInLoadedItems()", () => { () => Promise.resolve(globalMocks.testTree.mSessionNodes[1].children) ); - const loadedItems = await globalMocks.testTree.searchInLoadedItems(); + const loadedItems = await globalMocks.testTree.getAllLoadedItems(); expect(loadedItems).toStrictEqual([file, folder]); }); }); diff --git a/src/__mocks__/USSTree.ts b/src/__mocks__/USSTree.ts index a9974dfadb..786b7ccf9d 100644 --- a/src/__mocks__/USSTree.ts +++ b/src/__mocks__/USSTree.ts @@ -61,7 +61,7 @@ export class USSTree implements vscode.TreeDataProvider { * @memberof USSTree */ @MockMethod() - public searchInLoadedItems(): IZoweUSSTreeNode[] { + public getAllLoadedItems(): IZoweUSSTreeNode[] { return null; } diff --git a/src/api/IZoweTree.ts b/src/api/IZoweTree.ts index 4407e252fb..79f00556ab 100644 --- a/src/api/IZoweTree.ts +++ b/src/api/IZoweTree.ts @@ -171,7 +171,7 @@ export interface IZoweTree extends vscode.TreeDataProvider { /** * Lets the user open a dataset by filtering the currently-loaded list */ - searchInLoadedItems?(): Promise; + getAllLoadedItems?(): Promise; /** * Retrieves the vscode tree container */ diff --git a/src/dataset/DatasetTree.ts b/src/dataset/DatasetTree.ts index 8ebaad266f..65892593a1 100644 --- a/src/dataset/DatasetTree.ts +++ b/src/dataset/DatasetTree.ts @@ -515,7 +515,7 @@ export class DatasetTree extends ZoweTreeProvider implements IZoweTree - (temp.shortLabel === oldLabel) && (temp.fullPath.substr(0, temp.fullPath.indexOf(oldLabel)) === parentPath) - ); - const newName = await vscode.window.showInputBox({value: oldLabel.replace(/^\[.+\]:\s/, "")}); - if (newName && newName !== oldLabel) { - try { - let newNamePath = path.join(parentPath + newName); - newNamePath = newNamePath.replace(/\\/g, "/"); // Added to cover Windows backslash issue - const oldNamePath = originalNode.fullPath; + // Could be a favorite or regular entry always deal with the regular entry + const oldLabel = originalNode.label; + const parentPath = originalNode.fullPath.substr(0, originalNode.fullPath.indexOf(oldLabel)); + // Check if an old favorite exists for this node + const oldFavorite: IZoweUSSTreeNode = contextually.isFavorite(originalNode) ? originalNode : this.mFavorites.find((temp: ZoweUSSNode) => + (temp.shortLabel === oldLabel) && (temp.fullPath.substr(0, temp.fullPath.indexOf(oldLabel)) === parentPath) + ); + const loadedNodes = await this.getAllLoadedItems(); + const nodeType = contextually.isFolder(originalNode) ? "folder" : "file"; + const options: vscode.InputBoxOptions = { + prompt: localize("renameUSSNode.enterName", + "Enter a new name for the {0}", nodeType), + value: oldLabel.replace(/^\[.+\]:\s/, ""), + ignoreFocusOut: true, + validateInput: (value) => { + for (const node of loadedNodes) { + if (value === node.label.trim() && contextually.isFolder(node)) { + return localize("renameUSSNode.duplicateName", + "A {0} already exists with this name. Please choose a different one.", + nodeType); + } + } + return null; + } + }; + const newName = await vscode.window.showInputBox(options); + if (newName && newName !== oldLabel) { + try { + let newNamePath = path.join(parentPath + newName); + newNamePath = newNamePath.replace(/\\/g, "/"); // Added to cover Windows backslash issue + const oldNamePath = originalNode.fullPath; - const hasClosedTab = await originalNode.rename(newNamePath); - await ZoweExplorerApiRegister.getUssApi( - originalNode.getProfile()).rename(oldNamePath, newNamePath); - await originalNode.refreshAndReopen(hasClosedTab); + const hasClosedTab = await originalNode.rename(newNamePath); + await ZoweExplorerApiRegister.getUssApi( + originalNode.getProfile()).rename(oldNamePath, newNamePath); + await originalNode.refreshAndReopen(hasClosedTab); - if (oldFavorite) { - this.removeFavorite(oldFavorite); - oldFavorite.rename(newNamePath); - this.addFavorite(oldFavorite); + if (oldFavorite) { + this.removeFavorite(oldFavorite); + oldFavorite.rename(newNamePath); + this.addFavorite(oldFavorite); + } + } catch (err) { + errorHandling(err, originalNode.mProfileName, localize("renameUSSNode.error", "Unable to rename node: ") + err.message); + throw (err); } - } catch (err) { - errorHandling(err, originalNode.mProfileName, localize("renameUSSNode.error", "Unable to rename node: ") + err.message); - throw (err); } } - } public open(node: IZoweUSSTreeNode, preview: boolean) { throw new Error("Method not implemented."); } @@ -281,10 +299,10 @@ export class USSTree extends ZoweTreeProvider implements IZoweTree Date: Thu, 6 Aug 2020 12:57:12 +0200 Subject: [PATCH 10/17] Fixing test errors Signed-off-by: Katelyn Nienaber --- i18n/sample/src/uss/USSTree.i18n.json | 2 ++ src/uss/USSTree.ts | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/i18n/sample/src/uss/USSTree.i18n.json b/i18n/sample/src/uss/USSTree.i18n.json index e75bdf2e09..a6ce33d301 100644 --- a/i18n/sample/src/uss/USSTree.i18n.json +++ b/i18n/sample/src/uss/USSTree.i18n.json @@ -1,5 +1,7 @@ { "Favorites": "Favorites", + "renameUSSNode.enterName": "Enter a new name for the {0}", + "renameUSSNode.duplicateName": "A {0} already exists with this name. Please choose a different one.", "renameUSSNode.error": "Unable to rename node: ", "enterPattern.log.debug.prompt": "Prompting the user to choose a member from the filtered list", "filterPrompt.log.debug.promptUSSPath": "Prompting the user for a USS path", diff --git a/src/uss/USSTree.ts b/src/uss/USSTree.ts index 065b368ab0..b5c6d03c26 100644 --- a/src/uss/USSTree.ts +++ b/src/uss/USSTree.ts @@ -23,8 +23,8 @@ import { ZoweTreeProvider } from "../abstract/ZoweTreeProvider"; import { ZoweExplorerApiRegister } from "../api/ZoweExplorerApiRegister"; import { getIconByNode } from "../generators/icons"; import * as contextually from "../shared/context"; - import * as nls from "vscode-nls"; + // Set up localization nls.config({ messageFormat: nls.MessageFormat.bundle, bundleFormat: nls.BundleFormat.standalone })(); const localize: nls.LocalizeFunc = nls.loadMessageBundle(); From 16fcf720400b5bac63dd9b555d5d4777866834ba Mon Sep 17 00:00:00 2001 From: Katelyn Nienaber Date: Thu, 6 Aug 2020 13:17:15 +0200 Subject: [PATCH 11/17] Changing Allocate Like name according to John's comments Signed-off-by: Katelyn Nienaber --- i18n/sample/package.i18n.json | 2 +- i18n/sample/src/dataset/actions.i18n.json | 2 +- package.nls.json | 2 +- src/dataset/actions.ts | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/i18n/sample/package.i18n.json b/i18n/sample/package.i18n.json index b3358daa0b..924a2d520c 100644 --- a/i18n/sample/package.i18n.json +++ b/i18n/sample/package.i18n.json @@ -19,7 +19,7 @@ "deleteDataset": "Delete Data Set", "deleteMember": "Delete Member", "deletePDS": "Delete PDS", - "allocateLike": "Allocate Like", + "allocateLike": "Allocate Like (New File with Same Attributes)", "editMember": "Edit", "issueCmd": "Issue Command", "uploadDialog": "Upload Member...", diff --git a/i18n/sample/src/dataset/actions.i18n.json b/i18n/sample/src/dataset/actions.i18n.json index ba4a23ea31..8623962fae 100644 --- a/i18n/sample/src/dataset/actions.i18n.json +++ b/i18n/sample/src/dataset/actions.i18n.json @@ -1,7 +1,7 @@ { "allocateLike.options.prompt": "Select the profile to which the original data set belongs", "allocateLike.noSelection": "You must select a profile.", - "allocateLike.enterLikePattern": "Enter the name of the data set to \"allocate like\" from", + "allocateLike.enterLikePattern": "Enter the name of the data set to copy attributes from", "allocateLike.enterPattern": "Enter a name for the new data set", "allocateLike.noNewName": "You must enter a new data set name.", "createDataSet.log.error": "Error encountered when creating data set! ", diff --git a/package.nls.json b/package.nls.json index b55a02cef9..aa1f171e35 100644 --- a/package.nls.json +++ b/package.nls.json @@ -19,7 +19,7 @@ "deleteDataset": "Delete Data Set", "deleteMember": "Delete Member", "deletePDS": "Delete PDS", - "allocateLike": "Allocate Like", + "allocateLike": "Allocate Like (New File with Same Attributes)", "editMember": "Edit", "issueCmd": "Issue Command", "uploadDialog": "Upload Member...", diff --git a/src/dataset/actions.ts b/src/dataset/actions.ts index 2dff18fe2a..83afc87122 100644 --- a/src/dataset/actions.ts +++ b/src/dataset/actions.ts @@ -86,7 +86,7 @@ export async function allocateLike(datasetProvider: IZoweTree Date: Mon, 17 Aug 2020 11:15:44 +0200 Subject: [PATCH 12/17] Fixing package issue Signed-off-by: Katelyn Nienaber --- package-lock.json | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/package-lock.json b/package-lock.json index df612d2c9d..7d8da6636f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10297,10 +10297,13 @@ } }, "serialize-javascript": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", - "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==", - "dev": true + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } }, "set-blocking": { "version": "2.0.0", @@ -11125,9 +11128,9 @@ } }, "terser": { - "version": "4.6.11", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.11.tgz", - "integrity": "sha512-76Ynm7OXUG5xhOpblhytE7X58oeNSmC8xnNhjWVo8CksHit0U0kO4hfNbPrrYwowLWFgM2n9L176VNx2QaHmtA==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", "dev": true, "requires": { "commander": "^2.20.0", @@ -11144,16 +11147,16 @@ } }, "terser-webpack-plugin": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz", - "integrity": "sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA==", + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", + "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", "dev": true, "requires": { "cacache": "^12.0.2", "find-cache-dir": "^2.1.0", "is-wsl": "^1.1.0", "schema-utils": "^1.0.0", - "serialize-javascript": "^2.1.2", + "serialize-javascript": "^4.0.0", "source-map": "^0.6.1", "terser": "^4.1.2", "webpack-sources": "^1.4.0", From 5a548149cef2218d9f35e720ef53d59912cc1e8a Mon Sep 17 00:00:00 2001 From: Katelyn Nienaber Date: Wed, 19 Aug 2020 15:51:53 +0200 Subject: [PATCH 13/17] Fixing hash error Signed-off-by: Katelyn Nienaber --- package-lock.json | 441 ++++++++++------------------------------------ 1 file changed, 92 insertions(+), 349 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2e45ab6b2e..35937f212a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2766,7 +2766,8 @@ "@types/color-name": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==" + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", + "dev": true }, "@types/dateformat": { "version": "3.0.1", @@ -2968,19 +2969,6 @@ "integrity": "sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA==", "dev": true }, - "@types/lodash": { - "version": "4.14.159", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.159.tgz", - "integrity": "sha512-gF7A72f7WQN33DpqOWw9geApQPh4M3PxluMtaHxWHXEGSN12/WbcEk/eNSqWNQcQhF66VSZ06vCF94CrHwXJDg==" - }, - "@types/lodash-deep": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@types/lodash-deep/-/lodash-deep-2.0.0.tgz", - "integrity": "sha512-qkAm3ab2gbNBzKTDdlUxQLEuMhIBkQ+hU2W99asSwHQDjPTwa4bG08I0+L4cQCIMMzT4QmGPR2rXT4iYDv0YFg==", - "requires": { - "@types/lodash": "*" - } - }, "@types/minimatch": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", @@ -3053,7 +3041,8 @@ "@types/yargs-parser": { "version": "15.0.0", "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-15.0.0.tgz", - "integrity": "sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==" + "integrity": "sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==", + "dev": true }, "@typescript-eslint/eslint-plugin": { "version": "2.31.0", @@ -3321,114 +3310,6 @@ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "dev": true }, - "@zowe/cli": { - "version": "6.21.1", - "resolved": "https://zowe.jfrog.io/zowe/api/npm/npm-local-release/@zowe/cli/-/@zowe/cli-6.21.1.tgz", - "integrity": "sha1-Wy1XR7wfAUHI/UkqTWEJKAxK6XI=", - "requires": { - "@zowe/imperative": "4.8.0", - "@zowe/perf-timing": "1.0.7", - "get-stdin": "7.0.0", - "js-yaml": "3.13.1", - "minimatch": "3.0.4", - "ssh2": "0.8.7", - "string-width": "2.1.1" - } - }, - "@zowe/imperative": { - "version": "4.8.0", - "resolved": "https://zowe.jfrog.io/zowe/api/npm/npm-local-release/@zowe/imperative/-/@zowe/imperative-4.8.0.tgz", - "integrity": "sha1-8jpN5P86/qGbIVjC8nEgNVcO4BY=", - "requires": { - "@types/lodash-deep": "2.0.0", - "@types/yargs": "13.0.4", - "@zowe/perf-timing": "1.0.7", - "chalk": "2.4.2", - "cli-table3": "0.5.1", - "dataobject-parser": "1.2.1", - "deepmerge": "3.0.0", - "find-up": "2.1.0", - "fs-extra": "8.1.0", - "glob": "7.1.6", - "js-yaml": "3.13.1", - "jsonfile": "4.0.0", - "jsonschema": "1.1.1", - "levenshtein": "1.0.5", - "lodash-deep": "2.0.0", - "log4js": "6.3.0", - "marked": "0.8.0", - "moment": "2.20.1", - "mustache": "2.3.0", - "opener": "1.5.1", - "prettyjson": "1.2.1", - "progress": "2.0.3", - "readline-sync": "1.4.10", - "rimraf": "2.6.3", - "semver": "5.7.0", - "stack-trace": "0.0.10", - "wrap-ansi": "3.0.1", - "yamljs": "0.3.0", - "yargs": "15.3.1" - }, - "dependencies": { - "@types/yargs": { - "version": "13.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.4.tgz", - "integrity": "sha512-Ke1WmBbIkVM8bpvsNEcGgQM70XcEh/nbpxQhW7FhrsbCsXSY9BmLB1+LHtD7r9zrsOcFlLiF+a/UeJsdfw3C5A==", - "requires": { - "@types/yargs-parser": "*" - } - }, - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "log4js": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.3.0.tgz", - "integrity": "sha512-Mc8jNuSFImQUIateBFwdOQcmC6Q5maU0VVvdC2R6XMb66/VnT+7WS4D/0EeNMZu1YODmJe5NIn2XftCzEocUgw==", - "requires": { - "date-format": "^3.0.0", - "debug": "^4.1.1", - "flatted": "^2.0.1", - "rfdc": "^1.1.4", - "streamroller": "^2.2.4" - } - }, - "moment": { - "version": "2.20.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.20.1.tgz", - "integrity": "sha512-Yh9y73JRljxW5QxN08Fner68eFLxM5ynNOAw2LbIB1YAGeQzZT8QFSUvkAz609Zf+IHhhaUxqZK8dG3W/+HEvg==" - } - } - }, - "@zowe/perf-timing": { - "version": "1.0.7", - "resolved": "https://zowe.jfrog.io/zowe/api/npm/npm-local-release/@zowe/perf-timing/-/@zowe/perf-timing-1.0.7.tgz", - "integrity": "sha1-yMt2q8wyjKyhqFEIx842hbLAnZ4=", - "requires": { - "fs-extra": "8.1.0", - "pkg-up": "2.0.0" - }, - "dependencies": { - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - } - } - }, "abab": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.3.tgz", @@ -3570,12 +3451,14 @@ "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -3792,6 +3675,7 @@ "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, "requires": { "safer-buffer": "~2.1.0" } @@ -4038,6 +3922,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, "requires": { "tweetnacl": "^0.14.3" } @@ -4380,7 +4265,8 @@ "camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true }, "caniuse-lite": { "version": "1.0.30001114", @@ -4445,6 +4331,7 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -4614,16 +4501,6 @@ "restore-cursor": "^3.1.0" } }, - "cli-table3": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.5.1.tgz", - "integrity": "sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==", - "requires": { - "colors": "^1.1.2", - "object-assign": "^4.1.0", - "string-width": "^2.1.1" - } - }, "cli-width": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", @@ -4634,6 +4511,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, "requires": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -4643,12 +4521,14 @@ "ansi-regex": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true }, "ansi-styles": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, "requires": { "@types/color-name": "^1.1.1", "color-convert": "^2.0.1" @@ -4658,6 +4538,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "requires": { "color-name": "~1.1.4" } @@ -4665,17 +4546,20 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true }, "string-width": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -4686,6 +4570,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, "requires": { "ansi-regex": "^5.0.0" } @@ -4694,6 +4579,7 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, "requires": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -4774,6 +4660,7 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, "requires": { "color-name": "1.1.3" } @@ -4781,7 +4668,8 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true }, "color-support": { "version": "1.1.3", @@ -4789,11 +4677,6 @@ "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", "dev": true }, - "colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" - }, "combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -5098,16 +4981,6 @@ "whatwg-url": "^7.0.0" } }, - "dataobject-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/dataobject-parser/-/dataobject-parser-1.2.1.tgz", - "integrity": "sha512-1XMF0e8Dkfano8WY9TOCWLUQqosXI/Hf6GQrPESCnIn+NbYwy5kVUto0l2L6EVOIRflq8D820QnfQgVapckmTQ==" - }, - "date-format": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-3.0.0.tgz", - "integrity": "sha512-eyTcpKOcamdhWJXj56DpQMo1ylSQpcGtGKXcU0Tb97+K56/CF5amAqqqNj0+KvA0iw2ynxtHWFsPDSClCxe48w==" - }, "dateformat": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.2.tgz", @@ -5118,6 +4991,7 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, "requires": { "ms": "^2.1.1" } @@ -5147,7 +5021,8 @@ "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true }, "decimal.js": { "version": "10.2.0", @@ -5191,11 +5066,6 @@ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", "dev": true }, - "deepmerge": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-3.0.0.tgz", - "integrity": "sha512-a8z8bkgHsAML+uHLqmMS83HHlpy3PvZOOuiTQqaa3wu8ZVg3h0hqHk6aCsGdOnZV2XMM/FRimNGjUh0KCcmHBw==" - }, "default-compare": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", @@ -5509,7 +5379,8 @@ "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true }, "emojis-list": { "version": "3.0.0", @@ -5647,7 +5518,8 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true }, "escodegen": { "version": "1.14.1", @@ -6324,14 +6196,6 @@ } } }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "requires": { - "locate-path": "^2.0.0" - } - }, "findup-sync": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", @@ -6377,7 +6241,8 @@ "flatted": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", - "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==" + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true }, "flush-write-stream": { "version": "1.1.1", @@ -6623,7 +6488,8 @@ "get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true }, "get-func-name": { "version": "2.0.0", @@ -6631,11 +6497,6 @@ "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", "dev": true }, - "get-stdin": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-7.0.0.tgz", - "integrity": "sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ==" - }, "get-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", @@ -7149,7 +7010,8 @@ "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true }, "has-symbols": { "version": "1.0.1", @@ -7732,7 +7594,8 @@ "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true }, "is-generator-fn": { "version": "2.1.0", @@ -10603,11 +10466,6 @@ "graceful-fs": "^4.1.6" } }, - "jsonschema": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.1.1.tgz", - "integrity": "sha1-PO3o4+QR03eHLu+8n98mODy8Ptk=" - }, "jsprim": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", @@ -10727,11 +10585,6 @@ "leven": "^3.1.0" } }, - "levenshtein": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/levenshtein/-/levenshtein-1.0.5.tgz", - "integrity": "sha1-ORFzepy1baNF0Aj1V4LG8TiXm6M=" - }, "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", @@ -10831,27 +10684,11 @@ } } }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, "lodash": { "version": "4.17.19", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", - "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==" - }, - "lodash-deep": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lodash-deep/-/lodash-deep-2.0.0.tgz", - "integrity": "sha1-ypWPW82z1o0+w3rN8cWMHMvYhlw=", - "requires": { - "lodash": ">=3.7.0" - } + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "dev": true }, "lodash.differencewith": { "version": "4.5.0", @@ -11095,11 +10932,6 @@ } } }, - "marked": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.8.0.tgz", - "integrity": "sha512-MyUe+T/Pw4TZufHkzAfDj6HarCBWia2y27/bhuYkTaiUnfDYFnCP3KUN+9oM7Wi6JA2rymtVYbQu3spE0GCmxQ==" - }, "matchdep": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", @@ -11479,7 +11311,8 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true }, "multimatch": { "version": "2.1.0", @@ -11493,11 +11326,6 @@ "minimatch": "^3.0.0" } }, - "mustache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/mustache/-/mustache-2.3.0.tgz", - "integrity": "sha1-QCj3d4sXcIpImTCm5SrDvKDaQdA=" - }, "mute-stdout": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", @@ -11780,7 +11608,8 @@ "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true }, "object-copy": { "version": "0.1.0", @@ -11906,11 +11735,6 @@ } } }, - "opener": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.1.tgz", - "integrity": "sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA==" - }, "optionator": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", @@ -12001,33 +11825,12 @@ "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", "dev": true }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "requires": { - "p-limit": "^1.1.0" - } - }, "p-map": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", "dev": true }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" - }, "pako": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", @@ -12136,7 +11939,8 @@ "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true }, "path-is-absolute": { "version": "1.0.1", @@ -12348,14 +12152,6 @@ } } }, - "pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", - "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", - "requires": { - "find-up": "^2.1.0" - } - }, "plugin-error": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz", @@ -12505,22 +12301,6 @@ "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", "dev": true }, - "prettyjson": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prettyjson/-/prettyjson-1.2.1.tgz", - "integrity": "sha1-/P+rQdGcq0365eV15kJGYZsS0ok=", - "requires": { - "colors": "^1.1.2", - "minimist": "^1.2.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - } - } - }, "process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -12536,7 +12316,8 @@ "progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true }, "promise-inflight": { "version": "1.0.1", @@ -12774,11 +12555,6 @@ "readable-stream": "^2.0.2" } }, - "readline-sync": { - "version": "1.4.10", - "resolved": "https://registry.npmjs.org/readline-sync/-/readline-sync-1.4.10.tgz", - "integrity": "sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw==" - }, "rechoir": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", @@ -12978,12 +12754,14 @@ "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true }, "require-main-filename": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true }, "requireindex": { "version": "1.1.0", @@ -13074,12 +12852,14 @@ "rfdc": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.1.4.tgz", - "integrity": "sha512-5C9HXdzK8EAqN7JDif30jqsBzavB7wLpaubisuQIGHWf2gUXSpzy6ArX/+Da8RjFpagWsCn+pIgxTMAmKw9Zug==" + "integrity": "sha512-5C9HXdzK8EAqN7JDif30jqsBzavB7wLpaubisuQIGHWf2gUXSpzy6ArX/+Da8RjFpagWsCn+pIgxTMAmKw9Zug==", + "dev": true }, "rimraf": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, "requires": { "glob": "^7.1.3" } @@ -13195,7 +12975,8 @@ "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true }, "sane": { "version": "4.1.0", @@ -13274,7 +13055,8 @@ "semver": { "version": "5.7.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "dev": true }, "semver-greatest-satisfied-range": { "version": "1.1.0", @@ -13297,7 +13079,8 @@ "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true }, "set-immediate-shim": { "version": "1.0.1", @@ -13668,24 +13451,6 @@ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, - "ssh2": { - "version": "0.8.7", - "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-0.8.7.tgz", - "integrity": "sha512-/u1BO12kb0lDVxJXejWB9pxyF3/ncgRqI9vPCZuPzo05pdNDzqUeQRavScwSPsfMGK+5H/VRqp1IierIx0Bcxw==", - "requires": { - "ssh2-streams": "~0.4.8" - } - }, - "ssh2-streams": { - "version": "0.4.10", - "resolved": "https://registry.npmjs.org/ssh2-streams/-/ssh2-streams-0.4.10.tgz", - "integrity": "sha512-8pnlMjvnIZJvmTzUIIA5nT4jr2ZWNNVHwyXfMGdRJbug9TpI3kd99ffglgfSWqujVv/0gxwMsDn9j9RVst8yhQ==", - "requires": { - "asn1": "~0.2.0", - "bcrypt-pbkdf": "^1.0.2", - "streamsearch": "~0.1.2" - } - }, "sshpk": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", @@ -13715,7 +13480,8 @@ "stack-trace": { "version": "0.0.10", "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=" + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", + "dev": true }, "stack-utils": { "version": "1.0.2", @@ -13814,38 +13580,6 @@ "readable-stream": "^2.0.2" } }, - "streamroller": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-2.2.4.tgz", - "integrity": "sha512-OG79qm3AujAM9ImoqgWEY1xG4HX+Lw+yY6qZj9R1K2mhF5bEmQ849wvrb+4vt4jLMLzwXttJlQbOdPOQVRv7DQ==", - "requires": { - "date-format": "^2.1.0", - "debug": "^4.1.1", - "fs-extra": "^8.1.0" - }, - "dependencies": { - "date-format": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.1.0.tgz", - "integrity": "sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA==" - }, - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - } - } - }, - "streamsearch": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", - "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=" - }, "string-length": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-length/-/string-length-3.1.0.tgz", @@ -13877,6 +13611,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" @@ -13895,6 +13630,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, "requires": { "ansi-regex": "^3.0.0" } @@ -13936,6 +13672,7 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -14558,7 +14295,8 @@ "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true }, "type": { "version": "1.2.0", @@ -15704,7 +15442,8 @@ "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true }, "which-pm-runs": { "version": "1.0.0", @@ -15736,15 +15475,6 @@ "errno": "~0.1.7" } }, - "wrap-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz", - "integrity": "sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=", - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0" - } - }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -15834,7 +15564,8 @@ "y18n": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true }, "yallist": { "version": "3.1.1", @@ -15855,6 +15586,7 @@ "version": "15.3.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.1.tgz", "integrity": "sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA==", + "dev": true, "requires": { "cliui": "^6.0.0", "decamelize": "^1.2.0", @@ -15872,12 +15604,14 @@ "ansi-regex": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true }, "find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, "requires": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -15886,12 +15620,14 @@ "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true }, "locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, "requires": { "p-locate": "^4.1.0" } @@ -15900,6 +15636,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, "requires": { "p-try": "^2.0.0" } @@ -15908,6 +15645,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, "requires": { "p-limit": "^2.2.0" } @@ -15915,17 +15653,20 @@ "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true }, "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true }, "string-width": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -15936,6 +15677,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, "requires": { "ansi-regex": "^5.0.0" } @@ -15946,6 +15688,7 @@ "version": "18.1.3", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" From 907e3d28e352ce4150a6459124a65da7aeeb846c Mon Sep 17 00:00:00 2001 From: Katelyn Nienaber Date: Fri, 21 Aug 2020 10:57:42 +0200 Subject: [PATCH 14/17] Fixing weird Jenkins error Signed-off-by: Katelyn Nienaber --- package-lock.json | 441 ++++++++++++++++++++++++++++++++++++---------- 1 file changed, 349 insertions(+), 92 deletions(-) diff --git a/package-lock.json b/package-lock.json index 35937f212a..77e81a90e2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2766,8 +2766,7 @@ "@types/color-name": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", - "dev": true + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==" }, "@types/dateformat": { "version": "3.0.1", @@ -2969,6 +2968,19 @@ "integrity": "sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA==", "dev": true }, + "@types/lodash": { + "version": "4.14.159", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.159.tgz", + "integrity": "sha512-gF7A72f7WQN33DpqOWw9geApQPh4M3PxluMtaHxWHXEGSN12/WbcEk/eNSqWNQcQhF66VSZ06vCF94CrHwXJDg==" + }, + "@types/lodash-deep": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/lodash-deep/-/lodash-deep-2.0.0.tgz", + "integrity": "sha512-qkAm3ab2gbNBzKTDdlUxQLEuMhIBkQ+hU2W99asSwHQDjPTwa4bG08I0+L4cQCIMMzT4QmGPR2rXT4iYDv0YFg==", + "requires": { + "@types/lodash": "*" + } + }, "@types/minimatch": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", @@ -3041,8 +3053,7 @@ "@types/yargs-parser": { "version": "15.0.0", "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-15.0.0.tgz", - "integrity": "sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==", - "dev": true + "integrity": "sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==" }, "@typescript-eslint/eslint-plugin": { "version": "2.31.0", @@ -3310,6 +3321,114 @@ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "dev": true }, + "@zowe/cli": { + "version": "6.21.1", + "resolved": "https://registry.npmjs.org/@zowe/cli/-/cli-6.21.1.tgz", + "integrity": "sha512-Kp7/Wjhig7vBt70qyETgwd9wNuPJeRWAYtgxYquw0CKXIbB6kJzRvLuyk5oym6STy6LNqicGp6CFamP98CENBQ==", + "requires": { + "@zowe/imperative": "4.8.0", + "@zowe/perf-timing": "1.0.7", + "get-stdin": "7.0.0", + "js-yaml": "3.13.1", + "minimatch": "3.0.4", + "ssh2": "0.8.7", + "string-width": "2.1.1" + } + }, + "@zowe/imperative": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@zowe/imperative/-/imperative-4.8.0.tgz", + "integrity": "sha512-1OILs5n22yLZTd98EuCAYs52owwjOsl67XX9goLyju1is8fjMoViRas1ShY2UlH7XnP7y7iN0JEcB74KmTwL3w==", + "requires": { + "@types/lodash-deep": "2.0.0", + "@types/yargs": "13.0.4", + "@zowe/perf-timing": "1.0.7", + "chalk": "2.4.2", + "cli-table3": "0.5.1", + "dataobject-parser": "1.2.1", + "deepmerge": "3.0.0", + "find-up": "2.1.0", + "fs-extra": "8.1.0", + "glob": "7.1.6", + "js-yaml": "3.13.1", + "jsonfile": "4.0.0", + "jsonschema": "1.1.1", + "levenshtein": "1.0.5", + "lodash-deep": "2.0.0", + "log4js": "6.3.0", + "marked": "0.8.0", + "moment": "2.20.1", + "mustache": "2.3.0", + "opener": "1.5.1", + "prettyjson": "1.2.1", + "progress": "2.0.3", + "readline-sync": "1.4.10", + "rimraf": "2.6.3", + "semver": "5.7.0", + "stack-trace": "0.0.10", + "wrap-ansi": "3.0.1", + "yamljs": "0.3.0", + "yargs": "15.3.1" + }, + "dependencies": { + "@types/yargs": { + "version": "13.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.4.tgz", + "integrity": "sha512-Ke1WmBbIkVM8bpvsNEcGgQM70XcEh/nbpxQhW7FhrsbCsXSY9BmLB1+LHtD7r9zrsOcFlLiF+a/UeJsdfw3C5A==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "log4js": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.3.0.tgz", + "integrity": "sha512-Mc8jNuSFImQUIateBFwdOQcmC6Q5maU0VVvdC2R6XMb66/VnT+7WS4D/0EeNMZu1YODmJe5NIn2XftCzEocUgw==", + "requires": { + "date-format": "^3.0.0", + "debug": "^4.1.1", + "flatted": "^2.0.1", + "rfdc": "^1.1.4", + "streamroller": "^2.2.4" + } + }, + "moment": { + "version": "2.20.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.20.1.tgz", + "integrity": "sha512-Yh9y73JRljxW5QxN08Fner68eFLxM5ynNOAw2LbIB1YAGeQzZT8QFSUvkAz609Zf+IHhhaUxqZK8dG3W/+HEvg==" + } + } + }, + "@zowe/perf-timing": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@zowe/perf-timing/-/perf-timing-1.0.7.tgz", + "integrity": "sha512-2txq0yg+POxkGQH6xe4l5wCItwy40YPuSK9cqCWVzrLgPxcvC+serhIkmJosaIMDxQe0e+vLd/mEED4l8nQGRA==", + "requires": { + "fs-extra": "8.1.0", + "pkg-up": "2.0.0" + }, + "dependencies": { + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + } + } + }, "abab": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.3.tgz", @@ -3451,14 +3570,12 @@ "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -3675,7 +3792,6 @@ "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "dev": true, "requires": { "safer-buffer": "~2.1.0" } @@ -3922,7 +4038,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dev": true, "requires": { "tweetnacl": "^0.14.3" } @@ -4265,8 +4380,7 @@ "camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" }, "caniuse-lite": { "version": "1.0.30001114", @@ -4331,7 +4445,6 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -4501,6 +4614,16 @@ "restore-cursor": "^3.1.0" } }, + "cli-table3": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.5.1.tgz", + "integrity": "sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==", + "requires": { + "colors": "^1.1.2", + "object-assign": "^4.1.0", + "string-width": "^2.1.1" + } + }, "cli-width": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", @@ -4511,7 +4634,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, "requires": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -4521,14 +4643,12 @@ "ansi-regex": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" }, "ansi-styles": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, "requires": { "@types/color-name": "^1.1.1", "color-convert": "^2.0.1" @@ -4538,7 +4658,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "requires": { "color-name": "~1.1.4" } @@ -4546,20 +4665,17 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, "string-width": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -4570,7 +4686,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, "requires": { "ansi-regex": "^5.0.0" } @@ -4579,7 +4694,6 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, "requires": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -4660,7 +4774,6 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, "requires": { "color-name": "1.1.3" } @@ -4668,8 +4781,7 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, "color-support": { "version": "1.1.3", @@ -4677,6 +4789,11 @@ "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", "dev": true }, + "colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" + }, "combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -4981,6 +5098,16 @@ "whatwg-url": "^7.0.0" } }, + "dataobject-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/dataobject-parser/-/dataobject-parser-1.2.1.tgz", + "integrity": "sha512-1XMF0e8Dkfano8WY9TOCWLUQqosXI/Hf6GQrPESCnIn+NbYwy5kVUto0l2L6EVOIRflq8D820QnfQgVapckmTQ==" + }, + "date-format": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-3.0.0.tgz", + "integrity": "sha512-eyTcpKOcamdhWJXj56DpQMo1ylSQpcGtGKXcU0Tb97+K56/CF5amAqqqNj0+KvA0iw2ynxtHWFsPDSClCxe48w==" + }, "dateformat": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.2.tgz", @@ -4991,7 +5118,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, "requires": { "ms": "^2.1.1" } @@ -5021,8 +5147,7 @@ "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" }, "decimal.js": { "version": "10.2.0", @@ -5066,6 +5191,11 @@ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", "dev": true }, + "deepmerge": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-3.0.0.tgz", + "integrity": "sha512-a8z8bkgHsAML+uHLqmMS83HHlpy3PvZOOuiTQqaa3wu8ZVg3h0hqHk6aCsGdOnZV2XMM/FRimNGjUh0KCcmHBw==" + }, "default-compare": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", @@ -5379,8 +5509,7 @@ "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "emojis-list": { "version": "3.0.0", @@ -5518,8 +5647,7 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "escodegen": { "version": "1.14.1", @@ -6196,6 +6324,14 @@ } } }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "^2.0.0" + } + }, "findup-sync": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", @@ -6241,8 +6377,7 @@ "flatted": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", - "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", - "dev": true + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==" }, "flush-write-stream": { "version": "1.1.1", @@ -6488,8 +6623,7 @@ "get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" }, "get-func-name": { "version": "2.0.0", @@ -6497,6 +6631,11 @@ "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", "dev": true }, + "get-stdin": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-7.0.0.tgz", + "integrity": "sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ==" + }, "get-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", @@ -7010,8 +7149,7 @@ "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, "has-symbols": { "version": "1.0.1", @@ -7594,8 +7732,7 @@ "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" }, "is-generator-fn": { "version": "2.1.0", @@ -10466,6 +10603,11 @@ "graceful-fs": "^4.1.6" } }, + "jsonschema": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.1.1.tgz", + "integrity": "sha1-PO3o4+QR03eHLu+8n98mODy8Ptk=" + }, "jsprim": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", @@ -10585,6 +10727,11 @@ "leven": "^3.1.0" } }, + "levenshtein": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/levenshtein/-/levenshtein-1.0.5.tgz", + "integrity": "sha1-ORFzepy1baNF0Aj1V4LG8TiXm6M=" + }, "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", @@ -10684,11 +10831,27 @@ } } }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, "lodash": { "version": "4.17.19", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", - "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", - "dev": true + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==" + }, + "lodash-deep": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lodash-deep/-/lodash-deep-2.0.0.tgz", + "integrity": "sha1-ypWPW82z1o0+w3rN8cWMHMvYhlw=", + "requires": { + "lodash": ">=3.7.0" + } }, "lodash.differencewith": { "version": "4.5.0", @@ -10932,6 +11095,11 @@ } } }, + "marked": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-0.8.0.tgz", + "integrity": "sha512-MyUe+T/Pw4TZufHkzAfDj6HarCBWia2y27/bhuYkTaiUnfDYFnCP3KUN+9oM7Wi6JA2rymtVYbQu3spE0GCmxQ==" + }, "matchdep": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", @@ -11311,8 +11479,7 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "multimatch": { "version": "2.1.0", @@ -11326,6 +11493,11 @@ "minimatch": "^3.0.0" } }, + "mustache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/mustache/-/mustache-2.3.0.tgz", + "integrity": "sha1-QCj3d4sXcIpImTCm5SrDvKDaQdA=" + }, "mute-stdout": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", @@ -11608,8 +11780,7 @@ "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, "object-copy": { "version": "0.1.0", @@ -11735,6 +11906,11 @@ } } }, + "opener": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.1.tgz", + "integrity": "sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA==" + }, "optionator": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", @@ -11825,12 +12001,33 @@ "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", "dev": true }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "requires": { + "p-limit": "^1.1.0" + } + }, "p-map": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", "dev": true }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" + }, "pako": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", @@ -11939,8 +12136,7 @@ "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" }, "path-is-absolute": { "version": "1.0.1", @@ -12152,6 +12348,14 @@ } } }, + "pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", + "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", + "requires": { + "find-up": "^2.1.0" + } + }, "plugin-error": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz", @@ -12301,6 +12505,22 @@ "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", "dev": true }, + "prettyjson": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prettyjson/-/prettyjson-1.2.1.tgz", + "integrity": "sha1-/P+rQdGcq0365eV15kJGYZsS0ok=", + "requires": { + "colors": "^1.1.2", + "minimist": "^1.2.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + } + } + }, "process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -12316,8 +12536,7 @@ "progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" }, "promise-inflight": { "version": "1.0.1", @@ -12555,6 +12774,11 @@ "readable-stream": "^2.0.2" } }, + "readline-sync": { + "version": "1.4.10", + "resolved": "https://registry.npmjs.org/readline-sync/-/readline-sync-1.4.10.tgz", + "integrity": "sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw==" + }, "rechoir": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", @@ -12754,14 +12978,12 @@ "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" }, "require-main-filename": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" }, "requireindex": { "version": "1.1.0", @@ -12852,14 +13074,12 @@ "rfdc": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.1.4.tgz", - "integrity": "sha512-5C9HXdzK8EAqN7JDif30jqsBzavB7wLpaubisuQIGHWf2gUXSpzy6ArX/+Da8RjFpagWsCn+pIgxTMAmKw9Zug==", - "dev": true + "integrity": "sha512-5C9HXdzK8EAqN7JDif30jqsBzavB7wLpaubisuQIGHWf2gUXSpzy6ArX/+Da8RjFpagWsCn+pIgxTMAmKw9Zug==" }, "rimraf": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, "requires": { "glob": "^7.1.3" } @@ -12975,8 +13195,7 @@ "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "sane": { "version": "4.1.0", @@ -13055,8 +13274,7 @@ "semver": { "version": "5.7.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", - "dev": true + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" }, "semver-greatest-satisfied-range": { "version": "1.1.0", @@ -13079,8 +13297,7 @@ "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, "set-immediate-shim": { "version": "1.0.1", @@ -13451,6 +13668,24 @@ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, + "ssh2": { + "version": "0.8.7", + "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-0.8.7.tgz", + "integrity": "sha512-/u1BO12kb0lDVxJXejWB9pxyF3/ncgRqI9vPCZuPzo05pdNDzqUeQRavScwSPsfMGK+5H/VRqp1IierIx0Bcxw==", + "requires": { + "ssh2-streams": "~0.4.8" + } + }, + "ssh2-streams": { + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/ssh2-streams/-/ssh2-streams-0.4.10.tgz", + "integrity": "sha512-8pnlMjvnIZJvmTzUIIA5nT4jr2ZWNNVHwyXfMGdRJbug9TpI3kd99ffglgfSWqujVv/0gxwMsDn9j9RVst8yhQ==", + "requires": { + "asn1": "~0.2.0", + "bcrypt-pbkdf": "^1.0.2", + "streamsearch": "~0.1.2" + } + }, "sshpk": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", @@ -13480,8 +13715,7 @@ "stack-trace": { "version": "0.0.10", "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", - "dev": true + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=" }, "stack-utils": { "version": "1.0.2", @@ -13580,6 +13814,38 @@ "readable-stream": "^2.0.2" } }, + "streamroller": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-2.2.4.tgz", + "integrity": "sha512-OG79qm3AujAM9ImoqgWEY1xG4HX+Lw+yY6qZj9R1K2mhF5bEmQ849wvrb+4vt4jLMLzwXttJlQbOdPOQVRv7DQ==", + "requires": { + "date-format": "^2.1.0", + "debug": "^4.1.1", + "fs-extra": "^8.1.0" + }, + "dependencies": { + "date-format": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.1.0.tgz", + "integrity": "sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA==" + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + } + } + }, + "streamsearch": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", + "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=" + }, "string-length": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-length/-/string-length-3.1.0.tgz", @@ -13611,7 +13877,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" @@ -13630,7 +13895,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, "requires": { "ansi-regex": "^3.0.0" } @@ -13672,7 +13936,6 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -14295,8 +14558,7 @@ "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" }, "type": { "version": "1.2.0", @@ -15442,8 +15704,7 @@ "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" }, "which-pm-runs": { "version": "1.0.0", @@ -15475,6 +15736,15 @@ "errno": "~0.1.7" } }, + "wrap-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz", + "integrity": "sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=", + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0" + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -15564,8 +15834,7 @@ "y18n": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", - "dev": true + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" }, "yallist": { "version": "3.1.1", @@ -15586,7 +15855,6 @@ "version": "15.3.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.1.tgz", "integrity": "sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA==", - "dev": true, "requires": { "cliui": "^6.0.0", "decamelize": "^1.2.0", @@ -15604,14 +15872,12 @@ "ansi-regex": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" }, "find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, "requires": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -15620,14 +15886,12 @@ "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, "locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, "requires": { "p-locate": "^4.1.0" } @@ -15636,7 +15900,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, "requires": { "p-try": "^2.0.0" } @@ -15645,7 +15908,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, "requires": { "p-limit": "^2.2.0" } @@ -15653,20 +15915,17 @@ "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" }, "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" }, "string-width": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -15677,7 +15936,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, "requires": { "ansi-regex": "^5.0.0" } @@ -15688,7 +15946,6 @@ "version": "18.1.3", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" From 26962c5eb0c3711dc12cd1f615ea10940b5aba9b Mon Sep 17 00:00:00 2001 From: Katelyn Nienaber Date: Tue, 1 Sep 2020 10:47:05 +0200 Subject: [PATCH 15/17] Fixing delete issue Signed-off-by: Katelyn Nienaber --- src/dataset/actions.ts | 30 +++++++++++++----------------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/src/dataset/actions.ts b/src/dataset/actions.ts index 83afc87122..82bac6a97b 100644 --- a/src/dataset/actions.ts +++ b/src/dataset/actions.ts @@ -583,23 +583,19 @@ export async function deleteDataset(node: IZoweTreeNode, datasetProvider: IZoweT let label = ""; let fav = false; try { - switch (node.getParent().contextValue) { - case (globals.FAVORITE_CONTEXT): - label = node.label.substring(node.label.indexOf(":") + 1).trim(); - fav = true; - break; - case (globals.DS_PDS_CONTEXT + globals.FAV_SUFFIX): - label = node.getParent().getLabel().substring(node.getParent().getLabel().indexOf(":") + 1).trim() + "(" + node.getLabel()+ ")"; - fav = true; - break; - case (globals.DS_SESSION_CONTEXT): - label = node.getLabel(); - break; - case (globals.DS_PDS_CONTEXT): - label = node.getParent().getLabel()+ "(" + node.getLabel()+ ")"; - break; - default: - throw Error(localize("deleteDataSet.invalidNode.error", "deleteDataSet() called from invalid node.")); + const parentContext = node.getParent().contextValue; + if (parentContext.includes(globals.FAVORITE_CONTEXT)) { + label = node.label.substring(node.label.indexOf(":") + 1).trim(); + fav = true; + } else if (parentContext.includes(globals.DS_PDS_CONTEXT + globals.FAV_SUFFIX)) { + label = node.getParent().getLabel().substring(node.getParent().getLabel().indexOf(":") + 1).trim() + "(" + node.getLabel() + ")"; + fav = true; + } else if (parentContext.includes(globals.DS_SESSION_CONTEXT)) { + label = node.getLabel(); + } else if (parentContext.includes(globals.DS_PDS_CONTEXT)) { + label = node.getParent().getLabel() + "(" + node.getLabel() + ")"; + } else { + throw Error(localize("deleteDataSet.invalidNode.error", "deleteDataSet() called from invalid node.")); } await datasetProvider.checkCurrentProfile(node); if (Profiles.getInstance().validProfile === ValidProfileEnum.VALID) { From 182fab88e516614429bbb10225f3297046e03164 Mon Sep 17 00:00:00 2001 From: Katelyn Nienaber Date: Tue, 1 Sep 2020 10:50:26 +0200 Subject: [PATCH 16/17] Removing allocate like from member context menu Signed-off-by: Katelyn Nienaber --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 984a717cd7..8327a7e40d 100644 --- a/package.json +++ b/package.json @@ -750,7 +750,7 @@ "group": "5_workspace@3" }, { - "when": "view == zowe.explorer && viewItem =~ /^(member|ds|pds).*/", + "when": "view == zowe.explorer && viewItem =~ /^(ds|pds).*/", "command": "zowe.allocateLike", "group": "6_cutCopyPaste@0" }, From 83ed019e7f525f6281a0e702a41b81cb1b404c95 Mon Sep 17 00:00:00 2001 From: Katelyn Nienaber Date: Tue, 1 Sep 2020 12:24:28 +0200 Subject: [PATCH 17/17] Fixed allocate like from favorites Signed-off-by: Katelyn Nienaber --- src/dataset/actions.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dataset/actions.ts b/src/dataset/actions.ts index 82bac6a97b..82f8d6b0c0 100644 --- a/src/dataset/actions.ts +++ b/src/dataset/actions.ts @@ -90,7 +90,7 @@ export async function allocateLike(datasetProvider: IZoweTree