usage-board 3.1.0 → 3.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (219) hide show
  1. package/dist/index.mjs +1 -1
  2. package/dist/public/_nuxt/{BuL2_OVR.js → B6C9KBQ4.js} +1 -1
  3. package/dist/public/_nuxt/{CbwePq4F.js → Bv6agYS5.js} +1 -1
  4. package/dist/public/_nuxt/{LYzk-FvL.js → BvRyOET7.js} +1 -1
  5. package/dist/public/_nuxt/{CF27djws.js → CMWftE4h.js} +1 -1
  6. package/dist/public/_nuxt/{CoVMsEv_.js → COIbUy5w.js} +1 -1
  7. package/dist/public/_nuxt/{DS17D0R7.js → CXLmM1yO.js} +1 -1
  8. package/dist/public/_nuxt/{Bz0aA7IQ.js → DFqWEFN4.js} +1 -1
  9. package/dist/public/_nuxt/{WjVGlVHF.js → DUoLvn3A.js} +1 -1
  10. package/dist/public/_nuxt/{Dzuxw4nD.js → D_W11Quh.js} +1 -1
  11. package/dist/public/_nuxt/{D7Qebc1i.js → DgKrPjze.js} +2 -2
  12. package/dist/public/_nuxt/{CEZpUSPI.js → DkxY2YMp.js} +1 -1
  13. package/dist/public/_nuxt/{Dr4nyTE3.js → DtbPvE6R.js} +1 -1
  14. package/dist/public/_nuxt/{BJUAqwzD.js → HiqUua3-.js} +1 -1
  15. package/dist/public/_nuxt/builds/latest.json +1 -1
  16. package/dist/public/_nuxt/builds/meta/6f98f1cb-266c-475e-a249-dad346a55f24.json +1 -0
  17. package/dist/public/_nuxt/error-404.CFBEg71j.css +1 -0
  18. package/dist/public/_nuxt/error-500.BqCnH31G.css +1 -0
  19. package/dist/public/_nuxt/{Cd5S9Sm2.js → uHQwCIHg.js} +1 -1
  20. package/dist/server/chunks/_/error-500.mjs +2 -20
  21. package/dist/server/chunks/build/client.precomputed.mjs +1 -1
  22. package/dist/server/chunks/nitro/nitro.mjs +1885 -3648
  23. package/dist/server/chunks/routes/api/analysis/agent/session.json.mjs +8 -9
  24. package/dist/server/chunks/routes/api/analysis/agent/token.json.mjs +8 -9
  25. package/dist/server/chunks/routes/api/analysis/cache.json.mjs +8 -9
  26. package/dist/server/chunks/routes/api/analysis/hot-project.json.mjs +8 -9
  27. package/dist/server/chunks/routes/api/analysis/model.json.mjs +8 -9
  28. package/dist/server/chunks/routes/api/analysis/overview-cards.json.mjs +8 -9
  29. package/dist/server/chunks/routes/api/analysis/session.json.mjs +8 -9
  30. package/dist/server/chunks/routes/api/analysis/token/daily.json.mjs +8 -9
  31. package/dist/server/chunks/routes/api/analysis/token.json.mjs +8 -9
  32. package/dist/server/chunks/routes/api/payload.json.mjs +8 -9
  33. package/dist/server/chunks/routes/api/projects/_project/modules.get.mjs +8 -9
  34. package/dist/server/chunks/routes/api/projects/catalog.get.mjs +8 -9
  35. package/dist/server/chunks/routes/renderer.mjs +17 -39183
  36. package/dist/server/chunks/routes/ws.mjs +8 -9
  37. package/dist/server/index.mjs +9 -10
  38. package/dist/server/node_modules/@babel/parser/lib/index.js +14582 -0
  39. package/dist/server/node_modules/@babel/parser/package.json +50 -0
  40. package/dist/server/node_modules/@iconify/utils/lib/colors/index.js +292 -0
  41. package/dist/server/node_modules/@iconify/utils/lib/colors/keywords.js +702 -0
  42. package/dist/server/node_modules/@iconify/utils/lib/css/common.js +76 -0
  43. package/dist/server/node_modules/@iconify/utils/lib/css/format.js +40 -0
  44. package/dist/server/node_modules/@iconify/utils/lib/css/icon.js +52 -0
  45. package/dist/server/node_modules/@iconify/utils/lib/css/icons.js +133 -0
  46. package/dist/server/node_modules/@iconify/utils/lib/customisations/bool.js +20 -0
  47. package/dist/server/node_modules/@iconify/utils/lib/customisations/defaults.js +15 -0
  48. package/dist/server/node_modules/@iconify/utils/lib/customisations/flip.js +18 -0
  49. package/dist/server/node_modules/@iconify/utils/lib/customisations/merge.js +18 -0
  50. package/dist/server/node_modules/@iconify/utils/lib/customisations/rotate.js +31 -0
  51. package/dist/server/node_modules/@iconify/utils/lib/emoji/cleanup.js +80 -0
  52. package/dist/server/node_modules/@iconify/utils/lib/emoji/convert.js +102 -0
  53. package/dist/server/node_modules/@iconify/utils/lib/emoji/data.js +29 -0
  54. package/dist/server/node_modules/@iconify/utils/lib/emoji/format.js +60 -0
  55. package/dist/server/node_modules/@iconify/utils/lib/emoji/parse.js +50 -0
  56. package/dist/server/node_modules/@iconify/utils/lib/emoji/regex/base.js +204 -0
  57. package/dist/server/node_modules/@iconify/utils/lib/emoji/regex/create.js +35 -0
  58. package/dist/server/node_modules/@iconify/utils/lib/emoji/regex/numbers.js +134 -0
  59. package/dist/server/node_modules/@iconify/utils/lib/emoji/regex/similar.js +167 -0
  60. package/dist/server/node_modules/@iconify/utils/lib/emoji/regex/tree.js +81 -0
  61. package/dist/server/node_modules/@iconify/utils/lib/emoji/replace/find.js +94 -0
  62. package/dist/server/node_modules/@iconify/utils/lib/emoji/replace/replace.js +28 -0
  63. package/dist/server/node_modules/@iconify/utils/lib/emoji/test/components.js +78 -0
  64. package/dist/server/node_modules/@iconify/utils/lib/emoji/test/missing.js +68 -0
  65. package/dist/server/node_modules/@iconify/utils/lib/emoji/test/name.js +47 -0
  66. package/dist/server/node_modules/@iconify/utils/lib/emoji/test/parse.js +105 -0
  67. package/dist/server/node_modules/@iconify/utils/lib/emoji/test/similar.js +38 -0
  68. package/dist/server/node_modules/@iconify/utils/lib/emoji/test/tree.js +94 -0
  69. package/dist/server/node_modules/@iconify/utils/lib/emoji/test/variations.js +64 -0
  70. package/dist/server/node_modules/@iconify/utils/lib/icon/defaults.js +26 -0
  71. package/dist/server/node_modules/@iconify/utils/lib/icon/merge.js +18 -0
  72. package/dist/server/node_modules/@iconify/utils/lib/icon/name.js +58 -0
  73. package/dist/server/node_modules/@iconify/utils/lib/icon/square.js +34 -0
  74. package/dist/server/node_modules/@iconify/utils/lib/icon/transformations.js +13 -0
  75. package/dist/server/node_modules/@iconify/utils/lib/icon-set/convert-info.js +126 -0
  76. package/dist/server/node_modules/@iconify/utils/lib/icon-set/expand.js +21 -0
  77. package/dist/server/node_modules/@iconify/utils/lib/icon-set/get-icon.js +27 -0
  78. package/dist/server/node_modules/@iconify/utils/lib/icon-set/get-icons.js +38 -0
  79. package/dist/server/node_modules/@iconify/utils/lib/icon-set/minify.js +93 -0
  80. package/dist/server/node_modules/@iconify/utils/lib/icon-set/parse.js +48 -0
  81. package/dist/server/node_modules/@iconify/utils/lib/icon-set/tree.js +24 -0
  82. package/dist/server/node_modules/@iconify/utils/lib/icon-set/validate-basic.js +44 -0
  83. package/dist/server/node_modules/@iconify/utils/lib/icon-set/validate.js +125 -0
  84. package/dist/server/node_modules/@iconify/utils/lib/index.js +53 -0
  85. package/dist/server/node_modules/@iconify/utils/lib/loader/custom.js +32 -0
  86. package/dist/server/node_modules/@iconify/utils/lib/loader/loader.js +28 -0
  87. package/dist/server/node_modules/@iconify/utils/lib/loader/modern.js +42 -0
  88. package/dist/server/node_modules/@iconify/utils/lib/loader/utils.js +63 -0
  89. package/dist/server/node_modules/@iconify/utils/lib/misc/objects.js +27 -0
  90. package/dist/server/node_modules/@iconify/utils/lib/misc/strings.js +27 -0
  91. package/dist/server/node_modules/@iconify/utils/lib/misc/title.js +10 -0
  92. package/dist/server/node_modules/@iconify/utils/lib/svg/build.js +115 -0
  93. package/dist/server/node_modules/@iconify/utils/lib/svg/defs.js +32 -0
  94. package/dist/server/node_modules/@iconify/utils/lib/svg/encode-svg-for-css.js +15 -0
  95. package/dist/server/node_modules/@iconify/utils/lib/svg/html.js +10 -0
  96. package/dist/server/node_modules/@iconify/utils/lib/svg/id.js +42 -0
  97. package/dist/server/node_modules/@iconify/utils/lib/svg/inner-html.js +23 -0
  98. package/dist/server/node_modules/@iconify/utils/lib/svg/parse.js +69 -0
  99. package/dist/server/node_modules/@iconify/utils/lib/svg/pretty.js +55 -0
  100. package/dist/server/node_modules/@iconify/utils/lib/svg/size.js +28 -0
  101. package/dist/server/node_modules/@iconify/utils/lib/svg/trim.js +8 -0
  102. package/dist/server/node_modules/@iconify/utils/lib/svg/url.js +23 -0
  103. package/dist/server/node_modules/@iconify/utils/lib/svg/viewbox.js +9 -0
  104. package/dist/server/node_modules/@iconify/utils/package.json +118 -0
  105. package/dist/server/node_modules/@lonewolfyx/utils/dist/index.mjs +63 -0
  106. package/dist/server/node_modules/@lonewolfyx/utils/package.json +64 -0
  107. package/dist/server/node_modules/@vue/compiler-core/dist/compiler-core.cjs.prod.js +6763 -0
  108. package/dist/server/node_modules/@vue/compiler-core/package.json +58 -0
  109. package/dist/server/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.prod.js +689 -0
  110. package/dist/server/node_modules/@vue/compiler-dom/package.json +57 -0
  111. package/dist/server/node_modules/@vue/compiler-ssr/dist/compiler-ssr.cjs.js +1413 -0
  112. package/dist/server/node_modules/@vue/compiler-ssr/package.json +34 -0
  113. package/dist/server/node_modules/@vue/reactivity/dist/reactivity.cjs.prod.js +1877 -0
  114. package/dist/server/node_modules/@vue/reactivity/package.json +55 -0
  115. package/dist/server/node_modules/@vue/runtime-core/dist/runtime-core.cjs.prod.js +6856 -0
  116. package/dist/server/node_modules/@vue/runtime-core/package.json +52 -0
  117. package/dist/server/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.prod.js +1796 -0
  118. package/dist/server/node_modules/@vue/runtime-dom/package.json +60 -0
  119. package/dist/server/node_modules/@vue/server-renderer/dist/server-renderer.cjs.prod.js +883 -0
  120. package/dist/server/node_modules/@vue/server-renderer/package.json +55 -0
  121. package/dist/server/{chunks/_/shared.cjs.prod.mjs → node_modules/@vue/shared/dist/shared.cjs.prod.js} +76 -81
  122. package/dist/server/node_modules/@vue/shared/package.json +47 -0
  123. package/dist/server/node_modules/better-sqlite3/build/Release/better_sqlite3.node +0 -0
  124. package/dist/server/node_modules/better-sqlite3/lib/database.js +90 -0
  125. package/dist/server/node_modules/better-sqlite3/lib/index.js +3 -0
  126. package/dist/server/node_modules/better-sqlite3/lib/methods/aggregate.js +43 -0
  127. package/dist/server/node_modules/better-sqlite3/lib/methods/backup.js +67 -0
  128. package/dist/server/node_modules/better-sqlite3/lib/methods/function.js +31 -0
  129. package/dist/server/node_modules/better-sqlite3/lib/methods/inspect.js +7 -0
  130. package/dist/server/node_modules/better-sqlite3/lib/methods/pragma.js +12 -0
  131. package/dist/server/node_modules/better-sqlite3/lib/methods/serialize.js +16 -0
  132. package/dist/server/node_modules/better-sqlite3/lib/methods/table.js +189 -0
  133. package/dist/server/node_modules/better-sqlite3/lib/methods/transaction.js +78 -0
  134. package/dist/server/node_modules/better-sqlite3/lib/methods/wrappers.js +54 -0
  135. package/dist/server/node_modules/better-sqlite3/lib/sqlite-error.js +20 -0
  136. package/dist/server/node_modules/better-sqlite3/lib/util.js +12 -0
  137. package/dist/server/node_modules/better-sqlite3/package.json +59 -0
  138. package/dist/server/node_modules/bindings/bindings.js +221 -0
  139. package/dist/server/node_modules/bindings/package.json +28 -0
  140. package/dist/server/node_modules/chokidar/handler.js +632 -0
  141. package/dist/server/node_modules/chokidar/index.js +822 -0
  142. package/dist/server/node_modules/chokidar/package.json +63 -0
  143. package/dist/server/{chunks/_ → node_modules/consola/dist/chunks}/prompt.mjs +2 -1
  144. package/dist/server/node_modules/consola/dist/core.mjs +512 -0
  145. package/dist/server/node_modules/consola/dist/index.mjs +651 -0
  146. package/dist/server/node_modules/consola/dist/shared/consola.DRwqZj3T.mjs +72 -0
  147. package/dist/server/node_modules/consola/dist/shared/consola.DXBYu-KD.mjs +288 -0
  148. package/dist/server/node_modules/consola/package.json +136 -0
  149. package/dist/server/node_modules/devalue/index.js +4 -0
  150. package/dist/server/node_modules/devalue/package.json +40 -0
  151. package/dist/server/node_modules/devalue/src/base64.js +60 -0
  152. package/dist/server/node_modules/devalue/src/constants.js +7 -0
  153. package/dist/server/node_modules/devalue/src/parse.js +268 -0
  154. package/dist/server/node_modules/devalue/src/stringify.js +335 -0
  155. package/dist/server/node_modules/devalue/src/uneval.js +552 -0
  156. package/dist/server/node_modules/devalue/src/utils.js +144 -0
  157. package/dist/server/node_modules/entities/dist/commonjs/decode-codepoint.js +77 -0
  158. package/dist/server/node_modules/entities/dist/commonjs/decode.js +568 -0
  159. package/dist/server/node_modules/entities/dist/commonjs/generated/decode-data-html.js +7 -0
  160. package/dist/server/node_modules/entities/dist/commonjs/generated/decode-data-xml.js +7 -0
  161. package/dist/server/node_modules/entities/dist/commonjs/internal/bin-trie-flags.js +21 -0
  162. package/dist/server/node_modules/entities/dist/commonjs/internal/decode-shared.js +31 -0
  163. package/dist/server/node_modules/entities/dist/commonjs/package.json +3 -0
  164. package/dist/server/node_modules/entities/package.json +120 -0
  165. package/dist/server/node_modules/estree-walker/dist/umd/estree-walker.js +344 -0
  166. package/dist/server/node_modules/estree-walker/package.json +37 -0
  167. package/dist/server/node_modules/file-uri-to-path/index.js +66 -0
  168. package/dist/server/node_modules/file-uri-to-path/package.json +32 -0
  169. package/dist/server/node_modules/glob/dist/esm/index.min.js +4 -0
  170. package/dist/server/node_modules/glob/dist/esm/package.json +3 -0
  171. package/dist/server/node_modules/glob/package.json +98 -0
  172. package/dist/server/node_modules/hookable/dist/index.mjs +257 -0
  173. package/dist/server/node_modules/hookable/package.json +53 -0
  174. package/dist/server/node_modules/md5-typescript/dist/bundles/bundle.umd.js +208 -0
  175. package/dist/server/node_modules/md5-typescript/package.json +31 -0
  176. package/dist/server/node_modules/path-type/index.js +42 -0
  177. package/dist/server/node_modules/path-type/package.json +51 -0
  178. package/dist/server/node_modules/readdirp/index.js +272 -0
  179. package/dist/server/node_modules/readdirp/package.json +66 -0
  180. package/dist/server/node_modules/source-map-js/lib/array-set.js +121 -0
  181. package/dist/server/node_modules/source-map-js/lib/base64-vlq.js +140 -0
  182. package/dist/server/node_modules/source-map-js/lib/base64.js +67 -0
  183. package/dist/server/node_modules/source-map-js/lib/binary-search.js +111 -0
  184. package/dist/server/node_modules/source-map-js/lib/mapping-list.js +79 -0
  185. package/dist/server/node_modules/source-map-js/lib/quick-sort.js +132 -0
  186. package/dist/server/node_modules/source-map-js/lib/source-map-consumer.js +1188 -0
  187. package/dist/server/node_modules/source-map-js/lib/source-map-generator.js +444 -0
  188. package/dist/server/node_modules/source-map-js/lib/source-node.js +413 -0
  189. package/dist/server/node_modules/source-map-js/lib/util.js +594 -0
  190. package/dist/server/node_modules/source-map-js/package.json +71 -0
  191. package/dist/server/node_modules/source-map-js/source-map.js +8 -0
  192. package/dist/server/node_modules/ufo/dist/index.mjs +645 -0
  193. package/dist/server/node_modules/ufo/package.json +48 -0
  194. package/dist/server/node_modules/unhead/dist/parser.mjs +508 -0
  195. package/dist/server/node_modules/unhead/dist/plugins.mjs +101 -0
  196. package/dist/server/node_modules/unhead/dist/server.mjs +180 -0
  197. package/dist/server/node_modules/unhead/dist/shared/unhead.B5FWS6X0.mjs +207 -0
  198. package/dist/server/node_modules/unhead/dist/shared/unhead.BYvz9V1x.mjs +43 -0
  199. package/dist/server/node_modules/unhead/dist/shared/unhead.CbpEuj3y.mjs +71 -0
  200. package/dist/server/node_modules/unhead/dist/shared/unhead.Ct24BOby.mjs +182 -0
  201. package/dist/server/node_modules/unhead/dist/shared/unhead.D4vSFytZ.mjs +236 -0
  202. package/dist/server/node_modules/unhead/dist/shared/unhead.DQc16pHI.mjs +196 -0
  203. package/dist/server/node_modules/unhead/dist/shared/unhead.TxTMM7cM.mjs +166 -0
  204. package/dist/server/node_modules/unhead/dist/shared/unhead.yem5I2v_.mjs +38 -0
  205. package/dist/server/node_modules/unhead/dist/utils.mjs +5 -0
  206. package/dist/server/node_modules/unhead/package.json +105 -0
  207. package/dist/server/node_modules/vue/dist/vue.cjs.js +80 -0
  208. package/dist/server/node_modules/vue/dist/vue.cjs.prod.js +66 -0
  209. package/dist/server/node_modules/vue/index.js +7 -0
  210. package/dist/server/node_modules/vue/index.mjs +1 -0
  211. package/dist/server/node_modules/vue/package.json +112 -0
  212. package/dist/server/node_modules/vue/server-renderer/index.mjs +1 -0
  213. package/dist/server/node_modules/vue-bundle-renderer/dist/runtime.mjs +301 -0
  214. package/dist/server/node_modules/vue-bundle-renderer/package.json +55 -0
  215. package/dist/server/package.json +37 -0
  216. package/package.json +3 -1
  217. package/dist/public/_nuxt/builds/meta/5b933d30-47b4-45ca-8d5a-cba3255174fa.json +0 -1
  218. package/dist/public/_nuxt/error-404.B0EXnOcv.css +0 -1
  219. package/dist/public/_nuxt/error-500.CnSNZoEG.css +0 -1
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ // Generated using scripts/write-decode-map.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.htmlDecodeTree = void 0;
5
+ const decode_shared_js_1 = require("../internal/decode-shared.js");
6
+ exports.htmlDecodeTree = (0, decode_shared_js_1.decodeBase64)("QR08ALkAAgH6AYsDNQR2BO0EPgXZBQEGLAbdBxMISQrvCmQLfQurDKQNLw4fD4YPpA+6D/IPAAAAAAAAAAAAAAAAKhBMEY8TmxUWF2EYLBkxGuAa3RsJHDscWR8YIC8jSCSIJcMl6ie3Ku8rEC0CLjoupS7kLgAIRU1hYmNmZ2xtbm9wcnN0dVQAWgBeAGUAaQBzAHcAfgCBAIQAhwCSAJoAoACsALMAbABpAGcAO4DGAMZAUAA7gCYAJkBjAHUAdABlADuAwQDBQHIiZXZlAAJhAAFpeW0AcgByAGMAO4DCAMJAEGRyAADgNdgE3XIAYQB2AGUAO4DAAMBA8CFoYZFj4SFjcgBhZAAAoFMqAAFncIsAjgBvAG4ABGFmAADgNdg43fAlbHlGdW5jdGlvbgCgYSBpAG4AZwA7gMUAxUAAAWNzpACoAHIAAOA12Jzc6SFnbgCgVCJpAGwAZABlADuAwwDDQG0AbAA7gMQAxEAABGFjZWZvcnN1xQDYANoA7QDxAPYA+QD8AAABY3LJAM8AayNzbGFzaAAAoBYidgHTANUAAKDnKmUAZAAAoAYjeQARZIABY3J0AOAA5QDrAGEidXNlAACgNSLuI291bGxpcwCgLCFhAJJjcgAA4DXYBd1wAGYAAOA12Dnd5SF2ZdhiYwDyAOoAbSJwZXEAAKBOIgAHSE9hY2RlZmhpbG9yc3UXARoBHwE6AVIBVQFiAWQBZgGCAakB6QHtAfIBYwB5ACdkUABZADuAqQCpQIABY3B5ACUBKAE1AfUhdGUGYWmg0iJ0KGFsRGlmZmVyZW50aWFsRAAAoEUhbCJleXMAAKAtIQACYWVpb0EBRAFKAU0B8iFvbgxhZABpAGwAO4DHAMdAcgBjAAhhbiJpbnQAAKAwIm8AdAAKYQABZG5ZAV0BaSJsbGEAuGB0I2VyRG90ALdg8gA5AWkAp2NyImNsZQAAAkRNUFRwAXQBeQF9AW8AdAAAoJkiaSJudXMAAKCWIuwhdXMAoJUiaSJtZXMAAKCXIm8AAAFjc4cBlAFrKndpc2VDb250b3VySW50ZWdyYWwAAKAyImUjQ3VybHkAAAFEUZwBpAFvJXVibGVRdW90ZQAAoB0gdSJvdGUAAKAZIAACbG5wdbABtgHNAdgBbwBuAGWgNyIAoHQqgAFnaXQAvAHBAcUB8iJ1ZW50AKBhIm4AdAAAoC8i7yV1ckludGVncmFsAKAuIgABZnLRAdMBAKACIe8iZHVjdACgECJuLnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbAAAoDMi7yFzcwCgLypjAHIAAOA12J7ccABDoNMiYQBwAACgTSKABURKU1phY2VmaW9zAAsCEgIVAhgCGwIsAjQCOQI9AnMCfwNvoEUh9CJyYWhkAKARKWMAeQACZGMAeQAFZGMAeQAPZIABZ3JzACECJQIoAuchZXIAoCEgcgAAoKEhaAB2AACg5CoAAWF5MAIzAvIhb24OYRRkbAB0oAciYQCUY3IAAOA12AfdAAFhZkECawIAAWNtRQJnAvIjaXRpY2FsAAJBREdUUAJUAl8CYwJjInV0ZQC0YG8AdAFZAloC2WJiJGxlQWN1dGUA3WJyImF2ZQBgYGkibGRlANxi7yFuZACgxCJmJWVyZW50aWFsRAAAoEYhcAR9AgAAAAAAAIECjgIAABoDZgAA4DXYO91EoagAhQKJAm8AdAAAoNwgcSJ1YWwAAKBQIuIhbGUAA0NETFJVVpkCqAK1Au8C/wIRA28AbgB0AG8AdQByAEkAbgB0AGUAZwByAGEA7ADEAW8AdAKvAgAAAACwAqhgbiNBcnJvdwAAoNMhAAFlb7kC0AJmAHQAgAFBUlQAwQLGAs0CciJyb3cAAKDQIekkZ2h0QXJyb3cAoNQhZQDlACsCbgBnAAABTFLWAugC5SFmdAABQVLcAuECciJyb3cAAKD4J+kkZ2h0QXJyb3cAoPon6SRnaHRBcnJvdwCg+SdpImdodAAAAUFU9gL7AnIicm93AACg0iFlAGUAAKCoInAAQQIGAwAAAAALA3Iicm93AACg0SFvJHduQXJyb3cAAKDVIWUlcnRpY2FsQmFyAACgJSJuAAADQUJMUlRhJAM2AzoDWgNxA3oDciJyb3cAAKGTIUJVLAMwA2EAcgAAoBMpcCNBcnJvdwAAoPUhciJldmUAEWPlIWZ00gJDAwAASwMAAFIDaSVnaHRWZWN0b3IAAKBQKWUkZVZlY3RvcgAAoF4p5SJjdG9yQqC9IWEAcgAAoFYpaSJnaHQA1AFiAwAAaQNlJGVWZWN0b3IAAKBfKeUiY3RvckKgwSFhAHIAAKBXKWUAZQBBoKQiciJyb3cAAKCnIXIAcgBvAPcAtAIAAWN0gwOHA3IA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YwAAoN8i4SFycnCgtiEAoD0pgKIqImJjZG9zACsVMBU6FT4VQRVyImNhcAAAoEgqAAFhdTQVNxVwAACgRipwAACgSipvAHQAAKCNInIAAKBFKgDgKiIA/gACYWxydksVURVuFXMVcgByAG2gtyEAoDwpeQCAAWV2dwBYFWUVaRVxAHACXxUAAAAAYxVyAGUA4wAXFXUA4wAZFWUAZQAAoM4iZSJkZ2UAAKDPImUAbgA7gKQApEBlI2Fycm93AAABbHJ7FX8V5SFmdACgtiFpImdodAAAoLchZQDkAG0VAAFjaYsVkRVvAG4AaQBuAPQAkwFuAHQAAKAxImwiY3R5AACgLSOACUFIYWJjZGVmaGlqbG9yc3R1d3oAuBW7Fb8V1RXgFegV+RUKFhUWHxZUFlcWZRbFFtsW7xb7FgUXChdyAPIAtAJhAHIAAKBlKQACZ2xyc8YVyhXOFdAV5yFlcgCgICDlIXRoAKA4IfIA9QxoAHagECAAoKMiawHZFd4VYSJyb3cAAKAPKWEA4wBfAgABYXnkFecV8iFvbg9hNGQAoUYhYW/tFfQVAAFnciEC8RVyAACgyiF0InNlcQAAoHcqgAFnbG0A/xUCFgUWO4CwALBAdABhALRjcCJ0eXYAAKCxKQABaXIOFhIW8yFodACgfykA4DXYId1hAHIAAAFschsWHRYAoMMhAKDCIYACYWVnc3YAKBauAjYWOhY+Fm0AAKHEIm9zLhY0Fm4AZABzoMQi9SFpdACgZiZhIm1tYQDdY2kAbgAAoPIiAKH3AGlvQxZRFmQAZQAAgfcAO29KFksW90BuI3RpbWVzAACgxyJuAPgAUBZjAHkAUmRjAG8CXhYAAAAAYhZyAG4AAKAeI28AcAAAoA0jgAJscHR1dwBuFnEWdRaSFp4W7CFhciRgZgAA4DXYVd0AotkCZW1wc30WhBaJFo0WcQBkoFAibwB0AACgUSJpIm51cwAAoDgi7CF1cwCgFCLxInVhcmUAoKEiYgBsAGUAYgBhAHIAdwBlAGQAZwDlANcAbgCAAWFkaAClFqoWtBZyAHIAbwD3APUMbwB3AG4AYQByAHIAbwB3APMA8xVhI3Jwb29uAAABbHK8FsAWZQBmAPQAHBZpAGcAaAD0AB4WYgHJFs8WawBhAHIAbwD3AJILbwLUFgAAAADYFnIAbgAAoB8jbwBwAACgDCOAAWNvdADhFukW7BYAAXJ55RboFgDgNdi53FVkbAAAoPYp8iFvaxFhAAFkcvMW9xZvAHQAAKDxImkA5qC/JVsSAAFhaP8WAhdyAPIANQNhAPIA1wvhIm5nbGUAoKYpAAFjaQ4XEBd5AF9k5yJyYXJyAKD/JwAJRGFjZGVmZ2xtbm9wcXJzdHV4MRc4F0YXWxcyBF4XaRd5F40XrBe0F78X2RcVGCEYLRg1GEAYAAFEbzUXgRZvAPQA+BUAAWNzPBdCF3UAdABlADuA6QDpQPQhZXIAoG4qAAJhaW95TRdQF1YXWhfyIW9uG2FyAGOgViI7gOoA6kDsIW9uAKBVIk1kbwB0ABdhAAFEcmIXZhdvAHQAAKBSIgDgNdgi3XKhmipuF3QXYQB2AGUAO4DoAOhAZKCWKm8AdAAAoJgqgKGZKmlscwCAF4UXhxfuInRlcnMAoOcjAKATIWSglSpvAHQAAKCXKoABYXBzAJMXlheiF2MAcgATYXQAeQBzogUinxcAAAAAoRdlAHQAAKAFInAAMaADIDMBqRerFwCgBCAAoAUgAAFnc7AXsRdLYXAAAKACIAABZ3C4F7sXbwBuABlhZgAA4DXYVt2AAWFscwDFF8sXzxdyAHOg1SJsAACg4yl1AHMAAKBxKmkAAKG1A2x21RfYF28AbgC1Y/VjAAJjc3V24BfoF/0XEBgAAWlv5BdWF3IAYwAAoFYiaQLuFwAAAADwF+0ADQThIW50AAFnbPUX+Rd0AHIAAKCWKuUhc3MAoJUqgAFhZWkAAxgGGAoYbABzAD1gcwB0AACgXyJ2AESgYSJEAACgeCrwImFyc2wAoOUpAAFEYRkYHRhvAHQAAKBTInIAcgAAoHEpgAFjZGkAJxgqGO0XcgAAoC8hbwD0AIwCAAFhaDEYMhi3YzuA8ADwQAABbXI5GD0YbAA7gOsA60BvAACgrCCAAWNpcABGGEgYSxhsACFgcwD0ACwEAAFlb08YVxhjAHQAYQB0AGkAbwDuABoEbgBlAG4AdABpAGEAbADlADME4Ql1GAAAgRgAAIMYiBgAAAAAoRilGAAAqhgAALsYvhjRGAAA1xgnGWwAbABpAG4AZwBkAG8AdABzAGUA8QBlF3kARGRtImFsZQAAoEAmgAFpbHIAjRiRGJ0Y7CFpZwCgA/tpApcYAAAAAJoYZwAAoAD7aQBnAACgBPsA4DXYI93sIWlnAKAB++whaWcA4GYAagCAAWFsdACvGLIYthh0AACgbSZpAGcAAKAC+24AcwAAoLElbwBmAJJh8AHCGAAAxhhmAADgNdhX3QABYWvJGMwYbADsAGsEdqDUIgCg2SphI3J0aW50AACgDSoAAWFv2hgiGQABY3PeGB8ZsQPnGP0YBRkSGRUZAAAdGbID7xjyGPQY9xj5GAAA+xg7gL0AvUAAoFMhO4C8ALxAAKBVIQCgWSEAoFshswEBGQAAAxkAoFQhAKBWIbQCCxkOGQAAAAAQGTuAvgC+QACgVyEAoFwhNQAAoFghtgEZGQAAGxkAoFohAKBdITgAAKBeIWwAAKBEIHcAbgAAoCIjYwByAADgNdi73IAIRWFiY2RlZmdpamxub3JzdHYARhlKGVoZXhlmGWkZkhmWGZkZnRmgGa0ZxhnLGc8Z4BkjGmygZyIAoIwqgAFjbXAAUBlTGVgZ9SF0ZfVhbQBhAOSgswM6FgCghipyImV2ZQAfYQABaXliGWUZcgBjAB1hM2RvAHQAIWGAoWUibHFzAMYEcBl6GfGhZSLOBAAAdhlsAGEAbgD0AN8EgKF+KmNkbACBGYQZjBljAACgqSpvAHQAb6CAKmyggioAoIQqZeDbIgD+cwAAoJQqcgAA4DXYJN3noGsirATtIWVsAKA3IWMAeQBTZIChdyJFYWoApxmpGasZAKCSKgCgpSoAoKQqAAJFYWVztBm2Gb0ZwhkAoGkicABwoIoq8iFveACgiipxoIgq8aCIKrUZaQBtAACg5yJwAGYAAOA12FjdYQB2AOUAYwIAAWNp0xnWGXIAAKAKIW0AAKFzImVs3BneGQCgjioAoJAqAIM+ADtjZGxxco0E6xn0GfgZ/BkBGgABY2nvGfEZAKCnKnIAAKB6Km8AdAAAoNci0CFhcgCglSl1ImVzdAAAoHwqgAJhZGVscwAKGvQZFhrVBCAa8AEPGgAAFBpwAHIAbwD4AFkZcgAAoHgpcQAAAWxxxAQbGmwAZQBzAPMASRlpAO0A5AQAAWVuJxouGnIjdG5lcXEAAOBpIgD+xQAsGgAFQWFiY2Vma29zeUAaQxpmGmoabRqDGocalhrCGtMacgDyAMwCAAJpbG1yShpOGlAaVBpyAHMA8ABxD2YAvWBpAGwA9AASBQABZHJYGlsaYwB5AEpkAKGUIWN3YBpkGmkAcgAAoEgpAKCtIWEAcgAAoA8h6SFyYyVhgAFhbHIAcxp7Gn8a8iF0c3WgZSZpAHQAAKBlJuwhaXAAoCYg4yFvbgCguSJyAADgNdgl3XMAAAFld4wakRphInJvdwAAoCUpYSJyb3cAAKAmKYACYW1vcHIAnxqjGqcauhq+GnIAcgAAoP8h9CFodACgOyJrAAABbHKsGrMaZSRmdGFycm93AACgqSHpJGdodGFycm93AKCqIWYAAOA12Fnd4iFhcgCgFSCAAWNsdADIGswa0BpyAADgNdi93GEAcwDoAGka8iFvaydhAAFicNca2xr1IWxsAKBDIOghZW4AoBAg4Qr2GgAA/RoAAAgbExsaGwAAIRs7GwAAAAA+G2IbmRuVG6sbAACyG80b0htjAHUAdABlADuA7QDtQAChYyBpeQEbBhtyAGMAO4DuAO5AOGQAAWN4CxsNG3kANWRjAGwAO4ChAKFAAAFmcssCFhsA4DXYJt1yAGEAdgBlADuA7ADsQIChSCFpbm8AJxsyGzYbAAFpbisbLxtuAHQAAKAMKnQAAKAtIuYhaW4AoNwpdABhAACgKSHsIWlnM2GAAWFvcABDG1sbXhuAAWNndABJG0sbWRtyACthgAFlbHAAcQVRG1UbaQBuAOUAyAVhAHIA9AByBWgAMWFmAACgtyJlAGQAtWEAoggiY2ZvdGkbbRt1G3kb4SFyZQCgBSFpAG4AdKAeImkAZQAAoN0pZABvAPQAWxsAoisiY2VscIEbhRuPG5QbYQBsAACguiIAAWdyiRuNG2UAcgDzACMQ4wCCG2EicmhrAACgFyryIW9kAKA8KgACY2dwdJ8boRukG6gbeQBRZG8AbgAvYWYAAOA12FrdYQC5Y3UAZQBzAHQAO4C/AL9AAAFjabUbuRtyAADgNdi+3G4AAKIIIkVkc3bCG8QbyBvQAwCg+SJvAHQAAKD1Inag9CIAoPMiaaBiIOwhZGUpYesB1hsAANkbYwB5AFZkbAA7gO8A70AAA2NmbW9zdeYb7hvyG/Ub+hsFHAABaXnqG+0bcgBjADVhOWRyAADgNdgn3eEhdGg3YnAAZgAA4DXYW93jAf8bAAADHHIAAOA12L/c8iFjeVhk6yFjeVRkAARhY2ZnaGpvcxUcGhwiHCYcKhwtHDAcNRzwIXBhdqC6A/BjAAFleR4cIRzkIWls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ZmdobG1vcHJzdHV3CiwNLBEsHSwnLDEsQCxLLFIsYix6LIQsjyzLLOgs7Sz/LAotcgDyAAkDYQByAACgYykAAWNyFSwbLHUAdABlADuA+gD6QPIACQ1yAOMBIywAACUseQBeZHYAZQBtYQABaXkrLDAscgBjADuA+wD7QENkgAFhYmgANyw6LD0scgDyANEO7CFhY3FhYQDyAOAOAAFpckQsSCzzIWh0AKB+KQDgNdgy3XIAYQB2AGUAO4D5APlAYQFWLF8scgAAAWxyWixcLACgvyEAoL4hbABrAACggCUAAWN0Zix2LG8CbCwAAAAAcyxyAG4AZaAcI3IAAKAcI28AcAAAoA8jcgBpAACg+CUAAWFsfiyBLGMAcgBrYTuAqACoQAABZ3CILIssbwBuAHNhZgAA4DXYZt0AA2FkaGxzdZksniynLLgsuyzFLHIAcgBvAPcACQ1vAHcAbgBhAHIAcgBvAPcA2A5hI3Jwb29uAAABbHKvLLMsZQBmAPQAWyxpAGcAaAD0AF0sdQDzAKYOaQAAocUDaGzBLMIs0mNvAG4AxWPwI2Fycm93cwCgyCGAAWNpdADRLOEs5CxvAtcsAAAAAN4scgBuAGWgHSNyAACgHSNvAHAAAKAOI24AZwBvYXIAaQAAoPklYwByAADgNdjK3IABZGlyAPMs9yz6LG8AdAAAoPAi7CFkZWlhaQBmoLUlAKC0JQABYW0DLQYtcgDyAMosbAA7gPwA/EDhIm5nbGUAoKcpgAdBQkRhY2RlZmxub3Byc3oAJy0qLTAtNC2bLZ0toS2/LcMtxy3TLdgt3C3gLfwtcgDyABADYQByAHag6CoAoOkqYQBzAOgA/gIAAW5yOC08LechcnQAoJwpgANla25wcnN0AJkpSC1NLVQtXi1iLYItYQBwAHAA4QAaHG8AdABoAGkAbgDnAKEXgAFoaXIAoSmzJFotbwBwAPQAdCVooJUh7wD4JgABaXVmLWotZwBtAOEAuygAAWJwbi14LXMjZXRuZXEAceCKIgD+AODLKgD+cyNldG5lcQBx4IsiAP4A4MwqAP4AAWhyhi2KLWUAdADhABIraSNhbmdsZQAAAWxyki2WLeUhZnQAoLIiaSJnaHQAAKCzInkAMmThIXNoAKCiIoABZWxyAKcttC24LWKiKCKuLQAAAACyLWEAcgAAoLsicQAAoFoi7CFpcACg7iIAAWJ0vC1eD2EA8gBfD3IAAOA12DPddAByAOkAlS1zAHUAAAFicM0t0C0A4IIi0iAA4IMi0iBwAGYAAOA12GfdcgBvAPAAWQt0AHIA6QCaLQABY3XkLegtcgAA4DXYy9wAAWJw7C30LW4AAAFFZXUt8S0A4IoiAP5uAAABRWV/LfktAOCLIgD+6SJnemFnAKCaKYADY2Vmb3BycwANLhAuJS4pLiMuLi40LukhcmN1YQABZGkULiEuAAFiZxguHC5hAHIAAKBfKmUAcaAnIgCgWSLlIXJwAKAYIXIAAOA12DTdcABmAADgNdho3WWgQCJhAHQA6ABqD2MAcgAA4DXYzNzjCuQRUC4AAFQuAABYLmIuAAAAAGMubS5wLnQuAAAAAIguki4AAJouJxIqEnQAcgDpAB0ScgAA4DXYNd0AAUFhWy5eLnIA8gDnAnIA8gCTB75jAAFBYWYuaS5yAPIA4AJyAPIAjAdhAPAAeh5pAHMAAKD7IoABZHB0APgReS6DLgABZmx9LoAuAOA12GnddQDzAP8RaQBtAOUABBIAAUFhiy6OLnIA8gDuAnIA8gCaBwABY3GVLgoScgAA4DXYzdwAAXB0nS6hLmwAdQDzACUScgDpACASAARhY2VmaW9zdbEuvC7ELsguzC7PLtQu2S5jAAABdXm2LrsudABlADuA/QD9QE9kAAFpecAuwy5yAGMAd2FLZG4AO4ClAKVAcgAA4DXYNt1jAHkAV2RwAGYAAOA12GrdYwByAADgNdjO3AABY23dLt8ueQBOZGwAO4D/AP9AAAVhY2RlZmhpb3N38y73Lv8uAi8MLxAvEy8YLx0vIi9jInV0ZQB6YQABYXn7Lv4u8iFvbn5hN2RvAHQAfGEAAWV0Bi8KL3QAcgDmAB8QYQC2Y3IAAOA12DfdYwB5ADZk5yJyYXJyAKDdIXAAZgAA4DXYa91jAHIAAOA12M/cAAFqbiYvKC8AoA0gagAAoAwg");
7
+ //# sourceMappingURL=decode-data-html.js.map
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ // Generated using scripts/write-decode-map.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.xmlDecodeTree = void 0;
5
+ const decode_shared_js_1 = require("../internal/decode-shared.js");
6
+ exports.xmlDecodeTree = (0, decode_shared_js_1.decodeBase64)("AAJhZ2xxBwARABMAFQBtAg0AAAAAAA8AcAAmYG8AcwAnYHQAPmB0ADxg9SFvdCJg");
7
+ //# sourceMappingURL=decode-data-xml.js.map
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BinTrieFlags = void 0;
4
+ /**
5
+ * Bit flags & masks for the binary trie encoding used for entity decoding.
6
+ *
7
+ * Bit layout (16 bits total):
8
+ * 15..14 VALUE_LENGTH (+1 encoding; 0 => no value)
9
+ * 13 FLAG13. If valueLength>0: semicolon required flag (implicit ';').
10
+ * If valueLength==0: compact run flag.
11
+ * 12..7 BRANCH_LENGTH Branch length (0 => single branch in 6..0 if jumpOffset==char) OR run length (when compact run)
12
+ * 6..0 JUMP_TABLE Jump offset (jump table) OR single-branch char code OR first run char
13
+ */
14
+ var BinTrieFlags;
15
+ (function (BinTrieFlags) {
16
+ BinTrieFlags[BinTrieFlags["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH";
17
+ BinTrieFlags[BinTrieFlags["FLAG13"] = 8192] = "FLAG13";
18
+ BinTrieFlags[BinTrieFlags["BRANCH_LENGTH"] = 8064] = "BRANCH_LENGTH";
19
+ BinTrieFlags[BinTrieFlags["JUMP_TABLE"] = 127] = "JUMP_TABLE";
20
+ })(BinTrieFlags || (exports.BinTrieFlags = BinTrieFlags = {}));
21
+ //# sourceMappingURL=bin-trie-flags.js.map
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.decodeBase64 = decodeBase64;
4
+ /*
5
+ * Shared base64 decode helper for generated decode data.
6
+ * Assumes global atob is available.
7
+ */
8
+ function decodeBase64(input) {
9
+ const binary =
10
+ // eslint-disable-next-line n/no-unsupported-features/node-builtins
11
+ typeof atob === "function"
12
+ ? // Browser (and Node >=16)
13
+ // eslint-disable-next-line n/no-unsupported-features/node-builtins
14
+ atob(input)
15
+ : // Older Node versions (<16)
16
+ // eslint-disable-next-line n/no-unsupported-features/node-builtins
17
+ typeof Buffer.from === "function"
18
+ ? // eslint-disable-next-line n/no-unsupported-features/node-builtins
19
+ Buffer.from(input, "base64").toString("binary")
20
+ : // eslint-disable-next-line unicorn/no-new-buffer, n/no-deprecated-api
21
+ new Buffer(input, "base64").toString("binary");
22
+ const evenLength = binary.length & ~1; // Round down to even length
23
+ const out = new Uint16Array(evenLength / 2);
24
+ for (let index = 0, outIndex = 0; index < evenLength; index += 2) {
25
+ const lo = binary.charCodeAt(index);
26
+ const hi = binary.charCodeAt(index + 1);
27
+ out[outIndex++] = lo | (hi << 8);
28
+ }
29
+ return out;
30
+ }
31
+ //# sourceMappingURL=decode-shared.js.map
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "commonjs"
3
+ }
@@ -0,0 +1,120 @@
1
+ {
2
+ "name": "entities",
3
+ "version": "7.0.1",
4
+ "description": "Encode & decode XML and HTML entities with ease & speed",
5
+ "keywords": [
6
+ "html entities",
7
+ "entity decoder",
8
+ "entity encoding",
9
+ "html decoding",
10
+ "html encoding",
11
+ "xml decoding",
12
+ "xml encoding"
13
+ ],
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "https://github.com/fb55/entities.git"
17
+ },
18
+ "funding": "https://github.com/fb55/entities?sponsor=1",
19
+ "license": "BSD-2-Clause",
20
+ "author": "Felix Boehm <me@feedic.com>",
21
+ "sideEffects": false,
22
+ "type": "module",
23
+ "exports": {
24
+ ".": {
25
+ "import": {
26
+ "types": "./dist/esm/index.d.ts",
27
+ "default": "./dist/esm/index.js"
28
+ },
29
+ "require": {
30
+ "types": "./dist/commonjs/index.d.ts",
31
+ "default": "./dist/commonjs/index.js"
32
+ }
33
+ },
34
+ "./decode": {
35
+ "import": {
36
+ "types": "./dist/esm/decode.d.ts",
37
+ "default": "./dist/esm/decode.js"
38
+ },
39
+ "require": {
40
+ "types": "./dist/commonjs/decode.d.ts",
41
+ "default": "./dist/commonjs/decode.js"
42
+ }
43
+ },
44
+ "./escape": {
45
+ "import": {
46
+ "types": "./dist/esm/escape.d.ts",
47
+ "default": "./dist/esm/escape.js"
48
+ },
49
+ "require": {
50
+ "types": "./dist/commonjs/escape.d.ts",
51
+ "default": "./dist/commonjs/escape.js"
52
+ }
53
+ }
54
+ },
55
+ "main": "./dist/commonjs/index.js",
56
+ "module": "./dist/esm/index.js",
57
+ "types": "./dist/commonjs/index.d.ts",
58
+ "files": [
59
+ "decode.js",
60
+ "decode.d.ts",
61
+ "escape.js",
62
+ "escape.d.ts",
63
+ "dist",
64
+ "src",
65
+ "!**/*.spec.ts"
66
+ ],
67
+ "scripts": {
68
+ "build:docs": "typedoc --hideGenerator src/index.ts",
69
+ "build:encode-trie": "node --import=tsx scripts/write-encode-map.ts",
70
+ "build:trie": "node --import=tsx scripts/write-decode-map.ts",
71
+ "benchmark": "node --import=tsx scripts/benchmark.ts",
72
+ "format": "npm run format:es && npm run format:biome",
73
+ "format:es": "npm run lint:es -- --fix",
74
+ "format:biome": "biome check --fix .",
75
+ "lint": "npm run lint:es && npm run lint:ts && npm run lint:biome",
76
+ "lint:es": "eslint . --ignore-path .gitignore",
77
+ "lint:biome": "biome check .",
78
+ "lint:ts": "tsc --noEmit",
79
+ "prepublishOnly": "tshy",
80
+ "test": "npm run test:vi && npm run lint",
81
+ "test:vi": "vitest run"
82
+ },
83
+ "devDependencies": {
84
+ "@biomejs/biome": "^2.3.11",
85
+ "@types/node": "^25.0.9",
86
+ "@typescript-eslint/eslint-plugin": "^8.53.1",
87
+ "@typescript-eslint/parser": "^8.53.1",
88
+ "@vitest/coverage-v8": "^3.2.4",
89
+ "@types/he": "^1.2.3",
90
+ "eslint": "^8.57.1",
91
+ "eslint-config-biome": "^2.1.3",
92
+ "eslint-plugin-n": "^17.23.2",
93
+ "eslint-plugin-unicorn": "^56.0.1",
94
+ "he": "^1.2.0",
95
+ "html-entities": "^2.6.0",
96
+ "parse-entities": "^4.0.2",
97
+ "tinybench": "^5.1.0",
98
+ "tshy": "^3.1.0",
99
+ "tsx": "^4.21.0",
100
+ "typedoc": "^0.28.16",
101
+ "typescript": "^5.9.3",
102
+ "vitest": "^3.2.4"
103
+ },
104
+ "engines": {
105
+ "node": ">=0.12"
106
+ },
107
+ "tshy": {
108
+ "exclude": [
109
+ "**/*.spec.ts",
110
+ "**/__fixtures__/*",
111
+ "**/__tests__/*",
112
+ "**/__snapshots__/*"
113
+ ],
114
+ "exports": {
115
+ ".": "./src/index.ts",
116
+ "./decode": "./src/decode.ts",
117
+ "./escape": "./src/escape.ts"
118
+ }
119
+ }
120
+ }
@@ -0,0 +1,344 @@
1
+ (function (global, factory) {
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
3
+ typeof define === 'function' && define.amd ? define(['exports'], factory) :
4
+ (global = global || self, factory(global.estreeWalker = {}));
5
+ }(this, (function (exports) { 'use strict';
6
+
7
+ // @ts-check
8
+ /** @typedef { import('estree').BaseNode} BaseNode */
9
+
10
+ /** @typedef {{
11
+ skip: () => void;
12
+ remove: () => void;
13
+ replace: (node: BaseNode) => void;
14
+ }} WalkerContext */
15
+
16
+ class WalkerBase {
17
+ constructor() {
18
+ /** @type {boolean} */
19
+ this.should_skip = false;
20
+
21
+ /** @type {boolean} */
22
+ this.should_remove = false;
23
+
24
+ /** @type {BaseNode | null} */
25
+ this.replacement = null;
26
+
27
+ /** @type {WalkerContext} */
28
+ this.context = {
29
+ skip: () => (this.should_skip = true),
30
+ remove: () => (this.should_remove = true),
31
+ replace: (node) => (this.replacement = node)
32
+ };
33
+ }
34
+
35
+ /**
36
+ *
37
+ * @param {any} parent
38
+ * @param {string} prop
39
+ * @param {number} index
40
+ * @param {BaseNode} node
41
+ */
42
+ replace(parent, prop, index, node) {
43
+ if (parent) {
44
+ if (index !== null) {
45
+ parent[prop][index] = node;
46
+ } else {
47
+ parent[prop] = node;
48
+ }
49
+ }
50
+ }
51
+
52
+ /**
53
+ *
54
+ * @param {any} parent
55
+ * @param {string} prop
56
+ * @param {number} index
57
+ */
58
+ remove(parent, prop, index) {
59
+ if (parent) {
60
+ if (index !== null) {
61
+ parent[prop].splice(index, 1);
62
+ } else {
63
+ delete parent[prop];
64
+ }
65
+ }
66
+ }
67
+ }
68
+
69
+ // @ts-check
70
+
71
+ /** @typedef { import('estree').BaseNode} BaseNode */
72
+ /** @typedef { import('./walker.js').WalkerContext} WalkerContext */
73
+
74
+ /** @typedef {(
75
+ * this: WalkerContext,
76
+ * node: BaseNode,
77
+ * parent: BaseNode,
78
+ * key: string,
79
+ * index: number
80
+ * ) => void} SyncHandler */
81
+
82
+ class SyncWalker extends WalkerBase {
83
+ /**
84
+ *
85
+ * @param {SyncHandler} enter
86
+ * @param {SyncHandler} leave
87
+ */
88
+ constructor(enter, leave) {
89
+ super();
90
+
91
+ /** @type {SyncHandler} */
92
+ this.enter = enter;
93
+
94
+ /** @type {SyncHandler} */
95
+ this.leave = leave;
96
+ }
97
+
98
+ /**
99
+ *
100
+ * @param {BaseNode} node
101
+ * @param {BaseNode} parent
102
+ * @param {string} [prop]
103
+ * @param {number} [index]
104
+ * @returns {BaseNode}
105
+ */
106
+ visit(node, parent, prop, index) {
107
+ if (node) {
108
+ if (this.enter) {
109
+ const _should_skip = this.should_skip;
110
+ const _should_remove = this.should_remove;
111
+ const _replacement = this.replacement;
112
+ this.should_skip = false;
113
+ this.should_remove = false;
114
+ this.replacement = null;
115
+
116
+ this.enter.call(this.context, node, parent, prop, index);
117
+
118
+ if (this.replacement) {
119
+ node = this.replacement;
120
+ this.replace(parent, prop, index, node);
121
+ }
122
+
123
+ if (this.should_remove) {
124
+ this.remove(parent, prop, index);
125
+ }
126
+
127
+ const skipped = this.should_skip;
128
+ const removed = this.should_remove;
129
+
130
+ this.should_skip = _should_skip;
131
+ this.should_remove = _should_remove;
132
+ this.replacement = _replacement;
133
+
134
+ if (skipped) return node;
135
+ if (removed) return null;
136
+ }
137
+
138
+ for (const key in node) {
139
+ const value = node[key];
140
+
141
+ if (typeof value !== "object") {
142
+ continue;
143
+ } else if (Array.isArray(value)) {
144
+ for (let i = 0; i < value.length; i += 1) {
145
+ if (value[i] !== null && typeof value[i].type === 'string') {
146
+ if (!this.visit(value[i], node, key, i)) {
147
+ // removed
148
+ i--;
149
+ }
150
+ }
151
+ }
152
+ } else if (value !== null && typeof value.type === "string") {
153
+ this.visit(value, node, key, null);
154
+ }
155
+ }
156
+
157
+ if (this.leave) {
158
+ const _replacement = this.replacement;
159
+ const _should_remove = this.should_remove;
160
+ this.replacement = null;
161
+ this.should_remove = false;
162
+
163
+ this.leave.call(this.context, node, parent, prop, index);
164
+
165
+ if (this.replacement) {
166
+ node = this.replacement;
167
+ this.replace(parent, prop, index, node);
168
+ }
169
+
170
+ if (this.should_remove) {
171
+ this.remove(parent, prop, index);
172
+ }
173
+
174
+ const removed = this.should_remove;
175
+
176
+ this.replacement = _replacement;
177
+ this.should_remove = _should_remove;
178
+
179
+ if (removed) return null;
180
+ }
181
+ }
182
+
183
+ return node;
184
+ }
185
+ }
186
+
187
+ // @ts-check
188
+
189
+ /** @typedef { import('estree').BaseNode} BaseNode */
190
+ /** @typedef { import('./walker').WalkerContext} WalkerContext */
191
+
192
+ /** @typedef {(
193
+ * this: WalkerContext,
194
+ * node: BaseNode,
195
+ * parent: BaseNode,
196
+ * key: string,
197
+ * index: number
198
+ * ) => Promise<void>} AsyncHandler */
199
+
200
+ class AsyncWalker extends WalkerBase {
201
+ /**
202
+ *
203
+ * @param {AsyncHandler} enter
204
+ * @param {AsyncHandler} leave
205
+ */
206
+ constructor(enter, leave) {
207
+ super();
208
+
209
+ /** @type {AsyncHandler} */
210
+ this.enter = enter;
211
+
212
+ /** @type {AsyncHandler} */
213
+ this.leave = leave;
214
+ }
215
+
216
+ /**
217
+ *
218
+ * @param {BaseNode} node
219
+ * @param {BaseNode} parent
220
+ * @param {string} [prop]
221
+ * @param {number} [index]
222
+ * @returns {Promise<BaseNode>}
223
+ */
224
+ async visit(node, parent, prop, index) {
225
+ if (node) {
226
+ if (this.enter) {
227
+ const _should_skip = this.should_skip;
228
+ const _should_remove = this.should_remove;
229
+ const _replacement = this.replacement;
230
+ this.should_skip = false;
231
+ this.should_remove = false;
232
+ this.replacement = null;
233
+
234
+ await this.enter.call(this.context, node, parent, prop, index);
235
+
236
+ if (this.replacement) {
237
+ node = this.replacement;
238
+ this.replace(parent, prop, index, node);
239
+ }
240
+
241
+ if (this.should_remove) {
242
+ this.remove(parent, prop, index);
243
+ }
244
+
245
+ const skipped = this.should_skip;
246
+ const removed = this.should_remove;
247
+
248
+ this.should_skip = _should_skip;
249
+ this.should_remove = _should_remove;
250
+ this.replacement = _replacement;
251
+
252
+ if (skipped) return node;
253
+ if (removed) return null;
254
+ }
255
+
256
+ for (const key in node) {
257
+ const value = node[key];
258
+
259
+ if (typeof value !== "object") {
260
+ continue;
261
+ } else if (Array.isArray(value)) {
262
+ for (let i = 0; i < value.length; i += 1) {
263
+ if (value[i] !== null && typeof value[i].type === 'string') {
264
+ if (!(await this.visit(value[i], node, key, i))) {
265
+ // removed
266
+ i--;
267
+ }
268
+ }
269
+ }
270
+ } else if (value !== null && typeof value.type === "string") {
271
+ await this.visit(value, node, key, null);
272
+ }
273
+ }
274
+
275
+ if (this.leave) {
276
+ const _replacement = this.replacement;
277
+ const _should_remove = this.should_remove;
278
+ this.replacement = null;
279
+ this.should_remove = false;
280
+
281
+ await this.leave.call(this.context, node, parent, prop, index);
282
+
283
+ if (this.replacement) {
284
+ node = this.replacement;
285
+ this.replace(parent, prop, index, node);
286
+ }
287
+
288
+ if (this.should_remove) {
289
+ this.remove(parent, prop, index);
290
+ }
291
+
292
+ const removed = this.should_remove;
293
+
294
+ this.replacement = _replacement;
295
+ this.should_remove = _should_remove;
296
+
297
+ if (removed) return null;
298
+ }
299
+ }
300
+
301
+ return node;
302
+ }
303
+ }
304
+
305
+ // @ts-check
306
+
307
+ /** @typedef { import('estree').BaseNode} BaseNode */
308
+ /** @typedef { import('./sync.js').SyncHandler} SyncHandler */
309
+ /** @typedef { import('./async.js').AsyncHandler} AsyncHandler */
310
+
311
+ /**
312
+ *
313
+ * @param {BaseNode} ast
314
+ * @param {{
315
+ * enter?: SyncHandler
316
+ * leave?: SyncHandler
317
+ * }} walker
318
+ * @returns {BaseNode}
319
+ */
320
+ function walk(ast, { enter, leave }) {
321
+ const instance = new SyncWalker(enter, leave);
322
+ return instance.visit(ast, null);
323
+ }
324
+
325
+ /**
326
+ *
327
+ * @param {BaseNode} ast
328
+ * @param {{
329
+ * enter?: AsyncHandler
330
+ * leave?: AsyncHandler
331
+ * }} walker
332
+ * @returns {Promise<BaseNode>}
333
+ */
334
+ async function asyncWalk(ast, { enter, leave }) {
335
+ const instance = new AsyncWalker(enter, leave);
336
+ return await instance.visit(ast, null);
337
+ }
338
+
339
+ exports.asyncWalk = asyncWalk;
340
+ exports.walk = walk;
341
+
342
+ Object.defineProperty(exports, '__esModule', { value: true });
343
+
344
+ })));
@@ -0,0 +1,37 @@
1
+ {
2
+ "name": "estree-walker",
3
+ "description": "Traverse an ESTree-compliant AST",
4
+ "version": "2.0.2",
5
+ "private": false,
6
+ "author": "Rich Harris",
7
+ "license": "MIT",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "https://github.com/Rich-Harris/estree-walker"
11
+ },
12
+ "type": "commonjs",
13
+ "main": "./dist/umd/estree-walker.js",
14
+ "module": "./dist/esm/estree-walker.js",
15
+ "exports": {
16
+ "require": "./dist/umd/estree-walker.js",
17
+ "import": "./dist/esm/estree-walker.js"
18
+ },
19
+ "types": "types/index.d.ts",
20
+ "scripts": {
21
+ "prepublishOnly": "npm run build && npm test",
22
+ "build": "tsc && rollup -c",
23
+ "test": "uvu test"
24
+ },
25
+ "devDependencies": {
26
+ "@types/estree": "0.0.42",
27
+ "rollup": "^2.10.9",
28
+ "typescript": "^3.7.5",
29
+ "uvu": "^0.5.1"
30
+ },
31
+ "files": [
32
+ "src",
33
+ "dist",
34
+ "types",
35
+ "README.md"
36
+ ]
37
+ }