Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(v3-zftp): Update the zFTP VSCE with the V3 version of the plug-in #2783

Merged
merged 25 commits into from
May 2, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
66d9106
Fix build errors in ftp-v3
zFernand0 Mar 7, 2024
3620db2
update more APIs to match the FTP plug-in APIs
zFernand0 Mar 11, 2024
9cd0497
fix jobs related operations
zFernand0 Mar 13, 2024
daebffa
Merge branch 'next' of https://github.com/zowe/zowe-explorer-vscode i…
zFernand0 Mar 13, 2024
4940604
more removals for zFTP VSCE
zFernand0 Mar 13, 2024
c32f858
update based on new exports
zFernand0 Mar 16, 2024
c836388
Merge branch 'next' into prep/ftp-v3
zFernand0 Mar 18, 2024
754fa9f
update ftp version
zFernand0 Mar 19, 2024
6beb8c3
fix devDep vulns + lint issues
zFernand0 Mar 19, 2024
79c1a0a
fix unit test
zFernand0 Mar 19, 2024
498517b
add 'eslint-plugin-deprecation'
zFernand0 Mar 19, 2024
ccb2dd1
revert 'got' devDep
zFernand0 Mar 19, 2024
a75bc05
Merge branch 'next' into prep/ftp-v3
zFernand0 Mar 19, 2024
119b9e8
update changelog and fix unit test
zFernand0 Mar 19, 2024
7ca1c9b
address most new code-smells
zFernand0 Mar 19, 2024
760fbcb
address build failures after resolving some TODOs
zFernand0 Mar 19, 2024
3782dbb
fix unit test
zFernand0 Mar 19, 2024
95c9b69
remove unused import :yum:
zFernand0 Mar 19, 2024
53f645c
fix: update changelog
zFernand0 Apr 1, 2024
307fbeb
Merge branch 'next' of https://github.com/zowe/vscode-extension-for-z…
zFernand0 Apr 15, 2024
b24744c
doc: address PR feedback
zFernand0 Apr 29, 2024
6524881
Merge branch 'next' of https://github.com/zowe/vscode-extension-for-z…
zFernand0 Apr 29, 2024
1ee51f9
test: fix small unit test
zFernand0 Apr 29, 2024
0128f96
chore: forgot to add the ze changelog update
zFernand0 Apr 29, 2024
c5dbe78
Merge branch 'next' of https://github.com/zowe/vscode-extension-for-z…
zFernand0 Apr 30, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .eslintrc.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ extends:
- eslint:recommended
- plugin:@typescript-eslint/recommended-requiring-type-checking
- prettier
- plugin:deprecation/recommended
env:
node: true
es6: true
Expand Down
2 changes: 1 addition & 1 deletion .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,4 @@ results
scripts
node_modules
pnpm-lock.yaml
bundle.l10n.json
**/bundle.l10n.json
7 changes: 5 additions & 2 deletions .vscode/tasks.json
Original file line number Diff line number Diff line change
Expand Up @@ -85,15 +85,18 @@
{
"regexp": "\\s*TS\\d+:\\s*(.*)",
"message": 1
},
{
"regexp": "webpack(.*)compiled(.*)with(.*)error"
}
],
"background": {
"activeOnStart": true,
"beginsPattern": {
"regexp": "Compilation (.*?)starting…"
"regexp": "webpack --mode development"
},
"endsPattern": {
"regexp": "Compilation (.*?)finished"
"regexp": "webpack(.*)compiled(.*)with"
}
}
}
Expand Down
5 changes: 4 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
"eslint": "^8.34.0",
"eslint-config-prettier": "^8.6.0",
"eslint-plugin-prettier": "^4.2.1",
"eslint-plugin-deprecation": "^2.0.0",
"eslint-plugin-zowe-explorer": "workspace:./packages/eslint-plugin-zowe-explorer",
"husky": "^6.0.0",
"jest": "^29.3.1",
Expand All @@ -58,7 +59,9 @@
"overrides": {
"json5": "^2.2.2",
"optionator": "^0.9.3",
"semver": "^7.5.2"
"tar@<6.1.7": "^6.1.7",
"follow-redirects@<1.15.6": "^1.15.6",
"xml2js@<0.5.0": "^0.5.0"
}
},
"scripts": {
Expand Down
2 changes: 2 additions & 0 deletions packages/zowe-explorer-api/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ All notable changes to the "zowe-explorer-api" extension will be documented in t
- `encoding` property on the `IZoweDatasetTreeNode` and `IZoweUSSTreeNode` interfaces - use the `getEncoding` and `setEncoding` functions instead.
- `shortLabel` property on the `IZoweUSSTreeNode` interface - use the `getBaseName` function instead.
- `attributes` property on the `IZoweUSSTreeNode` interface - use the `getAttributes` and `setAttributes` functions instead.
- **Breaking:** Added return type of `Promise<void>` to `MainframeInteractions.ICommon.logout`. [#2783](https://github.com/zowe/vscode-extension-for-zowe/pull/2783).

### Bug fixes

Expand All @@ -37,6 +38,7 @@ All notable changes to the "zowe-explorer-api" extension will be documented in t

### Bug fixes

- Updated the SDK dependencies to `8.0.0-next.202404032038` for technical currency [#2783](https://github.com/zowe/vscode-extension-for-zowe/pull/2783).
- Fixed an issue where the `ProfilesCache` class would retain old service profiles, even if they were removed from the team config. [#2395](https://github.com/zowe/zowe-explorer-vscode/issues/2395)
- **Breaking:** issueUnixCommand API now takes sshSession as a optional parameter. [#2866](https://github.com/zowe/zowe-explorer-vscode/pull/2866)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,29 +25,29 @@ describe("KeytarApi", () => {
isCredsSecuredSpy.mockReturnValueOnce(true);
credMgrInitializeSpy.mockResolvedValueOnce();
await new KeytarApi(undefined as unknown as imperative.Logger).activateKeytar(false);
expect(isCredsSecuredSpy).toBeCalledTimes(1);
expect(credMgrInitializeSpy).toBeCalledTimes(1);
expect(isCredsSecuredSpy).toHaveBeenCalledTimes(1);
expect(credMgrInitializeSpy).toHaveBeenCalledTimes(1);
});

it("should do nothing if secure credential plugin is not active", async () => {
isCredsSecuredSpy.mockReturnValueOnce(false);
await new KeytarApi(undefined as unknown as imperative.Logger).activateKeytar(false);
expect(isCredsSecuredSpy).toBeCalledTimes(1);
expect(credMgrInitializeSpy).not.toBeCalled();
expect(isCredsSecuredSpy).toHaveBeenCalledTimes(1);
expect(credMgrInitializeSpy).not.toHaveBeenCalled();
});

it("should do nothing if API has already been initialized", async () => {
isCredsSecuredSpy.mockReturnValueOnce(true);
await new KeytarApi(undefined as unknown as imperative.Logger).activateKeytar(true);
expect(isCredsSecuredSpy).toBeCalledTimes(1);
expect(credMgrInitializeSpy).not.toBeCalled();
expect(isCredsSecuredSpy).toHaveBeenCalledTimes(1);
expect(credMgrInitializeSpy).not.toHaveBeenCalled();
});

it("should do nothing if Keytar module is missing", async () => {
jest.mock("@zowe/secrets-for-zowe-sdk", () => {});
isCredsSecuredSpy.mockReturnValueOnce(true);
await new KeytarApi(undefined as unknown as imperative.Logger).activateKeytar(false);
expect(isCredsSecuredSpy).toBeCalledTimes(1);
expect(credMgrInitializeSpy).not.toBeCalled();
expect(isCredsSecuredSpy).toHaveBeenCalledTimes(1);
expect(credMgrInitializeSpy).not.toHaveBeenCalled();
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@ describe("ZoweVsCodeExtension", () => {
describe("deprecated methods", () => {
it("showVsCodeMessage should pass on params to Gui module", () => {
const showMessageSpy = jest.spyOn(Gui, "showMessage").mockImplementation();
/* eslint-disable-next-line deprecation/deprecation */
ZoweVsCodeExtension.showVsCodeMessage("test", MessageSeverity.INFO, undefined as any);
expect(showMessageSpy).toHaveBeenCalledWith("test", {
severity: MessageSeverity.INFO,
Expand All @@ -106,6 +107,7 @@ describe("ZoweVsCodeExtension", () => {
title: "fakeTitle",
value: "fakeValue",
};
/* eslint-disable-next-line deprecation/deprecation */
await ZoweVsCodeExtension.inputBox(inputBoxOptions);
expect(showInputBoxSpy).toHaveBeenCalledWith(inputBoxOptions);
});
Expand All @@ -126,6 +128,7 @@ describe("ZoweVsCodeExtension", () => {
}),
});
const showInputBoxSpy = jest.spyOn(Gui, "showInputBox").mockResolvedValueOnce("fakeUser").mockResolvedValueOnce("fakePassword");
/* eslint-disable-next-line deprecation/deprecation */
const profileLoaded: imperative.IProfileLoaded = await ZoweVsCodeExtension.promptCredentials(promptCredsOptions);
expect(profileLoaded.profile?.user).toBe("fakeUser");
expect(profileLoaded.profile?.password).toBe("fakePassword");
Expand All @@ -139,6 +142,7 @@ describe("ZoweVsCodeExtension", () => {
getProfileInfo: jest.fn(),
});
const showInputBoxSpy = jest.spyOn(Gui, "showInputBox");
/* eslint-disable-next-line deprecation/deprecation */
const profileLoaded: any = await ZoweVsCodeExtension.promptCredentials(promptCredsOptions);
expect(profileLoaded).toBeUndefined();
expect(showInputBoxSpy).not.toHaveBeenCalled();
Expand All @@ -155,6 +159,7 @@ describe("ZoweVsCodeExtension", () => {
}),
});
const showInputBoxSpy = jest.spyOn(Gui, "showInputBox").mockResolvedValueOnce(undefined);
/* eslint-disable-next-line deprecation/deprecation */
const profileLoaded: any = await ZoweVsCodeExtension.promptCredentials(promptCredsOptions);
expect(profileLoaded).toBeUndefined();
expect(showInputBoxSpy).toHaveBeenCalledTimes(1);
Expand All @@ -172,6 +177,7 @@ describe("ZoweVsCodeExtension", () => {
}),
});
const showInputBoxSpy = jest.spyOn(Gui, "showInputBox").mockResolvedValueOnce("fakeUser").mockResolvedValueOnce(undefined);
/* eslint-disable-next-line deprecation/deprecation */
const profileLoaded: any = await ZoweVsCodeExtension.promptCredentials(promptCredsOptions);
expect(profileLoaded).toBeUndefined();
expect(showInputBoxSpy).toHaveBeenCalledTimes(2);
Expand Down
2 changes: 1 addition & 1 deletion packages/zowe-explorer-api/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
"@zowe/zos-uss-for-zowe-sdk": "8.0.0-next.202404032038",
"@zowe/zosmf-for-zowe-sdk": "8.0.0-next.202404032038",
"handlebars": "^4.7.7",
"semver": "^7.5.3"
"semver": "^7.5.4"
},
"scripts": {
"build": "pnpm check-cli && pnpm copy-secrets && pnpm clean && pnpm license && tsc -p ./ && pnpm madge",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ export namespace MainframeInteraction {
*
* @param {imperative.Session} session a Zowe CLI Session
*/
logout?(session: imperative.Session);
logout?(session: imperative.Session): Promise<void>;
zFernand0 marked this conversation as resolved.
Show resolved Hide resolved

/**
* Return the type name of the token supported by this api.
Expand Down
2 changes: 2 additions & 0 deletions packages/zowe-explorer-ftp-extension/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ All notable changes to the "zowe-explorer-ftp-extension" extension will be docum

### Bug fixes

- Updated the FTP plugin dependency to `3.0.0-next.202403191358` for technical currency [#2783](https://github.com/zowe/vscode-extension-for-zowe/pull/2783).

## `3.0.0-next.202404242037`

### New features and enhancements
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,9 @@ describe("AbstractFtpApi", () => {
it("should return active from sessionStatus when getStatus is called w/ correct profile", async () => {
Object.defineProperty(Gui, "showMessage", { value: jest.fn(), configurable: true });
const instance = new Dummy(profile);
jest.spyOn(FTPConfig, "connectFromArguments").mockImplementationOnce(jest.fn((prof) => Promise.resolve({ test: "Test successful object" })));
jest.spyOn(FTPConfig, "connectFromArguments").mockImplementationOnce(
jest.fn(((prof) => Promise.resolve({ test: "Test successful object" })) as any)
);

const status = await instance.getStatus(profile, "zftp");
expect(status).toStrictEqual("active");
Expand All @@ -150,7 +152,7 @@ describe("AbstractFtpApi", () => {
it("should return inactive from sessionStatus when getStatus is called w/ correct profile", async () => {
Object.defineProperty(Gui, "showMessage", { value: jest.fn(), configurable: true });
const instance = new Dummy(profile);
jest.spyOn(FTPConfig, "connectFromArguments").mockImplementationOnce(jest.fn((prof) => Promise.resolve(false)));
jest.spyOn(FTPConfig, "connectFromArguments").mockImplementationOnce(jest.fn(((prof) => Promise.resolve(false)) as any));

const status = await instance.getStatus(profile, "zftp");
expect(status).toStrictEqual("inactive");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,14 +32,14 @@ describe("FtpJesApi", () => {
JesApi.checkedProfile = jest.fn().mockReturnValue({ message: "success", type: "zftp", failNotFound: false });
JesApi.ftpClient = jest.fn().mockReturnValue({ host: "", user: "", password: "", port: "" });
JesApi.releaseConnection = jest.fn();
globals.SESSION_MAP.get = jest.fn().mockReturnValue({ jesListConnection: { connected: true } });
globals.SESSION_MAP.get = jest.fn().mockReturnValue({ jesListConnection: { isConnected: () => true } });
globals.LOGGER.getExtensionName = jest.fn().mockReturnValue("Zowe Explorer FTP Extension");
});

it("should list jobs by owner and prefix.", async () => {
const response = [
{ jobid: "123", jobname: "JOB1" },
{ jobid: "234", jonname: "JOB2" },
{ jobId: "123", jobName: "JOB1" },
{ jobId: "234", jobName: "JOB2" },
];
JobUtils.listJobs = jest.fn().mockReturnValue(response);
const mockParams = {
Expand All @@ -54,7 +54,7 @@ describe("FtpJesApi", () => {
});

it("should get job by jobid.", async () => {
const jobStatus = { jobid: "123", jobname: "JOB1" };
const jobStatus = { jobId: "123", jobName: "JOB1" };
JobUtils.findJobByID = jest.fn().mockReturnValue(jobStatus);
const mockParams = {
jobid: "123",
Expand All @@ -67,24 +67,24 @@ describe("FtpJesApi", () => {
});

it("should get spoolfiles.", async () => {
const response = { jobid: "123", jobname: "JOB1", spoolFiles: [{ id: "1" }] };
const response = { jobId: "123", jobName: "JOB1", spoolFiles: [{ id: 1 }] };
JobUtils.findJobByID = jest.fn().mockReturnValue(response);
const mockParams = {
jobname: "JOB1",
jobid: "123",
};
const result = await JesApi.getSpoolFiles(mockParams.jobname, mockParams.jobid);

expect(result[0].id).toContain("1");
expect(result[0].id).toEqual(1);
expect(JobUtils.findJobByID).toHaveBeenCalledTimes(1);
expect(JesApi.releaseConnection).toHaveBeenCalled();
});

it("should download spool content.", async () => {
const jobDetails = { jobid: "123", jobname: "JOB1", spoolFiles: [{ id: "1" }, { id: "2" }] };
const jobDetails = { jobId: "123", jobName: "JOB1", spoolFiles: [{ id: 1 }, { id: 2 }] };
JobUtils.findJobByID = jest.fn().mockReturnValue(jobDetails);
JobUtils.getSpoolFiles = jest.fn().mockReturnValue(jobDetails.spoolFiles);
zosjobs.DownloadJobs.getSpoolDownloadFilePath = jest.fn().mockReturnValue("/tmp/file1");
imperative.IO.createDirsSyncFromFilePath = jest.fn();
imperative.IO.writeFile = jest.fn();
const mockParams = {
parms: { jobname: "JOB1", jobid: "123", outDir: "/a/b/c" },
Expand All @@ -93,16 +93,19 @@ describe("FtpJesApi", () => {
await JesApi.downloadSpoolContent(mockParams.parms);
expect(JobUtils.findJobByID).toHaveBeenCalledTimes(1);
expect(JobUtils.getSpoolFiles).toHaveBeenCalledTimes(1);
expect(zosjobs.DownloadJobs.getSpoolDownloadFilePath).toHaveBeenCalledTimes(2);
expect(imperative.IO.createDirsSyncFromFilePath).toHaveBeenCalledTimes(2);
expect(imperative.IO.writeFile).toHaveBeenCalledTimes(2);
expect(JesApi.releaseConnection).toHaveBeenCalled();
});

it("should throw an error when downloading spool content if no spool files are available.", async () => {
const jobDetails = { jobid: "123", jobname: "JOB1" };
const jobDetails = { jobId: "123", jobName: "JOB1" };
const mockParams = {
parms: { jobname: "JOB1", jobid: "123", outDir: "/a/b/c" },
};
JobUtils.findJobByID = jest.fn().mockReturnValue(jobDetails);

expect(JesApi.downloadSpoolContent).rejects.toThrowError();
await expect(JesApi.downloadSpoolContent(mockParams.parms)).rejects.toThrow();
});

it("should get spool content by id.", async () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ describe("FtpMvsApi", () => {
MvsApi.checkedProfile = jest.fn().mockReturnValue({ message: "success", type: "zftp", profile: { secureFtp: false }, failNotFound: false });
MvsApi.ftpClient = jest.fn().mockReturnValue({ host: "", user: "", password: "", port: "" });
MvsApi.releaseConnection = jest.fn();
globals.SESSION_MAP.get = jest.fn().mockReturnValue({ mvsListConnection: { connected: true } });
globals.SESSION_MAP.get = jest.fn().mockReturnValue({ mvsListConnection: { isConnected: () => true } });
globals.LOGGER.getExtensionName = jest.fn().mockReturnValue("Zowe Explorer FTP Extension");
});

Expand All @@ -50,8 +50,8 @@ describe("FtpMvsApi", () => {

it("should list datasets.", async () => {
const response = [
{ dsname: "IBMUSER.DS1", dsorg: "PO", volume: "MIGRATED" },
{ dsname: "IBMUSER.DS2", dsorg: "PS" },
{ name: "IBMUSER.DS1", dsOrg: "PO", volume: "MIGRATED" },
{ name: "IBMUSER.DS2", dsOrg: "PS" },
];
DataSetUtils.listDataSets = jest.fn().mockReturnValue(response);
const mockParams = {
Expand Down Expand Up @@ -133,7 +133,7 @@ describe("FtpMvsApi", () => {

fs.writeFileSync(localFile, "");
const response = TestUtils.getSingleLineStream();
DataSetUtils.listDataSets = jest.fn().mockReturnValue([{ dsname: "USER.EMPTYDS", dsorg: "PS", lrecl: 2 }]);
DataSetUtils.listDataSets = jest.fn().mockReturnValue([{ name: "USER.EMPTYDS", dsOrg: "PS", recordLength: 2 }]);
const uploadDataSetMock = jest.fn().mockReturnValue(response);
DataSetUtils.uploadDataSet = uploadDataSetMock;
jest.spyOn(MvsApi, "getContents").mockResolvedValue({ apiResponse: { etag: "123" } } as any);
Expand Down Expand Up @@ -170,7 +170,7 @@ describe("FtpMvsApi", () => {

fs.writeFileSync(localFile, "");
const response = TestUtils.getSingleLineStream();
DataSetUtils.listDataSets = jest.fn().mockReturnValue([{ dsname: "USER.EMPTYDS", dsorg: "PS", lrecl: 2 }]);
DataSetUtils.listDataSets = jest.fn().mockReturnValue([{ name: "USER.EMPTYDS", dsOrg: "PS", recordLength: 2 }]);
const uploadDataSetMock = jest.fn().mockReturnValue(response);
DataSetUtils.uploadDataSet = uploadDataSetMock;
jest.spyOn(MvsApi, "getContents").mockResolvedValue({ apiResponse: { etag: "123" } } as any);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ describe("FtpUssApi", () => {
UssApi.checkedProfile = jest.fn().mockReturnValue({ message: "success", type: "zftp", failNotFound: false });
UssApi.ftpClient = jest.fn().mockReturnValue({ host: "", user: "", password: "", port: "" });
UssApi.releaseConnection = jest.fn();
globals.SESSION_MAP.get = jest.fn().mockReturnValue({ ussListConnection: { connected: true } });
globals.SESSION_MAP.get = jest.fn().mockReturnValue({ ussListConnection: { isConnected: () => true } });
globals.LOGGER.getExtensionName = jest.fn().mockReturnValue("Zowe Explorer FTP Extension");
});

Expand Down Expand Up @@ -85,12 +85,12 @@ describe("FtpUssApi", () => {

it("should throw error for getContents if connection to FTP client fails.", async () => {
jest.spyOn(UssApi, "ftpClient").mockReturnValueOnce(null);
expect(UssApi.getContents("/some/example/path", {})).rejects.toThrowError();
expect(UssApi.getContents("/some/example/path", {})).rejects.toThrow();
});

it("should throw error for putContent if connection to FTP client fails.", async () => {
jest.spyOn(UssApi, "ftpClient").mockReturnValueOnce(null);
expect(UssApi.putContent("/some/example/input/path", "/some/uss/path")).rejects.toThrowError();
expect(UssApi.putContent("/some/example/input/path", "/some/uss/path")).rejects.toThrow();
});

it("should upload uss files.", async () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import { FtpSession } from "../../src/ftpSession";
import { imperative } from "@zowe/zowe-explorer-api";

describe("FtpSession Unit Tests - function releaseConnections", () => {
it("should release all connecitons", () => {
it("should release all connecitons", async () => {
const testFtpSession = new FtpSession({
hostname: "sample.com",
} as imperative.ISession);
Expand Down Expand Up @@ -41,7 +41,7 @@ describe("FtpSession Unit Tests - function releaseConnections", () => {
configurable: true,
writable: true,
});
expect(testFtpSession.releaseConnections()).toEqual(undefined);
await expect(testFtpSession.releaseConnections()).toEqual(undefined);
expect(ussListConnectionMock).toHaveBeenCalledTimes(1);
expect(mvsListConnectionMock).toHaveBeenCalledTimes(1);
expect(jesListConnectionMock).toHaveBeenCalledTimes(1);
Expand Down
7 changes: 2 additions & 5 deletions packages/zowe-explorer-ftp-extension/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
"lint:html": "eslint . --format html > results/eslint.html",
"madge": "madge -c --no-color --no-spinner --exclude __mocks__ --extensions js,ts src/",
"pretty": "prettier --write .",
"watch": "webpack --mode development --watch --info-verbosity verbose",
"watch": "webpack --mode development --watch",
"clean": "rimraf out",
"fresh-clone": "pnpm clean && (rimraf node_modules || true)",
"vscode:prepublish": "webpack --mode production",
Expand All @@ -49,17 +49,14 @@
},
"dependencies": {
"@zowe/zos-files-for-zowe-sdk": "8.0.0-next.202404032038",
"@zowe/zos-ftp-for-zowe-cli": "2.1.8",
"@zowe/zos-ftp-for-zowe-cli": "3.0.0-next.202403191358",
zFernand0 marked this conversation as resolved.
Show resolved Hide resolved
"@zowe/zos-jobs-for-zowe-sdk": "8.0.0-next.202404032038",
"@zowe/zowe-explorer-api": "3.0.0-next-SNAPSHOT",
"tmp": "0.2.3"
},
"devDependencies": {
"@types/tmp": "0.2.6"
},
"overrides": {
"@zowe/imperative": "8.0.0-next.202404032038"
},
"jest": {
"moduleFileExtensions": [
"js",
Expand Down
Loading
Loading