'use strict'; var localsFixtures = { maps: { // simple map includes only the local scope and a single stack frame. simple: { callFrames: [ { callFrameId: '{"ordinal":0,"injectedScriptId":1}', functionName: '', functionLocation: { scriptId: '121', lineNumber: 24, columnNumber: 12 }, location: { scriptId: '121', lineNumber: 28, columnNumber: 16 }, url: 'file:///example/test/locals1.js', scopeChain: [ { type: 'local', object: { type: 'object', className: 'Object', description: 'Object', objectId: 'objectId1' // Used to query locals from getProperties }, name: 'nodeThrowNested', startLocation: { scriptId: '121', lineNumber: 40, columnNumber: 30 }, endLocation: { scriptId: '121', lineNumber: 57, columnNumber: 1 } } ] } ], reason: 'exception', data: { type: 'object', subtype: 'error', className: 'Error', description: 'Error: node error', objectId: '{"injectedScriptId":1,"id":1}', uncaught: true }, hitBreakpoints: [] }, // complex map includes multiple scopes and multiple stack frames. complex: { callFrames: [ { callFrameId: '{"ordinal":0,"injectedScriptId":1}', functionName: '', functionLocation: { scriptId: '121', lineNumber: 24, columnNumber: 12 }, location: { scriptId: '121', lineNumber: 28, columnNumber: 16 }, url: '/example/test/locals2.js', scopeChain: [ { type: 'global', object: { type: 'object', className: 'global', description: 'global', objectId: '{"injectedScriptId":1,"id":41}' } }, { type: 'local', object: { type: 'object', className: 'Object', description: 'Object', objectId: 'objectId1' // Used to query locals from getProperties }, name: 'nodeThrowNested', startLocation: { scriptId: '121', lineNumber: 40, columnNumber: 30 }, endLocation: { scriptId: '121', lineNumber: 57, columnNumber: 1 } }, { type: 'closure', object: { type: 'object', className: 'Object', description: 'Object', objectId: '{"injectedScriptId":1,"id":44}' }, startLocation: { scriptId: '121', lineNumber: 0, columnNumber: 0 }, endLocation: { scriptId: '121', lineNumber: 219, columnNumber: 34 } }, ] }, { callFrameId: '{"ordinal":0,"injectedScriptId":1}', functionName: '', // functionLocation should not be used for matching. Set to a non-matching value. functionLocation: { scriptId: '121', lineNumber: 136, columnNumber: 1 }, location: { scriptId: '121', lineNumber: 139, columnNumber: 14 }, url: 'file:///example/test/locals3.js', // The `file://` prefix may be present. scopeChain: [ { type: 'global', object: { type: 'object', className: 'global', description: 'global', objectId: '{"injectedScriptId":1,"id":41}' } }, { type: 'local', object: { type: 'object', className: 'Object', description: 'Object', objectId: 'objectId2' // Used to query locals from getProperties }, name: 'nodeThrowNested', startLocation: { scriptId: '121', lineNumber: 40, columnNumber: 30 }, endLocation: { scriptId: '121', lineNumber: 57, columnNumber: 1 } }, { type: 'closure', object: { type: 'object', className: 'Object', description: 'Object', objectId: '{"injectedScriptId":1,"id":44}' }, startLocation: { scriptId: '121', lineNumber: 0, columnNumber: 0 }, endLocation: { scriptId: '121', lineNumber: 219, columnNumber: 34 } }, ] }, { callFrameId: '{"ordinal":0,"injectedScriptId":1}', functionName: '', functionLocation: { scriptId: '121', lineNumber: 128, columnNumber: 1 }, location: { scriptId: '121', lineNumber: 132, columnNumber: 34 }, url: 'file:///example/test/locals4.js', scopeChain: [ { type: 'global', object: { type: 'object', className: 'global', description: 'global', objectId: '{"injectedScriptId":1,"id":41}' } }, { type: 'local', object: { type: 'object', className: 'Object', description: 'Object', objectId: 'objectId3' // Used to query locals from getProperties }, name: 'nodeThrowNested', startLocation: { scriptId: '121', lineNumber: 40, columnNumber: 30 }, endLocation: { scriptId: '121', lineNumber: 57, columnNumber: 1 } }, { type: 'closure', object: { type: 'object', className: 'Object', description: 'Object', objectId: '{"injectedScriptId":1,"id":44}' }, startLocation: { scriptId: '121', lineNumber: 0, columnNumber: 0 }, endLocation: { scriptId: '121', lineNumber: 219, columnNumber: 34 } }, ] } ], reason: 'exception', data: { type: 'object', subtype: 'error', className: 'Error', description: 'Error: node error', objectId: '{"injectedScriptId":1,"id":1}', uncaught: true }, hitBreakpoints: [] }, noLocalScope: { callFrames: [ { callFrameId: '{"ordinal":0,"injectedScriptId":1}', functionName: '', functionLocation: { scriptId: '121', lineNumber: 24, columnNumber: 12 }, location: { scriptId: '121', lineNumber: 28, columnNumber: 16 }, url: '/example/test/locals2.js', scopeChain: [ { type: 'global', object: { type: 'object', className: 'global', description: 'global', objectId: '{"injectedScriptId":1,"id":41}' } }, { type: 'closure', object: { type: 'object', className: 'Object', description: 'Object', objectId: '{"injectedScriptId":1,"id":44}' }, startLocation: { scriptId: '121', lineNumber: 0, columnNumber: 0 }, endLocation: { scriptId: '121', lineNumber: 219, columnNumber: 34 } }, ] }, { callFrameId: '{"ordinal":0,"injectedScriptId":1}', functionName: '', // functionLocation should not be used for matching. Set to a non-matching value. functionLocation: { scriptId: '121', lineNumber: 136, columnNumber: 1 }, location: { scriptId: '121', lineNumber: 139, columnNumber: 14 }, url: 'file:///example/test/locals3.js', // The `file://` prefix may be present. scopeChain: [ { type: 'global', object: { type: 'object', className: 'global', description: 'global', objectId: '{"injectedScriptId":1,"id":41}' } }, { type: 'closure', object: { type: 'object', className: 'Object', description: 'Object', objectId: '{"injectedScriptId":1,"id":44}' }, startLocation: { scriptId: '121', lineNumber: 0, columnNumber: 0 }, endLocation: { scriptId: '121', lineNumber: 219, columnNumber: 34 } }, ] }, { callFrameId: '{"ordinal":0,"injectedScriptId":1}', functionName: '', functionLocation: { scriptId: '121', lineNumber: 128, columnNumber: 1 }, location: { scriptId: '121', lineNumber: 132, columnNumber: 34 }, url: 'file:///example/test/locals4.js', scopeChain: [ { type: 'global', object: { type: 'object', className: 'global', description: 'global', objectId: '{"injectedScriptId":1,"id":41}' } }, { type: 'closure', object: { type: 'object', className: 'Object', description: 'Object', objectId: '{"injectedScriptId":1,"id":44}' }, startLocation: { scriptId: '121', lineNumber: 0, columnNumber: 0 }, endLocation: { scriptId: '121', lineNumber: 219, columnNumber: 34 } }, ] } ], reason: 'exception', data: { type: 'object', subtype: 'error', className: 'Error', description: 'Error: node error', objectId: '{"injectedScriptId":1,"id":1}', uncaught: true }, hitBreakpoints: [] } }, stacks: { simple: [ { method: 'Timeout._onTimeout', filename: '/example/test/locals1.js', lineno: 29, colno: 16, runtimePosition: { source: '/example/test/locals1.js', line: 29, column: 16 } } ], // The stack order presented by Rollbar.js is reversed. complex: [ { method: 'Method1', filename: '/example/test/locals4.js', lineno: 133, colno: 34, runtimePosition: { source: '/example/test/locals4.js', line: 133, column: 34 } }, { method: 'Method2', filename: '/example/test/locals3.ts', lineno: 120, colno: 40, // Runtime location is transpiled, with different filename and location runtimePosition: { source: '/example/test/locals3.js', line: 140, column: 14 } }, { method: 'Method3', filename: '/example/test/locals2.js', lineno: 13, colno: 26, runtimePosition: { source: '/example/test/locals2.js', line: 13, column: 26 } } ] }, locals: { object1: { name: 'foo', value: { type: 'object', className: 'FooClass', description: 'FooClass', objectId: 'nestedProps1' }, writable: true, configurable: true, enumerable: true, isOwn: true }, object2: { name: 'bar', value: { type: 'object', className: 'BarClass', description: 'BarClass', objectId: 'nestedProps2' }, writable: true, configurable: true, enumerable: true, isOwn: true }, boolean1: { name: 'old', value: { type: 'boolean', value: false }, writable: true, configurable: true, enumerable: true, isOwn: true }, boolean2: { name: 'new', value: { type: 'boolean', value: true }, writable: true, configurable: true, enumerable: true, isOwn: true }, string1: { name: 'response', value: { type: 'string', value: 'success' }, writable: true, configurable: true, enumerable: true, isOwn: true }, array1: { name: 'args', value: { type: 'object', subtype: 'array', className: 'Array', description: 'Array(1)', objectId: '{"injectedScriptId":1,"id":54}' }, writable: true, configurable: true, enumerable: true, isOwn: true }, function1: { name: 'func', value: { type: 'function', className: 'Function', description: 'Array(1)', objectId: '{"injectedScriptId":1,"id":64}' }, writable: true, configurable: true, enumerable: true, isOwn: true }, function2: { name: 'asyncFunc', value: { type: 'function', className: 'AsyncFunction', objectId: '{"injectedScriptId":1,"id":32}' }, writable: true, configurable: true, enumerable: true, isOwn: true }, null1: { name: 'parent', value: { subtype: 'null', type: 'object', value: null }, configurable: true, writable: true, enumerable: true, isOwn: true } } } module.exports = localsFixtures;