@zokugun/regexp 0.3.0

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,2 @@
1
+ import { Token } from '../types.cjs';
2
+ export declare const pegParse: (s: string) => Token;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Flavor = exports.TokenType = exports.translate = exports.transform = exports.visit = exports.stringify = exports.parse = void 0;
4
+ var escape_js_1 = require("./escape.cjs");
5
+ Object.defineProperty(exports, "escape", { enumerable: true, get: function () { return escape_js_1.escape; } });
6
+ var parse_js_1 = require("./parse.cjs");
7
+ Object.defineProperty(exports, "parse", { enumerable: true, get: function () { return parse_js_1.parse; } });
8
+ var stringify_js_1 = require("./stringify.cjs");
9
+ Object.defineProperty(exports, "stringify", { enumerable: true, get: function () { return stringify_js_1.stringify; } });
10
+ var visit_js_1 = require("./visit.cjs");
11
+ Object.defineProperty(exports, "visit", { enumerable: true, get: function () { return visit_js_1.visit; } });
12
+ var transform_js_1 = require("./transform.cjs");
13
+ Object.defineProperty(exports, "transform", { enumerable: true, get: function () { return transform_js_1.transform; } });
14
+ var translate_js_1 = require("./translate.cjs");
15
+ Object.defineProperty(exports, "translate", { enumerable: true, get: function () { return translate_js_1.translate; } });
16
+ var types_js_1 = require("./types.cjs");
17
+ Object.defineProperty(exports, "TokenType", { enumerable: true, get: function () { return types_js_1.TokenType; } });
18
+ Object.defineProperty(exports, "Flavor", { enumerable: true, get: function () { return types_js_1.Flavor; } });
@@ -0,0 +1,7 @@
1
+ export { escape } from './escape.cjs';
2
+ export { parse } from './parse.cjs';
3
+ export { stringify } from './stringify.cjs';
4
+ export { visit } from './visit.cjs';
5
+ export { transform, type TransformContext } from './transform.cjs';
6
+ export { translate } from './translate.cjs';
7
+ export { TokenType, Flavor, type Token } from './types.cjs';
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parse = parse;
4
+ const is_it_type_1 = require("@zokugun/is-it-type");
5
+ const parser_js_1 = require("./generated/parser.cjs");
6
+ function parse(value) {
7
+ if (typeof value === 'string') {
8
+ return (0, parser_js_1.pegParse)(value);
9
+ }
10
+ else if ((0, is_it_type_1.isRegExp)(value)) {
11
+ return (0, parser_js_1.pegParse)(value.toString());
12
+ }
13
+ else {
14
+ throw new TypeError('The regexp to parse must be represented as a string.');
15
+ }
16
+ }
@@ -0,0 +1,2 @@
1
+ import { type Token } from './types.cjs';
2
+ export declare function parse(value: string | RegExp): Token;
@@ -0,0 +1,228 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.stringify = stringify;
4
+ const is_it_type_1 = require("@zokugun/is-it-type");
5
+ const types_js_1 = require("./types.cjs");
6
+ function stringify(tokens) {
7
+ if (Array.isArray(tokens)) {
8
+ let result = '';
9
+ for (const token of tokens) {
10
+ result += stringify(token);
11
+ }
12
+ return result;
13
+ }
14
+ else if ((0, is_it_type_1.isRegExp)(tokens)) {
15
+ return tokens.toString();
16
+ }
17
+ else if (tokens) {
18
+ return toString(tokens, '');
19
+ }
20
+ else {
21
+ return '';
22
+ }
23
+ }
24
+ function toString(value, result) {
25
+ if (value.type === types_js_1.TokenType.ALTERNATE) {
26
+ for (let i = 0, l = (value.body).length; i < l; i++) {
27
+ if (i !== 0) {
28
+ result += '|';
29
+ }
30
+ result = toString((value.body)[i], result);
31
+ }
32
+ }
33
+ else if (value.type === types_js_1.TokenType.ANY) {
34
+ result += '.';
35
+ }
36
+ else if (value.type === types_js_1.TokenType.BACK_REFERENCE) {
37
+ result += `\\${value.code}`;
38
+ }
39
+ else if (value.type === types_js_1.TokenType.BACKSPACE) {
40
+ result += '\\b';
41
+ }
42
+ else if (value.type === types_js_1.TokenType.BEGIN) {
43
+ result += '^';
44
+ }
45
+ else if (value.type === types_js_1.TokenType.CAPTURE_GROUP) {
46
+ result += '(';
47
+ result = toString(value.body, result);
48
+ result += ')';
49
+ }
50
+ else if (value.type === types_js_1.TokenType.CARRIAGE_RETURN) {
51
+ result += '\\r';
52
+ }
53
+ else if (value.type === types_js_1.TokenType.CHARSET) {
54
+ result += '[';
55
+ if (value.negated) {
56
+ result += '^';
57
+ }
58
+ for (const item of value.body) {
59
+ result = toString(item, result);
60
+ }
61
+ result += ']';
62
+ }
63
+ else if (value.type === types_js_1.TokenType.CONTROL) {
64
+ result += `\\c${value.code}`;
65
+ }
66
+ else if (value.type === types_js_1.TokenType.DIGIT) {
67
+ result += '\\d';
68
+ }
69
+ else if (value.type === types_js_1.TokenType.END) {
70
+ result += '$';
71
+ }
72
+ else if (value.type === types_js_1.TokenType.ESCAPE) {
73
+ result += `\\${value.code}`;
74
+ }
75
+ else if (value.type === types_js_1.TokenType.FORM_FEED) {
76
+ result += '\\f';
77
+ }
78
+ else if (value.type === types_js_1.TokenType.HEX) {
79
+ result += `\\x${value.code}`;
80
+ }
81
+ else if (value.type === types_js_1.TokenType.LINE_FEED) {
82
+ result += '\\n';
83
+ }
84
+ else if (value.type === types_js_1.TokenType.LITERAL) {
85
+ result += value.text;
86
+ }
87
+ else if (value.type === types_js_1.TokenType.MATCH) {
88
+ for (const item of value.body) {
89
+ result = toString(item, result);
90
+ }
91
+ }
92
+ else if (value.type === types_js_1.TokenType.MODIFIED_GROUP) {
93
+ result += '(?';
94
+ result += value.modifiers.positive.join('');
95
+ if (value.modifiers.negative.length > 0) {
96
+ result += `-${value.modifiers.negative.join('')}`;
97
+ }
98
+ result += ':';
99
+ result = toString(value.body, result);
100
+ result += ')';
101
+ }
102
+ else if (value.type === types_js_1.TokenType.MODIFIER) {
103
+ result += '(?';
104
+ result += value.positive.join('');
105
+ if (value.negative.length > 0) {
106
+ result += `-${value.negative.join('')}`;
107
+ }
108
+ result += ')';
109
+ }
110
+ else if (value.type === types_js_1.TokenType.NAMED_BACK_REFERENCE) {
111
+ result += `\\k<${value.name}>`;
112
+ }
113
+ else if (value.type === types_js_1.TokenType.NAMED_GROUP) {
114
+ result += `(?<${value.name}>`;
115
+ result = toString(value.body, result);
116
+ result += ')';
117
+ }
118
+ else if (value.type === types_js_1.TokenType.NEGATIVE_LOOKAHEAD) {
119
+ result += '(?!';
120
+ result = toString(value.body, result);
121
+ result += ')';
122
+ }
123
+ else if (value.type === types_js_1.TokenType.NEGATIVE_LOOKBEHIND) {
124
+ result += '(?<!';
125
+ result = toString(value.body, result);
126
+ result += ')';
127
+ }
128
+ else if (value.type === types_js_1.TokenType.NON_CAPTURE_GROUP) {
129
+ result += '(?:';
130
+ result = toString(value.body, result);
131
+ result += ')';
132
+ }
133
+ else if (value.type === types_js_1.TokenType.NON_DIGIT) {
134
+ result += '\\D';
135
+ }
136
+ else if (value.type === types_js_1.TokenType.NON_UNICODE_PROPERTY) {
137
+ result += `\\P{${value.property}}`;
138
+ }
139
+ else if (value.type === types_js_1.TokenType.NON_WHITE_SPACE) {
140
+ result += '\\S';
141
+ }
142
+ else if (value.type === types_js_1.TokenType.NON_WORD) {
143
+ result += '\\W';
144
+ }
145
+ else if (value.type === types_js_1.TokenType.NON_WORD_BOUNDARY) {
146
+ result += '\\B';
147
+ }
148
+ else if (value.type === types_js_1.TokenType.NUL) {
149
+ result += '\\0';
150
+ }
151
+ else if (value.type === types_js_1.TokenType.OCTAL) {
152
+ result += `\\0${value.code}`;
153
+ }
154
+ else if (value.type === types_js_1.TokenType.PATTERN) {
155
+ result += '/';
156
+ result = toString(value.body, result);
157
+ result += '/';
158
+ if (value.modifiers) {
159
+ result += value.modifiers.positive.join('');
160
+ }
161
+ }
162
+ else if (value.type === types_js_1.TokenType.POSITIVE_LOOKAHEAD) {
163
+ result += '(?=';
164
+ result = toString(value.body, result);
165
+ result += ')';
166
+ }
167
+ else if (value.type === types_js_1.TokenType.POSITIVE_LOOKBEHIND) {
168
+ result += '(?<=';
169
+ result = toString(value.body, result);
170
+ result += ')';
171
+ }
172
+ else if (value.type === types_js_1.TokenType.QUANTIFIED) {
173
+ result = toString(value.body, result);
174
+ result = toString(value.quantifier, result);
175
+ }
176
+ else if (value.type === types_js_1.TokenType.QUANTIFIER) {
177
+ if (value.max === Infinity) {
178
+ if (value.min === 0) {
179
+ result += '*';
180
+ }
181
+ else if (value.min === 1) {
182
+ result += '+';
183
+ }
184
+ else {
185
+ result += `{${value.min},}`;
186
+ }
187
+ }
188
+ else if (value.min === 0 && value.max === 1) {
189
+ result += '?';
190
+ }
191
+ else if (value.min === value.max) {
192
+ result += `{${value.min}}`;
193
+ }
194
+ else {
195
+ result += `{${value.min},${value.max}}`;
196
+ }
197
+ }
198
+ else if (value.type === types_js_1.TokenType.RANGE) {
199
+ result = toString(value.begin, result);
200
+ result += '-';
201
+ result = toString(value.end, result);
202
+ }
203
+ else if (value.type === types_js_1.TokenType.TAB) {
204
+ result += '\\t';
205
+ }
206
+ else if (value.type === types_js_1.TokenType.UNICODE) {
207
+ result += `\\u{${value.code}}`;
208
+ }
209
+ else if (value.type === types_js_1.TokenType.UNICODE_PROPERTY) {
210
+ result += `\\p{${value.property}}`;
211
+ }
212
+ else if (value.type === types_js_1.TokenType.UTF16) {
213
+ result += `\\u${value.code}`;
214
+ }
215
+ else if (value.type === types_js_1.TokenType.VERTICAL_TAB) {
216
+ result += '\\v';
217
+ }
218
+ else if (value.type === types_js_1.TokenType.WHITE_SPACE) {
219
+ result += '\\s';
220
+ }
221
+ else if (value.type === types_js_1.TokenType.WORD) {
222
+ result += '\\w';
223
+ }
224
+ else if (value.type === types_js_1.TokenType.WORD_BOUNDARY) {
225
+ result += '\\b';
226
+ }
227
+ return result;
228
+ }
@@ -0,0 +1,2 @@
1
+ import { type Token } from './types.cjs';
2
+ export declare function stringify(tokens?: Token | Token[] | RegExp): string;
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.transform = transform;
4
+ const parse_js_1 = require("./parse.cjs");
5
+ function transform(tokens, callback) {
6
+ if (typeof callback === 'function') {
7
+ transformFunc(tokens, null, null, callback);
8
+ }
9
+ else if (callback) {
10
+ transformMap(tokens, callback);
11
+ }
12
+ }
13
+ function transformFunc(tokens, parent, key, callback) {
14
+ if (Array.isArray(tokens)) {
15
+ let i = -1;
16
+ let notSkipped = true;
17
+ const that = {
18
+ remove() {
19
+ tokens.splice(i, 1);
20
+ --i;
21
+ notSkipped = false;
22
+ },
23
+ replace(token, transform) {
24
+ let replacement;
25
+ if (typeof token === 'string') {
26
+ replacement = (0, parse_js_1.parse)(token).body;
27
+ }
28
+ else {
29
+ replacement = token;
30
+ }
31
+ if (Array.isArray(replacement)) {
32
+ tokens.splice(i, 1, ...replacement);
33
+ }
34
+ else {
35
+ tokens.splice(i, 1, replacement);
36
+ }
37
+ if (transform) {
38
+ --i;
39
+ }
40
+ else if (Array.isArray(replacement)) {
41
+ i += replacement.length - 1;
42
+ }
43
+ notSkipped = false;
44
+ },
45
+ transform(tokensArg, parentArg, keyArg) {
46
+ transformFunc(tokensArg, parentArg, keyArg, callback);
47
+ notSkipped = false;
48
+ },
49
+ };
50
+ while (++i < tokens.length) {
51
+ const token = tokens[i];
52
+ callback.call(that, token, parent, key, i);
53
+ if (notSkipped) {
54
+ if ('body' in token && token.body) {
55
+ transformFunc(token.body, token, 'body', callback);
56
+ }
57
+ }
58
+ else {
59
+ notSkipped = true;
60
+ }
61
+ }
62
+ }
63
+ else if (parent) {
64
+ let notSkipped = true;
65
+ const that = {
66
+ remove() {
67
+ if (parent && key) {
68
+ delete parent[key];
69
+ }
70
+ notSkipped = false;
71
+ },
72
+ replace(token, transform) {
73
+ let replacement;
74
+ if (typeof token === 'string') {
75
+ replacement = (0, parse_js_1.parse)(token).body;
76
+ }
77
+ else {
78
+ replacement = token;
79
+ }
80
+ if (parent && key) {
81
+ parent[key] = replacement;
82
+ }
83
+ if (transform && replacement) {
84
+ transformFunc(replacement, parent, key, callback);
85
+ }
86
+ notSkipped = false;
87
+ },
88
+ transform(tokensArg, parentArg, keyArg) {
89
+ transformFunc(tokensArg, parentArg, keyArg, callback);
90
+ notSkipped = false;
91
+ },
92
+ };
93
+ callback.call(that, tokens, parent, key, null);
94
+ if (notSkipped) {
95
+ const maybeBody = tokens.body;
96
+ if (maybeBody) {
97
+ transformFunc(maybeBody, tokens, 'body', callback);
98
+ }
99
+ }
100
+ else {
101
+ notSkipped = true;
102
+ }
103
+ }
104
+ else {
105
+ callback.call(null, tokens, null, null, null);
106
+ const maybeBody = tokens.body;
107
+ if (maybeBody) {
108
+ transformFunc(maybeBody, tokens, 'body', callback);
109
+ }
110
+ }
111
+ }
112
+ function transformMap(tokens, callbackMap) {
113
+ transformFunc(tokens, null, null, function (token, parent, key, index) {
114
+ const fn = callbackMap[token.type];
115
+ if (fn) {
116
+ fn.call(this, token, parent, key, index);
117
+ }
118
+ });
119
+ }
@@ -0,0 +1,7 @@
1
+ import { type Token, type TokenType, type Transformer } from './types.cjs';
2
+ export type TransformContext = {
3
+ remove(): void;
4
+ replace(token: Token | string | Token[], transform?: boolean): void;
5
+ transform(tokensArg: Token | Token[] | undefined, parentArg: Token | null, keyArg: string | null): void;
6
+ };
7
+ export declare function transform(tokens: Token | Token[] | undefined, callback?: Transformer | Partial<Record<TokenType, Transformer>>): void;
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.translate = translate;
4
+ const is_it_type_1 = require("@zokugun/is-it-type");
5
+ const parse_js_1 = require("./parse.cjs");
6
+ const stringify_js_1 = require("./stringify.cjs");
7
+ const transform_js_1 = require("./transform.cjs");
8
+ const types_js_1 = require("./types.cjs");
9
+ const TRANSLATORS = {
10
+ [types_js_1.Flavor.ES2018]: translateES2018,
11
+ };
12
+ function translate(value, target, toString = true) {
13
+ const translator = TRANSLATORS[target];
14
+ if (!translator) {
15
+ if (typeof value === 'string') {
16
+ return value;
17
+ }
18
+ if ((0, is_it_type_1.isRegExp)(value)) {
19
+ return value.toString();
20
+ }
21
+ return value;
22
+ }
23
+ let result;
24
+ if (Array.isArray(value)) {
25
+ result = [];
26
+ for (const item of value) {
27
+ result.push(translator(item));
28
+ }
29
+ }
30
+ else if ((0, is_it_type_1.isRegExp)(value) || (0, is_it_type_1.isString)(value)) {
31
+ result = translator((0, parse_js_1.parse)(value));
32
+ }
33
+ else {
34
+ result = translator(value);
35
+ }
36
+ if (toString) {
37
+ return (0, stringify_js_1.stringify)(result);
38
+ }
39
+ else {
40
+ return result;
41
+ }
42
+ }
43
+ function translateES2018(ast) {
44
+ const astToken = ast;
45
+ let caseless = false;
46
+ let inCharset = false;
47
+ let sets = null;
48
+ (0, transform_js_1.transform)(astToken, {
49
+ [types_js_1.TokenType.CHARSET]: function (token) {
50
+ const charset = token;
51
+ inCharset = true;
52
+ sets = {};
53
+ this.transform(charset.body, token, 'body');
54
+ inCharset = false;
55
+ },
56
+ [types_js_1.TokenType.LITERAL]: function (token) {
57
+ const literal = token;
58
+ if (caseless) {
59
+ let text = '';
60
+ let upper;
61
+ let lower;
62
+ let upperLower;
63
+ for (const c of literal.text.split('')) {
64
+ upper = c.toUpperCase();
65
+ lower = c.toLowerCase();
66
+ if (upper === lower) {
67
+ text += upper;
68
+ }
69
+ else {
70
+ upperLower = `${upper}${lower}`;
71
+ if (inCharset) {
72
+ if (!sets[upperLower]) {
73
+ sets[upperLower] = true;
74
+ text += upperLower;
75
+ }
76
+ }
77
+ else {
78
+ text += `[${upperLower}]`;
79
+ }
80
+ }
81
+ }
82
+ if (literal.text !== text) {
83
+ this.replace(text);
84
+ }
85
+ }
86
+ },
87
+ [types_js_1.TokenType.MODIFIED_GROUP]: function (token) {
88
+ const modifier = token;
89
+ if (modifier.modifiers.positive.includes('i')) {
90
+ caseless = true;
91
+ }
92
+ if (modifier.modifiers.negative.includes('i')) {
93
+ caseless = false;
94
+ }
95
+ this.replace({
96
+ type: types_js_1.TokenType.NON_CAPTURE_GROUP,
97
+ body: modifier.body,
98
+ }, true);
99
+ },
100
+ [types_js_1.TokenType.MODIFIER]: function (token) {
101
+ const modifier = token;
102
+ if (modifier.positive.includes('i')) {
103
+ caseless = true;
104
+ }
105
+ if (modifier.negative.includes('i')) {
106
+ caseless = false;
107
+ }
108
+ this.remove();
109
+ },
110
+ [types_js_1.TokenType.RANGE]: function (token) {
111
+ const range = token;
112
+ if (caseless) {
113
+ let beginUpper;
114
+ let beginLower;
115
+ if (range.begin.type === types_js_1.TokenType.LITERAL) {
116
+ beginUpper = range.begin.text.toUpperCase();
117
+ beginLower = range.begin.text.toLowerCase();
118
+ }
119
+ let endUpper;
120
+ let endLower;
121
+ if (range.end.type === types_js_1.TokenType.LITERAL) {
122
+ endUpper = range.end.text.toUpperCase();
123
+ endLower = range.end.text.toLowerCase();
124
+ }
125
+ if (beginUpper && endUpper && beginUpper !== beginLower && (beginUpper.codePointAt(0) - endUpper.codePointAt(0)) === (beginLower.codePointAt(0) - endLower.codePointAt(0))) {
126
+ const range = `${beginUpper}-${endUpper}${beginLower}-${endLower}`;
127
+ if (sets[range]) {
128
+ this.remove();
129
+ }
130
+ else {
131
+ sets[range] = true;
132
+ this.replace(range);
133
+ }
134
+ }
135
+ }
136
+ },
137
+ });
138
+ return astToken;
139
+ }
@@ -0,0 +1,4 @@
1
+ import { Flavor, type Token } from './types.cjs';
2
+ export declare function translate(value: string | RegExp | Token | Token[], target: Flavor, toString?: true): string;
3
+ export declare function translate(value: Token[], target: Flavor, toString: false): Token[];
4
+ export declare function translate(value: string | RegExp | Token, target: Flavor, toString: false): Token;
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Flavor = exports.TokenType = void 0;
4
+ var TokenType;
5
+ (function (TokenType) {
6
+ TokenType["ALTERNATE"] = "alternate";
7
+ TokenType["ANY"] = "any";
8
+ TokenType["BACK_REFERENCE"] = "back-reference";
9
+ TokenType["BACKSPACE"] = "backspace";
10
+ TokenType["BEGIN"] = "begin";
11
+ TokenType["CAPTURE_GROUP"] = "capture-group";
12
+ TokenType["CARRIAGE_RETURN"] = "carriage-return";
13
+ TokenType["CHARSET"] = "charset";
14
+ TokenType["CONTROL"] = "control";
15
+ TokenType["DIGIT"] = "digit";
16
+ TokenType["END"] = "end";
17
+ TokenType["ESCAPE"] = "escape";
18
+ TokenType["FORM_FEED"] = "form-feed";
19
+ TokenType["HEX"] = "hex";
20
+ TokenType["LINE_FEED"] = "line-feed";
21
+ TokenType["LITERAL"] = "literal";
22
+ TokenType["MATCH"] = "match";
23
+ TokenType["MODIFIED_GROUP"] = "modified-group";
24
+ TokenType["MODIFIER"] = "modifier";
25
+ TokenType["NAMED_BACK_REFERENCE"] = "named-back-reference";
26
+ TokenType["NAMED_GROUP"] = "named-group";
27
+ TokenType["NEGATIVE_LOOKAHEAD"] = "negative-lookahead";
28
+ TokenType["NEGATIVE_LOOKBEHIND"] = "negative-lookbehind";
29
+ TokenType["NON_CAPTURE_GROUP"] = "non-capture-group";
30
+ TokenType["NON_DIGIT"] = "non-digit";
31
+ TokenType["NON_UNICODE_PROPERTY"] = "non-unicode-property";
32
+ TokenType["NON_WHITE_SPACE"] = "non-white-space";
33
+ TokenType["NON_WORD"] = "non-word";
34
+ TokenType["NON_WORD_BOUNDARY"] = "non-word-boundary";
35
+ TokenType["NUL"] = "nul";
36
+ TokenType["OCTAL"] = "octal";
37
+ TokenType["PATTERN"] = "pattern";
38
+ TokenType["POSITIVE_LOOKAHEAD"] = "positive-lookahead";
39
+ TokenType["POSITIVE_LOOKBEHIND"] = "positive-lookbehind";
40
+ TokenType["QUANTIFIED"] = "quantified";
41
+ TokenType["QUANTIFIER"] = "quantifier";
42
+ TokenType["RANGE"] = "range";
43
+ TokenType["TAB"] = "tab";
44
+ TokenType["UNICODE"] = "unicode";
45
+ TokenType["UNICODE_PROPERTY"] = "unicode-property";
46
+ TokenType["UTF16"] = "utf-16";
47
+ TokenType["VERTICAL_TAB"] = "vertical-tab";
48
+ TokenType["WHITE_SPACE"] = "white-space";
49
+ TokenType["WORD"] = "word";
50
+ TokenType["WORD_BOUNDARY"] = "word-boundary";
51
+ })(TokenType || (exports.TokenType = TokenType = {}));
52
+ var Flavor;
53
+ (function (Flavor) {
54
+ Flavor["ES2018"] = "es2018";
55
+ })(Flavor || (exports.Flavor = Flavor = {}));