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.7.0 to 0.9.0

2

lib/constants.js

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

"use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports.sacredMemberExpressions=exports.sacredCallExpressions=exports.codeSeeLoopVars=exports.codeSeeInlineTracking=exports.reservedIdentifiers=exports.codeSeeLineTrace=exports.codeSeeStackframeCaught=exports.codeSeeStackframeExit=exports.codeSeeStackframe=exports.codeSeeSource=exports.codeSeeCatchParam=exports.codeSeeFuncParams=exports.codeSeeAfter=exports.codeSeeBefore=void 0;var _require=require("@babel/plugin-syntax-jsx"),__esModule=_require.__esModule,codeSeeBefore="before";exports.codeSeeBefore=codeSeeBefore;var codeSeeAfter="after";exports.codeSeeAfter="after";var codeSeeSource="__$codesee_source";exports.codeSeeSource="__$codesee_source";var codeSeeStackframe="stackFrameEnter";exports.codeSeeStackframe="stackFrameEnter";var codeSeeStackframeExit="stackFrameExit";exports.codeSeeStackframeExit="stackFrameExit";var codeSeeStackframeCaught="caughtInStackFrame";exports.codeSeeStackframeCaught="caughtInStackFrame";var codeSeeLineTrace="traceLine";exports.codeSeeLineTrace="traceLine";var codeSeeFuncParams="funcInputs";exports.codeSeeFuncParams="funcInputs";var codeSeeCatchParam="catchInput";exports.codeSeeCatchParam="catchInput";var codeSeeInlineTracking="inlineTracking";exports.codeSeeInlineTracking="inlineTracking";var codeSeeLoopVars="loopVars";exports.codeSeeLoopVars="loopVars";var reservedIdentifiers=["React","Math","Object","Array","__$codesee_source"];exports.reservedIdentifiers=reservedIdentifiers;var sacredCallExpressions=["import","require","require.context","require.resolve","require.ensure","define","require.resolveWeak"];exports.sacredCallExpressions=sacredCallExpressions;var sacredMemberExpressions=["require.cache","process.env.*","process.*"];exports.sacredMemberExpressions=sacredMemberExpressions;
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports.sacredMemberExpressions=exports.sacredCallExpressions=exports.codeSeeLoopVars=exports.codeSeeInlineTracking=exports.reservedIdentifiers=exports.codeSeeLineTrace=exports.codeSeeStackframeCaught=exports.codeSeeStackframeExit=exports.codeSeeStackframe=exports.codeSeeSource=exports.codeSeeCatchParam=exports.codeSeeFuncParams=exports.codeSeeAfter=exports.codeSeeBefore=void 0;var _require=require("@babel/plugin-syntax-jsx"),__esModule=_require.__esModule,codeSeeBefore="before";exports.codeSeeBefore=codeSeeBefore;var codeSeeAfter="after";exports.codeSeeAfter="after";var codeSeeSource="__$codesee_source";exports.codeSeeSource="__$codesee_source";var codeSeeStackframe="stackFrameEnter";exports.codeSeeStackframe="stackFrameEnter";var codeSeeStackframeExit="stackFrameExit";exports.codeSeeStackframeExit="stackFrameExit";var codeSeeStackframeCaught="caughtInStackFrame";exports.codeSeeStackframeCaught="caughtInStackFrame";var codeSeeLineTrace="traceLine";exports.codeSeeLineTrace="traceLine";var codeSeeFuncParams="funcInputs";exports.codeSeeFuncParams="funcInputs";var codeSeeCatchParam="catchInput";exports.codeSeeCatchParam="catchInput";var codeSeeInlineTracking="inlineTracking";exports.codeSeeInlineTracking="inlineTracking";var codeSeeLoopVars="loopVars";exports.codeSeeLoopVars="loopVars";var reservedIdentifiers=["React","Math","Object","Array","__$codesee_source"];exports.reservedIdentifiers=reservedIdentifiers;var sacredCallExpressions=["import","require","require.context","require.resolve","require.ensure","define","require.resolveWeak","hbs","templateOnly"];exports.sacredCallExpressions=sacredCallExpressions;var sacredMemberExpressions=["require.cache","process.env.*","process.*"];exports.sacredMemberExpressions=sacredMemberExpressions;

@@ -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")),_checkSourceType=_interopRequireDefault(require("./visitors/check-source-type")),_finalCleanup=_interopRequireDefault(require("./visitors/final-cleanup")),_catchErrors=_interopRequireDefault(require("./visitors/catch-errors")),_dynamicSacreds=_interopRequireDefault(require("./visitors/dynamic-sacreds"));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){d.traverse((0,_dataTracking.enumVisitor)(_core.types,rootFileName,c));var o=typescriptPlugin(a).visitor;d.traverse(o)}d.traverse(_dynamicSacreds["default"]);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}
"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")),_dynamicSacreds=_interopRequireDefault(require("./visitors/dynamic-sacreds"));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=[]);b.frameworks||(b.frameworks=[]);var c=b.frameworks.includes("ember"),d;return{name:"@codesee/babel-plugin-instrument",visitor:{Program:{enter:function enter(e,f){var g=e.hub.file.opts.filename||"";if(g.match(/node_modules/)){console.warn("CodeSee is skipping this file, even though Babel is configured to transform it:\n"+g);f.skip=!0;return}if(-1===b.includeLibs.indexOf("gatsby")&&g.match(/\/\.cache\//)){f.skip=!0;return}var h=getAllCommentsFromNode(e.node);if(h.some(function(a){return a.value.includes("@Codesee-ignore-file")})){f.skip=!0;return}rootFileName=getTrimmedFilename(f);rootSource=e.hub.file.code.split("\n");d=new _trackingConfig["default"];if(f.opts.onlyTrack)d.set(f.opts.onlyTrack.split(","));if(d.shouldTrack(_constants.codeSeeSource)){var i=[_core.types.objectExpression([_core.types.objectProperty(_core.types.stringLiteral(rootFileName),_core.types.arrayExpression(rootSource.map(function(a){return _core.types.stringLiteral(a)})))])],j=(0,_utils.codeSeeCall)(_core.types,"source",i);e.unshiftContainer("body",_core.types.expressionStatement(j))}var k=a.version.split(/[-\.]/),l=_slicedToArray(k,2),m=l[0],n=l[1];if(7<m||7==m&&2<=n){e.traverse((0,_dataTracking.enumVisitor)(_core.types,rootFileName,d));var p=typescriptPlugin(a).visitor;e.traverse(p)}e.traverse(_dynamicSacreds["default"]);e.traverse((0,_ensureBlockStatements["default"])(_core.types));e.traverse((0,_ensureClassConstructors["default"])(_core.types));e.traverse((0,_ensureSimpleComputedMemberExpressions["default"])(_core.types));(0,_traverse["default"])(e.hub.file.ast,(0,_tracing.annotateFunctionNameVisitor)(_core.types,rootFileName,a.version),e.hub.file.scope);e.traverse((0,_tracing.traceLineVisitor)(_core.types,rootFileName,d),f);e.traverse((0,_dataTracking.trackerVisitor)(_core.types,rootFileName,d,a.version),f);e.traverse((0,_inlineDataTracking["default"])(_core.types,d),f);e.traverse((0,_functionInputTracking["default"])(_core.types,rootFileName,d,a.version));(0,_traverse["default"])(e.hub.file.ast,(0,_tracing.traceStackFrameVisitor)(_core.types,rootFileName,d,a.version),e.hub.file.scope);var o={setsModuleExports:!1,usesES6ImportExport:!1};e.traverse(_checkSourceType["default"],o);if(!c&&d.shouldTrack("codeSeeImports")){var q=TRACKER_MODULE_NAME+(b.hosted?"/hosted":"");if(o.setsModuleExports&&!o.usesES6ImportExport){f.file.path.node.sourceType="script";var r=_core.types.expressionStatement(_core.types.callExpression(_core.types.identifier("require"),[_core.types.stringLiteral(q)]));e.unshiftContainer("body",r)}else{(0,_helperModuleImports.addSideEffect)(e,q,{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.trackerVisitor=trackerVisitor;exports.enumVisitor=enumVisitor;var _objectPath=require("object-path"),_arrayPrototype=_interopRequireDefault(require("array.prototype.flatmap")),_insert=require("./data-tracking/insert"),_utils=require("../utils"),_constants=require("../constants"),_memberExpressions=_interopRequireDefault(require("./member-expressions"));function _interopRequireDefault(a){return a&&a.__esModule?a:{default:a}}function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);if(b)d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable});c.push.apply(c,d)}return c}function _objectSpread(a){for(var b=1,c;b<arguments.length;b++){c=null!=arguments[b]?arguments[b]:{};if(b%2){ownKeys(Object(c),!0).forEach(function(b){_defineProperty(a,b,c[b])})}else if(Object.getOwnPropertyDescriptors){Object.defineProperties(a,Object.getOwnPropertyDescriptors(c))}else{ownKeys(Object(c)).forEach(function(b){Object.defineProperty(a,b,Object.getOwnPropertyDescriptor(c,b))})}}return a}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 _createForOfIteratorHelper(a,b){var c;if("undefined"==typeof Symbol||null==a[Symbol.iterator]){if(Array.isArray(a)||(c=_unsupportedIterableToArray(a))||b&&a&&"number"==typeof a.length){if(c)a=c;var d=0,e=function(){};return{s:e,n:function n(){if(d>=a.length)return{done:!0};return{done:!1,value:a[d++]}},e:function e(a){throw a},f:e}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var f=!0,g=!1,h;return{s:function s(){c=a[Symbol.iterator]()},n:function n(){var a=c.next();f=a.done;return a},e:function e(a){g=!0;h=a},f:function f(){try{if(!f&&null!=c["return"])c["return"]()}finally{if(g)throw h}}}}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}_arrayPrototype["default"].shim();function trackerVisitor(a,b,c){var d=function(a){return-1===["ClassDeclaration","BlockStatement","IfStatement","ImportDeclaration"].indexOf(a)},e=(0,_memberExpressions["default"])(a),f=_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({},{Statement:function Statement(e){if(a.isVariableDeclaration(e)||a.isFunctionDeclaration(e)||a.isForInStatement(e)||a.isForOfStatement(e)||a.isForStatement(e)||a.isWhileStatement(e)||a.isDoWhileStatement(e)){return}var g=c.shouldTrack("filename")?{filename:b}:{},h=(0,_utils.getDefaultState)(g);e.traverse(f,h);e.skip();if(d(e.node.type)){(0,_insert.insertTracking)(a,e,h,b,c)}}}),{VariableDeclaration:function VariableDeclaration(d){if(d.node.declarations[0].id.codeseeId)return d.skip();if(d.node.declarations[0].id.name&&-1!==d.node.declarations[0].id.name.indexOf(_constants.codeSeeSource)){d.skip();return}var e=(0,_utils.getDefaultState)(),g=(0,_insert.trackersFromVariableDeclaration)(d);g.forEach(function(a){e.declares.push(a)});d.get("declarations").forEach(function(a){a.skipKey("id");(0,_utils.traverseWithSkipKeys)(a,f,e)});(0,_insert.insertTracking)(a,d,e,b,c);d.skip()}}),{FunctionDeclaration:{enter:function enter(a){a.skipKey("params");var b=(0,_utils.getDefaultState)();(0,_utils.traverseWithSkipKeys)(a,f,b);a.skip()}}}),{CallExpression:{enter:function enter(b){var c=b.node.callee;if(a.isIdentifier(c)){b.skipKey("callee")}}}}),{AssignmentExpression:{enter:function enter(b,c){var d=b.node.left;if(a.isPattern(d)||a.isIdentifier(d)){var f=(0,_insert.trackersFromPatternOrIdentifier)(a,b,d,e),g=_createForOfIteratorHelper(f),h;try{for(g.s();!(h=g.n()).done;){var i=h.value;c.writes.push(i)}}catch(a){g.e(a)}finally{g.f()}}else if(a.isMemberExpression(d)){b.skipKey("right");var j=(0,_utils.getDefaultState)();(0,_utils.traverseWithSkipKeys)(b,e,j);b.skipKeys=[];c.writes=[].concat(c.writes,j.accesses)}else{throw["CodeSee Error: AssignmentExpression: LHS is not Identifier, Pattern, or MemberExpression: "+b.node.type]}b.skipKey("left")}}}),{"ForInStatement|ForOfStatement":function ForInStatementForOfStatement(d){d.skipKey("left");var e=d.get("left"),f;if(e.isVariableDeclaration()){f=(0,_insert.trackersFromVariableDeclaration)(e)}else{f=(0,_insert.trackersFromLHSPattern)(e.node)}(0,_insert.insertLoopVariableTracking)(a,d,f,b,c)},ForStatement:function ForStatement(b){b.skipKey("init");if(b.node.init){var c=b.get("init"),d;if(c.isVariableDeclaration()){d=c.node}else{d=a.expressionStatement(c.node)}b.insertBefore(d)[0];b.get("init").remove()}}}),{CatchClause:function CatchClause(d){var f=[];if(d.node.param){f=(0,_insert.trackersFromPatternOrIdentifier)(a,d,d.node.param,e)}(0,_insert.insertCatchParamTracking)(a,d,f,b,c)}});return f}function enumVisitor(a,b,c){return{TSEnumDeclaration:function TSEnumDeclaration(d){var e=d.node.id,f=(0,_insert.trackersFromLHSPattern)(e);e.tracked=!0;e.loc=void 0;if(1!=f.length){return}var g=(0,_utils.getDefaultState)();f.forEach(function(a){g.declares.push(a)});(0,_insert.insertTracking)(a,d,g,b,c)}}}
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports.trackerVisitor=trackerVisitor;exports.enumVisitor=enumVisitor;var _objectPath=require("object-path"),_arrayPrototype=_interopRequireDefault(require("array.prototype.flatmap")),_insert=require("./data-tracking/insert"),_utils=require("../utils"),_constants=require("../constants"),_memberExpressions=_interopRequireDefault(require("./member-expressions"));function _interopRequireDefault(a){return a&&a.__esModule?a:{default:a}}function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);if(b)d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable});c.push.apply(c,d)}return c}function _objectSpread(a){for(var b=1,c;b<arguments.length;b++){c=null!=arguments[b]?arguments[b]:{};if(b%2){ownKeys(Object(c),!0).forEach(function(b){_defineProperty(a,b,c[b])})}else if(Object.getOwnPropertyDescriptors){Object.defineProperties(a,Object.getOwnPropertyDescriptors(c))}else{ownKeys(Object(c)).forEach(function(b){Object.defineProperty(a,b,Object.getOwnPropertyDescriptor(c,b))})}}return a}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 _createForOfIteratorHelper(a,b){var c;if("undefined"==typeof Symbol||null==a[Symbol.iterator]){if(Array.isArray(a)||(c=_unsupportedIterableToArray(a))||b&&a&&"number"==typeof a.length){if(c)a=c;var d=0,e=function(){};return{s:e,n:function n(){if(d>=a.length)return{done:!0};return{done:!1,value:a[d++]}},e:function e(a){throw a},f:e}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var f=!0,g=!1,h;return{s:function s(){c=a[Symbol.iterator]()},n:function n(){var a=c.next();f=a.done;return a},e:function e(a){g=!0;h=a},f:function f(){try{if(!f&&null!=c["return"])c["return"]()}finally{if(g)throw h}}}}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}_arrayPrototype["default"].shim();function trackerVisitor(a,b,c){var d=function(a){return-1===["ClassDeclaration","BlockStatement","IfStatement","ImportDeclaration"].indexOf(a)},e=(0,_memberExpressions["default"])(a),f=_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({},{Statement:function Statement(e){if(a.isVariableDeclaration(e)||a.isFunctionDeclaration(e)||a.isForInStatement(e)||a.isForOfStatement(e)||a.isForStatement(e)||a.isWhileStatement(e)||a.isDoWhileStatement(e)){return}var g=c.shouldTrack("filename")?{filename:b}:{},h=(0,_utils.getDefaultState)(g);e.traverse(f,h);e.skip();if(d(e.node.type)){(0,_insert.insertTracking)(a,e,h,b,c)}}}),{VariableDeclaration:function VariableDeclaration(d){if(d.node.declarations[0].id.codeseeId)return d.skip();if(d.node.declarations[0].id.name&&-1!==d.node.declarations[0].id.name.indexOf(_constants.codeSeeSource)){d.skip();return}var e=(0,_utils.getDefaultState)(),g=(0,_insert.trackersFromVariableDeclaration)(d);g.forEach(function(a){e.declares.push(a)});d.get("declarations").forEach(function(a){a.skipKey("id");(0,_utils.traverseWithSkipKeys)(a,f,e)});(0,_insert.insertTracking)(a,d,e,b,c);d.skip()}}),{FunctionDeclaration:{enter:function enter(a){a.skipKey("params");var b=(0,_utils.getDefaultState)();(0,_utils.traverseWithSkipKeys)(a,f,b);a.skip()}}}),{CallExpression:{enter:function enter(b){var c=b.node.callee;if(a.isIdentifier(c)){b.skipKey("callee")}}}}),{AssignmentExpression:{enter:function enter(b,c){if((null===c||void 0===c?void 0:c.writes)===void 0){return}var d=b.node.left;if(a.isPattern(d)||a.isIdentifier(d)){var f=(0,_insert.trackersFromPatternOrIdentifier)(a,b,d,e),g=_createForOfIteratorHelper(f),h;try{for(g.s();!(h=g.n()).done;){var i=h.value;c.writes.push(i)}}catch(a){g.e(a)}finally{g.f()}}else if(a.isMemberExpression(d)){b.skipKey("right");var j=(0,_utils.getDefaultState)();(0,_utils.traverseWithSkipKeys)(b,e,j);b.skipKeys=[];c.writes=[].concat(c.writes,j.accesses)}else{throw["CodeSee Error: AssignmentExpression: LHS is not Identifier, Pattern, or MemberExpression: "+b.node.type]}b.skipKey("left")}}}),{"ForInStatement|ForOfStatement":function ForInStatementForOfStatement(d){d.skipKey("left");var e=d.get("left"),f;if(e.isVariableDeclaration()){f=(0,_insert.trackersFromVariableDeclaration)(e)}else{f=(0,_insert.trackersFromLHSPattern)(e.node)}(0,_insert.insertLoopVariableTracking)(a,d,f,b,c)},ForStatement:function ForStatement(a){a.skipKey("init")}}),{CatchClause:function CatchClause(d){var f=[];if(d.node.param){f=(0,_insert.trackersFromPatternOrIdentifier)(a,d,d.node.param,e)}(0,_insert.insertCatchParamTracking)(a,d,f,b,c)}});return f}function enumVisitor(a,b,c){return{TSEnumDeclaration:function TSEnumDeclaration(d){var e=d.node.id,f=(0,_insert.trackersFromLHSPattern)(e);e.tracked=!0;e.loc=void 0;if(1!=f.length){return}var g=(0,_utils.getDefaultState)();f.forEach(function(a){g.declares.push(a)});(0,_insert.insertTracking)(a,d,g,b,c)}}}

@@ -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 _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}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){return}var h=(0,_utils.findStackFrameIdIdentifier)(b);if(h===void 0){return}var 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){if(b.statements[0]){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){if(b.statements[0]){b.statements[0].possibleMutations+=1}c="funcArg"}d(a,c)},f=function(b){var c=a.callExpression(a.memberExpression(b,a.identifier("bind")),[a.thisExpression()]);return[c]},g=function(b,c){var d=[],e=c.get("callee"),f=e.get("property"),g;if(!e.node.computed&&f.isIdentifier()){g=a.stringLiteral(f.node.name)}else{g=f.node}var h=e.get("object");d.push(h.node);d.push(g);return d},h=function(b,c){var d=[],e=c.get("callee"),f=e.get("property"),g=e.get("object"),h=f.get("id").node,i=a.stringLiteral("#"+h.name),j=a.memberExpression(g,f.node);d.push(g.node);d.push(i);d.push(j);return d},i=function(c,d){if(!c.node.loc){return}var e=(0,_utils.findStackFrameIdIdentifier)(c);if(e===void 0){return}var i=c.node.callee,j=[];if(a.isMemberExpression(i)&&a.isThisExpression(i.object)&&a.isPrivateName(i.property)){d="callPrivateProp";j.push.apply(j,_toConsumableArray(h(i,c)))}else if(a.isMemberExpression(i)&&c.isCallExpression()&&!a.isSuper(i.object)){d="callProp";j.push.apply(j,_toConsumableArray(g(i,c)))}else if(a.isMemberExpression(i)&&c.isCallExpression()&&a.isSuper(i.object)){j.push.apply(j,_toConsumableArray(f(i)))}else{j.push(i)}j.push(a.arrayExpression(c.node.arguments));j.push(e);j.push(a.stringLiteral((0,_utils.getLocString)(c.node.loc)));var l=(0,_utils.codeSeeCall)(a,d,j);l.loc=c.node.loc;c.node.tracked=!0;i.tracked=!0;if(b.shouldTrack(_constants.codeSeeInlineTracking)){var m=c.skipKeys;c.skipKey("callee");(0,_utils.traverseWithSkipKeys)(c,k,{});c.skipKeys=m;c.replaceWith(l)}},j=function(c,d){var e=(0,_utils.findStackFrameIdIdentifier)(c);if(e===void 0){return}var 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]}}},k={Statement:{enter:function enter(a,b){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()}},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=b.node.isSacred||_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()){i(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);if(e===void 0){return}var 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)}},OptionalMemberExpression:{enter:function enter(a){a.skipKey("object");a.skipKey("property")},exit:function exit(a){d(a,"read")}},OptionalCallExpression:{enter:function enter(a){a.skipKey("callee")},exit:function exit(a){d(a,"read")}},MemberExpression:{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){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){i(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),g=(0,_utils.findStackFrameIdIdentifier)(c);if(void 0===g){return}d(c.get("right"),"loopIterable",{force:!0,additionalParams:[e,f]});var h=c.node.right.loc;j(c,h);var i=(0,_utils.codeSeeCall)(a,"loopEnd",[g,e]);if(b.shouldTrack(_constants.codeSeeInlineTracking)){c.insertAfter(a.expressionStatement(i))}}},"ForStatement|WhileStatement|DoWhileStatement":{exit:function exit(c){var e,f,g,h,i,k,l,m;if(c.node.test){d(c.get("test"),"loopTest",{force:!0})}var n=(0,_utils.findStackFrameIdIdentifier)(c);if(void 0===n){return}var o=[n,a.stringLiteral((0,_utils.getLocString)(c.node.loc)),a.stringLiteral(c.node.type)],p=(0,_utils.codeSeeCall)(a,"loopStart",o),q=(0,_utils.codeSeeCall)(a,"loopEnd",[o[0],o[1]]);if(b.shouldTrack(_constants.codeSeeInlineTracking)){c.insertBefore(a.expressionStatement(p));c.insertAfter(a.expressionStatement(q))}var r={start:(null===(e=c.node.test)||void 0===e?void 0:null===(f=e.loc)||void 0===f?void 0:f.start)||(null===(g=c.node.update)||void 0===g?void 0:null===(h=g.loc)||void 0===h?void 0:h.start)||c.node.loc.start,end:(null===(i=c.node.update)||void 0===i?void 0:null===(k=i.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};j(c,r)}},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);if(d===void 0){return}var e=[d,a.stringLiteral((0,_utils.getLocString)(c.node.loc))],f=(0,_utils.codeSeeCall)(a,"loopBodyEnd",e);if(b.shouldTrack(_constants.codeSeeInlineTracking)){c.insertBefore(a.expressionStatement(f))}}},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 k}
"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 _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}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){return}var h=(0,_utils.findStackFrameIdIdentifier)(b);if(h===void 0){return}var 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){if(b.statements[0]){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){if(b.statements[0]){b.statements[0].possibleMutations+=1}c="funcArg"}d(a,c)},f=function(b){var c=a.callExpression(a.memberExpression(b,a.identifier("bind")),[a.thisExpression()]);return[c]},g=function(b,c){var d=[],e=c.get("callee"),f=e.get("property"),g;if(!e.node.computed&&f.isIdentifier()){g=a.stringLiteral(f.node.name)}else{g=f.node}var h=e.get("object");d.push(h.node);d.push(g);return d},h=function(b,c){var d=[],e=c.get("callee"),f=e.get("property"),g=e.get("object"),h=f.get("id").node,i=a.stringLiteral("#"+h.name),j=a.memberExpression(g,f.node);d.push(g.node);d.push(i);d.push(j);return d},i=function(c,d){if(!c.node.loc){return}var e=(0,_utils.findStackFrameIdIdentifier)(c);if(e===void 0){return}var i=c.node.callee,j=[];if(a.isMemberExpression(i)&&a.isThisExpression(i.object)&&a.isPrivateName(i.property)){d="callPrivateProp";j.push.apply(j,_toConsumableArray(h(i,c)))}else if(a.isMemberExpression(i)&&c.isCallExpression()&&!a.isSuper(i.object)){d="callProp";j.push.apply(j,_toConsumableArray(g(i,c)))}else if(a.isMemberExpression(i)&&c.isCallExpression()&&a.isSuper(i.object)){j.push.apply(j,_toConsumableArray(f(i)))}else{j.push(i)}j.push(a.arrayExpression(c.node.arguments));j.push(e);j.push(a.stringLiteral((0,_utils.getLocString)(c.node.loc)));var l=(0,_utils.codeSeeCall)(a,d,j);l.loc=c.node.loc;c.node.tracked=!0;i.tracked=!0;if(b.shouldTrack(_constants.codeSeeInlineTracking)){var m=c.skipKeys;c.skipKey("callee");(0,_utils.traverseWithSkipKeys)(c,k,{});c.skipKeys=m;c.replaceWith(l)}},j=function(c,d){var e=(0,_utils.findStackFrameIdIdentifier)(c);if(e===void 0){return}var 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]}}},k={Statement:{enter:function enter(a,b){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()}},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=b.node.isSacred||_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()){i(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);if(e===void 0){return}var 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)}},OptionalMemberExpression:{enter:function enter(a){a.skipKey("object");a.skipKey("property")},exit:function exit(a){d(a,"read")}},OptionalCallExpression:{enter:function enter(a){a.skipKey("callee")},exit:function exit(a){d(a,"read")}},MemberExpression:{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")},Decorator:function Decorator(a){a.skip()},Function:function Function(a){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){i(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),g=(0,_utils.findStackFrameIdIdentifier)(c);if(void 0===g){return}d(c.get("right"),"loopIterable",{force:!0,additionalParams:[e,f]});var h=c.node.right.loc;j(c,h);var i=(0,_utils.codeSeeCall)(a,"loopEnd",[g,e]);if(b.shouldTrack(_constants.codeSeeInlineTracking)){c.insertAfter(a.expressionStatement(i))}}},"ForStatement|WhileStatement|DoWhileStatement":{exit:function exit(c){var e,f,g,h,i,k,l,m;if(c.node.test){d(c.get("test"),"loopTest",{force:!0})}var n=(0,_utils.findStackFrameIdIdentifier)(c);if(void 0===n){return}var o=[n,a.stringLiteral((0,_utils.getLocString)(c.node.loc)),a.stringLiteral(c.node.type)],p=(0,_utils.codeSeeCall)(a,"loopStart",o),q=(0,_utils.codeSeeCall)(a,"loopEnd",[o[0],o[1]]);if(b.shouldTrack(_constants.codeSeeInlineTracking)){c.insertBefore(a.expressionStatement(p));c.insertAfter(a.expressionStatement(q))}var r={start:(null===(e=c.node.test)||void 0===e?void 0:null===(f=e.loc)||void 0===f?void 0:f.start)||(null===(g=c.node.update)||void 0===g?void 0:null===(h=g.loc)||void 0===h?void 0:h.start)||c.node.loc.start,end:(null===(i=c.node.update)||void 0===i?void 0:null===(k=i.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};j(c,r)}},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);if(d===void 0){return}var e=[d,a.stringLiteral((0,_utils.getLocString)(c.node.loc))],f=(0,_utils.codeSeeCall)(a,"loopBodyEnd",e);if(b.shouldTrack(_constants.codeSeeInlineTracking)){c.insertBefore(a.expressionStatement(f))}}},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 k}
{
"name": "@codesee/babel-plugin-instrument",
"version": "0.7.0",
"version": "0.9.0",
"description": "Instruments javascript code to report internal execution and state for use with CodeSee Visualizations.",

@@ -5,0 +5,0 @@ "type": "commonjs",

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