Socket
Socket
Sign inDemoInstall

@codesee/babel-plugin-instrument

Package Overview
Dependencies
Maintainers
4
Versions
712
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@codesee/babel-plugin-instrument - npm Package Compare versions

Comparing version 0.5.0 to 0.6.0

lib/visitors/catch-errors.js

2

lib/index.js

@@ -1,1 +0,1 @@

"use strict";var _helperPluginUtils=require("@babel/helper-plugin-utils"),_core=require("@babel/core"),_traverse=_interopRequireDefault(require("@babel/traverse")),_helperModuleImports=require("@babel/helper-module-imports"),_objectPath=require("object-path"),_constants=require("./constants"),_utils=require("./utils"),_trackingConfig=_interopRequireDefault(require("./tracking-config")),_ensureBlockStatements=_interopRequireDefault(require("./visitors/ensure-block-statements")),_tracing=require("./visitors/tracing"),_dataTracking=require("./visitors/data-tracking"),_inlineDataTracking=_interopRequireDefault(require("./visitors/inline-data-tracking")),_ensureClassConstructors=_interopRequireDefault(require("./visitors/ensure-class-constructors")),_ensureSimpleComputedMemberExpressions=_interopRequireDefault(require("./visitors/ensure-simple-computed-member-expressions")),_functionInputTracking=_interopRequireDefault(require("./visitors/function-input-tracking")),_finalCleanup=_interopRequireDefault(require("./visitors/final-cleanup"));function _interopRequireDefault(a){return a&&a.__esModule?a:{default:a}}function _slicedToArray(a,b){return _arrayWithHoles(a)||_iterableToArrayLimit(a,b)||_unsupportedIterableToArray(a,b)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _iterableToArrayLimit(a,b){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(a)))return;var c=[],d=!0,e=!1,f=void 0;try{for(var g=a[Symbol.iterator](),h;!(d=(h=g.next()).done);d=!0){c.push(h.value);if(b&&c.length===b)break}}catch(a){e=!0;f=a}finally{try{if(!d&&null!=g["return"])g["return"]()}finally{if(e)throw f}}return c}function _arrayWithHoles(a){if(Array.isArray(a))return a}function _toConsumableArray(a){return _arrayWithoutHoles(a)||_iterableToArray(a)||_unsupportedIterableToArray(a)||_nonIterableSpread()}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(a,b){if(!a)return;if("string"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);if("Object"===c&&a.constructor)c=a.constructor.name;if("Map"===c||"Set"===c)return Array.from(a);if("Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c))return _arrayLikeToArray(a,b)}function _iterableToArray(a){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(a))return Array.from(a)}function _arrayWithoutHoles(a){if(Array.isArray(a))return _arrayLikeToArray(a)}function _arrayLikeToArray(a,b){if(null==b||b>a.length)b=a.length;for(var c=0,d=Array(b);c<b;c++){d[c]=a[c]}return d}var _require=require("@babel/plugin-transform-typescript"),typescriptPlugin=_require["default"],getTrimmedFilename=function(a){var b=(0,_objectPath.get)(a,"file.opts.filename","root"),c=(0,_objectPath.get)(a,"file.opts.root","");return b.replace(c,"")},rootFileName=null,rootSource=null,extractCommentsFromNode=function(a){return[].concat(_toConsumableArray(a.leadingComments?a.leadingComments:[]),_toConsumableArray(a.innerComments?a.innerComments:[]),_toConsumableArray(a.trailingComments?a.trailingComments:[]))},getAllCommentsFromNode=function(a){var b=extractCommentsFromNode(a);return a.body?a.body.reduce(function(a,b){var c=extractCommentsFromNode(b);return[].concat(_toConsumableArray(a),_toConsumableArray(c))},b):b};module.exports=(0,_helperPluginUtils.declare)(function(a){a.assertVersion("^7.0.0-beta.4");var b;return{name:"@codesee/babel-plugin-instrument",visitor:{Program:{enter:function enter(c,d){var e=c.hub.file.opts.filename||"";if(e.match(/node_modules/)){console.warn("CodeSee is skipping "+e);d.skip=!0;return}var f=getAllCommentsFromNode(c.node);if(f.some(function(a){return a.value.includes("@Codesee-ignore-file")})){d.skip=!0;return}rootFileName=getTrimmedFilename(d);rootSource=c.hub.file.code.split("\n");b=new _trackingConfig["default"];if(d.opts.onlyTrack)b.set(d.opts.onlyTrack.split(","));if(b.shouldTrack(_constants.codeSeeSource)){var g=[_core.types.objectExpression([_core.types.objectProperty(_core.types.stringLiteral(rootFileName),_core.types.arrayExpression(rootSource.map(function(a){return _core.types.stringLiteral(a)})))])],h=(0,_utils.codeSeeCall)(_core.types,"source",g);c.unshiftContainer("body",_core.types.expressionStatement(h))}var i=a.version.split(/[-\.]/),j=_slicedToArray(i,2),k=j[0],l=j[1];if(7<k||7==k&&2<=l){var m=typescriptPlugin(a).visitor;c.traverse(m)}c.traverse((0,_ensureBlockStatements["default"])(_core.types));c.traverse((0,_ensureClassConstructors["default"])(_core.types));c.traverse((0,_ensureSimpleComputedMemberExpressions["default"])(_core.types));(0,_traverse["default"])(c.hub.file.ast,(0,_tracing.annotateFunctionNameVisitor)(_core.types,rootFileName,a.version),c.hub.file.scope);c.traverse((0,_tracing.traceLineVisitor)(_core.types,rootFileName,b),d);c.traverse((0,_dataTracking.trackerVisitor)(_core.types,rootFileName,b,a.version),d);c.traverse((0,_inlineDataTracking["default"])(_core.types,b),d);c.traverse((0,_functionInputTracking["default"])(_core.types,rootFileName,b,a.version));(0,_traverse["default"])(c.hub.file.ast,(0,_tracing.traceStackFrameVisitor)(_core.types,rootFileName,b,a.version),c.hub.file.scope);if(b.shouldTrack("codeSeeImports")){(0,_helperModuleImports.addSideEffect)(c,"@codesee/tracker")}},exit:function exit(a,b){if(b.skip){return}a.traverse((0,_finalCleanup["default"])(_core.types))}}},manipulateOptions:function manipulateOptions(a,b){b.plugins.push("const-enum","jsx")}}});function anyTypescript(a,b){var c={},d=b.version.split(/[-\.]/),e=_slicedToArray(d,1),f=e[0];if(7<=f){a.traverse({"TSType|TSQualifiedName|TSTypeElement|TSAsExpression|TSDeclareFunction|TSDeclareMethod|TSEnumDeclaration|TSEnumMember|TSExportAssignment|TSExternalModuleReference|TSImportEqualsDeclaration|TSInterfaceBody|TSInterfaceDeclaration|TSModuleBlock|TSModuleDeclaration|TSNamespaceExportDeclaration|TSNonNullExpression|TSParameterProperty|TSTypeAliasDeclaration|TSTypeAnnotation|TSTypeAssertion|TSTypeParameter|TSTypeParameterDeclaration|TypeParameterInstantiation":{enter:function enter(a,b){b.present=!0;a.stop()}}},c);if(c.present){return!0}}return!1}
"use strict";var _helperPluginUtils=require("@babel/helper-plugin-utils"),_core=require("@babel/core"),_traverse=_interopRequireDefault(require("@babel/traverse")),_helperModuleImports=require("@babel/helper-module-imports"),_objectPath=require("object-path"),_constants=require("./constants"),_utils=require("./utils"),_trackingConfig=_interopRequireDefault(require("./tracking-config")),_ensureBlockStatements=_interopRequireDefault(require("./visitors/ensure-block-statements")),_tracing=require("./visitors/tracing"),_dataTracking=require("./visitors/data-tracking"),_inlineDataTracking=_interopRequireDefault(require("./visitors/inline-data-tracking")),_ensureClassConstructors=_interopRequireDefault(require("./visitors/ensure-class-constructors")),_ensureSimpleComputedMemberExpressions=_interopRequireDefault(require("./visitors/ensure-simple-computed-member-expressions")),_functionInputTracking=_interopRequireDefault(require("./visitors/function-input-tracking")),_checkSourceType=_interopRequireDefault(require("./visitors/check-source-type")),_finalCleanup=_interopRequireDefault(require("./visitors/final-cleanup")),_catchErrors=_interopRequireDefault(require("./visitors/catch-errors"));function _interopRequireDefault(a){return a&&a.__esModule?a:{default:a}}function _slicedToArray(a,b){return _arrayWithHoles(a)||_iterableToArrayLimit(a,b)||_unsupportedIterableToArray(a,b)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _iterableToArrayLimit(a,b){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(a)))return;var c=[],d=!0,e=!1,f=void 0;try{for(var g=a[Symbol.iterator](),h;!(d=(h=g.next()).done);d=!0){c.push(h.value);if(b&&c.length===b)break}}catch(a){e=!0;f=a}finally{try{if(!d&&null!=g["return"])g["return"]()}finally{if(e)throw f}}return c}function _arrayWithHoles(a){if(Array.isArray(a))return a}function _toConsumableArray(a){return _arrayWithoutHoles(a)||_iterableToArray(a)||_unsupportedIterableToArray(a)||_nonIterableSpread()}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(a,b){if(!a)return;if("string"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);if("Object"===c&&a.constructor)c=a.constructor.name;if("Map"===c||"Set"===c)return Array.from(a);if("Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c))return _arrayLikeToArray(a,b)}function _iterableToArray(a){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(a))return Array.from(a)}function _arrayWithoutHoles(a){if(Array.isArray(a))return _arrayLikeToArray(a)}function _arrayLikeToArray(a,b){if(null==b||b>a.length)b=a.length;for(var c=0,d=Array(b);c<b;c++){d[c]=a[c]}return d}var _require=require("@babel/plugin-transform-typescript"),typescriptPlugin=_require["default"],TRACKER_MODULE_NAME="@codesee/tracker",getTrimmedFilename=function(a){var b=(0,_objectPath.get)(a,"file.opts.filename","root"),c=(0,_objectPath.get)(a,"file.opts.root","");return b.replace(c,"")},rootFileName=null,rootSource=null,extractCommentsFromNode=function(a){return[].concat(_toConsumableArray(a.leadingComments?a.leadingComments:[]),_toConsumableArray(a.innerComments?a.innerComments:[]),_toConsumableArray(a.trailingComments?a.trailingComments:[]))},getAllCommentsFromNode=function(a){var b=extractCommentsFromNode(a);return a.body?a.body.reduce(function(a,b){var c=extractCommentsFromNode(b);return[].concat(_toConsumableArray(a),_toConsumableArray(c))},b):b};module.exports=(0,_helperPluginUtils.declare)(function(a,b){a.assertVersion("^7.0.0-beta.4");b.includeLibs||(b.includeLibs=[]);var c;return{name:"@codesee/babel-plugin-instrument",visitor:{Program:{enter:function enter(d,e){var f=d.hub.file.opts.filename||"";if(f.match(/node_modules/)){console.warn("CodeSee is skipping this file, even though Babel is configured to transform it:\n"+f);e.skip=!0;return}if(-1===b.includeLibs.indexOf("gatsby")&&f.match(/\/\.cache\//)){e.skip=!0;return}var g=getAllCommentsFromNode(d.node);if(g.some(function(a){return a.value.includes("@Codesee-ignore-file")})){e.skip=!0;return}rootFileName=getTrimmedFilename(e);rootSource=d.hub.file.code.split("\n");c=new _trackingConfig["default"];if(e.opts.onlyTrack)c.set(e.opts.onlyTrack.split(","));if(c.shouldTrack(_constants.codeSeeSource)){var h=[_core.types.objectExpression([_core.types.objectProperty(_core.types.stringLiteral(rootFileName),_core.types.arrayExpression(rootSource.map(function(a){return _core.types.stringLiteral(a)})))])],i=(0,_utils.codeSeeCall)(_core.types,"source",h);d.unshiftContainer("body",_core.types.expressionStatement(i))}var j=a.version.split(/[-\.]/),k=_slicedToArray(j,2),l=k[0],m=k[1];if(7<l||7==l&&2<=m){var o=typescriptPlugin(a).visitor;d.traverse(o)}d.traverse((0,_ensureBlockStatements["default"])(_core.types));d.traverse((0,_ensureClassConstructors["default"])(_core.types));d.traverse((0,_ensureSimpleComputedMemberExpressions["default"])(_core.types));(0,_traverse["default"])(d.hub.file.ast,(0,_tracing.annotateFunctionNameVisitor)(_core.types,rootFileName,a.version),d.hub.file.scope);d.traverse((0,_tracing.traceLineVisitor)(_core.types,rootFileName,c),e);d.traverse((0,_dataTracking.trackerVisitor)(_core.types,rootFileName,c,a.version),e);d.traverse((0,_inlineDataTracking["default"])(_core.types,c),e);d.traverse((0,_functionInputTracking["default"])(_core.types,rootFileName,c,a.version));(0,_traverse["default"])(d.hub.file.ast,(0,_tracing.traceStackFrameVisitor)(_core.types,rootFileName,c,a.version),d.hub.file.scope);var n={setsModuleExports:!1,usesES6ImportExport:!1};d.traverse(_checkSourceType["default"],n);if(c.shouldTrack("codeSeeImports")){var p=TRACKER_MODULE_NAME+(b.hosted?"/hosted":"");if(n.setsModuleExports&&!n.usesES6ImportExport){e.file.path.node.sourceType="script";var q=_core.types.expressionStatement(_core.types.callExpression(_core.types.identifier("require"),[_core.types.stringLiteral(p)]));d.unshiftContainer("body",q)}else{(0,_helperModuleImports.addSideEffect)(d,p,{importedInterop:"uncompiled"})}}},exit:function exit(a,b){if(b.skip){return}a.traverse((0,_finalCleanup["default"])(_core.types));(0,_traverse["default"])(a.hub.file.ast,_catchErrors["default"],a.hub.file.scope)}}},manipulateOptions:function manipulateOptions(a,b){b.plugins.push("const-enum","jsx")}}});function anyTypescript(a,b){var c={},d=b.version.split(/[-\.]/),e=_slicedToArray(d,1),f=e[0];if(7<=f){a.traverse({"TSType|TSQualifiedName|TSTypeElement|TSAsExpression|TSDeclareFunction|TSDeclareMethod|TSEnumDeclaration|TSEnumMember|TSExportAssignment|TSExternalModuleReference|TSImportEqualsDeclaration|TSInterfaceBody|TSInterfaceDeclaration|TSModuleBlock|TSModuleDeclaration|TSNamespaceExportDeclaration|TSNonNullExpression|TSParameterProperty|TSTypeAliasDeclaration|TSTypeAnnotation|TSTypeAssertion|TSTypeParameter|TSTypeParameterDeclaration|TypeParameterInstantiation":{enter:function enter(a,b){b.present=!0;a.stop()}}},c);if(c.present){return!0}}return!1}

@@ -1,1 +0,1 @@

"use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports.liftAndReplace=liftAndReplace;exports.objToAST=objToAST;exports.insertAsFirstStatementOfBlock=insertAsFirstStatementOfBlock;var _utils=require("./utils");function _typeof(a){"@babel/helpers - typeof";if("function"==typeof Symbol&&"symbol"==typeof Symbol.iterator){_typeof=function(a){return typeof a}}else{_typeof=function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a}}return _typeof(a)}function liftAndReplace(a,b,c){var d=3<arguments.length&&arguments[3]!==void 0?arguments[3]:{},e=d.statementPath,f=d.postProcessReplacement,g=d.noOpIfIdentifier;if(g&&b.isIdentifier()){return}if(!e){e=b.getStatementParent()}var h=(0,_utils.generateTempIdentifier)(e.scope,c),i=a.VariableDeclarator(h,b.node);h.start=i.start=b.node.start;h.end=i.end=b.node.end;h.loc=i.loc=b.node.loc;var j=h;if(f){j=f(h)}b.replaceWith(j);var k=a.VariableDeclaration("const",[i]);k.codesee=!0;var l=e.insertBefore(k)[0];return l}function objToAST(a,b){var c=[];for(var g in b){var d=a.identifier(g),e=b[g],f=void 0;if(a.isNode(e)){f=e}else if("object"===_typeof(e)){f=objToAST(a,e)}else if("number"==typeof e){f=a.numericLiteral(e)}else if("string"==typeof e){f=a.stringLiteral(e)}else{throw["objToAST(): Attempt to create AST from unsupported value: "+e]}c.push(a.objectProperty(d,f))}return a.objectExpression(c)}function insertAsFirstStatementOfBlock(a,b){var c=a.get("body"),d=c[0];if(d){d.insertBefore(b)}else{a.node.body=[b]}}
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports.liftAndReplace=liftAndReplace;exports.objToAST=objToAST;exports.insertAsFirstStatementOfBlock=insertAsFirstStatementOfBlock;exports.matchStringsToExpressionPath=matchStringsToExpressionPath;var _utils=require("./utils");function _typeof(a){"@babel/helpers - typeof";if("function"==typeof Symbol&&"symbol"==typeof Symbol.iterator){_typeof=function(a){return typeof a}}else{_typeof=function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a}}return _typeof(a)}function liftAndReplace(a,b,c){var d=3<arguments.length&&arguments[3]!==void 0?arguments[3]:{},e=d.statementPath,f=d.postProcessReplacement,g=d.noOpIfIdentifier;if(g&&b.isIdentifier()){return}if(!e){e=b.getStatementParent()}var h=(0,_utils.generateTempIdentifier)(e.scope,c),i=a.VariableDeclarator(h,b.node);h.start=i.start=b.node.start;h.end=i.end=b.node.end;h.loc=i.loc=b.node.loc;var j=h;if(f){j=f(h)}b.replaceWith(j);var k=a.VariableDeclaration("const",[i]);k.codesee=!0;var l=e.insertBefore(k)[0];return l}function objToAST(a,b){var c=[];for(var g in b){var d=a.identifier(g),e=b[g],f=void 0;if(a.isNode(e)){f=e}else if("object"===_typeof(e)){f=objToAST(a,e)}else if("number"==typeof e){f=a.numericLiteral(e)}else if("string"==typeof e){f=a.stringLiteral(e)}else{throw["objToAST(): Attempt to create AST from unsupported value: "+e]}c.push(a.objectProperty(d,f))}return a.objectExpression(c)}function insertAsFirstStatementOfBlock(a,b){var c=a.get("body"),d=c[0];if(d){d.insertBefore(b)}else{a.node.body=[b]}}function matchStringsToExpressionPath(a,b){if(hasName(b)&&1==a.length){return matchName(b,a[0])}if(b.isMemberExpression()&&2<=a.length){var c=a.pop(),d=b.get("property");if(hasName(d)&&matchName(d,c)){if(hasName(b.get("object"))&&1==a.length){var e=a.pop();return matchName(b.get("object"),e)}else if(b.get("object").isMemberExpression()&&1<a.length){return matchStringsToExpressionPath(a,b.get("object"))}}}return!1}function hasName(a){return a.isIdentifier()||a.isImport()||a.isThisExpression()}function matchName(a,b){if(a.isIdentifier()){return a.node.name===b||"*"===b}else if(a.isImport()){return"import"===b}else if(a.isThisExpression()){return"this"===b}return!1}

@@ -1,1 +0,1 @@

"use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports.getStackFrameIdIdentifier=exports.findStackFrameIdIdentifier=exports.hasCodeSeeTracking=exports.isFuncInputsStatement=exports.isCodeSeeCallExpr=exports.isStackFrameEnterStatement=exports.codeSeeCall=void 0;var _constants=require("../constants"),_utils=require("./utils"),codeSeeCall=function(a,b,c){var d=a.callExpression(a.memberExpression(a.identifier("CodeSee"),a.identifier(b)),c);d.codesee=!0;return d};exports.codeSeeCall=codeSeeCall;var isStackFrameEnterStatement=function(a){if(a.isVariableDeclaration()&&a.get("declarations")[0].get("init").isCallExpression()&&a.get("declarations")[0].get("init").get("callee").isMemberExpression()&&"CodeSee"===a.node.declarations[0].init.callee.object.name&&a.node.declarations[0].init.callee.property.name===_constants.codeSeeStackframe){return!0}return!1};exports.isStackFrameEnterStatement=isStackFrameEnterStatement;var isCodeSeeCallExpr=function(a){if(a.isCallExpression()&&a.get("callee").isMemberExpression()&&"CodeSee"===a.node.callee.object.name){return!0}return!1};exports.isCodeSeeCallExpr=isCodeSeeCallExpr;var isFuncInputsStatement=function(a){if(a.isExpressionStatement()&&isCodeSeeCallExpr(a.get("expression"))&&a.node.expression.callee.property.name===_constants.codeSeeFuncParams){return!0}return!1};exports.isFuncInputsStatement=isFuncInputsStatement;var hasCodeSeeTracking=function(a){var b={found:!1};a.traverse({CallExpression:function CallExpression(a,b){if(isCodeSeeCallExpr(a)||a.get("callee").isSuper()){b.found=!0;a.stop()}}},b);return b.found};exports.hasCodeSeeTracking=hasCodeSeeTracking;var findStackFrameIdIdentifier=function(a){var b=[a.parentKey],c=a.parentPath,d=c.find(function(a){b.unshift(a.parentKey);return a.isFunction()||a.isProgram()||a.isClassProperty({static:!1})});if(d.isClassProperty()){var e=d.parentPath,f=e.get("body").find(function(a){return a.isClassMethod({kind:"constructor"})});if(!f){console.error("CodeSee Internal Error: Found class without constructor, even after constructor generation?")}else{d=f}}if(d.isClassMethod()||d.isObjectMethod()){if("key"===b[1]){return findStackFrameIdIdentifier(d)}}return getStackFrameIdIdentifier(d)};exports.findStackFrameIdIdentifier=findStackFrameIdIdentifier;var getStackFrameIdIdentifier=function(a){if(a.node.stackFrameId){return a.node.stackFrameId}var b=(0,_utils.generateTempIdentifier)(a.scope,"stackFrameId");a.node.stackFrameId=b;return b};exports.getStackFrameIdIdentifier=getStackFrameIdIdentifier;
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports.getStackFrameIdIdentifier=exports.findStackFrameIdIdentifier=exports.hasCodeSeeTracking=exports.isFuncInputsStatement=exports.isCodeSeeCallExpr=exports.isStackFrameEnterStatement=exports.codeSeeCall=void 0;var _constants=require("../constants"),_utils=require("./utils"),t=require("@babel/types"),codeSeeCall=function(a,b,c){var d=a.callExpression(a.memberExpression(a.identifier("CodeSee"),a.identifier(b)),c);d.codesee=!0;return d};exports.codeSeeCall=codeSeeCall;var isStackFrameEnterStatement=function(a){if(a.isVariableDeclaration()&&a.get("declarations")[0].get("init").isCallExpression()&&a.get("declarations")[0].get("init").get("callee").isMemberExpression()&&"CodeSee"===a.node.declarations[0].init.callee.object.name&&a.node.declarations[0].init.callee.property.name===_constants.codeSeeStackframe){return!0}return!1};exports.isStackFrameEnterStatement=isStackFrameEnterStatement;var isCodeSeeCallExpr=function(a){if(a.isCallExpression()&&a.get("callee").isMemberExpression()&&"CodeSee"===a.node.callee.object.name){return!0}return!1};exports.isCodeSeeCallExpr=isCodeSeeCallExpr;var isFuncInputsStatement=function(a){if(a.isExpressionStatement()&&isCodeSeeCallExpr(a.get("expression"))&&a.node.expression.callee.property.name===_constants.codeSeeFuncParams){return!0}return!1};exports.isFuncInputsStatement=isFuncInputsStatement;var hasCodeSeeTracking=function(a){var b={found:!1};a.traverse({CallExpression:function CallExpression(a,b){if(isCodeSeeCallExpr(a)||a.get("callee").isSuper()){b.found=!0;a.stop()}}},b);return b.found};exports.hasCodeSeeTracking=hasCodeSeeTracking;var findStackFrameIdIdentifier=function(a){var b=[a.parentKey],c=a.parentPath,d=c.find(function(a){b.unshift(a.parentKey);return a.isFunction()||a.isProgram()||a.isClassProperty({static:!1})});if(d.isClassProperty()){var e=d.parentPath,f=e.get("body").find(function(a){return a.isClassMethod({kind:"constructor"})});if(!f){console.error("CodeSee Internal Error: Found class without constructor, even after constructor generation?");return t.identifier("undefined")}else{var g=getStackFrameIdIdentifier(f),h=g,i=t.parenthesizedExpression(t.conditionalExpression(t.binaryExpression("!==",t.unaryExpression("typeof",h,!0),t.stringLiteral("undefined")),h,t.identifier("undefined")));return i}}if(d.isClassMethod()||d.isObjectMethod()){if("key"===b[1]){return findStackFrameIdIdentifier(d)}}return getStackFrameIdIdentifier(d)};exports.findStackFrameIdIdentifier=findStackFrameIdIdentifier;var getStackFrameIdIdentifier=function(a){if(a.node.stackFrameId){return a.node.stackFrameId}var b=(0,_utils.generateTempIdentifier)(a.scope,"stackFrameId");a.node.stackFrameId=b;return b};exports.getStackFrameIdIdentifier=getStackFrameIdIdentifier;

@@ -1,1 +0,1 @@

"use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports["default"]=rhsDataTrackingVisitor;var _utils=require("../utils"),_uid=require("../uid"),_constants=require("../constants");function _typeof(a){"@babel/helpers - typeof";if("function"==typeof Symbol&&"symbol"==typeof Symbol.iterator){_typeof=function(a){return typeof a}}else{_typeof=function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a}}return _typeof(a)}function rhsDataTrackingVisitor(a,b){var c=function(b,c){var d=2<arguments.length&&arguments[2]!==void 0?arguments[2]:{},e=d.force,f=d.additionalParams,g=d.loc;if(b.node.codesee&&!e)return;if(b.node.tracked&&!e)return;if(!b.node.loc){console.error("attempt to wrap node with no loc. node type:",b.node.type,c,b.node.tracked);if(b.isCallExpression()){console.error(b.node.callee.name)}else if(b.isIdentifier()){console.error(b.node.name);console.error(b.parent)}return}var h=(0,_utils.findStackFrameIdIdentifier)(b),i=[b.node,h,a.stringLiteral(g||(0,_utils.getLocString)(b.node.loc))];if(b.isIdentifier()){i.push(a.stringLiteral((0,_uid.determineIdentifierUID)(b.node.name,b)))}if(f){f.forEach(function(a){i.push(a)})}var j=(0,_utils.codeSeeCall)(a,c,i);j.loc=b.node.loc;return j},d=function(d,e){var f=2<arguments.length&&arguments[2]!==void 0?arguments[2]:{},g=f.force,h=f.additionalParams,i=f.loc,j=c(d,e,{force:g,additionalParams:h,loc:i});if(j===void 0){return}d.node.tracked=!0;if(b.shouldTrack(_constants.codeSeeInlineTracking)){var m=d.node;d.replaceWith(j);if(a.isIdentifier(m)){var k=d.get("arguments.0"),l=d.scope.getBinding(m.name);if(l){var n=l.referencePaths.findIndex(function(a){return a===d});if(0<=n){l.referencePaths[n]=k}}}}},e=function(a,b){var c="read",e=a.parentPath;if(e.isIfStatement()||e.isSwitchStatement()&&"discriminant"===a.key||e.isReturnStatement()||e.isUpdateExpression()){return}if(e.isMemberExpression()&&"object"===a.key){b.statements[0].possibleMutations+=1;if("callee"===e.key&&e.parentPath.isCallExpression()){return}else{c="getProp"}}else if((e.isCallExpression()||e.isNewExpression())&&"arguments"===a.listKey){b.statements[0].possibleMutations+=1;c="funcArg"}d(a,c)},f=function(c,d){if(!c.node.loc){return}var e=c.node.callee,f=[];if(a.isMemberExpression(e)&&c.isCallExpression()&&!a.isSuper(e.object)){d="callProp";var g=c.get("callee"),i=g.get("property"),j;if(!g.node.computed&&i.isIdentifier()){j=a.stringLiteral(i.node.name)}else{j=i.node}var l=g.get("object");f.push(l.node);f.push(j)}else if(a.isMemberExpression(e)&&c.isCallExpression()&&a.isSuper(e.object)){var m=a.callExpression(a.memberExpression(e,a.identifier("bind")),[a.thisExpression()]);f.push(m)}else{f.push(e)}f.push(a.arrayExpression(c.node.arguments));f.push((0,_utils.findStackFrameIdIdentifier)(c));f.push(a.stringLiteral((0,_utils.getLocString)(c.node.loc)));var k=(0,_utils.codeSeeCall)(a,d,f);k.loc=c.node.loc;c.node.tracked=!0;e.tracked=!0;if(b.shouldTrack(_constants.codeSeeInlineTracking)){var n=c.skipKeys;c.skipKey("callee");(0,_utils.traverseWithSkipKeys)(c,h,{});c.skipKeys=n;c.replaceWith(k)}},g=function(c,d){var e=(0,_utils.findStackFrameIdIdentifier)(c),f=[e,a.stringLiteral((0,_utils.getLocString)(d))],g=(0,_utils.codeSeeCall)(a,"loopBodyBegin",f),h=(0,_utils.codeSeeCall)(a,"loopBodyEnd",f),i=c.get("body").get("body"),j=i[0],k=i[Math.max(0,i.length-1)];if(b.shouldTrack(_constants.codeSeeInlineTracking)){if(j){j.insertBefore(a.expressionStatement(g));k.insertAfter(a.expressionStatement(h))}else{c.node.body.body=[g,h]}}},h={Statement:{enter:function enter(a,b){if((0,_utils.nodeIsIgnored)(a.node)){a.skip();return}if("object"!==_typeof(b.statements)){b.statements=[]}b.statements.unshift({path:a,possibleMutations:0})},exit:function exit(c,d){var e=d.statements.shift(),f=e.possibleMutations;if(c.isReturnStatement()||c.isExpressionStatement()&&c.get("expression").isYieldExpression()){return}if(f){var g=(0,_utils.codeSeeCall)(a,"checkForMutations",[]);if(b.shouldTrack(_constants.codeSeeInlineTracking)){var h=c.get("body");if(null===h||void 0===h?void 0:h.isBlockStatement()){var i=h.get("body")[0];if(i){i.insertBefore(a.expressionStatement(g))}else{h.node.body=[a.expressionStatement(g)]}}else{c.insertAfter(a.expressionStatement(g))}}}}},ImportDeclaration:function ImportDeclaration(a){a.skip()},ExportSpecifier:function ExportSpecifier(a){a.skip()},ExportNamespaceSpecifier:function ExportNamespaceSpecifier(a){a.skip()},"ReturnStatement|YieldExpression":{exit:function exit(b){if(b.node.argument&&!b.node.argument.codeseeId){d(b.get("argument"),"returnVal",{force:!0});(0,_utils.liftAndReplace)(a,b.get("argument"),"returnValue")}}},IfStatement:{exit:function exit(a){d(a.get("test"),"test")}},SwitchStatement:{exit:function exit(a){d(a.get("discriminant"),"switchTest")}},SwitchCase:{enter:function enter(a){a.skipKey("test")}},Expression:{enter:function enter(a){if(a.node.codesee){a.skip();return}if((0,_utils.nodeIsIgnored)(a.node)){a.skip()}},exit:function exit(b){if(a.isLiteral(b)||a.isIdentifier(b)||a.isCallExpression(b)||a.isAssignmentExpression(b)||a.isMemberExpression(b)||a.isOptionalMemberExpression(b)||a.isFunction(b)||a.isThisExpression(b)||a.isAwaitExpression(b)||a.isParenthesizedExpression(b)||a.isSuper(b)||a.isMetaProperty(b)||a.isYieldExpression(b)||"test"===b.key&&a.isIfStatement(b.parentPath)||"discriminant"===b.key&&a.isSwitchStatement(b.parentPath)||"callee"===b.key&&a.isCallExpression(b.parentPath)||"right"===b.key&&(a.isForInStatement(b.parentPath)||a.isForOfStatement(b.parentPath))||a.isReturnStatement(b.parentPath)||b.isConstantExpression()){return}var c={ids:0};b.traverse({Identifier:function Identifier(a,b){b.ids+=1}},c);if(0===c.ids){return}d(b,"expr")}},TaggedTemplateExpression:{enter:function enter(a){a.skipKey("tag")}},CallExpression:{enter:function enter(b){if(a.isIdentifier(b.node.callee)){b.skipKey("callee")}var c=b.get("callee"),e=_constants.sacredCallExpressions.some(function(a){var b=a.split(".");return matchStringsToExpressionPath(b,c)});if(e){d(b,"expr");b.skip()}},exit:function exit(a){if(a.node.codesee)return;if(!a.get("callee").isSuper()){f(a,"callExp")}}},AwaitExpression:{exit:function exit(b){if(b.node.tracked)return;var d=(0,_utils.getLocString)(b.node.loc),e=(0,_utils.findStackFrameIdIdentifier)(b),f=(0,_utils.generateTempIdentifier)(b.scope,"awaitResult"),g=a.variableDeclaration("let",[a.variableDeclarator(f)]);g.codesee=!0;var h=c(b.get("argument"),"aboutToAwait",{force:!0,loc:d}),i=a.awaitExpression(h);i.loc=b.node.loc;i.tracked=!0;var j=a.sequenceExpression([a.assignmentExpression("=",f,i),a.assignmentExpression("=",e,(0,_utils.codeSeeCall)(a,"backFromAwait",[f,e,a.stringLiteral(d)])),f]);j.codesee=!0;j.loc=b.node.loc;b.getStatementParent().insertBefore(g);b.replaceWith(j)}},"MemberExpression|OptionalMemberExpression":{enter:function enter(a){if(!a.node.computed){a.skipKey("property")}var b=_constants.sacredMemberExpressions.some(function(b){var c=b.split(".");return matchStringsToExpressionPath(c,a)});if(b){d(a,"expr");a.skip()}},exit:function exit(a,b){if("callee"===a.key)return;e(a,b)}},AssignmentExpression:function AssignmentExpression(a){a.skipKey("left")},VariableDeclaration:function VariableDeclaration(){},VariableDeclarator:function VariableDeclarator(a){a.skipKey("id")},Function:function Function(a){if((0,_utils.nodeIsIgnored)(a.node)){a.skip();return}a.skipKey("params")},FunctionExpression:{enter:function enter(a){a.skipKey("id")},exit:function exit(a){d(a,"funcExp")}},ArrowFunctionExpression:{exit:function exit(a){d(a,"funcExp")}},FunctionDeclaration:function FunctionDeclaration(a){a.skipKey("id")},"ClassDeclaration|ClassExpression":function ClassDeclarationClassExpression(a){a.skipKey("id")},NewExpression:{enter:function enter(a){a.skipKey("callee")},exit:function exit(a){f(a,"newExp")}},"ForInStatement|ForOfStatement":{enter:function enter(a){a.skipKey("left")},exit:function exit(c){var e=a.stringLiteral((0,_utils.getLocString)(c.node.loc)),f=a.stringLiteral(c.node.type),h=(0,_utils.findStackFrameIdIdentifier)(c);d(c.get("right"),"loopIterable",{force:!0,additionalParams:[e,f]});var i=c.node.right.loc;g(c,i);var j=(0,_utils.codeSeeCall)(a,"loopEnd",[h,e]);if(b.shouldTrack(_constants.codeSeeInlineTracking)){c.insertAfter(a.expressionStatement(j))}}},"ForStatement|WhileStatement|DoWhileStatement":{exit:function exit(c){var e,f,h,i,j,k,l,m;if(c.node.test){d(c.get("test"),"loopTest",{force:!0})}var n=[(0,_utils.findStackFrameIdIdentifier)(c),a.stringLiteral((0,_utils.getLocString)(c.node.loc)),a.stringLiteral(c.node.type)],o=(0,_utils.codeSeeCall)(a,"loopStart",n),p=(0,_utils.codeSeeCall)(a,"loopEnd",[n[0],n[1]]);if(b.shouldTrack(_constants.codeSeeInlineTracking)){c.insertBefore(a.expressionStatement(o));c.insertAfter(a.expressionStatement(p))}var q={start:(null===(e=c.node.test)||void 0===e?void 0:null===(f=e.loc)||void 0===f?void 0:f.start)||(null===(h=c.node.update)||void 0===h?void 0:null===(i=h.loc)||void 0===i?void 0:i.start)||c.node.loc.start,end:(null===(j=c.node.update)||void 0===j?void 0:null===(k=j.loc)||void 0===k?void 0:k.end)||(null===(l=c.node.test)||void 0===l?void 0:null===(m=l.loc)||void 0===m?void 0:m.end)||c.node.loc.start};g(c,q)}},ContinueStatement:{exit:function exit(c){if(c.node.label){throw["CodeSee does not yet support `continue` statements with a label: "+JSON.stringify(c.node.loc)]}var d=[(0,_utils.findStackFrameIdIdentifier)(c),a.stringLiteral((0,_utils.getLocString)(c.node.loc))],e=(0,_utils.codeSeeCall)(a,"loopBodyEnd",d);if(b.shouldTrack(_constants.codeSeeInlineTracking)){c.insertBefore(a.expressionStatement(e))}}},BreakStatement:{exit:function exit(a){if(a.node.label){throw["CodeSee does not yet support `break` statements with a label: "+JSON.stringify(a.node.loc)]}}},CatchClause:function CatchClause(a){a.skipKey("param")},MetaProperty:function MetaProperty(a){a.skip()},PrivateName:function PrivateName(a){a.skipKey("id")},UpdateExpression:{exit:function exit(a){var b=(a.node.prefix?"pre":"post")+("++"===a.node.operator?"Incr":"Decr");d(a,b)}},Identifier:{exit:function exit(a,b){if("key"===a.key)return;e(a,b)}},ThisExpression:{exit:function exit(a,b){e(a,b)}},UnaryExpression:{enter:function enter(a){if("typeof"===a.node.operator&&a.get("argument").isIdentifier()){a.skipKey("argument")}}}};return h}function isAnyMemberExpression(a){return a.isMemberExpression()||a.isOptionalMemberExpression()}function matchStringsToExpressionPath(a,b){if(hasName(b)&&1==a.length){return matchName(b,a[0])}if(b.isMemberExpression()&&2<=a.length){var c=a.pop(),d=b.get("property");if(hasName(d)&&matchName(d,c)){if(hasName(b.get("object"))&&1==a.length){var e=a.pop();return matchName(b.get("object"),e)}else if(b.get("object").isMemberExpression()&&1<a.length){return matchStringsToExpressionPath(a,b.get("object"))}}}return!1}function hasName(a){return a.isIdentifier()||a.isImport()||a.isThisExpression()}function matchName(a,b){if(a.isIdentifier()){return a.node.name===b||"*"===b}else if(a.isImport()){return"import"===b}else if(a.isThisExpression()){return"this"===b}return!1}
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports["default"]=rhsDataTrackingVisitor;var _utils=require("../utils"),_uid=require("../uid"),_constants=require("../constants");function _typeof(a){"@babel/helpers - typeof";if("function"==typeof Symbol&&"symbol"==typeof Symbol.iterator){_typeof=function(a){return typeof a}}else{_typeof=function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a}}return _typeof(a)}function rhsDataTrackingVisitor(a,b){var c=function(b,c){var d=2<arguments.length&&arguments[2]!==void 0?arguments[2]:{},e=d.force,f=d.additionalParams,g=d.loc;if(b.node.codesee&&!e)return;if(b.node.tracked&&!e)return;if(!b.node.loc){console.error("attempt to wrap node with no loc. node type:",b.node.type,c,b.node.tracked);if(b.isCallExpression()){console.error(b.node.callee.name)}else if(b.isIdentifier()){console.error(b.node.name);console.error(b.parent)}return}var h=(0,_utils.findStackFrameIdIdentifier)(b),i=[b.node,h,a.stringLiteral(g||(0,_utils.getLocString)(b.node.loc))];if(b.isIdentifier()){i.push(a.stringLiteral((0,_uid.determineIdentifierUID)(b.node.name,b)))}if(f){f.forEach(function(a){i.push(a)})}var j=(0,_utils.codeSeeCall)(a,c,i);j.loc=b.node.loc;return j},d=function(d,e){var f=2<arguments.length&&arguments[2]!==void 0?arguments[2]:{},g=f.force,h=f.additionalParams,i=f.loc,j=c(d,e,{force:g,additionalParams:h,loc:i});if(j===void 0){return}d.node.tracked=!0;if(b.shouldTrack(_constants.codeSeeInlineTracking)){var m=d.node;d.replaceWith(j);if(a.isIdentifier(m)){var k=d.get("arguments.0"),l=d.scope.getBinding(m.name);if(l){var n=l.referencePaths.findIndex(function(a){return a===d});if(0<=n){l.referencePaths[n]=k}}}}},e=function(a,b){var c="read",e=a.parentPath;if(e.isIfStatement()||e.isSwitchStatement()&&"discriminant"===a.key||e.isReturnStatement()||e.isUpdateExpression()){return}if(e.isMemberExpression()&&"object"===a.key){b.statements[0].possibleMutations+=1;if("callee"===e.key&&e.parentPath.isCallExpression()){return}else{c="getProp"}}else if((e.isCallExpression()||e.isNewExpression())&&"arguments"===a.listKey){b.statements[0].possibleMutations+=1;c="funcArg"}d(a,c)},f=function(c,d){if(!c.node.loc){return}var e=c.node.callee,f=[];if(a.isMemberExpression(e)&&c.isCallExpression()&&!a.isSuper(e.object)){d="callProp";var g=c.get("callee"),i=g.get("property"),j;if(!g.node.computed&&i.isIdentifier()){j=a.stringLiteral(i.node.name)}else{j=i.node}var l=g.get("object");f.push(l.node);f.push(j)}else if(a.isMemberExpression(e)&&c.isCallExpression()&&a.isSuper(e.object)){var m=a.callExpression(a.memberExpression(e,a.identifier("bind")),[a.thisExpression()]);f.push(m)}else{f.push(e)}f.push(a.arrayExpression(c.node.arguments));f.push((0,_utils.findStackFrameIdIdentifier)(c));f.push(a.stringLiteral((0,_utils.getLocString)(c.node.loc)));var k=(0,_utils.codeSeeCall)(a,d,f);k.loc=c.node.loc;c.node.tracked=!0;e.tracked=!0;if(b.shouldTrack(_constants.codeSeeInlineTracking)){var n=c.skipKeys;c.skipKey("callee");(0,_utils.traverseWithSkipKeys)(c,h,{});c.skipKeys=n;c.replaceWith(k)}},g=function(c,d){var e=(0,_utils.findStackFrameIdIdentifier)(c),f=[e,a.stringLiteral((0,_utils.getLocString)(d))],g=(0,_utils.codeSeeCall)(a,"loopBodyBegin",f),h=(0,_utils.codeSeeCall)(a,"loopBodyEnd",f),i=c.get("body").get("body"),j=i[0],k=i[Math.max(0,i.length-1)];if(b.shouldTrack(_constants.codeSeeInlineTracking)){if(j){j.insertBefore(a.expressionStatement(g));k.insertAfter(a.expressionStatement(h))}else{c.node.body.body=[g,h]}}},h={Statement:{enter:function enter(a,b){if((0,_utils.nodeIsIgnored)(a.node)){a.skip();return}if("object"!==_typeof(b.statements)){b.statements=[]}b.statements.unshift({path:a,possibleMutations:0})},exit:function exit(c,d){var e=d.statements.shift(),f=e.possibleMutations;if(c.isReturnStatement()||c.isExpressionStatement()&&c.get("expression").isYieldExpression()){return}if(f){var g=(0,_utils.codeSeeCall)(a,"checkForMutations",[]);if(b.shouldTrack(_constants.codeSeeInlineTracking)){var h=c.get("body");if(null===h||void 0===h?void 0:h.isBlockStatement()){var i=h.get("body")[0];if(i){i.insertBefore(a.expressionStatement(g))}else{h.node.body=[a.expressionStatement(g)]}}else{c.insertAfter(a.expressionStatement(g))}}}}},ImportDeclaration:function ImportDeclaration(a){a.skip()},ExportSpecifier:function ExportSpecifier(a){a.skip()},ExportNamespaceSpecifier:function ExportNamespaceSpecifier(a){a.skip()},"ReturnStatement|YieldExpression":{exit:function exit(b){if(b.node.argument&&!b.node.argument.codeseeId){d(b.get("argument"),"returnVal",{force:!0});(0,_utils.liftAndReplace)(a,b.get("argument"),"returnValue")}}},IfStatement:{exit:function exit(a){d(a.get("test"),"test")}},SwitchStatement:{exit:function exit(a){d(a.get("discriminant"),"switchTest")}},SwitchCase:{enter:function enter(a){a.skipKey("test")}},Expression:{enter:function enter(a){if(a.node.codesee){a.skip();return}if((0,_utils.nodeIsIgnored)(a.node)){a.skip()}},exit:function exit(b){if(a.isLiteral(b)||a.isIdentifier(b)||a.isCallExpression(b)||a.isAssignmentExpression(b)||a.isMemberExpression(b)||a.isOptionalMemberExpression(b)||a.isFunction(b)||a.isThisExpression(b)||a.isAwaitExpression(b)||a.isParenthesizedExpression(b)||a.isSuper(b)||a.isMetaProperty(b)||a.isYieldExpression(b)||"test"===b.key&&a.isIfStatement(b.parentPath)||"discriminant"===b.key&&a.isSwitchStatement(b.parentPath)||"callee"===b.key&&a.isCallExpression(b.parentPath)||"right"===b.key&&(a.isForInStatement(b.parentPath)||a.isForOfStatement(b.parentPath))||a.isReturnStatement(b.parentPath)||b.isConstantExpression()){return}var c={ids:0};b.traverse({Identifier:function Identifier(a,b){b.ids+=1}},c);if(0===c.ids){return}d(b,"expr")}},TaggedTemplateExpression:{enter:function enter(a){a.skipKey("tag")}},CallExpression:{enter:function enter(b){if(a.isIdentifier(b.node.callee)){b.skipKey("callee")}var c=b.get("callee"),e=_constants.sacredCallExpressions.some(function(a){var b=a.split(".");return(0,_utils.matchStringsToExpressionPath)(b,c)});if(e){d(b,"expr");b.skip()}},exit:function exit(a){if(a.node.codesee)return;if(!a.get("callee").isSuper()){f(a,"callExp")}}},AwaitExpression:{exit:function exit(b){if(b.node.tracked)return;var d=(0,_utils.getLocString)(b.node.loc),e=(0,_utils.findStackFrameIdIdentifier)(b),f=(0,_utils.generateTempIdentifier)(b.scope,"awaitResult"),g=a.variableDeclaration("let",[a.variableDeclarator(f)]);g.codesee=!0;var h=c(b.get("argument"),"aboutToAwait",{force:!0,loc:d}),i=a.awaitExpression(h);i.loc=b.node.loc;i.tracked=!0;var j=a.sequenceExpression([a.assignmentExpression("=",f,i),a.assignmentExpression("=",e,(0,_utils.codeSeeCall)(a,"backFromAwait",[f,e,a.stringLiteral(d)])),f]);j.codesee=!0;j.loc=b.node.loc;b.getStatementParent().insertBefore(g);b.replaceWith(j)}},"MemberExpression|OptionalMemberExpression":{enter:function enter(a){if(!a.node.computed){a.skipKey("property")}var b=_constants.sacredMemberExpressions.some(function(b){var c=b.split(".");return(0,_utils.matchStringsToExpressionPath)(c,a)});if(b){d(a,"expr");a.skip()}},exit:function exit(a,b){if("callee"===a.key)return;e(a,b)}},AssignmentExpression:function AssignmentExpression(a){a.skipKey("left")},VariableDeclaration:function VariableDeclaration(){},VariableDeclarator:function VariableDeclarator(a){a.skipKey("id")},Function:function Function(a){if((0,_utils.nodeIsIgnored)(a.node)){a.skip();return}a.skipKey("params")},FunctionExpression:{enter:function enter(a){a.skipKey("id")},exit:function exit(a){d(a,"funcExp")}},ArrowFunctionExpression:{exit:function exit(a){d(a,"funcExp")}},FunctionDeclaration:function FunctionDeclaration(a){a.skipKey("id")},"ClassDeclaration|ClassExpression":function ClassDeclarationClassExpression(a){a.skipKey("id")},NewExpression:{enter:function enter(a){a.skipKey("callee")},exit:function exit(a){f(a,"newExp")}},"ForInStatement|ForOfStatement":{enter:function enter(a){a.skipKey("left")},exit:function exit(c){var e=a.stringLiteral((0,_utils.getLocString)(c.node.loc)),f=a.stringLiteral(c.node.type),h=(0,_utils.findStackFrameIdIdentifier)(c);d(c.get("right"),"loopIterable",{force:!0,additionalParams:[e,f]});var i=c.node.right.loc;g(c,i);var j=(0,_utils.codeSeeCall)(a,"loopEnd",[h,e]);if(b.shouldTrack(_constants.codeSeeInlineTracking)){c.insertAfter(a.expressionStatement(j))}}},"ForStatement|WhileStatement|DoWhileStatement":{exit:function exit(c){var e,f,h,i,j,k,l,m;if(c.node.test){d(c.get("test"),"loopTest",{force:!0})}var n=[(0,_utils.findStackFrameIdIdentifier)(c),a.stringLiteral((0,_utils.getLocString)(c.node.loc)),a.stringLiteral(c.node.type)],o=(0,_utils.codeSeeCall)(a,"loopStart",n),p=(0,_utils.codeSeeCall)(a,"loopEnd",[n[0],n[1]]);if(b.shouldTrack(_constants.codeSeeInlineTracking)){c.insertBefore(a.expressionStatement(o));c.insertAfter(a.expressionStatement(p))}var q={start:(null===(e=c.node.test)||void 0===e?void 0:null===(f=e.loc)||void 0===f?void 0:f.start)||(null===(h=c.node.update)||void 0===h?void 0:null===(i=h.loc)||void 0===i?void 0:i.start)||c.node.loc.start,end:(null===(j=c.node.update)||void 0===j?void 0:null===(k=j.loc)||void 0===k?void 0:k.end)||(null===(l=c.node.test)||void 0===l?void 0:null===(m=l.loc)||void 0===m?void 0:m.end)||c.node.loc.start};g(c,q)}},ContinueStatement:{exit:function exit(c){if(c.node.label){throw["CodeSee does not yet support `continue` statements with a label: "+JSON.stringify(c.node.loc)]}var d=[(0,_utils.findStackFrameIdIdentifier)(c),a.stringLiteral((0,_utils.getLocString)(c.node.loc))],e=(0,_utils.codeSeeCall)(a,"loopBodyEnd",d);if(b.shouldTrack(_constants.codeSeeInlineTracking)){c.insertBefore(a.expressionStatement(e))}}},BreakStatement:{exit:function exit(a){if(a.node.label){throw["CodeSee does not yet support `break` statements with a label: "+JSON.stringify(a.node.loc)]}}},CatchClause:function CatchClause(a){a.skipKey("param")},MetaProperty:function MetaProperty(a){a.skip()},PrivateName:function PrivateName(a){a.skipKey("id")},UpdateExpression:{exit:function exit(a){var b=(a.node.prefix?"pre":"post")+("++"===a.node.operator?"Incr":"Decr");d(a,b)}},Identifier:{exit:function exit(a,b){if("key"===a.key)return;e(a,b)}},ThisExpression:{exit:function exit(a,b){e(a,b)}},UnaryExpression:{enter:function enter(a){if("typeof"===a.node.operator&&a.get("argument").isIdentifier()){a.skipKey("argument")}}}};return h}

@@ -1,1 +0,1 @@

"use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports.traceStackFrameVisitor=exports.traceLineVisitor=exports.annotateFunctionNameVisitor=void 0;var _utils=require("../utils"),_constants=require("../constants");function _defineProperty(a,b,c){if(b in a){Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0})}else{a[b]=c}return a}function _slicedToArray(a,b){return _arrayWithHoles(a)||_iterableToArrayLimit(a,b)||_unsupportedIterableToArray(a,b)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(a,b){if(!a)return;if("string"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);if("Object"===c&&a.constructor)c=a.constructor.name;if("Map"===c||"Set"===c)return Array.from(a);if("Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c))return _arrayLikeToArray(a,b)}function _arrayLikeToArray(a,b){if(null==b||b>a.length)b=a.length;for(var c=0,d=Array(b);c<b;c++){d[c]=a[c]}return d}function _iterableToArrayLimit(a,b){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(a)))return;var c=[],d=!0,e=!1,f=void 0;try{for(var g=a[Symbol.iterator](),h;!(d=(h=g.next()).done);d=!0){c.push(h.value);if(b&&c.length===b)break}}catch(a){e=!0;f=a}finally{try{if(!d&&null!=g["return"])g["return"]()}finally{if(e)throw f}}return c}function _arrayWithHoles(a){if(Array.isArray(a))return a}var anonymousFunctionLabel="<anonymous function>",traceLineVisitor=function(a,b,c){var d=function(a,c,d){if(d.shouldTrack(_constants.codeSeeLineTrace)&&c.node.loc){b=b||"root";var e=c.node.loc.start,f=c.node.loc.end;if(c.isIfStatement()){f=c.node.test.loc.end}else if(c.isTryStatement()){f=c.node.block.loc.start}else if(c.isSwitchStatement()){f=c.node.discriminant.loc.end}var g=(0,_utils.getLocString)({start:e,end:f}),h=(0,_utils.findStackFrameIdIdentifier)(c),i=(0,_utils.codeSeeCall)(a,_constants.codeSeeLineTrace,[a.stringLiteral(b),(0,_utils.objToAST)(a,{loc:g,uid:h})]);c.insertBefore(a.expressionStatement(i))}},e=function(a){return-1===["ClassDeclaration","BlockStatement","FunctionDeclaration"].indexOf(a)};return{Statement:function Statement(b){if(e(b.node.type)){d(a,b,c)}}}};exports.traceLineVisitor=traceLineVisitor;var traceStackFrameVisitor=function(a,b,c,d){b=b||"root";var e={ReturnStatement:function ReturnStatement(a,b){var c=b.stackframeExitStatement;a.insertBefore(c)},YieldExpression:function YieldExpression(b,c){var d=c.stackframeExitStatement,e=c.stackframeReEnterStatement;if(b.parentPath.isExpressionStatement()){b.parentPath.insertBefore(d);b.parentPath.insertAfter(e)}else if(!0!==b.node.wrappedForStackFrameTracing){b.node.wrappedForStackFrameTracing=!0;var f=(0,_utils.liftAndReplace)(a,b,"yieldValue");f.insertBefore(d);f.insertAfter(e)}},CatchClause:function CatchClause(b,c){var d=c.stackFrameIdIdentifier,e={start:b.node.loc.start,end:b.node.body.loc.start},f=a.expressionStatement((0,_utils.codeSeeCall)(a,_constants.codeSeeStackframeCaught,[d,a.stringLiteral((0,_utils.getLines)(e).loc)]));(0,_utils.insertAsFirstStatementOfBlock)(b.get("body"),f)},Function:function Function(a){a.skip()}},f=function(a,d){var f=d.node.loc;if(d.isClassMethod({kind:"constructor"})){var r=d.find(function(a){return a.isClass()});f=r.node.loc}var g=f!==void 0?(0,_utils.getLocString)(f):"",h=d.node.functionName||anonymousFunctionLabel,i={functionName:h,filename:b,loc:g},j=(0,_utils.objToAST)(a,i),k=(0,_utils.getStackFrameIdIdentifier)(d);if(!c.shouldTrack(_constants.codeSeeStackframe)){return}var l=a.isProgram(d)?d.get("body"):d.get("body").get("body"),m=l[0],n=l[l.length-1],o=a.variableDeclaration("let",[a.variableDeclarator(k,(0,_utils.codeSeeCall)(a,_constants.codeSeeStackframe,[j]))]),p=a.expressionStatement(a.assignmentExpression("=",k,(0,_utils.codeSeeCall)(a,_constants.codeSeeStackframe,[j]))),q=a.expressionStatement((0,_utils.codeSeeCall)(a,_constants.codeSeeStackframeExit,[k]));if(m){m.insertBefore(o);if(!a.isReturnStatement(n)){n.insertAfter(q)}d.traverse(e,{stackframeEnterStatement:o,stackframeExitStatement:q,stackframeReEnterStatement:p,stackFrameIdIdentifier:k})}else{d.node.body.body=[o,q]}},g=["FunctionDeclaration","FunctionExpression","ArrowFunctionExpression","ClassMethod","ObjectMethod","Program"],h=d.split(/[\.-]/),i=_slicedToArray(h,5),j=i[0],k=i[1],l=i[2],m=i[3],n=i[4];if(7<j||7==j&&2<=k){g.push("ClassPrivateMethod")}var o=_defineProperty({},g.join("|"),function(b){if((0,_utils.nodeIsIgnored)(b.node)){b.skip();return}f(a,b)});return o};exports.traceStackFrameVisitor=traceStackFrameVisitor;var annotateFunctionNameVisitor=function(a,b,c){var f=function(a,b){a.node.functionName=b},g=function(b){var c=b.parentPath.node;if(a.isVariableDeclarator(c)&&a.isIdentifier(c.id)){return c.id.name}else if(a.isAssignmentExpression(c)){if(a.isIdentifier(c.left)){return c.left.name}else if(a.isMemberExpression(c.left)){var e=d(c.left);if(e){return e}}}return null};function d(b){var c=[];while(a.isMemberExpression(b)){if(!a.isIdentifier(b.property)){return!1}c.unshift(b.property.name);b=b.object}if(!a.isIdentifier(b)){return!1}c.unshift(b.name);return c.join(".")}function e(b,c){if(a.isClassBody(b.parentPath)&&a.isClassDeclaration(b.parentPath.parentPath)&&a.isIdentifier(b.parentPath.parentPath.node.id)){return b.parentPath.parentPath.node.id.name+"."+c}return c}var h={FunctionDeclaration:function FunctionDeclaration(b){if((0,_utils.nodeIsIgnored)(b.node)){b.skip();return}var c=anonymousFunctionLabel;if(a.isIdentifier(b.node.id)){c=b.node.id.name}else if(a.isExportDefaultDeclaration(b.parentPath)){c="export default function"}f(b,c)},"FunctionExpression|ArrowFunctionExpression":function FunctionExpressionArrowFunctionExpression(b){if((0,_utils.nodeIsIgnored)(b.node)){b.skip();return}var c=anonymousFunctionLabel,d=b.parentPath,h=g(b);if(h){c=h}else if(a.isObjectProperty(d)&&a.isIdentifier(d.node.key)){c=d.node.key.name;var i=g(d.parentPath);if(i){c=i+"."+c}}else if(a.isClassProperty(d)&&a.isIdentifier(d.node.key)){c=e(d,d.node.key.name)}f(b,c)},ClassMethod:function ClassMethod(b){if((0,_utils.nodeIsIgnored)(b.node)){b.skip();return}var c=anonymousFunctionLabel;if(a.isIdentifier(b.node.id)){c=b.node.id.name}else if(a.isIdentifier(b.node.key)){c=b.node.key.name}c=e(b,c);f(b,c)},ObjectMethod:function ObjectMethod(b){if((0,_utils.nodeIsIgnored)(b.node)){b.skip();return}var c=anonymousFunctionLabel,d=!1;if(a.isIdentifier(b.node.key)){c=b.node.key.name}else if(a.isStringLiteral(b.node.key)){c=b.node.key.value}else if(a.isMemberExpression(b.node.key)&&a.isIdentifier(b.node.key.object)&&a.isIdentifier(b.node.key.property)&&"Symbol"===b.node.key.object.name){c="[Symbol."+b.node.key.property.name+"]";d=!0}var e=g(b.parentPath);if(e){if(d){c=e+c}else{c=e+"."+c}}f(b,c)},Program:function Program(a){f(a,b)}},i=c.split(/[\.-]/),j=_slicedToArray(i,5),k=j[0],l=j[1],m=j[2],n=j[3],o=j[4];if(7<k||7==k&&2<=l){h.ClassPrivateMethod=function(b){if((0,_utils.nodeIsIgnored)(b.node)){b.skip();return}var c=anonymousFunctionLabel;if(a.isPrivateName(b.node.key)&&a.isIdentifier(b.node.key.id)){c=b.node.key.id.name}else if(a.isIdentifier(b.node.key)){c=b.node.key.name}c=e(b,c);f(b,c)}}return h};exports.annotateFunctionNameVisitor=annotateFunctionNameVisitor;
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports.traceStackFrameVisitor=exports.traceLineVisitor=exports.annotateFunctionNameVisitor=void 0;var _utils=require("../utils"),_constants=require("../constants");function _defineProperty(a,b,c){if(b in a){Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0})}else{a[b]=c}return a}function _slicedToArray(a,b){return _arrayWithHoles(a)||_iterableToArrayLimit(a,b)||_unsupportedIterableToArray(a,b)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(a,b){if(!a)return;if("string"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);if("Object"===c&&a.constructor)c=a.constructor.name;if("Map"===c||"Set"===c)return Array.from(a);if("Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c))return _arrayLikeToArray(a,b)}function _arrayLikeToArray(a,b){if(null==b||b>a.length)b=a.length;for(var c=0,d=Array(b);c<b;c++){d[c]=a[c]}return d}function _iterableToArrayLimit(a,b){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(a)))return;var c=[],d=!0,e=!1,f=void 0;try{for(var g=a[Symbol.iterator](),h;!(d=(h=g.next()).done);d=!0){c.push(h.value);if(b&&c.length===b)break}}catch(a){e=!0;f=a}finally{try{if(!d&&null!=g["return"])g["return"]()}finally{if(e)throw f}}return c}function _arrayWithHoles(a){if(Array.isArray(a))return a}var anonymousFunctionLabel="<anonymous function>",traceLineVisitor=function(a,b,c){var d=function(a,c,d){if(d.shouldTrack(_constants.codeSeeLineTrace)&&c.node.loc){b=b||"root";var e=c.node.loc.start,f=c.node.loc.end;if(c.isIfStatement()){f=c.node.test.loc.end}else if(c.isTryStatement()){f=c.node.block.loc.start}else if(c.isSwitchStatement()){f=c.node.discriminant.loc.end}var g=(0,_utils.getLocString)({start:e,end:f}),h=(0,_utils.findStackFrameIdIdentifier)(c),i=(0,_utils.codeSeeCall)(a,_constants.codeSeeLineTrace,[a.stringLiteral(b),(0,_utils.objToAST)(a,{loc:g,uid:h})]);c.insertBefore(a.expressionStatement(i))}},e=function(a){return-1===["ClassDeclaration","BlockStatement","FunctionDeclaration"].indexOf(a)};return{Statement:function Statement(b){if(e(b.node.type)){d(a,b,c)}}}};exports.traceLineVisitor=traceLineVisitor;var traceStackFrameVisitor=function(a,b,c,d){b=b||"root";var e={ReturnStatement:function ReturnStatement(a,b){var c=b.stackframeExitStatement;a.insertBefore(c)},YieldExpression:function YieldExpression(b,c){var d=c.stackframeExitStatement,e=c.stackFrameIdIdentifier,f=a.expressionStatement(a.assignmentExpression("=",e,(0,_utils.codeSeeCall)(a,"backFromYield",[e,a.stringLiteral((0,_utils.getLocString)(b.node.loc))])));if(b.parentPath.isExpressionStatement()){b.parentPath.insertBefore(d);b.parentPath.insertAfter(f)}else if(!0!==b.node.wrappedForStackFrameTracing){b.node.wrappedForStackFrameTracing=!0;var g=(0,_utils.liftAndReplace)(a,b,"yieldValue");g.insertBefore(d);g.insertAfter(f)}},CatchClause:function CatchClause(b,c){var d=c.stackFrameIdIdentifier,e={start:b.node.loc.start,end:b.node.body.loc.start},f=a.expressionStatement((0,_utils.codeSeeCall)(a,_constants.codeSeeStackframeCaught,[d,a.stringLiteral((0,_utils.getLines)(e).loc)]));(0,_utils.insertAsFirstStatementOfBlock)(b.get("body"),f)},Function:function Function(a){a.skip()}},f=function(a,d){var f=d.node.loc;if(d.isClassMethod({kind:"constructor"})){var q=d.find(function(a){return a.isClass()});f=q.node.loc}var g=f!==void 0?(0,_utils.getLocString)(f):"",h=d.node.functionName||anonymousFunctionLabel,i={functionName:h,filename:b,loc:g},j=(0,_utils.objToAST)(a,i),k=(0,_utils.getStackFrameIdIdentifier)(d);if(!c.shouldTrack(_constants.codeSeeStackframe)){return}var l=a.isProgram(d)?d.get("body"):d.get("body").get("body"),m=l[0],n=l[l.length-1],o=a.variableDeclaration("let",[a.variableDeclarator(k,(0,_utils.codeSeeCall)(a,_constants.codeSeeStackframe,[j]))]),p=a.expressionStatement((0,_utils.codeSeeCall)(a,_constants.codeSeeStackframeExit,[k]));if(m){m.insertBefore(o);if(!a.isReturnStatement(n)){n.insertAfter(p)}d.traverse(e,{stackframeEnterStatement:o,stackframeExitStatement:p,stackFrameIdIdentifier:k})}else{d.node.body.body=[o,p]}},g=["FunctionDeclaration","FunctionExpression","ArrowFunctionExpression","ClassMethod","ObjectMethod","Program"],h=d.split(/[\.-]/),i=_slicedToArray(h,5),j=i[0],k=i[1],l=i[2],m=i[3],n=i[4];if(7<j||7==j&&2<=k){g.push("ClassPrivateMethod")}var o=_defineProperty({},g.join("|"),function(b){if((0,_utils.nodeIsIgnored)(b.node)){b.skip();return}f(a,b)});return o};exports.traceStackFrameVisitor=traceStackFrameVisitor;var annotateFunctionNameVisitor=function(a,b,c){var f=function(a,b){a.node.functionName=b},g=function(b){var c=b.parentPath.node;if(a.isVariableDeclarator(c)&&a.isIdentifier(c.id)){return c.id.name}else if(a.isAssignmentExpression(c)){if(a.isIdentifier(c.left)){return c.left.name}else if(a.isMemberExpression(c.left)){var e=d(c.left);if(e){return e}}}return null};function d(b){var c=[];while(a.isMemberExpression(b)){if(!a.isIdentifier(b.property)){return!1}c.unshift(b.property.name);b=b.object}if(!a.isIdentifier(b)){return!1}c.unshift(b.name);return c.join(".")}function e(b,c){if(a.isClassBody(b.parentPath)&&a.isClassDeclaration(b.parentPath.parentPath)&&a.isIdentifier(b.parentPath.parentPath.node.id)){return b.parentPath.parentPath.node.id.name+"."+c}return c}var h={FunctionDeclaration:function FunctionDeclaration(b){if((0,_utils.nodeIsIgnored)(b.node)){b.skip();return}var c=anonymousFunctionLabel;if(a.isIdentifier(b.node.id)){c=b.node.id.name}else if(a.isExportDefaultDeclaration(b.parentPath)){c="export default function"}f(b,c)},"FunctionExpression|ArrowFunctionExpression":function FunctionExpressionArrowFunctionExpression(b){if((0,_utils.nodeIsIgnored)(b.node)){b.skip();return}var c=anonymousFunctionLabel,d=b.parentPath,h=g(b);if(h){c=h}else if(a.isObjectProperty(d)&&a.isIdentifier(d.node.key)){c=d.node.key.name;var i=g(d.parentPath);if(i){c=i+"."+c}}else if(a.isClassProperty(d)&&a.isIdentifier(d.node.key)){c=e(d,d.node.key.name)}f(b,c)},ClassMethod:function ClassMethod(b){if((0,_utils.nodeIsIgnored)(b.node)){b.skip();return}var c=anonymousFunctionLabel;if(a.isIdentifier(b.node.id)){c=b.node.id.name}else if(a.isIdentifier(b.node.key)){c=b.node.key.name}c=e(b,c);f(b,c)},ObjectMethod:function ObjectMethod(b){if((0,_utils.nodeIsIgnored)(b.node)){b.skip();return}var c=anonymousFunctionLabel,d=!1;if(a.isIdentifier(b.node.key)){c=b.node.key.name}else if(a.isStringLiteral(b.node.key)){c=b.node.key.value}else if(a.isMemberExpression(b.node.key)&&a.isIdentifier(b.node.key.object)&&a.isIdentifier(b.node.key.property)&&"Symbol"===b.node.key.object.name){c="[Symbol."+b.node.key.property.name+"]";d=!0}var e=g(b.parentPath);if(e){if(d){c=e+c}else{c=e+"."+c}}f(b,c)},Program:function Program(a){f(a,b)}},i=c.split(/[\.-]/),j=_slicedToArray(i,5),k=j[0],l=j[1],m=j[2],n=j[3],o=j[4];if(7<k||7==k&&2<=l){h.ClassPrivateMethod=function(b){if((0,_utils.nodeIsIgnored)(b.node)){b.skip();return}var c=anonymousFunctionLabel;if(a.isPrivateName(b.node.key)&&a.isIdentifier(b.node.key.id)){c=b.node.key.id.name}else if(a.isIdentifier(b.node.key)){c=b.node.key.name}c=e(b,c);f(b,c)}}return h};exports.annotateFunctionNameVisitor=annotateFunctionNameVisitor;
{
"name": "@codesee/babel-plugin-instrument",
"version": "0.5.0",
"version": "0.6.0",
"description": "Instruments javascript code to report internal execution and state for use with CodeSee Visualizations.",

@@ -29,2 +29,4 @@ "type": "commonjs",

"babel-preset-minify": "^0.5.1",
"babel-preset-react-app": "9.1.2",
"babel-plugin-transform-class-properties": "6.24.1",
"jest": "^24.9.0"

@@ -31,0 +33,0 @@ },

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc