@danielx/civet 0.8.12 → 0.8.13

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.mjs CHANGED
@@ -1829,8 +1829,8 @@ var declareHelper = {
1829
1829
  ts(": <T>(object: T, prop: PropertyKey) => boolean"),
1830
1830
  " = ({}.constructor",
1831
1831
  asAny,
1832
- ").hasOwn;\n"
1833
- ]]);
1832
+ ").hasOwn"
1833
+ ], ";\n"]);
1834
1834
  },
1835
1835
  is(isRef) {
1836
1836
  state.prelude.push(["", [
@@ -1839,9 +1839,8 @@ var declareHelper = {
1839
1839
  isRef,
1840
1840
  ts(": { <B, A extends B> (a: A, b: B): b is A, <A, B> (a: A, b: B): a is A & B }"),
1841
1841
  " = Object.is",
1842
- asAny,
1843
- ";\n"
1844
- ]]);
1842
+ asAny
1843
+ ], ";\n"]);
1845
1844
  },
1846
1845
  /**
1847
1846
  * Array length check with type guard.
@@ -1859,8 +1858,11 @@ var declareHelper = {
1859
1858
  },
1860
1859
  rslice(rsliceRef) {
1861
1860
  const RSliceable = makeRef("RSliceable");
1861
+ state.prelude.push([
1862
+ "",
1863
+ ts(["type ", RSliceable, "<R> = string | {length: number; slice(start: number, end: number): {reverse(): R}}\n"])
1864
+ ]);
1862
1865
  state.prelude.push(["", [
1863
- ts(["type ", RSliceable, "<R> = string | {length: number; slice(start: number, end: number): {reverse(): R}}\n"]),
1864
1866
  preludeVar,
1865
1867
  rsliceRef,
1866
1868
  ts([": <R, T extends string | ", RSliceable, "<R>>(a: T, start?: number, end?: number) => T extends string ? string : T extends ", RSliceable, "<infer R> ? R : never"]),
@@ -1879,8 +1881,8 @@ var declareHelper = {
1879
1881
  " } else {\n",
1880
1882
  " return a.slice(end, start + 1).reverse()\n",
1881
1883
  " }\n",
1882
- "});\n"
1883
- ]]);
1884
+ "})"
1885
+ ], ";\n"]);
1884
1886
  },
1885
1887
  div(divRef) {
1886
1888
  state.prelude.push(["", [
@@ -1888,8 +1890,8 @@ var declareHelper = {
1888
1890
  preludeVar,
1889
1891
  divRef,
1890
1892
  ts(": (a: number, b: number) => number"),
1891
- " = (a, b) => Math.floor(a / b);\n"
1892
- ]]);
1893
+ " = (a, b) => Math.floor(a / b)"
1894
+ ], ";\n"]);
1893
1895
  },
1894
1896
  modulo(moduloRef) {
1895
1897
  state.prelude.push(["", [
@@ -1897,14 +1899,15 @@ var declareHelper = {
1897
1899
  preludeVar,
1898
1900
  moduloRef,
1899
1901
  ts(": (a: number, b: number) => number"),
1900
- " = (a, b) => (a % b + b) % b;\n"
1901
- ]]);
1902
+ " = (a, b) => (a % b + b) % b"
1903
+ ], ";\n"]);
1902
1904
  },
1903
1905
  Falsy(FalsyRef) {
1904
1906
  state.prelude.push([
1905
1907
  "",
1906
1908
  // [indent, statement]
1907
- ts(["type ", FalsyRef, " = false | 0 | '' | 0n | null | undefined;\n"])
1909
+ ts(["type ", FalsyRef, " = false | 0 | '' | 0n | null | undefined"]),
1910
+ ";\n"
1908
1911
  ]);
1909
1912
  },
1910
1913
  xor(xorRef) {
@@ -1925,9 +1928,8 @@ var declareHelper = {
1925
1928
  " extends never ? never : A))"
1926
1929
  ]),
1927
1930
  " = (a, b) => (a ? !b && a : b)",
1928
- asAny,
1929
- ";\n"
1930
- ]]);
1931
+ asAny
1932
+ ], ";\n"]);
1931
1933
  },
1932
1934
  xnor(xnorRef) {
1933
1935
  const Falsy = getHelperRef("Falsy");
@@ -1945,9 +1947,8 @@ var declareHelper = {
1945
1947
  " ? never : B))"
1946
1948
  ]),
1947
1949
  " = (a, b) => (a ? b : !b || a)",
1948
- asAny,
1949
- ";\n"
1950
- ]]);
1950
+ asAny
1951
+ ], ";\n"]);
1951
1952
  },
1952
1953
  concatAssign(ref) {
1953
1954
  state.prelude.push(["", [
@@ -1965,8 +1966,8 @@ var declareHelper = {
1965
1966
  asAny,
1966
1967
  ") : (lhs",
1967
1968
  asAny,
1968
- ").push(rhs), lhs);\n"
1969
- ]]);
1969
+ ").push(rhs), lhs)"
1970
+ ], ";\n"]);
1970
1971
  },
1971
1972
  AutoPromise(ref) {
1972
1973
  state.prelude.push([
@@ -4674,7 +4675,7 @@ function processDeclarationCondition(condition, rootCondition, parent) {
4674
4675
  const simple = ref === expression;
4675
4676
  let children;
4676
4677
  if (simple) {
4677
- ref = insertTrimmingSpace(ref, "");
4678
+ ref = trimFirstSpace(ref);
4678
4679
  children = [ref];
4679
4680
  } else {
4680
4681
  children = [ref, initializer];
@@ -4864,9 +4865,12 @@ function processDeclarationConditionStatement(s) {
4864
4865
  }
4865
4866
  function dynamizeFromClause(from) {
4866
4867
  from = from.slice(1);
4867
- from = insertTrimmingSpace(from, "");
4868
- if (from[from.length - 1]?.type === "ImportAssertion") {
4869
- const assert2 = from.pop();
4868
+ from = trimFirstSpace(from);
4869
+ let ref2;
4870
+ if (ref2 = from[from.length - 1]?.assertion) {
4871
+ const assert2 = ref2;
4872
+ let ref3;
4873
+ ref3 = from[from.length - 1], ref3.children = ref3.children.filter((a2) => a2 !== assert2);
4870
4874
  from.push(", {", assert2.keyword, ":", assert2.object, "}");
4871
4875
  }
4872
4876
  return ["(", ...from, ")"];
@@ -4875,20 +4879,20 @@ function dynamizeImportDeclaration(decl) {
4875
4879
  const { imports } = decl;
4876
4880
  let { star, binding, specifiers } = imports;
4877
4881
  const justDefault = binding && !specifiers && !star;
4878
- let ref2;
4882
+ let ref4;
4879
4883
  {
4880
4884
  if (binding) {
4881
4885
  if (specifiers) {
4882
- ref2 = makeRef();
4886
+ ref4 = makeRef();
4883
4887
  } else {
4884
- ref2 = binding;
4888
+ ref4 = binding;
4885
4889
  }
4886
4890
  } else {
4887
- ref2 = convertNamedImportsToObject(imports, true);
4891
+ ref4 = convertNamedImportsToObject(imports, true);
4888
4892
  }
4889
4893
  }
4890
4894
  ;
4891
- const pattern = ref2;
4895
+ const pattern = ref4;
4892
4896
  const c = "const";
4893
4897
  const expression = [
4894
4898
  justDefault ? "(" : void 0,
@@ -4965,7 +4969,7 @@ function dynamizeImportDeclarationExpression($0) {
4965
4969
  { type: "Await", children: "await" },
4966
4970
  " ",
4967
4971
  imp,
4968
- insertTrimmingSpace(ws2, ""),
4972
+ trimFirstSpace(ws2),
4969
4973
  dynamizeFromClause(from),
4970
4974
  {
4971
4975
  type: "PropertyGlob",
@@ -6616,19 +6620,23 @@ function processCallMemberExpression(node) {
6616
6620
  assert.notEqual(i, 0, "Index access must be preceded by an expression");
6617
6621
  const prefix = i === 1 ? children[0] : children.slice(0, i);
6618
6622
  const { ref, refAssignment } = maybeRefAssignment(prefix);
6623
+ const args = [
6624
+ glob.children.slice(0 + 1, -1),
6625
+ // between "[" and "]" tokens
6626
+ ",",
6627
+ [" ", ref, ".length"]
6628
+ ];
6619
6629
  const call = makeNode({
6620
6630
  type: "CallExpression",
6631
+ implicit: true,
6621
6632
  children: [
6622
6633
  getHelperRef("modulo"),
6623
6634
  makeNode({
6624
6635
  type: "Call",
6636
+ args,
6625
6637
  children: [
6626
6638
  "(",
6627
- ...glob.children.slice(0 + 1, -1),
6628
- // between "[" and "]" tokens
6629
- ", ",
6630
- ref,
6631
- ".length",
6639
+ args,
6632
6640
  ")"
6633
6641
  ]
6634
6642
  })
@@ -6640,7 +6648,7 @@ function processCallMemberExpression(node) {
6640
6648
  ...node,
6641
6649
  children: [
6642
6650
  makeLeftHandSideExpression(refAssignment ?? prefix),
6643
- {
6651
+ makeNode({
6644
6652
  ...glob,
6645
6653
  mod: false,
6646
6654
  expression: call,
@@ -6651,7 +6659,7 @@ function processCallMemberExpression(node) {
6651
6659
  (ref3 = glob.children)[ref3.length - 1]
6652
6660
  // "]" token
6653
6661
  ]
6654
- },
6662
+ }),
6655
6663
  ...children.slice(i + 1)
6656
6664
  ]
6657
6665
  });
@@ -8001,6 +8009,7 @@ var grammar = {
8001
8009
  ArrayElementDelimiter,
8002
8010
  ElementListWithIndentedApplicationForbidden,
8003
8011
  ElementList,
8012
+ SingleLineElementList,
8004
8013
  ElementListRest,
8005
8014
  ArrayElementExpression,
8006
8015
  NestedBulletedArray,
@@ -8013,6 +8022,7 @@ var grammar = {
8013
8022
  BulletedArrayWithTrailing,
8014
8023
  ObjectLiteral,
8015
8024
  BracedObjectLiteral,
8025
+ SingleLineObjectProperties,
8016
8026
  BracedObjectLiteralContent,
8017
8027
  NestedImplicitObjectLiteral,
8018
8028
  NestedImplicitPropertyDefinitions,
@@ -11651,13 +11661,13 @@ var FunctionExpression$4 = (0, import_lib2.$TS)((0, import_lib2.$S)(OpenParen, _
11651
11661
  expression: fn
11652
11662
  };
11653
11663
  });
11654
- var FunctionExpression$5 = (0, import_lib2.$TS)((0, import_lib2.$S)(OpenParen, __, (0, import_lib2.$N)((0, import_lib2.$EXPECT)($R15, "FunctionExpression /\\+\\+|--|[\\+\\-&]\\S/")), BinaryOp, __, NonPipelineAssignmentExpression, CloseParen), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7) {
11664
+ var FunctionExpression$5 = (0, import_lib2.$TS)((0, import_lib2.$S)(OpenParen, __, (0, import_lib2.$N)((0, import_lib2.$EXPECT)($R15, "FunctionExpression /\\+\\+|--|[\\+\\-&]\\S/")), (0, import_lib2.$N)((0, import_lib2.$S)(Placeholder, (0, import_lib2.$C)(TypePostfix, BinaryOpRHS))), BinaryOp, __, NonPipelineAssignmentExpression, CloseParen), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8) {
11655
11665
  var open = $1;
11656
11666
  var ws1 = $2;
11657
- var op = $4;
11658
- var ws2 = $5;
11659
- var rhs = $6;
11660
- var close = $7;
11667
+ var op = $5;
11668
+ var ws2 = $6;
11669
+ var rhs = $7;
11670
+ var close = $8;
11661
11671
  const refA = makeRef("a");
11662
11672
  const fn = makeAmpersandFunction({
11663
11673
  ref: refA,
@@ -12359,7 +12369,30 @@ function ArrayLiteral(ctx, state2) {
12359
12369
  var _ArrayLiteral$0 = (0, import_lib2.$T)((0, import_lib2.$S)(ArrayBindingPattern, UpcomingAssignment), function(value) {
12360
12370
  return value[0];
12361
12371
  });
12362
- var _ArrayLiteral$1 = (0, import_lib2.$TS)((0, import_lib2.$S)(OpenBracket, AllowAll, (0, import_lib2.$E)((0, import_lib2.$S)(ArrayLiteralContent, __, CloseBracket)), RestoreAll), function($skip, $loc, $0, $1, $2, $3, $4) {
12372
+ var _ArrayLiteral$1 = (0, import_lib2.$TS)((0, import_lib2.$S)(OpenBracket, CloseBracket, ApplicationStart, AllowAll, (0, import_lib2.$E)((0, import_lib2.$C)(NestedElementList, SingleLineElementList)), RestoreAll), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
12373
+ var open = $1;
12374
+ var close = $2;
12375
+ var content = $5;
12376
+ if (!content)
12377
+ return $skip;
12378
+ let last = content[content.length - 1];
12379
+ let lastArray = Array.isArray(last) ? last : last.children;
12380
+ if (isComma(lastArray[lastArray.length - 1])) {
12381
+ lastArray = lastArray.slice(0, -1);
12382
+ if (Array.isArray(last)) {
12383
+ last = lastArray;
12384
+ } else {
12385
+ last = { ...last, children: lastArray };
12386
+ }
12387
+ content = [...content.slice(0, -1), last];
12388
+ }
12389
+ return {
12390
+ type: "ArrayExpression",
12391
+ children: [open, ...content, close],
12392
+ names: content.flatMap((c) => c?.names || [])
12393
+ };
12394
+ });
12395
+ var _ArrayLiteral$2 = (0, import_lib2.$TS)((0, import_lib2.$S)(OpenBracket, AllowAll, (0, import_lib2.$E)((0, import_lib2.$S)(ArrayLiteralContent, __, CloseBracket)), RestoreAll), function($skip, $loc, $0, $1, $2, $3, $4) {
12363
12396
  var open = $1;
12364
12397
  if (!$3)
12365
12398
  return $skip;
@@ -12380,8 +12413,8 @@ var _ArrayLiteral$1 = (0, import_lib2.$TS)((0, import_lib2.$S)(OpenBracket, Allo
12380
12413
  names
12381
12414
  };
12382
12415
  });
12383
- var _ArrayLiteral$2 = NestedBulletedArray;
12384
- var _ArrayLiteral$$ = [_ArrayLiteral$0, _ArrayLiteral$1, _ArrayLiteral$2];
12416
+ var _ArrayLiteral$3 = NestedBulletedArray;
12417
+ var _ArrayLiteral$$ = [_ArrayLiteral$0, _ArrayLiteral$1, _ArrayLiteral$2, _ArrayLiteral$3];
12385
12418
  function _ArrayLiteral(ctx, state2) {
12386
12419
  return (0, import_lib2.$EVENT_C)(ctx, state2, "_ArrayLiteral", _ArrayLiteral$$);
12387
12420
  }
@@ -12554,7 +12587,12 @@ function ElementListWithIndentedApplicationForbidden(ctx, state2) {
12554
12587
  var ElementList$0 = (0, import_lib2.$T)((0, import_lib2.$S)(BulletedArray), function(value) {
12555
12588
  return [value[0]];
12556
12589
  });
12557
- var ElementList$1 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$N)(EOS), ArrayElementExpression, (0, import_lib2.$Q)(ElementListRest)), function($skip, $loc, $0, $1, $2, $3) {
12590
+ var ElementList$1 = SingleLineElementList;
12591
+ var ElementList$$ = [ElementList$0, ElementList$1];
12592
+ function ElementList(ctx, state2) {
12593
+ return (0, import_lib2.$EVENT_C)(ctx, state2, "ElementList", ElementList$$);
12594
+ }
12595
+ var SingleLineElementList$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$N)(EOS), ArrayElementExpression, (0, import_lib2.$Q)(ElementListRest)), function($skip, $loc, $0, $1, $2, $3) {
12558
12596
  var first = $2;
12559
12597
  var rest = $3;
12560
12598
  if (!rest.length)
@@ -12565,9 +12603,8 @@ var ElementList$1 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$N)
12565
12603
  rest.map(([_2, e], i) => append(e, rest[i + 1]?.[0]))
12566
12604
  );
12567
12605
  });
12568
- var ElementList$$ = [ElementList$0, ElementList$1];
12569
- function ElementList(ctx, state2) {
12570
- return (0, import_lib2.$EVENT_C)(ctx, state2, "ElementList", ElementList$$);
12606
+ function SingleLineElementList(ctx, state2) {
12607
+ return (0, import_lib2.$EVENT)(ctx, state2, "SingleLineElementList", SingleLineElementList$0);
12571
12608
  }
12572
12609
  var ElementListRest$0 = (0, import_lib2.$S)((0, import_lib2.$S)((0, import_lib2.$E)(_), Comma, (0, import_lib2.$N)(EOS)), ArrayElementExpression);
12573
12610
  function ElementListRest(ctx, state2) {
@@ -12746,7 +12783,29 @@ var ObjectLiteral$$ = [ObjectLiteral$0, ObjectLiteral$1, ObjectLiteral$2, Object
12746
12783
  function ObjectLiteral(ctx, state2) {
12747
12784
  return (0, import_lib2.$EVENT_C)(ctx, state2, "ObjectLiteral", ObjectLiteral$$);
12748
12785
  }
12749
- var BracedObjectLiteral$0 = (0, import_lib2.$TS)((0, import_lib2.$S)(OpenBrace, AllowAll, (0, import_lib2.$E)((0, import_lib2.$S)(BracedObjectLiteralContent, __, CloseBrace)), RestoreAll), function($skip, $loc, $0, $1, $2, $3, $4) {
12786
+ var BracedObjectLiteral$0 = (0, import_lib2.$TS)((0, import_lib2.$S)(OpenBrace, CloseBrace, ApplicationStart, AllowAll, (0, import_lib2.$E)((0, import_lib2.$C)(NestedPropertyDefinitions, SingleLineObjectProperties)), RestoreAll), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
12787
+ var open = $1;
12788
+ var close = $2;
12789
+ var properties = $5;
12790
+ if (!properties?.length)
12791
+ return $skip;
12792
+ let last = properties[properties.length - 1];
12793
+ if (last.delim?.implicit) {
12794
+ last = {
12795
+ ...last,
12796
+ delim: void 0,
12797
+ children: last.children.filter((c) => c !== last.delim)
12798
+ };
12799
+ properties = [...properties.slice(0, properties.length - 1), last];
12800
+ }
12801
+ return {
12802
+ type: "ObjectExpression",
12803
+ children: [open, properties, close],
12804
+ names: properties.flatMap((c) => c.names || []),
12805
+ properties
12806
+ };
12807
+ });
12808
+ var BracedObjectLiteral$1 = (0, import_lib2.$TS)((0, import_lib2.$S)(OpenBrace, AllowAll, (0, import_lib2.$E)((0, import_lib2.$S)(BracedObjectLiteralContent, __, CloseBrace)), RestoreAll), function($skip, $loc, $0, $1, $2, $3, $4) {
12750
12809
  var open = $1;
12751
12810
  if (!$3)
12752
12811
  return $skip;
@@ -12758,13 +12817,13 @@ var BracedObjectLiteral$0 = (0, import_lib2.$TS)((0, import_lib2.$S)(OpenBrace,
12758
12817
  properties
12759
12818
  };
12760
12819
  });
12820
+ var BracedObjectLiteral$$ = [BracedObjectLiteral$0, BracedObjectLiteral$1];
12761
12821
  function BracedObjectLiteral(ctx, state2) {
12762
- return (0, import_lib2.$EVENT)(ctx, state2, "BracedObjectLiteral", BracedObjectLiteral$0);
12822
+ return (0, import_lib2.$EVENT_C)(ctx, state2, "BracedObjectLiteral", BracedObjectLiteral$$);
12763
12823
  }
12764
- var BracedObjectLiteralContent$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$Q)((0, import_lib2.$S)(PropertyDefinition, ObjectPropertyDelimiter)), (0, import_lib2.$E)(NestedPropertyDefinitions)), function($skip, $loc, $0, $1, $2) {
12765
- var line = $1;
12766
- var nested = $2;
12767
- line = line.flatMap(([prop, delim]) => {
12824
+ var SingleLineObjectProperties$0 = (0, import_lib2.$TV)((0, import_lib2.$Q)((0, import_lib2.$S)(PropertyDefinition, ObjectPropertyDelimiter)), function($skip, $loc, $0, $1) {
12825
+ var line = $0;
12826
+ return line.flatMap(([prop, delim]) => {
12768
12827
  prop = Array.isArray(prop) ? prop : [prop];
12769
12828
  let last = prop[prop.length - 1];
12770
12829
  if (!last)
@@ -12776,6 +12835,13 @@ var BracedObjectLiteralContent$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0,
12776
12835
  };
12777
12836
  return [...prop.slice(0, prop.length - 1), last];
12778
12837
  });
12838
+ });
12839
+ function SingleLineObjectProperties(ctx, state2) {
12840
+ return (0, import_lib2.$EVENT)(ctx, state2, "SingleLineObjectProperties", SingleLineObjectProperties$0);
12841
+ }
12842
+ var BracedObjectLiteralContent$0 = (0, import_lib2.$TS)((0, import_lib2.$S)(SingleLineObjectProperties, (0, import_lib2.$E)(NestedPropertyDefinitions)), function($skip, $loc, $0, $1, $2) {
12843
+ var line = $1;
12844
+ var nested = $2;
12779
12845
  return line.concat(nested || []);
12780
12846
  });
12781
12847
  var BracedObjectLiteralContent$1 = (0, import_lib2.$TV)((0, import_lib2.$P)((0, import_lib2.$S)(__, PropertyDefinition, ObjectPropertyDelimiter)), function($skip, $loc, $0, $1) {
@@ -12907,8 +12973,8 @@ function InlineObjectPropertyDelimiter(ctx, state2) {
12907
12973
  }
12908
12974
  var ObjectPropertyDelimiter$0 = (0, import_lib2.$S)((0, import_lib2.$E)(_), Comma);
12909
12975
  var ObjectPropertyDelimiter$1 = (0, import_lib2.$Y)((0, import_lib2.$S)(__, (0, import_lib2.$EXPECT)($L37, 'ObjectPropertyDelimiter "}"')));
12910
- var ObjectPropertyDelimiter$2 = (0, import_lib2.$T)((0, import_lib2.$S)((0, import_lib2.$Y)(EOS), InsertComma), function(value) {
12911
- return value[1];
12976
+ var ObjectPropertyDelimiter$2 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$Y)(EOS), InsertComma), function($skip, $loc, $0, $1, $2) {
12977
+ return { ...$2, implicit: true };
12912
12978
  });
12913
12979
  var ObjectPropertyDelimiter$$ = [ObjectPropertyDelimiter$0, ObjectPropertyDelimiter$1, ObjectPropertyDelimiter$2];
12914
12980
  function ObjectPropertyDelimiter(ctx, state2) {
@@ -15687,8 +15753,9 @@ function ModuleExportName(ctx, state2) {
15687
15753
  return (0, import_lib2.$EVENT_C)(ctx, state2, "ModuleExportName", ModuleExportName$$);
15688
15754
  }
15689
15755
  var ModuleSpecifier$0 = (0, import_lib2.$TS)((0, import_lib2.$S)(UnprocessedModuleSpecifier, (0, import_lib2.$E)(ImportAssertion)), function($skip, $loc, $0, $1, $2) {
15690
- var a = $2;
15691
- let { token } = $1;
15756
+ var module = $1;
15757
+ var assertion = $2;
15758
+ let { token } = module;
15692
15759
  if (config.rewriteTsImports) {
15693
15760
  token = token.replace(/\.([mc])?ts(['"])$/, ".$1js$2");
15694
15761
  }
@@ -15698,9 +15765,15 @@ var ModuleSpecifier$0 = (0, import_lib2.$TS)((0, import_lib2.$S)(UnprocessedModu
15698
15765
  `${config.rewriteCivetImports.replace(/\$/g, "$$")}$1`
15699
15766
  );
15700
15767
  }
15701
- if (a)
15702
- return [{ ...$1, token }, a];
15703
- return { ...$1, token };
15768
+ if (token !== module.token) {
15769
+ module = { ...module, token, input: module.token };
15770
+ }
15771
+ return {
15772
+ type: "ModuleSpecifier",
15773
+ module,
15774
+ assertion,
15775
+ children: [module, assertion]
15776
+ };
15704
15777
  });
15705
15778
  function ModuleSpecifier(ctx, state2) {
15706
15779
  return (0, import_lib2.$EVENT)(ctx, state2, "ModuleSpecifier", ModuleSpecifier$0);
package/dist/types.d.ts CHANGED
@@ -49,6 +49,9 @@ declare module "@danielx/civet" {
49
49
  trace?: string
50
50
  parseOptions?: ParseOptions
51
51
  }
52
+ export type GenerateOptions = Omit<CompileOptions, "sourceMap"> & {
53
+ sourceMap?: undefined | SourceMap
54
+ }
52
55
  export type SyncCompileOptions = CompileOptions &
53
56
  { parseOptions?: { comptime?: false } }
54
57
 
@@ -61,6 +64,7 @@ declare module "@danielx/civet" {
61
64
  lines: SourceMapping[][]
62
65
  }
63
66
  }
67
+ export function SourceMap(source: string): SourceMap
64
68
 
65
69
  // TODO: Import ParseError class from Hera
66
70
  export type ParseError = {
@@ -93,7 +97,12 @@ declare module "@danielx/civet" {
93
97
  /** Warning: No caching */
94
98
  export function parseProgram<T extends CompileOptions>(source: string, options?: T):
95
99
  T extends { comptime: true } ? Promise<CivetAST> : CivetAST
96
- export function generate(ast: CivetAST, options?: CompileOptions): string
100
+ export function generate(ast: CivetAST, options?: GenerateOptions): string
101
+
102
+ export const lib: {
103
+ gatherRecursive(ast: CivetAST, predicate: (node: CivetAST) => boolean): CivetAST[]
104
+ gatherRecursiveAll(ast: CivetAST, predicate: (node: CivetAST) => boolean): CivetAST[]
105
+ }
97
106
 
98
107
  const Civet: {
99
108
  version: string
@@ -101,6 +110,9 @@ declare module "@danielx/civet" {
101
110
  isCompileError: typeof isCompileError
102
111
  parse: typeof parse
103
112
  generate: typeof generate
113
+ SourceMap: typeof SourceMap
114
+ ParseError: typeof ParseError
115
+ ParseErrors: typeof ParseErrors
104
116
  sourcemap: {
105
117
  locationTable(input: string): number[]
106
118
  lookupLineColumn(table: number[], pos: number): [number, number]