diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index e5fdb77..3e47ac0 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -85,11 +85,14 @@ jobs:
         uses: egad13/purge-jsdelivr-cache@v1
         with:
           url: |
+            https://cdn.jsdelivr.net/npm/chameleon-ultra.js@0
             https://cdn.jsdelivr.net/npm/chameleon-ultra.js@0/dist/index.global.js
             https://cdn.jsdelivr.net/npm/chameleon-ultra.js@0/dist/Crypto1.global.js
             https://cdn.jsdelivr.net/npm/chameleon-ultra.js@0/dist/plugin/WebbleAdapter.global.js
             https://cdn.jsdelivr.net/npm/chameleon-ultra.js@0/dist/plugin/WebserialAdapter.global.js
 
+            https://cdn.jsdelivr.net/npm/chameleon-ultra.js@0/+esm
             https://cdn.jsdelivr.net/npm/chameleon-ultra.js@0/dist/index.mjs/+esm
+            https://cdn.jsdelivr.net/npm/chameleon-ultra.js@0/dist/Crypto1.mjs/+esm
             https://cdn.jsdelivr.net/npm/chameleon-ultra.js@0/dist/plugin/WebbleAdapter.mjs/+esm
             https://cdn.jsdelivr.net/npm/chameleon-ultra.js@0/dist/plugin/WebserialAdapter.mjs/+esm
diff --git a/README.md b/README.md
index 603a368..9b8ca21 100644
--- a/README.md
+++ b/README.md
@@ -93,14 +93,14 @@ Using jsDelivr CDN:
 
 <!-- module -->
 <script type="module">
-  import { Buffer, ChameleonUltra } from 'https://cdn.jsdelivr.net/npm/chameleon-ultra.js@0/dist/index.mjs/+esm'
+  import { Buffer, ChameleonUltra } from 'https://cdn.jsdelivr.net/npm/chameleon-ultra.js@0/+esm'
   import WebbleAdapter from 'https://cdn.jsdelivr.net/npm/chameleon-ultra.js@0/dist/plugin/WebbleAdapter.mjs/+esm'
   import WebserialAdapter from 'https://cdn.jsdelivr.net/npm/chameleon-ultra.js@0/dist/plugin/WebserialAdapter.mjs/+esm'
 </script>
 
 <!-- module + async import -->
 <script type="module">
-  const { Buffer, ChameleonUltra } = await import('https://cdn.jsdelivr.net/npm/chameleon-ultra.js@0/dist/index.mjs/+esm')
+  const { Buffer, ChameleonUltra } = await import('https://cdn.jsdelivr.net/npm/chameleon-ultra.js@0/+esm')
   const { default: WebbleAdapter } = await import('https://cdn.jsdelivr.net/npm/chameleon-ultra.js@0/dist/plugin/WebbleAdapter.mjs/+esm')
   const { default: WebserialAdapter } = await import('https://cdn.jsdelivr.net/npm/chameleon-ultra.js@0/dist/plugin/WebserialAdapter.mjs/+esm')
 </script>
@@ -121,7 +121,7 @@ ultraBle.use(new WebbleAdapter())
 
 ```js
 async function run (ultra) {
-  const { Buffer, DeviceMode, FreqType, Slot, TagType } = await import('https://cdn.jsdelivr.net/npm/chameleon-ultra.js@0/dist/index.mjs/+esm')
+  const { Buffer, DeviceMode, FreqType, Slot, TagType } = await import('https://cdn.jsdelivr.net/npm/chameleon-ultra.js@0/+esm')
   // set slot tag type and reset data
   await ultra.cmdSlotChangeTagType(Slot.SLOT_8, TagType.MIFARE_1024)
   await ultra.cmdSlotResetTagType(Slot.SLOT_8, TagType.MIFARE_1024)
@@ -146,7 +146,7 @@ async function run (ultra) {
 await run(vm.ultra)
 
 // or run with new ChaneleonUltra instance
-const { ChameleonUltra } = await import('https://cdn.jsdelivr.net/npm/chameleon-ultra.js@0/dist/index.mjs/+esm')
+const { ChameleonUltra } = await import('https://cdn.jsdelivr.net/npm/chameleon-ultra.js@0/+esm')
 const { default: WebserialAdapter } = await import('https://cdn.jsdelivr.net/npm/chameleon-ultra.js@0/dist/plugin/WebserialAdapter.mjs/+esm')
 const ultraUsb = new ChameleonUltra()
 ultraUsb.use(new WebserialAdapter())
@@ -166,7 +166,7 @@ async function run (ultra) {
 await run(vm.ultra)
 
 // or run with new ChaneleonUltra instance
-const { ChameleonUltra } = await import('https://cdn.jsdelivr.net/npm/chameleon-ultra.js@0/dist/index.mjs/+esm')
+const { ChameleonUltra } = await import('https://cdn.jsdelivr.net/npm/chameleon-ultra.js@0/+esm')
 const { default: WebserialAdapter } = await import('https://cdn.jsdelivr.net/npm/chameleon-ultra.js@0/dist/plugin/WebserialAdapter.mjs/+esm')
 const ultraUsb = new ChameleonUltra()
 ultraUsb.use(new WebserialAdapter())
diff --git a/package.json b/package.json
index e38eac8..13d2f0e 100644
--- a/package.json
+++ b/package.json
@@ -8,7 +8,7 @@
   "module": "./dist/index.mjs",
   "name": "chameleon-ultra.js",
   "type": "commonjs",
-  "version": "0.3.1",
+  "version": "0.3.2",
   "bugs": {
     "url": "https://github.com/taichunmin/chameleon-ultra.js/issues"
   },
diff --git a/src/ChameleonUltra.ts b/src/ChameleonUltra.ts
index 15b8fae..97806ed 100644
--- a/src/ChameleonUltra.ts
+++ b/src/ChameleonUltra.ts
@@ -1,9 +1,9 @@
 import _ from 'lodash'
 import { Buffer } from '@taichunmin/buffer'
-import { debug as createDebugger, type Debugger } from 'debug'
 import { errToJson, middlewareCompose, sleep, type MiddlewareComposeFn, versionCompare } from './helper'
 import { type ReadableStream, type UnderlyingSink, WritableStream } from 'node:stream/web'
 import * as Decoder from './ResponseDecoder'
+import createDebugger, { type Debugger } from 'debug'
 
 import {
   Cmd,
@@ -102,7 +102,7 @@ export class ChameleonUltra {
    *
    * ```html
    * <script type="module">
-   *   import { Buffer, ChameleonUltra } from 'https://cdn.jsdelivr.net/npm/chameleon-ultra.js@0/dist/index.mjs/+esm'
+   *   import { Buffer, ChameleonUltra } from 'https://cdn.jsdelivr.net/npm/chameleon-ultra.js@0/+esm'
    *   import WebbleAdapter from 'https://cdn.jsdelivr.net/npm/chameleon-ultra.js@0/dist/plugin/WebbleAdapter.mjs/+esm'
    *   import WebserialAdapter from 'https://cdn.jsdelivr.net/npm/chameleon-ultra.js@0/dist/plugin/WebserialAdapter.mjs/+esm'
    *