@markuplint/parser-utils 4.0.1 → 4.1.1

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attr-tokenizer.d.ts","sourceRoot":"","sources":["../src/attr-tokenizer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG3C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAavC;;;;GAIG;AACH,wBAAgB,aAAa,CAC5B,GAAG,EAAE,MAAM,EACX,QAAQ,sBAAkB,EAC1B,UAAU,YAAuB,EACjC,iBAAiB,GAAE,aAAa,CAAC,QAAQ,CAA4B,EACrE,uBAAuB,GAAE,aAAa,CAAC,MAAM,CAAgC;;;;;;;;;;EAgL7E"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"const.d.ts","sourceRoot":"","sources":["../src/const.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,WAAW,CAAC;AAElC;;;;GAIG;AACH,eAAO,MAAM,cAAc,UAyF1B,CAAC;AAEF,eAAO,MAAM,SAAS,QAA2B,CAAC;AAElD,eAAO,MAAM,aAAa,QAAa,CAAC;AAExC;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,wCAAyC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../src/debug.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,eAAO,MAAM,GAAG,gBAAqB,CAAC;AAEtC,wBAAgB,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,QAE7D"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debugger.d.ts","sourceRoot":"","sources":["../src/debugger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAc,MAAM,oBAAoB,CAAC;AAE3E,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,EAAE,QAAQ,UAAQ,YAS5F;AAED,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,SAAS,SAAS,EAAE,cAsCrE;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,SAAS,SAAS,EAAE,0BA6B/D"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decision.d.ts","sourceRoot":"","sources":["../src/decision.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,WAE5C;AAGD,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,MAAM,WAE3D"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detect-element-type.d.ts","sourceRoot":"","sources":["../src/detect-element-type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,uCAAuC,EAAE,MAAM,oBAAoB,CAAC;AAI/F,wBAAgB,iBAAiB,CAChC,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,uCAAuC,EAChD,cAAc,CAAC,EAAE,uCAAuC,GACtD,WAAW,CAKb"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enums.d.ts","sourceRoot":"","sources":["../src/enums.ts"],"names":[],"mappings":"AAAA,oBAAY,QAAQ;IACnB,aAAa,IAAA;IACb,kBAAkB,IAAA;IAClB,OAAO,IAAA;IACP,KAAK,IAAA;IACL,UAAU,IAAA;IACV,YAAY,IAAA;CACZ;AAED,oBAAY,SAAS;IACpB,UAAU,IAAA;IACV,IAAI,IAAA;IACJ,KAAK,IAAA;IACL,WAAW,IAAA;IACX,KAAK,IAAA;IACL,UAAU,IAAA;CACV"}
@@ -1,4 +1,14 @@
1
+ /**
2
+ * @deprecated Use {@link getPosition} instead. Will be removed in v5.0.0.
3
+ */
1
4
  export declare function getLine(rawCodeFragment: string, startOffset: number): number;
5
+ /**
6
+ * @deprecated Use {@link getPosition} instead. Will be removed in v5.0.0.
7
+ */
2
8
  export declare function getCol(rawCodeFragment: string, startOffset: number): number;
9
+ export declare function getPosition(rawCodeFragment: string, startOffset: number): {
10
+ readonly line: number;
11
+ readonly column: number;
12
+ };
3
13
  export declare function getEndLine(rawCodeFragment: string, startLine: number): number;
4
14
  export declare function getEndCol(rawCodeFragment: string, startCol: number): number;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-location.d.ts","sourceRoot":"","sources":["../src/get-location.ts"],"names":[],"mappings":"AAEA,wBAAgB,OAAO,CAAC,eAAe,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,UAEnE;AAED,wBAAgB,MAAM,CAAC,eAAe,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,UAGlE;AAED,wBAAgB,UAAU,CAAC,eAAe,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,UAEpE;AAED,wBAAgB,SAAS,CAAC,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,UAKlE"}
@@ -1,11 +1,23 @@
1
1
  const LINE_BREAK = '\n';
2
+ /**
3
+ * @deprecated Use {@link getPosition} instead. Will be removed in v5.0.0.
4
+ */
2
5
  export function getLine(rawCodeFragment, startOffset) {
3
6
  return rawCodeFragment.slice(0, startOffset).split(LINE_BREAK).length;
4
7
  }
8
+ /**
9
+ * @deprecated Use {@link getPosition} instead. Will be removed in v5.0.0.
10
+ */
5
11
  export function getCol(rawCodeFragment, startOffset) {
6
12
  const lines = rawCodeFragment.slice(0, startOffset).split(LINE_BREAK);
7
13
  return (lines.at(-1) ?? '').length + 1;
8
14
  }
15
+ export function getPosition(rawCodeFragment, startOffset) {
16
+ const lines = rawCodeFragment.slice(0, startOffset).split(LINE_BREAK);
17
+ const line = lines.length;
18
+ const column = (lines.at(-1) ?? '').length + 1;
19
+ return { line, column };
20
+ }
9
21
  export function getEndLine(rawCodeFragment, startLine) {
10
22
  return rawCodeFragment.split(LINE_BREAK).length - 1 + startLine;
11
23
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idl-attributes.d.ts","sourceRoot":"","sources":["../src/idl-attributes.ts"],"names":[],"mappings":"AAsaA,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM;;;EAc9C"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ignore-block.d.ts","sourceRoot":"","sources":["../src/ignore-block.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAQ,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,KAAK,EAAE,iBAAiB,EAAkC,MAAM,oBAAoB,CAAC;AAM5F,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,SAAS,EAAE,EAAE,QAAQ,SAAY,GAAG,WAAW,CAuBzG;AAmCD,wBAAgB,WAAW,CAE1B,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,EACxB,QAAQ,EAAE,SAAS,iBAAiB,EAAE,EAEtC,WAAW,EAAE,WAAW,EACxB,8BAA8B,UAAO,uBA6FrC"}
@@ -1,5 +1,5 @@
1
1
  import { MASK_CHAR } from './const.js';
2
- import { getCol, getLine } from './get-location.js';
2
+ import { getPosition } from './get-location.js';
3
3
  import { ParserError } from './parser-error.js';
4
4
  export function ignoreBlock(source, tags, maskChar = MASK_CHAR) {
5
5
  let replaced = source;
@@ -61,27 +61,75 @@ ignoreBlock, throwErrorWhenTagHasUnresolved = true) {
61
61
  return newNodeList;
62
62
  }
63
63
  for (const tag of stack) {
64
- const node = newNodeList.find(node => node.startOffset === tag.index);
64
+ const raw = `${tag.startTag}${tag.taggedCode}${tag.endTag ?? ''}`;
65
+ const tagIndexEnd = tag.index + raw.length;
66
+ const node = newNodeList.find(node => node.startOffset <= tag.index && node.endOffset >= tagIndexEnd);
65
67
  if (!node) {
66
68
  continue;
67
69
  }
68
- const raw = `${tag.startTag}${tag.taggedCode}${tag.endTag ?? ''}`;
69
- const token = parser.createToken(raw, node.startOffset, node.startLine, node.startCol);
70
- const psNode = {
71
- ...token,
72
- type: 'psblock',
73
- depth: node.depth,
74
- nodeName: `#ps:${tag.type}`,
75
- parentNode: node.parentNode,
76
- childNodes: [],
77
- isBogus: false,
78
- };
79
- if (node.type !== 'doctype' && node.parentNode?.childNodes) {
80
- parser.replaceChild(node.parentNode, node, psNode);
70
+ const replacementChildNodes = [];
71
+ if (node.startOffset === tag.index && node.endOffset === tagIndexEnd) {
72
+ const token = parser.createToken(raw, node.startOffset, node.startLine, node.startCol);
73
+ const psNode = {
74
+ ...token,
75
+ type: 'psblock',
76
+ depth: node.depth,
77
+ nodeName: `#ps:${tag.type}`,
78
+ parentNode: node.parentNode,
79
+ childNodes: [],
80
+ isBogus: false,
81
+ };
82
+ replacementChildNodes.push(psNode);
83
+ }
84
+ else if (node.type === 'text') {
85
+ const offset = tag.index - node.startOffset;
86
+ const above = node.raw.slice(0, offset);
87
+ const below = node.raw.slice(offset + raw.length);
88
+ if (above) {
89
+ const { line, column } = getPosition(node.raw, 0);
90
+ const token = parser.createToken(above, node.startOffset, node.startLine + line - 1, node.startCol + column - 1);
91
+ const aboveNode = {
92
+ ...token,
93
+ nodeName: '#text',
94
+ type: 'text',
95
+ parentNode: node.parentNode,
96
+ depth: node.depth,
97
+ };
98
+ replacementChildNodes.push(aboveNode);
99
+ }
100
+ const { line, column } = getPosition(raw, offset);
101
+ const token = parser.createToken(raw, node.startOffset + offset, node.startLine + line - 1, node.startCol + column - 1);
102
+ const psNode = {
103
+ ...token,
104
+ type: 'psblock',
105
+ depth: node.depth,
106
+ nodeName: `#ps:${tag.type}`,
107
+ parentNode: node.parentNode,
108
+ childNodes: [],
109
+ isBogus: false,
110
+ };
111
+ replacementChildNodes.push(psNode);
112
+ if (below) {
113
+ const { line, column } = getPosition(node.raw, offset + raw.length);
114
+ const token = parser.createToken(below, node.startOffset + offset + raw.length, node.startLine + line - 1, node.startCol + column - 1);
115
+ const aboveNode = {
116
+ ...token,
117
+ nodeName: '#text',
118
+ type: 'text',
119
+ parentNode: node.parentNode,
120
+ depth: node.depth,
121
+ };
122
+ replacementChildNodes.push(aboveNode);
123
+ }
124
+ }
125
+ if (replacementChildNodes.length > 0) {
126
+ if (node.type !== 'doctype' && node.parentNode?.childNodes) {
127
+ parser.replaceChild(node.parentNode, node, ...replacementChildNodes);
128
+ }
129
+ const index = newNodeList.indexOf(node);
130
+ newNodeList.splice(index, 1, ...replacementChildNodes);
131
+ tag.resolved = true;
81
132
  }
82
- const index = newNodeList.indexOf(node);
83
- newNodeList.splice(index, 1, psNode);
84
- tag.resolved = true;
85
133
  }
86
134
  for (const node of newNodeList) {
87
135
  if (node.type === 'starttag') {
@@ -120,9 +168,10 @@ ignoreBlock, throwErrorWhenTagHasUnresolved = true) {
120
168
  if (throwErrorWhenTagHasUnresolved) {
121
169
  for (const tag of stack) {
122
170
  if (!tag.resolved) {
171
+ const { line, column } = getPosition(source, tag.index);
123
172
  throw new ParserError('Parsing failed. Unsupported syntax detected', {
124
- line: getLine(source, tag.index),
125
- col: getCol(source, tag.index),
173
+ line,
174
+ col: column,
126
175
  raw: tag.startTag + tag.taggedCode + (tag.endTag ?? ''),
127
176
  });
128
177
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ignore-front-matter.d.ts","sourceRoot":"","sources":["../src/ignore-front-matter.ts"],"names":[],"mappings":"AAAA,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAgCA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser-error.d.ts","sourceRoot":"","sources":["../src/parser-error.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG;IAC7B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,qBAAa,WAAY,SAAQ,KAAK;IACrC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,IAAI,SAAiB;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;gBAET,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe;CAOlD;AAED,qBAAa,iBAAkB,SAAQ,WAAW;IACjD,IAAI,SAAuB;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;gBAGhC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,eAAe,GAAG;QACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAClC;CASF;AAED,qBAAa,iBAAkB,SAAQ,WAAW;IACjD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,IAAI,SAAuB;gBAG1B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,eAAe,GAAG;QACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;KAC1B;CASF"}
package/lib/parser.d.ts CHANGED
@@ -108,5 +108,5 @@ export declare abstract class Parser<Node extends {} = {}, State extends unknown
108
108
  };
109
109
  walk<Node extends MLASTNodeTreeItem>(nodeList: readonly Node[], walker: Walker<Node>, depth?: number): void;
110
110
  appendChild(parentNode: MLASTParentNode | null, ...childNodes: readonly MLASTChildNode[]): void;
111
- replaceChild(parentNode: MLASTParentNode, oldChildNode: MLASTChildNode, newChildNode: MLASTChildNode): void;
111
+ replaceChild(parentNode: MLASTParentNode, oldChildNode: MLASTChildNode, ...replacementChildNodes: readonly MLASTChildNode[]): void;
112
112
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
package/lib/parser.js CHANGED
@@ -17,7 +17,7 @@ import { defaultSpaces } from './const.js';
17
17
  import { domLog } from './debug.js';
18
18
  import { detectElementType } from './detect-element-type.js';
19
19
  import { AttrState, TagState } from './enums.js';
20
- import { getCol, getEndCol, getEndLine, getLine } from './get-location.js';
20
+ import { getEndCol, getEndLine, getPosition } from './get-location.js';
21
21
  import { ignoreBlock, restoreNode } from './ignore-block.js';
22
22
  import { ignoreFrontMatter } from './ignore-front-matter.js';
23
23
  import { ParserError } from './parser-error.js';
@@ -575,11 +575,12 @@ export class Parser {
575
575
  }
576
576
  sliceFragment(start, end) {
577
577
  const raw = this.rawCode.slice(start, end);
578
+ const { line, column } = getPosition(this.rawCode, start);
578
579
  return {
579
580
  raw,
580
581
  startOffset: start,
581
- startLine: getLine(this.rawCode, start),
582
- startCol: getCol(this.rawCode, start),
582
+ startLine: line,
583
+ startCol: column,
583
584
  };
584
585
  }
585
586
  getOffsetsFromCode(startLine, startCol, endLine, endCol) {
@@ -634,7 +635,7 @@ export class Parser {
634
635
  childNodes: __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_siblingsCorrection).call(this, newChildNodes),
635
636
  });
636
637
  }
637
- replaceChild(parentNode, oldChildNode, newChildNode) {
638
+ replaceChild(parentNode, oldChildNode, ...replacementChildNodes) {
638
639
  const index = parentNode.childNodes.findIndex(childNode => childNode.uuid === oldChildNode.uuid);
639
640
  if (index === -1) {
640
641
  return;
@@ -642,11 +643,11 @@ export class Parser {
642
643
  if (Array.prototype.toSpliced == null) {
643
644
  const newChildNodes = [...parentNode.childNodes];
644
645
  // TODO: Use splice instead of toSpliced until we end support for Node 18
645
- newChildNodes.splice(index, 1, newChildNode);
646
+ newChildNodes.splice(index, 1, ...replacementChildNodes);
646
647
  Object.assign(parentNode, { childNodes: newChildNodes });
647
648
  return;
648
649
  }
649
- const newChildNodes = parentNode.childNodes.toSpliced(index, 1, newChildNode);
650
+ const newChildNodes = parentNode.childNodes.toSpliced(index, 1, ...replacementChildNodes);
650
651
  Object.assign(parentNode, { childNodes: newChildNodes });
651
652
  }
652
653
  }
@@ -1088,8 +1089,8 @@ _Parser_booleanish = new WeakMap(), _Parser_defaultState = new WeakMap(), _Parse
1088
1089
  }
1089
1090
  stack.add(id);
1090
1091
  if (node.type === 'endtag') {
1091
- const openTag = newNodes.findLast(n => n.type === 'starttag' && n.nodeName === node.nodeName);
1092
- if (openTag && openTag.type === 'starttag' && !openTag.pairNode) {
1092
+ const openTag = newNodes.findLast((n) => n.type === 'starttag' && n.nodeName === node.nodeName);
1093
+ if (openTag && !openTag.pairNode) {
1093
1094
  __classPrivateFieldGet(this, _Parser_instances, "m", _Parser_pairing).call(this, openTag, node, false);
1094
1095
  newNodes.push(node);
1095
1096
  continue;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"script-parser.d.ts","sourceRoot":"","sources":["../src/script-parser.ts"],"names":[],"mappings":"AAGA,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,EAAE,CAU9D;AAED,MAAM,MAAM,eAAe,GAAG;IAC7B,IAAI,EAAE,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,GAAG,YAAY,CAAC;IAClF,KAAK,EAAE,MAAM,CAAC;CACd,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sort-nodes.d.ts","sourceRoot":"","sources":["../src/sort-nodes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,wBAAgB,SAAS,CAAC,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,cAMnE"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@markuplint/parser-utils",
3
- "version": "4.0.1",
3
+ "version": "4.1.1",
4
4
  "description": "Utility module for markuplint parser plugin",
5
5
  "repository": "git@github.com:markuplint/markuplint.git",
6
6
  "author": "Yusuke Hirao <yusukehirao@me.com>",
@@ -28,13 +28,13 @@
28
28
  },
29
29
  "dependencies": {
30
30
  "@markuplint/ml-ast": "4.0.1",
31
- "@markuplint/ml-spec": "4.0.1",
32
- "@markuplint/types": "4.0.1",
31
+ "@markuplint/ml-spec": "4.0.2",
32
+ "@markuplint/types": "4.0.2",
33
33
  "@types/uuid": "^9.0.8",
34
34
  "debug": "^4.3.4",
35
- "espree": "^10.0.0",
35
+ "espree": "^10.0.1",
36
36
  "type-fest": "^4.10.2",
37
37
  "uuid": "^9.0.1"
38
38
  },
39
- "gitHead": "bf84b391b580a8586fa7acaf56eb2e8114c8e33e"
39
+ "gitHead": "10ce6c8374106f311eeaaffbae8f3fdcbb40f877"
40
40
  }