react-compiler-runtime 0.0.0 → 19.0.0-beta-8a03594-20241020

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,5 @@
1
+ # react-compiler-runtime
2
+
3
+ Backwards compatible shim for runtime APIs used by React Compiler. Primarily meant for React versions prior to 19, but it will also work on > 19.
4
+
5
+ See also https://github.com/reactwg/react-compiler/discussions/6.
@@ -0,0 +1,19 @@
1
+ type MemoCache = Array<number | typeof $empty>;
2
+ declare const $empty: unique symbol;
3
+ export declare const c: any;
4
+ declare enum GuardKind {
5
+ PushGuardContext = 0,
6
+ PopGuardContext = 1,
7
+ PushExpectHook = 2,
8
+ PopExpectHook = 3
9
+ }
10
+ export declare function $dispatcherGuard(kind: GuardKind): void;
11
+ export declare function $reset($: MemoCache): void;
12
+ export declare function $makeReadOnly(): void;
13
+ export declare const renderCounterRegistry: Map<string, Set<{
14
+ count: number;
15
+ }>>;
16
+ export declare function clearRenderCounterRegistry(): void;
17
+ export declare function useRenderCounter(name: string): void;
18
+ export declare function $structuralCheck(oldValue: any, newValue: any, variableName: string, fnName: string, kind: string, loc: string): void;
19
+ export {};
package/dist/index.js ADDED
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @lightSyntaxTransform
8
+ * @noflow
9
+ * @nolint
10
+ * @preventMunge
11
+ * @preserve-invariant-messages
12
+ */
13
+
14
+ "use no memo";"use strict";function e(e){var t=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var o=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,o.get?o:{enumerable:!0,get:function(){return e[n]}})}})),t.default=e,Object.freeze(t)}var t,n,o=e(require("react"));const{useRef:r,useEffect:c,isValidElement:a}=o,i=null!==(t=o.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE)&&void 0!==t?t:o.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,s=Symbol.for("react.memo_cache_sentinel"),l="function"==typeof(null===(n=o.__COMPILER_RUNTIME)||void 0===n?void 0:n.c)?o.__COMPILER_RUNTIME.c:function(e){return o.useMemo((()=>{const t=new Array(e);for(let n=0;n<e;n++)t[n]=s;return t[s]=!0,t}),[])},u={};["readContext","useCallback","useContext","useEffect","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","getCacheSignal","getCacheForType","useCacheRefresh"].forEach((e=>{u[e]=()=>{throw new Error(`[React] Unexpected React hook call (${e}) from a React compiled function. Check that all hooks are called directly and named according to convention ('use[A-Z]') `)}}));let f=null;var p;function h(e){return i.ReactCurrentDispatcher.current=e,i.ReactCurrentDispatcher.current}u.useMemoCache=e=>{if(null==f)throw new Error("React Compiler internal invariant violation: unexpected null dispatcher");return f.useMemoCache(e)},function(e){e[e.PushGuardContext=0]="PushGuardContext",e[e.PopGuardContext=1]="PopGuardContext",e[e.PushExpectHook=2]="PushExpectHook",e[e.PopExpectHook=3]="PopExpectHook"}(p||(p={}));const d=[];const y=new Map;const R=new Set;exports.$dispatcherGuard=function(e){const t=i.ReactCurrentDispatcher.current;if(e===p.PushGuardContext){if(d.push(t),1===d.length&&(f=t),t===u)throw new Error("[React] Unexpected call to custom hook or component from a React compiled function. Check that (1) all hooks are called directly and named according to convention ('use[A-Z]') and (2) components are returned as JSX instead of being directly invoked.");h(u)}else if(e===p.PopGuardContext){const e=d.pop();if(null==e)throw new Error("React Compiler internal error: unexpected null in guard stack");0===d.length&&(f=null),h(e)}else if(e===p.PushExpectHook)d.push(t),h(f);else{if(e!==p.PopExpectHook)throw new Error("React Compiler internal error: unreachable block"+e);{const e=d.pop();if(null==e)throw new Error("React Compiler internal error: unexpected null in guard stack");h(e)}}},exports.$makeReadOnly=function(){throw new Error("TODO: implement $makeReadOnly in react-compiler-runtime")},exports.$reset=function(e){for(let t=0;t<e.length;t++)e[t]=s},exports.$structuralCheck=function(e,t,n,o,r,c){function i(e,t,a,i){const s=`${o}:${c} [${r}] ${n}${a} changed from ${e} to ${t} at depth ${i}`;R.has(s)||(R.add(s),console.error(s))}!function e(t,n,o,r){if(!(r>2)&&t!==n)if(typeof t!=typeof n)i("type "+typeof t,"type "+typeof n,o,r);else if("object"==typeof t){const c=Array.isArray(t),s=Array.isArray(n);if(null===t&&null!==n)i("null","type "+typeof n,o,r);else if(null===n)i("type "+typeof t,"null",o,r);else if(t instanceof Map)if(n instanceof Map)if(t.size!==n.size)i(`Map instance with size ${t.size}`,`Map instance with size ${n.size}`,o,r);else for(const[c,a]of t)n.has(c)?e(a,n.get(c),`${o}.get(${c})`,r+1):i(`Map instance with key ${c}`,`Map instance without key ${c}`,o,r);else i("Map instance","other value",o,r);else if(n instanceof Map)i("other value","Map instance",o,r);else if(t instanceof Set)if(n instanceof Set)if(t.size!==n.size)i(`Set instance with size ${t.size}`,`Set instance with size ${n.size}`,o,r);else for(const e of n)t.has(e)||i(`Set instance without element ${e}`,`Set instance with element ${e}`,o,r);else i("Set instance","other value",o,r);else if(n instanceof Set)i("other value","Set instance",o,r);else if(c||s)if(c!==s)i("type "+(c?"array":"object"),"type "+(s?"array":"object"),o,r);else if(t.length!==n.length)i(`array with length ${t.length}`,`array with length ${n.length}`,o,r);else for(let c=0;c<t.length;c++)e(t[c],n[c],`${o}[${c}]`,r+1);else if(a(t)||a(n))a(t)!==a(n)?i("type "+(a(t)?"React element":"object"),"type "+(a(n)?"React element":"object"),o,r):t.type!==n.type?i(`React element of type ${t.type}`,`React element of type ${n.type}`,o,r):e(t.props,n.props,`[props of ${o}]`,r+1);else{for(const e in n)e in t||i(`object without key ${e}`,`object with key ${e}`,o,r);for(const c in t)c in n?e(t[c],n[c],`${o}.${c}`,r+1):i(`object with key ${c}`,`object without key ${c}`,o,r)}}else{if("function"==typeof t)return;isNaN(t)||isNaN(n)?isNaN(t)!==isNaN(n)&&i(""+(isNaN(t)?"NaN":"non-NaN value"),""+(isNaN(n)?"NaN":"non-NaN value"),o,r):t!==n&&i(t,n,o,r)}}(e,t,"",0)},exports.c=l,exports.clearRenderCounterRegistry=function(){for(const e of y.values())e.forEach((e=>{e.count=0}))},exports.renderCounterRegistry=y,exports.useRenderCounter=function(e){const t=r(null);null!=t.current&&(t.current.count+=1),c((()=>{if(null==t.current){const n={count:0};!function(e,t){let n=y.get(e);null==n&&(n=new Set,y.set(e,n)),n.add(t)}(e,n),t.current=n}return()=>{null!==t.current&&function(e,t){const n=y.get(e);null!=n&&n.delete(t)}(e,t.current)}}))};
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":[null],"names":["useRef","useEffect","isValidElement","React","ReactSecretInternals","_a","__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","$empty","Symbol","for","c","_b","__COMPILER_RUNTIME","size","useMemo","$","Array","ii","LazyGuardDispatcher","forEach","name","Error","originalDispatcher","GuardKind","setCurrent","newDispatcher","ReactCurrentDispatcher","current","count","useMemoCache","guardFrames","renderCounterRegistry","Map","seenErrors","Set","kind","curr","PushGuardContext","push","length","PopGuardContext","lastFrame","pop","PushExpectHook","PopExpectHook","oldValue","newValue","variableName","fnName","loc","error","l","r","path","depth","str","has","add","console","recur","oldArray","isArray","newArray","k","v","get","type","props","key","isNaN","counters","values","counter","val","set","registerRenderCounter","delete","removeRenderCounter"],"mappings":"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"}
package/package.json CHANGED
@@ -1,11 +1,23 @@
1
1
  {
2
2
  "name": "react-compiler-runtime",
3
- "version": "0.0.0",
4
- "description": "",
5
- "main": "index.js",
3
+ "version": "19.0.0-beta-8a03594-20241020",
4
+ "description": "Runtime for React Compiler",
5
+ "license": "MIT",
6
+ "main": "dist/index.js",
7
+ "files": [
8
+ "dist",
9
+ "src"
10
+ ],
11
+ "peerDependencies": {
12
+ "react": "^18.2.0 || ^19.0.0"
13
+ },
6
14
  "scripts": {
7
- "test": "echo \"Error: no test specified\" && exit 1"
15
+ "build": "rimraf dist && rollup --config --bundleConfigAsCjs",
16
+ "test": "echo 'no tests'"
8
17
  },
9
- "author": "",
10
- "license": "MIT"
18
+ "repository": {
19
+ "type": "git",
20
+ "url": "git+https://github.com/facebook/react.git",
21
+ "directory": "compiler/packages/react-compiler-runtime"
22
+ }
11
23
  }
package/src/index.ts ADDED
@@ -0,0 +1,419 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ 'use no memo';
9
+
10
+ import * as React from 'react';
11
+
12
+ const {useRef, useEffect, isValidElement} = React;
13
+ const ReactSecretInternals =
14
+ //@ts-ignore
15
+ React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE ??
16
+ //@ts-ignore
17
+ React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
18
+
19
+ type MemoCache = Array<number | typeof $empty>;
20
+
21
+ const $empty = Symbol.for('react.memo_cache_sentinel');
22
+
23
+ // Re-export React.c if present, otherwise fallback to the userspace polyfill for versions of React
24
+ // < 19.
25
+ export const c =
26
+ // @ts-expect-error
27
+ typeof React.__COMPILER_RUNTIME?.c === 'function'
28
+ ? // @ts-expect-error
29
+ React.__COMPILER_RUNTIME.c
30
+ : function c(size: number) {
31
+ return React.useMemo<Array<unknown>>(() => {
32
+ const $ = new Array(size);
33
+ for (let ii = 0; ii < size; ii++) {
34
+ $[ii] = $empty;
35
+ }
36
+ // This symbol is added to tell the react devtools that this array is from
37
+ // useMemoCache.
38
+ // @ts-ignore
39
+ $[$empty] = true;
40
+ return $;
41
+ }, []);
42
+ };
43
+
44
+ const LazyGuardDispatcher: {[key: string]: (...args: Array<any>) => any} = {};
45
+ [
46
+ 'readContext',
47
+ 'useCallback',
48
+ 'useContext',
49
+ 'useEffect',
50
+ 'useImperativeHandle',
51
+ 'useInsertionEffect',
52
+ 'useLayoutEffect',
53
+ 'useMemo',
54
+ 'useReducer',
55
+ 'useRef',
56
+ 'useState',
57
+ 'useDebugValue',
58
+ 'useDeferredValue',
59
+ 'useTransition',
60
+ 'useMutableSource',
61
+ 'useSyncExternalStore',
62
+ 'useId',
63
+ 'unstable_isNewReconciler',
64
+ 'getCacheSignal',
65
+ 'getCacheForType',
66
+ 'useCacheRefresh',
67
+ ].forEach(name => {
68
+ LazyGuardDispatcher[name] = () => {
69
+ throw new Error(
70
+ `[React] Unexpected React hook call (${name}) from a React compiled function. ` +
71
+ "Check that all hooks are called directly and named according to convention ('use[A-Z]') ",
72
+ );
73
+ };
74
+ });
75
+
76
+ let originalDispatcher: unknown = null;
77
+
78
+ // Allow guards are not emitted for useMemoCache
79
+ LazyGuardDispatcher['useMemoCache'] = (count: number) => {
80
+ if (originalDispatcher == null) {
81
+ throw new Error(
82
+ 'React Compiler internal invariant violation: unexpected null dispatcher',
83
+ );
84
+ } else {
85
+ return (originalDispatcher as any).useMemoCache(count);
86
+ }
87
+ };
88
+
89
+ enum GuardKind {
90
+ PushGuardContext = 0,
91
+ PopGuardContext = 1,
92
+ PushExpectHook = 2,
93
+ PopExpectHook = 3,
94
+ }
95
+
96
+ function setCurrent(newDispatcher: any) {
97
+ ReactSecretInternals.ReactCurrentDispatcher.current = newDispatcher;
98
+ return ReactSecretInternals.ReactCurrentDispatcher.current;
99
+ }
100
+
101
+ const guardFrames: Array<unknown> = [];
102
+
103
+ /**
104
+ * When `enableEmitHookGuards` is set, this does runtime validation
105
+ * of the no-conditional-hook-calls rule.
106
+ * As React Compiler needs to statically understand which calls to move out of
107
+ * conditional branches (i.e. React Compiler cannot memoize the results of hook
108
+ * calls), its understanding of "the rules of React" are more restrictive.
109
+ * This validation throws on unsound inputs at runtime.
110
+ *
111
+ * Components should only be invoked through React as React Compiler could memoize
112
+ * the call to AnotherComponent, introducing conditional hook calls in its
113
+ * compiled output.
114
+ * ```js
115
+ * function Invalid(props) {
116
+ * const myJsx = AnotherComponent(props);
117
+ * return <div> { myJsx } </div>;
118
+ * }
119
+ *
120
+ * Hooks must be named as hooks.
121
+ * ```js
122
+ * const renamedHook = useState;
123
+ * function Invalid() {
124
+ * const [state, setState] = renamedHook(0);
125
+ * }
126
+ * ```
127
+ *
128
+ * Hooks must be directly called.
129
+ * ```
130
+ * function call(fn) {
131
+ * return fn();
132
+ * }
133
+ * function Invalid() {
134
+ * const result = call(useMyHook);
135
+ * }
136
+ * ```
137
+ */
138
+ export function $dispatcherGuard(kind: GuardKind) {
139
+ const curr = ReactSecretInternals.ReactCurrentDispatcher.current;
140
+ if (kind === GuardKind.PushGuardContext) {
141
+ // Push before checking invariant or errors
142
+ guardFrames.push(curr);
143
+
144
+ if (guardFrames.length === 1) {
145
+ // save if we're the first guard on the stack
146
+ originalDispatcher = curr;
147
+ }
148
+
149
+ if (curr === LazyGuardDispatcher) {
150
+ throw new Error(
151
+ `[React] Unexpected call to custom hook or component from a React compiled function. ` +
152
+ "Check that (1) all hooks are called directly and named according to convention ('use[A-Z]') " +
153
+ 'and (2) components are returned as JSX instead of being directly invoked.',
154
+ );
155
+ }
156
+ setCurrent(LazyGuardDispatcher);
157
+ } else if (kind === GuardKind.PopGuardContext) {
158
+ // Pop before checking invariant or errors
159
+ const lastFrame = guardFrames.pop();
160
+
161
+ if (lastFrame == null) {
162
+ throw new Error(
163
+ 'React Compiler internal error: unexpected null in guard stack',
164
+ );
165
+ }
166
+ if (guardFrames.length === 0) {
167
+ originalDispatcher = null;
168
+ }
169
+ setCurrent(lastFrame);
170
+ } else if (kind === GuardKind.PushExpectHook) {
171
+ // ExpectHooks could be nested, so we save the current dispatcher
172
+ // for the matching PopExpectHook to restore.
173
+ guardFrames.push(curr);
174
+ setCurrent(originalDispatcher);
175
+ } else if (kind === GuardKind.PopExpectHook) {
176
+ const lastFrame = guardFrames.pop();
177
+ if (lastFrame == null) {
178
+ throw new Error(
179
+ 'React Compiler internal error: unexpected null in guard stack',
180
+ );
181
+ }
182
+ setCurrent(lastFrame);
183
+ } else {
184
+ throw new Error('React Compiler internal error: unreachable block' + kind);
185
+ }
186
+ }
187
+
188
+ export function $reset($: MemoCache) {
189
+ for (let ii = 0; ii < $.length; ii++) {
190
+ $[ii] = $empty;
191
+ }
192
+ }
193
+
194
+ export function $makeReadOnly() {
195
+ throw new Error('TODO: implement $makeReadOnly in react-compiler-runtime');
196
+ }
197
+
198
+ /**
199
+ * Instrumentation to count rerenders in React components
200
+ */
201
+ export const renderCounterRegistry: Map<
202
+ string,
203
+ Set<{count: number}>
204
+ > = new Map();
205
+ export function clearRenderCounterRegistry() {
206
+ for (const counters of renderCounterRegistry.values()) {
207
+ counters.forEach(counter => {
208
+ counter.count = 0;
209
+ });
210
+ }
211
+ }
212
+
213
+ function registerRenderCounter(name: string, val: {count: number}) {
214
+ let counters = renderCounterRegistry.get(name);
215
+ if (counters == null) {
216
+ counters = new Set();
217
+ renderCounterRegistry.set(name, counters);
218
+ }
219
+ counters.add(val);
220
+ }
221
+
222
+ function removeRenderCounter(name: string, val: {count: number}): void {
223
+ const counters = renderCounterRegistry.get(name);
224
+ if (counters == null) {
225
+ return;
226
+ }
227
+ counters.delete(val);
228
+ }
229
+
230
+ export function useRenderCounter(name: string): void {
231
+ const val = useRef<{count: number}>(null);
232
+
233
+ if (val.current != null) {
234
+ val.current.count += 1;
235
+ }
236
+ useEffect(() => {
237
+ // Not counting initial render shouldn't be a problem
238
+ if (val.current == null) {
239
+ const counter = {count: 0};
240
+ registerRenderCounter(name, counter);
241
+ // @ts-ignore
242
+ val.current = counter;
243
+ }
244
+ return () => {
245
+ if (val.current !== null) {
246
+ removeRenderCounter(name, val.current);
247
+ }
248
+ };
249
+ });
250
+ }
251
+
252
+ const seenErrors = new Set();
253
+
254
+ export function $structuralCheck(
255
+ oldValue: any,
256
+ newValue: any,
257
+ variableName: string,
258
+ fnName: string,
259
+ kind: string,
260
+ loc: string,
261
+ ): void {
262
+ function error(l: string, r: string, path: string, depth: number) {
263
+ const str = `${fnName}:${loc} [${kind}] ${variableName}${path} changed from ${l} to ${r} at depth ${depth}`;
264
+ if (seenErrors.has(str)) {
265
+ return;
266
+ }
267
+ seenErrors.add(str);
268
+ console.error(str);
269
+ }
270
+ const depthLimit = 2;
271
+ function recur(oldValue: any, newValue: any, path: string, depth: number) {
272
+ if (depth > depthLimit) {
273
+ return;
274
+ } else if (oldValue === newValue) {
275
+ return;
276
+ } else if (typeof oldValue !== typeof newValue) {
277
+ error(`type ${typeof oldValue}`, `type ${typeof newValue}`, path, depth);
278
+ } else if (typeof oldValue === 'object') {
279
+ const oldArray = Array.isArray(oldValue);
280
+ const newArray = Array.isArray(newValue);
281
+ if (oldValue === null && newValue !== null) {
282
+ error('null', `type ${typeof newValue}`, path, depth);
283
+ } else if (newValue === null) {
284
+ error(`type ${typeof oldValue}`, 'null', path, depth);
285
+ } else if (oldValue instanceof Map) {
286
+ if (!(newValue instanceof Map)) {
287
+ error(`Map instance`, `other value`, path, depth);
288
+ } else if (oldValue.size !== newValue.size) {
289
+ error(
290
+ `Map instance with size ${oldValue.size}`,
291
+ `Map instance with size ${newValue.size}`,
292
+ path,
293
+ depth,
294
+ );
295
+ } else {
296
+ for (const [k, v] of oldValue) {
297
+ if (!newValue.has(k)) {
298
+ error(
299
+ `Map instance with key ${k}`,
300
+ `Map instance without key ${k}`,
301
+ path,
302
+ depth,
303
+ );
304
+ } else {
305
+ recur(v, newValue.get(k), `${path}.get(${k})`, depth + 1);
306
+ }
307
+ }
308
+ }
309
+ } else if (newValue instanceof Map) {
310
+ error('other value', `Map instance`, path, depth);
311
+ } else if (oldValue instanceof Set) {
312
+ if (!(newValue instanceof Set)) {
313
+ error(`Set instance`, `other value`, path, depth);
314
+ } else if (oldValue.size !== newValue.size) {
315
+ error(
316
+ `Set instance with size ${oldValue.size}`,
317
+ `Set instance with size ${newValue.size}`,
318
+ path,
319
+ depth,
320
+ );
321
+ } else {
322
+ for (const v of newValue) {
323
+ if (!oldValue.has(v)) {
324
+ error(
325
+ `Set instance without element ${v}`,
326
+ `Set instance with element ${v}`,
327
+ path,
328
+ depth,
329
+ );
330
+ }
331
+ }
332
+ }
333
+ } else if (newValue instanceof Set) {
334
+ error('other value', `Set instance`, path, depth);
335
+ } else if (oldArray || newArray) {
336
+ if (oldArray !== newArray) {
337
+ error(
338
+ `type ${oldArray ? 'array' : 'object'}`,
339
+ `type ${newArray ? 'array' : 'object'}`,
340
+ path,
341
+ depth,
342
+ );
343
+ } else if (oldValue.length !== newValue.length) {
344
+ error(
345
+ `array with length ${oldValue.length}`,
346
+ `array with length ${newValue.length}`,
347
+ path,
348
+ depth,
349
+ );
350
+ } else {
351
+ for (let ii = 0; ii < oldValue.length; ii++) {
352
+ recur(oldValue[ii], newValue[ii], `${path}[${ii}]`, depth + 1);
353
+ }
354
+ }
355
+ } else if (isValidElement(oldValue) || isValidElement(newValue)) {
356
+ if (isValidElement(oldValue) !== isValidElement(newValue)) {
357
+ error(
358
+ `type ${isValidElement(oldValue) ? 'React element' : 'object'}`,
359
+ `type ${isValidElement(newValue) ? 'React element' : 'object'}`,
360
+ path,
361
+ depth,
362
+ );
363
+ } else if (oldValue.type !== newValue.type) {
364
+ error(
365
+ `React element of type ${oldValue.type}`,
366
+ `React element of type ${newValue.type}`,
367
+ path,
368
+ depth,
369
+ );
370
+ } else {
371
+ recur(
372
+ oldValue.props,
373
+ newValue.props,
374
+ `[props of ${path}]`,
375
+ depth + 1,
376
+ );
377
+ }
378
+ } else {
379
+ for (const key in newValue) {
380
+ if (!(key in oldValue)) {
381
+ error(
382
+ `object without key ${key}`,
383
+ `object with key ${key}`,
384
+ path,
385
+ depth,
386
+ );
387
+ }
388
+ }
389
+ for (const key in oldValue) {
390
+ if (!(key in newValue)) {
391
+ error(
392
+ `object with key ${key}`,
393
+ `object without key ${key}`,
394
+ path,
395
+ depth,
396
+ );
397
+ } else {
398
+ recur(oldValue[key], newValue[key], `${path}.${key}`, depth + 1);
399
+ }
400
+ }
401
+ }
402
+ } else if (typeof oldValue === 'function') {
403
+ // Bail on functions for now
404
+ return;
405
+ } else if (isNaN(oldValue) || isNaN(newValue)) {
406
+ if (isNaN(oldValue) !== isNaN(newValue)) {
407
+ error(
408
+ `${isNaN(oldValue) ? 'NaN' : 'non-NaN value'}`,
409
+ `${isNaN(newValue) ? 'NaN' : 'non-NaN value'}`,
410
+ path,
411
+ depth,
412
+ );
413
+ }
414
+ } else if (oldValue !== newValue) {
415
+ error(oldValue, newValue, path, depth);
416
+ }
417
+ }
418
+ recur(oldValue, newValue, '', 0);
419
+ }