@danielx/civet 0.4.18 → 0.4.19-pre.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.
package/dist/browser.js CHANGED
@@ -956,50 +956,52 @@ var Civet = (() => {
956
956
  var $L152 = $L(" ");
957
957
  var $L153 = $L(" ");
958
958
  var $R0 = $R(new RegExp("(of|then|when)(?!\\p{ID_Continue}|[\\u200C\\u200D$])", "suy"));
959
- var $R1 = $R(new RegExp("(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$])*", "suy"));
960
- var $R2 = $R(new RegExp("[!~+-](?!\\s)", "suy"));
961
- var $R3 = $R(new RegExp("(?=[\\s\\)])", "suy"));
962
- var $R4 = $R(new RegExp('[^;"\\s]+', "suy"));
963
- var $R5 = $R(new RegExp("(?:0|[1-9](?:_[0-9]|[0-9])*)n", "suy"));
964
- var $R6 = $R(new RegExp("(?:0|[1-9](?:_[0-9]|[0-9])*)(?=\\.(?:\\p{ID_Start}|[_$]))", "suy"));
965
- var $R7 = $R(new RegExp("(?:0|[1-9](?:_[0-9]|[0-9])*)(?:\\.(?:[0-9](?:_[0-9]|[0-9])*))?", "suy"));
966
- var $R8 = $R(new RegExp("(?:\\.[0-9](?:_[0-9]|[0-9])*)", "suy"));
967
- var $R9 = $R(new RegExp("(?:[eE][+-]?[0-9]+(?:_[0-9]|[0-9])*)", "suy"));
968
- var $R10 = $R(new RegExp("0[bB][01](?:[01]|_[01])*n?", "suy"));
969
- var $R11 = $R(new RegExp("0[oO][0-7](?:[0-7]|_[0-7])*n?", "suy"));
970
- var $R12 = $R(new RegExp("0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_[0-9a-fA-F])*n?", "suy"));
971
- var $R13 = $R(new RegExp('(?:\\\\.|[^"])*', "suy"));
972
- var $R14 = $R(new RegExp("(?:\\\\.|[^'])*", "suy"));
973
- var $R15 = $R(new RegExp('(?:"(?!"")|#(?!\\{)|\\\\.|[^#"])+', "suy"));
974
- var $R16 = $R(new RegExp("(?:'(?!'')|\\\\.|[^'])*", "suy"));
975
- var $R17 = $R(new RegExp('(?:\\\\.|#(?!\\{)|[^"#])+', "suy"));
976
- var $R18 = $R(new RegExp("[*\\/\\r\\n]", "suy"));
977
- var $R19 = $R(new RegExp("(?:\\\\.|[^\\/\\r\\n])+", "suy"));
978
- var $R20 = $R(new RegExp("(?:\\p{ID_Continue}|[\\u200C\\u200D$])*", "suy"));
979
- var $R21 = $R(new RegExp("(?:\\$(?!\\{)|\\\\.|[^$`])+", "suy"));
980
- var $R22 = $R(new RegExp("(?:\\$(?!\\{)|`(?!``)|\\\\.|[^$`])+", "suy"));
981
- var $R23 = $R(new RegExp("(?:on|off|yes|no)(?!\\p{ID_Continue})", "suy"));
982
- var $R24 = $R(new RegExp("(?:isnt)(?!\\p{ID_Continue})", "suy"));
983
- var $R25 = $R(new RegExp("(?:and|as|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|finally|for|function|if|import|in|instanceof|interface|is|loop|new|null|or|return|static|super|switch|this|throw|true|try|typeof|unless|until|var|void|while|with|yield)(?!\\p{ID_Continue})", "suy"));
984
- var $R26 = $R(new RegExp("\\/\\/[^\\r\\n]*", "suy"));
985
- var $R27 = $R(new RegExp(".", "suy"));
986
- var $R28 = $R(new RegExp("#([^\\r\\n]*)", "suy"));
987
- var $R29 = $R(new RegExp("[^\\r\\n]", "suy"));
988
- var $R30 = $R(new RegExp("[ \\t]+", "suy"));
989
- var $R31 = $R(new RegExp("[\\s]+", "suy"));
990
- var $R32 = $R(new RegExp("(?!\\p{ID_Continue})", "suy"));
991
- var $R33 = $R(new RegExp("\\s", "suy"));
992
- var $R34 = $R(new RegExp("(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$-])*", "suy"));
993
- var $R35 = $R(new RegExp('"[^"]*"', "suy"));
994
- var $R36 = $R(new RegExp("'[^']*'", "suy"));
995
- var $R37 = $R(new RegExp("[^{}<>]+", "suy"));
996
- var $R38 = $R(new RegExp("[+-]?", "suy"));
997
- var $R39 = $R(new RegExp("[+-]", "suy"));
998
- var $R40 = $R(new RegExp("#![^\\r\\n]*", "suy"));
999
- var $R41 = $R(new RegExp("[\\t ]*", "suy"));
1000
- var $R42 = $R(new RegExp("[\\s]*", "suy"));
1001
- var $R43 = $R(new RegExp("\\s+([+-]?)([a-zA-Z0-9-]+)", "suy"));
1002
- var $R44 = $R(new RegExp("\\r\\n|\\n|\\r|$", "suy"));
959
+ var $R1 = $R(new RegExp("[&]", "suy"));
960
+ var $R2 = $R(new RegExp("[!~+-]+", "suy"));
961
+ var $R3 = $R(new RegExp("(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$])*", "suy"));
962
+ var $R4 = $R(new RegExp("[!~+-](?!\\s|[!~+-]*&)", "suy"));
963
+ var $R5 = $R(new RegExp("(?=[\\s\\)])", "suy"));
964
+ var $R6 = $R(new RegExp('[^;"\\s]+', "suy"));
965
+ var $R7 = $R(new RegExp("(?:0|[1-9](?:_[0-9]|[0-9])*)n", "suy"));
966
+ var $R8 = $R(new RegExp("(?:0|[1-9](?:_[0-9]|[0-9])*)(?=\\.(?:\\p{ID_Start}|[_$]))", "suy"));
967
+ var $R9 = $R(new RegExp("(?:0|[1-9](?:_[0-9]|[0-9])*)(?:\\.(?:[0-9](?:_[0-9]|[0-9])*))?", "suy"));
968
+ var $R10 = $R(new RegExp("(?:\\.[0-9](?:_[0-9]|[0-9])*)", "suy"));
969
+ var $R11 = $R(new RegExp("(?:[eE][+-]?[0-9]+(?:_[0-9]|[0-9])*)", "suy"));
970
+ var $R12 = $R(new RegExp("0[bB][01](?:[01]|_[01])*n?", "suy"));
971
+ var $R13 = $R(new RegExp("0[oO][0-7](?:[0-7]|_[0-7])*n?", "suy"));
972
+ var $R14 = $R(new RegExp("0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_[0-9a-fA-F])*n?", "suy"));
973
+ var $R15 = $R(new RegExp('(?:\\\\.|[^"])*', "suy"));
974
+ var $R16 = $R(new RegExp("(?:\\\\.|[^'])*", "suy"));
975
+ var $R17 = $R(new RegExp('(?:"(?!"")|#(?!\\{)|\\\\.|[^#"])+', "suy"));
976
+ var $R18 = $R(new RegExp("(?:'(?!'')|\\\\.|[^'])*", "suy"));
977
+ var $R19 = $R(new RegExp('(?:\\\\.|#(?!\\{)|[^"#])+', "suy"));
978
+ var $R20 = $R(new RegExp("[*\\/\\r\\n]", "suy"));
979
+ var $R21 = $R(new RegExp("(?:\\\\.|[^\\/\\r\\n])+", "suy"));
980
+ var $R22 = $R(new RegExp("(?:\\p{ID_Continue}|[\\u200C\\u200D$])*", "suy"));
981
+ var $R23 = $R(new RegExp("(?:\\$(?!\\{)|\\\\.|[^$`])+", "suy"));
982
+ var $R24 = $R(new RegExp("(?:\\$(?!\\{)|`(?!``)|\\\\.|[^$`])+", "suy"));
983
+ var $R25 = $R(new RegExp("(?:on|off|yes|no)(?!\\p{ID_Continue})", "suy"));
984
+ var $R26 = $R(new RegExp("(?:isnt)(?!\\p{ID_Continue})", "suy"));
985
+ var $R27 = $R(new RegExp("(?:and|as|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|finally|for|function|if|import|in|instanceof|interface|is|loop|new|null|or|return|static|super|switch|this|throw|true|try|typeof|unless|until|var|void|while|with|yield)(?!\\p{ID_Continue})", "suy"));
986
+ var $R28 = $R(new RegExp("\\/\\/[^\\r\\n]*", "suy"));
987
+ var $R29 = $R(new RegExp(".", "suy"));
988
+ var $R30 = $R(new RegExp("#(?!##)([^\\r\\n]*)", "suy"));
989
+ var $R31 = $R(new RegExp("[^\\r\\n]", "suy"));
990
+ var $R32 = $R(new RegExp("[ \\t]+", "suy"));
991
+ var $R33 = $R(new RegExp("[\\s]+", "suy"));
992
+ var $R34 = $R(new RegExp("(?!\\p{ID_Continue})", "suy"));
993
+ var $R35 = $R(new RegExp("\\s", "suy"));
994
+ var $R36 = $R(new RegExp("(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$-])*", "suy"));
995
+ var $R37 = $R(new RegExp('"[^"]*"', "suy"));
996
+ var $R38 = $R(new RegExp("'[^']*'", "suy"));
997
+ var $R39 = $R(new RegExp("[^{}<>]+", "suy"));
998
+ var $R40 = $R(new RegExp("[+-]?", "suy"));
999
+ var $R41 = $R(new RegExp("[+-]", "suy"));
1000
+ var $R42 = $R(new RegExp("#![^\\r\\n]*", "suy"));
1001
+ var $R43 = $R(new RegExp("[\\t ]*", "suy"));
1002
+ var $R44 = $R(new RegExp("[\\s]*", "suy"));
1003
+ var $R45 = $R(new RegExp("\\s+([+-]?)([a-zA-Z0-9-]+)", "suy"));
1004
+ var $R46 = $R(new RegExp("\\r\\n|\\n|\\r|$", "suy"));
1003
1005
  var Program$0 = $TS($S(Reset, Init, __, $Q(TopLevelStatement), __), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
1004
1006
  var statements = $4;
1005
1007
  module.processProgram(statements);
@@ -1172,25 +1174,9 @@ var Civet = (() => {
1172
1174
  return IndentedApplicationAllowed$0(state);
1173
1175
  }
1174
1176
  }
1175
- var BinaryOpExpression$0 = $TS($S(UnaryExpression, $Q($S(__, BinaryOp, __, UnaryExpression))), function($skip, $loc, $0, $1, $2) {
1177
+ var BinaryOpExpression$0 = $TS($S(UnaryExpression, $Q($S(__, BinaryOp, __, $C(UnaryExpression, ExpressionizedStatement)))), function($skip, $loc, $0, $1, $2) {
1176
1178
  if ($2.length) {
1177
- const expandedOps = module.expandChainedComparisons($0);
1178
- let i = 2;
1179
- while (i < expandedOps.length) {
1180
- const op = expandedOps[i];
1181
- if (op.type === "Ref") {
1182
- const [a, wsOp, op2, wsB, b] = expandedOps.slice(i - 2, i + 3);
1183
- module.insertTrimmingSpace(wsOp, "");
1184
- module.insertTrimmingSpace(wsB, "");
1185
- expandedOps.splice(i - 2, 5, {
1186
- type: "Call",
1187
- children: [wsOp, op2, ".call(", wsB, b, ", ", a, ") >= 0"]
1188
- });
1189
- } else {
1190
- i += 4;
1191
- }
1192
- }
1193
- return expandedOps;
1179
+ return module.processBinaryOpExpression($0);
1194
1180
  }
1195
1181
  return $1;
1196
1182
  });
@@ -1210,14 +1196,31 @@ var Civet = (() => {
1210
1196
  if (post?.token === "?") {
1211
1197
  return ["(", pre, "(", exp, ") != null)"];
1212
1198
  }
1213
- const result = [pre, exp, post];
1214
- if (!post)
1215
- result.pop();
1216
- if (!pre.length)
1217
- result.shift();
1218
- if (result.length === 1)
1219
- return result[0];
1220
- return result;
1199
+ if (exp.type === "Literal") {
1200
+ if (pre.length === 1 && pre[0].token === "-") {
1201
+ exp.raw = `-${exp.raw}`;
1202
+ exp.children.unshift(pre[0]);
1203
+ if (post)
1204
+ exp.children.push(post);
1205
+ return exp;
1206
+ }
1207
+ }
1208
+ if (exp.children) {
1209
+ exp.children.unshift(...pre);
1210
+ if (post)
1211
+ exp.children.push(post);
1212
+ return exp;
1213
+ } else if (Array.isArray(exp)) {
1214
+ exp.unshift(...pre);
1215
+ if (post)
1216
+ exp.push(post);
1217
+ return exp;
1218
+ } else {
1219
+ const result = [...pre, exp];
1220
+ if (post)
1221
+ result.push(post);
1222
+ return result;
1223
+ }
1221
1224
  });
1222
1225
  function UnaryExpression(state) {
1223
1226
  if (state.verbose)
@@ -1720,10 +1723,10 @@ var Civet = (() => {
1720
1723
  return MemberExpressionRest$0(state) || MemberExpressionRest$1(state) || MemberExpressionRest$2(state) || MemberExpressionRest$3(state);
1721
1724
  }
1722
1725
  }
1723
- var MemberBracketContent$0 = $TS($S(OpenBracket, ExtendedExpression, $E($S($C(DotDotDot, DotDot), $E(ExtendedExpression))), __, CloseBracket), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
1726
+ var MemberBracketContent$0 = $TS($S(OpenBracket, ExtendedExpression, $E($S(__, $C(DotDotDot, DotDot), $E(ExtendedExpression))), __, CloseBracket), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
1724
1727
  if ($3) {
1725
- const sep = $3[0];
1726
- const end = $3[1];
1728
+ const sep = $3[1];
1729
+ const end = $3[2];
1727
1730
  const inclusive = sep.token === "..";
1728
1731
  sep.token = ", ";
1729
1732
  $1.token = ".slice(";
@@ -1737,6 +1740,7 @@ var Civet = (() => {
1737
1740
  };
1738
1741
  }
1739
1742
  if (inclusive) {
1743
+ module.insertTrimmingSpace(end, "");
1740
1744
  return {
1741
1745
  type: "SliceExpression",
1742
1746
  start: $2,
@@ -2196,18 +2200,33 @@ var Civet = (() => {
2196
2200
  $1.type = "FunctionExpression";
2197
2201
  return $1;
2198
2202
  });
2199
- var FunctionExpression$1 = $TS($S(Ampersand, $P(MemberExpressionRest)), function($skip, $loc, $0, $1, $2) {
2203
+ var FunctionExpression$1 = $TS($S(Ampersand, $N(_), $P(CallExpressionRest)), function($skip, $loc, $0, $1, $2, $3) {
2204
+ $1.token = "$ => $";
2205
+ return {
2206
+ type: "FunctionExpression",
2207
+ children: [$1, $3]
2208
+ };
2209
+ });
2210
+ var FunctionExpression$2 = $TS($S(Ampersand, $N($EXPECT($R1, fail, "FunctionExpression /[&]/")), $P($S(__, BinaryOp, __, UnaryExpression))), function($skip, $loc, $0, $1, $2, $3) {
2211
+ $0.splice(1, 1);
2200
2212
  $1.token = "$ => $";
2213
+ const exp = module.processBinaryOpExpression($0);
2214
+ return {
2215
+ type: "FunctionExpression",
2216
+ children: exp
2217
+ };
2218
+ });
2219
+ var FunctionExpression$3 = $TS($S($EXPECT($R2, fail, "FunctionExpression /[!~+-]+/"), Ampersand), function($skip, $loc, $0, $1, $2) {
2201
2220
  return {
2202
2221
  type: "FunctionExpression",
2203
- children: [$1, $2]
2222
+ children: ["$ => ", $1, "$"]
2204
2223
  };
2205
2224
  });
2206
2225
  function FunctionExpression(state) {
2207
2226
  if (state.tokenize) {
2208
- return $TOKEN("FunctionExpression", state, FunctionExpression$0(state) || FunctionExpression$1(state));
2227
+ return $TOKEN("FunctionExpression", state, FunctionExpression$0(state) || FunctionExpression$1(state) || FunctionExpression$2(state) || FunctionExpression$3(state));
2209
2228
  } else {
2210
- return FunctionExpression$0(state) || FunctionExpression$1(state);
2229
+ return FunctionExpression$0(state) || FunctionExpression$1(state) || FunctionExpression$2(state) || FunctionExpression$3(state);
2211
2230
  }
2212
2231
  }
2213
2232
  var ThinArrowFunction$0 = $TS($S(Parameters, $E(ReturnTypeSuffix), $Q(_), Arrow, BracedOrEmptyBlock), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
@@ -2307,8 +2326,18 @@ var Civet = (() => {
2307
2326
  var exps = value[2];
2308
2327
  return { "type": "BlockStatement", "expressions": exps, "children": value };
2309
2328
  });
2310
- var BracedBlock$2 = $TS($S(InsertOpenBrace, $N(EOS), __, Statement, InsertSpace, InsertCloseBrace), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
2329
+ var BracedBlock$2 = $TS($S(InsertOpenBrace, $Y(EOS), ObjectLiteral, InsertCloseBrace), function($skip, $loc, $0, $1, $2, $3, $4) {
2330
+ var s = $3;
2331
+ $0.splice(1, 1);
2332
+ return {
2333
+ type: "BlockStatement",
2334
+ expressions: [s],
2335
+ children: $0
2336
+ };
2337
+ });
2338
+ var BracedBlock$3 = $TS($S(InsertOpenBrace, $N(EOS), __, Statement, InsertSpace, InsertCloseBrace), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
2311
2339
  var s = $4;
2340
+ $0.splice(1, 1);
2312
2341
  return {
2313
2342
  type: "BlockStatement",
2314
2343
  expressions: [s],
@@ -2317,9 +2346,9 @@ var Civet = (() => {
2317
2346
  });
2318
2347
  function BracedBlock(state) {
2319
2348
  if (state.tokenize) {
2320
- return $TOKEN("BracedBlock", state, BracedBlock$0(state) || BracedBlock$1(state) || BracedBlock$2(state));
2349
+ return $TOKEN("BracedBlock", state, BracedBlock$0(state) || BracedBlock$1(state) || BracedBlock$2(state) || BracedBlock$3(state));
2321
2350
  } else {
2322
- return BracedBlock$0(state) || BracedBlock$1(state) || BracedBlock$2(state);
2351
+ return BracedBlock$0(state) || BracedBlock$1(state) || BracedBlock$2(state) || BracedBlock$3(state);
2323
2352
  }
2324
2353
  }
2325
2354
  var BracedContent$0 = $T($S($Y(EOS), NestedBlockStatements), function(value) {
@@ -2361,7 +2390,8 @@ var Civet = (() => {
2361
2390
  var Literal$0 = $TS($S(LiteralContent), function($skip, $loc, $0, $1) {
2362
2391
  return {
2363
2392
  type: "Literal",
2364
- children: $0
2393
+ children: $0,
2394
+ raw: $1.token
2365
2395
  };
2366
2396
  });
2367
2397
  function Literal(state) {
@@ -2444,7 +2474,7 @@ var Civet = (() => {
2444
2474
  return Identifier$0(state);
2445
2475
  }
2446
2476
  }
2447
- var IdentifierName$0 = $TR($EXPECT($R1, fail, "IdentifierName /(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$])*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
2477
+ var IdentifierName$0 = $TR($EXPECT($R3, fail, "IdentifierName /(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$])*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
2448
2478
  return {
2449
2479
  type: "Identifier",
2450
2480
  name: $0,
@@ -2475,11 +2505,16 @@ var Civet = (() => {
2475
2505
  }
2476
2506
  }
2477
2507
  var ArrayLiteral$0 = $TS($S(OpenBracket, ArrayLiteralContent, __, CloseBracket), function($skip, $loc, $0, $1, $2, $3, $4) {
2508
+ var content = $2;
2509
+ if (content.type === "RangeExpression") {
2510
+ content.children.push(...$3);
2511
+ return content;
2512
+ }
2478
2513
  let children;
2479
- if (Array.isArray($2)) {
2480
- children = [$1, ...$2, ...$3, $4];
2514
+ if (Array.isArray(content)) {
2515
+ children = [$1, ...content, ...$3, $4];
2481
2516
  } else {
2482
- children = [$1, $2, ...$3, $4];
2517
+ children = [$1, content, ...$3, $4];
2483
2518
  }
2484
2519
  const names = children.flatMap((c) => {
2485
2520
  return c.names || [];
@@ -2499,13 +2534,39 @@ var Civet = (() => {
2499
2534
  return ArrayLiteral$0(state);
2500
2535
  }
2501
2536
  }
2502
- var ArrayLiteralContent$0 = NestedElementList;
2503
- var ArrayLiteralContent$1 = ElementList;
2537
+ var ArrayLiteralContent$0 = $TS($S(ExtendedExpression, __, $C(DotDotDot, DotDot), ExtendedExpression), function($skip, $loc, $0, $1, $2, $3, $4) {
2538
+ var s = $1;
2539
+ var ws = $2;
2540
+ var range = $3;
2541
+ var e = $4;
2542
+ const inclusive = range.token === "..";
2543
+ range.token = ",";
2544
+ if (s.type === "Literal" && e.type === "Literal") {
2545
+ const start = JSON.parse(s.raw);
2546
+ const end = JSON.parse(e.raw);
2547
+ const step = end > start ? 1 : -1;
2548
+ const length = Math.abs(end - start) + (inclusive ? 1 : 0);
2549
+ if (length <= 20) {
2550
+ return Array.from({ length }, (_2, i) => start + i * step).join(", ");
2551
+ }
2552
+ }
2553
+ const inclusiveAdjust = inclusive ? " + 1" : "";
2554
+ const children = ["((s, e) => {let step = e > s ? 1 : -1; return Array.from({length: Math.abs(e - s)", inclusiveAdjust, "}, (_, i) => s + i * step)})(", s, ws, range, e, ")"];
2555
+ return {
2556
+ type: "RangeExpression",
2557
+ children,
2558
+ inclusive,
2559
+ start: s,
2560
+ end: e
2561
+ };
2562
+ });
2563
+ var ArrayLiteralContent$1 = NestedElementList;
2564
+ var ArrayLiteralContent$2 = ElementList;
2504
2565
  function ArrayLiteralContent(state) {
2505
2566
  if (state.tokenize) {
2506
- return $TOKEN("ArrayLiteralContent", state, ArrayLiteralContent$0(state) || ArrayLiteralContent$1(state));
2567
+ return $TOKEN("ArrayLiteralContent", state, ArrayLiteralContent$0(state) || ArrayLiteralContent$1(state) || ArrayLiteralContent$2(state));
2507
2568
  } else {
2508
- return ArrayLiteralContent$0(state) || ArrayLiteralContent$1(state);
2569
+ return ArrayLiteralContent$0(state) || ArrayLiteralContent$1(state) || ArrayLiteralContent$2(state);
2509
2570
  }
2510
2571
  }
2511
2572
  var NestedElementList$0 = $TS($S(PushIndent, $Q(NestedElement), PopIndent), function($skip, $loc, $0, $1, $2, $3) {
@@ -2661,7 +2722,10 @@ var Civet = (() => {
2661
2722
  var NestedObjectLiteral$0 = $TS($S(InsertOpenBrace, $Y(EOS), NestedPropertyDefinitions, InsertNewline, InsertIndent, InsertCloseBrace), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
2662
2723
  $3.unshift($1);
2663
2724
  $3.push($4, $5, $6);
2664
- return $3;
2725
+ return {
2726
+ type: "ObjectExpression",
2727
+ children: $3
2728
+ };
2665
2729
  });
2666
2730
  function NestedObjectLiteral(state) {
2667
2731
  if (state.verbose)
@@ -2969,7 +3033,7 @@ var Civet = (() => {
2969
3033
  return BinaryOpSymbol$0(state) || BinaryOpSymbol$1(state) || BinaryOpSymbol$2(state) || BinaryOpSymbol$3(state) || BinaryOpSymbol$4(state) || BinaryOpSymbol$5(state) || BinaryOpSymbol$6(state) || BinaryOpSymbol$7(state) || BinaryOpSymbol$8(state) || BinaryOpSymbol$9(state) || BinaryOpSymbol$10(state) || BinaryOpSymbol$11(state) || BinaryOpSymbol$12(state) || BinaryOpSymbol$13(state) || BinaryOpSymbol$14(state) || BinaryOpSymbol$15(state) || BinaryOpSymbol$16(state) || BinaryOpSymbol$17(state) || BinaryOpSymbol$18(state) || BinaryOpSymbol$19(state) || BinaryOpSymbol$20(state) || BinaryOpSymbol$21(state) || BinaryOpSymbol$22(state) || BinaryOpSymbol$23(state) || BinaryOpSymbol$24(state) || BinaryOpSymbol$25(state) || BinaryOpSymbol$26(state) || BinaryOpSymbol$27(state) || BinaryOpSymbol$28(state) || BinaryOpSymbol$29(state) || BinaryOpSymbol$30(state);
2970
3034
  }
2971
3035
  }
2972
- var UnaryOp$0 = $TR($EXPECT($R2, fail, "UnaryOp /[!~+-](?!\\s)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
3036
+ var UnaryOp$0 = $TR($EXPECT($R4, fail, "UnaryOp /[!~+-](?!\\s|[!~+-]*&)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
2973
3037
  return { $loc, token: $0 };
2974
3038
  });
2975
3039
  var UnaryOp$1 = $S($C(Await, Delete, Void, Typeof), __);
@@ -3502,7 +3566,7 @@ var Civet = (() => {
3502
3566
  names: binding.names
3503
3567
  };
3504
3568
  });
3505
- var ForDeclaration$1 = $TS($S(InsertConst, ForBinding, $EXPECT($R3, fail, "ForDeclaration /(?=[\\s\\)])/")), function($skip, $loc, $0, $1, $2, $3) {
3569
+ var ForDeclaration$1 = $TS($S(InsertConst, ForBinding, $EXPECT($R5, fail, "ForDeclaration /(?=[\\s\\)])/")), function($skip, $loc, $0, $1, $2, $3) {
3506
3570
  var c = $1;
3507
3571
  var binding = $2;
3508
3572
  return {
@@ -4012,7 +4076,7 @@ var Civet = (() => {
4012
4076
  return UnprocessedModuleSpecifier$0(state) || UnprocessedModuleSpecifier$1(state);
4013
4077
  }
4014
4078
  }
4015
- var UnquotedSpecifier$0 = $TV($EXPECT($R4, fail, 'UnquotedSpecifier /[^;"\\s]+/'), function($skip, $loc, $0, $1) {
4079
+ var UnquotedSpecifier$0 = $TV($EXPECT($R6, fail, 'UnquotedSpecifier /[^;"\\s]+/'), function($skip, $loc, $0, $1) {
4016
4080
  var spec = $0;
4017
4081
  return { $loc, token: `"${spec}"` };
4018
4082
  });
@@ -4264,7 +4328,7 @@ var Civet = (() => {
4264
4328
  return NumericLiteralKind$0(state) || NumericLiteralKind$1(state) || NumericLiteralKind$2(state) || NumericLiteralKind$3(state) || NumericLiteralKind$4(state);
4265
4329
  }
4266
4330
  }
4267
- var DecimalBigIntegerLiteral$0 = $R$0($EXPECT($R5, fail, "DecimalBigIntegerLiteral /(?:0|[1-9](?:_[0-9]|[0-9])*)n/"));
4331
+ var DecimalBigIntegerLiteral$0 = $R$0($EXPECT($R7, fail, "DecimalBigIntegerLiteral /(?:0|[1-9](?:_[0-9]|[0-9])*)n/"));
4268
4332
  function DecimalBigIntegerLiteral(state) {
4269
4333
  if (state.verbose)
4270
4334
  console.log("ENTER:", "DecimalBigIntegerLiteral");
@@ -4274,11 +4338,11 @@ var Civet = (() => {
4274
4338
  return DecimalBigIntegerLiteral$0(state);
4275
4339
  }
4276
4340
  }
4277
- var DecimalLiteral$0 = $TV($TEXT($EXPECT($R6, fail, "DecimalLiteral /(?:0|[1-9](?:_[0-9]|[0-9])*)(?=\\.(?:\\p{ID_Start}|[_$]))/")), function($skip, $loc, $0, $1) {
4341
+ var DecimalLiteral$0 = $TV($TEXT($EXPECT($R8, fail, "DecimalLiteral /(?:0|[1-9](?:_[0-9]|[0-9])*)(?=\\.(?:\\p{ID_Start}|[_$]))/")), function($skip, $loc, $0, $1) {
4278
4342
  return $1 + ".";
4279
4343
  });
4280
- var DecimalLiteral$1 = $TEXT($S($EXPECT($R7, fail, "DecimalLiteral /(?:0|[1-9](?:_[0-9]|[0-9])*)(?:\\.(?:[0-9](?:_[0-9]|[0-9])*))?/"), $E(ExponentPart)));
4281
- var DecimalLiteral$2 = $TEXT($S($EXPECT($R8, fail, "DecimalLiteral /(?:\\.[0-9](?:_[0-9]|[0-9])*)/"), $E(ExponentPart)));
4344
+ var DecimalLiteral$1 = $TEXT($S($EXPECT($R9, fail, "DecimalLiteral /(?:0|[1-9](?:_[0-9]|[0-9])*)(?:\\.(?:[0-9](?:_[0-9]|[0-9])*))?/"), $E(ExponentPart)));
4345
+ var DecimalLiteral$2 = $TEXT($S($EXPECT($R10, fail, "DecimalLiteral /(?:\\.[0-9](?:_[0-9]|[0-9])*)/"), $E(ExponentPart)));
4282
4346
  function DecimalLiteral(state) {
4283
4347
  if (state.tokenize) {
4284
4348
  return $TOKEN("DecimalLiteral", state, DecimalLiteral$0(state) || DecimalLiteral$1(state) || DecimalLiteral$2(state));
@@ -4286,7 +4350,7 @@ var Civet = (() => {
4286
4350
  return DecimalLiteral$0(state) || DecimalLiteral$1(state) || DecimalLiteral$2(state);
4287
4351
  }
4288
4352
  }
4289
- var ExponentPart$0 = $R$0($EXPECT($R9, fail, "ExponentPart /(?:[eE][+-]?[0-9]+(?:_[0-9]|[0-9])*)/"));
4353
+ var ExponentPart$0 = $R$0($EXPECT($R11, fail, "ExponentPart /(?:[eE][+-]?[0-9]+(?:_[0-9]|[0-9])*)/"));
4290
4354
  function ExponentPart(state) {
4291
4355
  if (state.verbose)
4292
4356
  console.log("ENTER:", "ExponentPart");
@@ -4296,7 +4360,7 @@ var Civet = (() => {
4296
4360
  return ExponentPart$0(state);
4297
4361
  }
4298
4362
  }
4299
- var BinaryIntegerLiteral$0 = $R$0($EXPECT($R10, fail, "BinaryIntegerLiteral /0[bB][01](?:[01]|_[01])*n?/"));
4363
+ var BinaryIntegerLiteral$0 = $R$0($EXPECT($R12, fail, "BinaryIntegerLiteral /0[bB][01](?:[01]|_[01])*n?/"));
4300
4364
  function BinaryIntegerLiteral(state) {
4301
4365
  if (state.verbose)
4302
4366
  console.log("ENTER:", "BinaryIntegerLiteral");
@@ -4306,7 +4370,7 @@ var Civet = (() => {
4306
4370
  return BinaryIntegerLiteral$0(state);
4307
4371
  }
4308
4372
  }
4309
- var OctalIntegerLiteral$0 = $R$0($EXPECT($R11, fail, "OctalIntegerLiteral /0[oO][0-7](?:[0-7]|_[0-7])*n?/"));
4373
+ var OctalIntegerLiteral$0 = $R$0($EXPECT($R13, fail, "OctalIntegerLiteral /0[oO][0-7](?:[0-7]|_[0-7])*n?/"));
4310
4374
  function OctalIntegerLiteral(state) {
4311
4375
  if (state.verbose)
4312
4376
  console.log("ENTER:", "OctalIntegerLiteral");
@@ -4316,7 +4380,7 @@ var Civet = (() => {
4316
4380
  return OctalIntegerLiteral$0(state);
4317
4381
  }
4318
4382
  }
4319
- var HexLiteral$0 = $R$0($EXPECT($R12, fail, "HexLiteral /0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_[0-9a-fA-F])*n?/"));
4383
+ var HexLiteral$0 = $R$0($EXPECT($R14, fail, "HexLiteral /0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_[0-9a-fA-F])*n?/"));
4320
4384
  function HexLiteral(state) {
4321
4385
  if (state.verbose)
4322
4386
  console.log("ENTER:", "HexLiteral");
@@ -4365,7 +4429,7 @@ var Civet = (() => {
4365
4429
  return BasicStringLiteral$0(state) || BasicStringLiteral$1(state);
4366
4430
  }
4367
4431
  }
4368
- var DoubleStringCharacters$0 = $TR($EXPECT($R13, fail, 'DoubleStringCharacters /(?:\\\\.|[^"])*/'), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
4432
+ var DoubleStringCharacters$0 = $TR($EXPECT($R15, fail, 'DoubleStringCharacters /(?:\\\\.|[^"])*/'), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
4369
4433
  return { $loc, token: $0 };
4370
4434
  });
4371
4435
  function DoubleStringCharacters(state) {
@@ -4377,7 +4441,7 @@ var Civet = (() => {
4377
4441
  return DoubleStringCharacters$0(state);
4378
4442
  }
4379
4443
  }
4380
- var SingleStringCharacters$0 = $TR($EXPECT($R14, fail, "SingleStringCharacters /(?:\\\\.|[^'])*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
4444
+ var SingleStringCharacters$0 = $TR($EXPECT($R16, fail, "SingleStringCharacters /(?:\\\\.|[^'])*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
4381
4445
  return { $loc, token: $0 };
4382
4446
  });
4383
4447
  function SingleStringCharacters(state) {
@@ -4389,7 +4453,7 @@ var Civet = (() => {
4389
4453
  return SingleStringCharacters$0(state);
4390
4454
  }
4391
4455
  }
4392
- var TripleDoubleStringCharacters$0 = $TR($EXPECT($R15, fail, 'TripleDoubleStringCharacters /(?:"(?!"")|#(?!\\{)|\\\\.|[^#"])+/'), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
4456
+ var TripleDoubleStringCharacters$0 = $TR($EXPECT($R17, fail, 'TripleDoubleStringCharacters /(?:"(?!"")|#(?!\\{)|\\\\.|[^#"])+/'), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
4393
4457
  return { $loc, token: $0 };
4394
4458
  });
4395
4459
  function TripleDoubleStringCharacters(state) {
@@ -4401,7 +4465,7 @@ var Civet = (() => {
4401
4465
  return TripleDoubleStringCharacters$0(state);
4402
4466
  }
4403
4467
  }
4404
- var TripleSingleStringCharacters$0 = $TR($EXPECT($R16, fail, "TripleSingleStringCharacters /(?:'(?!'')|\\\\.|[^'])*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
4468
+ var TripleSingleStringCharacters$0 = $TR($EXPECT($R18, fail, "TripleSingleStringCharacters /(?:'(?!'')|\\\\.|[^'])*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
4405
4469
  return { $loc, token: $0 };
4406
4470
  });
4407
4471
  function TripleSingleStringCharacters(state) {
@@ -4452,7 +4516,7 @@ var Civet = (() => {
4452
4516
  return CoffeeInterpolatedDoubleQuotedString$0(state);
4453
4517
  }
4454
4518
  }
4455
- var CoffeeDoubleQuotedStringCharacters$0 = $TR($EXPECT($R17, fail, 'CoffeeDoubleQuotedStringCharacters /(?:\\\\.|#(?!\\{)|[^"#])+/'), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
4519
+ var CoffeeDoubleQuotedStringCharacters$0 = $TR($EXPECT($R19, fail, 'CoffeeDoubleQuotedStringCharacters /(?:\\\\.|#(?!\\{)|[^"#])+/'), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
4456
4520
  return { $loc, token: $0 };
4457
4521
  });
4458
4522
  function CoffeeDoubleQuotedStringCharacters(state) {
@@ -4476,7 +4540,7 @@ var Civet = (() => {
4476
4540
  return RegularExpressionLiteral$0(state);
4477
4541
  }
4478
4542
  }
4479
- var RegularExpressionBody$0 = $S($N($R$0($EXPECT($R18, fail, "RegularExpressionBody /[*\\/\\r\\n]/"))), $Q(RegExpCharacter));
4543
+ var RegularExpressionBody$0 = $S($N($R$0($EXPECT($R20, fail, "RegularExpressionBody /[*\\/\\r\\n]/"))), $Q(RegExpCharacter));
4480
4544
  function RegularExpressionBody(state) {
4481
4545
  if (state.verbose)
4482
4546
  console.log("ENTER:", "RegularExpressionBody");
@@ -4486,7 +4550,7 @@ var Civet = (() => {
4486
4550
  return RegularExpressionBody$0(state);
4487
4551
  }
4488
4552
  }
4489
- var RegExpCharacter$0 = $R$0($EXPECT($R19, fail, "RegExpCharacter /(?:\\\\.|[^\\/\\r\\n])+/"));
4553
+ var RegExpCharacter$0 = $R$0($EXPECT($R21, fail, "RegExpCharacter /(?:\\\\.|[^\\/\\r\\n])+/"));
4490
4554
  function RegExpCharacter(state) {
4491
4555
  if (state.verbose)
4492
4556
  console.log("ENTER:", "RegExpCharacter");
@@ -4496,7 +4560,7 @@ var Civet = (() => {
4496
4560
  return RegExpCharacter$0(state);
4497
4561
  }
4498
4562
  }
4499
- var RegularExpressionFlags$0 = $R$0($EXPECT($R20, fail, "RegularExpressionFlags /(?:\\p{ID_Continue}|[\\u200C\\u200D$])*/"));
4563
+ var RegularExpressionFlags$0 = $R$0($EXPECT($R22, fail, "RegularExpressionFlags /(?:\\p{ID_Continue}|[\\u200C\\u200D$])*/"));
4500
4564
  function RegularExpressionFlags(state) {
4501
4565
  if (state.verbose)
4502
4566
  console.log("ENTER:", "RegularExpressionFlags");
@@ -4527,7 +4591,7 @@ var Civet = (() => {
4527
4591
  return TemplateSubstitution$0(state);
4528
4592
  }
4529
4593
  }
4530
- var TemplateCharacters$0 = $TR($EXPECT($R21, fail, "TemplateCharacters /(?:\\$(?!\\{)|\\\\.|[^$`])+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
4594
+ var TemplateCharacters$0 = $TR($EXPECT($R23, fail, "TemplateCharacters /(?:\\$(?!\\{)|\\\\.|[^$`])+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
4531
4595
  return { $loc, token: $0 };
4532
4596
  });
4533
4597
  function TemplateCharacters(state) {
@@ -4539,7 +4603,7 @@ var Civet = (() => {
4539
4603
  return TemplateCharacters$0(state);
4540
4604
  }
4541
4605
  }
4542
- var TemplateBlockCharacters$0 = $TR($EXPECT($R22, fail, "TemplateBlockCharacters /(?:\\$(?!\\{)|`(?!``)|\\\\.|[^$`])+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
4606
+ var TemplateBlockCharacters$0 = $TR($EXPECT($R24, fail, "TemplateBlockCharacters /(?:\\$(?!\\{)|`(?!``)|\\\\.|[^$`])+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
4543
4607
  return { $loc, token: $0 };
4544
4608
  });
4545
4609
  function TemplateBlockCharacters(state) {
@@ -4551,9 +4615,9 @@ var Civet = (() => {
4551
4615
  return TemplateBlockCharacters$0(state);
4552
4616
  }
4553
4617
  }
4554
- var ReservedWord$0 = $S(CoffeeBooleansEnabled, $R$0($EXPECT($R23, fail, "ReservedWord /(?:on|off|yes|no)(?!\\p{ID_Continue})/")));
4555
- var ReservedWord$1 = $S(CoffeeIsntEnabled, $R$0($EXPECT($R24, fail, "ReservedWord /(?:isnt)(?!\\p{ID_Continue})/")));
4556
- var ReservedWord$2 = $R$0($EXPECT($R25, fail, "ReservedWord /(?:and|as|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|finally|for|function|if|import|in|instanceof|interface|is|loop|new|null|or|return|static|super|switch|this|throw|true|try|typeof|unless|until|var|void|while|with|yield)(?!\\p{ID_Continue})/"));
4618
+ var ReservedWord$0 = $S(CoffeeBooleansEnabled, $R$0($EXPECT($R25, fail, "ReservedWord /(?:on|off|yes|no)(?!\\p{ID_Continue})/")));
4619
+ var ReservedWord$1 = $S(CoffeeIsntEnabled, $R$0($EXPECT($R26, fail, "ReservedWord /(?:isnt)(?!\\p{ID_Continue})/")));
4620
+ var ReservedWord$2 = $R$0($EXPECT($R27, fail, "ReservedWord /(?:and|as|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|finally|for|function|if|import|in|instanceof|interface|is|loop|new|null|or|return|static|super|switch|this|throw|true|try|typeof|unless|until|var|void|while|with|yield)(?!\\p{ID_Continue})/"));
4557
4621
  function ReservedWord(state) {
4558
4622
  if (state.tokenize) {
4559
4623
  return $TOKEN("ReservedWord", state, ReservedWord$0(state) || ReservedWord$1(state) || ReservedWord$2(state));
@@ -4570,7 +4634,7 @@ var Civet = (() => {
4570
4634
  return Comment$0(state) || Comment$1(state);
4571
4635
  }
4572
4636
  }
4573
- var SingleLineComment$0 = $TR($EXPECT($R26, fail, "SingleLineComment /\\/\\/[^\\r\\n]*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
4637
+ var SingleLineComment$0 = $TR($EXPECT($R28, fail, "SingleLineComment /\\/\\/[^\\r\\n]*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
4574
4638
  return { $loc, token: $0 };
4575
4639
  });
4576
4640
  var SingleLineComment$1 = $S(CoffeeCommentEnabled, CoffeeSingleLineComment);
@@ -4590,7 +4654,7 @@ var Civet = (() => {
4590
4654
  return MultiLineComment$0(state) || MultiLineComment$1(state);
4591
4655
  }
4592
4656
  }
4593
- var JSMultiLineComment$0 = $TV($TEXT($S($EXPECT($L83, fail, 'JSMultiLineComment "/*"'), $Q($S($N($EXPECT($L84, fail, 'JSMultiLineComment "*/"')), $EXPECT($R27, fail, "JSMultiLineComment /./"))), $EXPECT($L84, fail, 'JSMultiLineComment "*/"'))), function($skip, $loc, $0, $1) {
4657
+ var JSMultiLineComment$0 = $TV($TEXT($S($EXPECT($L83, fail, 'JSMultiLineComment "/*"'), $Q($S($N($EXPECT($L84, fail, 'JSMultiLineComment "*/"')), $EXPECT($R29, fail, "JSMultiLineComment /./"))), $EXPECT($L84, fail, 'JSMultiLineComment "*/"'))), function($skip, $loc, $0, $1) {
4594
4658
  return { $loc, token: $1 };
4595
4659
  });
4596
4660
  function JSMultiLineComment(state) {
@@ -4602,7 +4666,7 @@ var Civet = (() => {
4602
4666
  return JSMultiLineComment$0(state);
4603
4667
  }
4604
4668
  }
4605
- var CoffeeSingleLineComment$0 = $TR($EXPECT($R28, fail, "CoffeeSingleLineComment /#([^\\r\\n]*)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
4669
+ var CoffeeSingleLineComment$0 = $TR($EXPECT($R30, fail, "CoffeeSingleLineComment /#(?!##)([^\\r\\n]*)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
4606
4670
  return { $loc, token: `//${$1}` };
4607
4671
  });
4608
4672
  function CoffeeSingleLineComment(state) {
@@ -4614,7 +4678,7 @@ var Civet = (() => {
4614
4678
  return CoffeeSingleLineComment$0(state);
4615
4679
  }
4616
4680
  }
4617
- var CoffeeMultiLineComment$0 = $TS($S($EXPECT($L85, fail, 'CoffeeMultiLineComment "###"'), $TEXT($Q($S($N($C($EXPECT($L85, fail, 'CoffeeMultiLineComment "###"'), $EXPECT($L84, fail, 'CoffeeMultiLineComment "*/"'))), $EXPECT($R27, fail, "CoffeeMultiLineComment /./")))), $EXPECT($L85, fail, 'CoffeeMultiLineComment "###"')), function($skip, $loc, $0, $1, $2, $3) {
4681
+ var CoffeeMultiLineComment$0 = $TS($S($EXPECT($L85, fail, 'CoffeeMultiLineComment "###"'), $TEXT($Q($S($N($C($EXPECT($L85, fail, 'CoffeeMultiLineComment "###"'), $EXPECT($L84, fail, 'CoffeeMultiLineComment "*/"'))), $EXPECT($R29, fail, "CoffeeMultiLineComment /./")))), $EXPECT($L85, fail, 'CoffeeMultiLineComment "###"')), function($skip, $loc, $0, $1, $2, $3) {
4618
4682
  return { $loc, token: `/*${$2}*/` };
4619
4683
  });
4620
4684
  function CoffeeMultiLineComment(state) {
@@ -4626,7 +4690,7 @@ var Civet = (() => {
4626
4690
  return CoffeeMultiLineComment$0(state);
4627
4691
  }
4628
4692
  }
4629
- var InlineComment$0 = $TV($TEXT($S($EXPECT($L83, fail, 'InlineComment "/*"'), $TEXT($Q($S($N($EXPECT($L84, fail, 'InlineComment "*/"')), $EXPECT($R29, fail, "InlineComment /[^\\r\\n]/")))), $EXPECT($L84, fail, 'InlineComment "*/"'))), function($skip, $loc, $0, $1) {
4693
+ var InlineComment$0 = $TV($TEXT($S($EXPECT($L83, fail, 'InlineComment "/*"'), $TEXT($Q($S($N($EXPECT($L84, fail, 'InlineComment "*/"')), $EXPECT($R31, fail, "InlineComment /[^\\r\\n]/")))), $EXPECT($L84, fail, 'InlineComment "*/"'))), function($skip, $loc, $0, $1) {
4630
4694
  return { $loc, token: $1 };
4631
4695
  });
4632
4696
  function InlineComment(state) {
@@ -4668,7 +4732,7 @@ var Civet = (() => {
4668
4732
  return _$0(state);
4669
4733
  }
4670
4734
  }
4671
- var NonNewlineWhitespace$0 = $TR($EXPECT($R30, fail, "NonNewlineWhitespace /[ \\t]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
4735
+ var NonNewlineWhitespace$0 = $TR($EXPECT($R32, fail, "NonNewlineWhitespace /[ \\t]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
4672
4736
  return { $loc, token: $0 };
4673
4737
  });
4674
4738
  function NonNewlineWhitespace(state) {
@@ -4690,7 +4754,7 @@ var Civet = (() => {
4690
4754
  return __$0(state);
4691
4755
  }
4692
4756
  }
4693
- var Whitespace$0 = $TR($EXPECT($R31, fail, "Whitespace /[\\s]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
4757
+ var Whitespace$0 = $TR($EXPECT($R33, fail, "Whitespace /[\\s]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
4694
4758
  return { $loc, token: $0 };
4695
4759
  });
4696
4760
  function Whitespace(state) {
@@ -4725,7 +4789,7 @@ var Civet = (() => {
4725
4789
  return StatementDelimiter$0(state) || StatementDelimiter$1(state);
4726
4790
  }
4727
4791
  }
4728
- var NonIdContinue$0 = $R$0($EXPECT($R32, fail, "NonIdContinue /(?!\\p{ID_Continue})/"));
4792
+ var NonIdContinue$0 = $R$0($EXPECT($R34, fail, "NonIdContinue /(?!\\p{ID_Continue})/"));
4729
4793
  function NonIdContinue(state) {
4730
4794
  if (state.verbose)
4731
4795
  console.log("ENTER:", "NonIdContinue");
@@ -5095,7 +5159,7 @@ var Civet = (() => {
5095
5159
  return If$0(state);
5096
5160
  }
5097
5161
  }
5098
- var Import$0 = $TS($S($EXPECT($L11, fail, 'Import "import"'), $Y($EXPECT($R33, fail, "Import /\\s/"))), function($skip, $loc, $0, $1, $2) {
5162
+ var Import$0 = $TS($S($EXPECT($L11, fail, 'Import "import"'), $Y($EXPECT($R35, fail, "Import /\\s/"))), function($skip, $loc, $0, $1, $2) {
5099
5163
  return { $loc, token: $1 };
5100
5164
  });
5101
5165
  function Import(state) {
@@ -5556,7 +5620,7 @@ var Civet = (() => {
5556
5620
  return JSXElementName$0(state);
5557
5621
  }
5558
5622
  }
5559
- var JSXIdentifierName$0 = $R$0($EXPECT($R34, fail, "JSXIdentifierName /(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$-])*/"));
5623
+ var JSXIdentifierName$0 = $R$0($EXPECT($R36, fail, "JSXIdentifierName /(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$-])*/"));
5560
5624
  function JSXIdentifierName(state) {
5561
5625
  if (state.verbose)
5562
5626
  console.log("ENTER:", "JSXIdentifierName");
@@ -5605,8 +5669,8 @@ var Civet = (() => {
5605
5669
  return JSXAttributeInitializer$0(state);
5606
5670
  }
5607
5671
  }
5608
- var JSXAttributeValue$0 = $R$0($EXPECT($R35, fail, 'JSXAttributeValue /"[^"]*"/'));
5609
- var JSXAttributeValue$1 = $R$0($EXPECT($R36, fail, "JSXAttributeValue /'[^']*'/"));
5672
+ var JSXAttributeValue$0 = $R$0($EXPECT($R37, fail, 'JSXAttributeValue /"[^"]*"/'));
5673
+ var JSXAttributeValue$1 = $R$0($EXPECT($R38, fail, "JSXAttributeValue /'[^']*'/"));
5610
5674
  var JSXAttributeValue$2 = $S(OpenBrace, ExtendedExpression, __, CloseBrace);
5611
5675
  var JSXAttributeValue$3 = JSXElement;
5612
5676
  var JSXAttributeValue$4 = JSXFragment;
@@ -5638,7 +5702,7 @@ var Civet = (() => {
5638
5702
  return JSXChild$0(state) || JSXChild$1(state) || JSXChild$2(state) || JSXChild$3(state);
5639
5703
  }
5640
5704
  }
5641
- var JSXText$0 = $R$0($EXPECT($R37, fail, "JSXText /[^{}<>]+/"));
5705
+ var JSXText$0 = $R$0($EXPECT($R39, fail, "JSXText /[^{}<>]+/"));
5642
5706
  function JSXText(state) {
5643
5707
  if (state.verbose)
5644
5708
  console.log("ENTER:", "JSXText");
@@ -5810,7 +5874,7 @@ var Civet = (() => {
5810
5874
  return NestedTypeDeclaration$0(state);
5811
5875
  }
5812
5876
  }
5813
- var TypeIndexSignature$0 = $S($E($S($R$0($EXPECT($R38, fail, "TypeIndexSignature /[+-]?/")), $EXPECT($L146, fail, 'TypeIndexSignature "readonly"'), __)), OpenBracket, TypeIndex, CloseBracket, $E($S(__, $R$0($EXPECT($R39, fail, "TypeIndexSignature /[+-]/")), QuestionMark)));
5877
+ var TypeIndexSignature$0 = $S($E($S($R$0($EXPECT($R40, fail, "TypeIndexSignature /[+-]?/")), $EXPECT($L146, fail, 'TypeIndexSignature "readonly"'), __)), OpenBracket, TypeIndex, CloseBracket, $E($S(__, $R$0($EXPECT($R41, fail, "TypeIndexSignature /[+-]/")), QuestionMark)));
5814
5878
  function TypeIndexSignature(state) {
5815
5879
  if (state.verbose)
5816
5880
  console.log("ENTER:", "TypeIndexSignature");
@@ -6109,7 +6173,7 @@ var Civet = (() => {
6109
6173
  return TypeParameterDelimiter$0(state) || TypeParameterDelimiter$1(state) || TypeParameterDelimiter$2(state) || TypeParameterDelimiter$3(state);
6110
6174
  }
6111
6175
  }
6112
- var Shebang$0 = $S($R$0($EXPECT($R40, fail, "Shebang /#![^\\r\\n]*/")), EOL);
6176
+ var Shebang$0 = $S($R$0($EXPECT($R42, fail, "Shebang /#![^\\r\\n]*/")), EOL);
6113
6177
  function Shebang(state) {
6114
6178
  if (state.verbose)
6115
6179
  console.log("ENTER:", "Shebang");
@@ -6119,11 +6183,11 @@ var Civet = (() => {
6119
6183
  return Shebang$0(state);
6120
6184
  }
6121
6185
  }
6122
- var CivetPrologue$0 = $T($S($EXPECT($R41, fail, "CivetPrologue /[\\t ]*/"), DoubleQuote, CivetPrologueContent, DoubleQuote, $TEXT(StatementDelimiter), EOS), function(value) {
6186
+ var CivetPrologue$0 = $T($S($EXPECT($R43, fail, "CivetPrologue /[\\t ]*/"), DoubleQuote, CivetPrologueContent, DoubleQuote, $TEXT(StatementDelimiter), EOS), function(value) {
6123
6187
  var content = value[2];
6124
6188
  return content;
6125
6189
  });
6126
- var CivetPrologue$1 = $T($S($EXPECT($R41, fail, "CivetPrologue /[\\t ]*/"), SingleQuote, CivetPrologueContent, SingleQuote, $TEXT(StatementDelimiter), EOS), function(value) {
6190
+ var CivetPrologue$1 = $T($S($EXPECT($R43, fail, "CivetPrologue /[\\t ]*/"), SingleQuote, CivetPrologueContent, SingleQuote, $TEXT(StatementDelimiter), EOS), function(value) {
6127
6191
  var content = value[2];
6128
6192
  return content;
6129
6193
  });
@@ -6134,7 +6198,7 @@ var Civet = (() => {
6134
6198
  return CivetPrologue$0(state) || CivetPrologue$1(state);
6135
6199
  }
6136
6200
  }
6137
- var CivetPrologueContent$0 = $TS($S($EXPECT($L151, fail, 'CivetPrologueContent "civet"'), $Q(CivetOption), $EXPECT($R42, fail, "CivetPrologueContent /[\\s]*/")), function($skip, $loc, $0, $1, $2, $3) {
6201
+ var CivetPrologueContent$0 = $TS($S($EXPECT($L151, fail, 'CivetPrologueContent "civet"'), $Q(CivetOption), $EXPECT($R44, fail, "CivetPrologueContent /[\\s]*/")), function($skip, $loc, $0, $1, $2, $3) {
6138
6202
  var options = $2;
6139
6203
  return {
6140
6204
  type: "CivetPrologue",
@@ -6151,7 +6215,7 @@ var Civet = (() => {
6151
6215
  return CivetPrologueContent$0(state);
6152
6216
  }
6153
6217
  }
6154
- var CivetOption$0 = $TR($EXPECT($R43, fail, "CivetOption /\\s+([+-]?)([a-zA-Z0-9-]+)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
6218
+ var CivetOption$0 = $TR($EXPECT($R45, fail, "CivetOption /\\s+([+-]?)([a-zA-Z0-9-]+)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
6155
6219
  const optionName = $2.replace(/-+([a-z]?)/g, (_2, l) => {
6156
6220
  if (l)
6157
6221
  return l.toUpperCase();
@@ -6169,7 +6233,7 @@ var Civet = (() => {
6169
6233
  return CivetOption$0(state);
6170
6234
  }
6171
6235
  }
6172
- var UnknownPrologue$0 = $S($R$0($EXPECT($R41, fail, "UnknownPrologue /[\\t ]*/")), BasicStringLiteral, $TEXT(StatementDelimiter), EOS);
6236
+ var UnknownPrologue$0 = $S($R$0($EXPECT($R43, fail, "UnknownPrologue /[\\t ]*/")), BasicStringLiteral, $TEXT(StatementDelimiter), EOS);
6173
6237
  function UnknownPrologue(state) {
6174
6238
  if (state.verbose)
6175
6239
  console.log("ENTER:", "UnknownPrologue");
@@ -6198,7 +6262,7 @@ var Civet = (() => {
6198
6262
  return EOS$0(state);
6199
6263
  }
6200
6264
  }
6201
- var EOL$0 = $TR($EXPECT($R44, fail, "EOL /\\r\\n|\\n|\\r|$/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
6265
+ var EOL$0 = $TR($EXPECT($R46, fail, "EOL /\\r\\n|\\n|\\r|$/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
6202
6266
  return { $loc, token: $0 };
6203
6267
  });
6204
6268
  function EOL(state) {
@@ -6564,6 +6628,10 @@ var Civet = (() => {
6564
6628
  case "BlockStatement":
6565
6629
  insertReturn(node.expressions[node.expressions.length - 1]);
6566
6630
  return;
6631
+ case "ObjectExpression":
6632
+ module.insertTrimmingSpace(node.children[0], "");
6633
+ node.children.unshift("return ");
6634
+ return;
6567
6635
  case "CaseBlock":
6568
6636
  node.clauses.forEach((clause) => {
6569
6637
  insertReturn(clause);
@@ -6632,6 +6700,25 @@ var Civet = (() => {
6632
6700
  if (Array.isArray(node))
6633
6701
  return node.every(module.isWhitespaceOrEmpty);
6634
6702
  };
6703
+ module.processBinaryOpExpression = function($02) {
6704
+ const expandedOps = module.expandChainedComparisons($02);
6705
+ let i = 2;
6706
+ while (i < expandedOps.length) {
6707
+ const op = expandedOps[i];
6708
+ if (op.type === "Ref") {
6709
+ const [a, wsOp, op2, wsB, b] = expandedOps.slice(i - 2, i + 3);
6710
+ module.insertTrimmingSpace(wsOp, "");
6711
+ module.insertTrimmingSpace(wsB, "");
6712
+ expandedOps.splice(i - 2, 5, {
6713
+ type: "Call",
6714
+ children: [wsOp, op2, ".call(", wsB, b, ", ", a, ") >= 0"]
6715
+ });
6716
+ } else {
6717
+ i += 4;
6718
+ }
6719
+ }
6720
+ return expandedOps;
6721
+ };
6635
6722
  module.expandChainedComparisons = function([first, binops]) {
6636
6723
  const relationalOps = ["==", "===", "!=", "!==", "<", "<=", ">", ">=", "in", "instanceof"];
6637
6724
  const lowerPrecedenceOps = ["??", "&&", "||", "&", "|", "^"];
@@ -7039,6 +7126,7 @@ var Civet = (() => {
7039
7126
  // source/generate.coffee
7040
7127
  var require_generate = __commonJS({
7041
7128
  "source/generate.coffee"(exports, module) {
7129
+ "civet coffeeCompat";
7042
7130
  var gen;
7043
7131
  var prune;
7044
7132
  gen = function(node, options) {
@@ -7116,6 +7204,7 @@ var Civet = (() => {
7116
7204
  var require_util = __commonJS({
7117
7205
  "source/util.coffee"(exports, module) {
7118
7206
  "use strict";
7207
+ "civet coffeeCompat";
7119
7208
  var BASE64_CHARS;
7120
7209
  var SourceMap;
7121
7210
  var VLQ_CONTINUATION_BIT;
@@ -7440,6 +7529,7 @@ var Civet = (() => {
7440
7529
  // source/main.coffee
7441
7530
  var require_main = __commonJS({
7442
7531
  "source/main.coffee"(exports, module) {
7532
+ "civet coffeeCompat";
7443
7533
  var SourceMap;
7444
7534
  var base64Encode;
7445
7535
  var defaultOptions;