Retrieve the function location from it reference in NodeJS.
npm install func-loc[![Coveralls][coverage-badge]][coverage]
[![Build Status][travis-badge]][travis]
[![Codacy Badge][codacy-badge]][codacy]
!David
!David
!node
!npm
!npm
!GitHub issues
!GitHub top language
!GitHub contributors
[![npm version][npm-badge]][npm]
[![vulnerabilities][vulnerabilities-badge]][vulnerabilities]
[![PRs Welcome][prs-badge]][prs]
[![MIT License][license-badge]][license]
A simple tool that help you to retrieve the function location from its reference.
``bash`
$ npm i func-loc
`javascript
const { locate } = require('func-loc');
const fn = () => {
console.log('Hello there');
};
(async () => {
const result = await locate(fn);
console.log(result);
// Will result: { source: 'file://__BASE_FOLDER__/func-loc/this-file.js', line: 3, column: 12 }
})();
`
1. locate(fn: Function): Will retrieve the location of a given function, and will cache it so that the second call will be faster.
The result of the call will be an object that contains these attributes:
- source: The source file.line
- : The line where the function was defined.column
- : The exact column where the function was declared.
Internally, this function will open an inspector session. So it is always a good idea to call the disconnect method when you are done.
2. disconnect() : will disconnect the inspector session, cleans the cache and delete temporary created objects from the global object.
This library can also locate the original code using source-map:
Lets say that you have a typescript file containing:
`typescriptmodule.ts
// File: `
export function inner() {
const fn3 = () => {};
return fn3;
}
Transpiling this file using typescript compiler will generate a source map file like:
`json`
{
"origin": {
"path": "/BASE_FOLDER/module.js",
"column": 24,
"line": 5,
"source": "file:///BASE_FOLDER/module.js"
},
"line": 3,
"column": 14,
"path": "/BASE_FOLDER/module.ts",
"source": "file:///BASE_FOLDER/module.ts"
}
And a javascript file containing:
`javascriptmodule.ts
"use strict";
exports.__esModule = true;
// File: `
function inner() {
var fn3 = function () { };
return fn3;
}
exports.inner = inner;
//# sourceMappingURL=module.js.map
If you execute the following code
`javascript
const { locate } = require('func-loc');
const { inner } = require('../__tests__/assets/module');
(async () => {
const loc = await locate(inner(), { sourceMap: true });
console.log(loc);
})();
`
It will output the line of the inner function f3 of the file module.ts:
`json``
{
"origin": {
"path": "/BASE_FOLDER/module.js",
"column": 24,
"line": 5,
"source": "file:///BASE_FOLDER/module.js"
},
"line": 3,
"column": 14,
"path": "/BASE_FOLDER/module.ts",
"source": "file:///BASE_FOLDER/module.ts"
}
MIT © Mohamed IDRISSI
[coverage-badge]: https://coveralls.io/repos/github/midrissi/func-loc/badge.svg?branch=master&service=github
[coverage]: https://coveralls.io/github/midrissi/func-loc?branch=master
[travis-badge]: https://travis-ci.org/midrissi/func-loc.svg?branch=master
[travis]: https://travis-ci.org/midrissi/func-loc
[codacy-badge]: https://api.codacy.com/project/badge/Grade/fd744ba304a244629886dfb19c85af40
[codacy]: https://www.codacy.com/app/midrissi/func-loc?utm_source=github.com&utm_medium=referral&utm_content=midrissi/func-loc&utm_campaign=Badge_Grade
[prs-badge]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg
[prs]: http://makeapullrequest.com
[npm-badge]: https://badge.fury.io/js/func-loc.svg
[npm]: https://www.npmjs.com/package/func-loc
[vulnerabilities-badge]: https://snyk.io/test/github/midrissi/func-loc/badge.svg?targetFile=package.json
[vulnerabilities]: https://snyk.io/test/github/midrissi/func-loc?targetFile=package.json
[license-badge]: https://img.shields.io/badge/license-MIT-blue.svg
[license]: https://github.com/midrissi/func-loc/blob/master/LICENSE