Skip to content

Commit eed6bbf

Browse files
committed
fix: 🐛 use globalThis defensively
1 parent 69f5c49 commit eed6bbf

File tree

4 files changed

+10
-8
lines changed

4 files changed

+10
-8
lines changed

src/internal/errors.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,9 @@ function makeNodeError(Base) {
2121
};
2222
}
2323

24-
class AssertionError extends globalThis.Error {
24+
const g = typeof globalThis !== 'undefined' ? globalThis : global;
25+
26+
class AssertionError extends g.Error {
2527
generatedMessage: any;
2628
name: any;
2729
code: any;
@@ -74,9 +76,9 @@ function E(sym, val) {
7476
messages[sym] = typeof val === 'function' ? val : String(val);
7577
}
7678

77-
export const Error = makeNodeError(globalThis.Error);
78-
export const TypeError = makeNodeError(globalThis.TypeError);
79-
export const RangeError = makeNodeError(globalThis.RangeError);
79+
export const Error = makeNodeError(g.Error);
80+
export const TypeError = makeNodeError(g.TypeError);
81+
export const RangeError = makeNodeError(g.RangeError);
8082

8183
export {
8284
message,

src/setImmediate.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
type TSetImmediate = (callback: (...args) => void, args?) => void;
22
let _setImmediate: TSetImmediate;
33

4-
if (typeof setImmediate === 'function') _setImmediate = setImmediate.bind(globalThis);
5-
else _setImmediate = setTimeout.bind(globalThis);
4+
if (typeof setImmediate === 'function') _setImmediate = setImmediate.bind(typeof globalThis !== 'undefined' ? globalThis : global);
5+
else _setImmediate = setTimeout.bind(typeof globalThis !== 'undefined' ? globalThis : global);
66

77
export default _setImmediate as TSetImmediate;

src/setTimeoutUnref.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ export type TSetTimeout = (callback: (...args) => void, time?: number, args?: an
55
* only in Node's environment it will "unref" its macro task.
66
*/
77
function setTimeoutUnref(callback, time?, args?): object {
8-
const ref = setTimeout.apply(globalThis, arguments);
8+
const ref = setTimeout.apply(typeof globalThis !== 'undefined' ? globalThis : global, arguments);
99
if (ref && typeof ref === 'object' && typeof ref.unref === 'function') ref.unref();
1010
return ref;
1111
}

src/volume.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2223,7 +2223,7 @@ export class StatWatcher extends EventEmitter {
22232223

22242224
start(path: string, persistent: boolean = true, interval: number = 5007) {
22252225
this.filename = pathToFilename(path);
2226-
this.setTimeout = persistent ? setTimeout.bind(globalThis) : setTimeoutUnref;
2226+
this.setTimeout = persistent ? setTimeout.bind(typeof globalThis !== 'undefined' ? globalThis : global) : setTimeoutUnref;
22272227
this.interval = interval;
22282228
this.prev = this.vol.statSync(this.filename);
22292229
this.loop();

0 commit comments

Comments
 (0)