Skip to content

BREAKING: Build packages with tsup - #3998

Merged
Mrtenz merged 5 commits into
mainfrom
mrtenz/tsup
Mar 7, 2024
Merged

BREAKING: Build packages with tsup#3998
Mrtenz merged 5 commits into
mainfrom
mrtenz/tsup

Conversation

@Mrtenz

Copy link
Copy Markdown
Member

Explanation

This changes the build system to build all packages with tsup, instead of tsc. tsc is still used for generating the declaration files and type checking, and tsup is used for building the .js and (new) .mjs files. The benefit of this is that we now have a ESM build as well as a CJS build.

References

See MetaMask/utils#144.

Changelog

@metamask/accounts-controller

  • BREAKING: Add ESM build.
    • It's no longer possible to import files from ./dist directly.

@metamask/address-book-controller

  • BREAKING: Add ESM build.
    • It's no longer possible to import files from ./dist directly.

@metamask/announcement-controller

  • BREAKING: Add ESM build.
    • It's no longer possible to import files from ./dist directly.

@metamask/approval-controller

  • BREAKING: Add ESM build.
    • It's no longer possible to import files from ./dist directly.

@metamask/assets-controller

  • BREAKING: Add ESM build.
    • It's no longer possible to import files from ./dist directly.

@metamask/base-controller

  • BREAKING: Add ESM build.
    • It's no longer possible to import files from ./dist directly.

@metamask/build-utils

  • BREAKING: Add ESM build.
    • It's no longer possible to import files from ./dist directly.

@metamask/composable-controller

  • BREAKING: Add ESM build.
    • It's no longer possible to import files from ./dist directly.

@metamask/controller-utils

  • BREAKING: Add ESM build.
    • It's no longer possible to import files from ./dist directly.

@metamask/ens-controller

  • BREAKING: Add ESM build.
    • It's no longer possible to import files from ./dist directly.

@metamask/eth-json-rpc-provider

  • BREAKING: Add ESM build.
    • It's no longer possible to import files from ./dist directly.

@metamask/gas-fee-controller

  • BREAKING: Add ESM build.
    • It's no longer possible to import files from ./dist directly.

@metamask/json-rpc-engine

  • BREAKING: Add ESM build.
    • It's no longer possible to import files from ./dist directly.

@metamask/json-rpc-middleware-stream

  • BREAKING: Add ESM build.
    • It's no longer possible to import files from ./dist directly.

@metamask/keyring-controller

  • BREAKING: Add ESM build.
    • It's no longer possible to import files from ./dist directly.

@metamask/logging-controller

  • BREAKING: Add ESM build.
    • It's no longer possible to import files from ./dist directly.

@metamask/message-manager

  • BREAKING: Add ESM build.
    • It's no longer possible to import files from ./dist directly.

@metamask/name-controller

  • BREAKING: Add ESM build.
    • It's no longer possible to import files from ./dist directly.

@metamask/network-controller

  • BREAKING: Add ESM build.
    • It's no longer possible to import files from ./dist directly.

@metamask/notification-controller

  • BREAKING: Add ESM build.
    • It's no longer possible to import files from ./dist directly.

@metamask/permission-controller

  • BREAKING: Add ESM build.
    • It's no longer possible to import files from ./dist directly.

@metamask/permission-log-controller

  • BREAKING: Add ESM build.
    • It's no longer possible to import files from ./dist directly.

@metamask/phishing-controller

  • BREAKING: Add ESM build.
    • It's no longer possible to import files from ./dist directly.

@metamask/polling-controller

  • BREAKING: Add ESM build.
    • It's no longer possible to import files from ./dist directly.

@metamask/preferences-controller

  • BREAKING: Add ESM build.
    • It's no longer possible to import files from ./dist directly.

@metamask/queued-request-controller

  • BREAKING: Add ESM build.
    • It's no longer possible to import files from ./dist directly.

@metamask/rate-limit-controller

  • BREAKING: Add ESM build.
    • It's no longer possible to import files from ./dist directly.

@metamask/selected-network-controller

  • BREAKING: Add ESM build.
    • It's no longer possible to import files from ./dist directly.

@metamask/signature-controller

  • BREAKING: Add ESM build.
    • It's no longer possible to import files from ./dist directly.

@metamask/transaction-controller

  • BREAKING: Add ESM build.
    • It's no longer possible to import files from ./dist directly.

@metamask/user-operation-controller

  • BREAKING: Add ESM build.
    • It's no longer possible to import files from ./dist directly.

Checklist

  • I've updated the test suite for new or updated code as appropriate
  • I've updated documentation (JSDoc, Markdown, etc.) for new or updated code as appropriate
  • I've highlighted breaking changes using the "BREAKING" category above as appropriate

@socket-security

socket-securityBot commented Feb 29, 2024

Copy link
Copy Markdown

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

PackageNew capabilitiesTransitivesSizePublisher
npm/@esbuild/aix-ppc64@0.19.12None010.4 MBevanw
npm/@esbuild/android-arm@0.19.12None011.5 MBevanw
npm/@esbuild/android-arm64@0.19.12None09.83 MBevanw
npm/@esbuild/android-x64@0.19.12None011.5 MBevanw
npm/@esbuild/darwin-arm64@0.19.12None09.76 MBevanw
npm/@esbuild/darwin-x64@0.19.12None010.2 MBevanw
npm/@esbuild/freebsd-arm64@0.19.12None08.85 MBevanw
npm/@esbuild/freebsd-x64@0.19.12None09.61 MBevanw
npm/@esbuild/linux-arm@0.19.12None09.18 MBevanw
npm/@esbuild/linux-arm64@0.19.12None08.85 MBevanw
npm/@esbuild/linux-ia32@0.19.12None09.14 MBevanw
npm/@esbuild/linux-loong64@0.19.12None09.37 MBevanw
npm/@esbuild/linux-mips64el@0.19.12None010.4 MBevanw
npm/@esbuild/linux-ppc64@0.19.12None09.18 MBevanw
npm/@esbuild/linux-riscv64@0.19.12None09.11 MBevanw
npm/@esbuild/linux-s390x@0.19.12None010 MBevanw
npm/@esbuild/linux-x64@0.19.12None09.6 MBevanw
npm/@esbuild/netbsd-x64@0.19.12None09.59 MBevanw
npm/@esbuild/openbsd-x64@0.19.12None09.62 MBevanw
npm/@esbuild/sunos-x64@0.19.12None09.59 MBevanw
npm/@esbuild/win32-arm64@0.19.12None08.98 MBevanw
npm/@esbuild/win32-ia32@0.19.12None09.45 MBevanw
npm/@esbuild/win32-x64@0.19.12None09.81 MBevanw
npm/@rollup/rollup-android-arm-eabi@4.12.1None01.63 MBlukastaegert
npm/@rollup/rollup-android-arm64@4.12.1None02.49 MBlukastaegert
npm/@rollup/rollup-darwin-arm64@4.12.1None02.43 MBlukastaegert
npm/@rollup/rollup-darwin-x64@4.12.1None02.58 MBlukastaegert
npm/@rollup/rollup-linux-arm-gnueabihf@4.12.1None02.44 MBlukastaegert
npm/@rollup/rollup-linux-arm64-gnu@4.12.1None02.49 MBlukastaegert
npm/@rollup/rollup-linux-arm64-musl@4.12.1None02.37 MBlukastaegert
npm/@rollup/rollup-linux-riscv64-gnu@4.12.1None02.52 MBlukastaegert
npm/@rollup/rollup-linux-x64-gnu@4.12.1None02.72 MBlukastaegert
npm/@rollup/rollup-linux-x64-musl@4.12.1None02.7 MBlukastaegert
npm/@rollup/rollup-win32-arm64-msvc@4.12.1None02.96 MBlukastaegert
npm/@rollup/rollup-win32-ia32-msvc@4.12.1None02.63 MBlukastaegert
npm/@rollup/rollup-win32-x64-msvc@4.12.1None03.47 MBlukastaegert
npm/any-promise@1.3.0None022.2 kBkevinbeaty
npm/binary-extensions@2.2.0None05.36 kBsindresorhus
npm/bundle-require@4.0.2environment, filesystem, unsafe Transitive: network, shell+25224 MBegoist
npm/cac@6.7.14None081.8 kBegoist
npm/chokidar@3.6.0environment, filesystem+14531 kBpaulmillr
npm/esbuild@0.19.12environment, filesystem, network, shell+23224 MBevanw
npm/is-binary-path@2.1.0None+18.43 kBsindresorhus
npm/joycon@3.1.1environment, filesystem014 kBegoist
npm/lilconfig@3.1.1filesystem017.7 kBantonk52
npm/load-tsconfig@0.2.5None017.1 kBegoist
npm/lodash.sortby@4.7.0None075.8 kBjdalton
npm/mz@2.7.0filesystem, network, shell+452 kBjongleberry
npm/object-assign@4.1.1None05.49 kBsindresorhus
npm/postcss-load-config@4.0.2environment, unsafe Transitive: filesystem+2571.9 MBai
npm/rollup@4.12.1None+1533.6 MB
npm/sucrase@3.35.0Transitive: environment, filesystem, network, shell, unsafe+413.8 MBalangpierce
npm/thenify-all@1.6.0None+236.7 kBdead_horse
npm/thenify@3.3.1None+130.1 kBdead_horse
npm/tree-kill@1.2.2shell07.82 kBwmhilton
npm/ts-interface-checker@0.1.13None068 kBdsagal2
npm/tsup@8.0.2environment, eval, filesystem Transitive: network, shell, unsafe+158335 MBegoist

View full report↗︎

@socket-security

socket-securityBot commented Feb 29, 2024

Copy link
Copy Markdown

👍 Dependency issues cleared. Learn more about Socket for GitHub ↗︎

This PR previously contained dependency changes with security issues that have been resolved, removed, or ignored.

Ignoring: npm/esbuild@0.19.12, npm/mz@2.7.0, npm/source-map@0.8.0-beta.0, npm/tree-kill@1.2.2

View full report↗︎

Next steps

Take a deeper look at the dependency

Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support [AT] socket [DOT] dev.

Remove the package

If you happen to install a dependency that Socket reports as Known Malware you should immediately remove it and select a different dependency. For other alert types, you may may wish to investigate alternative packages or consider if there are other ways to mitigate the specific risk posed by the dependency.

Mark a package as acceptable risk

To ignore an alert, reply with a comment starting with @SocketSecurity ignore followed by a space separated list of ecosystem/package-name@version specifiers. e.g. @SocketSecurity ignore npm/foo@1.0.0 or ignore all packages with @SocketSecurity ignore-all

    Copy link
    Copy Markdown
    MemberAuthor

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    tsup uses sucrase to transpile ESM to CJS (unless tree shaking is enabled, but that breaks source maps), and sucrase enables all polyfills by default. Our environment supports all the features, so we don't need these polyfills. This also improves static analysis in LavaMoat.

    Comment threadconstraints.pro Outdated
    Comment on lines 260 to 262

    Copy link
    Copy Markdown
    MemberAuthor

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    I haven't checked every single package for side effects, but it looks like there aren't any. Setting sideEffects: false improves tree shaking in tools like Webpack.

    @Mrtenz

    Copy link
    Copy Markdown
    MemberAuthor

    @SocketSecurity ignore npm/mz@2.7.0
    @SocketSecurity ignore npm/tree-kill@1.2.2
    @SocketSecurity ignore npm/esbuild@0.19.12

    These are expected to have shell / network access.

    @SocketSecurity ignore npm/source-map@0.8.0-beta.0

    New author is ok.

    @Mrtenz
    Mrtenz marked this pull request as ready for review February 29, 2024 13:05
    @Mrtenz
    Mrtenz requested review from a team as code ownersFebruary 29, 2024 13:05
    Comment threadpackages/permission-controller/tsconfig.build.json Outdated
    FrederikBolding
    FrederikBolding previously approved these changes Feb 29, 2024
    Comment threadpackages/base-controller/package.json Outdated
    @Mrtenz

    Copy link
    Copy Markdown
    MemberAuthor

    @metamaskbot publish-preview

    @mcmiremcmire left a comment

    Copy link
    Copy Markdown
    Collaborator

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    Looks good!

    @mcmire

    mcmire commented Mar 7, 2024

    Copy link
    Copy Markdown
    Collaborator

    I am not sure why the check failed, but once this branch is updated against main, it should re-run that check. I will re-run it now.

    @Mrtenz
    Mrtenz merged commit 87a661d into mainMar 7, 2024
    @Mrtenz
    Mrtenz deleted the mrtenz/tsup branch March 7, 2024 21:34
    Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

    Projects

    None yet

    Development

    Successfully merging this pull request may close these issues.

    3 participants

    @Mrtenz@mcmire@FrederikBolding