package/package.json000644 0000003513 3560116604 011550 0ustar00000000 000000 { "name": "stack-generator", "description": "Generate artificial backtrace by walking arguments.callee.caller chain", "maintainers": [ "Eric Wendelin (https://www.eriwen.com)", "Victor Homyakov (https://github.com/victor-homyakov)", "Oliver Salzburg (https://github.com/oliversalzburg)", "Ben Gourley (https://github.com/bengourley)" ], "version": "2.0.5", "license": "MIT", "keywords": [ "stacktrace", "error" ], "homepage": "https://www.stacktracejs.com", "repository": { "type": "git", "url": "git://github.com/stacktracejs/stack-generator.git" }, "dependencies": { "stackframe": "^1.1.1" }, "devDependencies": { "eslint": "^6.8.0", "jasmine": "^3.5.0", "jasmine-core": "^3.5.0", "karma": "^4.4.1", "karma-chrome-launcher": "^3.1.0", "karma-coverage": "^2.0.1", "karma-coveralls": "^2.1.0", "karma-firefox-launcher": "^1.2.0", "karma-ie-launcher": "^1.0.0", "karma-jasmine": "^1.1.2", "karma-opera-launcher": "^1.0.0", "karma-phantomjs-launcher": "^1.0.4", "karma-safari-launcher": "^1.0.0", "karma-sauce-launcher": "^2.0.2", "karma-spec-reporter": "0.0.32", "uglify-es": "^3.3.9" }, "bugs": { "url": "https://github.com/stacktracejs/stack-generator/issues" }, "main": "./stack-generator.js", "scripts": { "lint": "eslint --fix stack-generator.js spec/", "test": "karma start karma.conf.js --single-run", "test-pr": "karma start karma.conf.js --single-run --browsers Firefox,Chrome_Travis", "test-ci": "karma start karma.conf.ci.js --single-run", "prepare": "cp stack-generator.js dist/ && uglifyjs node_modules/stackframe/stackframe.js stack-generator.js -o dist/stack-generator.min.js --compress --mangle --source-map \"url=stack-generator.min.js.map\"" } } package/.eslintrc.yml000644 0000000702 3560116604 011703 0ustar00000000 000000 env: browser: true commonjs: true node: true extends: 'eslint:recommended' globals: afterEach: false define: false describe: false expect: false it: false something_bad: false StackGenerator: false parserOptions: ecmaVersion: 5 rules: indent: - error - 4 linebreak-style: - error - unix quotes: - error - single semi: - error - always no-console: - error - allow: - error package/bower.json000644 0000001501 3560116604 011266 0ustar00000000 000000 { "name": "stack-generator", "main": "./dist/stack-generator.js", "homepage": "https://github.com/stacktracejs/stack-generator.js", "authors": [ "Eric Wendelin (http://www.eriwen.com)", "Victor Homyakov (https://github.com/victor-homyakov)" ], "description": "Generate artificial backtrace by walking arguments.callee.caller chain", "dependencies": { "stackframe": "~1.0.3" }, "moduleType": [ "amd", "globals", "node" ], "keywords": [ "stacktrace", "stack-trace", "backtrace", "cross-browser", "framework-agnostic", "error", "debugger" ], "license": "MIT", "ignore": [ "**/.*", "node_modules", "spec" ] } package/CHANGELOG.md000644 0000001041 3560116604 011065 0ustar00000000 000000 ## v2.0.0 * Upgrade `stackframe` dependency to 1.x. Stackframes are constructed and accessed differently. See the [stackframe CHANGELOG](https://github.com/stacktracejs/stackframe/blob/master/CHANGELOG.md#v10x) for details. ## v1.0.3 * Fix edge case when parsing arguments with Firefox ## v1.0.2 * Name functions such that they can can be filtered out by stacktrace.js ## v1.0.1 * Provide standard distribution (minified and unminified). ## v1.0.0 * Add `getArgs()` and `setArgs(args)` methods ## v0.1.0 * Initial port from stacktrace.js package/component.json000644 0000000647 3560116604 012164 0ustar00000000 000000 { "name": "stack-generator", "repository": "stacktracejs/stack-generator", "description": "Generate artificial backtrace by walking arguments.callee.caller chain", "version": "2.0.0", "keywords": [ "stacktrace", "error" ], "main": "stack-generator.js", "scripts": [ "stack-generator.js" ], "dependencies": { "stacktracejs/stackframe": "1.0.2" } } package/CONTRIBUTING.md000644 0000002165 3560116604 011515 0ustar00000000 000000 ## Submitting bugs Please include the following information to help us reproduce and fix: * What you did * What you expected to happen * What actually happened * Browser and version * Example code that reproduces the problem (if possible) * *(l33t mode)* A failing test ## Making contributions Want to be listed as a *Contributor*? Make a pull request with: * Unit and/or functional tests that validate changes you're making. * Run unit tests in the latest IE, Firefox, Chrome, Safari and Opera and make sure they pass. * Rebase your changes onto origin/HEAD if you can do so cleanly. * If submitting additional functionality, provide an example of how to use it. * Please keep code style consistent with surrounding code. ## Dev Setup * Make sure you have [NodeJS v0.10](http://nodejs.org/) installed * Run `npm install` from the project directory ## Testing * (Local) Run `npm test`. Make sure [Karma Local Config](karma.conf.js) has the browsers you want * (Any browser, remotely) Run `make test-ci` to run tests on [Sauce Labs](https://saucelabs.com). Make sure the target browser is enabled in [Karma CI Config](karma.conf.ci.js) package/karma.conf.ci.js000644 0000006146 3560116604 012236 0ustar00000000 000000 module.exports = function(config) { if (!process.env.SAUCE_USERNAME || !process.env.SAUCE_ACCESS_KEY) { console.error('Make sure the SAUCE_USERNAME and SAUCE_ACCESS_KEY environment variables are set.'); process.exit(1); } // Check out https://saucelabs.com/platforms for all browser/platform combos var customLaunchers = { slChrome: { base: 'SauceLabs', browserName: 'chrome', version: 'latest' }, slChromeBeta: { base: 'SauceLabs', browserName: 'chrome', version: 'beta' }, slFirefox: { base: 'SauceLabs', browserName: 'firefox', version: 'latest' }, slFirefoxBeta: { base: 'SauceLabs', browserName: 'firefox', version: 'beta' }, slSafari: { base: 'SauceLabs', browserName: 'safari', platform: 'OS X 10.14', version: 'latest' }, slEdge: { base: 'SauceLabs', browserName: 'microsoftedge', platform: 'Windows 10', version: 'latest' }, slIE11: { base: 'SauceLabs', browserName: 'internet explorer', platform: 'Windows 8.1', version: '11' }, slIE10: { base: 'SauceLabs', browserName: 'internet explorer', platform: 'Windows 7', version: '10' }, slIE9: { base: 'SauceLabs', browserName: 'internet explorer', platform: 'Windows 7', version: '10', 'x-ua-compatible': 'IE=EmulateIE9' }, slIE8: { base: 'SauceLabs', browserName: 'internet explorer', platform: 'Windows 7', version: '10', 'x-ua-compatible': 'IE=EmulateIE8' } }; config.set({ basePath: '', frameworks: ['jasmine'], files: [ 'node_modules/stackframe/dist/stackframe.js', 'stack-generator.js', 'spec/spec-helper.js', 'spec/*-spec.js', { pattern: 'spec/fixtures/**', included: false } ], exclude: [], port: 9876, colors: true, logLevel: config.LOG_INFO, autoWatch: true, browserDisconnectTimeout: 10000, browserDisconnectTolerance: 1, browserNoActivityTimeout: 240000, captureTimeout: 240000, sauceLabs: { testName: 'stack-generator unit tests', recordScreenshots: false, connectOptions: { port: 5757, logfile: 'sauce_connect.log' } }, customLaunchers: customLaunchers, browsers: Object.keys(customLaunchers), reporters: ['dots', 'saucelabs', 'coverage', 'coveralls'], preprocessors: { 'stack-generator.js': 'coverage' }, coverageReporter: { type: 'lcov', dir: 'coverage' }, singleRun: true }); }; package/karma.conf.js000644 0000001304 3560116604 011633 0ustar00000000 000000 module.exports = function (config) { config.set({ basePath: '', frameworks: ['jasmine'], files: [ 'node_modules/stackframe/dist/stackframe.js', 'stack-generator.js', 'spec/spec-helper.js', 'spec/*-spec.js', { pattern: 'spec/fixtures/**', included: false } ], reporters: ['spec'], port: 9876, colors: true, logLevel: config.LOG_INFO, autoWatch: true, customLaunchers: { Chrome_Travis: { base: 'Chrome', flags: ['--no-sandbox'] } }, browsers: ['PhantomJS'], singleRun: false }); }; package/LICENSE000644 0000002070 3560116604 010264 0ustar00000000 000000 Copyright (c) 2017 Eric Wendelin and other contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. package/README.md000644 0000002247 3560116604 010544 0ustar00000000 000000 stack-generator =============== [![Build Status](https://travis-ci.org/stacktracejs/stack-generator.svg?branch=master)](https://travis-ci.org/stacktracejs/stack-generator) [![Coverage Status](https://img.shields.io/coveralls/stacktracejs/stack-generator.svg)](https://coveralls.io/r/stacktracejs/stack-generator) [![GitHub license](https://img.shields.io/github/license/stacktracejs/stack-generator.svg)](https://opensource.org/licenses/MIT) Generate artificial backtrace by walking arguments.callee.caller chain. **Works everywhere except strict-mode**. ## Usage ``` StackGenerator.backtrace() => [StackFrame({functionName: 'foo', args: []}), StackFrame(..), StackFrame(..)] ``` ## Installation ``` npm install stack-generator bower install stack-generator https://raw.githubusercontent.com/stacktracejs/stack-generator/master/dist/stack-generator.min.js ``` ## Browser Support [![Sauce Test Status](https://saucelabs.com/browser-matrix/stacktracejs.svg)](https://saucelabs.com/u/stacktracejs) ## Contributing Want to be listed as a *Contributor*? Start with the [Contributing Guide](CONTRIBUTING.md)! ## License This project is licensed to the [Public Domain](http://unlicense.org) package/stack-generator.js000644 0000003123 3560116604 012706 0ustar00000000 000000 (function(root, factory) { 'use strict'; // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers. /* istanbul ignore next */ if (typeof define === 'function' && define.amd) { define('stack-generator', ['stackframe'], factory); } else if (typeof exports === 'object') { module.exports = factory(require('stackframe')); } else { root.StackGenerator = factory(root.StackFrame); } }(this, function(StackFrame) { return { backtrace: function StackGenerator$$backtrace(opts) { var stack = []; var maxStackSize = 10; if (typeof opts === 'object' && typeof opts.maxStackSize === 'number') { maxStackSize = opts.maxStackSize; } var curr = arguments.callee; while (curr && stack.length < maxStackSize && curr['arguments']) { // Allow V8 optimizations var args = new Array(curr['arguments'].length); for (var i = 0; i < args.length; ++i) { args[i] = curr['arguments'][i]; } if (/function(?:\s+([\w$]+))+\s*\(/.test(curr.toString())) { stack.push(new StackFrame({functionName: RegExp.$1 || undefined, args: args})); } else { stack.push(new StackFrame({args: args})); } try { curr = curr.caller; } catch (e) { break; } } return stack; } }; })); package/dist/stack-generator.js000644 0000003123 3560116604 013651 0ustar00000000 000000 (function(root, factory) { 'use strict'; // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers. /* istanbul ignore next */ if (typeof define === 'function' && define.amd) { define('stack-generator', ['stackframe'], factory); } else if (typeof exports === 'object') { module.exports = factory(require('stackframe')); } else { root.StackGenerator = factory(root.StackFrame); } }(this, function(StackFrame) { return { backtrace: function StackGenerator$$backtrace(opts) { var stack = []; var maxStackSize = 10; if (typeof opts === 'object' && typeof opts.maxStackSize === 'number') { maxStackSize = opts.maxStackSize; } var curr = arguments.callee; while (curr && stack.length < maxStackSize && curr['arguments']) { // Allow V8 optimizations var args = new Array(curr['arguments'].length); for (var i = 0; i < args.length; ++i) { args[i] = curr['arguments'][i]; } if (/function(?:\s+([\w$]+))+\s*\(/.test(curr.toString())) { stack.push(new StackFrame({functionName: RegExp.$1 || undefined, args: args})); } else { stack.push(new StackFrame({args: args})); } try { curr = curr.caller; } catch (e) { break; } } return stack; } }; })); package/dist/stack-generator.min.js000644 0000005331 3560116604 014436 0ustar00000000 000000 !function(t,e){"use strict";"function"==typeof define&&define.amd?define("stackframe",[],e):"object"==typeof exports?module.exports=e():t.StackFrame=e()}(this,function(){"use strict";function t(t){return t.charAt(0).toUpperCase()+t.substring(1)}function e(t){return function(){return this[t]}}var r=["isConstructor","isEval","isNative","isToplevel"],n=["columnNumber","lineNumber"],i=["fileName","functionName","source"],o=r.concat(n,i,["args"]);function a(e){if(e)for(var r=0;r