|
1 | | -/** |
2 | | - * @typedef {import('unist').Position} Position |
3 | | - * |
4 | | - * @typedef {[number, number]} RangeLike |
5 | | - * |
6 | | - * @typedef PointLike |
7 | | - * @property {number|null|undefined} [line] |
8 | | - * @property {number|null|undefined} [column] |
9 | | - * |
10 | | - * @typedef LocLike |
11 | | - * @property {PointLike|null|undefined} [start] |
12 | | - * @property {PointLike|null|undefined} [end] |
13 | | - * |
14 | | - * @typedef NodeLike |
15 | | - * @property {LocLike|null|undefined} [loc] |
16 | | - * @property {RangeLike|null|undefined} [range] |
17 | | - * @property {number|null|undefined} [start] |
18 | | - * @property {number|null|undefined} [end] |
19 | | - */ |
20 | | - |
21 | | -/** |
22 | | - * Given an estree `node`, returns a unist `position`. |
23 | | - * @param {NodeLike|null} [value] |
24 | | - * @returns {Position} |
25 | | - */ |
26 | | -export function positionFromEstree(value) { |
27 | | - /** @type {NodeLike} */ |
28 | | - const node = value || {} |
29 | | - /** @type {LocLike} */ |
30 | | - const loc = node.loc || {} |
31 | | - /** @type {RangeLike} */ |
32 | | - const range = node.range || [0, 0] |
33 | | - const startOffset = range[0] || node.start |
34 | | - const endOffset = range[1] || node.end |
35 | | - |
36 | | - return { |
37 | | - start: { |
38 | | - // @ts-expect-error: return no point / no position next major. |
39 | | - line: |
40 | | - loc.start && typeof loc.start.line === 'number' && loc.start.line > -1 |
41 | | - ? loc.start.line |
42 | | - : undefined, |
43 | | - // @ts-expect-error: return no point / no position next major. |
44 | | - column: |
45 | | - loc.start && |
46 | | - typeof loc.start.column === 'number' && |
47 | | - loc.start.column > -1 |
48 | | - ? loc.start.column + 1 |
49 | | - : undefined, |
50 | | - offset: |
51 | | - typeof startOffset === 'number' && startOffset > -1 |
52 | | - ? startOffset |
53 | | - : undefined |
54 | | - }, |
55 | | - end: { |
56 | | - // @ts-expect-error: return no point / no position next major. |
57 | | - line: |
58 | | - loc.end && typeof loc.end.line === 'number' && loc.end.line > -1 |
59 | | - ? loc.end.line |
60 | | - : undefined, |
61 | | - // @ts-expect-error: return no point / no position next major. |
62 | | - column: |
63 | | - loc.end && typeof loc.end.column === 'number' && loc.end.column > -1 |
64 | | - ? loc.end.column + 1 |
65 | | - : undefined, |
66 | | - offset: |
67 | | - typeof endOffset === 'number' && endOffset > -1 ? endOffset : undefined |
68 | | - } |
69 | | - } |
70 | | -} |
| 1 | +export {positionFromEstree} from './lib/index.js' |
0 commit comments