Sha256: 167f279479e58ed241fb4702d1d422fd12561477a1f244a4e2ea04ad14f88f2c

Contents?: true

Size: 1.13 KB

Versions: 21

Compression:

Stored size: 1.13 KB

Contents

/* eslint-disable class-methods-use-this */
const { CodeObject } = require('@appland/models');
const Unique = require('./unique');

function packageOf(codeObject) {
  if (!codeObject) {
    return null;
  }

  const ancestors = [codeObject, ...codeObject.ancestors()];
  let packageObject = ancestors.find((a) => a.type === CodeObject.PACKAGE);
  if (!packageObject && ancestors.length >= 1) {
    packageObject = ancestors[ancestors.length - 1];
  }
  return packageObject;
}

class Canonicalize extends Unique {
  functionCall(event) {
    if (event.parent) {
      const myPackage = packageOf(event.codeObject);
      const parentPackage = packageOf(event.parent.codeObject);
      if (myPackage && parentPackage && myPackage.id !== parentPackage.id) {
        return { caller: parentPackage.id, callee: myPackage.id };
      }
    }

    return null;
  }
}

Canonicalize.prototype.sql = Canonicalize.prototype.functionCall;
Canonicalize.prototype.httpServerRequest = Canonicalize.prototype.functionCall;
Canonicalize.prototype.httpClientRequest = Canonicalize.prototype.functionCall;

module.exports = (appmap) => new Canonicalize(appmap).execute();

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
appmap-0.72.2 ./node_modules/@appland/appmap/src/fingerprint/canonicalize/packageDependencies.js
appmap-0.72.1 ./node_modules/@appland/appmap/src/fingerprint/canonicalize/packageDependencies.js
appmap-0.72.0 ./node_modules/@appland/appmap/src/fingerprint/canonicalize/packageDependencies.js
appmap-0.71.0 ./node_modules/@appland/appmap/src/fingerprint/canonicalize/packageDependencies.js
appmap-0.70.2 ./node_modules/@appland/appmap/src/fingerprint/canonicalize/packageDependencies.js
appmap-0.70.1 ./node_modules/@appland/appmap/src/fingerprint/canonicalize/packageDependencies.js
appmap-0.70.0 ./node_modules/@appland/appmap/src/fingerprint/canonicalize/packageDependencies.js
appmap-0.69.0 ./node_modules/@appland/appmap/src/fingerprint/canonicalize/packageDependencies.js
appmap-0.68.2 ./node_modules/@appland/appmap/src/fingerprint/canonicalize/packageDependencies.js
appmap-0.68.1 ./node_modules/@appland/appmap/src/fingerprint/canonicalize/packageDependencies.js
appmap-0.68.0 ./node_modules/@appland/appmap/src/fingerprint/canonicalize/packageDependencies.js
appmap-0.67.1 ./node_modules/@appland/appmap/src/fingerprint/canonicalize/packageDependencies.js
appmap-0.67.0 ./node_modules/@appland/appmap/src/fingerprint/canonicalize/packageDependencies.js
appmap-0.66.2 ./node_modules/@appland/appmap/src/fingerprint/canonicalize/packageDependencies.js
appmap-0.66.1 ./node_modules/@appland/appmap/src/fingerprint/canonicalize/packageDependencies.js
appmap-0.66.0 ./node_modules/@appland/appmap/src/fingerprint/canonicalize/packageDependencies.js
appmap-0.65.1 ./node_modules/@appland/appmap/src/fingerprint/canonicalize/packageDependencies.js
appmap-0.65.0 ./node_modules/@appland/appmap/src/fingerprint/canonicalize/packageDependencies.js
appmap-0.64.0 ./node_modules/@appland/appmap/src/fingerprint/canonicalize/packageDependencies.js
appmap-0.63.0 ./node_modules/@appland/appmap/src/fingerprint/canonicalize/packageDependencies.js