Skip to content

Commit 3f4d9c8

Browse files
committed
use Promise.withResolvers
1 parent f4794a9 commit 3f4d9c8

File tree

3 files changed

+15
-14
lines changed

3 files changed

+15
-14
lines changed

packages/utils/eslint.config.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ export default tseslint.config(
99
extends: [js.configs.recommended, ...tseslint.configs.strictTypeChecked, ...tseslint.configs.stylisticTypeChecked],
1010
files: ['**/*.{ts,js}'],
1111
languageOptions: {
12-
ecmaVersion: 2020,
12+
ecmaVersion: globals.esnext,
1313
globals: globals.browser,
1414
parserOptions: {
1515
project: ['./tsconfig.json', './tsconfig.eslint.json'],
@@ -26,7 +26,7 @@ export default tseslint.config(
2626
{
2727
files: ['test/**/*.{ts}', '*.{js,ts}'],
2828
languageOptions: {
29-
ecmaVersion: 2020,
29+
ecmaVersion: globals.esnext,
3030
globals: {
3131
...globals.node,
3232
...globals.browser,

packages/utils/src/dataframe.ts

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -85,18 +85,19 @@ export type ResolvablePromise<T> = Promise<T> & {
8585
}
8686

8787
/**
88-
* Create a promise that can be resolved or rejected later.
88+
* Create a promise that can be resolved or rejected later using the resolve and reject methods.
89+
* It's also a wrapped promise, with resolved and rejected properties.
8990
*/
90-
export function resolvablePromise<T>(): ResolvablePromise<T> {
91-
let resolve: (value: T) => void
92-
let reject: (error: Error) => void
93-
const promise = wrapPromise(new Promise<T>((res, rej) => {
94-
resolve = res
95-
reject = rej
96-
})) as ResolvablePromise<T>
97-
promise.resolve = resolve!
98-
promise.reject = reject!
99-
return promise
91+
export function resolvablePromise<T>(): ResolvablePromise<T> & WrappedPromise<T> {
92+
const promise = Promise.withResolvers<T>()
93+
const wrapped = Object.assign(
94+
wrapPromise(promise.promise),
95+
{
96+
resolve: promise.resolve,
97+
reject : promise.reject,
98+
},
99+
)
100+
return wrapped
100101
}
101102

102103
/**

packages/utils/tsconfig.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.tsbuildinfo",
44
"target": "ES2020",
55
"useDefineForClassFields": true,
6-
"lib": ["ES2020", "DOM", "DOM.Iterable"],
6+
"lib": ["ESNext", "DOM", "DOM.Iterable"],
77
"module": "NodeNext",
88
"skipLibCheck": true,
99

0 commit comments

Comments
 (0)