@vue/compiler-sfc 3.5.14 → 3.5.15

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,5 +1,5 @@
1
1
  /**
2
- * @vue/compiler-sfc v3.5.14
2
+ * @vue/compiler-sfc v3.5.15
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -8039,6 +8039,7 @@ function processRule(id, rule) {
8039
8039
  }
8040
8040
  function rewriteSelector(id, rule, selector, selectorRoot, deep, slotted = false) {
8041
8041
  let node = null;
8042
+ let starNode = null;
8042
8043
  let shouldInject = !deep;
8043
8044
  selector.each((n) => {
8044
8045
  if (n.type === "combinator" && (n.value === ">>>" || n.value === "/deep/")) {
@@ -8123,10 +8124,11 @@ function rewriteSelector(id, rule, selector, selectorRoot, deep, slotted = false
8123
8124
  return false;
8124
8125
  }
8125
8126
  }
8126
- if (node) return;
8127
+ starNode = n;
8127
8128
  }
8128
- if (n.type !== "pseudo" && n.type !== "combinator" || n.type === "pseudo" && (n.value === ":is" || n.value === ":where") && !node) {
8129
+ if (n.type !== "pseudo" && n.type !== "combinator" && n.type !== "universal" || n.type === "pseudo" && (n.value === ":is" || n.value === ":where") && !node) {
8129
8130
  node = n;
8131
+ starNode = null;
8130
8132
  }
8131
8133
  });
8132
8134
  if (rule.nodes.some((node2) => node2.type === "rule")) {
@@ -8167,6 +8169,18 @@ function rewriteSelector(id, rule, selector, selectorRoot, deep, slotted = false
8167
8169
  quoteMark: `"`
8168
8170
  })
8169
8171
  );
8172
+ if (starNode) {
8173
+ selector.insertBefore(
8174
+ starNode,
8175
+ selectorParser.attribute({
8176
+ attribute: idToAdd,
8177
+ value: idToAdd,
8178
+ raws: {},
8179
+ quoteMark: `"`
8180
+ })
8181
+ );
8182
+ selector.removeChild(starNode);
8183
+ }
8170
8184
  }
8171
8185
  }
8172
8186
  function isSpaceCombinator(node) {
@@ -22568,13 +22582,13 @@ function resolveFS(ctx) {
22568
22582
  }
22569
22583
  return ctx.fs = {
22570
22584
  fileExists(file) {
22571
- if (file.endsWith(".vue.ts")) {
22585
+ if (file.endsWith(".vue.ts") && !file.endsWith(".d.vue.ts")) {
22572
22586
  file = file.replace(/\.ts$/, "");
22573
22587
  }
22574
22588
  return fs.fileExists(file);
22575
22589
  },
22576
22590
  readFile(file) {
22577
- if (file.endsWith(".vue.ts")) {
22591
+ if (file.endsWith(".vue.ts") && !file.endsWith(".d.vue.ts")) {
22578
22592
  file = file.replace(/\.ts$/, "");
22579
22593
  }
22580
22594
  return fs.readFile(file);
@@ -22702,7 +22716,7 @@ function resolveWithTS(containingFile, source, ts2, fs) {
22702
22716
  );
22703
22717
  if (res.resolvedModule) {
22704
22718
  let filename = res.resolvedModule.resolvedFileName;
22705
- if (filename.endsWith(".vue.ts")) {
22719
+ if (filename.endsWith(".vue.ts") && !filename.endsWith(".d.vue.ts")) {
22706
22720
  filename = filename.replace(/\.ts$/, "");
22707
22721
  }
22708
22722
  return fs.realpath ? fs.realpath(filename) : filename;
@@ -22746,13 +22760,13 @@ function fileToScope(ctx, filename, asGlobal = false) {
22746
22760
  }
22747
22761
  const fs = resolveFS(ctx);
22748
22762
  const source = fs.readFile(filename) || "";
22749
- const body = parseFile(filename, source, ctx.options.babelParserPlugins);
22763
+ const body = parseFile(filename, source, fs, ctx.options.babelParserPlugins);
22750
22764
  const scope = new TypeScope(filename, source, 0, recordImports(body));
22751
22765
  recordTypes(ctx, body, scope, asGlobal);
22752
22766
  fileToScopeCache.set(filename, scope);
22753
22767
  return scope;
22754
22768
  }
22755
- function parseFile(filename, content, parserPlugins) {
22769
+ function parseFile(filename, content, fs, parserPlugins) {
22756
22770
  const ext = path$1.extname(filename);
22757
22771
  if (ext === ".ts" || ext === ".mts" || ext === ".tsx" || ext === ".mtsx") {
22758
22772
  return parser$2.parse(content, {
@@ -22763,7 +22777,17 @@ function parseFile(filename, content, parserPlugins) {
22763
22777
  ),
22764
22778
  sourceType: "module"
22765
22779
  }).program.body;
22766
- } else if (ext === ".vue") {
22780
+ }
22781
+ const isUnknownTypeSource = !/\.[cm]?[tj]sx?$/.test(filename);
22782
+ const arbitraryTypeSource = `${filename.slice(0, -ext.length)}.d${ext}.ts`;
22783
+ const hasArbitraryTypeDeclaration = isUnknownTypeSource && fs.fileExists(arbitraryTypeSource);
22784
+ if (hasArbitraryTypeDeclaration) {
22785
+ return parser$2.parse(fs.readFile(arbitraryTypeSource), {
22786
+ plugins: resolveParserPlugins("ts", parserPlugins, true),
22787
+ sourceType: "module"
22788
+ }).program.body;
22789
+ }
22790
+ if (ext === ".vue") {
22767
22791
  const {
22768
22792
  descriptor: { script, scriptSetup }
22769
22793
  } = parse$1(content);
@@ -23084,6 +23108,14 @@ function inferRuntimeType(ctx, node, scope = node._ownerScope || ctxToScope(ctx)
23084
23108
  case "TSTypeReference": {
23085
23109
  const resolved = resolveTypeReference(ctx, node, scope);
23086
23110
  if (resolved) {
23111
+ if (resolved.type === "TSTypeAliasDeclaration") {
23112
+ return inferRuntimeType(
23113
+ ctx,
23114
+ resolved.typeAnnotation,
23115
+ resolved._ownerScope,
23116
+ isKeyOf
23117
+ );
23118
+ }
23087
23119
  return inferRuntimeType(ctx, resolved, resolved._ownerScope, isKeyOf);
23088
23120
  }
23089
23121
  if (node.typeName.type === "Identifier") {
@@ -23398,6 +23430,12 @@ function processDefineModel(ctx, node, declId) {
23398
23430
  if (!isCallOf(node, DEFINE_MODEL)) {
23399
23431
  return false;
23400
23432
  }
23433
+ if (!declId) {
23434
+ ctx.error(
23435
+ "defineModel() must be assigned to a variable. For example: const model = defineModel()",
23436
+ node
23437
+ );
23438
+ }
23401
23439
  ctx.hasDefineModelCall = true;
23402
23440
  const type = node.typeParameters && node.typeParameters.params[0] || void 0;
23403
23441
  let modelName;
@@ -24608,6 +24646,7 @@ let __temp${any}, __restore${any}
24608
24646
  if (destructureElements.length) {
24609
24647
  args += `, { ${destructureElements.join(", ")} }`;
24610
24648
  }
24649
+ let templateMap;
24611
24650
  let returned;
24612
24651
  if (!options.inlineTemplate || !sfc.template && ctx.hasDefaultExportRender) {
24613
24652
  const allBindings = {
@@ -24636,7 +24675,7 @@ let __temp${any}, __restore${any}
24636
24675
  if (options.templateOptions && options.templateOptions.ssr) {
24637
24676
  hasInlinedSsrRenderFn = true;
24638
24677
  }
24639
- const { code, ast, preamble, tips, errors } = compileTemplate({
24678
+ const { code, ast, preamble, tips, errors, map: map2 } = compileTemplate({
24640
24679
  filename,
24641
24680
  ast: sfc.template.ast,
24642
24681
  source: sfc.template.content,
@@ -24653,6 +24692,7 @@ let __temp${any}, __restore${any}
24653
24692
  bindingMetadata: ctx.bindingMetadata
24654
24693
  }
24655
24694
  });
24695
+ templateMap = map2;
24656
24696
  if (tips.length) {
24657
24697
  tips.forEach(warnOnce);
24658
24698
  }
@@ -24769,16 +24809,23 @@ ${exposeCall}`
24769
24809
  `
24770
24810
  );
24771
24811
  }
24812
+ const content = ctx.s.toString();
24813
+ let map = options.sourceMap !== false ? ctx.s.generateMap({
24814
+ source: filename,
24815
+ hires: true,
24816
+ includeContent: true
24817
+ }) : void 0;
24818
+ if (templateMap && map) {
24819
+ const offset = content.indexOf(returned);
24820
+ const templateLineOffset = content.slice(0, offset).split(/\r?\n/).length - 1;
24821
+ map = mergeSourceMaps(map, templateMap, templateLineOffset);
24822
+ }
24772
24823
  return {
24773
24824
  ...scriptSetup,
24774
24825
  bindings: ctx.bindingMetadata,
24775
24826
  imports: ctx.userImports,
24776
- content: ctx.s.toString(),
24777
- map: options.sourceMap !== false ? ctx.s.generateMap({
24778
- source: filename,
24779
- hires: true,
24780
- includeContent: true
24781
- }) : void 0,
24827
+ content,
24828
+ map,
24782
24829
  scriptAst: scriptAst == null ? void 0 : scriptAst.body,
24783
24830
  scriptSetupAst: scriptSetupAst == null ? void 0 : scriptSetupAst.body,
24784
24831
  deps: ctx.deps ? [...ctx.deps] : void 0
@@ -24941,8 +24988,41 @@ function isStaticNode(node) {
24941
24988
  }
24942
24989
  return false;
24943
24990
  }
24991
+ function mergeSourceMaps(scriptMap, templateMap, templateLineOffset) {
24992
+ const generator = new sourceMapJs.SourceMapGenerator();
24993
+ const addMapping = (map, lineOffset = 0) => {
24994
+ const consumer = new sourceMapJs.SourceMapConsumer(map);
24995
+ consumer.sources.forEach((sourceFile) => {
24996
+ generator._sources.add(sourceFile);
24997
+ const sourceContent = consumer.sourceContentFor(sourceFile);
24998
+ if (sourceContent != null) {
24999
+ generator.setSourceContent(sourceFile, sourceContent);
25000
+ }
25001
+ });
25002
+ consumer.eachMapping((m) => {
25003
+ if (m.originalLine == null) return;
25004
+ generator.addMapping({
25005
+ generated: {
25006
+ line: m.generatedLine + lineOffset,
25007
+ column: m.generatedColumn
25008
+ },
25009
+ original: {
25010
+ line: m.originalLine,
25011
+ column: m.originalColumn
25012
+ },
25013
+ source: m.source,
25014
+ name: m.name
25015
+ });
25016
+ });
25017
+ };
25018
+ addMapping(scriptMap);
25019
+ addMapping(templateMap, templateLineOffset);
25020
+ generator._sourceRoot = scriptMap.sourceRoot;
25021
+ generator._file = scriptMap.file;
25022
+ return generator.toJSON();
25023
+ }
24944
25024
 
24945
- const version = "3.5.14";
25025
+ const version = "3.5.15";
24946
25026
  const parseCache = parseCache$1;
24947
25027
  const errorMessages = {
24948
25028
  ...CompilerDOM.errorMessages,
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @vue/compiler-sfc v3.5.14
2
+ * @vue/compiler-sfc v3.5.15
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -22555,7 +22555,9 @@ function createCodegenContext(ast, {
22555
22555
  name = content;
22556
22556
  }
22557
22557
  }
22558
- addMapping(node.loc.start, name);
22558
+ if (node.loc.source) {
22559
+ addMapping(node.loc.start, name);
22560
+ }
22559
22561
  }
22560
22562
  if (newlineIndex === -3 /* Unknown */) {
22561
22563
  advancePositionWithMutation(context, code);
@@ -22571,7 +22573,7 @@ function createCodegenContext(ast, {
22571
22573
  context.column = code.length - newlineIndex;
22572
22574
  }
22573
22575
  }
22574
- if (node && node.loc !== locStub) {
22576
+ if (node && node.loc !== locStub && node.loc.source) {
22575
22577
  addMapping(node.loc.end);
22576
22578
  }
22577
22579
  }
@@ -26050,6 +26052,9 @@ const ignoreSideEffectTags = (node, context) => {
26050
26052
  };
26051
26053
 
26052
26054
  function isValidHTMLNesting(parent, child) {
26055
+ if (parent === "template") {
26056
+ return true;
26057
+ }
26053
26058
  if (parent in onlyValidChildren) {
26054
26059
  return onlyValidChildren[parent].has(child);
26055
26060
  }
@@ -41785,6 +41790,7 @@ function processRule(id, rule) {
41785
41790
  }
41786
41791
  function rewriteSelector(id, rule, selector, selectorRoot, deep, slotted = false) {
41787
41792
  let node = null;
41793
+ let starNode = null;
41788
41794
  let shouldInject = !deep;
41789
41795
  selector.each((n) => {
41790
41796
  if (n.type === "combinator" && (n.value === ">>>" || n.value === "/deep/")) {
@@ -41869,10 +41875,11 @@ function rewriteSelector(id, rule, selector, selectorRoot, deep, slotted = false
41869
41875
  return false;
41870
41876
  }
41871
41877
  }
41872
- if (node) return;
41878
+ starNode = n;
41873
41879
  }
41874
- if (n.type !== "pseudo" && n.type !== "combinator" || n.type === "pseudo" && (n.value === ":is" || n.value === ":where") && !node) {
41880
+ if (n.type !== "pseudo" && n.type !== "combinator" && n.type !== "universal" || n.type === "pseudo" && (n.value === ":is" || n.value === ":where") && !node) {
41875
41881
  node = n;
41882
+ starNode = null;
41876
41883
  }
41877
41884
  });
41878
41885
  if (rule.nodes.some((node2) => node2.type === "rule")) {
@@ -41913,6 +41920,18 @@ function rewriteSelector(id, rule, selector, selectorRoot, deep, slotted = false
41913
41920
  quoteMark: `"`
41914
41921
  })
41915
41922
  );
41923
+ if (starNode) {
41924
+ selector.insertBefore(
41925
+ starNode,
41926
+ selectorParser.attribute({
41927
+ attribute: idToAdd,
41928
+ value: idToAdd,
41929
+ raws: {},
41930
+ quoteMark: `"`
41931
+ })
41932
+ );
41933
+ selector.removeChild(starNode);
41934
+ }
41916
41935
  }
41917
41936
  }
41918
41937
  function isSpaceCombinator(node) {
@@ -47875,13 +47894,13 @@ function resolveFS(ctx) {
47875
47894
  }
47876
47895
  return ctx.fs = {
47877
47896
  fileExists(file) {
47878
- if (file.endsWith(".vue.ts")) {
47897
+ if (file.endsWith(".vue.ts") && !file.endsWith(".d.vue.ts")) {
47879
47898
  file = file.replace(/\.ts$/, "");
47880
47899
  }
47881
47900
  return fs.fileExists(file);
47882
47901
  },
47883
47902
  readFile(file) {
47884
- if (file.endsWith(".vue.ts")) {
47903
+ if (file.endsWith(".vue.ts") && !file.endsWith(".d.vue.ts")) {
47885
47904
  file = file.replace(/\.ts$/, "");
47886
47905
  }
47887
47906
  return fs.readFile(file);
@@ -47965,13 +47984,13 @@ function fileToScope(ctx, filename, asGlobal = false) {
47965
47984
  }
47966
47985
  const fs = resolveFS(ctx);
47967
47986
  const source = fs.readFile(filename) || "";
47968
- const body = parseFile(filename, source, ctx.options.babelParserPlugins);
47987
+ const body = parseFile(filename, source, fs, ctx.options.babelParserPlugins);
47969
47988
  const scope = new TypeScope(filename, source, 0, recordImports(body));
47970
47989
  recordTypes(ctx, body, scope, asGlobal);
47971
47990
  fileToScopeCache.set(filename, scope);
47972
47991
  return scope;
47973
47992
  }
47974
- function parseFile(filename, content, parserPlugins) {
47993
+ function parseFile(filename, content, fs, parserPlugins) {
47975
47994
  const ext = extname(filename);
47976
47995
  if (ext === ".ts" || ext === ".mts" || ext === ".tsx" || ext === ".mtsx") {
47977
47996
  return libExports.parse(content, {
@@ -47982,7 +48001,17 @@ function parseFile(filename, content, parserPlugins) {
47982
48001
  ),
47983
48002
  sourceType: "module"
47984
48003
  }).program.body;
47985
- } else if (ext === ".vue") {
48004
+ }
48005
+ const isUnknownTypeSource = !/\.[cm]?[tj]sx?$/.test(filename);
48006
+ const arbitraryTypeSource = `${filename.slice(0, -ext.length)}.d${ext}.ts`;
48007
+ const hasArbitraryTypeDeclaration = isUnknownTypeSource && fs.fileExists(arbitraryTypeSource);
48008
+ if (hasArbitraryTypeDeclaration) {
48009
+ return libExports.parse(fs.readFile(arbitraryTypeSource), {
48010
+ plugins: resolveParserPlugins("ts", parserPlugins, true),
48011
+ sourceType: "module"
48012
+ }).program.body;
48013
+ }
48014
+ if (ext === ".vue") {
47986
48015
  const {
47987
48016
  descriptor: { script, scriptSetup }
47988
48017
  } = parse$2(content);
@@ -48303,6 +48332,14 @@ function inferRuntimeType(ctx, node, scope = node._ownerScope || ctxToScope(ctx)
48303
48332
  case "TSTypeReference": {
48304
48333
  const resolved = resolveTypeReference(ctx, node, scope);
48305
48334
  if (resolved) {
48335
+ if (resolved.type === "TSTypeAliasDeclaration") {
48336
+ return inferRuntimeType(
48337
+ ctx,
48338
+ resolved.typeAnnotation,
48339
+ resolved._ownerScope,
48340
+ isKeyOf
48341
+ );
48342
+ }
48306
48343
  return inferRuntimeType(ctx, resolved, resolved._ownerScope, isKeyOf);
48307
48344
  }
48308
48345
  if (node.typeName.type === "Identifier") {
@@ -48617,6 +48654,12 @@ function processDefineModel(ctx, node, declId) {
48617
48654
  if (!isCallOf(node, DEFINE_MODEL)) {
48618
48655
  return false;
48619
48656
  }
48657
+ if (!declId) {
48658
+ ctx.error(
48659
+ "defineModel() must be assigned to a variable. For example: const model = defineModel()",
48660
+ node
48661
+ );
48662
+ }
48620
48663
  ctx.hasDefineModelCall = true;
48621
48664
  const type = node.typeParameters && node.typeParameters.params[0] || void 0;
48622
48665
  let modelName;
@@ -49846,6 +49889,7 @@ let __temp${any}, __restore${any}
49846
49889
  if (destructureElements.length) {
49847
49890
  args += `, { ${destructureElements.join(", ")} }`;
49848
49891
  }
49892
+ let templateMap;
49849
49893
  let returned;
49850
49894
  if (!options.inlineTemplate || !sfc.template && ctx.hasDefaultExportRender) {
49851
49895
  const allBindings = __spreadValues$1(__spreadValues$1({}, scriptBindings), setupBindings);
@@ -49871,7 +49915,7 @@ let __temp${any}, __restore${any}
49871
49915
  if (options.templateOptions && options.templateOptions.ssr) {
49872
49916
  hasInlinedSsrRenderFn = true;
49873
49917
  }
49874
- const { code, ast, preamble, tips, errors } = compileTemplate(__spreadProps(__spreadValues$1({
49918
+ const { code, ast, preamble, tips, errors, map: map2 } = compileTemplate(__spreadProps(__spreadValues$1({
49875
49919
  filename,
49876
49920
  ast: sfc.template.ast,
49877
49921
  source: sfc.template.content,
@@ -49887,6 +49931,7 @@ let __temp${any}, __restore${any}
49887
49931
  bindingMetadata: ctx.bindingMetadata
49888
49932
  })
49889
49933
  }));
49934
+ templateMap = map2;
49890
49935
  if (tips.length) {
49891
49936
  tips.forEach(warnOnce$1);
49892
49937
  }
@@ -50003,15 +50048,22 @@ ${exposeCall}`
50003
50048
  `
50004
50049
  );
50005
50050
  }
50051
+ const content = ctx.s.toString();
50052
+ let map = options.sourceMap !== false ? ctx.s.generateMap({
50053
+ source: filename,
50054
+ hires: true,
50055
+ includeContent: true
50056
+ }) : void 0;
50057
+ if (templateMap && map) {
50058
+ const offset = content.indexOf(returned);
50059
+ const templateLineOffset = content.slice(0, offset).split(/\r?\n/).length - 1;
50060
+ map = mergeSourceMaps(map, templateMap, templateLineOffset);
50061
+ }
50006
50062
  return __spreadProps(__spreadValues$1({}, scriptSetup), {
50007
50063
  bindings: ctx.bindingMetadata,
50008
50064
  imports: ctx.userImports,
50009
- content: ctx.s.toString(),
50010
- map: options.sourceMap !== false ? ctx.s.generateMap({
50011
- source: filename,
50012
- hires: true,
50013
- includeContent: true
50014
- }) : void 0,
50065
+ content,
50066
+ map,
50015
50067
  scriptAst: scriptAst == null ? void 0 : scriptAst.body,
50016
50068
  scriptSetupAst: scriptSetupAst == null ? void 0 : scriptSetupAst.body,
50017
50069
  deps: ctx.deps ? [...ctx.deps] : void 0
@@ -50174,6 +50226,39 @@ function isStaticNode(node) {
50174
50226
  }
50175
50227
  return false;
50176
50228
  }
50229
+ function mergeSourceMaps(scriptMap, templateMap, templateLineOffset) {
50230
+ const generator = new sourceMapExports.SourceMapGenerator();
50231
+ const addMapping = (map, lineOffset = 0) => {
50232
+ const consumer = new sourceMapExports.SourceMapConsumer(map);
50233
+ consumer.sources.forEach((sourceFile) => {
50234
+ generator._sources.add(sourceFile);
50235
+ const sourceContent = consumer.sourceContentFor(sourceFile);
50236
+ if (sourceContent != null) {
50237
+ generator.setSourceContent(sourceFile, sourceContent);
50238
+ }
50239
+ });
50240
+ consumer.eachMapping((m) => {
50241
+ if (m.originalLine == null) return;
50242
+ generator.addMapping({
50243
+ generated: {
50244
+ line: m.generatedLine + lineOffset,
50245
+ column: m.generatedColumn
50246
+ },
50247
+ original: {
50248
+ line: m.originalLine,
50249
+ column: m.originalColumn
50250
+ },
50251
+ source: m.source,
50252
+ name: m.name
50253
+ });
50254
+ });
50255
+ };
50256
+ addMapping(scriptMap);
50257
+ addMapping(templateMap, templateLineOffset);
50258
+ generator._sourceRoot = scriptMap.sourceRoot;
50259
+ generator._file = scriptMap.file;
50260
+ return generator.toJSON();
50261
+ }
50177
50262
 
50178
50263
  var __defProp = Object.defineProperty;
50179
50264
  var __getOwnPropSymbols = Object.getOwnPropertySymbols;
@@ -50191,7 +50276,7 @@ var __spreadValues = (a, b) => {
50191
50276
  }
50192
50277
  return a;
50193
50278
  };
50194
- const version = "3.5.14";
50279
+ const version = "3.5.15";
50195
50280
  const parseCache = parseCache$1;
50196
50281
  const errorMessages = __spreadValues(__spreadValues({}, errorMessages$1), DOMErrorMessages);
50197
50282
  const walk = walk$2;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vue/compiler-sfc",
3
- "version": "3.5.14",
3
+ "version": "3.5.15",
4
4
  "description": "@vue/compiler-sfc",
5
5
  "main": "dist/compiler-sfc.cjs.js",
6
6
  "module": "dist/compiler-sfc.esm-browser.js",
@@ -47,10 +47,10 @@
47
47
  "magic-string": "^0.30.17",
48
48
  "postcss": "^8.5.3",
49
49
  "source-map-js": "^1.2.1",
50
- "@vue/compiler-core": "3.5.14",
51
- "@vue/compiler-dom": "3.5.14",
52
- "@vue/compiler-ssr": "3.5.14",
53
- "@vue/shared": "3.5.14"
50
+ "@vue/compiler-dom": "3.5.15",
51
+ "@vue/compiler-ssr": "3.5.15",
52
+ "@vue/compiler-core": "3.5.15",
53
+ "@vue/shared": "3.5.15"
54
54
  },
55
55
  "devDependencies": {
56
56
  "@babel/types": "^7.27.1",
@@ -62,6 +62,6 @@
62
62
  "postcss-modules": "^6.0.1",
63
63
  "postcss-selector-parser": "^7.1.0",
64
64
  "pug": "^3.0.3",
65
- "sass": "^1.86.3"
65
+ "sass": "^1.89.0"
66
66
  }
67
67
  }