Coder Social home page Coder Social logo

Comments (10)

retorquere avatar retorquere commented on July 30, 2024 1

This can be solved easily with help of putout code transformer, here is how it can look like:

Isn't there a return a missing in that codemod result? (a) => a means "return the input"

from njstrace.

retorquere avatar retorquere commented on July 30, 2024 1

No, I mean, was it published in such a way that I can npm install it as-is as a putout plugin?

from njstrace.

ValYouW avatar ValYouW commented on July 30, 2024

Yeah, that's tricky as there is no body function where I can inject the tracing code in...

from njstrace.

coderaiser avatar coderaiser commented on July 30, 2024

This can be solved easily with help of putout code transformer, here is how it can look like:
image

Also as I understand ESM not supported because it requires using loaders, right?

from njstrace.

ValYouW avatar ValYouW commented on July 30, 2024

Hi,
Thx.
Never looked on ESM to be honest...

from njstrace.

coderaiser avatar coderaiser commented on July 30, 2024

Hi,
Thx.
Never looked on ESM to be honest...

Just landed putout-based function tracer ESTrace for ESM.

from njstrace.

coderaiser avatar coderaiser commented on July 30, 2024

Isn't there a return a missing in that codemod result? (a) => a means "return the input"

Yes, you right, thank you! Fixed with coderaiser/estrace@386c44c, landed in v1.1.0 🎉 .

@ValYouW you are done a really great job with njsTrace!

Instrumentation just adds calls to njstrace tracing methods at the beginning of each function, at the end of each function, and before any return statement.

I just tried a couple different ways:

  • Wrap all functions with a __estrace call:
hello(__esTrace('name', 'url', function(word) {
    return `hello ${word}`;
}));

But it has problems when we have function with ExportNamedDeclaration with FunctionDeclaration:

export function hello() {
}

will be converted to:

// invalid
export __esTrace('name', 'url', function() {
});

Which has invalid syntax.

  • bind __estrace with context and args:
function hello() {
    return esTrace.bind(this, 'hello', 'file://1.js', function hello() {
    });
};

Has problems with:

const a = (b) => (c) => d;

Because of recursion while building (and possible executing) instrumented code.

So your way is the best, thank you!

from njstrace.

retorquere avatar retorquere commented on July 30, 2024

Can I reuse this plugin in my own build (esbuild.js)? I have a private copy currently and that will grow stale.

from njstrace.

coderaiser avatar coderaiser commented on July 30, 2024

Can I reuse this plugin in my own build (esbuild.js)? I have a private copy currently and that will grow stale.

Of course, why not :)

from njstrace.

coderaiser avatar coderaiser commented on July 30, 2024

No, I mean, was it published in such a way that I can npm install it as-is as a putout plugin?

Yes you can, it will look like:

import putout from 'putout';
import estracePlugin from 'estrace/plugin';

const source = `
    const fn = (a) => a;
`;

const {code} = putout(source, {
    plugins: [
        ['estrace', estracePlugin],
    ],
});

console.log(code);

from njstrace.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.