sinon icon indicating copy to clipboard operation
sinon copied to clipboard

chore: replace unimported with knip and update workflow

Open abidta opened this issue 11 months ago • 2 comments

  • Added knip as the recommended replacement.

  • Integrated knip into the workflow file for automated checks.

Closes #2637

Purpose (TL;DR) - mandatory

How to verify - mandatory

  1. Check out this branch
  2. npm install

Checklist for author

  • [x] npm run lint passes
  • [ ] References to standard library functions are cached.

abidta avatar Mar 20 '25 11:03 abidta

New, updated, and removed dependencies detected. Learn more about Socket for GitHub ↗︎

Package New capabilities Transitives Size Publisher
npm/@types/[email protected]22.13.10 None +1 2.4 MB types
npm/[email protected] environment, eval Transitive: filesystem, shell +46 3.56 MB webpro
npm/[email protected]5.8.2 None 0 22.9 MB typescript-bot

View full report↗︎

socket-security[bot] avatar Mar 20 '25 11:03 socket-security[bot]

Thank you for the pull request 👏

There are still a few things to do. When I run this locally, I get this report:

$ npm run knip

> [email protected] knip
> knip

Unused files (58)
lib/sinon-esm.js
scripts/set-release-id-in-config-yml.cjs
test/es2015/a-function-module.mjs
test/es2015/a-module-with-default.mjs
test/es2015/a-module-with-to-string-tag.mjs
test/es2015/a-module.mjs
test/es2015/module-support-assessment-test.mjs
test/issues/issues-test.js
test/util/fake-timers-test.js
test/webworker/webworker-script.js
test/webworker/webworker-support-assessment.js
docs/assets/js/prism.js
test/util/core/color-test.js
test/util/core/export-async-behaviors-test.js
test/util/core/function-to-string-test.js
test/util/core/get-next-tick-test.js
test/util/core/next-tick-test.js
test/util/core/times-in-words-test.js
test/util/core/walk-object-test.js
test/util/core/walk-test.js
test/util/core/wrap-method-test.js
docs/release-source/release/examples/fakes-01-using-fakes-instead-of-spies.test.js
docs/release-source/release/examples/fakes-02-using-fakes-instead-of-stubs.test.js
docs/release-source/release/examples/fakes-03-creating-without-behaviour.test.js
docs/release-source/release/examples/fakes-04-creating-with-custom-behaviour.test.js
docs/release-source/release/examples/fakes-05-returns.test.js
docs/release-source/release/examples/fakes-06-throws.test.js
docs/release-source/release/examples/fakes-07-yields.test.js
docs/release-source/release/examples/fakes-08-yields-async.test.js
docs/release-source/release/examples/fakes-09-callback.test.js
docs/release-source/release/examples/fakes-10-firstArg.test.js
docs/release-source/release/examples/fakes-11-lastArg.test.js
docs/release-source/release/examples/fakes-12-adding-fake-to-system-under-test.test.js
docs/release-source/release/examples/sandbox-configuration.test.js
docs/release-source/release/examples/spies-1-pubsub.test.js
docs/release-source/release/examples/spies-2-wrap-object-methods.test.js
docs/release-source/release/examples/spies-3-wrap-existing-method.test.js
docs/release-source/release/examples/spies-4-pubsub-message-1.test.js
docs/release-source/release/examples/spies-5-pubsub-message-2.test.js
docs/release-source/release/examples/spies-6-pubsub-message-3.test.js
docs/release-source/release/examples/spies-7-with-args.test.js
docs/release-source/release/examples/spies-8-spy-call.test.js
docs/release-source/release/examples/stubs-1-pubsub.test.js
docs/release-source/release/examples/stubs-10-use-promise-library.test.js
docs/release-source/release/examples/stubs-12-yield-to.test.js
docs/release-source/release/examples/stubs-14-add-behavior.test.js
docs/release-source/release/examples/stubs-15-replace-getter.test.js
docs/release-source/release/examples/stubs-16-define-new-setter.test.js
docs/release-source/release/examples/stubs-17-define-new-value.test.js
docs/release-source/release/examples/stubs-18-restore-values.test.js
docs/release-source/release/examples/stubs-2-different-args.test.js
docs/release-source/release/examples/stubs-3-sequential-interactions.test.js
docs/release-source/release/examples/stubs-4-sequential-with-args.test.js
docs/release-source/release/examples/stubs-5-reset-behaviour.test.js
docs/release-source/release/examples/stubs-6-reset-history.test.js
docs/release-source/release/examples/stubs-7-call-fake.test.js
docs/release-source/release/examples/stubs-8-call-through.test.js
docs/release-source/release/examples/stubs-9-call-through-with-new.test.js
Unused devDependencies (10)
@babel/core                                  package.json:91:6
@mochify/driver-puppeteer                    package.json:93:6
@mochify/driver-webdriver                    package.json:94:6
@sinonjs/eslint-config                       package.json:95:6
@sinonjs/eslint-plugin-no-prototype-methods  package.json:96:6
@studio/changes                              package.json:98:6
babel-plugin-istanbul                        package.json:99:6
babelify                                     package.json:100:6
lint-staged                                  package.json:108:6
semver                                       package.json:114:6
Unlisted binaries (3)
docs/release-source/release/examples/run-test.sh  package.json
make                                              package.json
eslint                                            package.json
Unused exports (8)
createAssertObject    unknown  lib/sinon/assert.js:336:16
incrementCallCount    unknown  lib/sinon/proxy-call-util.js:5:9
createCallProperties  unknown  lib/sinon/proxy-call-util.js:14:9
delegateToCalls       unknown  lib/sinon/proxy-call-util.js:21:9
nonEnum               unknown  lib/sinon/util/core/extend.js:148:16
useFakeTimers         unknown  lib/sinon/util/fake-timers.js:40:9
clock                 unknown  lib/sinon/util/fake-timers.js:74:9
timers                unknown  lib/sinon/util/fake-timers.js:90:9

It is fair enough that the solution can't detect usage of things in docs/, that's not so important.

However, it should be able to detect things that are clearly in use.

$ ag -Q "incrementCallCount"
lib/sinon/spy.js
59:            proxyCallUtil.incrementCallCount(fake);

lib/sinon/proxy-invoke.js
19:    proxyCallUtil.incrementCallCount(this);
24:        proxyCallUtil.incrementCallCount(matching);

lib/sinon/proxy-call-util.js
5:exports.incrementCallCount = function incrementCallCount(proxy) {

I think knip just needs a little bit of help in the form of configuration and maybe a plugin or two.

mroderick avatar Mar 21 '25 09:03 mroderick