Skip to content

Commit d83acf1

Browse files
committed
refactor: replace q.promise with native promise and remove q package
1 parent b89ed4b commit d83acf1

4 files changed

Lines changed: 60 additions & 59 deletions

File tree

package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@
4545
"progress": "^1.1.8",
4646
"prompt": "^0.2.14",
4747
"properties": "^1.2.1",
48-
"q": "~1.4.1",
4948
"recursive-fs": "0.1.4",
5049
"rimraf": "^3.0.2",
5150
"semver": "^7.3.2",

src/definitions/cli.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ export type ReleaseHook = (
219219
currentCommand: IReleaseCommand,
220220
originalCommand: IReleaseCommand,
221221
sdk: AccountManager
222-
) => Q.Promise<IReleaseCommand | void>;
222+
) => Promise<IReleaseCommand | void>;
223223

224224
export interface ReleaseFile {
225225
sourceLocation: string; // The current location of the file on disk

src/release-hooks/core-release.ts

Lines changed: 21 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@ import fs from "fs";
22
import path from "path";
33
import recursiveFs from "recursive-fs";
44
import slash = require("slash");
5-
import Q from "q";
6-
import Promise = Q.Promise;
75
import yazl from "yazl";
86
var progress = require("progress");
97

@@ -19,7 +17,7 @@ var coreReleaseHook: cli.ReleaseHook = (
1917
originalCommand: cli.IReleaseCommand,
2018
sdk: AccountManager
2119
): Promise<cli.IReleaseCommand> => {
22-
return Q(<void>null)
20+
return Promise.resolve(<void>null)
2321
.then(() => {
2422
var releaseFiles: ReleaseFile[] = [];
2523

@@ -28,36 +26,35 @@ var coreReleaseHook: cli.ReleaseHook = (
2826
sourceLocation: currentCommand.package,
2927
targetLocation: path.basename(currentCommand.package), // Put the file in the root
3028
});
31-
return Q(releaseFiles);
29+
return Promise.resolve(releaseFiles);
3230
}
3331

34-
var deferred = Q.defer<ReleaseFile[]>();
35-
var directoryPath: string = currentCommand.package;
36-
var baseDirectoryPath = path.join(directoryPath, ".."); // For legacy reasons, put the root directory in the zip
32+
return new Promise<ReleaseFile[]>((resolve, reject) => {
33+
var directoryPath: string = currentCommand.package;
34+
var baseDirectoryPath = path.join(directoryPath, ".."); // For legacy reasons, put the root directory in the zip
3735

38-
recursiveFs.readdirr(currentCommand.package, (error?: any, directories?: string[], files?: string[]): void => {
39-
if (error) {
40-
deferred.reject(error);
41-
return;
42-
}
36+
recursiveFs.readdirr(currentCommand.package, (error?: any, directories?: string[], files?: string[]): void => {
37+
if (error) {
38+
reject(error);
39+
return;
40+
}
4341

44-
files.forEach((filePath: string) => {
45-
var relativePath: string = path.relative(baseDirectoryPath, filePath);
46-
// yazl does not like backslash (\) in the metadata path.
47-
relativePath = slash(relativePath);
48-
releaseFiles.push({
49-
sourceLocation: filePath,
50-
targetLocation: relativePath,
42+
files.forEach((filePath: string) => {
43+
var relativePath: string = path.relative(baseDirectoryPath, filePath);
44+
// yazl does not like backslash (\) in the metadata path.
45+
relativePath = slash(relativePath);
46+
releaseFiles.push({
47+
sourceLocation: filePath,
48+
targetLocation: relativePath,
49+
});
5150
});
52-
});
5351

54-
deferred.resolve(releaseFiles);
52+
resolve(releaseFiles);
53+
});
5554
});
56-
57-
return deferred.promise;
5855
})
5956
.then((releaseFiles: ReleaseFile[]) => {
60-
return Promise<string>((resolve: (file: string) => void, reject: (reason: Error) => void): void => {
57+
return new Promise<string>((resolve, reject): void => {
6158
var packagePath: string = path.join(process.cwd(), generateRandomFilename(15) + ".zip");
6259
var zipFile = new yazl.ZipFile();
6360
var writeStream: fs.WriteStream = fs.createWriteStream(packagePath);

src/release-hooks/signing.ts

Lines changed: 38 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import fs from "fs";
33
import jwt from "jsonwebtoken";
44
import os from "os";
55
import path from "path";
6-
import q from "q";
76
import * as rimraf from "rimraf";
87
import { generatePackageHashFromDirectory } from "../lib/hash-utils";
98

@@ -17,7 +16,7 @@ interface CodeSigningClaims {
1716
contentHash: string;
1817
}
1918

20-
const deletePreviousSignatureIfExists = (targetPackage: string): q.Promise<any> => {
19+
const deletePreviousSignatureIfExists = (targetPackage: string): Promise<any> => {
2120
let signatureFilePath: string = path.join(targetPackage, METADATA_FILE_NAME);
2221
let prevSignatureExists: boolean = true;
2322
try {
@@ -26,7 +25,7 @@ const deletePreviousSignatureIfExists = (targetPackage: string): q.Promise<any>
2625
if (err.code === "ENOENT") {
2726
prevSignatureExists = false;
2827
} else {
29-
return q.reject(
28+
return Promise.reject(
3029
new Error(
3130
`Could not delete previous release signature at ${signatureFilePath}.
3231
Please, check your access rights.`
@@ -40,35 +39,35 @@ const deletePreviousSignatureIfExists = (targetPackage: string): q.Promise<any>
4039
rimraf.sync(signatureFilePath);
4140
}
4241

43-
return q.resolve(<void>null);
42+
return Promise.resolve(<void>null);
4443
};
4544

4645
var sign: cli.ReleaseHook = (
4746
currentCommand: cli.IReleaseCommand,
4847
originalCommand: cli.IReleaseCommand,
4948
sdk: AccountManager
50-
): q.Promise<cli.IReleaseCommand> => {
49+
): Promise<cli.IReleaseCommand> => {
5150
if (!currentCommand.privateKeyPath) {
5251
if (fs.lstatSync(currentCommand.package).isDirectory()) {
5352
// If new update wasn't signed, but signature file for some reason still appears in the package directory - delete it
5453
return deletePreviousSignatureIfExists(currentCommand.package).then(() => {
55-
return q.resolve<cli.IReleaseCommand>(currentCommand);
54+
return Promise.resolve<cli.IReleaseCommand>(currentCommand);
5655
});
5756
} else {
58-
return q.resolve<cli.IReleaseCommand>(currentCommand);
57+
return Promise.resolve<cli.IReleaseCommand>(currentCommand);
5958
}
6059
}
6160

6261
let privateKey: Buffer;
6362
let signatureFilePath: string;
6463

65-
return q(<void>null)
64+
return Promise.resolve(<void>null)
6665
.then(() => {
6766
signatureFilePath = path.join(currentCommand.package, METADATA_FILE_NAME);
6867
try {
6968
privateKey = fs.readFileSync(currentCommand.privateKeyPath);
7069
} catch (err) {
71-
return q.reject(new Error(`The path specified for the signing key ("${currentCommand.privateKeyPath}") was not valid`));
70+
return Promise.reject(new Error(`The path specified for the signing key ("${currentCommand.privateKeyPath}") was not valid`));
7271
}
7372

7473
if (!fs.lstatSync(currentCommand.package).isDirectory()) {
@@ -89,39 +88,45 @@ var sign: cli.ReleaseHook = (
8988
return generatePackageHashFromDirectory(currentCommand.package, path.join(currentCommand.package, ".."));
9089
})
9190
.then((hash: string) => {
92-
var claims: CodeSigningClaims = {
93-
claimVersion: CURRENT_CLAIM_VERSION,
94-
contentHash: hash,
95-
};
96-
97-
return q
98-
.nfcall<string>(jwt.sign, claims, privateKey, {
99-
algorithm: "RS256",
100-
})
101-
.catch((err: Error) => {
102-
return q.reject<string>(new Error("The specified signing key file was not valid"));
103-
});
91+
return new Promise<string>((resolve, reject) => {
92+
const claims: CodeSigningClaims = {
93+
claimVersion: CURRENT_CLAIM_VERSION,
94+
contentHash: hash,
95+
};
96+
97+
jwt.sign(
98+
claims,
99+
privateKey,
100+
{
101+
algorithm: "RS256",
102+
},
103+
(err, token) => {
104+
if (err) {
105+
return reject(new Error("The specified signing key file was not valid"));
106+
}
107+
resolve(token);
108+
}
109+
);
110+
});
104111
})
105112
.then((signedJwt: string) => {
106-
var deferred = q.defer<void>();
107-
108-
fs.writeFile(signatureFilePath, signedJwt, (err: Error) => {
109-
if (err) {
110-
deferred.reject(err);
111-
} else {
112-
console.log(`Generated a release signature and wrote it to ${signatureFilePath}`);
113-
deferred.resolve(<void>null);
114-
}
113+
return new Promise<void>((resolve, reject) => {
114+
fs.writeFile(signatureFilePath, signedJwt, (err: Error) => {
115+
if (err) {
116+
reject(err);
117+
} else {
118+
console.log(`Generated a release signature and wrote it to ${signatureFilePath}`);
119+
resolve(<void>null);
120+
}
121+
});
115122
});
116-
117-
return deferred.promise;
118123
})
119124
.then(() => {
120125
return currentCommand;
121126
})
122127
.catch((err: Error) => {
123128
err.message = `Could not sign package: ${err.message}`;
124-
return q.reject<cli.IReleaseCommand>(err);
129+
return Promise.reject<cli.IReleaseCommand>(err);
125130
});
126131
};
127132

0 commit comments

Comments
 (0)