Skip to content

Commit 3741cab

Browse files
committed
Refactor to move implementation to lib/
1 parent 698bd6a commit 3741cab

File tree

3 files changed

+72
-70
lines changed

3 files changed

+72
-70
lines changed

index.js

Lines changed: 1 addition & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -1,70 +1 @@
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'

lib/index.js

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
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+
}

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
"main": "index.js",
3232
"types": "index.d.ts",
3333
"files": [
34+
"lib/",
3435
"index.d.ts",
3536
"index.js"
3637
],

0 commit comments

Comments
 (0)