@danielx/civet 0.5.84 → 0.5.86

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.
package/dist/main.js CHANGED
@@ -128,16 +128,209 @@ var require_lib = __commonJS({
128
128
  function gatherRecursiveWithinFunction(node, predicate) {
129
129
  return gatherRecursive(node, predicate, isFunction);
130
130
  }
131
+ function insertTrimmingSpace(target, c) {
132
+ if (!target)
133
+ return target;
134
+ if (Array.isArray(target))
135
+ return target.map((e, i) => {
136
+ if (i === 0)
137
+ return insertTrimmingSpace(e, c);
138
+ return e;
139
+ });
140
+ if (target.children)
141
+ return Object.assign({}, target, {
142
+ children: target.children.map((e, i) => {
143
+ if (i === 0)
144
+ return insertTrimmingSpace(e, c);
145
+ return e;
146
+ })
147
+ });
148
+ if (target.token)
149
+ return Object.assign({}, target, {
150
+ token: target.token.replace(/^ ?/, c)
151
+ });
152
+ return target;
153
+ }
154
+ function getTrimmingSpace(target) {
155
+ if (!target)
156
+ return;
157
+ if (Array.isArray(target))
158
+ return getTrimmingSpace(target[0]);
159
+ if (target.children)
160
+ return getTrimmingSpace(target.children[0]);
161
+ if (target.token)
162
+ return target.token.match(/^ ?/)[0];
163
+ }
164
+ function needsRef(exp) {
165
+ switch (exp.type) {
166
+ case "Identifier":
167
+ case "Literal":
168
+ case "Ref":
169
+ return false;
170
+ default:
171
+ return true;
172
+ }
173
+ }
174
+ function maybeRef(exp, base = "ref") {
175
+ if (!needsRef(exp))
176
+ return exp;
177
+ return {
178
+ type: "Ref",
179
+ base,
180
+ id: base
181
+ };
182
+ }
183
+ function literalValue(literal) {
184
+ let { raw } = literal;
185
+ switch (raw) {
186
+ case "null":
187
+ return null;
188
+ case "true":
189
+ return true;
190
+ case "false":
191
+ return false;
192
+ }
193
+ if (raw.startsWith('"') && raw.endsWith('"') || raw.startsWith("'") && raw.endsWith("'")) {
194
+ return raw.slice(1, -1);
195
+ }
196
+ const numeric = literal.children.find(
197
+ (child) => child.type === "NumericLiteral"
198
+ );
199
+ if (numeric) {
200
+ raw = raw.replace(/_/g, "");
201
+ const { token } = numeric;
202
+ if (token.endsWith("n")) {
203
+ return BigInt(raw.slice(0, -1));
204
+ } else if (token.match(/[\.eE]/)) {
205
+ return parseFloat(raw);
206
+ } else if (token.startsWith("0")) {
207
+ switch (token.charAt(1).toLowerCase()) {
208
+ case "x":
209
+ return parseInt(raw.replace(/0[xX]/, ""), 16);
210
+ case "b":
211
+ return parseInt(raw.replace(/0[bB]/, ""), 2);
212
+ case "o":
213
+ return parseInt(raw.replace(/0[oO]/, ""), 8);
214
+ }
215
+ }
216
+ return parseInt(raw, 10);
217
+ }
218
+ throw new Error("Unrecognized literal " + JSON.stringify(literal));
219
+ }
220
+ function forRange(open, forDeclaration, range, stepExp, close) {
221
+ const { start, end, inclusive } = range;
222
+ const counterRef = {
223
+ type: "Ref",
224
+ base: "i",
225
+ id: "i"
226
+ };
227
+ let stepRef;
228
+ if (stepExp) {
229
+ stepExp = insertTrimmingSpace(stepExp, "");
230
+ stepRef = maybeRef(stepExp, "step");
231
+ }
232
+ const startRef = maybeRef(start, "start");
233
+ const endRef = maybeRef(end, "end");
234
+ const startRefDec = startRef !== start ? [startRef, " = ", start, ", "] : [];
235
+ const endRefDec = endRef !== end ? [endRef, " = ", end, ", "] : [];
236
+ let ascDec = [], ascRef, asc;
237
+ if (stepRef) {
238
+ if (stepRef !== stepExp) {
239
+ ascDec = [", ", stepRef, " = ", stepExp];
240
+ }
241
+ } else if (start.type === "Literal" && end.type === "Literal") {
242
+ asc = literalValue(start) <= literalValue(end);
243
+ } else {
244
+ ascRef = {
245
+ type: "Ref",
246
+ base: "asc",
247
+ id: "asc"
248
+ };
249
+ ascDec = [", ", ascRef, " = ", startRef, " <= ", endRef];
250
+ }
251
+ let varAssign = [], varLetAssign = varAssign, varLet = varAssign, blockPrefix;
252
+ if (forDeclaration?.declare) {
253
+ if (forDeclaration.declare.token === "let") {
254
+ const varName = forDeclaration.children.splice(1);
255
+ varAssign = [...insertTrimmingSpace(varName, ""), " = "];
256
+ varLet = [",", ...varName, " = ", counterRef];
257
+ } else {
258
+ blockPrefix = [
259
+ ["", forDeclaration, " = ", counterRef, ";\n"]
260
+ ];
261
+ }
262
+ } else if (forDeclaration) {
263
+ varAssign = varLetAssign = [forDeclaration, " = "];
264
+ blockPrefix = [
265
+ ["", {
266
+ type: "AssignmentExpression",
267
+ children: [],
268
+ names: forDeclaration.names
269
+ }]
270
+ ];
271
+ }
272
+ const declaration = {
273
+ type: "Declaration",
274
+ children: ["let ", ...startRefDec, ...endRefDec, counterRef, " = ", ...varLetAssign, startRef, ...varLet, ...ascDec],
275
+ names: forDeclaration?.names
276
+ };
277
+ const counterPart = inclusive ? [counterRef, " <= ", endRef, " : ", counterRef, " >= ", endRef] : [counterRef, " < ", endRef, " : ", counterRef, " > ", endRef];
278
+ const condition = stepRef ? [stepRef, " !== 0 && (", stepRef, " > 0 ? ", ...counterPart, ")"] : ascRef ? [ascRef, " ? ", ...counterPart] : asc ? counterPart.slice(0, 3) : counterPart.slice(4);
279
+ const increment = stepRef ? [...varAssign, counterRef, " += ", stepRef] : ascRef ? [...varAssign, ascRef, " ? ++", counterRef, " : --", counterRef] : [...varAssign, asc ? "++" : "--", counterRef];
280
+ return {
281
+ declaration,
282
+ children: [open, declaration, "; ", ...condition, "; ", ...increment, close],
283
+ blockPrefix
284
+ };
285
+ }
286
+ function modifyString(str) {
287
+ return str.replace(/(^.?|[^\\]{2})(\\\\)*\n/g, "$1$2\\n");
288
+ }
289
+ function quoteString(str) {
290
+ str = str.replace(/\\/g, "\\\\");
291
+ if (str.includes('"') && !str.includes("'")) {
292
+ return "'" + str.replace(/'/g, "\\'") + "'";
293
+ } else {
294
+ return '"' + str.replace(/"/g, '\\"') + '"';
295
+ }
296
+ }
297
+ function processCoffeeInterpolation(s, parts, e, $loc) {
298
+ if (parts.length === 0 || parts.length === 1 && parts[0].token != null) {
299
+ return {
300
+ type: "StringLiteral",
301
+ token: parts.length ? `"${modifyString(parts[0].token)}"` : '""',
302
+ $loc
303
+ };
304
+ }
305
+ parts.forEach((part) => {
306
+ if (part.token) {
307
+ const str = part.token.replace(/(`|\$\{)/g, "\\$1");
308
+ part.token = modifyString(str);
309
+ }
310
+ });
311
+ s.token = e.token = "`";
312
+ return {
313
+ type: "TemplateLiteral",
314
+ children: [s, parts, e]
315
+ };
316
+ }
131
317
  module2.exports = {
132
318
  clone,
133
319
  deepCopy,
320
+ forRange,
134
321
  gatherNodes,
135
322
  gatherRecursive,
136
323
  gatherRecursiveAll,
137
324
  gatherRecursiveWithinFunction,
325
+ getTrimmingSpace,
138
326
  hasAwait,
139
327
  hasYield,
328
+ insertTrimmingSpace,
140
329
  isFunction,
330
+ literalValue,
331
+ modifyString,
332
+ processCoffeeInterpolation,
333
+ quoteString,
141
334
  removeParentPointers
142
335
  };
143
336
  }
@@ -704,6 +897,7 @@ ${input.slice(result.pos)}
704
897
  BracedContent,
705
898
  NestedBlockStatements,
706
899
  NestedBlockStatement,
900
+ BlockStatementPart,
707
901
  Literal,
708
902
  LiteralContent,
709
903
  NullLiteral,
@@ -781,6 +975,7 @@ ${input.slice(result.pos)}
781
975
  ElseExpressionBlock,
782
976
  NestedBlockExpressions,
783
977
  NestedBlockExpression,
978
+ BlockExpressionPart,
784
979
  IterationStatement,
785
980
  IterationExpression,
786
981
  LoopStatement,
@@ -797,6 +992,7 @@ ${input.slice(result.pos)}
797
992
  CoffeeForIndex,
798
993
  CoffeeForDeclaration,
799
994
  ForStatementParameters,
995
+ ForRangeParameters,
800
996
  ForInOfDeclaration,
801
997
  ForDeclaration,
802
998
  ForBinding,
@@ -1108,6 +1304,10 @@ ${input.slice(result.pos)}
1108
1304
  NestedTypeList,
1109
1305
  NestedType,
1110
1306
  TypeConditional,
1307
+ TypeTemplateSubstitution,
1308
+ TypeTemplateLiteral,
1309
+ CoffeeStringTypeSubstitution,
1310
+ CoffeeInterpolatedDoubleQuotedTypeLiteral,
1111
1311
  TypeLiteral,
1112
1312
  InlineInterfaceLiteral,
1113
1313
  InlineBasicInterfaceProperty,
@@ -1524,10 +1724,7 @@ ${input.slice(result.pos)}
1524
1724
  return result;
1525
1725
  }
1526
1726
  }
1527
- var TopLevelSingleLineStatements$0 = $TV($P($S($N(EOS), TopLevelStatement)), function($skip, $loc, $0, $1) {
1528
- var statements = $0;
1529
- return statements.map(([, statement]) => statement);
1530
- });
1727
+ var TopLevelSingleLineStatements$0 = $P(TopLevelStatement);
1531
1728
  function TopLevelSingleLineStatements(state) {
1532
1729
  let eventData;
1533
1730
  if (state.events) {
@@ -1550,10 +1747,10 @@ ${input.slice(result.pos)}
1550
1747
  return result;
1551
1748
  }
1552
1749
  }
1553
- var TopLevelStatement$0 = $TS($S($E(_), ModuleItem, StatementDelimiter), function($skip, $loc, $0, $1, $2, $3) {
1554
- var ws = $1;
1555
- var statement = $2;
1556
- var delimiter = $3;
1750
+ var TopLevelStatement$0 = $TS($S($N(EOS), $E(_), ModuleItem, StatementDelimiter), function($skip, $loc, $0, $1, $2, $3, $4) {
1751
+ var ws = $2;
1752
+ var statement = $3;
1753
+ var delimiter = $4;
1557
1754
  if (ws) {
1558
1755
  statement = {
1559
1756
  ...statement,
@@ -1784,7 +1981,7 @@ ${input.slice(result.pos)}
1784
1981
  if (args.length === 1 && args[0].type === "IterationExpression" && args[0].subtype !== "DoStatement" && !args[0].async && module2.isEmptyBareBlock(args[0].block)) {
1785
1982
  return $skip;
1786
1983
  }
1787
- return [ta?.[0], open, module2.insertTrimmingSpace(ws, ""), args, close];
1984
+ return [ta?.[0], open, insertTrimmingSpace(ws, ""), args, close];
1788
1985
  });
1789
1986
  function ImplicitArguments(state) {
1790
1987
  let eventData;
@@ -1994,7 +2191,7 @@ ${input.slice(result.pos)}
1994
2191
  }
1995
2192
  var ArgumentList$0 = $S(ArgumentPart, $P($S(CommaDelimiter, $C(NestedImplicitObjectLiteral, NestedArgumentList))));
1996
2193
  var ArgumentList$1 = $TS($S(NestedImplicitObjectLiteral), function($skip, $loc, $0, $1) {
1997
- return module2.insertTrimmingSpace($1, "");
2194
+ return insertTrimmingSpace($1, "");
1998
2195
  });
1999
2196
  var ArgumentList$2 = NestedArgumentList;
2000
2197
  var ArgumentList$3 = $TS($S($E(_), ArgumentPart, $Q($S(CommaDelimiter, $E(_), ArgumentPart))), function($skip, $loc, $0, $1, $2, $3) {
@@ -2024,7 +2221,7 @@ ${input.slice(result.pos)}
2024
2221
  }
2025
2222
  var NonPipelineArgumentList$0 = $S(NonPipelineArgumentPart, $P($S(CommaDelimiter, $C(NestedImplicitObjectLiteral, NestedArgumentList))));
2026
2223
  var NonPipelineArgumentList$1 = $TS($S(NestedImplicitObjectLiteral), function($skip, $loc, $0, $1) {
2027
- return module2.insertTrimmingSpace($1, "");
2224
+ return insertTrimmingSpace($1, "");
2028
2225
  });
2029
2226
  var NonPipelineArgumentList$2 = NestedArgumentList;
2030
2227
  var NonPipelineArgumentList$3 = $TS($S($E(_), NonPipelineArgumentPart, $Q($S(CommaDelimiter, $E(_), NonPipelineArgumentPart))), function($skip, $loc, $0, $1, $2, $3) {
@@ -2296,7 +2493,7 @@ ${input.slice(result.pos)}
2296
2493
  var UnaryExpression$1 = $TS($S(CoffeeDoEnabled, Do, __, $C($S(LeftHandSideExpression, $N($S(__, AssignmentOpSymbol))), ArrowFunction, ExtendedExpression)), function($skip, $loc, $0, $1, $2, $3, $4) {
2297
2494
  var ws = $3;
2298
2495
  var exp = $4;
2299
- ws = module2.insertTrimmingSpace(ws, "");
2496
+ ws = insertTrimmingSpace(ws, "");
2300
2497
  return ["(", ...ws, exp, ")()"];
2301
2498
  });
2302
2499
  function UnaryExpression(state) {
@@ -4307,7 +4504,7 @@ ${input.slice(result.pos)}
4307
4504
  if (after.length) {
4308
4505
  const spliceRef = module2.getRef("splice");
4309
4506
  blockPrefix = {
4310
- children: ["[", module2.insertTrimmingSpace(after, ""), "] = ", spliceRef, ".call(", restIdentifier, ", -", after.length.toString(), ")"],
4507
+ children: ["[", insertTrimmingSpace(after, ""), "] = ", spliceRef, ".call(", restIdentifier, ", -", after.length.toString(), ")"],
4311
4508
  names: after.flatMap((p) => p.names)
4312
4509
  };
4313
4510
  }
@@ -5815,7 +6012,7 @@ ${input.slice(result.pos)}
5815
6012
  var w = $2;
5816
6013
  var decl = $3;
5817
6014
  decl.names.forEach((name) => module2.operators.add(name));
5818
- return [module2.insertTrimmingSpace(w, ""), decl];
6015
+ return [insertTrimmingSpace(w, ""), decl];
5819
6016
  });
5820
6017
  var OperatorDeclaration$1 = $TS($S(OperatorSignature, BracedBlock), function($skip, $loc, $0, $1, $2) {
5821
6018
  var signature = $1;
@@ -5871,7 +6068,7 @@ ${input.slice(result.pos)}
5871
6068
  if (!func) {
5872
6069
  func = { $loc: op.$loc, token: "function" };
5873
6070
  } else {
5874
- func = [module2.insertTrimmingSpace(func[0], ""), func[1]];
6071
+ func = [insertTrimmingSpace(func[0], ""), func[1]];
5875
6072
  }
5876
6073
  return {
5877
6074
  type: "FunctionSignature",
@@ -6531,6 +6728,7 @@ ${input.slice(result.pos)}
6531
6728
  var statements = $2;
6532
6729
  if (!statements.length)
6533
6730
  return $skip;
6731
+ statements = statements.flat();
6534
6732
  const first = statements[0];
6535
6733
  const ws = first[0];
6536
6734
  const indent = ws.at(-1);
@@ -6567,15 +6765,13 @@ ${input.slice(result.pos)}
6567
6765
  return result;
6568
6766
  }
6569
6767
  }
6570
- var NestedBlockStatement$0 = $TS($S(Nested, $E(_), StatementListItem, StatementDelimiter), function($skip, $loc, $0, $1, $2, $3, $4) {
6768
+ var NestedBlockStatement$0 = $TS($S(Nested, $P(BlockStatementPart)), function($skip, $loc, $0, $1, $2) {
6571
6769
  var nested = $1;
6572
- var ws = $2;
6573
- var statement = $3;
6574
- var delimiter = $4;
6575
- if (ws) {
6576
- statement = { ...statement, children: [ws, ...statement.children] };
6577
- }
6578
- return [nested, statement, delimiter];
6770
+ var statements = $2;
6771
+ return [
6772
+ [nested, ...statements[0]],
6773
+ ...statements.slice(1).map((s) => ["", ...s])
6774
+ ];
6579
6775
  });
6580
6776
  function NestedBlockStatement(state) {
6581
6777
  let eventData;
@@ -6599,6 +6795,37 @@ ${input.slice(result.pos)}
6599
6795
  return result;
6600
6796
  }
6601
6797
  }
6798
+ var BlockStatementPart$0 = $TS($S($N(EOS), $E(_), StatementListItem, StatementDelimiter), function($skip, $loc, $0, $1, $2, $3, $4) {
6799
+ var ws = $2;
6800
+ var statement = $3;
6801
+ var delimiter = $4;
6802
+ if (ws) {
6803
+ statement = { ...statement, children: [ws, ...statement.children] };
6804
+ }
6805
+ return [statement, delimiter];
6806
+ });
6807
+ function BlockStatementPart(state) {
6808
+ let eventData;
6809
+ if (state.events) {
6810
+ const result = state.events.enter?.("BlockStatementPart", state);
6811
+ if (result) {
6812
+ if (result.cache)
6813
+ return result.cache;
6814
+ eventData = result.data;
6815
+ }
6816
+ }
6817
+ if (state.tokenize) {
6818
+ const result = $TOKEN("BlockStatementPart", state, BlockStatementPart$0(state));
6819
+ if (state.events)
6820
+ state.events.exit?.("BlockStatementPart", state, result, eventData);
6821
+ return result;
6822
+ } else {
6823
+ const result = BlockStatementPart$0(state);
6824
+ if (state.events)
6825
+ state.events.exit?.("BlockStatementPart", state, result, eventData);
6826
+ return result;
6827
+ }
6828
+ }
6602
6829
  var Literal$0 = $TS($S(LiteralContent), function($skip, $loc, $0, $1) {
6603
6830
  return {
6604
6831
  type: "Literal",
@@ -6899,8 +7126,8 @@ ${input.slice(result.pos)}
6899
7126
  const inclusive = range.token === "..";
6900
7127
  range.token = ",";
6901
7128
  if (s.type === "Literal" && e.type === "Literal") {
6902
- const start = module2.literalValue(s);
6903
- const end = module2.literalValue(e);
7129
+ const start = literalValue(s);
7130
+ const end = literalValue(e);
6904
7131
  if (typeof start !== typeof end) {
6905
7132
  throw new Error("Range start and end must be of the same type");
6906
7133
  }
@@ -9203,6 +9430,7 @@ ${input.slice(result.pos)}
9203
9430
  }
9204
9431
  var ExpressionBlock$0 = $TS($S(InsertOpenParen, NestedBlockExpressions, InsertNewline, InsertIndent, InsertCloseParen), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
9205
9432
  var exps = $2;
9433
+ exps = exps.flat();
9206
9434
  if (exps.length === 1) {
9207
9435
  let [ws, exp] = exps[0];
9208
9436
  switch (exp.type) {
@@ -9248,6 +9476,7 @@ ${input.slice(result.pos)}
9248
9476
  }
9249
9477
  var ElseExpressionBlock$0 = $TS($S(InsertOpenParen, NestedBlockExpressions, InsertNewline, InsertIndent, InsertCloseParen), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
9250
9478
  var exps = $2;
9479
+ exps = exps.flat();
9251
9480
  if (exps.length === 1) {
9252
9481
  let [ws, exp] = exps[0];
9253
9482
  switch (exp.type) {
@@ -9321,7 +9550,14 @@ ${input.slice(result.pos)}
9321
9550
  return result;
9322
9551
  }
9323
9552
  }
9324
- var NestedBlockExpression$0 = $S(Nested, PostfixedExpression, ExpressionDelimiter);
9553
+ var NestedBlockExpression$0 = $TS($S(Nested, $P(BlockExpressionPart)), function($skip, $loc, $0, $1, $2) {
9554
+ var nested = $1;
9555
+ var expressions = $2;
9556
+ return [
9557
+ [nested, ...expressions[0]],
9558
+ ...expressions.slice(1).map((s) => ["", ...s])
9559
+ ];
9560
+ });
9325
9561
  function NestedBlockExpression(state) {
9326
9562
  let eventData;
9327
9563
  if (state.events) {
@@ -9344,6 +9580,37 @@ ${input.slice(result.pos)}
9344
9580
  return result;
9345
9581
  }
9346
9582
  }
9583
+ var BlockExpressionPart$0 = $TS($S($N(EOS), $E(_), PostfixedExpression, ExpressionDelimiter), function($skip, $loc, $0, $1, $2, $3, $4) {
9584
+ var ws = $2;
9585
+ var exp = $3;
9586
+ var delimiter = $4;
9587
+ if (ws) {
9588
+ exp = { ...exp, children: [ws, ...exp.children] };
9589
+ }
9590
+ return [exp, delimiter];
9591
+ });
9592
+ function BlockExpressionPart(state) {
9593
+ let eventData;
9594
+ if (state.events) {
9595
+ const result = state.events.enter?.("BlockExpressionPart", state);
9596
+ if (result) {
9597
+ if (result.cache)
9598
+ return result.cache;
9599
+ eventData = result.data;
9600
+ }
9601
+ }
9602
+ if (state.tokenize) {
9603
+ const result = $TOKEN("BlockExpressionPart", state, BlockExpressionPart$0(state));
9604
+ if (state.events)
9605
+ state.events.exit?.("BlockExpressionPart", state, result, eventData);
9606
+ return result;
9607
+ } else {
9608
+ const result = BlockExpressionPart$0(state);
9609
+ if (state.events)
9610
+ state.events.exit?.("BlockExpressionPart", state, result, eventData);
9611
+ return result;
9612
+ }
9613
+ }
9347
9614
  var IterationStatement$0 = LoopStatement;
9348
9615
  var IterationStatement$1 = $T($S($N(CoffeeDoEnabled), DoWhileStatement), function(value) {
9349
9616
  return value[1];
@@ -9492,7 +9759,7 @@ ${input.slice(result.pos)}
9492
9759
  }
9493
9760
  var DoStatement$0 = $TS($S(Do, NoPostfixBracedBlock), function($skip, $loc, $0, $1, $2) {
9494
9761
  var block = $2;
9495
- block = module2.insertTrimmingSpace(block, "");
9762
+ block = insertTrimmingSpace(block, "");
9496
9763
  return {
9497
9764
  type: "DoStatement",
9498
9765
  children: [block],
@@ -9594,7 +9861,16 @@ ${input.slice(result.pos)}
9594
9861
  var clause = $1;
9595
9862
  var block = $2;
9596
9863
  if (clause.blockPrefix) {
9597
- block.expressions.splice(0, 0, ...clause.blockPrefix);
9864
+ const expressions = [...clause.blockPrefix, ...block.expressions];
9865
+ block = {
9866
+ ...block,
9867
+ expressions,
9868
+ children: block.children === block.expressions ? expressions : block.children.map((c) => c === block.expressions ? expressions : c)
9869
+ };
9870
+ if (block.bare) {
9871
+ block.children = [" {\n", ...block.children, "\n}"];
9872
+ block.bare = false;
9873
+ }
9598
9874
  }
9599
9875
  return {
9600
9876
  ...clause,
@@ -9671,7 +9947,7 @@ ${input.slice(result.pos)}
9671
9947
  [indent, {
9672
9948
  type: "IfStatement",
9673
9949
  then: block,
9674
- children: ["if (!(", module2.insertTrimmingSpace($3, ""), ")) ", block]
9950
+ children: ["if (!(", insertTrimmingSpace($3, ""), ")) ", block]
9675
9951
  }]
9676
9952
  ]
9677
9953
  };
@@ -9726,7 +10002,7 @@ ${input.slice(result.pos)}
9726
10002
  return result;
9727
10003
  }
9728
10004
  }
9729
- var CoffeeForStatementParameters$0 = $TS($S($E($S(Await, __)), InsertOpenParen, CoffeeForDeclaration, $E(CoffeeForIndex), __, $C(In, Of, From), ExpressionWithIndentedApplicationForbidden, $E($S(__, By, ExpressionWithIndentedApplicationForbidden)), InsertCloseParen), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
10005
+ var CoffeeForStatementParameters$0 = $TS($S($E($S(Await, __)), InsertOpenParen, CoffeeForDeclaration, $E(CoffeeForIndex), __, $C(In, Of, From), ExpressionWithIndentedApplicationForbidden, $E($S($E(_), By, ExpressionWithIndentedApplicationForbidden)), InsertCloseParen), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
9730
10006
  var open = $2;
9731
10007
  var declaration = $3;
9732
10008
  var index = $4;
@@ -9736,8 +10012,8 @@ ${input.slice(result.pos)}
9736
10012
  var close = $9;
9737
10013
  let blockPrefix = [];
9738
10014
  const indent = module2.currentIndent.token + " ";
9739
- exp = module2.insertTrimmingSpace(exp, "");
9740
- declaration = module2.insertTrimmingSpace(declaration, "");
10015
+ exp = insertTrimmingSpace(exp, "");
10016
+ declaration = insertTrimmingSpace(declaration, "");
9741
10017
  if (kind.token === "from") {
9742
10018
  if (step) {
9743
10019
  throw new Error("Can't use 'by' with 'from' in CoffeeScript for loops");
@@ -9775,68 +10051,8 @@ ${input.slice(result.pos)}
9775
10051
  case "Identifier":
9776
10052
  expRef = exp;
9777
10053
  break;
9778
- case "RangeExpression": {
9779
- const { start, end, inclusive } = exp;
9780
- let stepExp = step?.[2];
9781
- let stepRef;
9782
- if (stepExp) {
9783
- stepExp = module2.insertTrimmingSpace(stepExp, "");
9784
- if (stepExp.type === "Literal") {
9785
- stepRef = stepExp;
9786
- } else {
9787
- stepRef = {
9788
- type: "Ref",
9789
- base: "step",
9790
- id: "step"
9791
- };
9792
- }
9793
- }
9794
- let startRef, endRef;
9795
- if (start.type === "Literal") {
9796
- startRef = start;
9797
- } else if (start.type === "Identifier") {
9798
- startRef = start;
9799
- } else {
9800
- startRef = {
9801
- type: "Ref",
9802
- base: "ref",
9803
- id: "ref"
9804
- };
9805
- }
9806
- if (end.type === "Literal") {
9807
- endRef = end;
9808
- } else if (end.type === "Identifier") {
9809
- endRef = end;
9810
- } else {
9811
- endRef = {
9812
- type: "Ref",
9813
- base: "ref",
9814
- id: "ref"
9815
- };
9816
- }
9817
- const startRefDec = startRef !== start ? [startRef, " = ", start, ", "] : [];
9818
- const endRefDec = endRef !== end ? [endRef, " = ", end, ", "] : [];
9819
- const varRef2 = declaration;
9820
- const ascDec = stepRef ? stepRef !== stepExp ? [", step = ", stepExp] : [] : [", asc = ", startRef, " <= ", endRef];
9821
- declaration = {
9822
- type: "Declaration",
9823
- children: ["let ", ...startRefDec, ...endRefDec, counterRef, " = ", varRef2, " = ", startRef, ...ascDec],
9824
- names: varRef2.names
9825
- };
9826
- blockPrefix.push(["", {
9827
- type: "AssignmentExpression",
9828
- children: [],
9829
- names: varRef2.names
9830
- }]);
9831
- const counterPart = inclusive ? [counterRef, " <= ", endRef, " : ", counterRef, " >= ", endRef] : [counterRef, " < ", endRef, " : ", counterRef, " > ", endRef];
9832
- const condition2 = stepRef ? [stepRef, " !== 0 && (", stepRef, " > 0 ? ", ...counterPart, ")"] : ["asc ? ", ...counterPart];
9833
- const increment2 = stepRef ? [varRef2, " = ", counterRef, " += ", stepRef] : [varRef2, " = asc ? ++", counterRef, " : --", counterRef];
9834
- return {
9835
- declaration,
9836
- children: [$1, open, declaration, "; ", ...condition2, "; ", ...increment2, close],
9837
- blockPrefix
9838
- };
9839
- }
10054
+ case "RangeExpression":
10055
+ return forRange(open, declaration, exp, step?.[2], close);
9840
10056
  default:
9841
10057
  expRef = {
9842
10058
  type: "Ref",
@@ -9847,11 +10063,11 @@ ${input.slice(result.pos)}
9847
10063
  const varRef = declaration;
9848
10064
  let increment = "++", indexAssignment, assignmentNames = [...varRef.names];
9849
10065
  if (index) {
9850
- index = module2.insertTrimmingSpace(index, "");
10066
+ index = insertTrimmingSpace(index, "");
9851
10067
  indexAssignment = [index, "="];
9852
10068
  assignmentNames.push(...index.names);
9853
10069
  }
9854
- const expRefDec = expRef !== exp ? [expRef, " = ", module2.insertTrimmingSpace(exp, ""), ", "] : [];
10070
+ const expRefDec = expRef !== exp ? [expRef, " = ", insertTrimmingSpace(exp, ""), ", "] : [];
9855
10071
  blockPrefix.push([indent, {
9856
10072
  type: "AssignmentExpression",
9857
10073
  children: [varRef, " = ", expRef, "[", indexAssignment, counterRef, "]\n"],
@@ -9865,7 +10081,7 @@ ${input.slice(result.pos)}
9865
10081
  let condition = [counterRef, " < ", lenRef, "; "];
9866
10082
  if (step) {
9867
10083
  let [stepWs, , stepExp] = step;
9868
- stepWs = module2.insertTrimmingSpace(stepWs, "");
10084
+ stepWs = insertTrimmingSpace(stepWs, "");
9869
10085
  if (stepExp.type === "Literal") {
9870
10086
  increment = [" +=", ...stepWs, stepExp];
9871
10087
  if (stepExp.raw[0] === "-") {
@@ -9897,6 +10113,7 @@ ${input.slice(result.pos)}
9897
10113
  blockPrefix
9898
10114
  };
9899
10115
  });
10116
+ var CoffeeForStatementParameters$1 = ForRangeParameters;
9900
10117
  function CoffeeForStatementParameters(state) {
9901
10118
  let eventData;
9902
10119
  if (state.events) {
@@ -9908,12 +10125,12 @@ ${input.slice(result.pos)}
9908
10125
  }
9909
10126
  }
9910
10127
  if (state.tokenize) {
9911
- const result = $TOKEN("CoffeeForStatementParameters", state, CoffeeForStatementParameters$0(state));
10128
+ const result = $TOKEN("CoffeeForStatementParameters", state, CoffeeForStatementParameters$0(state) || CoffeeForStatementParameters$1(state));
9912
10129
  if (state.events)
9913
10130
  state.events.exit?.("CoffeeForStatementParameters", state, result, eventData);
9914
10131
  return result;
9915
10132
  } else {
9916
- const result = CoffeeForStatementParameters$0(state);
10133
+ const result = CoffeeForStatementParameters$0(state) || CoffeeForStatementParameters$1(state);
9917
10134
  if (state.events)
9918
10135
  state.events.exit?.("CoffeeForStatementParameters", state, result, eventData);
9919
10136
  return result;
@@ -9923,7 +10140,7 @@ ${input.slice(result.pos)}
9923
10140
  var ws1 = $1;
9924
10141
  var ws2 = $3;
9925
10142
  var id = $4;
9926
- ws2 = module2.insertTrimmingSpace(ws1, "");
10143
+ ws2 = insertTrimmingSpace(ws1, "");
9927
10144
  return {
9928
10145
  ...id,
9929
10146
  children: [...ws1 || [], ...ws2 || [], ...id.children]
@@ -9997,20 +10214,41 @@ ${input.slice(result.pos)}
9997
10214
  children: $0
9998
10215
  };
9999
10216
  });
10000
- var ForStatementParameters$2 = $TS($S($E($S(Await, __)), OpenParen, __, ForInOfDeclaration, __, $C(In, Of), ExpressionWithIndentedApplicationForbidden, __, CloseParen), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
10217
+ var ForStatementParameters$2 = $TS($S($E($S(Await, __)), OpenParen, __, ForInOfDeclaration, __, $C(In, Of), ExpressionWithIndentedApplicationForbidden, $E($S(__, By, ExpressionWithIndentedApplicationForbidden)), __, CloseParen), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9, $10) {
10218
+ var open = $2;
10001
10219
  var declaration = $4;
10220
+ var op = $6;
10221
+ var exp = $7;
10222
+ var step = $8;
10223
+ var close = $10;
10224
+ if (exp.type === "RangeExpression" && op.token === "of") {
10225
+ return forRange(open, declaration, exp, step, close);
10226
+ } else if (step) {
10227
+ throw new Error("for..of/in cannot use 'by' except with range literals");
10228
+ }
10002
10229
  return {
10003
10230
  declaration,
10004
10231
  children: $0
10005
10232
  };
10006
10233
  });
10007
- var ForStatementParameters$3 = $TS($S($E($S(Await, __)), InsertOpenParen, ForInOfDeclaration, __, $C(In, Of), ExpressionWithIndentedApplicationForbidden, InsertCloseParen), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7) {
10234
+ var ForStatementParameters$3 = $TS($S($E($S(Await, __)), InsertOpenParen, ForInOfDeclaration, __, $C(In, Of), ExpressionWithIndentedApplicationForbidden, $E($S(__, By, ExpressionWithIndentedApplicationForbidden)), InsertCloseParen), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8) {
10235
+ var open = $2;
10008
10236
  var declaration = $3;
10237
+ var op = $5;
10238
+ var exp = $6;
10239
+ var step = $7;
10240
+ var close = $8;
10241
+ if (exp.type === "RangeExpression" && op.token === "of") {
10242
+ return forRange(open, declaration, exp, step, close);
10243
+ } else if (step) {
10244
+ throw new Error("for..of/in cannot use 'by' except with range literals");
10245
+ }
10009
10246
  return {
10010
10247
  declaration,
10011
10248
  children: $0
10012
10249
  };
10013
10250
  });
10251
+ var ForStatementParameters$4 = ForRangeParameters;
10014
10252
  function ForStatementParameters(state) {
10015
10253
  let eventData;
10016
10254
  if (state.events) {
@@ -10022,22 +10260,59 @@ ${input.slice(result.pos)}
10022
10260
  }
10023
10261
  }
10024
10262
  if (state.tokenize) {
10025
- const result = $TOKEN("ForStatementParameters", state, ForStatementParameters$0(state) || ForStatementParameters$1(state) || ForStatementParameters$2(state) || ForStatementParameters$3(state));
10263
+ const result = $TOKEN("ForStatementParameters", state, ForStatementParameters$0(state) || ForStatementParameters$1(state) || ForStatementParameters$2(state) || ForStatementParameters$3(state) || ForStatementParameters$4(state));
10026
10264
  if (state.events)
10027
10265
  state.events.exit?.("ForStatementParameters", state, result, eventData);
10028
10266
  return result;
10029
10267
  } else {
10030
- const result = ForStatementParameters$0(state) || ForStatementParameters$1(state) || ForStatementParameters$2(state) || ForStatementParameters$3(state);
10268
+ const result = ForStatementParameters$0(state) || ForStatementParameters$1(state) || ForStatementParameters$2(state) || ForStatementParameters$3(state) || ForStatementParameters$4(state);
10031
10269
  if (state.events)
10032
10270
  state.events.exit?.("ForStatementParameters", state, result, eventData);
10033
10271
  return result;
10034
10272
  }
10035
10273
  }
10274
+ var ForRangeParameters$0 = $TS($S($E($S(Await, __)), OpenParen, OpenBracket, RangeExpression, CloseBracket, $E($S(__, By, ExpressionWithIndentedApplicationForbidden)), CloseParen), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7) {
10275
+ var open = $2;
10276
+ var exp = $4;
10277
+ var step = $6;
10278
+ var close = $7;
10279
+ return forRange(open, null, exp, step, close);
10280
+ });
10281
+ var ForRangeParameters$1 = $TS($S($E($S(Await, __)), InsertOpenParen, OpenBracket, RangeExpression, CloseBracket, $E($S(__, By, ExpressionWithIndentedApplicationForbidden)), InsertCloseParen), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7) {
10282
+ var open = $2;
10283
+ var exp = $4;
10284
+ var step = $6;
10285
+ var close = $7;
10286
+ return forRange(open, null, exp, step, close);
10287
+ });
10288
+ function ForRangeParameters(state) {
10289
+ let eventData;
10290
+ if (state.events) {
10291
+ const result = state.events.enter?.("ForRangeParameters", state);
10292
+ if (result) {
10293
+ if (result.cache)
10294
+ return result.cache;
10295
+ eventData = result.data;
10296
+ }
10297
+ }
10298
+ if (state.tokenize) {
10299
+ const result = $TOKEN("ForRangeParameters", state, ForRangeParameters$0(state) || ForRangeParameters$1(state));
10300
+ if (state.events)
10301
+ state.events.exit?.("ForRangeParameters", state, result, eventData);
10302
+ return result;
10303
+ } else {
10304
+ const result = ForRangeParameters$0(state) || ForRangeParameters$1(state);
10305
+ if (state.events)
10306
+ state.events.exit?.("ForRangeParameters", state, result, eventData);
10307
+ return result;
10308
+ }
10309
+ }
10036
10310
  var ForInOfDeclaration$0 = $TS($S(Var, ForBinding), function($skip, $loc, $0, $1, $2) {
10037
10311
  var binding = $2;
10038
10312
  return {
10039
10313
  type: "ForDeclaration",
10040
10314
  children: $0,
10315
+ declare: $1,
10041
10316
  names: binding.names
10042
10317
  };
10043
10318
  });
@@ -10065,12 +10340,13 @@ ${input.slice(result.pos)}
10065
10340
  return result;
10066
10341
  }
10067
10342
  }
10068
- var ForDeclaration$0 = $TS($S(LetOrConst, NonIdContinue, ForBinding), function($skip, $loc, $0, $1, $2, $3) {
10343
+ var ForDeclaration$0 = $TS($S(LetOrConst, ForBinding), function($skip, $loc, $0, $1, $2) {
10069
10344
  var c = $1;
10070
- var binding = $3;
10345
+ var binding = $2;
10071
10346
  return {
10072
10347
  type: "ForDeclaration",
10073
10348
  children: [c, binding],
10349
+ declare: c,
10074
10350
  names: binding.names
10075
10351
  };
10076
10352
  });
@@ -10080,6 +10356,7 @@ ${input.slice(result.pos)}
10080
10356
  return {
10081
10357
  type: "ForDeclaration",
10082
10358
  children: [c, binding],
10359
+ declare: c,
10083
10360
  names: binding.names
10084
10361
  };
10085
10362
  });
@@ -10406,9 +10683,9 @@ ${input.slice(result.pos)}
10406
10683
  if (!first)
10407
10684
  return $skip;
10408
10685
  const result = rest.map(([ws, _comma, exp, col]) => {
10409
- exp = module2.insertTrimmingSpace(exp, "");
10686
+ exp = insertTrimmingSpace(exp, "");
10410
10687
  if (ws.length)
10411
- return [module2.insertTrimmingSpace("case ", ws), exp, col];
10688
+ return [insertTrimmingSpace("case ", ws), exp, col];
10412
10689
  return ["case ", exp, col];
10413
10690
  });
10414
10691
  result.unshift(first);
@@ -10658,7 +10935,7 @@ ${input.slice(result.pos)}
10658
10935
  var close = $3;
10659
10936
  if (expression.type === "ParenthesizedExpression")
10660
10937
  return expression;
10661
- expression = module2.insertTrimmingSpace(expression, "");
10938
+ expression = insertTrimmingSpace(expression, "");
10662
10939
  return {
10663
10940
  type: "ParenthesizedExpression",
10664
10941
  children: [open, expression, close],
@@ -11639,7 +11916,7 @@ ${input.slice(result.pos)}
11639
11916
  ...spec,
11640
11917
  children: [
11641
11918
  ws,
11642
- module2.insertTrimmingSpace(spec[0], ""),
11919
+ insertTrimmingSpace(spec[0], ""),
11643
11920
  spec.children.slice(1)
11644
11921
  ]
11645
11922
  };
@@ -12699,7 +12976,7 @@ ${input.slice(result.pos)}
12699
12976
  var str = $2;
12700
12977
  return {
12701
12978
  type: "StringLiteral",
12702
- token: `"${module2.modifyString(str.token)}"`,
12979
+ token: `"${modifyString(str.token)}"`,
12703
12980
  $loc
12704
12981
  };
12705
12982
  });
@@ -12707,7 +12984,7 @@ ${input.slice(result.pos)}
12707
12984
  var str = $2;
12708
12985
  return {
12709
12986
  type: "StringLiteral",
12710
- token: `'${module2.modifyString(str.token)}'`,
12987
+ token: `'${modifyString(str.token)}'`,
12711
12988
  $loc
12712
12989
  };
12713
12990
  });
@@ -12860,24 +13137,7 @@ ${input.slice(result.pos)}
12860
13137
  var s = $2;
12861
13138
  var parts = $3;
12862
13139
  var e = $4;
12863
- if (parts.length === 0 || parts.length === 1 && parts[0].token != null) {
12864
- return {
12865
- type: "StringLiteral",
12866
- token: parts.length ? `"${module2.modifyString(parts[0].token)}"` : '""',
12867
- $loc
12868
- };
12869
- }
12870
- parts.forEach((part) => {
12871
- if (part.token) {
12872
- const str = part.token.replace(/(`|\$\{)/g, "\\$1");
12873
- part.token = module2.modifyString(str);
12874
- }
12875
- });
12876
- s.token = e.token = "`";
12877
- return {
12878
- type: "TemplateLiteral",
12879
- children: [s, parts, e]
12880
- };
13140
+ return processCoffeeInterpolation(s, parts, e, $loc);
12881
13141
  });
12882
13142
  function CoffeeInterpolatedDoubleQuotedString(state) {
12883
13143
  let eventData;
@@ -13717,7 +13977,7 @@ ${input.slice(result.pos)}
13717
13977
  }
13718
13978
  var Trimmed_$0 = $TV($Q(_), function($skip, $loc, $0, $1) {
13719
13979
  var ws = $0;
13720
- return module2.insertTrimmingSpace(ws, "");
13980
+ return insertTrimmingSpace(ws, "");
13721
13981
  });
13722
13982
  function Trimmed_(state) {
13723
13983
  let eventData;
@@ -16581,7 +16841,7 @@ ${input.slice(result.pos)}
16581
16841
  if (part.name.type === "ComputedPropertyName") {
16582
16842
  rest.push(part);
16583
16843
  } else {
16584
- parts.push([part.name, "={", module2.insertTrimmingSpace(part.value, ""), "}"]);
16844
+ parts.push([part.name, "={", insertTrimmingSpace(part.value, ""), "}"]);
16585
16845
  }
16586
16846
  break;
16587
16847
  case "SpreadProperty":
@@ -16682,7 +16942,7 @@ ${input.slice(result.pos)}
16682
16942
  }
16683
16943
  }
16684
16944
  var JSXShorthandString$0 = $TR($EXPECT($R52, fail, "JSXShorthandString /(?:[\\w\\-:]+|\\([^()]*\\)|\\[[^\\[\\]]*\\])+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
16685
- return module2.quoteString($0);
16945
+ return quoteString($0);
16686
16946
  });
16687
16947
  var JSXShorthandString$1 = $TS($S(TemplateLiteral), function($skip, $loc, $0, $1) {
16688
16948
  return ["{", $1, "}"];
@@ -18782,7 +19042,110 @@ ${input.slice(result.pos)}
18782
19042
  return result;
18783
19043
  }
18784
19044
  }
18785
- var TypeLiteral$0 = TemplateLiteral;
19045
+ var TypeTemplateSubstitution$0 = $S(SubstitutionStart, Type, __, CloseBrace);
19046
+ function TypeTemplateSubstitution(state) {
19047
+ let eventData;
19048
+ if (state.events) {
19049
+ const result = state.events.enter?.("TypeTemplateSubstitution", state);
19050
+ if (result) {
19051
+ if (result.cache)
19052
+ return result.cache;
19053
+ eventData = result.data;
19054
+ }
19055
+ }
19056
+ if (state.tokenize) {
19057
+ const result = $TOKEN("TypeTemplateSubstitution", state, TypeTemplateSubstitution$0(state));
19058
+ if (state.events)
19059
+ state.events.exit?.("TypeTemplateSubstitution", state, result, eventData);
19060
+ return result;
19061
+ } else {
19062
+ const result = TypeTemplateSubstitution$0(state);
19063
+ if (state.events)
19064
+ state.events.exit?.("TypeTemplateSubstitution", state, result, eventData);
19065
+ return result;
19066
+ }
19067
+ }
19068
+ var TypeTemplateLiteral$0 = $TS($S(Backtick, $Q($C(TemplateCharacters, TypeTemplateSubstitution)), Backtick), function($skip, $loc, $0, $1, $2, $3) {
19069
+ return {
19070
+ type: "TemplateLiteral",
19071
+ children: $0
19072
+ };
19073
+ });
19074
+ var TypeTemplateLiteral$1 = CoffeeInterpolatedDoubleQuotedTypeLiteral;
19075
+ function TypeTemplateLiteral(state) {
19076
+ let eventData;
19077
+ if (state.events) {
19078
+ const result = state.events.enter?.("TypeTemplateLiteral", state);
19079
+ if (result) {
19080
+ if (result.cache)
19081
+ return result.cache;
19082
+ eventData = result.data;
19083
+ }
19084
+ }
19085
+ if (state.tokenize) {
19086
+ const result = $TOKEN("TypeTemplateLiteral", state, TypeTemplateLiteral$0(state) || TypeTemplateLiteral$1(state));
19087
+ if (state.events)
19088
+ state.events.exit?.("TypeTemplateLiteral", state, result, eventData);
19089
+ return result;
19090
+ } else {
19091
+ const result = TypeTemplateLiteral$0(state) || TypeTemplateLiteral$1(state);
19092
+ if (state.events)
19093
+ state.events.exit?.("TypeTemplateLiteral", state, result, eventData);
19094
+ return result;
19095
+ }
19096
+ }
19097
+ var CoffeeStringTypeSubstitution$0 = $S(CoffeeSubstitutionStart, Type, __, CloseBrace);
19098
+ function CoffeeStringTypeSubstitution(state) {
19099
+ let eventData;
19100
+ if (state.events) {
19101
+ const result = state.events.enter?.("CoffeeStringTypeSubstitution", state);
19102
+ if (result) {
19103
+ if (result.cache)
19104
+ return result.cache;
19105
+ eventData = result.data;
19106
+ }
19107
+ }
19108
+ if (state.tokenize) {
19109
+ const result = $TOKEN("CoffeeStringTypeSubstitution", state, CoffeeStringTypeSubstitution$0(state));
19110
+ if (state.events)
19111
+ state.events.exit?.("CoffeeStringTypeSubstitution", state, result, eventData);
19112
+ return result;
19113
+ } else {
19114
+ const result = CoffeeStringTypeSubstitution$0(state);
19115
+ if (state.events)
19116
+ state.events.exit?.("CoffeeStringTypeSubstitution", state, result, eventData);
19117
+ return result;
19118
+ }
19119
+ }
19120
+ var CoffeeInterpolatedDoubleQuotedTypeLiteral$0 = $TS($S(CoffeeInterpolationEnabled, DoubleQuote, $Q($C(CoffeeDoubleQuotedStringCharacters, CoffeeStringTypeSubstitution)), DoubleQuote), function($skip, $loc, $0, $1, $2, $3, $4) {
19121
+ var s = $2;
19122
+ var parts = $3;
19123
+ var e = $4;
19124
+ return processCoffeeInterpolation(s, parts, e, $loc);
19125
+ });
19126
+ function CoffeeInterpolatedDoubleQuotedTypeLiteral(state) {
19127
+ let eventData;
19128
+ if (state.events) {
19129
+ const result = state.events.enter?.("CoffeeInterpolatedDoubleQuotedTypeLiteral", state);
19130
+ if (result) {
19131
+ if (result.cache)
19132
+ return result.cache;
19133
+ eventData = result.data;
19134
+ }
19135
+ }
19136
+ if (state.tokenize) {
19137
+ const result = $TOKEN("CoffeeInterpolatedDoubleQuotedTypeLiteral", state, CoffeeInterpolatedDoubleQuotedTypeLiteral$0(state));
19138
+ if (state.events)
19139
+ state.events.exit?.("CoffeeInterpolatedDoubleQuotedTypeLiteral", state, result, eventData);
19140
+ return result;
19141
+ } else {
19142
+ const result = CoffeeInterpolatedDoubleQuotedTypeLiteral$0(state);
19143
+ if (state.events)
19144
+ state.events.exit?.("CoffeeInterpolatedDoubleQuotedTypeLiteral", state, result, eventData);
19145
+ return result;
19146
+ }
19147
+ }
19148
+ var TypeLiteral$0 = TypeTemplateLiteral;
18786
19149
  var TypeLiteral$1 = Literal;
18787
19150
  var TypeLiteral$2 = $TS($S($EXPECT($L161, fail, 'TypeLiteral "void"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
18788
19151
  return { type: "VoidType", $loc, token: $1 };
@@ -19169,7 +19532,7 @@ ${input.slice(result.pos)}
19169
19532
  return result;
19170
19533
  }
19171
19534
  }
19172
- var ThisType$0 = $T($S($C(This, AtThis), Colon, Type), function(value) {
19535
+ var ThisType$0 = $T($S($C(This, AtThis), Colon, Type, ParameterElementDelimiter), function(value) {
19173
19536
  return { "type": "ThisType", "ts": true, "children": value };
19174
19537
  });
19175
19538
  function ThisType(state) {
@@ -20541,20 +20904,6 @@ ${input.slice(result.pos)}
20541
20904
  }
20542
20905
  }
20543
20906
  });
20544
- module2.modifyString = function(str) {
20545
- return str.replace(/(^.?|[^\\]{2})(\\\\)*\n/g, "$1$2\\n");
20546
- };
20547
- module2.unmodifyString = function(str) {
20548
- return str.replace(/\\n/g, "\n");
20549
- };
20550
- module2.quoteString = function(str) {
20551
- str = str.replace(/\\/g, "\\\\");
20552
- if (str.includes('"') && !str.includes("'")) {
20553
- return "'" + str.replace(/'/g, "\\'") + "'";
20554
- } else {
20555
- return '"' + str.replace(/"/g, '\\"') + '"';
20556
- }
20557
- };
20558
20907
  });
20559
20908
  function Reset(state) {
20560
20909
  let eventData;
@@ -20600,8 +20949,8 @@ ${input.slice(result.pos)}
20600
20949
  throw new Error("Glob pattern must have call or member expression value");
20601
20950
  }
20602
20951
  let value = part.value ?? part.name;
20603
- const wValue = module2.getTrimmingSpace(part.value);
20604
- value = prefix.concat(module2.insertTrimmingSpace(value, ""));
20952
+ const wValue = getTrimmingSpace(part.value);
20953
+ value = prefix.concat(insertTrimmingSpace(value, ""));
20605
20954
  if (wValue)
20606
20955
  value.unshift(wValue);
20607
20956
  if (part.type === "SpreadProperty") {
@@ -20712,43 +21061,6 @@ ${input.slice(result.pos)}
20712
21061
  };
20713
21062
  }
20714
21063
  };
20715
- module2.literalValue = function(literal) {
20716
- let { raw } = literal;
20717
- switch (raw) {
20718
- case "null":
20719
- return null;
20720
- case "true":
20721
- return true;
20722
- case "false":
20723
- return false;
20724
- }
20725
- if (raw.startsWith('"') && raw.endsWith('"') || raw.startsWith("'") && raw.endsWith("'")) {
20726
- return raw.slice(1, -1);
20727
- }
20728
- const numeric = literal.children.find(
20729
- (child) => child.type === "NumericLiteral"
20730
- );
20731
- if (numeric) {
20732
- raw = raw.replace(/_/g, "");
20733
- const { token } = numeric;
20734
- if (token.endsWith("n")) {
20735
- return BigInt(raw.slice(0, -1));
20736
- } else if (token.match(/[\.eE]/)) {
20737
- return parseFloat(raw);
20738
- } else if (token.startsWith("0")) {
20739
- switch (token.charAt(1).toLowerCase()) {
20740
- case "x":
20741
- return parseInt(raw.replace(/0[xX]/, ""), 16);
20742
- case "b":
20743
- return parseInt(raw.replace(/0[bB]/, ""), 2);
20744
- case "o":
20745
- return parseInt(raw.replace(/0[oO]/, ""), 8);
20746
- }
20747
- }
20748
- return parseInt(raw, 10);
20749
- }
20750
- throw new Error("Unrecognized literal " + JSON.stringify(literal));
20751
- };
20752
21064
  module2.expressionizeIfClause = function(clause, b, e) {
20753
21065
  const children = clause.children.slice(1);
20754
21066
  children.push("?", b);
@@ -21088,16 +21400,16 @@ ${input.slice(result.pos)}
21088
21400
  }
21089
21401
  let children;
21090
21402
  if (op2.call) {
21091
- wsOp = module2.insertTrimmingSpace(wsOp, "");
21403
+ wsOp = insertTrimmingSpace(wsOp, "");
21092
21404
  if (op2.reversed) {
21093
- wsB = module2.insertTrimmingSpace(wsB, "");
21405
+ wsB = insertTrimmingSpace(wsB, "");
21094
21406
  children = [wsOp, op2.call, "(", wsB, b, ", ", a, ")", op2.suffix];
21095
21407
  } else {
21096
21408
  children = [wsOp, op2.call, "(", a, ",", wsB, b, ")", op2.suffix];
21097
21409
  }
21098
21410
  } else if (op2.method) {
21099
- wsOp = module2.insertTrimmingSpace(wsOp, "");
21100
- wsB = module2.insertTrimmingSpace(wsB, "");
21411
+ wsOp = insertTrimmingSpace(wsOp, "");
21412
+ wsB = insertTrimmingSpace(wsB, "");
21101
21413
  if (op2.reversed) {
21102
21414
  children = [wsB, b, wsOp, ".", op2.method, "(", a, ")"];
21103
21415
  } else {
@@ -21207,39 +21519,6 @@ ${input.slice(result.pos)}
21207
21519
  }
21208
21520
  return target;
21209
21521
  };
21210
- module2.insertTrimmingSpace = function(target, c) {
21211
- if (!target)
21212
- return target;
21213
- if (Array.isArray(target))
21214
- return target.map((e, i) => {
21215
- if (i === 0)
21216
- return module2.insertTrimmingSpace(e, c);
21217
- return e;
21218
- });
21219
- if (target.children)
21220
- return Object.assign({}, target, {
21221
- children: target.children.map((e, i) => {
21222
- if (i === 0)
21223
- return module2.insertTrimmingSpace(e, c);
21224
- return e;
21225
- })
21226
- });
21227
- if (target.token)
21228
- return Object.assign({}, target, {
21229
- token: target.token.replace(/^ ?/, c)
21230
- });
21231
- return target;
21232
- };
21233
- module2.getTrimmingSpace = function(target) {
21234
- if (!target)
21235
- return;
21236
- if (Array.isArray(target))
21237
- return module2.getTrimmingSpace(target[0]);
21238
- if (target.children)
21239
- return module2.getTrimmingSpace(target.children[0]);
21240
- if (target.token)
21241
- return target.token.match(/^ ?/)[0];
21242
- };
21243
21522
  const initialSpacingRe = /^(?:\r?\n|\n)*((?:\r?\n|\n)\s+)/;
21244
21523
  module2.dedentBlockSubstitutions = function($02) {
21245
21524
  const [s, strWithSubstitutions, e] = $02;
@@ -21329,7 +21608,7 @@ ${input.slice(result.pos)}
21329
21608
  const spliceRef = module2.getRef("splice");
21330
21609
  blockPrefix = {
21331
21610
  type: "PostRestBindingElements",
21332
- children: ["[", module2.insertTrimmingSpace(after, ""), "] = ", spliceRef, ".call(", restIdentifier, ", -", after.length.toString(), ")"],
21611
+ children: ["[", insertTrimmingSpace(after, ""), "] = ", spliceRef, ".call(", restIdentifier, ", -", after.length.toString(), ")"],
21333
21612
  names: after.flatMap((p) => p.names)
21334
21613
  };
21335
21614
  }
@@ -22713,13 +22992,20 @@ ${input.slice(result.pos)}
22713
22992
  var {
22714
22993
  clone,
22715
22994
  deepCopy,
22995
+ forRange,
22716
22996
  gatherNodes,
22717
22997
  gatherRecursive,
22718
22998
  gatherRecursiveAll,
22719
22999
  gatherRecursiveWithinFunction,
23000
+ getTrimmingSpace,
22720
23001
  hasAwait,
22721
23002
  hasYield,
23003
+ insertTrimmingSpace,
22722
23004
  isFunction,
23005
+ literalValue,
23006
+ modifyString,
23007
+ processCoffeeInterpolation,
23008
+ quoteString,
22723
23009
  removeParentPointers
22724
23010
  } = require_lib();
22725
23011
  }