Created
February 21, 2024 11:23
-
-
Save wooorm/42157265daacb3ec5667792b02d545d1 to your computer and use it in GitHub Desktop.
Changes in the popular npm packages module formats between Nov 2023 to Feb 2024
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Map(5) { | |
'cjs' => Map(3) { | |
'esm' => Set(34) { | |
'mime', | |
'eslint-plugin-jsdoc', | |
'@salesforce/sf-plugins-core', | |
'stylelint-prettier', | |
'@ckeditor/ckeditor5-core', | |
'@ckeditor/ckeditor5-upload', | |
'@ckeditor/ckeditor5-typing', | |
'@ckeditor/ckeditor5-paragraph', | |
'@ckeditor/ckeditor5-basic-styles', | |
'@ckeditor/ckeditor5-essentials', | |
'@ckeditor/ckeditor5-list', | |
'@ckeditor/ckeditor5-link', | |
'@ckeditor/ckeditor5-heading', | |
'@ckeditor/ckeditor5-table', | |
'@ckeditor/ckeditor5-image', | |
'@ckeditor/ckeditor5-indent', | |
'@ckeditor/ckeditor5-block-quote', | |
'@ckeditor/ckeditor5-paste-from-office', | |
'@ckeditor/ckeditor5-autoformat', | |
'@ckeditor/ckeditor5-editor-classic', | |
'@ckeditor/ckeditor5-media-embed', | |
'@ckeditor/ckeditor5-easy-image', | |
'@ckeditor/ckeditor5-cloud-services', | |
'@ckeditor/ckeditor5-adapter-ckfinder', | |
'@ckeditor/ckeditor5-ckfinder', | |
'@ckeditor/ckeditor5-alignment', | |
'@ckeditor/ckeditor5-font', | |
'@ckeditor/ckeditor5-remove-format', | |
'@ckeditor/ckeditor5-horizontal-line', | |
'@ckeditor/ckeditor5-code-block', | |
'@ckeditor/ckeditor5-special-characters', | |
'@ckeditor/ckeditor5-highlight', | |
'@ckeditor/ckeditor5-word-count', | |
'f2elint' | |
}, | |
'dual' => Set(16) { | |
'@sinonjs/commons', | |
'@sinclair/typebox', | |
'buffer-crc32', | |
'mdurl', | |
'linkify-it', | |
'uc.micro', | |
'markdown-it', | |
'change-case-all', | |
'stylelint', | |
'@commitlint/config-conventional', | |
'@prisma/client', | |
'promise-call-limit', | |
'markdown-it-emoji', | |
'stylelint-config-css-modules', | |
'markdown-it-container', | |
'markdown-it-footnote' | |
}, | |
'faux' => Set(3) { 'clipanion', 'pretty-quick', '@storybook/addon-console' } | |
}, | |
'faux' => Map(2) { | |
'dual' => Set(17) { | |
'date-fns', | |
'@testing-library/user-event', | |
'@vue/compiler-sfc', | |
'@vue/shared', | |
'@vue/compiler-core', | |
'@vue/compiler-dom', | |
'@vue/reactivity', | |
'@vue/server-renderer', | |
'@vue/runtime-core', | |
'@vue/runtime-dom', | |
'react-icons', | |
'@firebase/auth', | |
'universal-cookie', | |
'@stripe/stripe-js', | |
'echarts', | |
'react-cookie', | |
'@loadable/component' | |
}, | |
'esm' => Set(13) { | |
'clsx', | |
'redux', | |
'react-redux', | |
'reselect', | |
'redux-thunk', | |
'@reduxjs/toolkit', | |
'xstate', | |
'@changesets/types', | |
'shiki', | |
'@changesets/cli', | |
'jsondiffpatch', | |
'redux-observable', | |
'@changesets/changelog-github' | |
} | |
}, | |
undefined => Map(4) { | |
'cjs' => Set(204) { | |
'es-errors', | |
'lainan', | |
'es-define-property', | |
'ip-address', | |
'@rollup/rollup-linux-x64-gnu', | |
'@rollup/rollup-linux-x64-musl', | |
'@dataform/core', | |
'bare-events', | |
'@stdlib/assert-is-string', | |
'@prisma/debug', | |
'@rollup/rollup-win32-x64-msvc', | |
'@stdlib/string-base-lowercase', | |
'tarjan-graph', | |
'@types/methods', | |
'@stdlib/number-ctor', | |
'@sigstore/verify', | |
'@types/stylis', | |
'@prisma/get-platform', | |
'@parcel/watcher-linux-x64-glibc', | |
'@fastify/fast-json-stringify-compiler', | |
'@prisma/fetch-engine', | |
'@stdlib/assert-is-number', | |
'@sigstore/core', | |
'@esbuild/aix-ppc64', | |
'wait-port', | |
'@expo/json-file', | |
'@opentelemetry/instrumentation-http', | |
'@react-native/codegen', | |
'postgres-range', | |
'jsc-safe-url', | |
'@microsoft/tsdoc-config', | |
'@rushstack/rig-package', | |
'@react-native/virtualized-lists', | |
'pg-numeric', | |
'native-duplexpair', | |
'typanion', | |
'async-sema', | |
'@volar/language-core', | |
'async-listen', | |
'@stdlib/assert-has-float64array-support', | |
'@stdlib/assert-is-float64array', | |
'@parcel/watcher-linux-x64-musl', | |
'@material/theme', | |
'@stdlib/array-float32', | |
'@stdlib/assert-has-float32array-support', | |
'@stdlib/assert-is-float32array', | |
'@volar/typescript', | |
'toastify-react-native', | |
'@opentelemetry/instrumentation-grpc', | |
'@react-native/js-polyfills', | |
'@material/feature-targeting', | |
'@stdlib/complex-float32', | |
'@stdlib/number-float64-base-to-float32', | |
'@material/rtl', | |
'stream-json', | |
'@opentelemetry/sdk-node', | |
'flow-enums-runtime', | |
'muggle-string', | |
'@mapbox/vector-tile', | |
'@react-native/assets-registry', | |
'@octokit/auth-app', | |
'@stdlib/complex-reimf', | |
'@stdlib/complex-reim', | |
'@stdlib/complex-float64', | |
'matcher-collection', | |
'@react-native/gradle-plugin', | |
'babel-plugin-transform-flow-enums', | |
'@stdlib/math-base-napi-unary', | |
'@angular-eslint/builder', | |
'@stdlib/boolean-ctor', | |
'vt-pbf', | |
'stream-chain', | |
'@actions/github', | |
'@nx/linter', | |
'@mapbox/geojson-rewind', | |
'eventid', | |
'@types/btoa-lite', | |
'@rollup/rollup-darwin-arm64', | |
'ansi-red', | |
'vinyl-sourcemaps-apply', | |
'@types/throttle-debounce', | |
'speed-measure-webpack-plugin', | |
'blakejs', | |
'postinstall-postinstall', | |
'@types/passport-jwt', | |
'react-grid-layout', | |
'@types/jest-axe', | |
'libsodium-wrappers', | |
'randomstring', | |
'expo-modules-core', | |
'@types/better-sqlite3', | |
'@cypress/code-coverage', | |
'dagre', | |
'@stdlib/fs-read-file', | |
'eslint-plugin-tailwindcss', | |
'@fontsource/roboto', | |
'@tailwindcss/aspect-ratio', | |
'jest-environment-enzyme', | |
'websocket-stream', | |
'url-polyfill', | |
... 104 more items | |
}, | |
'faux' => Set(54) { | |
'@smithy/core', | |
'mdns-listener-advanced', | |
'@sentry-internal/feedback', | |
'@microsoft/tsdoc', | |
'@opentelemetry/otlp-proto-exporter-base', | |
'@opentelemetry/exporter-trace-otlp-proto', | |
'@sentry-internal/replay-canvas', | |
'@azure/core-http-compat', | |
'@octokit/oauth-methods', | |
'@js-joda/core', | |
'@octokit/oauth-authorization-url', | |
'@react-aria/interactions', | |
'@aws-sdk/lib-storage', | |
'@react-stately/utils', | |
'@aws-sdk/client-cloudformation', | |
'@dnd-kit/sortable', | |
'@firebase/installations-compat', | |
'@octokit/auth-oauth-app', | |
'@material/base', | |
'@material/animation', | |
'@aws-sdk/client-iam', | |
'@azure/keyvault-keys', | |
'geojson-vt', | |
'@material/dom', | |
'@internationalized/date', | |
'@aws-sdk/client-sfn', | |
'@mapbox/whoots-js', | |
'@material/ripple', | |
'ulid', | |
'@ethersproject/transactions', | |
'react-infinite-scroll-component', | |
'recoil', | |
'focus-visible', | |
'await-to-js', | |
'turndown', | |
'@expo/vector-icons', | |
'eslint-plugin-vitest', | |
'@mui/styled-engine-sc', | |
'countup.js', | |
'@supabase/supabase-js', | |
'typedi', | |
'eslint-plugin-mdx', | |
'react-native-paper', | |
'reconnecting-websocket', | |
'deepcopy', | |
'rc-form', | |
'yaml-front-matter', | |
'@antv/g6', | |
'jsencrypt', | |
'@uniswap/sdk-core', | |
'rollup-plugin-gzip', | |
'@zerollup/ts-transform-paths', | |
'rax-text', | |
'rax-view' | |
}, | |
'dual' => Set(51) { | |
'libsql-stateless', | |
'libsql-stateless-easy', | |
'citty', | |
'ohash', | |
'nypm', | |
'@vitejs/plugin-basic-ssl', | |
'@tanstack/virtual-core', | |
'get-port-please', | |
'cross-inspect', | |
'@tanstack/react-virtual', | |
'@tanstack/react-query-devtools', | |
'safe-identifier', | |
'eslint-compat-utils', | |
'goober', | |
'@cucumber/tag-expressions', | |
'@urql/core', | |
'peberminta', | |
'@inquirer/core', | |
'@csstools/cascade-layer-name-parser', | |
'@vueuse/metadata', | |
'@radix-ui/react-tabs', | |
'i18next-http-backend', | |
'@radix-ui/react-accordion', | |
'@antfu/utils', | |
'react-hot-toast', | |
'react-pdf', | |
'@swc-node/register', | |
'@tiptap/core', | |
'@radix-ui/react-switch', | |
'@tiptap/pm', | |
'@radix-ui/react-radio-group', | |
'@radix-ui/react-label', | |
'@fullcalendar/daygrid', | |
'@tiptap/extension-link', | |
'@tiptap/starter-kit', | |
'geckodriver', | |
'@storybook/test', | |
'@nuxt/devtools', | |
'@chakra-ui/icons', | |
'@inquirer/prompts', | |
'@vitejs/plugin-vue2', | |
'markdown-it-sup', | |
'@storybook/vue3-vite', | |
'@clack/prompts', | |
'@uiw/react-md-editor', | |
'@iconify/json', | |
'@storybook/web-components', | |
'vue-types', | |
'tsm', | |
'vite-plugin-lib-inject-css', | |
'@xylabs/ts-scripts-yarn3' | |
}, | |
'esm' => Set(50) { | |
'@pkgr/core', | |
'get-east-asian-width', | |
'unicorn-magic', | |
'mdast-util-mdxjs-esm', | |
'@sindresorhus/merge-streams', | |
'stdin-discarder', | |
'@floating-ui/react', | |
'devlop', | |
'micromark-extension-mdx-expression', | |
'micromark-extension-mdx-jsx', | |
'micromark-extension-mdxjs-esm', | |
'mdast-util-mdx', | |
'micromark-extension-mdx-md', | |
'micromark-extension-mdxjs', | |
'estree-util-visit', | |
'git-hooks-list', | |
'unist-util-position-from-estree', | |
'micromark-factory-mdx-expression', | |
'micromark-util-events-to-acorn', | |
'@lit-labs/ssr-dom-shim', | |
'@codemirror/view', | |
'@codemirror/language', | |
'@noble/curves', | |
'digest-fetch', | |
'@codemirror/state', | |
'is-url-superb', | |
'hast-util-is-element', | |
'hook-std', | |
'prosemirror-transform', | |
'prosemirror-commands', | |
'jotai', | |
'file-url', | |
'@ckeditor/ckeditor5-ui', | |
'filemanager-webpack-plugin', | |
'root-check', | |
'ng-zorro-antd', | |
'typedoc-plugin-missing-exports', | |
'random-words', | |
'@esm-bundle/chai', | |
'@ckeditor/ckeditor5-html-support', | |
'@backstage/core-plugin-api', | |
'@ckeditor/ckeditor5-mention', | |
'@ckeditor/ckeditor5-page-break', | |
'ts-standard', | |
'semantic-release-monorepo', | |
'@ckeditor/ckeditor5-html-embed', | |
'@backstage/test-utils', | |
'renamer', | |
'@web/dev-server-storybook', | |
'alfy' | |
} | |
}, | |
'dual' => Map(1) { 'esm' => Set(1) { 'chai' } }, | |
'esm' => Map(1) { | |
'dual' => Set(2) { '@tanstack/table-core', '@tanstack/react-table' } | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* @typedef {'esm' | 'dual' | 'faux' | 'cjs'} Kind | |
*/ | |
import fs from 'node:fs/promises' | |
const fromUrl = new URL('data/2023-11-22.json', import.meta.url) | |
const toUrl = new URL('data/2024-02-20.json', import.meta.url) | |
const from = JSON.parse(await fs.readFile(fromUrl, 'utf8')) | |
const to = JSON.parse(await fs.readFile(toUrl, 'utf8')) | |
/** @type {Map<Kind | undefined, Map<Kind, Set<string>>>} */ | |
const changes = new Map() | |
for (const [ | |
/** @type {string} */ name, | |
/** @type {Kind} */ now | |
] of Object.entries(to)) { | |
/** @type {Kind | undefined} */ | |
const before = from[name] || undefined | |
if (before === now) continue | |
let to = changes.get(before) | |
if (!to) changes.set(before, (to = new Map())) | |
let set = to.get(now) | |
if (!set) to.set(now, (set = new Set())) | |
set.add(name) | |
} | |
console.log(changes) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment