@typescript-eslint/eslint-plugin 8.21.1-alpha.0 → 8.21.1-alpha.10

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.
Files changed (32) hide show
  1. package/dist/rules/no-duplicate-type-constituents.js +97 -71
  2. package/dist/rules/no-duplicate-type-constituents.js.map +1 -1
  3. package/dist/rules/no-extraneous-class.js +4 -3
  4. package/dist/rules/no-extraneous-class.js.map +1 -1
  5. package/dist/rules/no-shadow.js +2 -3
  6. package/dist/rules/no-shadow.js.map +1 -1
  7. package/dist/rules/no-unnecessary-condition.js +7 -43
  8. package/dist/rules/no-unnecessary-condition.js.map +1 -1
  9. package/dist/rules/no-unnecessary-template-expression.js +257 -173
  10. package/dist/rules/no-unnecessary-template-expression.js.map +1 -1
  11. package/dist/rules/prefer-nullish-coalescing.js +106 -56
  12. package/dist/rules/prefer-nullish-coalescing.js.map +1 -1
  13. package/dist/rules/prefer-readonly.js +58 -1
  14. package/dist/rules/prefer-readonly.js.map +1 -1
  15. package/dist/util/getValueOfLiteralType.js +17 -0
  16. package/dist/util/getValueOfLiteralType.js.map +1 -0
  17. package/dist/util/index.js +2 -0
  18. package/dist/util/index.js.map +1 -1
  19. package/dist/util/truthinessAndNullishUtils.js +68 -0
  20. package/dist/util/truthinessAndNullishUtils.js.map +1 -0
  21. package/docs/rules/no-explicit-any.mdx +1 -0
  22. package/docs/rules/no-unnecessary-template-expression.mdx +19 -0
  23. package/docs/rules/no-unsafe-argument.mdx +1 -0
  24. package/docs/rules/no-unsafe-assignment.mdx +1 -0
  25. package/docs/rules/no-unsafe-call.mdx +1 -0
  26. package/docs/rules/no-unsafe-function-type.mdx +1 -0
  27. package/docs/rules/no-unsafe-member-access.mdx +1 -0
  28. package/docs/rules/no-unsafe-return.mdx +1 -0
  29. package/docs/rules/no-unused-vars.mdx +68 -1
  30. package/docs/rules/prefer-nullish-coalescing.mdx +5 -0
  31. package/docs/rules/use-unknown-in-catch-callback-variable.mdx +4 -0
  32. package/package.json +7 -7
@@ -62,200 +62,284 @@ exports.default = (0, util_1.createRule)({
62
62
  defaultOptions: [],
63
63
  create(context) {
64
64
  const services = (0, util_1.getParserServices)(context);
65
- function isUnderlyingTypeString(expression) {
66
- const checker = services.program.getTypeChecker();
67
- const { constraintType } = (0, util_1.getConstraintInfo)(checker, services.getTypeAtLocation(expression));
68
- if (constraintType == null) {
69
- return false;
70
- }
71
- const isString = (t) => {
72
- return (0, util_1.isTypeFlagSet)(t, ts.TypeFlags.StringLike);
73
- };
74
- if (constraintType.isUnion()) {
75
- return constraintType.types.every(isString);
65
+ const checker = services.program.getTypeChecker();
66
+ function isStringLike(type) {
67
+ return (0, util_1.isTypeFlagSet)(type, ts.TypeFlags.StringLike);
68
+ }
69
+ function isUnderlyingTypeString(type) {
70
+ if (type.isUnion()) {
71
+ return type.types.every(isStringLike);
76
72
  }
77
- if (constraintType.isIntersection()) {
78
- return constraintType.types.some(isString);
73
+ if (type.isIntersection()) {
74
+ return type.types.some(isStringLike);
79
75
  }
80
- return isString(constraintType);
76
+ return isStringLike(type);
81
77
  }
82
- function isLiteral(expression) {
83
- return expression.type === utils_1.AST_NODE_TYPES.Literal;
78
+ /**
79
+ * Checks for whole enum types, i.e. `MyEnum`, and not their values, i.e. `MyEnum.A`
80
+ */
81
+ function isEnumType(type) {
82
+ const symbol = type.getSymbol();
83
+ return !!(symbol?.valueDeclaration &&
84
+ ts.isEnumDeclaration(symbol.valueDeclaration));
84
85
  }
85
- function isTemplateLiteral(expression) {
86
- return expression.type === utils_1.AST_NODE_TYPES.TemplateLiteral;
86
+ const isLiteral = (0, util_1.isNodeOfType)(utils_1.TSESTree.AST_NODE_TYPES.Literal);
87
+ function isTemplateLiteral(node) {
88
+ return node.type === utils_1.AST_NODE_TYPES.TemplateLiteral;
87
89
  }
88
- function isInfinityIdentifier(expression) {
89
- return (expression.type === utils_1.AST_NODE_TYPES.Identifier &&
90
- expression.name === 'Infinity');
90
+ function isInfinityIdentifier(node) {
91
+ return (node.type === utils_1.AST_NODE_TYPES.Identifier && node.name === 'Infinity');
91
92
  }
92
- function isNaNIdentifier(expression) {
93
- return (expression.type === utils_1.AST_NODE_TYPES.Identifier &&
94
- expression.name === 'NaN');
93
+ function isNaNIdentifier(node) {
94
+ return node.type === utils_1.AST_NODE_TYPES.Identifier && node.name === 'NaN';
95
+ }
96
+ function isFixableIdentifier(node) {
97
+ return ((0, util_1.isUndefinedIdentifier)(node) ||
98
+ isInfinityIdentifier(node) ||
99
+ isNaNIdentifier(node));
95
100
  }
96
101
  function hasCommentsBetweenQuasi(startQuasi, endQuasi) {
97
102
  const startToken = (0, util_1.nullThrows)(context.sourceCode.getTokenByRangeStart(startQuasi.range[0]), util_1.NullThrowsReasons.MissingToken('`${', 'opening template literal'));
98
103
  const endToken = (0, util_1.nullThrows)(context.sourceCode.getTokenByRangeStart(endQuasi.range[0]), util_1.NullThrowsReasons.MissingToken('}', 'closing template literal'));
99
104
  return context.sourceCode.commentsExistBetween(startToken, endToken);
100
105
  }
101
- return {
102
- TemplateLiteral(node) {
103
- if (node.parent.type === utils_1.AST_NODE_TYPES.TaggedTemplateExpression) {
104
- return;
105
- }
106
- const hasSingleStringVariable = node.quasis.length === 2 &&
107
- node.quasis[0].value.raw === '' &&
108
- node.quasis[1].value.raw === '' &&
109
- node.expressions.length === 1 &&
110
- isUnderlyingTypeString(node.expressions[0]);
111
- if (hasSingleStringVariable) {
112
- if (hasCommentsBetweenQuasi(node.quasis[0], node.quasis[1])) {
113
- return;
114
- }
115
- context.report({
116
- loc: (0, rangeToLoc_1.rangeToLoc)(context.sourceCode, [
117
- node.expressions[0].range[0] - 2,
118
- node.expressions[0].range[1] + 1,
119
- ]),
120
- messageId: 'noUnnecessaryTemplateExpression',
121
- fix(fixer) {
122
- const wrappingCode = (0, util_1.getMovedNodeCode)({
123
- destinationNode: node,
124
- nodeToMove: node.expressions[0],
125
- sourceCode: context.sourceCode,
126
- });
127
- return fixer.replaceText(node, wrappingCode);
128
- },
106
+ function isTrivialInterpolation(node) {
107
+ return (node.quasis.length === 2 &&
108
+ node.quasis[0].value.raw === '' &&
109
+ node.quasis[1].value.raw === '');
110
+ }
111
+ function getInterpolations(node) {
112
+ if (node.type === utils_1.AST_NODE_TYPES.TemplateLiteral) {
113
+ return node.expressions;
114
+ }
115
+ return node.types;
116
+ }
117
+ function getInterpolationInfos(node) {
118
+ return getInterpolations(node).map((interpolation, index) => ({
119
+ interpolation,
120
+ nextQuasi: node.quasis[index + 1],
121
+ prevQuasi: node.quasis[index],
122
+ }));
123
+ }
124
+ function getLiteral(node) {
125
+ const maybeLiteral = node.type === utils_1.AST_NODE_TYPES.TSLiteralType ? node.literal : node;
126
+ return isLiteral(maybeLiteral) ? maybeLiteral : null;
127
+ }
128
+ function getTemplateLiteral(node) {
129
+ const maybeTemplateLiteral = node.type === utils_1.AST_NODE_TYPES.TSLiteralType ? node.literal : node;
130
+ return isTemplateLiteral(maybeTemplateLiteral)
131
+ ? maybeTemplateLiteral
132
+ : null;
133
+ }
134
+ function reportSingleInterpolation(node) {
135
+ const interpolations = getInterpolations(node);
136
+ context.report({
137
+ loc: (0, rangeToLoc_1.rangeToLoc)(context.sourceCode, [
138
+ interpolations[0].range[0] - 2,
139
+ interpolations[0].range[1] + 1,
140
+ ]),
141
+ messageId: 'noUnnecessaryTemplateExpression',
142
+ fix(fixer) {
143
+ const wrappingCode = (0, util_1.getMovedNodeCode)({
144
+ destinationNode: node,
145
+ nodeToMove: interpolations[0],
146
+ sourceCode: context.sourceCode,
129
147
  });
130
- return;
148
+ return fixer.replaceText(node, wrappingCode);
149
+ },
150
+ });
151
+ }
152
+ function isUnncessaryValueInterpolation({ interpolation, nextQuasi, prevQuasi, }) {
153
+ if (hasCommentsBetweenQuasi(prevQuasi, nextQuasi)) {
154
+ return false;
155
+ }
156
+ if (isFixableIdentifier(interpolation)) {
157
+ return true;
158
+ }
159
+ if (isLiteral(interpolation)) {
160
+ // allow trailing whitespace literal
161
+ if (startsWithNewLine(nextQuasi.value.raw)) {
162
+ return !(typeof interpolation.value === 'string' &&
163
+ isWhitespace(interpolation.value));
131
164
  }
132
- const fixableExpressionsReversed = node.expressions
133
- .map((expression, index) => ({
134
- expression,
135
- nextQuasi: node.quasis[index + 1],
136
- prevQuasi: node.quasis[index],
137
- }))
138
- .filter(({ expression, nextQuasi, prevQuasi }) => {
139
- if ((0, util_1.isUndefinedIdentifier)(expression) ||
140
- isInfinityIdentifier(expression) ||
141
- isNaNIdentifier(expression)) {
142
- return true;
143
- }
144
- // allow expressions that include comments
145
- if (hasCommentsBetweenQuasi(prevQuasi, nextQuasi)) {
146
- return false;
147
- }
148
- if (isLiteral(expression)) {
149
- // allow trailing whitespace literal
150
- if (startsWithNewLine(nextQuasi.value.raw)) {
151
- return !(typeof expression.value === 'string' &&
152
- isWhitespace(expression.value));
153
- }
154
- return true;
155
- }
156
- if (isTemplateLiteral(expression)) {
157
- // allow trailing whitespace literal
158
- if (startsWithNewLine(nextQuasi.value.raw)) {
159
- return !(expression.quasis.length === 1 &&
160
- isWhitespace(expression.quasis[0].value.raw));
161
- }
162
- return true;
163
- }
164
- return false;
165
- })
166
- .reverse();
167
- let nextCharacterIsOpeningCurlyBrace = false;
168
- for (const { expression, nextQuasi, prevQuasi, } of fixableExpressionsReversed) {
169
- const fixers = [];
170
- if (nextQuasi.value.raw !== '') {
171
- nextCharacterIsOpeningCurlyBrace =
172
- nextQuasi.value.raw.startsWith('{');
173
- }
174
- if (isLiteral(expression)) {
175
- let escapedValue = (typeof expression.value === 'string'
176
- ? // The value is already a string, so we're removing quotes:
177
- // "'va`lue'" -> "va`lue"
178
- expression.raw.slice(1, -1)
179
- : // The value may be one of number | bigint | boolean | RegExp | null.
180
- // In regular expressions, we escape every backslash
181
- String(expression.value).replaceAll('\\', '\\\\'))
182
- // The string or RegExp may contain ` or ${.
183
- // We want both of these to be escaped in the final template expression.
184
- //
185
- // A pair of backslashes means "escaped backslash", so backslashes
186
- // from this pair won't escape ` or ${. Therefore, to escape these
187
- // sequences in the resulting template expression, we need to escape
188
- // all sequences that are preceded by an even number of backslashes.
189
- //
190
- // This RegExp does the following transformations:
191
- // \` -> \`
192
- // \\` -> \\\`
193
- // \${ -> \${
194
- // \\${ -> \\\${
195
- .replaceAll(new RegExp(`${String(evenNumOfBackslashesRegExp.source)}(\`|\\\${)`, 'g'), '\\$1');
196
- // `...${'...$'}{...`
197
- // ^^^^
198
- if (nextCharacterIsOpeningCurlyBrace &&
199
- endsWithUnescapedDollarSign(escapedValue)) {
200
- escapedValue = escapedValue.replaceAll(/\$$/g, '\\$');
201
- }
202
- if (escapedValue.length !== 0) {
203
- nextCharacterIsOpeningCurlyBrace = escapedValue.startsWith('{');
204
- }
205
- fixers.push(fixer => [fixer.replaceText(expression, escapedValue)]);
206
- }
207
- else if (isTemplateLiteral(expression)) {
208
- // Since we iterate from the last expression to the first,
209
- // a subsequent expression can tell the current expression
210
- // that it starts with {.
165
+ return true;
166
+ }
167
+ if (isTemplateLiteral(interpolation)) {
168
+ // allow trailing whitespace literal
169
+ if (startsWithNewLine(nextQuasi.value.raw)) {
170
+ return !(interpolation.quasis.length === 1 &&
171
+ isWhitespace(interpolation.quasis[0].value.raw));
172
+ }
173
+ return true;
174
+ }
175
+ return false;
176
+ }
177
+ function isUnncessaryTypeInterpolation({ interpolation, nextQuasi, prevQuasi, }) {
178
+ if (hasCommentsBetweenQuasi(prevQuasi, nextQuasi)) {
179
+ return false;
180
+ }
181
+ const literal = getLiteral(interpolation);
182
+ if (literal) {
183
+ // allow trailing whitespace literal
184
+ if (startsWithNewLine(nextQuasi.value.raw)) {
185
+ return !(typeof literal.value === 'string' && isWhitespace(literal.value));
186
+ }
187
+ return true;
188
+ }
189
+ if (interpolation.type === utils_1.AST_NODE_TYPES.TSNullKeyword ||
190
+ interpolation.type === utils_1.AST_NODE_TYPES.TSUndefinedKeyword) {
191
+ return true;
192
+ }
193
+ const templateLiteral = getTemplateLiteral(interpolation);
194
+ if (templateLiteral) {
195
+ // allow trailing whitespace literal
196
+ if (startsWithNewLine(nextQuasi.value.raw)) {
197
+ return !(templateLiteral.quasis.length === 1 &&
198
+ isWhitespace(templateLiteral.quasis[0].value.raw));
199
+ }
200
+ return true;
201
+ }
202
+ return false;
203
+ }
204
+ function getReportDescriptors(infos) {
205
+ let nextCharacterIsOpeningCurlyBrace = false;
206
+ const reportDescriptors = [];
207
+ const reversedInfos = [...infos].reverse();
208
+ for (const { interpolation, nextQuasi, prevQuasi } of reversedInfos) {
209
+ const fixers = [];
210
+ if (nextQuasi.value.raw !== '') {
211
+ nextCharacterIsOpeningCurlyBrace =
212
+ nextQuasi.value.raw.startsWith('{');
213
+ }
214
+ const literal = getLiteral(interpolation);
215
+ const templateLiteral = getTemplateLiteral(interpolation);
216
+ if (literal) {
217
+ let escapedValue = (typeof literal.value === 'string'
218
+ ? // The value is already a string, so we're removing quotes:
219
+ // "'va`lue'" -> "va`lue"
220
+ literal.raw.slice(1, -1)
221
+ : // The value may be one of number | bigint | boolean | RegExp | null.
222
+ // In regular expressions, we escape every backslash
223
+ String(literal.value).replaceAll('\\', '\\\\'))
224
+ // The string or RegExp may contain ` or ${.
225
+ // We want both of these to be escaped in the final template expression.
211
226
  //
212
- // `... ${`... $`}${'{...'} ...`
213
- // ^ ^ subsequent expression starts with {
214
- // current expression ends with a dollar sign,
215
- // so '$' + '{' === '${' (bad news for us).
216
- // Let's escape the dollar sign at the end.
217
- if (nextCharacterIsOpeningCurlyBrace &&
218
- endsWithUnescapedDollarSign(expression.quasis[expression.quasis.length - 1].value.raw)) {
219
- fixers.push(fixer => [
220
- fixer.replaceTextRange([expression.range[1] - 2, expression.range[1] - 2], '\\'),
221
- ]);
222
- }
223
- if (expression.quasis.length === 1 &&
224
- expression.quasis[0].value.raw.length !== 0) {
225
- nextCharacterIsOpeningCurlyBrace =
226
- expression.quasis[0].value.raw.startsWith('{');
227
- }
228
- // Remove the beginning and trailing backtick characters.
229
- fixers.push(fixer => [
230
- fixer.removeRange([expression.range[0], expression.range[0] + 1]),
231
- fixer.removeRange([expression.range[1] - 1, expression.range[1]]),
232
- ]);
227
+ // A pair of backslashes means "escaped backslash", so backslashes
228
+ // from this pair won't escape ` or ${. Therefore, to escape these
229
+ // sequences in the resulting template expression, we need to escape
230
+ // all sequences that are preceded by an even number of backslashes.
231
+ //
232
+ // This RegExp does the following transformations:
233
+ // \` -> \`
234
+ // \\` -> \\\`
235
+ // \${ -> \${
236
+ // \\${ -> \\\${
237
+ .replaceAll(new RegExp(`${String(evenNumOfBackslashesRegExp.source)}(\`|\\\${)`, 'g'), '\\$1');
238
+ // `...${'...$'}{...`
239
+ // ^^^^
240
+ if (nextCharacterIsOpeningCurlyBrace &&
241
+ endsWithUnescapedDollarSign(escapedValue)) {
242
+ escapedValue = escapedValue.replaceAll(/\$$/g, '\\$');
233
243
  }
234
- else {
235
- nextCharacterIsOpeningCurlyBrace = false;
244
+ if (escapedValue.length !== 0) {
245
+ nextCharacterIsOpeningCurlyBrace = escapedValue.startsWith('{');
236
246
  }
237
- // `... $${'{...'} ...`
238
- // ^^^^^
247
+ fixers.push(fixer => [fixer.replaceText(literal, escapedValue)]);
248
+ }
249
+ else if (templateLiteral) {
250
+ // Since we iterate from the last expression to the first,
251
+ // a subsequent expression can tell the current expression
252
+ // that it starts with {.
253
+ //
254
+ // `... ${`... $`}${'{...'} ...`
255
+ // ^ ^ subsequent expression starts with {
256
+ // current expression ends with a dollar sign,
257
+ // so '$' + '{' === '${' (bad news for us).
258
+ // Let's escape the dollar sign at the end.
239
259
  if (nextCharacterIsOpeningCurlyBrace &&
240
- endsWithUnescapedDollarSign(prevQuasi.value.raw)) {
260
+ endsWithUnescapedDollarSign(templateLiteral.quasis[templateLiteral.quasis.length - 1].value
261
+ .raw)) {
241
262
  fixers.push(fixer => [
242
- fixer.replaceTextRange([prevQuasi.range[1] - 3, prevQuasi.range[1] - 2], '\\$'),
263
+ fixer.replaceTextRange([templateLiteral.range[1] - 2, templateLiteral.range[1] - 2], '\\'),
243
264
  ]);
244
265
  }
245
- const warnLocStart = prevQuasi.range[1] - 2;
246
- const warnLocEnd = nextQuasi.range[0] + 1;
247
- context.report({
248
- loc: (0, rangeToLoc_1.rangeToLoc)(context.sourceCode, [warnLocStart, warnLocEnd]),
249
- messageId: 'noUnnecessaryTemplateExpression',
250
- fix(fixer) {
251
- return [
252
- // Remove the quasis' parts that are related to the current expression.
253
- fixer.removeRange([warnLocStart, expression.range[0]]),
254
- fixer.removeRange([expression.range[1], warnLocEnd]),
255
- ...fixers.flatMap(cb => cb(fixer)),
256
- ];
257
- },
258
- });
266
+ if (templateLiteral.quasis.length === 1 &&
267
+ templateLiteral.quasis[0].value.raw.length !== 0) {
268
+ nextCharacterIsOpeningCurlyBrace =
269
+ templateLiteral.quasis[0].value.raw.startsWith('{');
270
+ }
271
+ // Remove the beginning and trailing backtick characters.
272
+ fixers.push(fixer => [
273
+ fixer.removeRange([
274
+ templateLiteral.range[0],
275
+ templateLiteral.range[0] + 1,
276
+ ]),
277
+ fixer.removeRange([
278
+ templateLiteral.range[1] - 1,
279
+ templateLiteral.range[1],
280
+ ]),
281
+ ]);
282
+ }
283
+ else {
284
+ nextCharacterIsOpeningCurlyBrace = false;
285
+ }
286
+ // `... $${'{...'} ...`
287
+ // ^^^^^
288
+ if (nextCharacterIsOpeningCurlyBrace &&
289
+ endsWithUnescapedDollarSign(prevQuasi.value.raw)) {
290
+ fixers.push(fixer => [
291
+ fixer.replaceTextRange([prevQuasi.range[1] - 3, prevQuasi.range[1] - 2], '\\$'),
292
+ ]);
293
+ }
294
+ const warnLocStart = prevQuasi.range[1] - 2;
295
+ const warnLocEnd = nextQuasi.range[0] + 1;
296
+ reportDescriptors.push({
297
+ loc: (0, rangeToLoc_1.rangeToLoc)(context.sourceCode, [warnLocStart, warnLocEnd]),
298
+ messageId: 'noUnnecessaryTemplateExpression',
299
+ fix(fixer) {
300
+ return [
301
+ // Remove the quasis' parts that are related to the current expression.
302
+ fixer.removeRange([warnLocStart, interpolation.range[0]]),
303
+ fixer.removeRange([interpolation.range[1], warnLocEnd]),
304
+ ...fixers.flatMap(cb => cb(fixer)),
305
+ ];
306
+ },
307
+ });
308
+ }
309
+ return reportDescriptors;
310
+ }
311
+ return {
312
+ TemplateLiteral(node) {
313
+ if (node.parent.type === utils_1.AST_NODE_TYPES.TaggedTemplateExpression) {
314
+ return;
315
+ }
316
+ if (isTrivialInterpolation(node) &&
317
+ !hasCommentsBetweenQuasi(node.quasis[0], node.quasis[1])) {
318
+ const { constraintType } = (0, util_1.getConstraintInfo)(checker, services.getTypeAtLocation(node.expressions[0]));
319
+ if (constraintType && isUnderlyingTypeString(constraintType)) {
320
+ reportSingleInterpolation(node);
321
+ return;
322
+ }
323
+ }
324
+ const infos = getInterpolationInfos(node).filter(isUnncessaryValueInterpolation);
325
+ for (const reportDescriptor of getReportDescriptors(infos)) {
326
+ context.report(reportDescriptor);
327
+ }
328
+ },
329
+ TSTemplateLiteralType(node) {
330
+ if (isTrivialInterpolation(node) &&
331
+ !hasCommentsBetweenQuasi(node.quasis[0], node.quasis[1])) {
332
+ const { constraintType } = (0, util_1.getConstraintInfo)(checker, services.getTypeAtLocation(node.types[0]));
333
+ if (constraintType &&
334
+ isUnderlyingTypeString(constraintType) &&
335
+ !isEnumType(constraintType)) {
336
+ reportSingleInterpolation(node);
337
+ return;
338
+ }
339
+ }
340
+ const infos = getInterpolationInfos(node).filter(isUnncessaryTypeInterpolation);
341
+ for (const reportDescriptor of getReportDescriptors(infos)) {
342
+ context.report(reportDescriptor);
259
343
  }
260
344
  },
261
345
  };
@@ -1 +1 @@
1
- {"version":3,"file":"no-unnecessary-template-expression.js","sourceRoot":"","sources":["../../src/rules/no-unnecessary-template-expression.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"no-unnecessary-template-expression.js","sourceRoot":"","sources":["../../src/rules/no-unnecessary-template-expression.ts"],"names":[],"mappings":"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"}