@vuetify/cli 1.1.5-beta.1 → 1.1.5

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 (2) hide show
  1. package/dist/index.mjs +388 -356
  2. package/package.json +2 -2
package/dist/index.mjs CHANGED
@@ -9848,7 +9848,8 @@ var en_default = {
9848
9848
  "done": "Done!"
9849
9849
  },
9850
9850
  "upgrade": {
9851
- "description": "Upgrade %{pkg} to latest version",
9851
+ "description": "[deprecated] Upgrade %{pkg} to latest version",
9852
+ "deprecated": "This command is deprecated and may be removed in a future release.",
9852
9853
  "not_global": "%{pkg} is not installed globally.",
9853
9854
  "start": "Upgrading %{pkg} globally using nypm...",
9854
9855
  "success": "Successfully upgraded %{pkg} to latest.",
@@ -9884,7 +9885,13 @@ var en_default = {
9884
9885
  "save": "Do you want to save these settings as a preset?",
9885
9886
  "name": "Preset name (display name):",
9886
9887
  "overwrite": "Preset \"%{name}\" already exists. Do you want to overwrite it?",
9887
- "saved": "Preset saved to %{path}"
9888
+ "saved": "Preset saved to %{path}",
9889
+ "usage": "Next time you can use: --preset %{slug}\nTip: run the \"presets\" command to list and use saved presets.",
9890
+ "start_select": "Start from a preset?",
9891
+ "start_scratch": {
9892
+ "label": "Start from scratch",
9893
+ "hint": "Manually select options"
9894
+ }
9888
9895
  },
9889
9896
  "directory": {
9890
9897
  "name": "Project name",
@@ -10023,7 +10030,7 @@ var en_default = {
10023
10030
  "platform": { "description": "The framework to use" },
10024
10031
  "verbose": { "description": "Output verbose logs" },
10025
10032
  "version": { "description": "The Vuetify version to check documentation for" },
10026
- "preset": { "description": "Path to a preset file to load" }
10033
+ "preset": { "description": "Preset key/name or path to a preset file (see: presets)" }
10027
10034
  },
10028
10035
  cli: {
10029
10036
  "main": { "description": "Unified CLI for Vuetify" },
@@ -10034,7 +10041,11 @@ var en_default = {
10034
10041
  utils: { "update_check": {
10035
10042
  "available": "Update available!",
10036
10043
  "run_update": "Run %{command} to update",
10037
- "run_with": "Run with %{command}"
10044
+ "run_with": "Run with %{command}",
10045
+ "update_to_continue": "Update now to continue?",
10046
+ "updating": "Updating...",
10047
+ "updated": "Updated.",
10048
+ "rerun": "Please re-run the command to continue."
10038
10049
  } }
10039
10050
  };
10040
10051
 
@@ -10099,7 +10110,8 @@ var ru_default = {
10099
10110
  "done": "Готово!"
10100
10111
  },
10101
10112
  "upgrade": {
10102
- "description": "Обновить %{pkg} до последней версии",
10113
+ "description": "[устарело] Обновить %{pkg} до последней версии",
10114
+ "deprecated": "Эта команда устарела и может быть удалена в будущих релизах.",
10103
10115
  "not_global": "%{pkg} не установлен глобально.",
10104
10116
  "start": "Обновляем %{pkg}",
10105
10117
  "success": "Успешно обновлен %{pkg} до последней версии.",
@@ -10130,7 +10142,13 @@ var ru_default = {
10130
10142
  "save": "Хотите сохранить эти настройки как пресет?",
10131
10143
  "name": "Имя пресета (отображаемое имя):",
10132
10144
  "overwrite": "Пресет \"%{name}\" уже существует. Перезаписать?",
10133
- "saved": "Пресет сохранен в %{path}"
10145
+ "saved": "Пресет сохранен в %{path}",
10146
+ "usage": "В следующий раз можно использовать: --preset %{slug}\nПодсказка: команда \"presets\" покажет список сохранённых пресетов.",
10147
+ "start_select": "Начать с пресета?",
10148
+ "start_scratch": {
10149
+ "label": "Настроить вручную",
10150
+ "hint": "Выбрать параметры в мастере"
10151
+ }
10134
10152
  },
10135
10153
  "directory": {
10136
10154
  "name": "Название проекта",
@@ -10272,7 +10290,7 @@ var ru_default = {
10272
10290
  "type": { "description": "Версия Vuetify для использования" },
10273
10291
  "platform": { "description": "Фреймворк для использования" },
10274
10292
  "verbose": { "description": "Вывести подробные логи" },
10275
- "preset": { "description": "Путь к файлу пресета для загрузки" },
10293
+ "preset": { "description": "Ключ/имя пресета или путь к файлу пресета (см. presets)" },
10276
10294
  "version": { "description": "Версия Vuetify для просмотра документации" }
10277
10295
  },
10278
10296
  cli: {
@@ -10284,7 +10302,11 @@ var ru_default = {
10284
10302
  utils: { "update_check": {
10285
10303
  "available": "Доступно обновление!",
10286
10304
  "run_update": "Выполните %{command}, чтобы обновить",
10287
- "run_with": "Выполните %{command}"
10305
+ "run_with": "Выполните %{command}",
10306
+ "update_to_continue": "Обновить сейчас, чтобы продолжить?",
10307
+ "updating": "Обновляю...",
10308
+ "updated": "Обновлено.",
10309
+ "rerun": "Перезапустите команду, чтобы продолжить."
10288
10310
  } }
10289
10311
  };
10290
10312
 
@@ -15539,7 +15561,7 @@ function moduleResolve(specifier, base, conditions, preserveSymlinks) {
15539
15561
  return finalizeResolution(resolved, base, preserveSymlinks);
15540
15562
  }
15541
15563
  const DEFAULT_CONDITIONS_SET = /* @__PURE__ */ new Set(["node", "import"]);
15542
- const isWindows$1 = process.platform === "win32";
15564
+ const isWindows = process.platform === "win32";
15543
15565
  const globalCache = globalThis["__EXSOLVE_CACHE__"] ||= /* @__PURE__ */ new Map();
15544
15566
  /**
15545
15567
  * Synchronously resolves a module url based on the options provided.
@@ -15626,7 +15648,7 @@ function resolveModulePath(id, options) {
15626
15648
  if (!resolved) return;
15627
15649
  if (!resolved.startsWith("file://") && options?.try) return;
15628
15650
  const absolutePath = fileURLToPath(resolved);
15629
- return isWindows$1 ? _normalizeWinPath(absolutePath) : absolutePath;
15651
+ return isWindows ? _normalizeWinPath(absolutePath) : absolutePath;
15630
15652
  }
15631
15653
  function _tryModuleResolve(specifier, base, conditions) {
15632
15654
  try {
@@ -125473,7 +125495,7 @@ const black = kolorist(30, 39);
125473
125495
  const red = kolorist(31, 39);
125474
125496
  const green = kolorist(32, 39);
125475
125497
  const yellow = kolorist(33, 39);
125476
- const blue$4 = kolorist(34, 39);
125498
+ const blue$5 = kolorist(34, 39);
125477
125499
  const magenta = kolorist(35, 39);
125478
125500
  const cyan = kolorist(36, 39);
125479
125501
  const white = kolorist(97, 39);
@@ -126549,7 +126571,7 @@ const colorfulBanner = `  \`$$[38;5;1
126549
126571
                  \`T:             
126550
126572
  `;
126551
126573
  const unstyledBanner = stripColors(colorfulBanner);
126552
- const coloredBanner = blue$4(unstyledBanner);
126574
+ const coloredBanner = blue$5(unstyledBanner);
126553
126575
  function createBanner() {
126554
126576
  if (!options.enabled) return unstyledBanner;
126555
126577
  else if (options.supportLevel < 2) return coloredBanner;
@@ -126557,6 +126579,71 @@ function createBanner() {
126557
126579
  }
126558
126580
  const banner = createBanner();
126559
126581
 
126582
+ //#endregion
126583
+ //#region ../shared/src/utils/presets.ts
126584
+ function getCreatePresetsDir() {
126585
+ return join$1(homedir(), ".vuetify", "create", "presets");
126586
+ }
126587
+ function listUserPresets() {
126588
+ const presetsDir = getCreatePresetsDir();
126589
+ const files = existsSync(presetsDir) ? readdirSync(presetsDir).filter((f) => f.endsWith(".json")) : [];
126590
+ const entries = [];
126591
+ for (const file of files) {
126592
+ const path = join$1(presetsDir, file);
126593
+ const slug = file.replace(/\.json$/, "");
126594
+ try {
126595
+ const content = readFileSync(path, "utf8");
126596
+ const preset = JSON.parse(content);
126597
+ const displayName = preset.meta?.displayName || slug;
126598
+ entries.push({
126599
+ file,
126600
+ path,
126601
+ invalid: false,
126602
+ slug,
126603
+ displayName,
126604
+ preset
126605
+ });
126606
+ } catch {
126607
+ entries.push({
126608
+ file,
126609
+ path,
126610
+ invalid: true,
126611
+ slug,
126612
+ displayName: slug
126613
+ });
126614
+ }
126615
+ }
126616
+ return entries;
126617
+ }
126618
+ function resolvePresetPath(input) {
126619
+ const presetPath = resolve$2(input);
126620
+ if (existsSync(presetPath)) return presetPath;
126621
+ const home = homedir();
126622
+ const presetName = input.endsWith(".json") ? input : `${input}.json`;
126623
+ const createPresetsDir = join$1(home, ".vuetify", "create", "presets");
126624
+ const createPresetPath = join$1(createPresetsDir, presetName);
126625
+ if (existsSync(createPresetPath)) return createPresetPath;
126626
+ const slug = slugify(input);
126627
+ const createSlugPath = join$1(createPresetsDir, `${slug}.json`);
126628
+ if (existsSync(createSlugPath)) return createSlugPath;
126629
+ const legacyPresetsDir = join$1(home, ".vuetify", "presets");
126630
+ const legacyPresetPath = join$1(legacyPresetsDir, presetName);
126631
+ if (existsSync(legacyPresetPath)) return legacyPresetPath;
126632
+ const legacySlugPath = join$1(legacyPresetsDir, `${slug}.json`);
126633
+ if (existsSync(legacySlugPath)) return legacySlugPath;
126634
+ }
126635
+ function loadPreset(input) {
126636
+ if (standardPresets[input]) return standardPresets[input];
126637
+ const path = resolvePresetPath(input);
126638
+ if (!path) return;
126639
+ try {
126640
+ const content = readFileSync(path, "utf8");
126641
+ return JSON.parse(content);
126642
+ } catch {
126643
+ return;
126644
+ }
126645
+ }
126646
+
126560
126647
  //#endregion
126561
126648
  //#region ../../node_modules/.pnpm/giget@3.1.2/node_modules/giget/dist/_chunks/giget.mjs
126562
126649
  async function download(url, filePath, options = {}) {
@@ -126797,18 +126884,6 @@ async function downloadTemplate(input, options = {}) {
126797
126884
  };
126798
126885
  }
126799
126886
 
126800
- //#endregion
126801
- //#region ../shared/src/features/css-none.ts
126802
- const cssNone = {
126803
- name: "css-none",
126804
- apply: async ({ cwd, isNuxt }) => {
126805
- const unocssConfigs = [join$1(cwd, "unocss.config.ts"), join$1(cwd, "uno.config.ts")];
126806
- for (const configPath of unocssConfigs) if (existsSync(configPath)) rmSync(configPath);
126807
- const tailwindCss = isNuxt ? join$1(cwd, "app/assets/css/tailwind.css") : join$1(cwd, "src/tailwind.css");
126808
- if (existsSync(tailwindCss)) rmSync(tailwindCss);
126809
- }
126810
- };
126811
-
126812
126887
  //#endregion
126813
126888
  //#region ../../node_modules/.pnpm/@babel+parser@7.29.0/node_modules/@babel/parser/lib/index.js
126814
126889
  var require_lib = /* @__PURE__ */ __commonJSMin$1(((exports) => {
@@ -147791,6 +147866,49 @@ function insertPluginIntoConfig(plugin, config) {
147791
147866
  config.plugins.splice(insertionIndex, 0, plugin.options ? builders.functionCall(plugin.constructor, plugin.options) : builders.functionCall(plugin.constructor));
147792
147867
  }
147793
147868
 
147869
+ //#endregion
147870
+ //#region ../shared/src/features/client-hints.ts
147871
+ const nuxtClientHints = {
147872
+ name: "client-hints",
147873
+ apply: async ({ cwd, isNuxt }) => {
147874
+ if (!isNuxt) return;
147875
+ const configPath = join$1(cwd, "nuxt.config.ts");
147876
+ const mod = await loadFile(configPath);
147877
+ const options = getDefaultExportOptions(mod);
147878
+ if (options) {
147879
+ options.vuetify ??= {};
147880
+ options.vuetify.moduleOptions ??= {};
147881
+ options.vuetify.moduleOptions.ssrClientHints = {
147882
+ reloadOnFirstRequest: false,
147883
+ viewportSize: true,
147884
+ prefersColorScheme: true,
147885
+ prefersReducedMotion: true,
147886
+ prefersColorSchemeOptions: { useBrowserThemeOnly: false }
147887
+ };
147888
+ options.vuetify.vuetifyOptions ??= {};
147889
+ options.vuetify.vuetifyOptions.theme ??= {};
147890
+ options.vuetify.vuetifyOptions.theme.defaultTheme = "dark";
147891
+ options.vuetify.vuetifyOptions.theme.themes = {
147892
+ light: {},
147893
+ dark: {}
147894
+ };
147895
+ }
147896
+ await writeFile(configPath, mod.generate().code);
147897
+ }
147898
+ };
147899
+
147900
+ //#endregion
147901
+ //#region ../shared/src/features/css-none.ts
147902
+ const cssNone = {
147903
+ name: "css-none",
147904
+ apply: async ({ cwd, isNuxt }) => {
147905
+ const unocssConfigs = [join$1(cwd, "unocss.config.ts"), join$1(cwd, "uno.config.ts")];
147906
+ for (const configPath of unocssConfigs) if (existsSync(configPath)) rmSync(configPath);
147907
+ const tailwindCss = isNuxt ? join$1(cwd, "app/assets/css/tailwind.css") : join$1(cwd, "src/tailwind.css");
147908
+ if (existsSync(tailwindCss)) rmSync(tailwindCss);
147909
+ }
147910
+ };
147911
+
147794
147912
  //#endregion
147795
147913
  //#region ../shared/src/features/dependencies/package.json
147796
147914
  var dependencies = {
@@ -148019,37 +148137,6 @@ const mcp = {
148019
148137
  }
148020
148138
  };
148021
148139
 
148022
- //#endregion
148023
- //#region ../shared/src/features/client-hints.ts
148024
- const nuxtClientHints = {
148025
- name: "client-hints",
148026
- apply: async ({ cwd, isNuxt }) => {
148027
- if (!isNuxt) return;
148028
- const configPath = join$1(cwd, "nuxt.config.ts");
148029
- const mod = await loadFile(configPath);
148030
- const options = getDefaultExportOptions(mod);
148031
- if (options) {
148032
- options.vuetify ??= {};
148033
- options.vuetify.moduleOptions ??= {};
148034
- options.vuetify.moduleOptions.ssrClientHints = {
148035
- reloadOnFirstRequest: false,
148036
- viewportSize: true,
148037
- prefersColorScheme: true,
148038
- prefersReducedMotion: true,
148039
- prefersColorSchemeOptions: { useBrowserThemeOnly: false }
148040
- };
148041
- options.vuetify.vuetifyOptions ??= {};
148042
- options.vuetify.vuetifyOptions.theme ??= {};
148043
- options.vuetify.vuetifyOptions.theme.defaultTheme = "dark";
148044
- options.vuetify.vuetifyOptions.theme.themes = {
148045
- light: {},
148046
- dark: {}
148047
- };
148048
- }
148049
- await writeFile(configPath, mod.generate().code);
148050
- }
148051
- };
148052
-
148053
148140
  //#endregion
148054
148141
  //#region ../shared/src/features/pinia.ts
148055
148142
  const pinia = {
@@ -148103,7 +148190,7 @@ export const useAppStore = defineStore('app', {
148103
148190
 
148104
148191
  //#endregion
148105
148192
  //#region ../shared/package.json
148106
- var version$1 = "1.1.5-beta.1";
148193
+ var version$1 = "1.1.5";
148107
148194
 
148108
148195
  //#endregion
148109
148196
  //#region ../shared/src/utils/getTemplateSource.ts
@@ -148159,13 +148246,7 @@ const router = {
148159
148246
  await writeFile(pluginsPath, mod.generate().code);
148160
148247
  if (isTypescript) {
148161
148248
  const tsConfigPath = join$1(cwd, "tsconfig.app.json");
148162
- if (existsSync(tsConfigPath)) {
148163
- const tsConfig = await loadFile(tsConfigPath);
148164
- tsConfig.exports.vueCompilerOptions = tsConfig.exports.vueCompilerOptions || {};
148165
- tsConfig.exports.vueCompilerOptions.plugins = tsConfig.exports.vueCompilerOptions.plugins || [];
148166
- tsConfig.exports.vueCompilerOptions.plugins.push("vue-router/volar/sfc-typed-router", "vue-router/volar/sfc-route-blocks");
148167
- await writeFile(tsConfigPath, tsConfig.generate().code);
148168
- }
148249
+ if (existsSync(tsConfigPath)) await updateTsconfigVueCompilerPlugins(tsConfigPath, ["vue-router/volar/sfc-typed-router", "vue-router/volar/sfc-route-blocks"]);
148169
148250
  }
148170
148251
  }
148171
148252
  };
@@ -148203,13 +148284,7 @@ const fileRouter = {
148203
148284
  }
148204
148285
  if (isTypescript) {
148205
148286
  const tsConfigPath = join$1(cwd, "tsconfig.app.json");
148206
- if (existsSync(tsConfigPath)) {
148207
- const tsConfig = await loadFile(tsConfigPath);
148208
- tsConfig.exports.vueCompilerOptions = tsConfig.exports.vueCompilerOptions || {};
148209
- tsConfig.exports.vueCompilerOptions.plugins = tsConfig.exports.vueCompilerOptions.plugins || [];
148210
- tsConfig.exports.vueCompilerOptions.plugins.push("vue-router/volar/sfc-typed-router", "vue-router/volar/sfc-route-blocks");
148211
- await writeFile(tsConfigPath, tsConfig.generate().code);
148212
- }
148287
+ if (existsSync(tsConfigPath)) await updateTsconfigVueCompilerPlugins(tsConfigPath, ["vue-router/volar/sfc-typed-router", "vue-router/volar/sfc-route-blocks"]);
148213
148288
  }
148214
148289
  }
148215
148290
  };
@@ -148256,6 +148331,22 @@ const router = createRouter({
148256
148331
  export default router
148257
148332
  `;
148258
148333
  }
148334
+ async function updateTsconfigVueCompilerPlugins(tsConfigPath, pluginsToAdd) {
148335
+ try {
148336
+ const raw = await readFile(tsConfigPath, "utf8");
148337
+ const config = JSON.parse(raw);
148338
+ const vueCompilerOptions = config.vueCompilerOptions || {};
148339
+ const current = Array.isArray(vueCompilerOptions.plugins) ? vueCompilerOptions.plugins : [];
148340
+ const plugins = Array.from(new Set([...current, ...pluginsToAdd]));
148341
+ config.vueCompilerOptions = {
148342
+ ...vueCompilerOptions,
148343
+ plugins
148344
+ };
148345
+ await writeFile(tsConfigPath, JSON.stringify(config, null, 2) + "\n");
148346
+ } catch {
148347
+ return;
148348
+ }
148349
+ }
148259
148350
 
148260
148351
  //#endregion
148261
148352
  //#region ../shared/src/features/tailwindcss.ts
@@ -149509,28 +149600,38 @@ async function createVuetify(options, commandOptions) {
149509
149600
  console.log(createBanner());
149510
149601
  Nt(i18n$1.t("messages.create.intro", { version }));
149511
149602
  }
149512
- if (args.preset) if (standardPresets[args.preset]) {
149513
- const preset = standardPresets[args.preset];
149514
- Object.assign(args, preset);
149515
- debug("loaded standard preset=", preset);
149516
- } else {
149517
- const home = homedir();
149518
- const presetPath = resolve$2(args.preset);
149519
- const globalPresetPath = join$1(home, ".vuetify", "presets", args.preset.endsWith(".json") ? args.preset : `${args.preset}.json`);
149520
- let presetContent;
149521
- if (existsSync(presetPath)) presetContent = readFileSync(presetPath, "utf8");
149522
- else if (existsSync(globalPresetPath)) presetContent = readFileSync(globalPresetPath, "utf8");
149523
- else {
149524
- const slugGlobalPath = join$1(home, ".vuetify", "presets", `${slugify(args.preset)}.json`);
149525
- if (existsSync(slugGlobalPath)) presetContent = readFileSync(slugGlobalPath, "utf8");
149526
- }
149527
- if (presetContent) try {
149528
- const preset = JSON.parse(presetContent);
149603
+ if (args.interactive && !args.preset) {
149604
+ const userPresets = listUserPresets().filter((p) => !p.invalid);
149605
+ const options = [
149606
+ {
149607
+ label: i18n$1.t("prompts.preset.start_scratch.label"),
149608
+ hint: i18n$1.t("prompts.preset.start_scratch.hint"),
149609
+ value: "__scratch__"
149610
+ },
149611
+ ...Object.entries(standardPresets).map(([key, preset]) => ({
149612
+ label: preset.meta.displayName,
149613
+ value: key,
149614
+ hint: `${preset.type}/${preset.platform}${preset.features.length ? ` | ${preset.features.join(",")}` : ""}`
149615
+ })),
149616
+ ...userPresets.map((p) => ({
149617
+ label: p.displayName,
149618
+ value: p.slug,
149619
+ hint: `${p.preset?.type || "vuetify"}/${p.preset?.platform || "vue"}${p.preset?.features?.length ? ` | ${p.preset.features.join(",")}` : ""}`
149620
+ }))
149621
+ ];
149622
+ const choice = await qt({
149623
+ message: i18n$1.t("prompts.preset.start_select"),
149624
+ initialValue: "__scratch__",
149625
+ options
149626
+ });
149627
+ if (typeof choice === "string" && choice !== "__scratch__") args.preset = choice;
149628
+ }
149629
+ if (args.preset) {
149630
+ const preset = loadPreset(args.preset);
149631
+ if (preset) {
149529
149632
  Object.assign(args, preset);
149530
149633
  debug("loaded preset=", preset);
149531
- } catch (error) {
149532
- debug("failed to parse preset", error);
149533
- }
149634
+ } else debug("failed to load preset=", args.preset);
149534
149635
  }
149535
149636
  const features = typeof args.features === "string" ? args.features.split(",").filter(Boolean) : args.features;
149536
149637
  const rawArgs = args;
@@ -149545,7 +149646,7 @@ async function createVuetify(options, commandOptions) {
149545
149646
  router: rawArgs.router
149546
149647
  }, cwd);
149547
149648
  debug("context=", JSON.stringify(context, null, 2));
149548
- if (args.interactive && !args.preset) {
149649
+ if (args.interactive) {
149549
149650
  if (await Mt({
149550
149651
  message: i18n$1.t("prompts.preset.save"),
149551
149652
  initialValue: false
@@ -149559,7 +149660,8 @@ async function createVuetify(options, commandOptions) {
149559
149660
  if (typeof displayName === "string") {
149560
149661
  const presetsDir = join$1(homedir(), ".vuetify", "create", "presets");
149561
149662
  if (!existsSync(presetsDir)) mkdirSync(presetsDir, { recursive: true });
149562
- const presetPath = join$1(presetsDir, `${slugify(displayName)}.json`);
149663
+ const slug = slugify(displayName);
149664
+ const presetPath = join$1(presetsDir, `${slug}.json`);
149563
149665
  let shouldSave = true;
149564
149666
  if (existsSync(presetPath)) shouldSave = await Mt({
149565
149667
  message: i18n$1.t("prompts.preset.overwrite", { name: displayName }),
@@ -149577,6 +149679,7 @@ async function createVuetify(options, commandOptions) {
149577
149679
  };
149578
149680
  writeFileSync(presetPath, JSON.stringify(presetContent, null, 2));
149579
149681
  R$3.step(i18n$1.t("prompts.preset.saved", { path: presetPath }));
149682
+ R$3.info(i18n$1.t("prompts.preset.usage", { slug }));
149580
149683
  }
149581
149684
  }
149582
149685
  }
@@ -149954,8 +150057,8 @@ const isInSsh = Boolean(P.env.SSH_CONNECTION || P.env.SSH_CLIENT || P.env.SSH_TT
149954
150057
  //#endregion
149955
150058
  //#region ../../node_modules/.pnpm/open@11.0.0/node_modules/open/index.js
149956
150059
  const fallbackAttemptSymbol = Symbol("fallbackAttempt");
149957
- const __dirname$2 = import.meta.url ? path.dirname(fileURLToPath(import.meta.url)) : "";
149958
- const localXdgOpenPath = path.join(__dirname$2, "xdg-open");
150060
+ const __dirname$1 = import.meta.url ? path.dirname(fileURLToPath(import.meta.url)) : "";
150061
+ const localXdgOpenPath = path.join(__dirname$1, "xdg-open");
149959
150062
  const { platform, arch } = P;
149960
150063
  const tryEachApp = async (apps, opener) => {
149961
150064
  if (apps.length === 0) return;
@@ -150063,7 +150166,7 @@ const baseOpen = async (options) => {
150063
150166
  } else {
150064
150167
  if (app) command = app;
150065
150168
  else {
150066
- const isBundled = !__dirname$2 || __dirname$2 === "/";
150169
+ const isBundled = !__dirname$1 || __dirname$1 === "/";
150067
150170
  let exeLocalXdgOpen = false;
150068
150171
  try {
150069
150172
  await fs$1.access(localXdgOpenPath, constants.X_OK);
@@ -150263,8 +150366,8 @@ const LINKS = {
150263
150366
 
150264
150367
  //#endregion
150265
150368
  //#region ../shared/src/functions/eslint.ts
150266
- const blue$3 = ansi256(33);
150267
- const description$1 = i18n$1.t("commands.eslint.description", { configPkg: blue$3(ESLINT_CONFIG) });
150369
+ const blue$4 = ansi256(33);
150370
+ const description$1 = i18n$1.t("commands.eslint.description", { configPkg: blue$4(ESLINT_CONFIG) });
150268
150371
  async function getEslintStatus() {
150269
150372
  const nuxtConfigPath = tryResolveFilePath("./nuxt.config", { extensions: [
150270
150373
  ".ts",
@@ -150387,8 +150490,8 @@ async function addEslint() {
150387
150490
  //#endregion
150388
150491
  //#region ../shared/src/functions/mcp.ts
150389
150492
  const RULER_PKG = "@intellectronica/ruler";
150390
- const blue$2 = ansi256(33);
150391
- const description = i18n$1.t("commands.mcp.description", { pkg: blue$2(RULER_PKG) });
150493
+ const blue$3 = ansi256(33);
150494
+ const description = i18n$1.t("commands.mcp.description", { pkg: blue$3(RULER_PKG) });
150392
150495
  async function addMcp() {
150393
150496
  Nt(description);
150394
150497
  if (await tryResolvePackage(RULER_PKG)) R$3.info(i18n$1.t("messages.eslint.deps_already_installed"));
@@ -150530,272 +150633,187 @@ async function getNpmPackageVersion(packageName) {
150530
150633
  }
150531
150634
 
150532
150635
  //#endregion
150533
- //#region ../../node_modules/.pnpm/ini@4.1.1/node_modules/ini/lib/ini.js
150534
- var require_ini = /* @__PURE__ */ __commonJSMin$1(((exports, module) => {
150535
- const { hasOwnProperty } = Object.prototype;
150536
- const encode = (obj, opt = {}) => {
150537
- if (typeof opt === "string") opt = { section: opt };
150538
- opt.align = opt.align === true;
150539
- opt.newline = opt.newline === true;
150540
- opt.sort = opt.sort === true;
150541
- opt.whitespace = opt.whitespace === true || opt.align === true;
150542
- /* istanbul ignore next */
150543
- opt.platform = opt.platform || typeof process !== "undefined" && process.platform;
150544
- opt.bracketedArray = opt.bracketedArray !== false;
150545
- /* istanbul ignore next */
150546
- const eol = opt.platform === "win32" ? "\r\n" : "\n";
150547
- const separator = opt.whitespace ? " = " : "=";
150548
- const children = [];
150549
- const keys = opt.sort ? Object.keys(obj).sort() : Object.keys(obj);
150550
- let padToChars = 0;
150551
- if (opt.align) padToChars = safe(keys.filter((k) => obj[k] === null || Array.isArray(obj[k]) || typeof obj[k] !== "object").map((k) => Array.isArray(obj[k]) ? `${k}[]` : k).concat([""]).reduce((a, b) => safe(a).length >= safe(b).length ? a : b)).length;
150552
- let out = "";
150553
- const arraySuffix = opt.bracketedArray ? "[]" : "";
150554
- for (const k of keys) {
150555
- const val = obj[k];
150556
- if (val && Array.isArray(val)) for (const item of val) out += safe(`${k}${arraySuffix}`).padEnd(padToChars, " ") + separator + safe(item) + eol;
150557
- else if (val && typeof val === "object") children.push(k);
150558
- else out += safe(k).padEnd(padToChars, " ") + separator + safe(val) + eol;
150559
- }
150560
- if (opt.section && out.length) out = "[" + safe(opt.section) + "]" + (opt.newline ? eol + eol : eol) + out;
150561
- for (const k of children) {
150562
- const nk = splitSections(k, ".").join("\\.");
150563
- const section = (opt.section ? opt.section + "." : "") + nk;
150564
- const child = encode(obj[k], {
150565
- ...opt,
150566
- section
150567
- });
150568
- if (out.length && child.length) out += eol;
150569
- out += child;
150570
- }
150571
- return out;
150572
- };
150573
- function splitSections(str, separator) {
150574
- var lastMatchIndex = 0;
150575
- var lastSeparatorIndex = 0;
150576
- var nextIndex = 0;
150577
- var sections = [];
150578
- do {
150579
- nextIndex = str.indexOf(separator, lastMatchIndex);
150580
- if (nextIndex !== -1) {
150581
- lastMatchIndex = nextIndex + separator.length;
150582
- if (nextIndex > 0 && str[nextIndex - 1] === "\\") continue;
150583
- sections.push(str.slice(lastSeparatorIndex, nextIndex));
150584
- lastSeparatorIndex = nextIndex + separator.length;
150585
- }
150586
- } while (nextIndex !== -1);
150587
- sections.push(str.slice(lastSeparatorIndex));
150588
- return sections;
150589
- }
150590
- const decode = (str, opt = {}) => {
150591
- opt.bracketedArray = opt.bracketedArray !== false;
150592
- const out = Object.create(null);
150593
- let p = out;
150594
- let section = null;
150595
- const re = /^\[([^\]]*)\]\s*$|^([^=]+)(=(.*))?$/i;
150596
- const lines = str.split(/[\r\n]+/g);
150597
- const duplicates = {};
150598
- for (const line of lines) {
150599
- if (!line || line.match(/^\s*[;#]/) || line.match(/^\s*$/)) continue;
150600
- const match = line.match(re);
150601
- if (!match) continue;
150602
- if (match[1] !== void 0) {
150603
- section = unsafe(match[1]);
150604
- if (section === "__proto__") {
150605
- p = Object.create(null);
150606
- continue;
150607
- }
150608
- p = out[section] = out[section] || Object.create(null);
150609
- continue;
150610
- }
150611
- const keyRaw = unsafe(match[2]);
150612
- let isArray;
150613
- if (opt.bracketedArray) isArray = keyRaw.length > 2 && keyRaw.slice(-2) === "[]";
150614
- else {
150615
- duplicates[keyRaw] = (duplicates?.[keyRaw] || 0) + 1;
150616
- isArray = duplicates[keyRaw] > 1;
150617
- }
150618
- const key = isArray ? keyRaw.slice(0, -2) : keyRaw;
150619
- if (key === "__proto__") continue;
150620
- const valueRaw = match[3] ? unsafe(match[4]) : true;
150621
- const value = valueRaw === "true" || valueRaw === "false" || valueRaw === "null" ? JSON.parse(valueRaw) : valueRaw;
150622
- if (isArray) {
150623
- if (!hasOwnProperty.call(p, key)) p[key] = [];
150624
- else if (!Array.isArray(p[key])) p[key] = [p[key]];
150625
- }
150626
- if (Array.isArray(p[key])) p[key].push(value);
150627
- else p[key] = value;
150628
- }
150629
- const remove = [];
150630
- for (const k of Object.keys(out)) {
150631
- if (!hasOwnProperty.call(out, k) || typeof out[k] !== "object" || Array.isArray(out[k])) continue;
150632
- const parts = splitSections(k, ".");
150633
- p = out;
150634
- const l = parts.pop();
150635
- const nl = l.replace(/\\\./g, ".");
150636
- for (const part of parts) {
150637
- if (part === "__proto__") continue;
150638
- if (!hasOwnProperty.call(p, part) || typeof p[part] !== "object") p[part] = Object.create(null);
150639
- p = p[part];
150640
- }
150641
- if (p === out && nl === l) continue;
150642
- p[nl] = out[k];
150643
- remove.push(k);
150644
- }
150645
- for (const del of remove) delete out[del];
150646
- return out;
150647
- };
150648
- const isQuoted = (val) => {
150649
- return val.startsWith("\"") && val.endsWith("\"") || val.startsWith("'") && val.endsWith("'");
150636
+ //#region ../shared/src/utils/strings.ts
150637
+ const capitalize = (str) => str.charAt(0).toUpperCase() + str.slice(1);
150638
+
150639
+ //#endregion
150640
+ //#region ../shared/src/utils/updateCheck.ts
150641
+ var import_semver = /* @__PURE__ */ __toESM$1(require_semver());
150642
+ const blue$2 = ansi256(33);
150643
+ async function getLatestVersion(packageName) {
150644
+ const timeout = new Promise((resolve) => setTimeout(() => resolve(null), 800));
150645
+ return await Promise.race([getNpmPackageVersion(packageName), timeout]);
150646
+ }
150647
+ function getLocalInstallType(pkg, packageName) {
150648
+ if (!pkg) return null;
150649
+ if (pkg.dependencies && pkg.dependencies[packageName]) return "dependencies";
150650
+ if (pkg.devDependencies && pkg.devDependencies[packageName]) return "devDependencies";
150651
+ return null;
150652
+ }
150653
+ function resolveLocalInstallCommand(agent, packageName, installType) {
150654
+ const target = `${packageName}@latest`;
150655
+ const dev = installType === "devDependencies";
150656
+ if (agent === "pnpm") return {
150657
+ command: "pnpm",
150658
+ args: [
150659
+ "add",
150660
+ ...dev ? ["-D"] : [],
150661
+ target
150662
+ ]
150650
150663
  };
150651
- const safe = (val) => {
150652
- if (typeof val !== "string" || val.match(/[=\r\n]/) || val.match(/^\[/) || val.length > 1 && isQuoted(val) || val !== val.trim()) return JSON.stringify(val);
150653
- return val.split(";").join("\\;").split("#").join("\\#");
150664
+ if (agent === "yarn") return {
150665
+ command: "yarn",
150666
+ args: [
150667
+ "add",
150668
+ ...dev ? ["-D"] : [],
150669
+ target
150670
+ ]
150654
150671
  };
150655
- const unsafe = (val, doUnesc) => {
150656
- val = (val || "").trim();
150657
- if (isQuoted(val)) {
150658
- if (val.charAt(0) === "'") val = val.slice(1, -1);
150659
- try {
150660
- val = JSON.parse(val);
150661
- } catch {}
150662
- } else {
150663
- let esc = false;
150664
- let unesc = "";
150665
- for (let i = 0, l = val.length; i < l; i++) {
150666
- const c = val.charAt(i);
150667
- if (esc) {
150668
- if ("\\;#".indexOf(c) !== -1) unesc += c;
150669
- else unesc += "\\" + c;
150670
- esc = false;
150671
- } else if (";#".indexOf(c) !== -1) break;
150672
- else if (c === "\\") esc = true;
150673
- else unesc += c;
150674
- }
150675
- if (esc) unesc += "\\";
150676
- return unesc.trim();
150677
- }
150678
- return val;
150672
+ if (agent === "bun") return {
150673
+ command: "bun",
150674
+ args: [
150675
+ "add",
150676
+ ...dev ? ["-d"] : [],
150677
+ target
150678
+ ]
150679
150679
  };
150680
- module.exports = {
150681
- parse: decode,
150682
- decode,
150683
- stringify: encode,
150684
- encode,
150685
- safe,
150686
- unsafe
150680
+ return {
150681
+ command: "npm",
150682
+ args: [
150683
+ "install",
150684
+ ...dev ? ["-D"] : [],
150685
+ target
150686
+ ]
150687
150687
  };
150688
- }));
150689
-
150690
- //#endregion
150691
- //#region ../../node_modules/.pnpm/global-directory@4.0.1/node_modules/global-directory/index.js
150692
- var import_ini = /* @__PURE__ */ __toESM$1(require_ini(), 1);
150693
- const isWindows = P.platform === "win32";
150694
- const readRc = (filePath) => {
150695
- try {
150696
- return import_ini.default.parse(fs.readFileSync(filePath, "utf8")).prefix;
150697
- } catch {}
150698
- };
150699
- const getEnvNpmPrefix = () => Object.keys(P.env).reduce((prefix, name) => /^npm_config_prefix$/i.test(name) ? P.env[name] : prefix, void 0);
150700
- const getGlobalNpmrc = () => {
150701
- if (isWindows && P.env.APPDATA) return path.join(P.env.APPDATA, "/npm/etc/npmrc");
150702
- if (P.execPath.includes("/Cellar/node")) {
150703
- const homebrewPrefix = P.execPath.slice(0, P.execPath.indexOf("/Cellar/node"));
150704
- return path.join(homebrewPrefix, "/lib/node_modules/npm/npmrc");
150705
- }
150706
- if (P.execPath.endsWith("/bin/node")) {
150707
- const installDir = path.dirname(path.dirname(P.execPath));
150708
- return path.join(installDir, "/etc/npmrc");
150709
- }
150710
- };
150711
- const getDefaultNpmPrefix = () => {
150712
- if (isWindows) {
150713
- const { APPDATA } = P.env;
150714
- return APPDATA ? path.join(APPDATA, "npm") : path.dirname(P.execPath);
150715
- }
150716
- return path.dirname(path.dirname(P.execPath));
150717
- };
150718
- const getNpmPrefix = () => {
150719
- const envPrefix = getEnvNpmPrefix();
150720
- if (envPrefix) return envPrefix;
150721
- const homePrefix = readRc(path.join(os.homedir(), ".npmrc"));
150722
- if (homePrefix) return homePrefix;
150723
- if (P.env.PREFIX) return P.env.PREFIX;
150724
- const globalPrefix = readRc(getGlobalNpmrc());
150725
- if (globalPrefix) return globalPrefix;
150726
- return getDefaultNpmPrefix();
150727
- };
150728
- const npmPrefix = path.resolve(getNpmPrefix());
150729
- const getYarnWindowsDirectory = () => {
150730
- if (isWindows && P.env.LOCALAPPDATA) {
150731
- const dir = path.join(P.env.LOCALAPPDATA, "Yarn");
150732
- if (fs.existsSync(dir)) return dir;
150733
- }
150734
- return false;
150735
- };
150736
- const getYarnPrefix = () => {
150737
- if (P.env.PREFIX) return P.env.PREFIX;
150738
- const windowsPrefix = getYarnWindowsDirectory();
150739
- if (windowsPrefix) return windowsPrefix;
150740
- const configPrefix = path.join(os.homedir(), ".config/yarn");
150741
- if (fs.existsSync(configPrefix)) return configPrefix;
150742
- const homePrefix = path.join(os.homedir(), ".yarn-config");
150743
- if (fs.existsSync(homePrefix)) return homePrefix;
150744
- return npmPrefix;
150745
- };
150746
- const globalDirectory = {};
150747
- globalDirectory.npm = {};
150748
- globalDirectory.npm.prefix = npmPrefix;
150749
- globalDirectory.npm.packages = path.join(npmPrefix, isWindows ? "node_modules" : "lib/node_modules");
150750
- globalDirectory.npm.binaries = isWindows ? npmPrefix : path.join(npmPrefix, "bin");
150751
- const yarnPrefix = path.resolve(getYarnPrefix());
150752
- globalDirectory.yarn = {};
150753
- globalDirectory.yarn.prefix = yarnPrefix;
150754
- globalDirectory.yarn.packages = path.join(yarnPrefix, getYarnWindowsDirectory() ? "Data/global/node_modules" : "global/node_modules");
150755
- globalDirectory.yarn.binaries = path.join(globalDirectory.yarn.packages, ".bin");
150756
-
150757
- //#endregion
150758
- //#region ../../node_modules/.pnpm/is-path-inside@4.0.0/node_modules/is-path-inside/index.js
150759
- function isPathInside(childPath, parentPath) {
150760
- const relation = path.relative(parentPath, childPath);
150761
- return Boolean(relation && relation !== ".." && !relation.startsWith(`..${path.sep}`) && relation !== path.resolve(childPath));
150762
150688
  }
150763
-
150764
- //#endregion
150765
- //#region ../../node_modules/.pnpm/is-installed-globally@1.0.0/node_modules/is-installed-globally/index.js
150766
- const __dirname$1 = path.dirname(fileURLToPath(import.meta.url));
150767
- const isInstalledGlobally = (() => {
150689
+ async function promptLocalUpdateToContinue(options) {
150690
+ const packageName = options.packageName;
150691
+ const currentVersion = options.currentVersion;
150692
+ const startCwd = process.cwd();
150693
+ const cwd = options.cwd || startCwd;
150694
+ if (!process.stdout.isTTY || !process.stdin.isTTY) return;
150768
150695
  try {
150769
- return isPathInside(__dirname$1, globalDirectory.yarn.packages) || isPathInside(__dirname$1, fs.realpathSync(globalDirectory.npm.packages));
150696
+ process.chdir(cwd);
150770
150697
  } catch {
150771
- return false;
150698
+ return;
150772
150699
  }
150773
- })();
150700
+ try {
150701
+ const latestVersion = await getLatestVersion(packageName);
150702
+ if (!latestVersion || !import_semver.default.gt(latestVersion, currentVersion)) return;
150703
+ const installType = getLocalInstallType(await getProjectPackageJSON().catch(() => null), packageName);
150704
+ if (!installType) return;
150705
+ Tt(`${yellow(bold(i18n$1.t("utils.update_check.available")))}\n\n${currentVersion} -> ${latestVersion}\n`, "", { withGuide: false });
150706
+ if (await Mt({
150707
+ message: i18n$1.t("utils.update_check.update_to_continue"),
150708
+ initialValue: true
150709
+ }) !== true) return;
150710
+ const pmResult = await getPackageManager().catch(() => null);
150711
+ const { command, args } = resolveLocalInstallCommand(pmResult?.agent || pmResult?.name || "npm", packageName, installType);
150712
+ R$3.info(i18n$1.t("utils.update_check.updating"));
150713
+ await K(command, args);
150714
+ R$3.success(i18n$1.t("utils.update_check.updated"));
150715
+ R$3.info(i18n$1.t("utils.update_check.rerun"));
150716
+ return true;
150717
+ } finally {
150718
+ process.chdir(startCwd);
150719
+ }
150720
+ }
150774
150721
 
150775
150722
  //#endregion
150776
- //#region ../shared/src/utils/updateCheck.ts
150777
- var import_semver = /* @__PURE__ */ __toESM$1(require_semver());
150723
+ //#region ../shared/src/commands/presets.ts
150778
150724
  const blue$1 = ansi256(33);
150779
- async function checkForUpdate(currentVersion) {
150780
- const packageName = "@vuetify/cli";
150781
- try {
150782
- const timeout = new Promise((resolve) => setTimeout(() => resolve(null), 800));
150783
- const latestVersion = await Promise.race([getNpmPackageVersion(packageName), timeout]);
150784
- if (latestVersion && import_semver.default.gt(latestVersion, currentVersion)) {
150785
- let message = `${yellow(bold(i18n$1.t("utils.update_check.available")))}\n\n${currentVersion} -> ${latestVersion}\n\n`;
150786
- const pkg = await getProjectPackageJSON().catch(() => null);
150787
- const isLocal = pkg && (pkg.dependencies && pkg.dependencies[packageName] || pkg.devDependencies && pkg.devDependencies[packageName]);
150788
- const pm = (await getPackageManager())?.name || "npm";
150789
- if (isLocal) {
150790
- const { command, args } = resolveCommand(pm, "install", [packageName]);
150791
- message += i18n$1.t("utils.update_check.run_update", { command: green(`${command} ${args.join(" ")}`) });
150792
- } else if (isInstalledGlobally) {
150793
- const { command, args } = resolveCommand(pm, "global", [packageName]);
150794
- message += i18n$1.t("utils.update_check.run_update", { command: green(`${command} ${args.join(" ")}`) });
150795
- } else message += i18n$1.t("utils.update_check.run_with", { command: blue$1(`${packageName}@latest`) });
150796
- Tt(message, "", { withGuide: false });
150725
+ function createPresetsCommand(options) {
150726
+ return defineCommand({
150727
+ meta: {
150728
+ name: "presets",
150729
+ description: i18n$1.t("commands.presets.description")
150730
+ },
150731
+ args: {
150732
+ ...projectArgs({ exclude: ["type"] }),
150733
+ list: {
150734
+ type: "boolean",
150735
+ description: "List available presets",
150736
+ alias: "l",
150737
+ default: false
150738
+ }
150739
+ },
150740
+ run: async ({ args }) => {
150741
+ Nt(i18n$1.t("commands.presets.intro"));
150742
+ const systemPresets = Object.entries(standardPresets).filter(([, preset]) => !options.filterType || preset.type === options.filterType).map(([key, preset]) => {
150743
+ const name = preset.meta.displayName;
150744
+ const type = capitalize(preset.type);
150745
+ const platform = capitalize(preset.platform);
150746
+ const features = preset.features || [];
150747
+ return {
150748
+ key,
150749
+ name,
150750
+ formattedLine: `${name} ${dim("(")}${blue$1(type)} + ${green(platform)}${features.length > 0 ? ` ${dim("|")} ${features.join(",")}` : ""}${dim(")")}`,
150751
+ invalid: false
150752
+ };
150753
+ });
150754
+ const userPresets = listUserPresets().map((p) => {
150755
+ if (p.invalid) return {
150756
+ name: p.displayName,
150757
+ invalid: true
150758
+ };
150759
+ const preset = p.preset || {};
150760
+ const rawType = preset.type || "vuetify";
150761
+ const type = capitalize(preset.type || "vuetify");
150762
+ const platform = capitalize(preset.platform || "vue");
150763
+ const features = preset.features || [];
150764
+ const formattedLine = `${p.displayName} ${dim("(")}${blue$1(type)} + ${green(platform)} ${dim("|")} ${features.join(",")}${dim(")")}`;
150765
+ return {
150766
+ name: p.displayName,
150767
+ invalid: false,
150768
+ file: p.file,
150769
+ slug: p.slug,
150770
+ type: rawType,
150771
+ formattedLine
150772
+ };
150773
+ }).filter((p) => {
150774
+ if (p.invalid) return true;
150775
+ return !options.filterType || p.type === options.filterType;
150776
+ });
150777
+ if (args.list) {
150778
+ R$3.message(dim("System Presets"));
150779
+ for (const p of systemPresets) R$3.success(p.formattedLine);
150780
+ const invalidUser = userPresets.filter((p) => p.invalid);
150781
+ const validUser = userPresets.filter((p) => !p.invalid);
150782
+ if (invalidUser.length > 0 || validUser.length > 0) {
150783
+ R$3.message(dim("User Presets"));
150784
+ for (const p of invalidUser) R$3.error(`${p.name} ${dim("(invalid)")}`);
150785
+ for (const p of validUser) R$3.success(p.formattedLine);
150786
+ }
150787
+ Wt(i18n$1.t("commands.presets.done"));
150788
+ return;
150789
+ }
150790
+ const selectionOptions = [...systemPresets.map((p) => ({
150791
+ label: p.formattedLine,
150792
+ value: p
150793
+ })), ...userPresets.filter((p) => !p.invalid).map((p) => ({
150794
+ label: p.formattedLine,
150795
+ value: p
150796
+ }))];
150797
+ const preset = await qt({
150798
+ message: i18n$1.t("commands.presets.select"),
150799
+ options: selectionOptions
150800
+ });
150801
+ if (!preset || typeof preset === "symbol") {
150802
+ R$3.warn(i18n$1.t("commands.presets.cancel"));
150803
+ Wt(i18n$1.t("commands.presets.done"));
150804
+ return;
150805
+ }
150806
+ R$3.success(i18n$1.t("commands.presets.selected", { name: preset.name }));
150807
+ const run = await Mt({ message: i18n$1.t("commands.presets.use") });
150808
+ if (run && typeof run !== "symbol") await createVuetify({
150809
+ ...args,
150810
+ preset: preset.key || preset.slug,
150811
+ type: options.type,
150812
+ version: options.version
150813
+ }, { intro: false });
150814
+ else Wt(i18n$1.t("commands.presets.done"));
150797
150815
  }
150798
- } catch {}
150816
+ });
150799
150817
  }
150800
150818
 
150801
150819
  //#endregion
@@ -150923,7 +150941,10 @@ function commandUpgradeFabric(pkgName) {
150923
150941
  name: "upgrade",
150924
150942
  description: i18n$1.t("commands.upgrade.description", { pkg: pkgName })
150925
150943
  },
150926
- run: () => upgradeSelf(pkgName)
150944
+ run: async () => {
150945
+ R$3.warning(i18n$1.t("commands.upgrade.deprecated"));
150946
+ await upgradeSelf(pkgName);
150947
+ }
150927
150948
  });
150928
150949
  }
150929
150950
 
@@ -151026,7 +151047,7 @@ const JsonReporter = { report: async (data, options) => {
151026
151047
 
151027
151048
  //#endregion
151028
151049
  //#region package.json
151029
- var version = "1.1.5-beta.1";
151050
+ var version = "1.1.5";
151030
151051
 
151031
151052
  //#endregion
151032
151053
  //#region src/commands/analyze.ts
@@ -151100,6 +151121,11 @@ const init = defineCommand({
151100
151121
  }
151101
151122
  },
151102
151123
  run: async ({ args }) => {
151124
+ if (await promptLocalUpdateToContinue({
151125
+ packageName: "@vuetify/cli",
151126
+ currentVersion: version,
151127
+ cwd: typeof args.cwd === "string" ? args.cwd : void 0
151128
+ })) return;
151103
151129
  await createVuetify({
151104
151130
  ...args,
151105
151131
  version
@@ -151117,6 +151143,10 @@ const upgrade = commandUpgradeFabric("@vuetify/cli");
151117
151143
 
151118
151144
  //#endregion
151119
151145
  //#region src/index.ts
151146
+ const presets = createPresetsCommand({
151147
+ version,
151148
+ type: "vuetify"
151149
+ });
151120
151150
  const main = defineCommand({
151121
151151
  meta: {
151122
151152
  name: "vuetify",
@@ -151125,6 +151155,7 @@ const main = defineCommand({
151125
151155
  },
151126
151156
  subCommands: {
151127
151157
  init,
151158
+ presets,
151128
151159
  add,
151129
151160
  update,
151130
151161
  docs,
@@ -151142,8 +151173,9 @@ const main = defineCommand({
151142
151173
  await v$3(main).then((completion) => {
151143
151174
  const initCommand = completion.commands.get("init");
151144
151175
  if (initCommand) registerProjectArgsCompletion(initCommand);
151176
+ const presetsCommand = completion.commands.get("presets");
151177
+ if (presetsCommand) registerProjectArgsCompletion(presetsCommand);
151145
151178
  });
151146
- if (!(process.argv.includes("--reporter") || process.argv.includes("-r"))) await checkForUpdate(version);
151147
151179
  runMain(main);
151148
151180
 
151149
151181
  //#endregion
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vuetify/cli",
3
- "version": "1.1.5-beta.1",
3
+ "version": "1.1.5",
4
4
  "description": "Vuetify CLI",
5
5
  "type": "module",
6
6
  "files": [
@@ -35,7 +35,7 @@
35
35
  "open": "^11.0.0",
36
36
  "pathe": "^2.0.3",
37
37
  "tsdown": "^0.20.3",
38
- "@vuetify/cli-shared": "1.1.5-beta.1"
38
+ "@vuetify/cli-shared": "1.1.5"
39
39
  },
40
40
  "dependencies": {
41
41
  "@typescript-eslint/parser": "^8.54.0"