@@ -30,8 +30,13 @@ const { init, parse } = require('es-module-lexer');
30
30
// this is necessary for the Web Assembly boot
31
31
await init;
32
32
33
- const [imports , exports ] = parse (' export var p = 5' );
34
- exports [0 ] === ' p' ;
33
+ const source = ' export var p = 5' ;
34
+ const [imports , exports ] = parse (source);
35
+
36
+ // Returns "p"
37
+ source .slice (exports [0 ].s , exports [0 ].e );
38
+ // Returns "p"
39
+ source .slice (exports [0 ].ls , exports [0 ].le );
35
40
})();
36
41
```
37
42
@@ -50,6 +55,7 @@ import { init, parse } from 'es-module-lexer';
50
55
export function q () {
51
56
52
57
};
58
+ export { x as 'external name' } from 'external';
53
59
54
60
// Comments provided to demonstrate edge cases
55
61
import /*comment!*/ ( 'asdf', { assert: { type: 'json' }});
@@ -61,21 +67,36 @@ import { init, parse } from 'es-module-lexer';
61
67
// Returns "modထ"
62
68
imports[0 ].n
63
69
// Returns "mod\u1011"
64
- source .substring (imports[0 ].s , imports[0 ].e );
70
+ source .slice (imports[0 ].s , imports[0 ].e );
65
71
// "s" = start
66
72
// "e" = end
67
73
68
74
// Returns "import { name } from 'mod'"
69
- source .substring (imports[0 ].ss , imports[0 ].se );
75
+ source .slice (imports[0 ].ss , imports[0 ].se );
70
76
// "ss" = statement start
71
77
// "se" = statement end
72
78
73
79
// Returns "{ type: 'json' }"
74
- source .substring (imports[1 ].a , imports[1 ].se );
80
+ source .slice (imports[1 ].a , imports[1 ].se );
75
81
// "a" = assert, -1 for no assertion
76
82
77
- // Returns "p,q"
78
- exports .toString ();
83
+ // Returns "external"
84
+ source .slice (imports[2 ].s , imports[2 ].e );
85
+
86
+ // Returns "p"
87
+ source .slice (exports [0 ].s , exports [0 ].e );
88
+ // Returns "p"
89
+ source .slice (exports [0 ].ls , exports [0 ].le );
90
+ // Returns "q"
91
+ source .slice (exports [1 ].s , exports [1 ].e );
92
+ // Returns "q"
93
+ source .slice (exports [1 ].ls , exports [1 ].le );
94
+ // Returns "'external name'"
95
+ source .slice (exports [2 ].s , exports [2 ].e );
96
+ // Returns -1
97
+ exports [2 ].ls ;
98
+ // Returns -1
99
+ exports [2 ].le ;
79
100
80
101
// Dynamic imports are indicated by imports[2].d > -1
81
102
// In this case the "d" index is the start of the dynamic import bracket
@@ -85,13 +106,13 @@ import { init, parse } from 'es-module-lexer';
85
106
// Returns "asdf" (only for string literal dynamic imports)
86
107
imports[2 ].n
87
108
// Returns "import /*comment!*/ ( 'asdf', { assert: { type: 'json' } })"
88
- source .substring (imports[2 ].ss , imports[2 ].se );
109
+ source .slice (imports[3 ].ss , imports[3 ].se );
89
110
// Returns "'asdf'"
90
- source .substring (imports[2 ].s , imports[2 ].e );
111
+ source .slice (imports[3 ].s , imports[3 ].e );
91
112
// Returns "( 'asdf', { assert: { type: 'json' } })"
92
- source .substring (imports[2 ].d , imports[2 ].se );
113
+ source .slice (imports[3 ].d , imports[3 ].se );
93
114
// Returns "{ assert: { type: 'json' } }"
94
- source .substring (imports[2 ].a , imports[2 ].se - 1 );
115
+ source .slice (imports[3 ].a , imports[3 ].se - 1 );
95
116
96
117
// For non-string dynamic import expressions:
97
118
// - n will be undefined
@@ -101,11 +122,11 @@ import { init, parse } from 'es-module-lexer';
101
122
// For nested dynamic imports, the se value of the outer import is -1 as end tracking does not
102
123
// currently support nested dynamic immports
103
124
104
- // import.meta is indicated by imports[2 ].d === -2
125
+ // import.meta is indicated by imports[3 ].d === -2
105
126
// Returns true
106
- imports[2 ].d === - 2 ;
127
+ imports[4 ].d === - 2 ;
107
128
// Returns "import /*comment!*/.meta"
108
- source .substring (imports[2 ].s , imports[2 ].e );
129
+ source .slice (imports[4 ].s , imports[4 ].e );
109
130
// ss and se are the same for import meta
110
131
})();
111
132
```
0 commit comments