Skip to content

Commit dbc1404

Browse files
committed
Restore the ITransformer.close() method
1 parent 863c039 commit dbc1404

File tree

6 files changed

+37
-13
lines changed

6 files changed

+37
-13
lines changed

src/FastTransformer.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,20 @@ export class FastTransformer implements ITransformer {
3333
}
3434

3535
/**
36-
* Closes this transformer and releases any resources associated with it.
36+
* Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
37+
* Calls the {@link close} method.
3738
* @returns Resolves when the transformer is finally disposed.
3839
*/
3940
[Symbol.asyncDispose](): Promise<void> {
40-
this.#process?.[Symbol.dispose]();
41+
return this.close();
42+
}
43+
44+
/**
45+
* Closes this transformer and releases any resources associated with it.
46+
* @returns Resolves when the transformer is finally disposed.
47+
*/
48+
close(): Promise<void> {
49+
this.#process?.kill();
4150
this.#process = null;
4251
return Promise.resolve();
4352
}

src/GulpPlugin.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ export class GulpPlugin extends Transform {
3333
this.#silent = options.silent ?? false;
3434
this.#transformer = (options.mode ?? "safe") == "fast" ? new FastTransformer(binary) : new SafeTransformer(binary);
3535

36-
const dispose = async (): Promise<void> => { await this.#transformer[Symbol.asyncDispose](); };
37-
this.on("end", dispose).on("error", dispose); // eslint-disable-line @typescript-eslint/no-misused-promises
36+
const close = async (): Promise<void> => { await this.#transformer.close(); };
37+
this.on("end", close).on("error", close); // eslint-disable-line @typescript-eslint/no-misused-promises
3838
}
3939

4040
/**

src/ITransformer.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,12 @@
33
*/
44
export interface ITransformer extends AsyncDisposable {
55

6+
/**
7+
* Closes this transformer and releases any resources associated with it.
8+
* @returns Resolves when the transformer is finally disposed.
9+
*/
10+
close: () => Promise<void>;
11+
612
/**
713
* Processes a PHP script.
814
* @param file The path to the PHP script.

src/SafeTransformer.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,19 @@ export class SafeTransformer implements ITransformer {
2727
}
2828

2929
/**
30-
* Closes this transformer and releases any resources associated with it.
30+
* Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
31+
* Calls the {@link close} method.
3132
* @returns Resolves when the transformer is finally disposed.
3233
*/
3334
[Symbol.asyncDispose](): Promise<void> {
35+
return this.close();
36+
}
37+
38+
/**
39+
* Closes this transformer and releases any resources associated with it.
40+
* @returns Resolves when the transformer is finally disposed.
41+
*/
42+
close(): Promise<void> {
3443
return Promise.resolve();
3544
}
3645

test/FastTransformerTest.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@ import {after, describe, it} from "node:test";
66
* Tests the features of the {@link FastTransformer} class.
77
*/
88
describe("FastTransformer", () => {
9-
describe("asyncDispose()", () => {
9+
describe("close()", () => {
1010
it("should not reject, even if called several times", async () => {
1111
const transformer = new FastTransformer;
1212
await doesNotReject(transformer.listen());
13-
await doesNotReject(transformer[Symbol.asyncDispose]());
14-
await doesNotReject(transformer[Symbol.asyncDispose]());
13+
await doesNotReject(transformer.close());
14+
await doesNotReject(transformer.close());
1515
});
1616
});
1717

@@ -32,7 +32,7 @@ describe("FastTransformer", () => {
3232
]);
3333

3434
const transformer = new FastTransformer;
35-
after(() => transformer[Symbol.asyncDispose]());
35+
after(() => transformer.close());
3636

3737
for (const [key, value] of map) it(key, async () => {
3838
const output = await transformer.transform("res/Sample.php");

test/SafeTransformerTest.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@ import {after, describe, it} from "node:test";
66
* Tests the features of the {@link SafeTransformer} class.
77
*/
88
describe("SafeTransformer", () => {
9-
describe("asyncDispose()", () => {
9+
describe("close()", () => {
1010
it("should not reject, even if called several times", async () => {
1111
const transformer = new SafeTransformer;
12-
await doesNotReject(transformer[Symbol.asyncDispose]());
13-
await doesNotReject(transformer[Symbol.asyncDispose]());
12+
await doesNotReject(transformer.close());
13+
await doesNotReject(transformer.close());
1414
});
1515
});
1616

@@ -23,7 +23,7 @@ describe("SafeTransformer", () => {
2323
]);
2424

2525
const transformer = new SafeTransformer;
26-
after(() => transformer[Symbol.asyncDispose]());
26+
after(() => transformer.close());
2727

2828
for (const [key, value] of map) it(key, async () => {
2929
const output = await transformer.transform("res/Sample.php");

0 commit comments

Comments
 (0)