| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
 | | 'use strict'; |  |   |  | var test = require('tape'); |  | var traverse = require('../'); |  |   |  | test('json test', function (t) { |  |     var id = 54; |  |     var callbacks = {}; |  |     var obj = { moo: function () {}, foo: [2, 3, 4, function () {}] }; |  |   |  |     var scrubbed = traverse(obj).map(function (x) { |  |         if (typeof x === 'function') { |  |             callbacks[id] = { id: id, f: x, path: this.path }; |  |             this.update('[Function]'); |  |             id += 1; |  |         } |  |     }); |  |   |  |     t.equal( |  |         scrubbed.moo, |  |         '[Function]', |  |         'obj.moo replaced with "[Function]"' |  |     ); |  |   |  |     t.equal( |  |         scrubbed.foo[3], |  |         '[Function]', |  |         'obj.foo[3] replaced with "[Function]"' |  |     ); |  |   |  |     t.same(scrubbed, { |  |         moo: '[Function]', |  |         foo: [2, 3, 4, '[Function]'], |  |     }, 'Full JSON string matches'); |  |   |  |     t.same( |  |         typeof obj.moo, |  |         'function', |  |         'Original obj.moo still a function' |  |     ); |  |   |  |     t.same( |  |         typeof obj.foo[3], |  |         'function', |  |         'Original obj.foo[3] still a function' |  |     ); |  |   |  |     t.same(callbacks, { |  |         54: { id: 54, f: obj.moo, path: ['moo'] }, |  |         55: { id: 55, f: obj.foo[3], path: ['foo', '3'] }, |  |     }, 'Check the generated callbacks list'); |  |   |  |     t.end(); |  | }); | 
 |