Skip to main content
Module

x/esm/CHANGELOG.md

A fast, global content delivery network for ES Modules.
Go to Latest
File

Change Log

v68

  • Support ?keep-names query for esbuild (close #345)

v85

  • Fix fixAliasDeps function that imports multiple React when using ?deps=react@18,react-dom@18

v84

  • Fix types version resolving with ?deps query(close #338)
  • Fix URL redirect with outdated build version prefix

v83

  • Replace node-fetch dep to node-fetch-native (close #336)
  • Add --keep-names option for esbuild by default (close #335)
  • Fix incorrect types with ?alias query

v82

  • fix types with ?deps query (close #333)

v81

  • fix ?deps and ?alias depth query

v80

  • Fix build error in v79

v79

  • Use esm.sh instead of cdn.esm.sh
  • User semver versioning for the x-typescript-types header
  • Fix aliasing dependencies doesn’t affect typescript declaration (close #102)
  • Fix using arguments in arrow function #322
  • Fix Deno check precluding esm.sh to start #327

v78

  • Reduce database store structure
  • Fix missed renderToReadableStream export of react/server in deno
  • Fix fetchPackageInfo dead loop (close #301)
  • Upgrade esbuild to 0.14.36

v77

  • Use the latest version of deno/std/node from cdn.deno.land automatically
  • Add es2022 target
  • Upgrade esbuild to 0.14.34

v76

  • Fix ?deps mode

v75

  • Fix types build version ignore ?pin (close #292)
  • Infect ?deps and ?alias to dependencies (close #235)
  • Bundle ?worker by default
  • Upgrade semver to v3 (close #297)
  • Upgrade esbuild to 0.14.31
  • Upgrade deno std to 0.133.0 (close #298)

v74

  • Support ?no-require flag, with this option you can ignore the require(...) call in ESM packages. To support logic like below:
    // index.mjs
    
    let depMod;
    try {
      depMod = await import("/path")
    } finally {
      // `?no-require` will skip next line when resolving
      depMod = require("/path")
    }

v73

  • Fix types dependency path (close #287)

v72

  • Support jsx-runtime with query: https://esm.sh/react?pin=v72/jsx-runtime -> https://esm.sh/react/jsx-runtime?pin=v72
  • Support pure types package (close #284)

v71

  • Fix version resolving of dts transformer (close #274)

v70

  • Return bare code when target and pin provided to reduce requests
    // https://esm.sh/react@17.0.2
    export * from "https://cdn.esm.sh/v69/react@17.0.2/es2021/react.js";
    // https://esm.sh/react@17.0.2?target=es2020&pin=v70
    {content just from https://cdn.esm.sh/v69/react@17.0.2/es2021/react.js}
  • Rollback parseCJSModuleExports function to v68 (close #277, #279)
  • Fix exports resolving in package.json (close #278, #280)
  • Upgrade deno std/node to 0.130.0

v69

  • Force the dependency version of react equals to react-dom’s version
    before: react-dom@18-rc.2 -> react@18-rc.2-next.xxxx
    now: react-dom@18-rc.2 -> react@18-rc.2
  • Fix version check for prerelease (can’t resolve react in react-dom@rc)
  • Improve cjs module transform (can handle more edge cases, for example react-18-rc defines non-esm for browsers and deno)

v68

  • Fix bundle mode (close #271)
  • Support jsnext:main in package.json (close #272)
  • Improve cjs-esm-exports to support UMD format
    // exports: ['foo']
    const { exports } = parse('index.cjs', `
      (function (global, factory) {
        typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
        typeof define === 'function' && define.amd ? define(['exports'], factory) :
        (factory((global.MMDParser = global.MMDParser || {})));
      }(this, function (exports) {
        exports.foo = "bar";
      }))
    `);
  • Upgrade deno node polyfill to 0.128.0

v67

  • Force react/jsx-dev-runtime and react-refresh into dev mode
  • Replace typeof window !== undefined to typeof document !== undefined for deno target
  • Replace object-assign with Object.assign
  • Upgrade esbuild to 0.14.25

v66

  • Improve exports resloving of package.json (close #179)

v65

  • Feature: Support ?path query to specify the submodule, this is friendly for import maps with options (close #260)
    // import-map.json
    {
      imports: {
        "react-dom/": "https://esm.sh/react-dom?target=es2015&path=/"
      }
    }
    // equals to https://esm.sh/react-dom/server?target=es2015
    import { renderToString } from "react-dom/server"
  • Upgrade deno.land/std/node polyfill to 0.125.0
  • Upgrade esbuild to v0.14.18
  • bugfixs for #251, #256, #261,#262

v64

  • Fix Node.js process compatibility (close #253)
  • Upgrade deno.land/std/node polyfill to 0.122.0

v63

  • Add fs polyfill(fake) for browsers (close #250)
  • Upgrade deno.land/std/node polyfill to 0.121.0

v62

v61

  • Support React new JSX transforms in Deno(1.16+) (close #225)

v60

v59

  • improve cjs-esm-exports to support some edge cases:
      var foo = exports.foo || (exports.foo = {});
      ((bar) => { ... })(exports.bar || (exports.bar = {}));
  • Fix @types verisoning:
    • marked -> @types/marked@4.0.1
    • marked@2 -> @types/marked@2.0.5
    • marked?dep=@types/marked@4.0.0 -> @types/marked@4.0.0
  • Upgrade deno.land/std/node polyfill to 0.119.0
  • Upgrade esbuild to v0.14.8

v58

  • Recover the stable queue
  • Filter invalid pathnames like /wp-admin/login.php
  • Fix ?pin mode when build failed (close #206)

v57

  • Add ?pin mode
  • Improve build stability
  • Fix marked@4 import
  • Fix invalid types hangs forever (close #201)

v56

  • cjs-esm-exports supports tslib __exportStar (close #197)
  • Improve node perf_hooks polyfill
  • Fix redeclared process polyfill (close #195)
  • Fix ?worker mode on deno (#198)
  • Add he to cjs-esm-exports require mode allow list (close #200)
  • Fix package css redirect link
  • Upgrade esbuild to v0.13.12

v55

  • Add playground to write esm app online, try it on https://esm.sh?playground
  • Add a better cjs exports parser: cjs-esm-exports
  • Support web worker
    import editorWorker from '/monaco-editor/esm/vs/editor/editor.worker?worker'
    
      const worker = new editorWorker()
  • Add queue interface
  • Support dataurl, .wasm import
  • Import deno polyfills from https://deno.land/std@0.113.0/node
  • Fix package CSS

v54

  • Update deno polyfills from 0.106.0 to 0.110.0 (#190)
  • Add deno module polyfill (#164)
  • Fix (storage/fs_local) file path portability bug (#158)

v53

  • Add Cache-Tag header for CDN purge
  • Add s3 storage support (#153)
  • Fix require replacement (#154)

v52

  • Fix types build (#149)
  • Use stream and events from deno std/node (#136) @talentlessguy
  • Fix localLRU and allow for memoryLRU (#148) @jimisaacs

v51

  • Fix build breaking change in v50 (#131).
  • Add localLRU FS layer (#126)
  • Add a Cache Interface that is using to store temporary data like npm packages info.
  • Do not try to build /favicon.ico (#132)
  • Add lovely pixi.js, three.js and @material-ui/core testing by @jimisaacs (#134, #139).

v50

  • Improve build performance to burn the server CPU cores! Before this, to build a module to ESM which has heavy deps maybe very slow since the single build task only uses one CPU core.
  • Rewrite the dts transformer to get better deno types compatibility and faster transpile speed.
  • Add Deno testing CI on Github.

v49

  • Improve the build process to fix an edge case reported in #118
    const Parser = require('htmlparser').Parser;
    esm (v48) output:
    import htmlparser2 from '/v48/htmlparser2@5.0.0/es2021/htmlparser2.js'
    const Parser = htmlparser2.Parser; // parser is undefined
    the expected output was fixed in v49:
    import { Parser as htmlparser2Parser } from '/v48/htmlparser2@5.0.0/es2021/htmlparser2.js'
    const Parser = htmlparser2Parser; // parser is a class
  • Add more polyfills for Deno, huge thanks to @talentlessguy (#117)
    • path
    • querystring
    • url
    • timers
  • Better self-hosting options improved by @jimisaacs, super! (#116, #119, #120, #122)
  • Add Unlimted(max 1PB) Storage to store builds and cache via NFS on esm.sh back server behind Cloudflare

v48

  • Improve cjs-lexer service to handle the edge case is shown below:
    function debounce() {};
    debounce.debounce = debounce;
    module.exports = debounce;
    esm output:
    export { debounce } // this was missed
    export default debounce
  • Ignore ?target in Deno (fix #109)
  • Add Storage Interface to store data to anywhere (currently only support postdb + local FS)

v47

  • Improve dts transformer to use cdn domain (fix #104)
  • Update polyfills (fix #105)

v46

  • Split modules based on exports defines (ref #78)
  • Add cache-folder config for yarn add
  • Improve resolveVersion to support format 4.x (fix #93)
  • Import initESM to support bare exports in package.json (fix #97)
  • Bundle mode should respect the extra external (fix #98)
  • Support node:path importing (fix #100)
  • Pass ?alias and ?deps to deps (fix #101)
  • Improve cjs-lexer sever (fix #103)
  • Upgrade rex to 1.4.1
  • Upgrade esbuild to 0.12.24

V45

  • Improve build performance
  • Filter cjs-moudle-lexer server invalid exports output
  • Improve resolveVersion function to support format like 4.x (fix #93)
  • Improve dts transform (fix #95)

V44

  • Add Alias feature (#89)
    import useSWR from 'https://esm.sh/swr?alias=react:preact/compat'
    in combination with ?deps:
    import useSWR from 'https://esm.sh/swr?alias=react:preact/compat&deps=preact@10.5.14'
    The origin idea was came from @lucacasonato.
  • Add node build target (#84)
  • Check exports field to get entry point in package.json
  • Run cjs-lexer as a server
  • Upgrade esbuild to 0.11.18 with es2021 build target
  • Bugfixs for #90, #85, #83, #77, #65, #48, #41.

V43

  • Add /status.json api
  • Use previous build instead of waiting/404 (fix #74)
  • Fix deps query (#71)

V42

  • Add __esModule reserved word
  • Align require change for esbuild 0.12
  • Fix setImmediate polyfill args (#75)
  • Upgrade esbuild to 0.11.12

V41

  • Add timeout (30 seconds) for new build request, or use previous build version instead if it exists
  • Fix bundle mode
  • Fix build dead loop
  • Upgrade esbuild to 0.11.12

V40

  • Update polyfills for node builtin modules
  • Upgrade esbuild to 0.11.9

V39

  • Imporve parseCJSModuleExports to support json module
  • Pass NODE_ENV to parseCJSModuleExports
  • Update node buffer polyfill
  • Upgrade postdb to v0.6.2

V38

  • Fix build for packages with module type (#48)
  • Improve parseCJSModuleExports function (use cjs-module-lexer and nodejs eval both to parse cjs exports, and ignore JSON module)
  • Pass NODE_ENV to parseCJSModuleExports function
  • Upgrade esbuild to 0.11.6

V37

  • Add bundle mode
  • Fix module exports parsing

V36

  • Fix esm build for some edge cases
  • Add simple test (thanks @zhoukekestar)
  • Upgrade esbuild to 0.11.5

V35

  • Set build target by the user-agent of browser automaticlly

V34

  • Remove bundle mode · Breaking
  • Add build queue instead of mutex lock
  • Use AST(cjs-module-lexer) to parse cjs exports
  • Add a testing page at https://esm.sh?test
  • Fix __setImmediate$ is not defined
  • Support exports define in package.json
  • Support mjs extension
  • Improve NpmPackage resolve (fix #41)
  • Upgrade esbuild to 0.11.4
  • Upgrade rex to 1.3.0