@nuxt/devtools-nightly 3.2.4-29562007.6edb6d3 → 3.2.4-29562036.34d136f

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.
@@ -1,15 +1,15 @@
1
- import fs, { existsSync, promises, statSync, realpathSync, readFileSync, accessSync, constants } from 'node:fs';
2
- import fsp from 'node:fs/promises';
1
+ import fs$1, { existsSync, promises, statSync, realpathSync, readFileSync, accessSync, constants } from 'node:fs';
2
+ import fs from 'node:fs/promises';
3
3
  import os, { homedir } from 'node:os';
4
4
  import { logger, useNuxt, addVitePlugin, addPlugin, addTemplate, extendViteConfig, addImports } from '@nuxt/kit';
5
5
  import { colors } from 'consola/utils';
6
6
  import { join, dirname as dirname$1, resolve, isAbsolute } from 'pathe';
7
7
  import sirv from 'sirv';
8
8
  import { searchForWorkspaceRoot } from 'vite';
9
- import { d as defaultAllowedExtensions, a as defaultTabOptions, W as WS_EVENT_NAME } from '../shared/devtools-nightly.CT6XRG-F.mjs';
9
+ import { d as defaultAllowedExtensions, a as defaultTabOptions, W as WS_EVENT_NAME } from '../shared/devtools-nightly.D8UuYYYu.mjs';
10
10
  import path, { dirname, join as join$1, relative, parse } from 'node:path';
11
11
  import { hash } from 'ohash';
12
- import { runtimeDir, clientDir, packageDir, isGlobalInstall } from '../dirs.mjs';
12
+ import { runtimeDir, clientDir, packageDir } from '../dirs.mjs';
13
13
  import { createBirpcGroup } from 'birpc';
14
14
  import { parse as parse$1, stringify } from 'structured-clone-es';
15
15
  import { startSubprocess } from '@nuxt/devtools-kit';
@@ -27,14 +27,13 @@ import assert from 'node:assert';
27
27
  import v8 from 'node:v8';
28
28
  import { format, inspect } from 'node:util';
29
29
  import { resolveModule, getPackageInfo } from 'local-pkg';
30
- import isInstalledGlobally from 'is-installed-globally';
31
30
  import { parseModule } from 'magicast';
32
31
  import { getDefaultExportOptions, addNuxtModule } from 'magicast/helpers';
33
32
  import { detectPackageManager } from 'nypm';
34
33
  import semver from 'semver';
35
34
  import { normalizeBaseKey, normalizeKey } from 'unstorage';
36
35
 
37
- const version$1 = "3.2.4-29562007.6edb6d3";
36
+ const version$1 = "3.2.4-29562036.34d136f";
38
37
 
39
38
  const urlAlphabet = "useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";
40
39
  function randomStr(size = 16, dict = urlAlphabet) {
@@ -55,7 +54,7 @@ async function readLocalOptions(defaults, options) {
55
54
  try {
56
55
  const options2 = {
57
56
  ...defaults,
58
- ...JSON.parse(await fsp.readFile(filePath, "utf-8")).settings || {}
57
+ ...JSON.parse(await fs.readFile(filePath, "utf-8")).settings || {}
59
58
  };
60
59
  return options2;
61
60
  } catch (e) {
@@ -83,12 +82,12 @@ function getOptionsFilepath(options) {
83
82
  async function clearLocalOptions(options) {
84
83
  const { filePath } = getOptionsFilepath(options);
85
84
  if (existsSync(filePath))
86
- await fsp.unlink(filePath);
85
+ await fs.unlink(filePath);
87
86
  }
88
87
  async function writeLocalOptions(settings, options) {
89
88
  const { filePath, hashedKey } = getOptionsFilepath(options);
90
- await fsp.mkdir(dirname(filePath), { recursive: true });
91
- await fsp.writeFile(
89
+ await fs.mkdir(dirname(filePath), { recursive: true });
90
+ await fs.writeFile(
92
91
  filePath,
93
92
  JSON.stringify(
94
93
  {
@@ -111,11 +110,11 @@ async function getDevAuthToken() {
111
110
  const dir = join$1(home, ".nuxt/devtools");
112
111
  const filepath = join$1(dir, "dev-auth-token.txt");
113
112
  if (existsSync(filepath))
114
- token = (await fsp.readFile(filepath, "utf-8")).trim();
113
+ token = (await fs.readFile(filepath, "utf-8")).trim();
115
114
  if (!token)
116
115
  token = randomStr(16);
117
- await fsp.mkdir(dir, { recursive: true });
118
- await fsp.writeFile(filepath, token, "utf-8");
116
+ await fs.mkdir(dir, { recursive: true });
117
+ await fs.writeFile(filepath, token, "utf-8");
119
118
  return token;
120
119
  }
121
120
 
@@ -140,7 +139,7 @@ function setupAnalyzeBuildRPC({ nuxt, refresh, ensureDevAuthToken }) {
140
139
  }, nuxt);
141
140
  refresh("getAnalyzeBuildInfo");
142
141
  initalized = void 0;
143
- promise = result.getProcess().then(() => {
142
+ promise = Promise.resolve(result.getResult()).then(() => {
144
143
  refresh("getAnalyzeBuildInfo");
145
144
  return readBuildInfo();
146
145
  }).finally(() => {
@@ -162,10 +161,10 @@ function setupAnalyzeBuildRPC({ nuxt, refresh, ensureDevAuthToken }) {
162
161
  absolute: true
163
162
  });
164
163
  for (const file of files2) {
165
- const slug = JSON.parse(await fsp.readFile(file, "utf-8")).slug;
164
+ const slug = JSON.parse(await fs.readFile(file, "utf-8")).slug;
166
165
  const dir2 = dirname$1(file);
167
- await fsp.mkdir(devtoolsAnalyzeDir, { recursive: true });
168
- await fsp.rename(dir2, join(devtoolsAnalyzeDir, slug));
166
+ await fs.mkdir(devtoolsAnalyzeDir, { recursive: true });
167
+ await fs.rename(dir2, join(devtoolsAnalyzeDir, slug));
169
168
  }
170
169
  }
171
170
  const files = await glob(["**/meta.json"], {
@@ -175,13 +174,13 @@ function setupAnalyzeBuildRPC({ nuxt, refresh, ensureDevAuthToken }) {
175
174
  });
176
175
  builds = await Promise.all(files.map(async (file) => {
177
176
  const dir = dirname$1(file);
178
- const json = JSON.parse(await fsp.readFile(file, "utf-8"));
177
+ const json = JSON.parse(await fs.readFile(file, "utf-8"));
179
178
  return {
180
179
  ...json,
181
180
  features: {
182
- bundleClient: fs.existsSync(join(dir, "client.html")),
183
- bundleNitro: fs.existsSync(join(dir, "nitro.html")),
184
- viteInspect: fs.existsSync(join(dir, ".vite-inspect"))
181
+ bundleClient: fs$1.existsSync(join(dir, "client.html")),
182
+ bundleNitro: fs$1.existsSync(join(dir, "nitro.html")),
183
+ viteInspect: fs$1.existsSync(join(dir, ".vite-inspect"))
185
184
  }
186
185
  };
187
186
  }));
@@ -214,10 +213,10 @@ function setupAnalyzeBuildRPC({ nuxt, refresh, ensureDevAuthToken }) {
214
213
  async clearAnalyzeBuilds(token, names) {
215
214
  await ensureDevAuthToken(token);
216
215
  if (!names) {
217
- await fsp.rm(devtoolsAnalyzeDir, { recursive: true, force: true });
216
+ await fs.rm(devtoolsAnalyzeDir, { recursive: true, force: true });
218
217
  } else {
219
218
  const targets = builds.filter((build) => names.includes(build.name));
220
- await Promise.all(targets.map((target) => fsp.rm(join(devtoolsAnalyzeDir, target.slug), { recursive: true, force: true })));
219
+ await Promise.all(targets.map((target) => fs.rm(join(devtoolsAnalyzeDir, target.slug), { recursive: true, force: true })));
221
220
  }
222
221
  initalized = readBuildInfo();
223
222
  refresh("getAnalyzeBuildInfo");
@@ -264,7 +263,7 @@ function setupAssetsRPC({ nuxt, ensureDevAuthToken, refresh, options }) {
264
263
  const filePath = resolve(layerDir, path);
265
264
  if (!filePath.startsWith(layerDir))
266
265
  continue;
267
- const stat = await fsp.lstat(filePath);
266
+ const stat = await fs.lstat(filePath);
268
267
  const fullPath = join(baseURL, path);
269
268
  if (!uniquePaths.has(fullPath)) {
270
269
  cache.push({
@@ -291,7 +290,7 @@ function setupAssetsRPC({ nuxt, ensureDevAuthToken, refresh, options }) {
291
290
  if (_imageMetaCache.has(filepath))
292
291
  return _imageMetaCache.get(filepath);
293
292
  try {
294
- const meta = imageMeta(await fsp.readFile(filepath));
293
+ const meta = imageMeta(await fs.readFile(filepath));
295
294
  _imageMetaCache.set(filepath, meta);
296
295
  return meta;
297
296
  } catch (e) {
@@ -303,7 +302,7 @@ function setupAssetsRPC({ nuxt, ensureDevAuthToken, refresh, options }) {
303
302
  async getTextAssetContent(token, filepath, limit = 300) {
304
303
  await ensureDevAuthToken(token);
305
304
  try {
306
- const content = await fsp.readFile(filepath, "utf-8");
305
+ const content = await fs.readFile(filepath, "utf-8");
307
306
  return content.slice(0, limit);
308
307
  } catch (e) {
309
308
  console.error(e);
@@ -326,16 +325,16 @@ You can configure it in Nuxt config at \`devtools.assets.uploadExtensions\`.`);
326
325
  }
327
326
  if (!override) {
328
327
  try {
329
- await fsp.stat(finalPath);
328
+ await fs.stat(finalPath);
330
329
  const base = finalPath.slice(0, finalPath.length - ext.length - 1);
331
330
  let i = 1;
332
- while (await fsp.access(`${base}-${i}.${ext}`).then(() => true).catch(() => false))
331
+ while (await fs.access(`${base}-${i}.${ext}`).then(() => true).catch(() => false))
333
332
  i++;
334
333
  finalPath = `${base}-${i}.${ext}`;
335
334
  } catch {
336
335
  }
337
336
  }
338
- await fsp.writeFile(finalPath, content, {
337
+ await fs.writeFile(finalPath, content, {
339
338
  encoding: encoding ?? "utf-8"
340
339
  });
341
340
  return finalPath;
@@ -344,14 +343,14 @@ You can configure it in Nuxt config at \`devtools.assets.uploadExtensions\`.`);
344
343
  },
345
344
  async deleteStaticAsset(token, path) {
346
345
  await ensureDevAuthToken(token);
347
- return await fsp.unlink(path);
346
+ return await fs.unlink(path);
348
347
  },
349
348
  async renameStaticAsset(token, oldPath, newPath) {
350
349
  await ensureDevAuthToken(token);
351
350
  const exist = cache?.find((asset) => asset.filePath === newPath);
352
351
  if (exist)
353
352
  throw new Error(`[Nuxt DevTools] File ${newPath} already exists, failed to rename`);
354
- return await fsp.rename(oldPath, newPath);
353
+ return await fs.rename(oldPath, newPath);
355
354
  }
356
355
  };
357
356
  }
@@ -7464,7 +7463,7 @@ function read(jsonPath, {base, specifier}) {
7464
7463
  let string;
7465
7464
 
7466
7465
  try {
7467
- string = fs.readFileSync(path.toNamespacedPath(jsonPath), 'utf8');
7466
+ string = fs$1.readFileSync(path.toNamespacedPath(jsonPath), 'utf8');
7468
7467
  } catch (error) {
7469
7468
  const exception = /** @type {ErrnoException} */ (error);
7470
7469
 
@@ -10306,6 +10305,7 @@ function setupOptionsRPC({ nuxt }) {
10306
10305
  const ABSOLUTE_PATH_RE = /^[a-z]:|^\//i;
10307
10306
  const FILE_LINE_COL_RE = /^(.*?)(:[:\d]*)$/;
10308
10307
  const MULTIPLE_SLASHES_RE$1 = /\/+/g;
10308
+ const NUXT_WELCOME_RE = /<NuxtWelcome\s*\/>/;
10309
10309
  function setupGeneralRPC({
10310
10310
  nuxt,
10311
10311
  options,
@@ -10494,6 +10494,36 @@ function setupGeneralRPC({
10494
10494
  return false;
10495
10495
  }
10496
10496
  },
10497
+ async enablePages(token) {
10498
+ await ensureDevAuthToken(token);
10499
+ const baseDir = nuxt.options.future.compatibilityVersion === 4 ? nuxt.options.dir.app : nuxt.options.srcDir;
10500
+ const pathApp = join(baseDir, "app.vue");
10501
+ const pathPageIndex = join(baseDir, "pages/index.vue");
10502
+ if (existsSync(pathPageIndex)) {
10503
+ logger.warn("pages/index.vue already exists, skipping");
10504
+ return;
10505
+ }
10506
+ const pagesIndexTemplate = `<script setup lang="ts">
10507
+ const route = useRoute()
10508
+ <\/script>
10509
+
10510
+ <template>
10511
+ <div>
10512
+ <h1>Nuxt Routing set up successfully!</h1>
10513
+ <p>Current route: {{ route.path }}</p>
10514
+ <a href="https://nuxt.com/docs/getting-started/routing" target="_blank">Learn more about Nuxt Routing</a>
10515
+ </div>
10516
+ </template>
10517
+ `;
10518
+ await fs.mkdir(dirname$1(pathPageIndex), { recursive: true });
10519
+ await fs.writeFile(pathPageIndex, pagesIndexTemplate, "utf-8");
10520
+ let appContent = existsSync(pathApp) ? await fs.readFile(pathApp, "utf-8") : void 0;
10521
+ if (appContent && !appContent.includes("<NuxtPage")) {
10522
+ appContent = appContent.replace("</template>", " <NuxtPage />\n</template>").replace(NUXT_WELCOME_RE, "");
10523
+ await fs.writeFile(pathApp, appContent, "utf-8");
10524
+ }
10525
+ logger.success("Routing creation completed");
10526
+ },
10497
10527
  async restartNuxt(token, hard = true) {
10498
10528
  await ensureDevAuthToken(token);
10499
10529
  logger.info("Restarting Nuxt...");
@@ -10949,8 +10979,7 @@ function setupNpmRPC({ nuxt, ensureDevAuthToken }) {
10949
10979
  }
10950
10980
  async function getNpmCommand(command, packageName, options = {}) {
10951
10981
  const {
10952
- dev = true,
10953
- global = packageName === "@nuxt/devtools" && isInstalledGlobally
10982
+ dev = true
10954
10983
  } = options;
10955
10984
  const agent = await getPackageManager();
10956
10985
  const name = agent?.name || "npm";
@@ -10960,7 +10989,6 @@ function setupNpmRPC({ nuxt, ensureDevAuthToken }) {
10960
10989
  name === "npm" ? "install" : "add",
10961
10990
  `${packageName}@latest`,
10962
10991
  dev ? "-D" : "",
10963
- global ? "-g" : "",
10964
10992
  // In yarn berry, `--ignore-scripts` is removed
10965
10993
  name === "yarn" && !agent?.version?.startsWith("1.") ? "" : "--ignore-scripts"
10966
10994
  ].filter(Boolean);
@@ -10969,8 +10997,7 @@ function setupNpmRPC({ nuxt, ensureDevAuthToken }) {
10969
10997
  return [
10970
10998
  name,
10971
10999
  name === "npm" ? "uninstall" : "remove",
10972
- packageName,
10973
- global ? "-g" : ""
11000
+ packageName
10974
11001
  ].filter(Boolean);
10975
11002
  }
10976
11003
  }
@@ -11010,7 +11037,7 @@ function setupNpmRPC({ nuxt, ensureDevAuthToken }) {
11010
11037
  const commands = await getNpmCommand("install", name, { dev: true });
11011
11038
  const filepath = nuxt.options._nuxtConfigFile;
11012
11039
  let source = latestGenerated;
11013
- source ??= await fsp.readFile(filepath, "utf-8");
11040
+ source ??= await fs.readFile(filepath, "utf-8");
11014
11041
  const generated = await magicastGuard(async () => {
11015
11042
  const mod = parseModule(source, { sourceFileName: filepath });
11016
11043
  addNuxtModule(mod, name);
@@ -11029,8 +11056,7 @@ function setupNpmRPC({ nuxt, ensureDevAuthToken }) {
11029
11056
  icon: "carbon:intent-request-create",
11030
11057
  restartable: false
11031
11058
  });
11032
- const execa = process.getProcess();
11033
- const result = await execa;
11059
+ const result = await process.getResult();
11034
11060
  await Promise.resolve();
11035
11061
  installSet.delete(name);
11036
11062
  const code = result.exitCode;
@@ -11040,7 +11066,7 @@ function setupNpmRPC({ nuxt, ensureDevAuthToken }) {
11040
11066
  }
11041
11067
  if (installSet.size === 0) {
11042
11068
  latestGenerated = null;
11043
- await fsp.writeFile(filepath, generated, "utf-8");
11069
+ await fs.writeFile(filepath, generated, "utf-8");
11044
11070
  }
11045
11071
  }
11046
11072
  return {
@@ -11054,7 +11080,7 @@ function setupNpmRPC({ nuxt, ensureDevAuthToken }) {
11054
11080
  await ensureDevAuthToken(token);
11055
11081
  const commands = await getNpmCommand("uninstall", name);
11056
11082
  const filepath = nuxt.options._nuxtConfigFile;
11057
- const source = await fsp.readFile(filepath, "utf-8");
11083
+ const source = await fs.readFile(filepath, "utf-8");
11058
11084
  const generated = await magicastGuard(async () => {
11059
11085
  const mod = parseModule(source, { sourceFileName: filepath });
11060
11086
  const config = getDefaultExportOptions(mod);
@@ -11078,15 +11104,14 @@ function setupNpmRPC({ nuxt, ensureDevAuthToken }) {
11078
11104
  icon: "carbon:intent-request-uninstall",
11079
11105
  restartable: false
11080
11106
  });
11081
- const execa = process.getProcess();
11082
- const result = await execa;
11107
+ const result = await process.getResult();
11083
11108
  await Promise.resolve();
11084
11109
  const code = result.exitCode;
11085
11110
  if (code !== 0) {
11086
11111
  console.error(result.stderr);
11087
11112
  throw new Error(`[Nuxt DevTools] Failed to uninstall module, process exited with ${code}`);
11088
11113
  }
11089
- await fsp.writeFile(filepath, generated, "utf-8");
11114
+ await fs.writeFile(filepath, generated, "utf-8");
11090
11115
  }
11091
11116
  return {
11092
11117
  configOriginal: source,
@@ -11500,7 +11525,7 @@ function setupTimelineRPC({ nuxt }) {
11500
11525
  return {
11501
11526
  async enableTimeline(dry) {
11502
11527
  const filepath = nuxt.options._nuxtConfigFile;
11503
- const source = await fsp.readFile(filepath, "utf-8");
11528
+ const source = await fs.readFile(filepath, "utf-8");
11504
11529
  const generated = await magicastGuard(async () => {
11505
11530
  const mod = parseModule(source, { sourceFileName: filepath });
11506
11531
  const options = getDefaultExportOptions(mod);
@@ -11510,7 +11535,7 @@ function setupTimelineRPC({ nuxt }) {
11510
11535
  return mod.generate().code;
11511
11536
  }, "\nYou can enable timeline manually by adding `devtools: { timeline: { enabled: true } }`");
11512
11537
  if (!dry) {
11513
- await fsp.writeFile(filepath, generated, "utf-8");
11538
+ await fs.writeFile(filepath, generated, "utf-8");
11514
11539
  await nuxt.callHook("restart", { hard: true });
11515
11540
  }
11516
11541
  return [source, generated];
@@ -11518,53 +11543,6 @@ function setupTimelineRPC({ nuxt }) {
11518
11543
  };
11519
11544
  }
11520
11545
 
11521
- const LOG_PREFIX = colors.cyan("Nuxt DevTools:");
11522
-
11523
- const NUXT_WELCOME_RE = /<NuxtWelcome\s*\/>/;
11524
- const pagesIndexTemplate = `<script setup lang="ts">
11525
- const route = useRoute()
11526
- <\/script>
11527
-
11528
- <template>
11529
- <div>
11530
- <h1>Nuxt Routing set up successfully!</h1>
11531
- <p>Current route: {{ route.path }}</p>
11532
- <a href="https://nuxt.com/docs/getting-started/routing" target="_blank">Learn more about Nuxt Routing</a>
11533
- </div>
11534
- </template>
11535
- `;
11536
- async function enablePages(nuxt) {
11537
- const baseDir = nuxt.options.future.compatibilityVersion === 4 ? nuxt.options.dir.app : nuxt.options.srcDir;
11538
- const pathApp = join(baseDir, "app.vue");
11539
- const pathPageIndex = join(baseDir, "pages/index.vue");
11540
- if (fs.existsSync(pathPageIndex)) {
11541
- logger.warn("pages/index.vue already exists, skipping");
11542
- return;
11543
- }
11544
- let appContent = fs.existsSync(pathApp) ? await fsp.readFile(pathApp, "utf-8") : void 0;
11545
- await fsp.mkdir(dirname$1(pathPageIndex), { recursive: true });
11546
- await fsp.writeFile(pathPageIndex, pagesIndexTemplate, "utf-8");
11547
- if (appContent && !appContent.includes("<NuxtPage")) {
11548
- appContent = appContent.replace("</template>", " <NuxtPage />\n</template>").replace(NUXT_WELCOME_RE, "");
11549
- await fsp.writeFile(pathApp, appContent, "utf-8");
11550
- }
11551
- logger.success("Routing creation wizard completed");
11552
- }
11553
-
11554
- const wizard = {
11555
- enablePages
11556
- };
11557
-
11558
- function setupWizardRPC({ nuxt, ensureDevAuthToken }) {
11559
- return {
11560
- async runWizard(token, name, ...args) {
11561
- await ensureDevAuthToken(token);
11562
- logger.info(LOG_PREFIX, `Running wizard ${colors.green(name)}...`);
11563
- return wizard[name](nuxt, ...args);
11564
- }
11565
- };
11566
- }
11567
-
11568
11546
  function setupRPC(nuxt, options) {
11569
11547
  const serverFunctions = {};
11570
11548
  const extendedRpcMap = /* @__PURE__ */ new Map();
@@ -11625,7 +11603,6 @@ function setupRPC(nuxt, options) {
11625
11603
  ...setupStorageRPC(ctx),
11626
11604
  ...setupAssetsRPC(ctx),
11627
11605
  ...setupNpmRPC(ctx),
11628
- ...setupWizardRPC(ctx),
11629
11606
  ...setupTerminalRPC(ctx),
11630
11607
  ...setupServerRoutesRPC(ctx),
11631
11608
  ...setupServerTasksRPC(ctx),
@@ -11804,7 +11781,7 @@ window.__NUXT_DEVTOOLS_TIME_METRIC__.appInit = Date.now()
11804
11781
  server.middlewares.use(ROUTE_ANALYZE, sirv(devtoolsAnalyzeDir, { single: false, dev: true, dotfiles: true, ignores: false }));
11805
11782
  if (clientDirExists) {
11806
11783
  const indexHtmlPath = join(clientDir, "index.html");
11807
- const indexContent = fsp.readFile(indexHtmlPath, "utf-8");
11784
+ const indexContent = fs.readFile(indexHtmlPath, "utf-8");
11808
11785
  const handleStatic = sirv(clientDir, {
11809
11786
  dev: true,
11810
11787
  single: false
@@ -11857,8 +11834,7 @@ window.__NUXT_DEVTOOLS_TIME_METRIC__.appInit = Date.now()
11857
11834
  await Promise.all(integrations);
11858
11835
  nuxt.hook("modules:done", () => nuxt.callHook("devtools:initialized", {
11859
11836
  version: version$1,
11860
- packagePath: packageDir,
11861
- isGlobalInstall: isGlobalInstall()
11837
+ packagePath: packageDir
11862
11838
  }));
11863
11839
  const isMac = os.platform() === "darwin";
11864
11840
  logger.log([
@@ -11877,9 +11853,4 @@ function defineViteDevToolsPlugin(plugin) {
11877
11853
  return plugin;
11878
11854
  }
11879
11855
 
11880
- const moduleMain = {
11881
- __proto__: null,
11882
- enableModule: enableModule
11883
- };
11884
-
11885
- export { LOG_PREFIX as L, moduleMain as m };
11856
+ export { enableModule };
@@ -3,7 +3,6 @@ import semver from 'semver';
3
3
  import { runtimeDir } from '../dirs.mjs';
4
4
  import 'node:path';
5
5
  import 'node:url';
6
- import 'is-installed-globally';
7
6
 
8
7
  const DEFINE_UPPER_RE = /^define[A-Z]/;
9
8
  function setup({ nuxt, options }) {
@@ -1,42 +1,15 @@
1
1
  import { existsSync } from 'node:fs';
2
- import fsp from 'node:fs/promises';
2
+ import fs from 'node:fs/promises';
3
3
  import { hostname } from 'node:os';
4
4
  import { resolve } from 'node:path';
5
5
  import { startSubprocess } from '@nuxt/devtools-kit';
6
6
  import { logger } from '@nuxt/kit';
7
- import { execa } from 'execa';
8
7
  import { checkPort, getPort } from 'get-port-please';
8
+ import { x } from 'tinyexec';
9
9
  import which from 'which';
10
- import { L as LOG_PREFIX } from './module-main.mjs';
11
- import 'consola/utils';
12
- import 'pathe';
13
- import 'sirv';
14
- import 'vite';
15
- import '../shared/devtools-nightly.CT6XRG-F.mjs';
16
- import '../dirs.mjs';
17
- import 'node:url';
18
- import 'is-installed-globally';
19
- import 'ohash';
20
- import 'birpc';
21
- import 'structured-clone-es';
22
- import 'simple-git';
23
- import 'tinyglobby';
24
- import 'image-meta';
25
- import 'perfect-debounce';
26
- import 'destr';
27
- import '../../dist/runtime/shared/hooks.js';
28
- import 'node:process';
29
- import 'node:module';
30
- import 'pkg-types';
31
- import 'node:assert';
32
- import 'node:v8';
33
- import 'node:util';
34
- import 'local-pkg';
35
- import 'magicast';
36
- import 'magicast/helpers';
37
- import 'nypm';
38
- import 'semver';
39
- import 'unstorage';
10
+ import { colors } from 'consola/utils';
11
+
12
+ const LOG_PREFIX = colors.cyan("Nuxt DevTools:");
40
13
 
41
14
  const codeBinaryOptions = {
42
15
  "ms-code-cli": {
@@ -76,7 +49,7 @@ async function setup({ nuxt, options, openInEditorHooks, rpc }) {
76
49
  if (!existsSync(vscodeServerControllerFile))
77
50
  return false;
78
51
  try {
79
- const { port: port2 } = JSON.parse(await fsp.readFile(vscodeServerControllerFile, "utf-8"));
52
+ const { port: port2 } = JSON.parse(await fs.readFile(vscodeServerControllerFile, "utf-8"));
80
53
  const url2 = `http://localhost:${port2}/open?path=${encodeURIComponent(`${root}/${file}`)}`;
81
54
  await fetch(url2);
82
55
  rpc.broadcast.navigateTo("/modules/custom-builtin-vscode");
@@ -89,7 +62,7 @@ async function setup({ nuxt, options, openInEditorHooks, rpc }) {
89
62
  });
90
63
  async function startCodeServer() {
91
64
  if (existsSync(vscodeServerControllerFile))
92
- await fsp.rm(vscodeServerControllerFile, { force: true });
65
+ await fs.rm(vscodeServerControllerFile, { force: true });
93
66
  if (vsOptions?.reuseExistingServer && !await checkPort(port)) {
94
67
  loaded = true;
95
68
  url = `http://localhost:${port}/?folder=${encodeURIComponent(root)}`;
@@ -99,10 +72,10 @@ async function setup({ nuxt, options, openInEditorHooks, rpc }) {
99
72
  port = await getPort({ port });
100
73
  url = `http://localhost:${port}/?folder=${encodeURIComponent(root)}`;
101
74
  logger.info(LOG_PREFIX, `Starting VS Code Server at ${url} ...`);
102
- execa(codeBinary, [
75
+ x(codeBinary, [
103
76
  "--install-extension",
104
77
  "antfu.vscode-server-controller"
105
- ], { stderr: "inherit", stdout: "ignore", reject: false });
78
+ ], { nodeOptions: { stdio: ["pipe", "ignore", "inherit"] } });
106
79
  startSubprocess(
107
80
  {
108
81
  command: codeBinary,
@@ -130,17 +103,17 @@ async function setup({ nuxt, options, openInEditorHooks, rpc }) {
130
103
  loaded = true;
131
104
  }
132
105
  async function startCodeTunnel() {
133
- const { stdout: currentDir } = await execa("pwd");
134
- url = `https://vscode.dev/tunnel/${computerHostName}${currentDir}`;
106
+ const { stdout: currentDir } = await x("pwd");
107
+ url = `https://vscode.dev/tunnel/${computerHostName}${currentDir.trim()}`;
135
108
  logger.info(LOG_PREFIX, `Starting VS Code tunnel at ${url} ...`);
136
- const command = execa("code", [
109
+ const command = x("code", [
137
110
  "tunnel",
138
111
  "--accept-server-license-terms",
139
112
  "--name",
140
113
  `${computerHostName}`
141
114
  ]);
142
- command.stderr?.pipe(process.stderr);
143
- command.stdout?.pipe(process.stdout);
115
+ command.process?.stderr?.pipe(process.stderr);
116
+ command.process?.stdout?.pipe(process.stdout);
144
117
  nuxt.hook("close", () => {
145
118
  command.kill();
146
119
  });
@@ -3,7 +3,6 @@ import { join } from 'pathe';
3
3
  import { runtimeDir } from '../dirs.mjs';
4
4
  import 'node:path';
5
5
  import 'node:url';
6
- import 'is-installed-globally';
7
6
 
8
7
  async function setup({ nuxt }) {
9
8
  if (!nuxt.options.dev || nuxt.options.test)
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><script type="importmap">{"imports":{"#entry":"/__NUXT_DEVTOOLS_BASE__/_nuxt/nh1c97z2.js"}}</script><link rel="stylesheet" href="/__NUXT_DEVTOOLS_BASE__/_nuxt/entry.css-hn1q325i.css" crossorigin><link rel="stylesheet" href="/__NUXT_DEVTOOLS_BASE__/_nuxt/vendor/json-editor-vue.css-lkbe0qhh.css" crossorigin><link rel="stylesheet" href="/__NUXT_DEVTOOLS_BASE__/_nuxt/vendor/unocss.css-3gd0e2sv.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/nh1c97z2.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/_plugin-vue_export-helper-n58akrbk.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/rolldown-runtime-oipoa1or.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/vendor/json-editor-vue-eojr4v24.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/utils-jupbrzo6.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/ready-dadbdj5i.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/dist-mnod32r1.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/nuxt-otp6bp04.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/vue-router-jbnxw7nb.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/client-nwyjxodt.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/vendor/shiki-lqo1hg2n.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/vendor/unocss-k727ub0h.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/nuxt-link-bumooa9d.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/dist-duc3zu0y.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/splitpanes.es-gcsn48te.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/dev-auth-he0eye7r.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/nbutton-gygn07c2.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/nicon-m1crov2l.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/ncard-ludmyw2u.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/npanel-grids-onrho735.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/ntext-input-e8iut2en.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/state-routes-jownks2o.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/state-tabs-mtxv3h6t.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/storage-options-nzog3hhp.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/telemetry-c77tnag3.js"><script type="module" src="/__NUXT_DEVTOOLS_BASE__/_nuxt/nh1c97z2.js" crossorigin></script></head><body><div id="__nuxt"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__NUXT_DEVTOOLS_BASE__/",buildId:"bbb0a778-4089-45a7-a6b3-246c726e08a4",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1773720482127,false]</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><script type="importmap">{"imports":{"#entry":"/__NUXT_DEVTOOLS_BASE__/_nuxt/jdttf2bd.js"}}</script><link rel="stylesheet" href="/__NUXT_DEVTOOLS_BASE__/_nuxt/entry.css-hn1q325i.css" crossorigin><link rel="stylesheet" href="/__NUXT_DEVTOOLS_BASE__/_nuxt/vendor/json-editor-vue.css-lkbe0qhh.css" crossorigin><link rel="stylesheet" href="/__NUXT_DEVTOOLS_BASE__/_nuxt/vendor/unocss.css-3gd0e2sv.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/jdttf2bd.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/_plugin-vue_export-helper-n58akrbk.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/rolldown-runtime-oipoa1or.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/vendor/json-editor-vue-eojr4v24.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/utils-jupbrzo6.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/ready-dadbdj5i.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/dist-mnod32r1.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/nuxt-otp6bp04.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/vue-router-jbnxw7nb.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/client-nwyjxodt.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/vendor/shiki-lqo1hg2n.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/vendor/unocss-k727ub0h.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/nuxt-link-bumooa9d.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/dist-duc3zu0y.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/splitpanes.es-gcsn48te.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/dev-auth-he0eye7r.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/nbutton-gygn07c2.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/nicon-m1crov2l.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/ncard-ludmyw2u.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/npanel-grids-onrho735.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/ntext-input-e8iut2en.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/state-routes-jownks2o.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/state-tabs-mtxv3h6t.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/storage-options-nzog3hhp.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/telemetry-c77tnag3.js"><script type="module" src="/__NUXT_DEVTOOLS_BASE__/_nuxt/jdttf2bd.js" crossorigin></script></head><body><div id="__nuxt"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__NUXT_DEVTOOLS_BASE__/",buildId:"d2d46a75-49ca-480e-b7d1-e84ddfa8d8d2",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1773722245229,false]</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><script type="importmap">{"imports":{"#entry":"/__NUXT_DEVTOOLS_BASE__/_nuxt/nh1c97z2.js"}}</script><link rel="stylesheet" href="/__NUXT_DEVTOOLS_BASE__/_nuxt/entry.css-hn1q325i.css" crossorigin><link rel="stylesheet" href="/__NUXT_DEVTOOLS_BASE__/_nuxt/vendor/json-editor-vue.css-lkbe0qhh.css" crossorigin><link rel="stylesheet" href="/__NUXT_DEVTOOLS_BASE__/_nuxt/vendor/unocss.css-3gd0e2sv.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/nh1c97z2.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/_plugin-vue_export-helper-n58akrbk.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/rolldown-runtime-oipoa1or.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/vendor/json-editor-vue-eojr4v24.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/utils-jupbrzo6.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/ready-dadbdj5i.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/dist-mnod32r1.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/nuxt-otp6bp04.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/vue-router-jbnxw7nb.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/client-nwyjxodt.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/vendor/shiki-lqo1hg2n.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/vendor/unocss-k727ub0h.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/nuxt-link-bumooa9d.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/dist-duc3zu0y.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/splitpanes.es-gcsn48te.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/dev-auth-he0eye7r.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/nbutton-gygn07c2.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/nicon-m1crov2l.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/ncard-ludmyw2u.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/npanel-grids-onrho735.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/ntext-input-e8iut2en.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/state-routes-jownks2o.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/state-tabs-mtxv3h6t.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/storage-options-nzog3hhp.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/telemetry-c77tnag3.js"><script type="module" src="/__NUXT_DEVTOOLS_BASE__/_nuxt/nh1c97z2.js" crossorigin></script></head><body><div id="__nuxt"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__NUXT_DEVTOOLS_BASE__/",buildId:"bbb0a778-4089-45a7-a6b3-246c726e08a4",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1773720482130,false]</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><script type="importmap">{"imports":{"#entry":"/__NUXT_DEVTOOLS_BASE__/_nuxt/jdttf2bd.js"}}</script><link rel="stylesheet" href="/__NUXT_DEVTOOLS_BASE__/_nuxt/entry.css-hn1q325i.css" crossorigin><link rel="stylesheet" href="/__NUXT_DEVTOOLS_BASE__/_nuxt/vendor/json-editor-vue.css-lkbe0qhh.css" crossorigin><link rel="stylesheet" href="/__NUXT_DEVTOOLS_BASE__/_nuxt/vendor/unocss.css-3gd0e2sv.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/jdttf2bd.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/_plugin-vue_export-helper-n58akrbk.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/rolldown-runtime-oipoa1or.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/vendor/json-editor-vue-eojr4v24.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/utils-jupbrzo6.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/ready-dadbdj5i.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/dist-mnod32r1.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/nuxt-otp6bp04.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/vue-router-jbnxw7nb.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/client-nwyjxodt.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/vendor/shiki-lqo1hg2n.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/vendor/unocss-k727ub0h.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/nuxt-link-bumooa9d.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/dist-duc3zu0y.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/splitpanes.es-gcsn48te.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/dev-auth-he0eye7r.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/nbutton-gygn07c2.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/nicon-m1crov2l.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/ncard-ludmyw2u.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/npanel-grids-onrho735.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/ntext-input-e8iut2en.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/state-routes-jownks2o.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/state-tabs-mtxv3h6t.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/storage-options-nzog3hhp.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/telemetry-c77tnag3.js"><script type="module" src="/__NUXT_DEVTOOLS_BASE__/_nuxt/jdttf2bd.js" crossorigin></script></head><body><div id="__nuxt"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__NUXT_DEVTOOLS_BASE__/",buildId:"d2d46a75-49ca-480e-b7d1-e84ddfa8d8d2",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1773722245233,false]</script></body></html>
@@ -1 +1 @@
1
- {"id":"bbb0a778-4089-45a7-a6b3-246c726e08a4","timestamp":1773720446537}
1
+ {"id":"d2d46a75-49ca-480e-b7d1-e84ddfa8d8d2","timestamp":1773722204999}
@@ -0,0 +1 @@
1
+ {"id":"d2d46a75-49ca-480e-b7d1-e84ddfa8d8d2","timestamp":1773722204999,"prerendered":[]}