@vue-vine/eslint-parser 0.1.32 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
package/dist/index.mjs CHANGED
@@ -2340,32 +2340,6 @@ var require_sortedLastIndex = __commonJS({
2340
2340
  }
2341
2341
  });
2342
2342
 
2343
- // ../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/sortedIndexBy.js
2344
- var require_sortedIndexBy = __commonJS({
2345
- "../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/sortedIndexBy.js"(exports, module) {
2346
- "use strict";
2347
- var baseIteratee = require_baseIteratee();
2348
- var baseSortedIndexBy = require_baseSortedIndexBy();
2349
- function sortedIndexBy4(array, value, iteratee) {
2350
- return baseSortedIndexBy(array, value, baseIteratee(iteratee, 2));
2351
- }
2352
- module.exports = sortedIndexBy4;
2353
- }
2354
- });
2355
-
2356
- // ../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/sortedLastIndexBy.js
2357
- var require_sortedLastIndexBy = __commonJS({
2358
- "../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/sortedLastIndexBy.js"(exports, module) {
2359
- "use strict";
2360
- var baseIteratee = require_baseIteratee();
2361
- var baseSortedIndexBy = require_baseSortedIndexBy();
2362
- function sortedLastIndexBy2(array, value, iteratee) {
2363
- return baseSortedIndexBy(array, value, baseIteratee(iteratee, 2), true);
2364
- }
2365
- module.exports = sortedLastIndexBy2;
2366
- }
2367
- });
2368
-
2369
2343
  // ../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/head.js
2370
2344
  var require_head = __commonJS({
2371
2345
  "../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/head.js"(exports, module) {
@@ -2385,6 +2359,19 @@ var require_first = __commonJS({
2385
2359
  }
2386
2360
  });
2387
2361
 
2362
+ // ../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/sortedIndexBy.js
2363
+ var require_sortedIndexBy = __commonJS({
2364
+ "../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/sortedIndexBy.js"(exports, module) {
2365
+ "use strict";
2366
+ var baseIteratee = require_baseIteratee();
2367
+ var baseSortedIndexBy = require_baseSortedIndexBy();
2368
+ function sortedIndexBy2(array, value, iteratee) {
2369
+ return baseSortedIndexBy(array, value, baseIteratee(iteratee, 2));
2370
+ }
2371
+ module.exports = sortedIndexBy2;
2372
+ }
2373
+ });
2374
+
2388
2375
  // src/parse.ts
2389
2376
  import { parseForESLint as tsParseForESLint } from "@typescript-eslint/parser";
2390
2377
 
@@ -3858,24 +3845,12 @@ var IntermediateTokenizer = class {
3858
3845
  };
3859
3846
 
3860
3847
  // src/common/error-utils.ts
3861
- var import_sortedIndexBy = __toESM(require_sortedIndexBy());
3862
- function byIndex(x) {
3863
- return x.index;
3864
- }
3865
3848
  function insertError(templateMeta, error) {
3866
- const index = (0, import_sortedIndexBy.default)(templateMeta.errors, error, byIndex);
3849
+ const index = templateMeta.errors.findIndex((e) => e.index === error.index);
3867
3850
  templateMeta.errors.splice(index, 0, error);
3868
3851
  }
3869
3852
 
3870
3853
  // src/common/token-utils.ts
3871
- var import_sortedIndexBy2 = __toESM(require_sortedIndexBy());
3872
- var import_sortedLastIndexBy = __toESM(require_sortedLastIndexBy());
3873
- function byRange0(x) {
3874
- return x.range[0];
3875
- }
3876
- function byRange1(x) {
3877
- return x.range[1];
3878
- }
3879
3854
  function createSimpleToken(type, start, end, value, linesAndColumns) {
3880
3855
  return {
3881
3856
  type,
@@ -3891,144 +3866,22 @@ function insertComments(templateMeta, newComments) {
3891
3866
  if (newComments.length === 0) {
3892
3867
  return;
3893
3868
  }
3894
- const index = (0, import_sortedIndexBy2.default)(templateMeta.comments, newComments[0], byRange0);
3869
+ const index = templateMeta.comments.findIndex((comment) => comment.range[0] === newComments[0].range[0]);
3895
3870
  templateMeta.comments.splice(index, 0, ...newComments);
3896
3871
  }
3897
3872
  function replaceTokens(templateMeta, node, newTokens) {
3898
- const index = (0, import_sortedIndexBy2.default)(templateMeta.tokens, node, byRange0);
3899
- const count = (0, import_sortedLastIndexBy.default)(templateMeta.tokens, node, byRange1) - index;
3873
+ const index = templateMeta.tokens.findIndex((token) => token.range[0] === node.range[0]);
3874
+ const count = templateMeta.tokens.findIndex((token) => token.range[1] === node.range[1]) - index + 1;
3900
3875
  templateMeta.tokens.splice(index, count, ...newTokens);
3901
3876
  }
3902
3877
 
3903
3878
  // src/script/index.ts
3904
3879
  var import_first = __toESM(require_first());
3905
3880
  var import_last2 = __toESM(require_last());
3906
- var import_sortedIndexBy3 = __toESM(require_sortedIndexBy());
3881
+ var import_sortedIndexBy = __toESM(require_sortedIndexBy());
3907
3882
  import { fileURLToPath as fileURLToPath2 } from "node:url";
3908
3883
 
3909
- // src/template/utils/process-vine-template-node.ts
3910
- import { simpleTraverse as traverse2, TSESTree } from "@typescript-eslint/typescript-estree";
3911
- function fixVineOffset(token, fixCtx) {
3912
- const {
3913
- posInfo: {
3914
- templateStartOffset,
3915
- templateStartLine,
3916
- templateStartColumn
3917
- },
3918
- fixedCache: cache
3919
- } = fixCtx;
3920
- if (token.type !== "VTemplateRoot") {
3921
- if (!cache.has(token.range)) {
3922
- token.range[0] += templateStartOffset;
3923
- token.range[1] += templateStartOffset;
3924
- cache.add(token.range);
3925
- }
3926
- if (!cache.has(token.loc.start)) {
3927
- token.loc.start.line += templateStartLine - 1;
3928
- token.loc.start.column = token.loc.start.line === templateStartLine ? templateStartColumn + token.loc.start.column : token.loc.start.column;
3929
- cache.add(token.loc.start);
3930
- }
3931
- if (!cache.has(token.loc.end)) {
3932
- token.loc.end.line += templateStartLine - 1;
3933
- token.loc.end.column = token.loc.end.line === templateStartLine ? templateStartColumn + token.loc.end.column : token.loc.end.column;
3934
- cache.add(token.loc.end);
3935
- }
3936
- }
3937
- }
3938
- function extractForVineTemplate(ast) {
3939
- const extractVineTemplateResult = [];
3940
- const extractedTemplateNodes = /* @__PURE__ */ new WeakSet();
3941
- try {
3942
- traverse2(ast, {
3943
- enter(node, parent) {
3944
- if (node.type === "TaggedTemplateExpression" && node.tag.type === "Identifier" && node.tag.name === "vine") {
3945
- const templateNode = node;
3946
- if (extractedTemplateNodes.has(templateNode)) {
3947
- return;
3948
- }
3949
- extractedTemplateNodes.add(templateNode);
3950
- let parentOfTemplate;
3951
- let bindVineTemplateESTree;
3952
- if (parent?.type === TSESTree.AST_NODE_TYPES.ReturnStatement) {
3953
- parent.argument = null;
3954
- parentOfTemplate = parent;
3955
- bindVineTemplateESTree = ({ templateRootAST: vineESTree, templateMeta: _, ...templateInfo }) => {
3956
- parent.argument = vineESTree;
3957
- vineESTree.parent = parent;
3958
- vineESTree.templateInfo = templateInfo;
3959
- };
3960
- } else if (parent?.type === TSESTree.AST_NODE_TYPES.ArrowFunctionExpression) {
3961
- parent.body = null;
3962
- parentOfTemplate = parent;
3963
- bindVineTemplateESTree = ({ templateRootAST: vineESTree, templateMeta: _, ...templateInfo }) => {
3964
- parent.body = vineESTree;
3965
- vineESTree.parent = parent;
3966
- vineESTree.templateInfo = templateInfo;
3967
- };
3968
- }
3969
- ast.tokens = ast.tokens?.filter(
3970
- (token) => token.range[0] < node.range[0] || token.range[1] > node.range[1]
3971
- );
3972
- if (parentOfTemplate && bindVineTemplateESTree) {
3973
- extractVineTemplateResult.push({
3974
- templateNode,
3975
- parentOfTemplate,
3976
- bindVineTemplateESTree
3977
- });
3978
- }
3979
- }
3980
- }
3981
- }, true);
3982
- } catch (err) {
3983
- if (!(err instanceof Error) || err.message !== "BREAK_TRAVERSE") {
3984
- throw err;
3985
- }
3986
- }
3987
- return extractVineTemplateResult;
3988
- }
3989
- function prepareTemplate(templateNode) {
3990
- const { quasi: { quasis } } = templateNode;
3991
- const templateRawNode = quasis[0];
3992
- const templateRawContent = templateRawNode.value.raw;
3993
- const templateStartLine = templateRawNode.loc.start.line;
3994
- const templateEndLine = templateRawNode.loc.end.line;
3995
- const templateStartColumn = templateRawNode.loc.start.column + 1;
3996
- const templateStartOffset = templateRawNode.range[0] + 1;
3997
- const templateEndColumn = templateRawNode.loc.end.column - 1;
3998
- const templateEndOffset = templateRawNode.range[1] - 1;
3999
- return {
4000
- templatePositionInfo: {
4001
- templateStartLine,
4002
- templateStartColumn,
4003
- templateStartOffset,
4004
- templateEndOffset,
4005
- templateEndLine,
4006
- templateEndColumn
4007
- },
4008
- templateRawContent
4009
- };
4010
- }
4011
-
4012
3884
  // src/common/fix-locations.ts
4013
- function fixVineOffsetForScript(result, vineFixLocationContext) {
4014
- const traversed = /* @__PURE__ */ new WeakSet();
4015
- traverseNodes(result.ast, {
4016
- visitorKeys: result.visitorKeys,
4017
- enterNode(node) {
4018
- if (!traversed.has(node)) {
4019
- fixVineOffset(node, vineFixLocationContext);
4020
- }
4021
- },
4022
- leaveNode() {
4023
- }
4024
- });
4025
- for (const token of result.ast.tokens || []) {
4026
- fixVineOffset(token, vineFixLocationContext);
4027
- }
4028
- for (const comment of result.ast.comments || []) {
4029
- fixVineOffset(comment, vineFixLocationContext);
4030
- }
4031
- }
4032
3885
  function fixLocations(result, locationCalculator) {
4033
3886
  fixNodeLocations(result.ast, result.visitorKeys, locationCalculator);
4034
3887
  for (const token of result.ast.tokens || []) {
@@ -4141,7 +3994,7 @@ function processVForAliasAndIterator(code) {
4141
3994
  };
4142
3995
  }
4143
3996
  function getCommaTokenBeforeNode(tokens, node) {
4144
- let tokenIndex = (0, import_sortedIndexBy3.default)(
3997
+ let tokenIndex = (0, import_sortedIndexBy.default)(
4145
3998
  tokens,
4146
3999
  { range: node.range },
4147
4000
  (t) => t.range[0]
@@ -4186,14 +4039,13 @@ function throwErrorAsAdjustingOutsideOfCode(err, code, locationCalculator) {
4186
4039
  }
4187
4040
  throw err;
4188
4041
  }
4189
- function parseScriptFragment(code, locationCalculator, vineFixLocationContext, parserOptions) {
4042
+ function parseScriptFragment(code, locationCalculator, parserOptions) {
4190
4043
  try {
4191
4044
  const result = parseScript(
4192
4045
  code,
4193
4046
  parserOptions
4194
4047
  );
4195
4048
  fixLocations(result, locationCalculator);
4196
- fixVineOffsetForScript(result, vineFixLocationContext);
4197
4049
  return result;
4198
4050
  } catch (err) {
4199
4051
  const perr = ParseError.normalize(err);
@@ -4287,13 +4139,12 @@ function splitFilters(exp) {
4287
4139
  result.push(exp.slice(lastFilterIndex));
4288
4140
  return result;
4289
4141
  }
4290
- function parseExpressionBody(code, locationCalculator, vineFixLocationContext, parserOptions, allowEmpty = false) {
4142
+ function parseExpressionBody(code, locationCalculator, parserOptions, allowEmpty = false) {
4291
4143
  debug('[script] parse expression: "0(%s)"', code);
4292
4144
  try {
4293
4145
  const result = parseScriptFragment(
4294
4146
  `0(${code})`,
4295
4147
  locationCalculator.getSubCalculatorShift(-2),
4296
- vineFixLocationContext,
4297
4148
  parserOptions
4298
4149
  );
4299
4150
  const { ast } = result;
@@ -4319,13 +4170,12 @@ function parseExpressionBody(code, locationCalculator, vineFixLocationContext, p
4319
4170
  tokens.shift();
4320
4171
  tokens.shift();
4321
4172
  tokens.pop();
4322
- fixVineOffset(expression, vineFixLocationContext);
4323
4173
  return { expression, tokens, comments, references, variables: [] };
4324
4174
  } catch (err) {
4325
4175
  return throwErrorAsAdjustingOutsideOfCode(err, code, locationCalculator);
4326
4176
  }
4327
4177
  }
4328
- function parseFilter(code, locationCalculator, vineFixLocationContext, parserOptions) {
4178
+ function parseFilter(code, locationCalculator, parserOptions) {
4329
4179
  debug('[script] parse filter: "%s"', code);
4330
4180
  try {
4331
4181
  const expression = {
@@ -4350,7 +4200,6 @@ function parseFilter(code, locationCalculator, vineFixLocationContext, parserOpt
4350
4200
  const { ast } = parseScriptFragment(
4351
4201
  `"${calleeCode.trim()}"`,
4352
4202
  subCalculator,
4353
- vineFixLocationContext,
4354
4203
  parserOptions
4355
4204
  );
4356
4205
  const statement = ast.body[0];
@@ -4394,7 +4243,6 @@ function parseFilter(code, locationCalculator, vineFixLocationContext, parserOpt
4394
4243
  const result = parseScriptFragment(
4395
4244
  `0${argsCode}`,
4396
4245
  locationCalculator.getSubCalculatorAfter(paren).getSubCalculatorShift(-1),
4397
- vineFixLocationContext,
4398
4246
  parserOptions
4399
4247
  );
4400
4248
  const { ast } = result;
@@ -4451,14 +4299,13 @@ function parseScript(code, parserOptions) {
4451
4299
  }
4452
4300
  return { ast: result };
4453
4301
  }
4454
- function parseExpression(code, locationCalculator, vineFixLocationContext, parserOptions, { allowEmpty = false, allowFilters = false } = {}) {
4302
+ function parseExpression(code, locationCalculator, parserOptions, { allowEmpty = false, allowFilters = false } = {}) {
4455
4303
  debug('[script] parse expression: "%s"', code);
4456
4304
  const [mainCode, ...filterCodes] = allowFilters ? splitFilters(code) : [code];
4457
4305
  if (filterCodes.length === 0) {
4458
4306
  return parseExpressionBody(
4459
4307
  code,
4460
4308
  locationCalculator,
4461
- vineFixLocationContext,
4462
4309
  parserOptions,
4463
4310
  allowEmpty
4464
4311
  );
@@ -4466,7 +4313,6 @@ function parseExpression(code, locationCalculator, vineFixLocationContext, parse
4466
4313
  const retB = parseExpressionBody(
4467
4314
  mainCode,
4468
4315
  locationCalculator,
4469
- vineFixLocationContext,
4470
4316
  parserOptions
4471
4317
  );
4472
4318
  if (!retB.expression) {
@@ -4498,7 +4344,6 @@ function parseExpression(code, locationCalculator, vineFixLocationContext, parse
4498
4344
  const retF = parseFilter(
4499
4345
  filterCode,
4500
4346
  locationCalculator.getSubCalculatorShift(prevLoc + 1),
4501
- vineFixLocationContext,
4502
4347
  parserOptions
4503
4348
  );
4504
4349
  if (retF) {
@@ -4517,7 +4362,7 @@ function parseExpression(code, locationCalculator, vineFixLocationContext, parse
4517
4362
  ret.expression.loc.end = lastToken.loc.end;
4518
4363
  return ret;
4519
4364
  }
4520
- function parseVForExpression(code, locationCalculator, vineFixLocationContext, parserOptions) {
4365
+ function parseVForExpression(code, locationCalculator, parserOptions) {
4521
4366
  if (code.trim() === "") {
4522
4367
  throwEmptyError(locationCalculator, "'<alias> in <expression>'");
4523
4368
  }
@@ -4525,7 +4370,6 @@ function parseVForExpression(code, locationCalculator, vineFixLocationContext, p
4525
4370
  return parseVForExpressionForEcmaVersion5(
4526
4371
  code,
4527
4372
  locationCalculator,
4528
- vineFixLocationContext,
4529
4373
  parserOptions
4530
4374
  );
4531
4375
  }
@@ -4545,7 +4389,6 @@ function parseVForExpression(code, locationCalculator, vineFixLocationContext, p
4545
4389
  locationCalculator.getSubCalculatorShift(
4546
4390
  processed.hasParens ? -8 : -9
4547
4391
  ),
4548
- vineFixLocationContext,
4549
4392
  parserOptions
4550
4393
  );
4551
4394
  const { ast } = result;
@@ -4602,7 +4445,6 @@ function parseVForExpression(code, locationCalculator, vineFixLocationContext, p
4602
4445
  }
4603
4446
  }
4604
4447
  right.parent = expression;
4605
- fixVineOffset(expression, vineFixLocationContext);
4606
4448
  return { expression, tokens, comments, references, variables };
4607
4449
  } catch (err) {
4608
4450
  return throwErrorAsAdjustingOutsideOfCode(err, code, locationCalculator);
@@ -4612,7 +4454,7 @@ function isEcmaVersion5(parserOptions) {
4612
4454
  const ecmaVersion = getEcmaVersionIfUseEspree(parserOptions);
4613
4455
  return ecmaVersion != null && ecmaVersion <= 5;
4614
4456
  }
4615
- function parseVForExpressionForEcmaVersion5(code, locationCalculator, vineFixLocationContext, parserOptions) {
4457
+ function parseVForExpressionForEcmaVersion5(code, locationCalculator, parserOptions) {
4616
4458
  const processed = processVForAliasAndIterator(code);
4617
4459
  if (!processed.aliases.trim()) {
4618
4460
  return throwEmptyError(locationCalculator, "an alias");
@@ -4625,7 +4467,6 @@ function parseVForExpressionForEcmaVersion5(code, locationCalculator, vineFixLoc
4625
4467
  locationCalculator.getSubCalculatorShift(
4626
4468
  processed.hasParens ? 0 : -1
4627
4469
  ),
4628
- vineFixLocationContext,
4629
4470
  parserOptions
4630
4471
  );
4631
4472
  if (processed.hasParens) {
@@ -4665,7 +4506,6 @@ function parseVForExpressionForEcmaVersion5(code, locationCalculator, vineFixLoc
4665
4506
  const parsedIterator = parseVForIteratorForEcmaVersion5(
4666
4507
  processed.iterator,
4667
4508
  locationCalculator.getSubCalculatorShift(delimiterEnd),
4668
- vineFixLocationContext,
4669
4509
  parserOptions
4670
4510
  );
4671
4511
  tokens.push(...parsedIterator.tokens);
@@ -4692,11 +4532,10 @@ function parseVForExpressionForEcmaVersion5(code, locationCalculator, vineFixLoc
4692
4532
  return throwErrorAsAdjustingOutsideOfCode(err, code, locationCalculator);
4693
4533
  }
4694
4534
  }
4695
- function parseVForAliasesForEcmaVersion5(code, locationCalculator, vineFixLocationContext, parserOptions) {
4535
+ function parseVForAliasesForEcmaVersion5(code, locationCalculator, parserOptions) {
4696
4536
  const result = parseScriptFragment(
4697
4537
  `0(${code})`,
4698
4538
  locationCalculator.getSubCalculatorShift(-2),
4699
- vineFixLocationContext,
4700
4539
  parserOptions
4701
4540
  );
4702
4541
  const { ast } = result;
@@ -4733,11 +4572,10 @@ function parseVForAliasesForEcmaVersion5(code, locationCalculator, vineFixLocati
4733
4572
  return ret;
4734
4573
  }
4735
4574
  }
4736
- function parseVForIteratorForEcmaVersion5(code, locationCalculator, vineFixLocationContext, parserOptions) {
4575
+ function parseVForIteratorForEcmaVersion5(code, locationCalculator, parserOptions) {
4737
4576
  const result = parseScriptFragment(
4738
4577
  `0(${code})`,
4739
4578
  locationCalculator.getSubCalculatorShift(-2),
4740
- vineFixLocationContext,
4741
4579
  parserOptions
4742
4580
  );
4743
4581
  const { ast } = result;
@@ -4759,23 +4597,21 @@ function parseVForIteratorForEcmaVersion5(code, locationCalculator, vineFixLocat
4759
4597
  tokens.pop();
4760
4598
  return { right, tokens, comments, references };
4761
4599
  }
4762
- function parseVOnExpression(code, locationCalculator, vineFixLocationContext, parserOptions) {
4600
+ function parseVOnExpression(code, locationCalculator, parserOptions) {
4763
4601
  if (IS_FUNCTION_EXPRESSION.test(code) || IS_SIMPLE_PATH.test(code)) {
4764
4602
  return parseExpressionBody(
4765
4603
  code,
4766
4604
  locationCalculator,
4767
- vineFixLocationContext,
4768
4605
  parserOptions
4769
4606
  );
4770
4607
  }
4771
4608
  return parseVOnExpressionBody(
4772
4609
  code,
4773
4610
  locationCalculator,
4774
- vineFixLocationContext,
4775
4611
  parserOptions
4776
4612
  );
4777
4613
  }
4778
- function parseVOnExpressionBody(code, locationCalculator, vineFixLocationContext, parserOptions) {
4614
+ function parseVOnExpressionBody(code, locationCalculator, parserOptions) {
4779
4615
  debug('[script] parse v-on expression: "void function($event){%s}"', code);
4780
4616
  if (code.trim() === "") {
4781
4617
  throwEmptyError(locationCalculator, "statements");
@@ -4784,7 +4620,6 @@ function parseVOnExpressionBody(code, locationCalculator, vineFixLocationContext
4784
4620
  const result = parseScriptFragment(
4785
4621
  `void function($event){${code}}`,
4786
4622
  locationCalculator.getSubCalculatorShift(-22),
4787
- vineFixLocationContext,
4788
4623
  parserOptions
4789
4624
  );
4790
4625
  const { ast } = result;
@@ -4815,13 +4650,12 @@ function parseVOnExpressionBody(code, locationCalculator, vineFixLocationContext
4815
4650
  }
4816
4651
  tokens.splice(0, 6);
4817
4652
  tokens.pop();
4818
- fixVineOffset(expression, vineFixLocationContext);
4819
4653
  return { expression, tokens, comments, references, variables: [] };
4820
4654
  } catch (err) {
4821
4655
  return throwErrorAsAdjustingOutsideOfCode(err, code, locationCalculator);
4822
4656
  }
4823
4657
  }
4824
- function parseSlotScopeExpression(code, locationCalculator, vineFixLocationContext, parserOptions) {
4658
+ function parseSlotScopeExpression(code, locationCalculator, parserOptions) {
4825
4659
  debug('[script] parse slot-scope expression: "void function(%s) {}"', code);
4826
4660
  if (code.trim() === "") {
4827
4661
  throwEmptyError(
@@ -4833,7 +4667,6 @@ function parseSlotScopeExpression(code, locationCalculator, vineFixLocationConte
4833
4667
  const result = parseScriptFragment(
4834
4668
  `void function(${code}) {}`,
4835
4669
  locationCalculator.getSubCalculatorShift(-14),
4836
- vineFixLocationContext,
4837
4670
  parserOptions
4838
4671
  );
4839
4672
  const { ast } = result;
@@ -4906,7 +4739,7 @@ function getStandardDirectiveKind(element, directiveKey) {
4906
4739
  }
4907
4740
  return null;
4908
4741
  }
4909
- function parseAttributeValue(code, parserOptions, globalLocationCalculator, vineFixLocationContext, node, element, directiveKey) {
4742
+ function parseAttributeValue(code, parserOptions, globalLocationCalculator, node, element, directiveKey) {
4910
4743
  const firstChar = code[node.range[0]];
4911
4744
  const quoted = firstChar === '"' || firstChar === "'";
4912
4745
  const locationCalculator = globalLocationCalculator.getSubCalculatorAfter(
@@ -4929,28 +4762,24 @@ function parseAttributeValue(code, parserOptions, globalLocationCalculator, vine
4929
4762
  result = parseVForExpression(
4930
4763
  node.value,
4931
4764
  locationCalculator,
4932
- vineFixLocationContext,
4933
4765
  parserOptions
4934
4766
  );
4935
4767
  } else if (directiveKind === "on" && directiveKey.argument != null) {
4936
4768
  result = parseVOnExpression(
4937
4769
  node.value,
4938
4770
  locationCalculator,
4939
- vineFixLocationContext,
4940
4771
  parserOptions
4941
4772
  );
4942
4773
  } else if (directiveKind === "slot") {
4943
4774
  result = parseSlotScopeExpression(
4944
4775
  node.value,
4945
4776
  locationCalculator,
4946
- vineFixLocationContext,
4947
4777
  parserOptions
4948
4778
  );
4949
4779
  } else if (directiveKind === "bind") {
4950
4780
  result = parseExpression(
4951
4781
  node.value,
4952
4782
  locationCalculator,
4953
- vineFixLocationContext,
4954
4783
  parserOptions,
4955
4784
  { allowFilters: true }
4956
4785
  );
@@ -4958,7 +4787,6 @@ function parseAttributeValue(code, parserOptions, globalLocationCalculator, vine
4958
4787
  result = parseExpression(
4959
4788
  node.value,
4960
4789
  locationCalculator,
4961
- vineFixLocationContext,
4962
4790
  parserOptions
4963
4791
  );
4964
4792
  }
@@ -4984,7 +4812,7 @@ function parseAttributeValue(code, parserOptions, globalLocationCalculator, vine
4984
4812
  }
4985
4813
  return result;
4986
4814
  }
4987
- function parseDirectiveKeyStatically(node, templateMeta, vineFixLocationContext) {
4815
+ function parseDirectiveKeyStatically(node, templateMeta) {
4988
4816
  const {
4989
4817
  name: text,
4990
4818
  rawName: rawText,
@@ -5002,9 +4830,8 @@ function parseDirectiveKeyStatically(node, templateMeta, vineFixLocationContext)
5002
4830
  argument: null,
5003
4831
  modifiers: []
5004
4832
  };
5005
- fixVineOffset(directiveKey, vineFixLocationContext);
5006
4833
  let i = 0;
5007
- function createIdentifier(vineFixLocationContext2, start, end, name) {
4834
+ function createIdentifier(start, end, name) {
5008
4835
  const id = {
5009
4836
  type: "VIdentifier",
5010
4837
  parent: directiveKey,
@@ -5016,29 +4843,28 @@ function parseDirectiveKeyStatically(node, templateMeta, vineFixLocationContext)
5016
4843
  name: name || text.slice(start, end),
5017
4844
  rawName: rawText.slice(start, end)
5018
4845
  };
5019
- fixVineOffset(id, vineFixLocationContext2);
5020
4846
  return id;
5021
4847
  }
5022
4848
  if (shorthandSign.test(text)) {
5023
4849
  const sign = text[0];
5024
- directiveKey.name = createIdentifier(vineFixLocationContext, 0, 1, shorthandNameMap[sign]);
4850
+ directiveKey.name = createIdentifier(0, 1, shorthandNameMap[sign]);
5025
4851
  i = 1;
5026
4852
  } else {
5027
4853
  const colon = text.indexOf(":");
5028
4854
  if (colon !== -1) {
5029
- directiveKey.name = createIdentifier(vineFixLocationContext, 0, colon);
4855
+ directiveKey.name = createIdentifier(0, colon);
5030
4856
  i = colon + 1;
5031
4857
  }
5032
4858
  }
5033
4859
  if (directiveKey.name != null && text[i] === "[") {
5034
4860
  const len = text.slice(i).lastIndexOf("]");
5035
4861
  if (len !== -1) {
5036
- directiveKey.argument = createIdentifier(vineFixLocationContext, i, i + len + 1);
4862
+ directiveKey.argument = createIdentifier(i, i + len + 1);
5037
4863
  i = i + len + 1 + (text[i + len + 1] === "." ? 1 : 0);
5038
4864
  }
5039
4865
  }
5040
4866
  const modifiers = text.slice(i).split(".").map((modifierName) => {
5041
- const modifier = createIdentifier(vineFixLocationContext, i, i + modifierName.length);
4867
+ const modifier = createIdentifier(i, i + modifierName.length);
5042
4868
  if (modifierName === "" && i < text.length) {
5043
4869
  insertError(
5044
4870
  templateMeta,
@@ -5074,7 +4900,7 @@ function parseDirectiveKeyStatically(node, templateMeta, vineFixLocationContext)
5074
4900
  }
5075
4901
  if (directiveKey.name.rawName === "." && !directiveKey.modifiers.some(isPropModifier)) {
5076
4902
  const pos = (directiveKey.argument || directiveKey.name).range[1] - offset;
5077
- const propModifier = createIdentifier(vineFixLocationContext, pos, pos, "prop");
4903
+ const propModifier = createIdentifier(pos, pos, "prop");
5078
4904
  directiveKey.modifiers.unshift(propModifier);
5079
4905
  }
5080
4906
  return directiveKey;
@@ -5137,7 +4963,7 @@ function parseDirectiveKeyTokens(node) {
5137
4963
  }
5138
4964
  return tokens;
5139
4965
  }
5140
- function convertDynamicArgument(node, templateMeta, parserOptions, locationCalculator, vineFixLocationContext) {
4966
+ function convertDynamicArgument(node, templateMeta, parserOptions, locationCalculator) {
5141
4967
  const { argument } = node;
5142
4968
  if (!(argument != null && argument.type === "VIdentifier" && argument.name.startsWith("[") && argument.name.endsWith("]"))) {
5143
4969
  return;
@@ -5147,7 +4973,6 @@ function convertDynamicArgument(node, templateMeta, parserOptions, locationCalcu
5147
4973
  const { comments, expression, references, tokens } = parseExpression(
5148
4974
  rawName.slice(1, -1),
5149
4975
  locationCalculator.getSubCalculatorAfter(range[0] + 1),
5150
- vineFixLocationContext,
5151
4976
  parserOptions
5152
4977
  );
5153
4978
  node.argument = {
@@ -5158,7 +4983,6 @@ function convertDynamicArgument(node, templateMeta, parserOptions, locationCalcu
5158
4983
  expression,
5159
4984
  references
5160
4985
  };
5161
- fixVineOffset(node.argument, vineFixLocationContext);
5162
4986
  if (expression != null) {
5163
4987
  expression.parent = node.argument;
5164
4988
  }
@@ -5199,8 +5023,8 @@ function convertDynamicArgument(node, templateMeta, parserOptions, locationCalcu
5199
5023
  }
5200
5024
  }
5201
5025
  }
5202
- function createDirectiveKey(node, templateMeta, parserOptions, locationCalculator, vineFixLocationContext) {
5203
- const directiveKey = parseDirectiveKeyStatically(node, templateMeta, vineFixLocationContext);
5026
+ function createDirectiveKey(node, templateMeta, parserOptions, locationCalculator) {
5027
+ const directiveKey = parseDirectiveKeyStatically(node, templateMeta);
5204
5028
  const tokens = parseDirectiveKeyTokens(directiveKey);
5205
5029
  replaceTokens(templateMeta, directiveKey, tokens);
5206
5030
  if (directiveKey.name.name.startsWith("v-")) {
@@ -5213,8 +5037,7 @@ function createDirectiveKey(node, templateMeta, parserOptions, locationCalculato
5213
5037
  directiveKey,
5214
5038
  templateMeta,
5215
5039
  parserOptions,
5216
- locationCalculator,
5217
- vineFixLocationContext
5040
+ locationCalculator
5218
5041
  );
5219
5042
  return directiveKey;
5220
5043
  }
@@ -5231,12 +5054,7 @@ function convertToDirective(node, code, templateMeta, locationCalculator, vineFi
5231
5054
  node.key,
5232
5055
  templateMeta,
5233
5056
  parserOptions,
5234
- locationCalculator,
5235
- vineFixLocationContext
5236
- );
5237
- fixVineOffset(
5238
- directive.key,
5239
- vineFixLocationContext
5057
+ locationCalculator
5240
5058
  );
5241
5059
  const { argument } = directive.key;
5242
5060
  if (argument && argument.type === "VIdentifier" && argument.name.startsWith("[")) {
@@ -5263,7 +5081,6 @@ function convertToDirective(node, code, templateMeta, locationCalculator, vineFi
5263
5081
  code,
5264
5082
  parserOptions,
5265
5083
  locationCalculator,
5266
- vineFixLocationContext,
5267
5084
  node.value,
5268
5085
  node.parent.parent,
5269
5086
  directive.key
@@ -5276,10 +5093,6 @@ function convertToDirective(node, code, templateMeta, locationCalculator, vineFi
5276
5093
  expression: ret.expression,
5277
5094
  references: ret.references
5278
5095
  };
5279
- fixVineOffset(
5280
- directive.value,
5281
- vineFixLocationContext
5282
- );
5283
5096
  if (ret.expression != null) {
5284
5097
  ret.expression.parent = directive.value;
5285
5098
  }
@@ -5316,7 +5129,6 @@ function processMustache(parserOptions, globalLocationCalculator, vineFixLocatio
5316
5129
  const ret = parseExpression(
5317
5130
  mustache.value,
5318
5131
  locationCalculator,
5319
- vineFixLocationContext,
5320
5132
  parserOptions,
5321
5133
  { allowEmpty: true, allowFilters: true }
5322
5134
  );
@@ -5426,6 +5238,128 @@ var MATHML_ATTRIBUTE_NAME_MAP = /* @__PURE__ */ new Map([
5426
5238
  ["definitionurl", "definitionUrl"]
5427
5239
  ]);
5428
5240
 
5241
+ // src/template/utils/process-vine-template-node.ts
5242
+ import { simpleTraverse as tsESLintTravese, TSESTree } from "@typescript-eslint/typescript-estree";
5243
+ function fixVineOffset(token, fixCtx) {
5244
+ const {
5245
+ posInfo: {
5246
+ templateStartOffset,
5247
+ templateStartLine,
5248
+ templateStartColumn
5249
+ },
5250
+ fixedCache: cache
5251
+ } = fixCtx;
5252
+ if (!cache.has(token.range)) {
5253
+ token.range[0] += templateStartOffset;
5254
+ token.range[1] += templateStartOffset;
5255
+ cache.add(token.range);
5256
+ if ("start" in token) {
5257
+ token.start = token.range[0];
5258
+ }
5259
+ if ("end" in token) {
5260
+ token.end = token.range[1];
5261
+ }
5262
+ }
5263
+ if (!cache.has(token.loc.start)) {
5264
+ token.loc.start.line += templateStartLine - 1;
5265
+ token.loc.start.column = token.loc.start.line === templateStartLine ? templateStartColumn + token.loc.start.column : token.loc.start.column;
5266
+ cache.add(token.loc.start);
5267
+ }
5268
+ if (!cache.has(token.loc.end)) {
5269
+ token.loc.end.line += templateStartLine - 1;
5270
+ token.loc.end.column = token.loc.end.line === templateStartLine ? templateStartColumn + token.loc.end.column : token.loc.end.column;
5271
+ cache.add(token.loc.end);
5272
+ }
5273
+ }
5274
+ function fixFromVineTemplateRoot(root, fixCtx) {
5275
+ traverseNodes(
5276
+ root,
5277
+ {
5278
+ enterNode: (node) => {
5279
+ if (node.type === "VTemplateRoot") {
5280
+ return;
5281
+ }
5282
+ fixVineOffset(node, fixCtx);
5283
+ },
5284
+ leaveNode: () => {
5285
+ }
5286
+ }
5287
+ );
5288
+ }
5289
+ function extractForVineTemplate(ast) {
5290
+ const extractVineTemplateResult = [];
5291
+ const extractedTemplateNodes = /* @__PURE__ */ new WeakSet();
5292
+ try {
5293
+ tsESLintTravese(ast, {
5294
+ enter(node, parent) {
5295
+ if (node.type === "TaggedTemplateExpression" && node.tag.type === "Identifier" && node.tag.name === "vine") {
5296
+ const templateNode = node;
5297
+ if (extractedTemplateNodes.has(templateNode)) {
5298
+ return;
5299
+ }
5300
+ extractedTemplateNodes.add(templateNode);
5301
+ let parentOfTemplate;
5302
+ let bindVineTemplateESTree;
5303
+ if (parent?.type === TSESTree.AST_NODE_TYPES.ReturnStatement) {
5304
+ parent.argument = null;
5305
+ parentOfTemplate = parent;
5306
+ bindVineTemplateESTree = ({ templateRootAST: vineESTree, templateMeta: _, ...templateInfo }) => {
5307
+ parent.argument = vineESTree;
5308
+ vineESTree.parent = parent;
5309
+ vineESTree.templateInfo = templateInfo;
5310
+ };
5311
+ } else if (parent?.type === TSESTree.AST_NODE_TYPES.ArrowFunctionExpression) {
5312
+ parent.body = null;
5313
+ parentOfTemplate = parent;
5314
+ bindVineTemplateESTree = ({ templateRootAST: vineESTree, templateMeta: _, ...templateInfo }) => {
5315
+ parent.body = vineESTree;
5316
+ vineESTree.parent = parent;
5317
+ vineESTree.templateInfo = templateInfo;
5318
+ };
5319
+ }
5320
+ ast.tokens = ast.tokens?.filter(
5321
+ (token) => token.range[0] < node.range[0] || token.range[1] > node.range[1]
5322
+ );
5323
+ if (parentOfTemplate && bindVineTemplateESTree) {
5324
+ extractVineTemplateResult.push({
5325
+ templateNode,
5326
+ parentOfTemplate,
5327
+ bindVineTemplateESTree
5328
+ });
5329
+ }
5330
+ }
5331
+ }
5332
+ }, true);
5333
+ } catch (err) {
5334
+ if (!(err instanceof Error) || err.message !== "BREAK_TRAVERSE") {
5335
+ throw err;
5336
+ }
5337
+ }
5338
+ return extractVineTemplateResult;
5339
+ }
5340
+ function prepareTemplate(templateNode) {
5341
+ const { quasi: { quasis } } = templateNode;
5342
+ const templateRawNode = quasis[0];
5343
+ const templateRawContent = templateRawNode.value.raw;
5344
+ const templateStartLine = templateRawNode.loc.start.line;
5345
+ const templateEndLine = templateRawNode.loc.end.line;
5346
+ const templateStartColumn = templateRawNode.loc.start.column + 1;
5347
+ const templateStartOffset = templateRawNode.range[0] + 1;
5348
+ const templateEndColumn = templateRawNode.loc.end.column - 1;
5349
+ const templateEndOffset = templateRawNode.range[1] - 1;
5350
+ return {
5351
+ templatePositionInfo: {
5352
+ templateStartLine,
5353
+ templateStartColumn,
5354
+ templateStartOffset,
5355
+ templateEndOffset,
5356
+ templateEndLine,
5357
+ templateEndColumn
5358
+ },
5359
+ templateRawContent
5360
+ };
5361
+ }
5362
+
5429
5363
  // src/template/utils/tag-names.ts
5430
5364
  var HTML_VOID_ELEMENT_TAGS = /* @__PURE__ */ new Set([
5431
5365
  "area",
@@ -5686,9 +5620,10 @@ var VineTemplateParser = class {
5686
5620
  vTemplateMeta;
5687
5621
  templatePos;
5688
5622
  postProcessForScript = [];
5689
- offsetFixedTokenSet = /* @__PURE__ */ new WeakSet();
5690
- constructor(parserOptions, tokenizer, parentOfTemplate, templatePos) {
5623
+ offsetFixedTokenSet;
5624
+ constructor(parserOptions, tokenizer, parentOfTemplate, templatePos, offsetFixedTokenSet) {
5691
5625
  this.baseParserOptions = parserOptions;
5626
+ this.offsetFixedTokenSet = offsetFixedTokenSet;
5692
5627
  this.tokenizer = new IntermediateTokenizer(tokenizer, parserOptions);
5693
5628
  this.locationCalculator = new LocationCalculatorForHtml(
5694
5629
  tokenizer.gaps,
@@ -5738,7 +5673,10 @@ var VineTemplateParser = class {
5738
5673
  comment,
5739
5674
  this.fixVineOffsetCtx
5740
5675
  ));
5741
- fixVineOffset(this.vTemplateRoot, this.fixVineOffsetCtx);
5676
+ fixFromVineTemplateRoot(
5677
+ this.vTemplateRoot,
5678
+ this.fixVineOffsetCtx
5679
+ );
5742
5680
  }
5743
5681
  /**
5744
5682
  * Get the current node.
@@ -6076,13 +6014,13 @@ var VineTemplateParser = class {
6076
6014
  this[token.type](token);
6077
6015
  } while (token != null);
6078
6016
  this.popElementStackUntil(0);
6079
- this.correctMetaTokenPos();
6080
6017
  const templateRoot = this.vTemplateRoot;
6081
6018
  const templateMeta = this.vTemplateMeta;
6082
6019
  for (const proc of this.postProcessForScript) {
6083
6020
  proc(this.baseParserOptions);
6084
6021
  }
6085
6022
  this.postProcessForScript = [];
6023
+ this.correctMetaTokenPos();
6086
6024
  return [templateRoot, templateMeta];
6087
6025
  }
6088
6026
  };
@@ -10066,7 +10004,7 @@ function prepareForTemplateRootAST(tsFileAST) {
10066
10004
  };
10067
10005
  });
10068
10006
  }
10069
- function getTemplateRootDataList(prepareResult, parserOptions) {
10007
+ function getTemplateRootDataList(prepareResult, offsetFixedTokenSet, parserOptions) {
10070
10008
  if (!prepareResult) {
10071
10009
  return null;
10072
10010
  }
@@ -10076,7 +10014,8 @@ function getTemplateRootDataList(prepareResult, parserOptions) {
10076
10014
  parserOptions,
10077
10015
  tokenizer,
10078
10016
  parentOfTemplate,
10079
- templatePositionInfo
10017
+ templatePositionInfo,
10018
+ offsetFixedTokenSet
10080
10019
  );
10081
10020
  return templateParser.parse();
10082
10021
  }
@@ -10097,6 +10036,7 @@ function runParse(code, parserOptions) {
10097
10036
  code,
10098
10037
  parserOptions
10099
10038
  );
10039
+ const offsetFixedTokenSet = /* @__PURE__ */ new WeakSet();
10100
10040
  const prepareResults = prepareForTemplateRootAST(tsESLintAST);
10101
10041
  for (const prepareResult of prepareResults) {
10102
10042
  const {
@@ -10106,6 +10046,7 @@ function runParse(code, parserOptions) {
10106
10046
  } = prepareResult;
10107
10047
  const rootData = getTemplateRootDataList(
10108
10048
  prepareResult,
10049
+ offsetFixedTokenSet,
10109
10050
  {
10110
10051
  ...parserOptions,
10111
10052
  ...forceEnableLocationOptions