@mikrojs/analyze-imports 0.0.7

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,570 @@
1
+ export async function evaluate(ast, vars = {}, computeBranches = true) {
2
+ const state = {
3
+ computeBranches,
4
+ vars,
5
+ };
6
+ return walk(ast);
7
+ // walk returns:
8
+ // 1. Single known value: { value: value }
9
+ // 2. Conditional value: { test, ifTrue, else }
10
+ // 3. Unknown value: undefined
11
+ function walk(node) {
12
+ const visitor = visitors[node.type];
13
+ if (visitor) {
14
+ return visitor.call(state, node, walk);
15
+ }
16
+ return undefined;
17
+ }
18
+ }
19
+ const UNKNOWN = Symbol();
20
+ const FUNCTION = Symbol();
21
+ const WILDCARD = '\x1a';
22
+ const wildcardRegEx = /\x1a/g;
23
+ function countWildcards(str) {
24
+ wildcardRegEx.lastIndex = 0;
25
+ let cnt = 0;
26
+ while (wildcardRegEx.exec(str))
27
+ cnt++;
28
+ return cnt;
29
+ }
30
+ const visitors = {
31
+ ArrayExpression: async function ArrayExpression(node, walk) {
32
+ const arr = [];
33
+ for (let i = 0, l = node.elements.length; i < l; i++) {
34
+ if (node.elements[i] === null) {
35
+ arr.push(null);
36
+ continue;
37
+ }
38
+ const x = await walk(node.elements[i]);
39
+ if (!x)
40
+ return;
41
+ if ('value' in x === false)
42
+ return;
43
+ arr.push(x.value);
44
+ }
45
+ return { value: arr };
46
+ },
47
+ ArrowFunctionExpression: async function (node, walk) {
48
+ // () => val support only
49
+ if (node.params.length === 0 && !node.generator && !node.async && node.expression) {
50
+ const innerValue = await walk(node.body);
51
+ if (!innerValue || !('value' in innerValue))
52
+ return;
53
+ return {
54
+ value: {
55
+ [FUNCTION]: () => innerValue.value,
56
+ },
57
+ };
58
+ }
59
+ return undefined;
60
+ },
61
+ BinaryExpression: async function BinaryExpression(node, walk) {
62
+ const op = node.operator;
63
+ const l = await walk(node.left);
64
+ if (!l && op !== '+')
65
+ return;
66
+ const r = await walk(node.right);
67
+ if (!l && !r)
68
+ return;
69
+ if (!l) {
70
+ // UNKNOWN + 'str' -> wildcard string value
71
+ if (this.computeBranches && r && 'value' in r && typeof r.value === 'string')
72
+ return {
73
+ value: WILDCARD + r.value,
74
+ wildcards: [node.left, ...(r.wildcards || [])],
75
+ };
76
+ return;
77
+ }
78
+ if (!r) {
79
+ // 'str' + UKNOWN -> wildcard string value
80
+ if (this.computeBranches && op === '+') {
81
+ if (l && 'value' in l && typeof l.value === 'string')
82
+ return {
83
+ value: l.value + WILDCARD,
84
+ wildcards: [...(l.wildcards || []), node.right],
85
+ };
86
+ }
87
+ // A || UNKNOWN -> A if A is truthy
88
+ if (!('test' in l) && op === '||' && l.value)
89
+ return l;
90
+ return;
91
+ }
92
+ if ('test' in l && 'value' in r) {
93
+ const v = r.value;
94
+ if (op === '==')
95
+ return { test: l.test, ifTrue: l.ifTrue == v, else: l.else == v };
96
+ if (op === '===')
97
+ return { test: l.test, ifTrue: l.ifTrue === v, else: l.else === v };
98
+ if (op === '!=')
99
+ return { test: l.test, ifTrue: l.ifTrue != v, else: l.else != v };
100
+ if (op === '!==')
101
+ return { test: l.test, ifTrue: l.ifTrue !== v, else: l.else !== v };
102
+ if (op === '+')
103
+ return { test: l.test, ifTrue: l.ifTrue + v, else: l.else + v };
104
+ if (op === '-')
105
+ return { test: l.test, ifTrue: l.ifTrue - v, else: l.else - v };
106
+ if (op === '*')
107
+ return { test: l.test, ifTrue: l.ifTrue * v, else: l.else * v };
108
+ if (op === '/')
109
+ return { test: l.test, ifTrue: l.ifTrue / v, else: l.else / v };
110
+ if (op === '%')
111
+ return { test: l.test, ifTrue: l.ifTrue % v, else: l.else % v };
112
+ if (op === '<')
113
+ return { test: l.test, ifTrue: l.ifTrue < v, else: l.else < v };
114
+ if (op === '<=')
115
+ return { test: l.test, ifTrue: l.ifTrue <= v, else: l.else <= v };
116
+ if (op === '>')
117
+ return { test: l.test, ifTrue: l.ifTrue > v, else: l.else > v };
118
+ if (op === '>=')
119
+ return { test: l.test, ifTrue: l.ifTrue >= v, else: l.else >= v };
120
+ if (op === '|')
121
+ return { test: l.test, ifTrue: l.ifTrue | v, else: l.else | v };
122
+ if (op === '&')
123
+ return { test: l.test, ifTrue: l.ifTrue & v, else: l.else & v };
124
+ if (op === '^')
125
+ return { test: l.test, ifTrue: l.ifTrue ^ v, else: l.else ^ v };
126
+ if (op === '&&')
127
+ return { test: l.test, ifTrue: l.ifTrue && v, else: l.else && v };
128
+ if (op === '||')
129
+ return { test: l.test, ifTrue: l.ifTrue || v, else: l.else || v };
130
+ }
131
+ else if ('test' in r && 'value' in l) {
132
+ const v = l.value;
133
+ if (op === '==')
134
+ return { test: r.test, ifTrue: v == r.ifTrue, else: v == r.else };
135
+ if (op === '===')
136
+ return { test: r.test, ifTrue: v === r.ifTrue, else: v === r.else };
137
+ if (op === '!=')
138
+ return { test: r.test, ifTrue: v != r.ifTrue, else: v != r.else };
139
+ if (op === '!==')
140
+ return { test: r.test, ifTrue: v !== r.ifTrue, else: v !== r.else };
141
+ if (op === '+')
142
+ return { test: r.test, ifTrue: v + r.ifTrue, else: v + r.else };
143
+ if (op === '-')
144
+ return { test: r.test, ifTrue: v - r.ifTrue, else: v - r.else };
145
+ if (op === '*')
146
+ return { test: r.test, ifTrue: v * r.ifTrue, else: v * r.else };
147
+ if (op === '/')
148
+ return { test: r.test, ifTrue: v / r.ifTrue, else: v / r.else };
149
+ if (op === '%')
150
+ return { test: r.test, ifTrue: v % r.ifTrue, else: v % r.else };
151
+ if (op === '<')
152
+ return { test: r.test, ifTrue: v < r.ifTrue, else: v < r.else };
153
+ if (op === '<=')
154
+ return { test: r.test, ifTrue: v <= r.ifTrue, else: v <= r.else };
155
+ if (op === '>')
156
+ return { test: r.test, ifTrue: v > r.ifTrue, else: v > r.else };
157
+ if (op === '>=')
158
+ return { test: r.test, ifTrue: v >= r.ifTrue, else: v >= r.else };
159
+ if (op === '|')
160
+ return { test: r.test, ifTrue: v | r.ifTrue, else: v | r.else };
161
+ if (op === '&')
162
+ return { test: r.test, ifTrue: v & r.ifTrue, else: v & r.else };
163
+ if (op === '^')
164
+ return { test: r.test, ifTrue: v ^ r.ifTrue, else: v ^ r.else };
165
+ if (op === '&&')
166
+ return { test: r.test, ifTrue: v && r.ifTrue, else: l && r.else };
167
+ if (op === '||')
168
+ return { test: r.test, ifTrue: v || r.ifTrue, else: l || r.else };
169
+ }
170
+ else if ('value' in l && 'value' in r) {
171
+ if (op === '==')
172
+ return { value: l.value == r.value };
173
+ if (op === '===')
174
+ return { value: l.value === r.value };
175
+ if (op === '!=')
176
+ return { value: l.value != r.value };
177
+ if (op === '!==')
178
+ return { value: l.value !== r.value };
179
+ if (op === '+') {
180
+ const val = { value: l.value + r.value };
181
+ let wildcards = [];
182
+ if ('wildcards' in l && l.wildcards) {
183
+ wildcards = wildcards.concat(l.wildcards);
184
+ }
185
+ if ('wildcards' in r && r.wildcards) {
186
+ wildcards = wildcards.concat(r.wildcards);
187
+ }
188
+ if (wildcards.length > 0) {
189
+ val.wildcards = wildcards;
190
+ }
191
+ return val;
192
+ }
193
+ if (op === '-')
194
+ return { value: l.value - r.value };
195
+ if (op === '*')
196
+ return { value: l.value * r.value };
197
+ if (op === '/')
198
+ return { value: l.value / r.value };
199
+ if (op === '%')
200
+ return { value: l.value % r.value };
201
+ if (op === '<')
202
+ return { value: l.value < r.value };
203
+ if (op === '<=')
204
+ return { value: l.value <= r.value };
205
+ if (op === '>')
206
+ return { value: l.value > r.value };
207
+ if (op === '>=')
208
+ return { value: l.value >= r.value };
209
+ if (op === '|')
210
+ return { value: l.value | r.value };
211
+ if (op === '&')
212
+ return { value: l.value & r.value };
213
+ if (op === '^')
214
+ return { value: l.value ^ r.value };
215
+ if (op === '&&')
216
+ return { value: l.value && r.value };
217
+ if (op === '||')
218
+ return { value: l.value || r.value };
219
+ }
220
+ return;
221
+ },
222
+ CallExpression: async function CallExpression(node, walk) {
223
+ const callee = await walk(node.callee);
224
+ if (!callee || 'test' in callee)
225
+ return;
226
+ let fn = callee.value;
227
+ if (typeof fn === 'object' && fn !== null)
228
+ fn = fn[FUNCTION];
229
+ if (typeof fn !== 'function')
230
+ return;
231
+ let ctx = null;
232
+ if (node.callee.object) {
233
+ ctx = await walk(node.callee.object);
234
+ ctx = ctx && 'value' in ctx && ctx.value ? ctx.value : null;
235
+ }
236
+ // we allow one conditional argument to create a conditional expression
237
+ let predicate;
238
+ const args = [];
239
+ let argsElse;
240
+ let allWildcards = node.arguments.length > 0 && node.callee.property?.name !== 'concat';
241
+ const wildcards = [];
242
+ for (let i = 0, l = node.arguments.length; i < l; i++) {
243
+ let x = await walk(node.arguments[i]);
244
+ if (x) {
245
+ allWildcards = false;
246
+ if ('value' in x && typeof x.value === 'string' && x.wildcards)
247
+ x.wildcards.forEach((w) => wildcards.push(w));
248
+ }
249
+ else {
250
+ if (!this.computeBranches)
251
+ return;
252
+ // this works because provided static functions
253
+ // operate on known string inputs
254
+ x = { value: WILDCARD };
255
+ wildcards.push(node.arguments[i]);
256
+ }
257
+ if ('test' in x) {
258
+ if (wildcards.length)
259
+ return;
260
+ if (predicate)
261
+ return;
262
+ predicate = x.test;
263
+ argsElse = args.concat([]);
264
+ args.push(x.ifTrue);
265
+ argsElse.push(x.else);
266
+ }
267
+ else {
268
+ args.push(x.value);
269
+ if (argsElse)
270
+ argsElse.push(x.value);
271
+ }
272
+ }
273
+ if (allWildcards)
274
+ return;
275
+ try {
276
+ const result = await fn.apply(ctx, args);
277
+ if (result === UNKNOWN)
278
+ return;
279
+ if (!predicate) {
280
+ if (wildcards.length) {
281
+ if (typeof result !== 'string' || countWildcards(result) !== wildcards.length)
282
+ return;
283
+ return { value: result, wildcards };
284
+ }
285
+ return { value: result };
286
+ }
287
+ const resultElse = await fn.apply(ctx, argsElse);
288
+ if (result === UNKNOWN)
289
+ return;
290
+ return { test: predicate, ifTrue: result, else: resultElse };
291
+ }
292
+ catch {
293
+ return;
294
+ }
295
+ },
296
+ ConditionalExpression: async function ConditionalExpression(node, walk) {
297
+ const val = await walk(node.test);
298
+ if (val && 'value' in val)
299
+ return val.value ? walk(node.consequent) : walk(node.alternate);
300
+ if (!this.computeBranches)
301
+ return;
302
+ const thenValue = await walk(node.consequent);
303
+ if (!thenValue || 'wildcards' in thenValue || 'test' in thenValue)
304
+ return;
305
+ const elseValue = await walk(node.alternate);
306
+ if (!elseValue || 'wildcards' in elseValue || 'test' in elseValue)
307
+ return;
308
+ return {
309
+ test: node.test,
310
+ ifTrue: thenValue.value,
311
+ else: elseValue.value,
312
+ };
313
+ },
314
+ ExpressionStatement: async function ExpressionStatement(node, walk) {
315
+ return walk(node.expression);
316
+ },
317
+ Identifier: async function Identifier(node, _walk) {
318
+ if (Object.hasOwnProperty.call(this.vars, node.name))
319
+ return this.vars[node.name];
320
+ return undefined;
321
+ },
322
+ Literal: async function Literal(node, _walk) {
323
+ return { value: node.value };
324
+ },
325
+ MemberExpression: async function MemberExpression(node, walk) {
326
+ const obj = await walk(node.object);
327
+ if (!obj || 'test' in obj || typeof obj.value === 'function') {
328
+ return undefined;
329
+ }
330
+ if (node.property.type === 'Identifier') {
331
+ if (typeof obj.value === 'string' && node.property.name === 'concat') {
332
+ return {
333
+ value: {
334
+ [FUNCTION]: (...args) => obj.value.concat(args),
335
+ },
336
+ };
337
+ }
338
+ if (typeof obj.value === 'object' && obj.value !== null) {
339
+ const objValue = obj.value;
340
+ if (node.computed) {
341
+ // See if we can compute the computed property
342
+ const computedProp = await walk(node.property);
343
+ if (computedProp && 'value' in computedProp && computedProp.value) {
344
+ const val = objValue[computedProp.value];
345
+ if (val === UNKNOWN)
346
+ return undefined;
347
+ return { value: val };
348
+ }
349
+ // Special case for empty object
350
+ if (!objValue[UNKNOWN] && Object.keys(obj).length === 0) {
351
+ return { value: undefined };
352
+ }
353
+ }
354
+ else if (node.property.name in objValue) {
355
+ const val = objValue[node.property.name];
356
+ if (val === UNKNOWN)
357
+ return undefined;
358
+ return { value: val };
359
+ }
360
+ else if (objValue[UNKNOWN])
361
+ return undefined;
362
+ }
363
+ else {
364
+ return { value: undefined };
365
+ }
366
+ }
367
+ const prop = await walk(node.property);
368
+ if (!prop || 'test' in prop)
369
+ return undefined;
370
+ if (typeof obj.value === 'object' && obj.value !== null) {
371
+ //@ts-ignore
372
+ if (prop.value in obj.value) {
373
+ //@ts-ignore
374
+ const val = obj.value[prop.value];
375
+ if (val === UNKNOWN)
376
+ return undefined;
377
+ return { value: val };
378
+ }
379
+ //@ts-ignore
380
+ else if (obj.value[UNKNOWN]) {
381
+ return undefined;
382
+ }
383
+ }
384
+ else {
385
+ return { value: undefined };
386
+ }
387
+ return undefined;
388
+ },
389
+ MetaProperty: async function MetaProperty(node) {
390
+ if (node.meta.name === 'import' && node.property.name === 'meta')
391
+ return { value: this.vars['import.meta'] };
392
+ return undefined;
393
+ },
394
+ NewExpression: async function NewExpression(node, walk) {
395
+ // new URL('./local', parent)
396
+ const cls = await walk(node.callee);
397
+ if (cls && 'value' in cls && cls.value === URL && node.arguments.length) {
398
+ const arg = await walk(node.arguments[0]);
399
+ if (!arg)
400
+ return undefined;
401
+ let parent = null;
402
+ if (node.arguments[1]) {
403
+ parent = await walk(node.arguments[1]);
404
+ if (!parent || !('value' in parent))
405
+ return undefined;
406
+ }
407
+ if ('value' in arg) {
408
+ if (parent) {
409
+ try {
410
+ return { value: new URL(arg.value, parent.value) };
411
+ }
412
+ catch {
413
+ return undefined;
414
+ }
415
+ }
416
+ try {
417
+ return { value: new URL(arg.value) };
418
+ }
419
+ catch {
420
+ return undefined;
421
+ }
422
+ }
423
+ else {
424
+ const test = arg.test;
425
+ if (parent) {
426
+ try {
427
+ return {
428
+ test,
429
+ ifTrue: new URL(arg.ifTrue, parent.value),
430
+ else: new URL(arg.else, parent.value),
431
+ };
432
+ }
433
+ catch {
434
+ return undefined;
435
+ }
436
+ }
437
+ try {
438
+ return {
439
+ test,
440
+ ifTrue: new URL(arg.ifTrue),
441
+ else: new URL(arg.else),
442
+ };
443
+ }
444
+ catch {
445
+ return undefined;
446
+ }
447
+ }
448
+ }
449
+ return undefined;
450
+ },
451
+ ObjectExpression: async function ObjectExpression(node, walk) {
452
+ const obj = {};
453
+ for (let i = 0; i < node.properties.length; i++) {
454
+ const prop = node.properties[i];
455
+ const keyValue = prop.computed
456
+ ? walk(prop.key)
457
+ : prop.key && { value: prop.key.name || prop.key.value };
458
+ if (!keyValue || 'test' in keyValue)
459
+ return;
460
+ const value = await walk(prop.value);
461
+ if (!value || 'test' in value)
462
+ return;
463
+ //@ts-ignore
464
+ if (value.value === UNKNOWN)
465
+ return;
466
+ //@ts-ignore
467
+ obj[keyValue.value] = value.value;
468
+ }
469
+ return { value: obj };
470
+ },
471
+ SequenceExpression: async function SequenceExpression(node, walk) {
472
+ if ('expressions' in node &&
473
+ node.expressions.length === 2 &&
474
+ node.expressions[0].type === 'Literal' &&
475
+ node.expressions[0].value === 0 &&
476
+ node.expressions[1].type === 'MemberExpression') {
477
+ const arg = await walk(node.expressions[1]);
478
+ return arg;
479
+ }
480
+ return undefined;
481
+ },
482
+ TemplateLiteral: async function TemplateLiteral(node, walk) {
483
+ let val = { value: '' };
484
+ for (let i = 0; i < node.expressions.length; i++) {
485
+ if ('value' in val) {
486
+ val.value += node.quasis[i].value.cooked;
487
+ }
488
+ else {
489
+ val.ifTrue += node.quasis[i].value.cooked;
490
+ val.else += node.quasis[i].value.cooked;
491
+ }
492
+ let exprValue = await walk(node.expressions[i]);
493
+ if (!exprValue) {
494
+ if (!this.computeBranches)
495
+ return undefined;
496
+ exprValue = { value: WILDCARD, wildcards: [node.expressions[i]] };
497
+ }
498
+ if ('value' in exprValue) {
499
+ if ('value' in val) {
500
+ val.value += exprValue.value;
501
+ if (exprValue.wildcards)
502
+ val.wildcards = [...(val.wildcards || []), ...exprValue.wildcards];
503
+ }
504
+ else {
505
+ if (exprValue.wildcards)
506
+ return;
507
+ val.ifTrue += exprValue.value;
508
+ val.else += exprValue.value;
509
+ }
510
+ }
511
+ else if ('value' in val) {
512
+ if ('wildcards' in val) {
513
+ // only support a single branch in a template
514
+ return;
515
+ }
516
+ val = {
517
+ test: exprValue.test,
518
+ ifTrue: val.value + exprValue.ifTrue,
519
+ else: val.value + exprValue.else,
520
+ };
521
+ }
522
+ else {
523
+ // only support a single branch in a template
524
+ return;
525
+ }
526
+ }
527
+ const lastQuasi = node.quasis[node.expressions.length];
528
+ if ('value' in val) {
529
+ val.value += lastQuasi.value.cooked;
530
+ }
531
+ else {
532
+ val.ifTrue += lastQuasi.value.cooked;
533
+ val.else += lastQuasi.value.cooked;
534
+ }
535
+ return val;
536
+ },
537
+ ThisExpression: async function ThisExpression(_node, _walk) {
538
+ if (Object.hasOwnProperty.call(this.vars, 'this'))
539
+ return this.vars['this'];
540
+ return undefined;
541
+ },
542
+ UnaryExpression: async function UnaryExpression(node, walk) {
543
+ const val = await walk(node.argument);
544
+ if (!val)
545
+ return undefined;
546
+ if ('value' in val && 'wildcards' in val === false) {
547
+ if (node.operator === '+')
548
+ return { value: +val.value };
549
+ if (node.operator === '-')
550
+ return { value: -val.value };
551
+ if (node.operator === '~')
552
+ return { value: ~val.value };
553
+ if (node.operator === '!')
554
+ return { value: !val.value };
555
+ }
556
+ else if ('test' in val && 'wildcards' in val === false) {
557
+ if (node.operator === '+')
558
+ return { test: val.test, ifTrue: +val.ifTrue, else: +val.else };
559
+ if (node.operator === '-')
560
+ return { test: val.test, ifTrue: -val.ifTrue, else: -val.else };
561
+ if (node.operator === '~')
562
+ return { test: val.test, ifTrue: ~val.ifTrue, else: ~val.else };
563
+ if (node.operator === '!')
564
+ return { test: val.test, ifTrue: !val.ifTrue, else: !val.else };
565
+ }
566
+ return undefined;
567
+ },
568
+ };
569
+ visitors.LogicalExpression = visitors.BinaryExpression;
570
+ //# sourceMappingURL=static-eval.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"static-eval.js","sourceRoot":"","sources":["../../src/utils/static-eval.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { Node as ESTreeNode } from 'estree';
2
+ export type Ast = {
3
+ body: ESTreeNode[];
4
+ };
5
+ export interface StaticValue {
6
+ value: any;
7
+ wildcards?: string[];
8
+ }
9
+ export interface ConditionalValue {
10
+ test: string;
11
+ ifTrue: any;
12
+ else: any;
13
+ }
14
+ export type EvaluatedValue = StaticValue | ConditionalValue | undefined;
15
+ /**
16
+ * A more lax version of the 'estree' Node type
17
+ */
18
+ export interface Node {
19
+ start: number;
20
+ end: number;
21
+ type: ESTreeNode['type'];
22
+ [propName: string]: any;
23
+ }
24
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/utils/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,IAAI,IAAI,UAAU,EAAC,MAAM,QAAQ,CAAA;AAC9C,MAAM,MAAM,GAAG,GAAG;IAAC,IAAI,EAAE,UAAU,EAAE,CAAA;CAAC,CAAA;AAEtC,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,GAAG,CAAA;IACV,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,GAAG,CAAA;IACX,IAAI,EAAE,GAAG,CAAA;CACV;AAED,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,gBAAgB,GAAG,SAAS,CAAA;AAEvE;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;IACxB,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,CAAA;CACxB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/utils/types.ts"],"names":[],"mappings":""}