fix(animations): false positive when detecting Node in Webpack builds (#35134)
We have to do some extra work in the animations module when we identify a Node environment which we determine based on the `process` global. The problem is that by default Webpack will polyfill the `process`, causing us to incorrectly identify it. These changes make it so that the check isn't thrown off by Webpack. Fixes #35117. PR Close #35134
This commit is contained in:
parent
1b72fc10eb
commit
dc4ae4b4cf
|
@ -15,12 +15,17 @@ import {AnimationDriver} from '../../src/render/animation_driver';
|
||||||
// types. `process` is just declared locally here as a result.
|
// types. `process` is just declared locally here as a result.
|
||||||
declare const process: any;
|
declare const process: any;
|
||||||
|
|
||||||
export function isBrowser() {
|
export function isBrowser(): boolean {
|
||||||
return (typeof window !== 'undefined' && typeof window.document !== 'undefined');
|
return (typeof window !== 'undefined' && typeof window.document !== 'undefined');
|
||||||
}
|
}
|
||||||
|
|
||||||
export function isNode() {
|
export function isNode(): boolean {
|
||||||
return (typeof process !== 'undefined');
|
// Checking only for `process` isn't enough to identify whether or not we're in a Node
|
||||||
|
// environment, because Webpack by default will polyfill the `process`. While we can discern
|
||||||
|
// that Webpack polyfilled it by looking at `process.browser`, it's very Webpack-specific and
|
||||||
|
// might not be future-proof. Instead we look at the stringified version of `process` which
|
||||||
|
// is `[object process]` in Node and `[object Object]` when polyfilled.
|
||||||
|
return typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';
|
||||||
}
|
}
|
||||||
|
|
||||||
export function optimizeGroupPlayer(players: AnimationPlayer[]): AnimationPlayer {
|
export function optimizeGroupPlayer(players: AnimationPlayer[]): AnimationPlayer {
|
||||||
|
|
Loading…
Reference in New Issue