Skip to content

Commit b94a0e1

Browse files
authored
chore(es): Add helpers (#9586)
**Description:** This is a part of #9585. I extracted this as a separate PR to make WIP small.
1 parent 0a5a2d4 commit b94a0e1

File tree

8 files changed

+88
-2
lines changed

8 files changed

+88
-2
lines changed
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
function _ts_add_disposable_resource(env, value, async) {
2+
if (value !== null && value !== void 0) {
3+
if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
4+
var dispose, inner;
5+
if (async) {
6+
if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
7+
dispose = value[Symbol.asyncDispose];
8+
}
9+
if (dispose === void 0) {
10+
if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
11+
dispose = value[Symbol.dispose];
12+
if (async) inner = dispose;
13+
}
14+
if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
15+
if (inner) dispose = function () {
16+
try {
17+
inner.call(this);
18+
} catch (e) {
19+
return Promise.reject(e);
20+
}
21+
};
22+
env.stack.push({
23+
value: value,
24+
dispose: dispose,
25+
async: async
26+
});
27+
} else if (async) {
28+
env.stack.push({
29+
async: true
30+
});
31+
}
32+
return value;
33+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
function _ts_dispose_resources(SuppressedError) {
2+
return function (env) {
3+
function fail(e) {
4+
env.error = env.hasError ? new SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
5+
env.hasError = true;
6+
}
7+
var r,
8+
s = 0;
9+
function next() {
10+
while (r = env.stack.pop()) {
11+
try {
12+
if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);
13+
if (r.dispose) {
14+
var result = r.dispose.call(r.value);
15+
if (r.async) return s |= 2, Promise.resolve(result).then(next, function (e) {
16+
fail(e);
17+
return next();
18+
});
19+
} else s |= 1;
20+
} catch (e) {
21+
fail(e);
22+
}
23+
}
24+
if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();
25+
if (env.hasError) throw env.error;
26+
}
27+
return next();
28+
};
29+
} (typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
30+
var e = new Error(message);
31+
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
32+
});

crates/swc_ecma_transforms_base/src/helpers/mod.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -410,6 +410,8 @@ define_helpers!(Helpers {
410410
ts_metadata: (),
411411
ts_param: (),
412412
ts_values: (),
413+
ts_add_disposable_resource: (),
414+
ts_dispose_resources: (),
413415

414416
apply_decs_2203_r: (),
415417
identity: (),
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export { __addDisposableResource as _ } from "tslib";
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export { __disposeResources as _ } from "tslib";

packages/helpers/esm/index.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,9 @@ export { _ as _to_array } from "./_to_array.js";
8989
export { _ as _to_consumable_array } from "./_to_consumable_array.js";
9090
export { _ as _to_primitive } from "./_to_primitive.js";
9191
export { _ as _to_property_key } from "./_to_property_key.js";
92+
export { _ as _ts_add_disposable_resource } from "./_ts_add_disposable_resource.js";
9293
export { _ as _ts_decorate } from "./_ts_decorate.js";
94+
export { _ as _ts_dispose_resources } from "./_ts_dispose_resources.js";
9395
export { _ as _ts_generator } from "./_ts_generator.js";
9496
export { _ as _ts_metadata } from "./_ts_metadata.js";
9597
export { _ as _ts_param } from "./_ts_param.js";

packages/helpers/package.json

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
"zx": "^7.2.1"
3737
},
3838
"dependencies": {
39-
"tslib": "^2.4.0"
39+
"tslib": "^2.7.0"
4040
},
4141
"exports": {
4242
"./package.json": "./package.json",
@@ -403,10 +403,18 @@
403403
"import": "./esm/_to_property_key.js",
404404
"default": "./cjs/_to_property_key.cjs"
405405
},
406+
"./_/_ts_add_disposable_resource": {
407+
"import": "./esm/_ts_add_disposable_resource.js",
408+
"default": "./cjs/_ts_add_disposable_resource.cjs"
409+
},
406410
"./_/_ts_decorate": {
407411
"import": "./esm/_ts_decorate.js",
408412
"default": "./cjs/_ts_decorate.cjs"
409413
},
414+
"./_/_ts_dispose_resources": {
415+
"import": "./esm/_ts_dispose_resources.js",
416+
"default": "./cjs/_ts_dispose_resources.cjs"
417+
},
410418
"./_/_ts_generator": {
411419
"import": "./esm/_ts_generator.js",
412420
"default": "./cjs/_ts_generator.cjs"

yarn.lock

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4639,7 +4639,7 @@ __metadata:
46394639
"@ast-grep/napi": "npm:^0.3.1"
46404640
dprint: "npm:^0.35.3"
46414641
magic-string: "npm:^0.30.0"
4642-
tslib: "npm:^2.4.0"
4642+
tslib: "npm:^2.7.0"
46434643
zx: "npm:^7.2.1"
46444644
languageName: unknown
46454645
linkType: soft
@@ -16822,6 +16822,13 @@ __metadata:
1682216822
languageName: node
1682316823
linkType: hard
1682416824

16825+
"tslib@npm:^2.7.0":
16826+
version: 2.7.0
16827+
resolution: "tslib@npm:2.7.0"
16828+
checksum: 9a5b47ddac65874fa011c20ff76db69f97cf90c78cff5934799ab8894a5342db2d17b4e7613a087046bc1d133d21547ddff87ac558abeec31ffa929c88b7fce6
16829+
languageName: node
16830+
linkType: hard
16831+
1682516832
"tsx@npm:^3.13.0":
1682616833
version: 3.14.0
1682716834
resolution: "tsx@npm:3.14.0"

0 commit comments

Comments
 (0)