@nuxt/devtools 3.2.1 → 3.2.3

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 (179) hide show
  1. package/dist/chunks/module-main.mjs +270 -108
  2. package/dist/chunks/plugin-metrics.mjs +4 -2
  3. package/dist/chunks/timeline.mjs +2 -1
  4. package/dist/chunks/vite-inspect.mjs +7 -4
  5. package/dist/chunks/vscode.mjs +1 -0
  6. package/dist/client/200.html +1 -1
  7. package/dist/client/404.html +1 -1
  8. package/dist/client/_nuxt/__blank-gayjf0ih.js +1 -0
  9. package/dist/client/_nuxt/_plugin-vue_export-helper-dp8rxgcg.js +1 -0
  10. package/dist/client/_nuxt/analyze-build-bnq2cil8.js +1 -0
  11. package/dist/client/_nuxt/assets-fjp0hrmh.js +6 -0
  12. package/dist/client/_nuxt/builds/latest.json +1 -1
  13. package/dist/client/_nuxt/builds/meta/f343c68e-9061-4942-a0df-50170dc001bd.json +1 -0
  14. package/dist/client/_nuxt/{client-cbmkjf3j.js → client-lh91kcpv.js} +1 -1
  15. package/dist/client/_nuxt/client-s5g5n0ac.js +2 -0
  16. package/dist/client/_nuxt/code-diff-cb7twqkt.js +8 -0
  17. package/dist/client/_nuxt/code-snippets-ho13b87l.js +1 -0
  18. package/dist/client/_nuxt/components-peth8amc.js +1 -0
  19. package/dist/client/_nuxt/composable-item-b09pj4ca.js +1 -0
  20. package/dist/client/_nuxt/custom-_name_-lfwzilnd.js +1 -0
  21. package/dist/client/_nuxt/data-schema-button-ke4komn6.js +1 -0
  22. package/dist/client/_nuxt/data-schema-drawer-dqe6w00i.js +2 -0
  23. package/dist/client/_nuxt/debug-itzra6gt.js +1 -0
  24. package/dist/client/_nuxt/default-bunv5fnq.js +1 -0
  25. package/dist/client/_nuxt/dev-auth-j4vxv6a1.js +1 -0
  26. package/dist/client/_nuxt/dist-duc3zu0y.js +1 -0
  27. package/dist/client/_nuxt/dist-mnod32r1.js +1 -0
  28. package/dist/client/_nuxt/{duration-display-dhj2ifr1.js → duration-display-20xlusue.js} +1 -1
  29. package/dist/client/_nuxt/{entry.css-gx482m17.css → entry.css-ckq2wff8.css} +1 -1
  30. package/dist/client/_nuxt/error-404-c73bftho.js +1 -0
  31. package/dist/client/_nuxt/error-404.css-pazrj6fo.css +1 -0
  32. package/dist/client/_nuxt/error-500-75llnfh8.js +1 -0
  33. package/dist/client/_nuxt/error-500.css-hlldh6hu.css +1 -0
  34. package/dist/client/_nuxt/error-isnb18yz.js +9 -0
  35. package/dist/client/_nuxt/filepath-item-fnp9jxof.js +1 -0
  36. package/dist/client/_nuxt/full-h8pokapo.js +1 -0
  37. package/dist/client/_nuxt/head-c2jgvqd9.js +1 -0
  38. package/dist/client/_nuxt/help-fab-oc1qudll.js +1 -0
  39. package/dist/client/_nuxt/hooks-i5p6cuw0.js +1 -0
  40. package/dist/client/_nuxt/imports-ia8eldh8.js +1 -0
  41. package/dist/client/_nuxt/l471sqq0.js +4 -0
  42. package/dist/client/_nuxt/launch-page-kf0w74wk.js +1 -0
  43. package/dist/client/_nuxt/modules-obwfskfp.js +1 -0
  44. package/dist/client/_nuxt/nbadge-hpznun17.js +1 -0
  45. package/dist/client/_nuxt/nbutton-oi1rfqiz.js +1 -0
  46. package/dist/client/_nuxt/ncard-ech06vlh.js +1 -0
  47. package/dist/client/_nuxt/ncheckbox-k9nxqa1w.js +1 -0
  48. package/dist/client/_nuxt/{ncode-block-j2hcqwrp.js → ncode-block-coc4sua0.js} +1 -1
  49. package/dist/client/_nuxt/ndrawer-ijwn9421.js +1 -0
  50. package/dist/client/_nuxt/ndropdown-moy416uy.js +1 -0
  51. package/dist/client/_nuxt/nicon-m5br9nvg.js +1 -0
  52. package/dist/client/_nuxt/{nicon-title-hrj2h1mn.js → nicon-title-e35pdr21.js} +1 -1
  53. package/dist/client/_nuxt/nlink-dmk2d6qc.js +1 -0
  54. package/dist/client/_nuxt/{nmarkdown-ftmgc061.js → nmarkdown-nct1w6kn.js} +1 -1
  55. package/dist/client/_nuxt/nnavbar-n3j7iul1.js +1 -0
  56. package/dist/client/_nuxt/none-bs12srzp.js +1 -0
  57. package/dist/client/_nuxt/npanel-grids-bl37sfq7.js +1 -0
  58. package/dist/client/_nuxt/nsection-block-l0c6dpg8.js +1 -0
  59. package/dist/client/_nuxt/nselect-kgjpj17v.js +1 -0
  60. package/dist/client/_nuxt/nselect-tabs-if6er1us.js +1 -0
  61. package/dist/client/_nuxt/nswitch-b36trghq.js +1 -0
  62. package/dist/client/_nuxt/ntext-input-ngomk0u2.js +1 -0
  63. package/dist/client/_nuxt/nuxt-bfozs29x.js +1 -0
  64. package/dist/client/_nuxt/nuxt-link-mev16ngd.js +1 -0
  65. package/dist/client/_nuxt/open-graph-m7wd1sxi.js +3 -0
  66. package/dist/client/_nuxt/overview-dbrpdvvy.js +1 -0
  67. package/dist/client/_nuxt/pages-gnfgydad.js +1 -0
  68. package/dist/client/_nuxt/pages-izgjpbm4.js +1 -0
  69. package/dist/client/_nuxt/payload-hc17espa.js +1 -0
  70. package/dist/client/_nuxt/pinia-ns87k5yi.js +1 -0
  71. package/dist/client/_nuxt/plugins-mswypwe4.js +1 -0
  72. package/dist/client/_nuxt/ready-szdlhgcr.js +1 -0
  73. package/dist/client/_nuxt/render-tree-hec27xi7.js +1 -0
  74. package/dist/client/_nuxt/runtime-configs-chx5ggf0.js +1 -0
  75. package/dist/client/_nuxt/server-discovery-cjcj8emm.js +1 -0
  76. package/dist/client/_nuxt/server-route-inputs-lqwnul2k.js +1 -0
  77. package/dist/client/_nuxt/server-routes-e0uqj8di.js +7 -0
  78. package/dist/client/_nuxt/server-tasks-izz5mcrk.js +1 -0
  79. package/dist/client/_nuxt/settings-dhxjcakv.js +1 -0
  80. package/dist/client/_nuxt/splitpanes.es-ceqv8417.js +1 -0
  81. package/dist/client/_nuxt/stacktrace-list-m1sv2uvd.js +1 -0
  82. package/dist/client/_nuxt/state-components-mnfvrbtw.js +1 -0
  83. package/dist/client/_nuxt/state-dkywakbf.js +1 -0
  84. package/dist/client/_nuxt/state-editor-epijodsw.js +1 -0
  85. package/dist/client/_nuxt/state-modules-ehax0fup.js +1 -0
  86. package/dist/client/_nuxt/state-routes-m6gv5n9v.js +1 -0
  87. package/dist/client/_nuxt/state-tabs-mo8r9nzk.js +1 -0
  88. package/dist/client/_nuxt/storage-hdyfvofj.js +1 -0
  89. package/dist/client/_nuxt/storage-options-owy2vf04.js +1 -0
  90. package/dist/client/_nuxt/telemetry-bagjjni2.js +1 -0
  91. package/dist/client/_nuxt/terminals-hem69799.js +1 -0
  92. package/dist/client/_nuxt/timeline-luryae8h.js +31 -0
  93. package/dist/client/_nuxt/unocss-runtime-jcr8lucj.js +1 -0
  94. package/dist/client/_nuxt/vendor/{json-editor-vue-ddj4xtqm.js → json-editor-vue-hkofgjf7.js} +4 -4
  95. package/dist/client/_nuxt/vendor/{markdown-it-ew3lvn5m.js → markdown-it-bcxn77q6.js} +1 -1
  96. package/dist/client/_nuxt/vendor/shiki-niqic03h.js +153 -0
  97. package/dist/client/_nuxt/vendor/unocss-bj3ln324.js +3 -0
  98. package/dist/client/_nuxt/vendor/unocss.css-3gd0e2sv.css +1 -0
  99. package/dist/client/_nuxt/vendor/{vis-ccj7spt3.js → vis-id8udisj.js} +1 -1
  100. package/dist/client/_nuxt/virtual-files-o2l5arel.js +1 -0
  101. package/dist/client/_nuxt/vue-devtools-na2nb82m.js +3 -0
  102. package/dist/client/_nuxt/vue-router-dxks01bs.js +1 -0
  103. package/dist/client/_nuxt/{vue-virtual-scroller.esm-il5noocm.js → vue-virtual-scroller.esm-d0igfpwe.js} +1 -1
  104. package/dist/client/index.html +1 -1
  105. package/dist/dirs.mjs +2 -1
  106. package/dist/module.json +1 -1
  107. package/dist/runtime/plugins/view/client.js +2 -1
  108. package/dist/webcomponents/index.mjs +18 -13
  109. package/package.json +27 -27
  110. package/dist/client/_nuxt/__blank-may67yna.js +0 -1
  111. package/dist/client/_nuxt/analyze-build-ezjae6pi.js +0 -1
  112. package/dist/client/_nuxt/assets-cctzmb3x.js +0 -6
  113. package/dist/client/_nuxt/builds/meta/aeb4c219-e4e8-40ef-9d2c-5e42c7648ec5.json +0 -1
  114. package/dist/client/_nuxt/code-diff-dj5abiya.js +0 -8
  115. package/dist/client/_nuxt/code-snippets-cgl6wpax.js +0 -1
  116. package/dist/client/_nuxt/components-gbus3qqv.js +0 -1
  117. package/dist/client/_nuxt/composable-item-gs2iudn4.js +0 -1
  118. package/dist/client/_nuxt/custom-_name_-m936a9yu.js +0 -1
  119. package/dist/client/_nuxt/data-schema-button-j6fxaw99.js +0 -1
  120. package/dist/client/_nuxt/data-schema-drawer-it2972mk.js +0 -2
  121. package/dist/client/_nuxt/debug-i1rscwhu.js +0 -1
  122. package/dist/client/_nuxt/default-fb125qds.js +0 -1
  123. package/dist/client/_nuxt/dist-joij2tdx.js +0 -1
  124. package/dist/client/_nuxt/error-404-m8kh5nuw.js +0 -1
  125. package/dist/client/_nuxt/error-404.css-hvuilq4i.css +0 -1
  126. package/dist/client/_nuxt/error-500-h85n6r14.js +0 -1
  127. package/dist/client/_nuxt/error-500.css-jc8udnlk.css +0 -1
  128. package/dist/client/_nuxt/error-l968gtru.js +0 -9
  129. package/dist/client/_nuxt/filepath-item-osqp88cx.js +0 -1
  130. package/dist/client/_nuxt/full-odhn7e61.js +0 -1
  131. package/dist/client/_nuxt/help-fab-bhtk9hzf.js +0 -1
  132. package/dist/client/_nuxt/hooks-hkx6shiy.js +0 -1
  133. package/dist/client/_nuxt/imports-nbrcx3j5.js +0 -1
  134. package/dist/client/_nuxt/launch-page-fyevedb0.js +0 -1
  135. package/dist/client/_nuxt/modules-kh9xciqf.js +0 -1
  136. package/dist/client/_nuxt/nbadge-ijsj8fjy.js +0 -1
  137. package/dist/client/_nuxt/ncheckbox-f4a8016e.js +0 -1
  138. package/dist/client/_nuxt/ndrawer-lh0r2gbb.js +0 -1
  139. package/dist/client/_nuxt/ndropdown-ef0253xr.js +0 -1
  140. package/dist/client/_nuxt/nlink-bsck6xne.js +0 -1
  141. package/dist/client/_nuxt/nnavbar-fdsyxwr6.js +0 -1
  142. package/dist/client/_nuxt/none-kpcjhluv.js +0 -1
  143. package/dist/client/_nuxt/nsection-block-kp1wt3o4.js +0 -1
  144. package/dist/client/_nuxt/nselect-cmll6q59.js +0 -1
  145. package/dist/client/_nuxt/nselect-tabs-dueuo8rw.js +0 -1
  146. package/dist/client/_nuxt/nswitch-gqy4bgn3.js +0 -1
  147. package/dist/client/_nuxt/open-graph-ol89f0bf.js +0 -3
  148. package/dist/client/_nuxt/overview-cd40uq12.js +0 -1
  149. package/dist/client/_nuxt/owfrwikl.js +0 -4
  150. package/dist/client/_nuxt/pages-bbrpp8du.js +0 -1
  151. package/dist/client/_nuxt/pages-cry23sym.js +0 -1
  152. package/dist/client/_nuxt/payload-bhrm3gbm.js +0 -1
  153. package/dist/client/_nuxt/pinia-bcnuwvzr.js +0 -1
  154. package/dist/client/_nuxt/plugins-k9rqnu6h.js +0 -1
  155. package/dist/client/_nuxt/render-tree-fd08tpf3.js +0 -1
  156. package/dist/client/_nuxt/runtime-configs-kagn8z75.js +0 -1
  157. package/dist/client/_nuxt/server-discovery-ja6p66g6.js +0 -1
  158. package/dist/client/_nuxt/server-route-inputs-b6nweyxn.js +0 -1
  159. package/dist/client/_nuxt/server-routes-dtwlhsgf.js +0 -7
  160. package/dist/client/_nuxt/server-tasks-lboebplp.js +0 -1
  161. package/dist/client/_nuxt/settings-joqzffm3.js +0 -1
  162. package/dist/client/_nuxt/stacktrace-list-mphoqupg.js +0 -1
  163. package/dist/client/_nuxt/state-components-b5shg9ni.js +0 -1
  164. package/dist/client/_nuxt/state-editor-gc0bkewv.js +0 -1
  165. package/dist/client/_nuxt/state-modules-e2s3wq2g.js +0 -1
  166. package/dist/client/_nuxt/storage-m3jg7c3a.js +0 -1
  167. package/dist/client/_nuxt/terminals-hsjdjxac.js +0 -1
  168. package/dist/client/_nuxt/timeline-nn4tvvo6.js +0 -31
  169. package/dist/client/_nuxt/unocss-runtime-cyizum7d.js +0 -1
  170. package/dist/client/_nuxt/vendor/shiki-kunkft64.js +0 -152
  171. package/dist/client/_nuxt/vendor/unocss-f9yt86gg.js +0 -3
  172. package/dist/client/_nuxt/virtual-files-ds4udxjo.js +0 -1
  173. package/dist/client/_nuxt/vue-devtools-hovopvyk.js +0 -3
  174. /package/dist/client/_nuxt/{color-k274hmrf.js → color-b9xoe9j2.js} +0 -0
  175. /package/dist/client/_nuxt/{composables-g8w9dpc0.js → composables-cwesk2q8.js} +0 -0
  176. /package/dist/client/_nuxt/{constants-i6giw94a.js → constants-lof1c7kz.js} +0 -0
  177. /package/dist/client/_nuxt/{dist-k9rc0n5t.js → dist-m49wlq01.js} +0 -0
  178. /package/dist/client/_nuxt/vendor/{quicktype-core-f78dz8oi.js → quicktype-core-f8dnflnv.js} +0 -0
  179. /package/dist/client/_nuxt/vendor/{xterm-b39oya8c.js → xterm-ed0pys2e.js} +0 -0
@@ -22,7 +22,7 @@ import { setupHooksDebug } from '../../dist/runtime/shared/hooks.js';
22
22
  import process$1 from 'node:process';
23
23
  import { builtinModules, createRequire } from 'node:module';
24
24
  import { resolvePackageJSON, readPackageJSON } from 'pkg-types';
25
- import { fileURLToPath as fileURLToPath$1, pathToFileURL as pathToFileURL$1, URL as URL$1 } from 'node:url';
25
+ import { fileURLToPath as fileURLToPath$1, pathToFileURL as pathToFileURL$1 } from 'node:url';
26
26
  import assert from 'node:assert';
27
27
  import v8 from 'node:v8';
28
28
  import { format, inspect } from 'node:util';
@@ -32,8 +32,9 @@ import { parseModule } from 'magicast';
32
32
  import { getDefaultExportOptions, addNuxtModule } from 'magicast/helpers';
33
33
  import { detectPackageManager } from 'nypm';
34
34
  import semver from 'semver';
35
+ import { normalizeBaseKey, normalizeKey } from 'unstorage';
35
36
 
36
- const version$1 = "3.2.1";
37
+ const version$1 = "3.2.3";
37
38
 
38
39
  const urlAlphabet = "useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";
39
40
  function randomStr(size = 16, dict = urlAlphabet) {
@@ -118,6 +119,7 @@ async function getDevAuthToken() {
118
119
  return token;
119
120
  }
120
121
 
122
+ const COLON_RE = /:/g;
121
123
  function setupAnalyzeBuildRPC({ nuxt, refresh, ensureDevAuthToken }) {
122
124
  let builds = [];
123
125
  let promise;
@@ -196,7 +198,7 @@ function setupAnalyzeBuildRPC({ nuxt, refresh, ensureDevAuthToken }) {
196
198
  return `${branchName}#${sha}`;
197
199
  return `${branchName}#${sha}-dirty`;
198
200
  } catch {
199
- return (/* @__PURE__ */ new Date()).toISOString().replace(/:/g, "-");
201
+ return (/* @__PURE__ */ new Date()).toISOString().replace(COLON_RE, "-");
200
202
  }
201
203
  }
202
204
  return {
@@ -478,16 +480,16 @@ function snakeCase(str) {
478
480
  }
479
481
 
480
482
  // This file was generated. Do not modify manually!
481
- var astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 7, 9, 32, 4, 318, 1, 80, 3, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 68, 8, 2, 0, 3, 0, 2, 3, 2, 4, 2, 0, 15, 1, 83, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 7, 19, 58, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 343, 9, 54, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 10, 5350, 0, 7, 14, 11465, 27, 2343, 9, 87, 9, 39, 4, 60, 6, 26, 9, 535, 9, 470, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4178, 9, 519, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 245, 1, 2, 9, 726, 6, 110, 6, 6, 9, 4759, 9, 787719, 239];
483
+ var astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 7, 9, 32, 4, 318, 1, 78, 5, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 68, 8, 2, 0, 3, 0, 2, 3, 2, 4, 2, 0, 15, 1, 83, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 7, 19, 58, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 199, 7, 137, 9, 54, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 55, 9, 266, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 10, 5350, 0, 7, 14, 11465, 27, 2343, 9, 87, 9, 39, 4, 60, 6, 26, 9, 535, 9, 470, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4178, 9, 519, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 245, 1, 2, 9, 233, 0, 3, 0, 8, 1, 6, 0, 475, 6, 110, 6, 6, 9, 4759, 9, 787719, 239];
482
484
 
483
485
  // This file was generated. Do not modify manually!
484
- var astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 4, 51, 13, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 39, 27, 10, 22, 251, 41, 7, 1, 17, 2, 60, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 31, 9, 2, 0, 3, 0, 2, 37, 2, 0, 26, 0, 2, 0, 45, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 200, 32, 32, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 26, 3994, 6, 582, 6842, 29, 1763, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 433, 44, 212, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 42, 9, 8936, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 229, 29, 3, 0, 496, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4153, 7, 221, 3, 5761, 15, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 4191];
486
+ var astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 4, 51, 13, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 7, 25, 39, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 39, 27, 10, 22, 251, 41, 7, 1, 17, 5, 57, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 31, 9, 2, 0, 3, 0, 2, 37, 2, 0, 26, 0, 2, 0, 45, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 200, 32, 32, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 24, 43, 261, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 26, 3994, 6, 582, 6842, 29, 1763, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 433, 44, 212, 63, 33, 24, 3, 24, 45, 74, 6, 0, 67, 12, 65, 1, 2, 0, 15, 4, 10, 7381, 42, 31, 98, 114, 8702, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 229, 29, 3, 0, 208, 30, 2, 2, 2, 1, 2, 6, 3, 4, 10, 1, 225, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4381, 3, 5773, 3, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 8489];
485
487
 
486
488
  // This file was generated. Do not modify manually!
487
- var nonASCIIidentifierChars = "\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0897-\u089f\u08ca-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3c\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0cf3\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ece\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u180f-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf-\u1ace\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1dff\u200c\u200d\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\u30fb\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f\uff65";
489
+ var nonASCIIidentifierChars = "\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0897-\u089f\u08ca-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3c\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0cf3\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ece\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u180f-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf-\u1add\u1ae0-\u1aeb\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1dff\u200c\u200d\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\u30fb\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f\uff65";
488
490
 
489
491
  // This file was generated. Do not modify manually!
490
- var nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u0870-\u0887\u0889-\u088e\u08a0-\u08c9\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u1711\u171f-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4c\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c8a\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7cd\ua7d0\ua7d1\ua7d3\ua7d5-\ua7dc\ua7f2-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc";
492
+ var nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u0870-\u0887\u0889-\u088f\u08a0-\u08c9\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c5c\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdc-\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u1711\u171f-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4c\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c8a\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7dc\ua7f1-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc";
491
493
 
492
494
  // These are a run-length and offset encoded representation of the
493
495
  // >0xffff code points that are a valid part of identifiers. The
@@ -812,7 +814,7 @@ var defaultOptions = {
812
814
  // for new syntax features.
813
815
  ecmaVersion: null,
814
816
  // `sourceType` indicates the mode the code should be parsed in.
815
- // Can be either `"script"` or `"module"`. This influences global
817
+ // Can be either `"script"`, `"module"` or `"commonjs"`. This influences global
816
818
  // strict mode and parsing of `import` and `export` declarations.
817
819
  sourceType: "script",
818
820
  // `onInsertedSemicolon` can be a callback that will be called when
@@ -936,6 +938,9 @@ function getOptions$1(opts) {
936
938
  if (isArray(options.onComment))
937
939
  { options.onComment = pushComment(options, options.onComment); }
938
940
 
941
+ if (options.sourceType === "commonjs" && options.allowAwaitOutsideFunction)
942
+ { throw new Error("Cannot use allowAwaitOutsideFunction with sourceType: commonjs") }
943
+
939
944
  return options
940
945
  }
941
946
 
@@ -967,6 +972,7 @@ var
967
972
  SCOPE_DIRECT_SUPER = 128,
968
973
  SCOPE_CLASS_STATIC_BLOCK = 256,
969
974
  SCOPE_CLASS_FIELD_INIT = 512,
975
+ SCOPE_SWITCH = 1024,
970
976
  SCOPE_VAR = SCOPE_TOP | SCOPE_FUNCTION | SCOPE_CLASS_STATIC_BLOCK;
971
977
 
972
978
  function functionFlags(async, generator) {
@@ -1056,7 +1062,12 @@ var Parser = function Parser(options, input, startPos) {
1056
1062
 
1057
1063
  // Scope tracking for duplicate variable names (see scope.js)
1058
1064
  this.scopeStack = [];
1059
- this.enterScope(SCOPE_TOP);
1065
+ this.enterScope(
1066
+ this.options.sourceType === "commonjs"
1067
+ // In commonjs, the top-level scope behaves like a function scope
1068
+ ? SCOPE_FUNCTION
1069
+ : SCOPE_TOP
1070
+ );
1060
1071
 
1061
1072
  // For RegExp validation
1062
1073
  this.regexpState = null;
@@ -1067,7 +1078,7 @@ var Parser = function Parser(options, input, startPos) {
1067
1078
  this.privateNameStack = [];
1068
1079
  };
1069
1080
 
1070
- var prototypeAccessors = { inFunction: { configurable: true },inGenerator: { configurable: true },inAsync: { configurable: true },canAwait: { configurable: true },allowSuper: { configurable: true },allowDirectSuper: { configurable: true },treatFunctionsAsVar: { configurable: true },allowNewDotTarget: { configurable: true },inClassStaticBlock: { configurable: true } };
1081
+ var prototypeAccessors = { inFunction: { configurable: true },inGenerator: { configurable: true },inAsync: { configurable: true },canAwait: { configurable: true },allowReturn: { configurable: true },allowSuper: { configurable: true },allowDirectSuper: { configurable: true },treatFunctionsAsVar: { configurable: true },allowNewDotTarget: { configurable: true },allowUsing: { configurable: true },inClassStaticBlock: { configurable: true } };
1071
1082
 
1072
1083
  Parser.prototype.parse = function parse () {
1073
1084
  var node = this.options.program || this.startNode();
@@ -1091,6 +1102,12 @@ prototypeAccessors.canAwait.get = function () {
1091
1102
  return (this.inModule && this.options.ecmaVersion >= 13) || this.options.allowAwaitOutsideFunction
1092
1103
  };
1093
1104
 
1105
+ prototypeAccessors.allowReturn.get = function () {
1106
+ if (this.inFunction) { return true }
1107
+ if (this.options.allowReturnOutsideFunction && this.currentVarScope().flags & SCOPE_TOP) { return true }
1108
+ return false
1109
+ };
1110
+
1094
1111
  prototypeAccessors.allowSuper.get = function () {
1095
1112
  var ref = this.currentThisScope();
1096
1113
  var flags = ref.flags;
@@ -1111,6 +1128,14 @@ prototypeAccessors.allowNewDotTarget.get = function () {
1111
1128
  return false
1112
1129
  };
1113
1130
 
1131
+ prototypeAccessors.allowUsing.get = function () {
1132
+ var ref = this.currentScope();
1133
+ var flags = ref.flags;
1134
+ if (flags & SCOPE_SWITCH) { return false }
1135
+ if (!this.inModule && flags & SCOPE_TOP) { return false }
1136
+ return true
1137
+ };
1138
+
1114
1139
  prototypeAccessors.inClassStaticBlock.get = function () {
1115
1140
  return (this.currentVarScope().flags & SCOPE_CLASS_STATIC_BLOCK) > 0
1116
1141
  };
@@ -1315,7 +1340,7 @@ pp$8.parseTopLevel = function(node) {
1315
1340
  } }
1316
1341
  this.adaptDirectivePrologue(node.body);
1317
1342
  this.next();
1318
- node.sourceType = this.options.sourceType;
1343
+ node.sourceType = this.options.sourceType === "commonjs" ? "script" : this.options.sourceType;
1319
1344
  return this.finishNode(node, "Program")
1320
1345
  };
1321
1346
 
@@ -1325,7 +1350,7 @@ pp$8.isLet = function(context) {
1325
1350
  if (this.options.ecmaVersion < 6 || !this.isContextual("let")) { return false }
1326
1351
  skipWhiteSpace.lastIndex = this.pos;
1327
1352
  var skip = skipWhiteSpace.exec(this.input);
1328
- var next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next);
1353
+ var next = this.pos + skip[0].length, nextCh = this.fullCharCodeAt(next);
1329
1354
  // For ambiguous cases, determine if a LexicalDeclaration (or only a
1330
1355
  // Statement) is allowed here. If context is not empty then only a Statement
1331
1356
  // is allowed. However, `let [` is an explicit negative lookahead for
@@ -1333,12 +1358,13 @@ pp$8.isLet = function(context) {
1333
1358
  if (nextCh === 91 || nextCh === 92) { return true } // '[', '\'
1334
1359
  if (context) { return false }
1335
1360
 
1336
- if (nextCh === 123 || nextCh > 0xd7ff && nextCh < 0xdc00) { return true } // '{', astral
1337
- if (isIdentifierStart(nextCh, true)) {
1338
- var pos = next + 1;
1339
- while (isIdentifierChar(nextCh = this.input.charCodeAt(pos), true)) { ++pos; }
1340
- if (nextCh === 92 || nextCh > 0xd7ff && nextCh < 0xdc00) { return true }
1341
- var ident = this.input.slice(next, pos);
1361
+ if (nextCh === 123) { return true } // '{'
1362
+ if (isIdentifierStart(nextCh)) {
1363
+ var start = next;
1364
+ do { next += nextCh <= 0xffff ? 1 : 2; }
1365
+ while (isIdentifierChar(nextCh = this.fullCharCodeAt(next)))
1366
+ if (nextCh === 92) { return true }
1367
+ var ident = this.input.slice(start, next);
1342
1368
  if (!keywordRelationalOperator.test(ident)) { return true }
1343
1369
  }
1344
1370
  return false
@@ -1357,7 +1383,7 @@ pp$8.isAsyncFunction = function() {
1357
1383
  return !lineBreak.test(this.input.slice(this.pos, next)) &&
1358
1384
  this.input.slice(next, next + 8) === "function" &&
1359
1385
  (next + 8 === this.input.length ||
1360
- !(isIdentifierChar(after = this.input.charCodeAt(next + 8)) || after > 0xd7ff && after < 0xdc00))
1386
+ !(isIdentifierChar(after = this.fullCharCodeAt(next + 8)) || after === 92 /* '\' */))
1361
1387
  };
1362
1388
 
1363
1389
  pp$8.isUsingKeyword = function(isAwaitUsing, isFor) {
@@ -1371,28 +1397,28 @@ pp$8.isUsingKeyword = function(isAwaitUsing, isFor) {
1371
1397
  if (lineBreak.test(this.input.slice(this.pos, next))) { return false }
1372
1398
 
1373
1399
  if (isAwaitUsing) {
1374
- var awaitEndPos = next + 5 /* await */, after;
1375
- if (this.input.slice(next, awaitEndPos) !== "using" ||
1376
- awaitEndPos === this.input.length ||
1377
- isIdentifierChar(after = this.input.charCodeAt(awaitEndPos)) ||
1378
- (after > 0xd7ff && after < 0xdc00)
1400
+ var usingEndPos = next + 5 /* using */, after;
1401
+ if (this.input.slice(next, usingEndPos) !== "using" ||
1402
+ usingEndPos === this.input.length ||
1403
+ isIdentifierChar(after = this.fullCharCodeAt(usingEndPos)) ||
1404
+ after === 92 /* '\' */
1379
1405
  ) { return false }
1380
1406
 
1381
- skipWhiteSpace.lastIndex = awaitEndPos;
1407
+ skipWhiteSpace.lastIndex = usingEndPos;
1382
1408
  var skipAfterUsing = skipWhiteSpace.exec(this.input);
1383
- if (skipAfterUsing && lineBreak.test(this.input.slice(awaitEndPos, awaitEndPos + skipAfterUsing[0].length))) { return false }
1384
- }
1385
-
1386
- if (isFor) {
1387
- var ofEndPos = next + 2 /* of */, after$1;
1388
- if (this.input.slice(next, ofEndPos) === "of") {
1389
- if (ofEndPos === this.input.length ||
1390
- (!isIdentifierChar(after$1 = this.input.charCodeAt(ofEndPos)) && !(after$1 > 0xd7ff && after$1 < 0xdc00))) { return false }
1391
- }
1392
- }
1393
-
1394
- var ch = this.input.charCodeAt(next);
1395
- return isIdentifierStart(ch, true) || ch === 92 // '\'
1409
+ next = usingEndPos + skipAfterUsing[0].length;
1410
+ if (skipAfterUsing && lineBreak.test(this.input.slice(usingEndPos, next))) { return false }
1411
+ }
1412
+
1413
+ var ch = this.fullCharCodeAt(next);
1414
+ if (!isIdentifierStart(ch) && ch !== 92 /* '\' */) { return false }
1415
+ var idStart = next;
1416
+ do { next += ch <= 0xffff ? 1 : 2; }
1417
+ while (isIdentifierChar(ch = this.fullCharCodeAt(next)))
1418
+ if (ch === 92) { return true }
1419
+ var id = this.input.slice(idStart, next);
1420
+ if (keywordRelationalOperator.test(id) || isFor && id === "of") { return false }
1421
+ return true
1396
1422
  };
1397
1423
 
1398
1424
  pp$8.isAwaitUsing = function(isFor) {
@@ -1481,8 +1507,8 @@ pp$8.parseStatement = function(context, topLevel, exports$1) {
1481
1507
 
1482
1508
  var usingKind = this.isAwaitUsing(false) ? "await using" : this.isUsing(false) ? "using" : null;
1483
1509
  if (usingKind) {
1484
- if (topLevel && this.options.sourceType === "script") {
1485
- this.raise(this.start, "Using declaration cannot appear in the top level when source type is `script`");
1510
+ if (!this.allowUsing) {
1511
+ this.raise(this.start, "Using declaration cannot appear in the top level when source type is `script` or in the bare case statement");
1486
1512
  }
1487
1513
  if (usingKind === "await using") {
1488
1514
  if (!this.canAwait) {
@@ -1579,7 +1605,12 @@ pp$8.parseForStatement = function(node) {
1579
1605
  if (usingKind) {
1580
1606
  var init$2 = this.startNode();
1581
1607
  this.next();
1582
- if (usingKind === "await using") { this.next(); }
1608
+ if (usingKind === "await using") {
1609
+ if (!this.canAwait) {
1610
+ this.raise(this.start, "Await using cannot appear outside of async function");
1611
+ }
1612
+ this.next();
1613
+ }
1583
1614
  this.parseVar(init$2, true, usingKind);
1584
1615
  this.finishNode(init$2, "VariableDeclaration");
1585
1616
  return this.parseForAfterInit(node, init$2, awaitAt)
@@ -1638,7 +1669,7 @@ pp$8.parseIfStatement = function(node) {
1638
1669
  };
1639
1670
 
1640
1671
  pp$8.parseReturnStatement = function(node) {
1641
- if (!this.inFunction && !this.options.allowReturnOutsideFunction)
1672
+ if (!this.allowReturn)
1642
1673
  { this.raise(this.start, "'return' outside of function"); }
1643
1674
  this.next();
1644
1675
 
@@ -1657,7 +1688,7 @@ pp$8.parseSwitchStatement = function(node) {
1657
1688
  node.cases = [];
1658
1689
  this.expect(types$1.braceL);
1659
1690
  this.labels.push(switchLabel);
1660
- this.enterScope(0);
1691
+ this.enterScope(SCOPE_SWITCH);
1661
1692
 
1662
1693
  // Statements under must be grouped (by label) in SwitchCase
1663
1694
  // nodes. `cur` is used to keep the node that we are currently
@@ -4365,7 +4396,7 @@ pp$2.copyNode = function(node) {
4365
4396
  };
4366
4397
 
4367
4398
  // This file was generated by "bin/generate-unicode-script-values.js". Do not modify manually!
4368
- var scriptValuesAddedInUnicode = "Gara Garay Gukh Gurung_Khema Hrkt Katakana_Or_Hiragana Kawi Kirat_Rai Krai Nag_Mundari Nagm Ol_Onal Onao Sunu Sunuwar Todhri Todr Tulu_Tigalari Tutg Unknown Zzzz";
4399
+ var scriptValuesAddedInUnicode = "Berf Beria_Erfe Gara Garay Gukh Gurung_Khema Hrkt Katakana_Or_Hiragana Kawi Kirat_Rai Krai Nag_Mundari Nagm Ol_Onal Onao Sidetic Sidt Sunu Sunuwar Tai_Yo Tayo Todhri Todr Tolong_Siki Tols Tulu_Tigalari Tutg Unknown Zzzz";
4369
4400
 
4370
4401
  // This file contains Unicode properties extracted from the ECMAScript specification.
4371
4402
  // The lists are extracted like so:
@@ -5926,13 +5957,17 @@ pp.readToken = function(code) {
5926
5957
  return this.getTokenFromCode(code)
5927
5958
  };
5928
5959
 
5929
- pp.fullCharCodeAtPos = function() {
5930
- var code = this.input.charCodeAt(this.pos);
5960
+ pp.fullCharCodeAt = function(pos) {
5961
+ var code = this.input.charCodeAt(pos);
5931
5962
  if (code <= 0xd7ff || code >= 0xdc00) { return code }
5932
- var next = this.input.charCodeAt(this.pos + 1);
5963
+ var next = this.input.charCodeAt(pos + 1);
5933
5964
  return next <= 0xdbff || next >= 0xe000 ? code : (code << 10) + next - 0x35fdc00
5934
5965
  };
5935
5966
 
5967
+ pp.fullCharCodeAtPos = function() {
5968
+ return this.fullCharCodeAt(this.pos)
5969
+ };
5970
+
5936
5971
  pp.skipBlockComment = function() {
5937
5972
  var startLoc = this.options.onComment && this.curPosition();
5938
5973
  var start = this.pos, end = this.input.indexOf("*/", this.pos += 2);
@@ -6660,7 +6695,7 @@ pp.readWord = function() {
6660
6695
  // [ghbt]: https://github.com/acornjs/acorn/issues
6661
6696
 
6662
6697
 
6663
- var version = "8.15.0";
6698
+ var version = "8.16.0";
6664
6699
 
6665
6700
  Parser.acorn = {
6666
6701
  Parser: Parser,
@@ -6966,7 +7001,7 @@ codes.ERR_INVALID_ARG_TYPE = createError(
6966
7001
  * @param {unknown} actual
6967
7002
  */
6968
7003
  (name, expected, actual) => {
6969
- assert(typeof name === 'string', "'name' must be a string");
7004
+ assert.ok(typeof name === 'string', "'name' must be a string");
6970
7005
  if (!Array.isArray(expected)) {
6971
7006
  expected = [expected];
6972
7007
  }
@@ -6990,7 +7025,7 @@ codes.ERR_INVALID_ARG_TYPE = createError(
6990
7025
  const other = [];
6991
7026
 
6992
7027
  for (const value of expected) {
6993
- assert(
7028
+ assert.ok(
6994
7029
  typeof value === 'string',
6995
7030
  'All expected entries have to be of type string'
6996
7031
  );
@@ -6998,7 +7033,7 @@ codes.ERR_INVALID_ARG_TYPE = createError(
6998
7033
  if (kTypes.has(value)) {
6999
7034
  types.push(value.toLowerCase());
7000
7035
  } else if (classRegExp.exec(value) === null) {
7001
- assert(
7036
+ assert.ok(
7002
7037
  value !== 'object',
7003
7038
  'The value "object" should be written as "Object"'
7004
7039
  );
@@ -7093,7 +7128,7 @@ codes.ERR_INVALID_PACKAGE_TARGET = createError(
7093
7128
  target.length > 0 &&
7094
7129
  !target.startsWith('./');
7095
7130
  if (key === '.') {
7096
- assert(isImport === false);
7131
+ assert.ok(isImport === false);
7097
7132
  return (
7098
7133
  `Invalid "exports" main target ${JSON.stringify(target)} defined ` +
7099
7134
  `in the package config ${packagePath}package.json${
@@ -7343,10 +7378,10 @@ const captureLargerStackTrace = hideStackFrames(
7343
7378
  */
7344
7379
  function getMessage(key, parameters, self) {
7345
7380
  const message = messages.get(key);
7346
- assert(message !== undefined, 'expected `message` to be found');
7381
+ assert.ok(message !== undefined, 'expected `message` to be found');
7347
7382
 
7348
7383
  if (typeof message === 'function') {
7349
- assert(
7384
+ assert.ok(
7350
7385
  message.length <= parameters.length, // Default options do not count.
7351
7386
  `Code: ${key}; The provided arguments length (${parameters.length}) does not ` +
7352
7387
  `match the required ones (${message.length}).`
@@ -7357,7 +7392,7 @@ function getMessage(key, parameters, self) {
7357
7392
  const regex = /%[dfijoOs]/g;
7358
7393
  let expectedLength = 0;
7359
7394
  while (regex.exec(message) !== null) expectedLength++;
7360
- assert(
7395
+ assert.ok(
7361
7396
  expectedLength === parameters.length,
7362
7397
  `Code: ${key}; The provided arguments length (${parameters.length}) does not ` +
7363
7398
  `match the required ones (${expectedLength}).`
@@ -7401,7 +7436,7 @@ function determineSpecificType(value) {
7401
7436
 
7402
7437
  // Manually “tree shaken” from:
7403
7438
  // <https://github.com/nodejs/node/blob/7c3dce0/lib/internal/modules/package_json_reader.js>
7404
- // Last checked on: Apr 29, 2023.
7439
+ // Last checked on: Apr 29, 2024.
7405
7440
  // Removed the native dependency.
7406
7441
  // Also: no need to cache, we do that in resolve already.
7407
7442
 
@@ -7560,7 +7595,7 @@ function getPackageType(url) {
7560
7595
 
7561
7596
  // Manually “tree shaken” from:
7562
7597
  // <https://github.com/nodejs/node/blob/7c3dce0/lib/internal/modules/esm/get_format.js>
7563
- // Last checked on: Apr 29, 2023.
7598
+ // Last checked on: Apr 29, 2024.
7564
7599
 
7565
7600
 
7566
7601
  const {ERR_UNKNOWN_FILE_EXTENSION} = codes;
@@ -7715,9 +7750,36 @@ function defaultGetFormatWithoutErrors(url, context) {
7715
7750
  return protocolHandlers[protocol](url, context, true) || null
7716
7751
  }
7717
7752
 
7753
+ // Manually “tree shaken” from:
7754
+ // <https://github.com/nodejs/node/blob/81a9a97/lib/internal/modules/esm/utils.js>
7755
+ // Last checked on: Apr 29, 2024.
7756
+
7757
+
7758
+ // In Node itself these values are populated from CLI arguments, before any
7759
+ // user code runs.
7760
+ // Here we just define the defaults.
7761
+ const DEFAULT_CONDITIONS = Object.freeze(['node', 'import']);
7762
+ const DEFAULT_CONDITIONS_SET$1 = new Set(DEFAULT_CONDITIONS);
7763
+
7764
+ /**
7765
+ * Returns the default conditions for ES module loading, as a Set.
7766
+ */
7767
+ function getDefaultConditionsSet() {
7768
+ return DEFAULT_CONDITIONS_SET$1
7769
+ }
7770
+
7771
+ /**
7772
+ * @param {Array<string>} [conditions]
7773
+ * @returns {Set<string>}
7774
+ */
7775
+ function getConditionsSet(conditions) {
7776
+
7777
+ return getDefaultConditionsSet()
7778
+ }
7779
+
7718
7780
  // Manually “tree shaken” from:
7719
7781
  // <https://github.com/nodejs/node/blob/81a9a97/lib/internal/modules/esm/resolve.js>
7720
- // Last checked on: Apr 29, 2023.
7782
+ // Last checked on: Apr 29, 2024.
7721
7783
 
7722
7784
 
7723
7785
  const RegExpPrototypeSymbolReplace = RegExp.prototype[Symbol.replace];
@@ -7805,7 +7867,7 @@ function emitLegacyIndexDeprecation(url, packageJsonUrl, base, main) {
7805
7867
  const format = defaultGetFormatWithoutErrors(url, {parentURL: base.href});
7806
7868
  if (format !== 'module') return
7807
7869
  const urlPath = fileURLToPath$1(url.href);
7808
- const packagePath = fileURLToPath$1(new URL$1('.', packageJsonUrl));
7870
+ const packagePath = fileURLToPath$1(new URL('.', packageJsonUrl));
7809
7871
  const basePath = fileURLToPath$1(base);
7810
7872
  if (!main) {
7811
7873
  process$1.emitWarning(
@@ -7871,7 +7933,7 @@ function legacyMainResolve(packageJsonUrl, packageConfig, base) {
7871
7933
  /** @type {URL | undefined} */
7872
7934
  let guess;
7873
7935
  if (packageConfig.main !== undefined) {
7874
- guess = new URL$1(packageConfig.main, packageJsonUrl);
7936
+ guess = new URL(packageConfig.main, packageJsonUrl);
7875
7937
  // Note: fs check redundances will be handled by Descriptor cache here.
7876
7938
  if (fileExists(guess)) return guess
7877
7939
 
@@ -7886,7 +7948,7 @@ function legacyMainResolve(packageJsonUrl, packageConfig, base) {
7886
7948
  let i = -1;
7887
7949
 
7888
7950
  while (++i < tries.length) {
7889
- guess = new URL$1(tries[i], packageJsonUrl);
7951
+ guess = new URL(tries[i], packageJsonUrl);
7890
7952
  if (fileExists(guess)) break
7891
7953
  guess = undefined;
7892
7954
  }
@@ -7907,7 +7969,7 @@ function legacyMainResolve(packageJsonUrl, packageConfig, base) {
7907
7969
  let i = -1;
7908
7970
 
7909
7971
  while (++i < tries.length) {
7910
- guess = new URL$1(tries[i], packageJsonUrl);
7972
+ guess = new URL(tries[i], packageJsonUrl);
7911
7973
  if (fileExists(guess)) break
7912
7974
  guess = undefined;
7913
7975
  }
@@ -7919,7 +7981,7 @@ function legacyMainResolve(packageJsonUrl, packageConfig, base) {
7919
7981
 
7920
7982
  // Not found.
7921
7983
  throw new ERR_MODULE_NOT_FOUND(
7922
- fileURLToPath$1(new URL$1('.', packageJsonUrl)),
7984
+ fileURLToPath$1(new URL('.', packageJsonUrl)),
7923
7985
  fileURLToPath$1(base)
7924
7986
  )
7925
7987
  }
@@ -7993,7 +8055,7 @@ function finalizeResolution(resolved, base, preserveSymlinks) {
7993
8055
  function importNotDefined(specifier, packageJsonUrl, base) {
7994
8056
  return new ERR_PACKAGE_IMPORT_NOT_DEFINED(
7995
8057
  specifier,
7996
- packageJsonUrl && fileURLToPath$1(new URL$1('.', packageJsonUrl)),
8058
+ packageJsonUrl && fileURLToPath$1(new URL('.', packageJsonUrl)),
7997
8059
  fileURLToPath$1(base)
7998
8060
  )
7999
8061
  }
@@ -8006,7 +8068,7 @@ function importNotDefined(specifier, packageJsonUrl, base) {
8006
8068
  */
8007
8069
  function exportsNotFound(subpath, packageJsonUrl, base) {
8008
8070
  return new ERR_PACKAGE_PATH_NOT_EXPORTED(
8009
- fileURLToPath$1(new URL$1('.', packageJsonUrl)),
8071
+ fileURLToPath$1(new URL('.', packageJsonUrl)),
8010
8072
  subpath,
8011
8073
  base && fileURLToPath$1(base)
8012
8074
  )
@@ -8046,7 +8108,7 @@ function invalidPackageTarget(subpath, target, packageJsonUrl, internal, base) {
8046
8108
  : `${target}`;
8047
8109
 
8048
8110
  return new ERR_INVALID_PACKAGE_TARGET(
8049
- fileURLToPath$1(new URL$1('.', packageJsonUrl)),
8111
+ fileURLToPath$1(new URL('.', packageJsonUrl)),
8050
8112
  subpath,
8051
8113
  target,
8052
8114
  internal,
@@ -8085,7 +8147,7 @@ function resolvePackageTargetString(
8085
8147
  let isURL = false;
8086
8148
 
8087
8149
  try {
8088
- new URL$1(target);
8150
+ new URL(target);
8089
8151
  isURL = true;
8090
8152
  } catch {
8091
8153
  // Continue regardless of error.
@@ -8135,9 +8197,9 @@ function resolvePackageTargetString(
8135
8197
  }
8136
8198
  }
8137
8199
 
8138
- const resolved = new URL$1(target, packageJsonUrl);
8200
+ const resolved = new URL(target, packageJsonUrl);
8139
8201
  const resolvedPath = resolved.pathname;
8140
- const packagePath = new URL$1('.', packageJsonUrl).pathname;
8202
+ const packagePath = new URL('.', packageJsonUrl).pathname;
8141
8203
 
8142
8204
  if (!resolvedPath.startsWith(packagePath))
8143
8205
  throw invalidPackageTarget(match, target, packageJsonUrl, internal, base)
@@ -8173,7 +8235,7 @@ function resolvePackageTargetString(
8173
8235
  }
8174
8236
 
8175
8237
  if (pattern) {
8176
- return new URL$1(
8238
+ return new URL(
8177
8239
  RegExpPrototypeSymbolReplace.call(
8178
8240
  patternRegEx,
8179
8241
  resolved.href,
@@ -8182,7 +8244,7 @@ function resolvePackageTargetString(
8182
8244
  )
8183
8245
  }
8184
8246
 
8185
- return new URL$1(subpath, resolved)
8247
+ return new URL(subpath, resolved)
8186
8248
  }
8187
8249
 
8188
8250
  /**
@@ -8661,7 +8723,7 @@ function parsePackageName(specifier, base) {
8661
8723
  */
8662
8724
  function packageResolve(specifier, base, conditions) {
8663
8725
  if (builtinModules.includes(specifier)) {
8664
- return new URL$1('node:' + specifier)
8726
+ return new URL('node:' + specifier)
8665
8727
  }
8666
8728
 
8667
8729
  const {packageName, packageSubpath, isScoped} = parsePackageName(
@@ -8691,7 +8753,7 @@ function packageResolve(specifier, base, conditions) {
8691
8753
  }
8692
8754
  }
8693
8755
 
8694
- let packageJsonUrl = new URL$1(
8756
+ let packageJsonUrl = new URL(
8695
8757
  './node_modules/' + packageName + '/package.json',
8696
8758
  base
8697
8759
  );
@@ -8702,7 +8764,7 @@ function packageResolve(specifier, base, conditions) {
8702
8764
  const stat = tryStatSync(packageJsonPath.slice(0, -13));
8703
8765
  if (!stat || !stat.isDirectory()) {
8704
8766
  lastPath = packageJsonPath;
8705
- packageJsonUrl = new URL$1(
8767
+ packageJsonUrl = new URL(
8706
8768
  (isScoped ? '../../../../node_modules/' : '../../../node_modules/') +
8707
8769
  packageName +
8708
8770
  '/package.json',
@@ -8728,7 +8790,7 @@ function packageResolve(specifier, base, conditions) {
8728
8790
  return legacyMainResolve(packageJsonUrl, packageConfig, base)
8729
8791
  }
8730
8792
 
8731
- return new URL$1(packageSubpath, packageJsonUrl)
8793
+ return new URL(packageSubpath, packageJsonUrl)
8732
8794
  // Cross-platform root check.
8733
8795
  } while (packageJsonPath.length !== lastPath.length)
8734
8796
 
@@ -8781,6 +8843,10 @@ function shouldBeTreatedAsRelativeOrAbsolutePath(specifier) {
8781
8843
  function moduleResolve(specifier, base, conditions, preserveSymlinks) {
8782
8844
  // Note: The Node code supports `base` as a string (in this internal API) too,
8783
8845
  // we don’t.
8846
+ if (conditions === undefined) {
8847
+ conditions = getConditionsSet();
8848
+ }
8849
+
8784
8850
  const protocol = base.protocol;
8785
8851
  const isData = protocol === 'data:';
8786
8852
  const isRemote = isData || protocol === 'http:' || protocol === 'https:';
@@ -8791,7 +8857,7 @@ function moduleResolve(specifier, base, conditions, preserveSymlinks) {
8791
8857
 
8792
8858
  if (shouldBeTreatedAsRelativeOrAbsolutePath(specifier)) {
8793
8859
  try {
8794
- resolved = new URL$1(specifier, base);
8860
+ resolved = new URL(specifier, base);
8795
8861
  } catch (error_) {
8796
8862
  const error = new ERR_UNSUPPORTED_RESOLVE_REQUEST(specifier, base);
8797
8863
  error.cause = error_;
@@ -8801,7 +8867,7 @@ function moduleResolve(specifier, base, conditions, preserveSymlinks) {
8801
8867
  resolved = packageImportsResolve(specifier, base, conditions);
8802
8868
  } else {
8803
8869
  try {
8804
- resolved = new URL$1(specifier);
8870
+ resolved = new URL(specifier);
8805
8871
  } catch (error_) {
8806
8872
  // Note: actual code uses `canBeRequiredWithoutScheme`.
8807
8873
  if (isRemote && !builtinModules.includes(specifier)) {
@@ -8814,7 +8880,7 @@ function moduleResolve(specifier, base, conditions, preserveSymlinks) {
8814
8880
  }
8815
8881
  }
8816
8882
 
8817
- assert(resolved !== undefined, 'expected to be defined');
8883
+ assert.ok(resolved !== undefined, 'expected to be defined');
8818
8884
 
8819
8885
  if (resolved.protocol !== 'file:') {
8820
8886
  return resolved
@@ -8966,6 +9032,60 @@ const EXPORT_STAR_RE = /\bexport\s*\*(?:\s*as\s+(?<name>[\w$]+)\s+)?\s*(?:\s*fro
8966
9032
  const EXPORT_DEFAULT_RE = /\bexport\s+default\s+(async function|function|class|true|false|\W|\d)|\bexport\s+default\s+(?<defaultName>.*)/g;
8967
9033
  const EXPORT_DEFAULT_CLASS_RE = /\bexport\s+default\s+(?<declaration>class)\s+(?<name>[\w$]+)/g;
8968
9034
  const TYPE_RE = /^\s*?type\s/;
9035
+ function _extractExtraNames(extraNamesStr) {
9036
+ const names = [];
9037
+ let depth = 0;
9038
+ let angleDepth = 0;
9039
+ let inString = false;
9040
+ let inTypeAnnotation = false;
9041
+ for (let i = 0; i < extraNamesStr.length; i++) {
9042
+ const char = extraNamesStr[i];
9043
+ if (inString) {
9044
+ if (char === inString) {
9045
+ let backslashCount = 0;
9046
+ for (let j = i - 1; j >= 0 && extraNamesStr[j] === "\\"; j--) {
9047
+ backslashCount++;
9048
+ }
9049
+ if (backslashCount % 2 === 0) {
9050
+ inString = false;
9051
+ }
9052
+ }
9053
+ continue;
9054
+ }
9055
+ if (char === '"' || char === "'" || char === "`") {
9056
+ inString = char;
9057
+ continue;
9058
+ }
9059
+ if (char === ":" && depth === 0 && angleDepth === 0) {
9060
+ inTypeAnnotation = true;
9061
+ continue;
9062
+ }
9063
+ if (char === "=" && extraNamesStr[i + 1] !== ">" && depth === 0 && angleDepth === 0) {
9064
+ inTypeAnnotation = false;
9065
+ }
9066
+ if (inTypeAnnotation && char === "<") {
9067
+ angleDepth++;
9068
+ continue;
9069
+ }
9070
+ if (inTypeAnnotation && char === ">" && angleDepth > 0) {
9071
+ angleDepth--;
9072
+ continue;
9073
+ }
9074
+ if (char === "(" || char === "[" || char === "{") {
9075
+ depth++;
9076
+ } else if (char === ")" || char === "]" || char === "}") {
9077
+ depth--;
9078
+ }
9079
+ if (char === "," && depth === 0 && angleDepth === 0) {
9080
+ const rest = extraNamesStr.slice(i + 1);
9081
+ const match = rest.match(/^\s*([\w$]+)/);
9082
+ if (match) {
9083
+ names.push(match[1]);
9084
+ }
9085
+ }
9086
+ }
9087
+ return names;
9088
+ }
8969
9089
  function findExports(code) {
8970
9090
  const declaredExports = matchAll(EXPORT_DECAL_RE, code, {
8971
9091
  type: "declaration"
@@ -8976,12 +9096,10 @@ function findExports(code) {
8976
9096
  }
8977
9097
  const extraNamesStr = declaredExport.extraNames;
8978
9098
  if (extraNamesStr) {
8979
- const extraNames = matchAll(
8980
- /({.*?})|(\[.*?])|(,\s*(?<name>\w+))/g,
8981
- extraNamesStr,
8982
- {}
8983
- ).map((m) => m.name).filter(Boolean);
8984
- declaredExport.names = [declaredExport.name, ...extraNames];
9099
+ const extraNames = _extractExtraNames(extraNamesStr);
9100
+ if (extraNames.length > 0) {
9101
+ declaredExport.names = [declaredExport.name, ...extraNames];
9102
+ }
8985
9103
  }
8986
9104
  delete declaredExport.extraNames;
8987
9105
  }
@@ -10082,6 +10200,7 @@ async function resolveBuiltinPresets(presets) {
10082
10200
  return resolved.flat();
10083
10201
  }
10084
10202
 
10203
+ const VALID_IDENTIFIER_RE = /^[a-z_$][\w$]*$/i;
10085
10204
  function toJsLiteral(value, seen = /* @__PURE__ */ new Set()) {
10086
10205
  if (value === null) {
10087
10206
  return "null";
@@ -10130,8 +10249,7 @@ function toJsLiteral(value, seen = /* @__PURE__ */ new Set()) {
10130
10249
  return JSON.stringify(value);
10131
10250
  }
10132
10251
  function safeKey(key) {
10133
- const validIdentifier = /^[a-z_$][\w$]*$/i;
10134
- if (validIdentifier.test(key)) {
10252
+ if (VALID_IDENTIFIER_RE.test(key)) {
10135
10253
  return key;
10136
10254
  }
10137
10255
  return JSON.stringify(key);
@@ -10185,6 +10303,9 @@ function setupOptionsRPC({ nuxt }) {
10185
10303
  };
10186
10304
  }
10187
10305
 
10306
+ const ABSOLUTE_PATH_RE = /^[a-z]:|^\//i;
10307
+ const FILE_LINE_COL_RE = /^(.*?)(:[:\d]*)$/;
10308
+ const MULTIPLE_SLASHES_RE$1 = /\/+/g;
10188
10309
  function setupGeneralRPC({
10189
10310
  nuxt,
10190
10311
  options,
@@ -10222,7 +10343,7 @@ function setupGeneralRPC({
10222
10343
  page.children?.forEach(searchChildren);
10223
10344
  }
10224
10345
  v.forEach(searchChildren);
10225
- serverPages.push(...Array.from(pagesSet).sort((a, b) => a.path.localeCompare(b.path)));
10346
+ serverPages.push(...[...pagesSet].toSorted((a, b) => a.path.localeCompare(b.path)));
10226
10347
  refresh("getServerPages");
10227
10348
  });
10228
10349
  nuxt.hook("app:resolve", (app2) => {
@@ -10339,9 +10460,9 @@ function setupGeneralRPC({
10339
10460
  return Object.values(serverHooks);
10340
10461
  },
10341
10462
  async openInEditor(input) {
10342
- if (input.startsWith("./") || !input.match(/^[a-z]:|^\//i))
10463
+ if (input.startsWith("./") || !ABSOLUTE_PATH_RE.test(input))
10343
10464
  input = resolve(process.cwd(), input);
10344
- const match = input.match(/^(.*?)(:[:\d]*)$/);
10465
+ const match = input.match(FILE_LINE_COL_RE);
10345
10466
  let suffix = "";
10346
10467
  if (match) {
10347
10468
  input = match[1];
@@ -10383,7 +10504,7 @@ function setupGeneralRPC({
10383
10504
  return;
10384
10505
  const token = await getDevAuthToken();
10385
10506
  origin ||= `${nuxt.options.devServer.https ? "https" : "http"}://${nuxt.options.devServer.host === "::" ? "localhost" : nuxt.options.devServer.host || "localhost"}:${nuxt.options.devServer.port}`;
10386
- const ROUTE_AUTH = `${nuxt.options.app.baseURL || "/"}/__nuxt_devtools__/auth`.replace(/\/+/g, "/");
10507
+ const ROUTE_AUTH = `${nuxt.options.app.baseURL || "/"}/__nuxt_devtools__/auth`.replace(MULTIPLE_SLASHES_RE$1, "/");
10387
10508
  const message = [
10388
10509
  `A browser is requesting permissions of ${colors.bold(colors.yellow("writing files and running commands"))} from the DevTools UI.`,
10389
10510
  colors.bold(info || "Unknown"),
@@ -10889,8 +11010,7 @@ function setupNpmRPC({ nuxt, ensureDevAuthToken }) {
10889
11010
  const commands = await getNpmCommand("install", name, { dev: true });
10890
11011
  const filepath = nuxt.options._nuxtConfigFile;
10891
11012
  let source = latestGenerated;
10892
- if (source == null)
10893
- source = await fsp.readFile(filepath, "utf-8");
11013
+ source ??= await fsp.readFile(filepath, "utf-8");
10894
11014
  const generated = await magicastGuard(async () => {
10895
11015
  const mod = parseModule(source, { sourceFileName: filepath });
10896
11016
  addNuxtModule(mod, name);
@@ -11045,8 +11165,23 @@ function setupServerDataRPC({
11045
11165
  };
11046
11166
  }
11047
11167
 
11168
+ async function watchStorageMount(storage, mountName, onChange) {
11169
+ const mountKey = normalizeBaseKey(mountName);
11170
+ const mount = storage.getMount(mountKey);
11171
+ if (!mount || normalizeBaseKey(mount.base) !== mountKey || !mount.driver?.watch)
11172
+ return () => {
11173
+ };
11174
+ const unwatch = await mount.driver.watch((event, key) => {
11175
+ const fullKey = key.startsWith(mountKey) ? key : `${mountKey}${key}`;
11176
+ onChange(event, normalizeKey(fullKey));
11177
+ });
11178
+ return unwatch ?? (() => {
11179
+ });
11180
+ }
11181
+
11048
11182
  function setupServerRoutesRPC({ nuxt, refresh }) {
11049
11183
  let nitro;
11184
+ let unwatchStorage;
11050
11185
  let cache = null;
11051
11186
  const refreshDebounced = debounce(() => {
11052
11187
  cache = null;
@@ -11057,12 +11192,19 @@ function setupServerRoutesRPC({ nuxt, refresh }) {
11057
11192
  cache = null;
11058
11193
  refresh("getServerRoutes");
11059
11194
  });
11060
- nuxt.hook("ready", () => {
11061
- nitro?.storage.watch((event, key) => {
11195
+ nuxt.hook("ready", async () => {
11196
+ if (!nitro)
11197
+ return;
11198
+ await unwatchStorage?.();
11199
+ unwatchStorage = await watchStorageMount(nitro.storage, "src", (_event, key) => {
11062
11200
  if (key.startsWith("src:api:") || key.startsWith("src:routes:"))
11063
11201
  refreshDebounced();
11064
11202
  });
11065
11203
  });
11204
+ nuxt.hook("close", async () => {
11205
+ await unwatchStorage?.();
11206
+ unwatchStorage = void 0;
11207
+ });
11066
11208
  function scan() {
11067
11209
  if (cache)
11068
11210
  return cache;
@@ -11095,6 +11237,7 @@ function setupServerRoutesRPC({ nuxt, refresh }) {
11095
11237
 
11096
11238
  function setupServerTasksRPC({ nuxt, refresh }) {
11097
11239
  let nitro;
11240
+ let unwatchStorage;
11098
11241
  let cache = null;
11099
11242
  const refreshDebounced = debounce(() => {
11100
11243
  cache = null;
@@ -11105,12 +11248,19 @@ function setupServerTasksRPC({ nuxt, refresh }) {
11105
11248
  cache = null;
11106
11249
  refresh("getServerTasks");
11107
11250
  });
11108
- nuxt.hook("ready", () => {
11109
- nitro?.storage.watch((event, key) => {
11251
+ nuxt.hook("ready", async () => {
11252
+ if (!nitro)
11253
+ return;
11254
+ await unwatchStorage?.();
11255
+ unwatchStorage = await watchStorageMount(nitro.storage, "src", (_event, key) => {
11110
11256
  if (key.startsWith("src:tasks:"))
11111
11257
  refreshDebounced();
11112
11258
  });
11113
11259
  });
11260
+ nuxt.hook("close", async () => {
11261
+ await unwatchStorage?.();
11262
+ unwatchStorage = void 0;
11263
+ });
11114
11264
  function scan() {
11115
11265
  if (cache)
11116
11266
  return cache;
@@ -11149,25 +11299,34 @@ function setupStorageRPC({
11149
11299
  }) {
11150
11300
  const storageMounts = {};
11151
11301
  let storage;
11302
+ let unwatchStorageMounts = [];
11152
11303
  nuxt.hook("nitro:init", (nitro) => {
11153
11304
  storage = nitro.storage;
11154
- nuxt.hook("ready", () => {
11155
- storage.watch((event, key) => {
11156
- if (shouldIgnoreStorageKey(key))
11157
- return;
11158
- rpc.broadcast.callHook.asEvent("storage:key:update", key, event);
11159
- });
11160
- });
11161
11305
  const mounts = {
11162
11306
  ...nitro.options.storage,
11163
11307
  ...nitro.options.devStorage
11164
11308
  };
11309
+ for (const key of Object.keys(storageMounts))
11310
+ delete storageMounts[key];
11165
11311
  for (const name of Object.keys(mounts)) {
11166
11312
  if (shouldIgnoreStorageKey(name))
11167
11313
  continue;
11168
11314
  storageMounts[name] = mounts[name];
11169
11315
  }
11170
11316
  });
11317
+ nuxt.hook("ready", async () => {
11318
+ const activeStorage = storage;
11319
+ if (!activeStorage)
11320
+ return;
11321
+ await Promise.all(unwatchStorageMounts.map((unwatch) => unwatch()));
11322
+ unwatchStorageMounts = await Promise.all(Object.keys(storageMounts).map((mountName) => watchStorageMount(activeStorage, mountName, (event, key) => {
11323
+ rpc.broadcast.callHook.asEvent("storage:key:update", key, event);
11324
+ })));
11325
+ });
11326
+ nuxt.hook("close", async () => {
11327
+ await Promise.all(unwatchStorageMounts.map((unwatch) => unwatch()));
11328
+ unwatchStorageMounts = [];
11329
+ });
11171
11330
  return {
11172
11331
  async getStorageMounts() {
11173
11332
  return storageMounts;
@@ -11300,7 +11459,7 @@ function setupTerminalRPC({ nuxt, rpc, refresh, ensureDevAuthToken }) {
11300
11459
  }
11301
11460
  return {
11302
11461
  getTerminals() {
11303
- return Array.from(terminals.values()).map((i) => serializeTerminal(i));
11462
+ return Array.from(terminals.values(), (i) => serializeTerminal(i));
11304
11463
  },
11305
11464
  async getTerminalDetail(token, id) {
11306
11465
  await ensureDevAuthToken(token);
@@ -11361,6 +11520,7 @@ function setupTimelineRPC({ nuxt }) {
11361
11520
 
11362
11521
  const LOG_PREFIX = colors.cyan("Nuxt DevTools:");
11363
11522
 
11523
+ const NUXT_WELCOME_RE = /<NuxtWelcome\s*\/>/;
11364
11524
  const pagesIndexTemplate = `<script setup lang="ts">
11365
11525
  const route = useRoute()
11366
11526
  <\/script>
@@ -11385,7 +11545,7 @@ async function enablePages(nuxt) {
11385
11545
  await fsp.mkdir(dirname$1(pathPageIndex), { recursive: true });
11386
11546
  await fsp.writeFile(pathPageIndex, pagesIndexTemplate, "utf-8");
11387
11547
  if (appContent && !appContent.includes("<NuxtPage")) {
11388
- appContent = appContent.replace("</template>", " <NuxtPage />\n</template>").replace(/<NuxtWelcome\s*\/>/, "");
11548
+ appContent = appContent.replace("</template>", " <NuxtPage />\n</template>").replace(NUXT_WELCOME_RE, "");
11389
11549
  await fsp.writeFile(pathApp, appContent, "utf-8");
11390
11550
  }
11391
11551
  logger.success("Routing creation wizard completed");
@@ -11521,6 +11681,8 @@ function setupRPC(nuxt, options) {
11521
11681
  };
11522
11682
  }
11523
11683
 
11684
+ const MULTIPLE_SLASHES_RE = /\/+/g;
11685
+ const DEVTOOLS_BASE_RE = /\/__NUXT_DEVTOOLS_BASE__\//g;
11524
11686
  async function enableModule(options, nuxt) {
11525
11687
  if (process.env.TEST || process.env.NODE_ENV === "test" || nuxt.options.test)
11526
11688
  return;
@@ -11533,7 +11695,7 @@ async function enableModule(options, nuxt) {
11533
11695
  await import('./analyze-build.mjs').then(({ setup }) => setup(nuxt, options));
11534
11696
  return;
11535
11697
  }
11536
- const enabledExplicitly = nuxt.options.devtools === true || nuxt.options.devtools && nuxt.options.devtools.enabled || !!nuxt.options.modules.find((m) => m === "@nuxt/devtools" || m === "@nuxt/devtools-edge" || m === "@nuxt/devtools-nightly");
11698
+ const enabledExplicitly = nuxt.options.devtools === true || nuxt.options.devtools && nuxt.options.devtools.enabled || nuxt.options.modules.some((m) => m === "@nuxt/devtools" || m === "@nuxt/devtools-edge" || m === "@nuxt/devtools-nightly");
11537
11699
  await nuxt.callHook("devtools:before");
11538
11700
  if (options.iframeProps) {
11539
11701
  nuxt.options.runtimeConfig.app.devtools ||= {};
@@ -11632,7 +11794,7 @@ window.__NUXT_DEVTOOLS_TIME_METRIC__.appInit = Date.now()
11632
11794
  name: "useNuxtDevTools",
11633
11795
  from: join(runtimeDir, "use-nuxt-devtools")
11634
11796
  });
11635
- const ROUTE_PATH = `${nuxt.options.app.baseURL || "/"}/__nuxt_devtools__`.replace(/\/+/g, "/");
11797
+ const ROUTE_PATH = `${nuxt.options.app.baseURL || "/"}/__nuxt_devtools__`.replace(MULTIPLE_SLASHES_RE, "/");
11636
11798
  const ROUTE_CLIENT = `${ROUTE_PATH}/client`;
11637
11799
  const ROUTE_AUTH = `${ROUTE_PATH}/auth`;
11638
11800
  const ROUTE_AUTH_VERIFY = `${ROUTE_PATH}/auth-verify`;
@@ -11650,7 +11812,7 @@ window.__NUXT_DEVTOOLS_TIME_METRIC__.appInit = Date.now()
11650
11812
  const handleIndex = async (res) => {
11651
11813
  res.setHeader("Content-Type", "text/html");
11652
11814
  res.statusCode = 200;
11653
- res.write((await indexContent).replace(/\/__NUXT_DEVTOOLS_BASE__\//g, `${ROUTE_CLIENT}/`));
11815
+ res.write((await indexContent).replace(DEVTOOLS_BASE_RE, `${ROUTE_CLIENT}/`));
11654
11816
  res.end();
11655
11817
  };
11656
11818
  server.middlewares.use(ROUTE_CLIENT, (req, res) => {