this fixes an issue where the options where not properly passed to
eslint, which rendered them useless. uses the `opts()` function to
access them. see [1] for more on info on option parsing with
commander.
[1]: https://www.npmjs.com/package/commander#user-content-options
Signed-off-by: Stefan Sterz <s.sterz@proxmox.com>
set -u aborts if we access any undefined variable, which $1 can be if
no argument got passed..
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
we have to remove the (unnecessary) polyfill plugin, because some
transitive dependency (nodelib/fs.scandir) tries to access node specific
information that is stripped with these (browser targeting) polyfills
it's not necessary as we're targeting node anyway
also update the patch message to reflect the actual changes
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
when changing to ESLint from CLIEgnine, i forgot to change
the outputFixes call. It's now async and takes a list of results.
fixes 7a730cb601
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
8.0 officialy removed CLIEngine (though it's still in git) so use
the current and supported API.
Necessary changes:
* use 'ESLint' instead of 'CLIEngine'
* use 'lintFiles' instead of 'executeOnFiles' (thats async now)
* adapt to the change of return value of 'lintFiles'
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
as we want to avoid requiring npm et al for every build, this is also
effectively vendoring all in, so easier to avoid supply-chain attacks
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
instead linting all files in the main thread, use worker threads
for that (4 by default) and add the '-t' switch to able to control that
a basic benchmark of eslint of pve-manager showed some performance
gains:
Benchmark #1: Current
Time (mean ± σ): 6.468 s ± 0.116 s [User: 9.803 s, System: 0.333 s]
Range (min … max): 6.264 s … 6.647 s 10 runs
Benchmark #2: 2Threads
Time (mean ± σ): 4.509 s ± 0.106 s [User: 12.706 s, System: 0.530 s]
Range (min … max): 4.335 s … 4.674 s 10 runs
Benchmark #3: 4Threads
Time (mean ± σ): 3.471 s ± 0.033 s [User: 16.390 s, System: 0.630 s]
Range (min … max): 3.431 s … 3.542 s 10 runs
Benchmark #4: 8Threads
Time (mean ± σ): 2.880 s ± 0.044 s [User: 22.454 s, System: 0.938 s]
Range (min … max): 2.813 s … 2.964 s 10 runs
Summary
'8Threads' ran
1.21 ± 0.02 times faster than '4Threads'
1.57 ± 0.04 times faster than '2Threads'
2.25 ± 0.05 times faster than 'Current'
after 8 threads, there were no real performance benefits since the
overhead to load the module seems to be the biggest factor.
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
instead of concatenating the eslint module into our app.js, ship
a 'pve-eslint' module that exports the built eslint module
to do this, we have to leave the module type on 'umd' instead of
changing to 'var' so that nodejs can properly import it.
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>