@rohal12/spindle-lsp 0.15.31 → 0.15.33

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/bin.js CHANGED
@@ -55,7 +55,7 @@ var VERSION;
55
55
  var init_version = __esm({
56
56
  "src/version.ts"() {
57
57
  "use strict";
58
- VERSION = false ? pkg.version : "0.15.31";
58
+ VERSION = false ? pkg.version : "0.15.33";
59
59
  }
60
60
  });
61
61
 
@@ -15683,6 +15683,9 @@ function splitArgSpans(raw) {
15683
15683
  function splitArgs(raw) {
15684
15684
  return splitArgSpans(raw).map(([a, b]) => raw.slice(a, b));
15685
15685
  }
15686
+ function escapeRegExp(text3) {
15687
+ return text3.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
15688
+ }
15686
15689
  function terms(src) {
15687
15690
  const spans = [];
15688
15691
  let start = 0;
@@ -16912,8 +16915,7 @@ function tokensOf(text3, textMode, { tolerant, parametersOf: parametersOf2 } = {
16912
16915
  }
16913
16916
  }
16914
16917
  function declarationRegex(sigil) {
16915
- const escaped = sigil.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
16916
- return new RegExp(`^${escaped}(\\w+)\\s*=\\s*(.+)$`);
16918
+ return new RegExp(`^${escapeRegExp(sigil)}(\\w+)\\s*=\\s*(.+)$`);
16917
16919
  }
16918
16920
  function shapeSchema(shape) {
16919
16921
  if (!shape.fields) return { type: shape.type };
@@ -17489,7 +17491,7 @@ function regexCheck(regex) {
17489
17491
  }
17490
17492
  }
17491
17493
  function factorySpace(effects, ok, type, max) {
17492
- const limit = max ? max - 1 : Number.POSITIVE_INFINITY;
17494
+ const limit = max ? max - 1 : Infinity;
17493
17495
  let size = 0;
17494
17496
  return start;
17495
17497
  function start(code) {
@@ -17508,6 +17510,29 @@ function factorySpace(effects, ok, type, max) {
17508
17510
  return ok(code);
17509
17511
  }
17510
17512
  }
17513
+ function factorySpaceMinMax(effects, ok, nok, type, min, max) {
17514
+ let size = 0;
17515
+ return start;
17516
+ function start(code) {
17517
+ if (max > 0 && markdownSpace(code)) {
17518
+ effects.enter(type);
17519
+ return prefix(code);
17520
+ }
17521
+ return after(code);
17522
+ }
17523
+ function prefix(code) {
17524
+ if (markdownSpace(code) && size < max) {
17525
+ effects.consume(code);
17526
+ size++;
17527
+ return prefix;
17528
+ }
17529
+ effects.exit(type);
17530
+ return after(code);
17531
+ }
17532
+ function after(code) {
17533
+ return size >= min ? ok(code) : nok(code);
17534
+ }
17535
+ }
17511
17536
  function initializeContent(effects) {
17512
17537
  const contentStart = effects.attempt(this.parser.constructs.contentInitial, afterContentStartConstruct, paragraphInitial);
17513
17538
  let previous2;
@@ -17743,39 +17768,32 @@ function resolveAll(constructs2, events, context) {
17743
17768
  }
17744
17769
  function resolveAllAttention(events, context) {
17745
17770
  let index = -1;
17746
- let open2;
17747
- let group;
17748
- let text3;
17749
- let openingSequence;
17750
- let closingSequence;
17751
- let use;
17752
17771
  let nextEvents;
17753
- let offset2;
17754
17772
  while (++index < events.length) if (events[index][0] === "enter" && events[index][1].type === "attentionSequence" && events[index][1]._close) {
17755
- open2 = index;
17773
+ let open2 = index;
17756
17774
  while (open2--) if (events[open2][0] === "exit" && events[open2][1].type === "attentionSequence" && events[open2][1]._open && context.sliceSerialize(events[open2][1]).charCodeAt(0) === context.sliceSerialize(events[index][1]).charCodeAt(0)) {
17757
17775
  if ((events[open2][1]._close || events[index][1]._open) && (events[index][1].end.offset - events[index][1].start.offset) % 3 && !((events[open2][1].end.offset - events[open2][1].start.offset + events[index][1].end.offset - events[index][1].start.offset) % 3)) continue;
17758
- use = events[open2][1].end.offset - events[open2][1].start.offset > 1 && events[index][1].end.offset - events[index][1].start.offset > 1 ? 2 : 1;
17776
+ const use = events[open2][1].end.offset - events[open2][1].start.offset > 1 && events[index][1].end.offset - events[index][1].start.offset > 1 ? 2 : 1;
17759
17777
  const start = { ...events[open2][1].end };
17760
17778
  const end = { ...events[index][1].start };
17761
17779
  movePoint(start, -use);
17762
17780
  movePoint(end, use);
17763
- openingSequence = {
17781
+ const openingSequence = {
17764
17782
  type: use > 1 ? "strongSequence" : "emphasisSequence",
17765
17783
  start,
17766
17784
  end: { ...events[open2][1].end }
17767
17785
  };
17768
- closingSequence = {
17786
+ const closingSequence = {
17769
17787
  type: use > 1 ? "strongSequence" : "emphasisSequence",
17770
17788
  start: { ...events[index][1].start },
17771
17789
  end
17772
17790
  };
17773
- text3 = {
17791
+ const text3 = {
17774
17792
  type: use > 1 ? "strongText" : "emphasisText",
17775
17793
  start: { ...events[open2][1].end },
17776
17794
  end: { ...events[index][1].start }
17777
17795
  };
17778
- group = {
17796
+ const group = {
17779
17797
  type: use > 1 ? "strong" : "emphasis",
17780
17798
  start: { ...openingSequence.start },
17781
17799
  end: { ...closingSequence.end }
@@ -17837,6 +17855,7 @@ function resolveAllAttention(events, context) {
17837
17855
  context
17838
17856
  ]
17839
17857
  ]);
17858
+ let offset2 = 0;
17840
17859
  if (events[index][1].end.offset - events[index][1].start.offset) {
17841
17860
  offset2 = 2;
17842
17861
  nextEvents = push(nextEvents, [[
@@ -17848,7 +17867,7 @@ function resolveAllAttention(events, context) {
17848
17867
  events[index][1],
17849
17868
  context
17850
17869
  ]]);
17851
- } else offset2 = 0;
17870
+ }
17852
17871
  splice(events, open2 - 1, index - open2 + 3, nextEvents);
17853
17872
  index = open2 + nextEvents.length - offset2 - 2;
17854
17873
  break;
@@ -17876,8 +17895,8 @@ function tokenizeAttention(effects, ok) {
17876
17895
  }
17877
17896
  const token = effects.exit("attentionSequence");
17878
17897
  const after = classifyCharacter(code);
17879
- const open2 = !after || after === 2 && before || attentionMarkers2.includes(code);
17880
- const close = !before || before === 2 && after || attentionMarkers2.includes(previous2);
17898
+ const open2 = !after || after === 2 && before || attentionMarkers2.includes(code) && code !== 42 && code !== 95;
17899
+ const close = !before || before === 2 && after || attentionMarkers2.includes(previous2) && previous2 !== 42 && previous2 !== 95;
17881
17900
  token._open = Boolean(marker === 42 ? open2 : open2 && (before || !close));
17882
17901
  token._close = Boolean(marker === 42 ? close : close && (after || !open2));
17883
17902
  return ok(code);
@@ -18109,6 +18128,20 @@ function tokenizeCharacterReference(effects, ok, nok) {
18109
18128
  return nok(code);
18110
18129
  }
18111
18130
  }
18131
+ function tokenizeNonLazyContinuation(effects, ok, nok) {
18132
+ const self = this;
18133
+ return start;
18134
+ function start(code) {
18135
+ if (code === null) return nok(code);
18136
+ effects.enter("lineEnding");
18137
+ effects.consume(code);
18138
+ effects.exit("lineEnding");
18139
+ return after;
18140
+ }
18141
+ function after(code) {
18142
+ return self.parser.lazy[self.now().line] ? nok(code) : ok(code);
18143
+ }
18144
+ }
18112
18145
  function tokenizeCodeFenced(effects, ok, nok) {
18113
18146
  const self = this;
18114
18147
  const closeStart = {
@@ -18251,30 +18284,11 @@ function tokenizeCodeFenced(effects, ok, nok) {
18251
18284
  }
18252
18285
  }
18253
18286
  }
18254
- function tokenizeNonLazyContinuation(effects, ok, nok) {
18255
- const self = this;
18256
- return start;
18257
- function start(code) {
18258
- if (code === null) return nok(code);
18259
- effects.enter("lineEnding");
18260
- effects.consume(code);
18261
- effects.exit("lineEnding");
18262
- return lineStart;
18263
- }
18264
- function lineStart(code) {
18265
- return self.parser.lazy[self.now().line] ? nok(code) : ok(code);
18266
- }
18267
- }
18268
18287
  function tokenizeCodeIndented(effects, ok, nok) {
18269
- const self = this;
18270
18288
  return start;
18271
18289
  function start(code) {
18272
18290
  effects.enter("codeIndented");
18273
- return factorySpace(effects, afterPrefix, "linePrefix", 5)(code);
18274
- }
18275
- function afterPrefix(code) {
18276
- const tail = self.events[self.events.length - 1];
18277
- return tail && tail[1].type === "linePrefix" && tail[2].sliceSerialize(tail[1], true).length >= 4 ? atBreak(code) : nok(code);
18291
+ return factorySpaceMinMax(effects, atBreak, nok, "linePrefix", 4, 4)(code);
18278
18292
  }
18279
18293
  function atBreak(code) {
18280
18294
  if (code === null) return after(code);
@@ -18306,11 +18320,10 @@ function tokenizeFurtherStart(effects, ok, nok) {
18306
18320
  effects.exit("lineEnding");
18307
18321
  return furtherStart2;
18308
18322
  }
18309
- return factorySpace(effects, afterPrefix, "linePrefix", 5)(code);
18323
+ return factorySpaceMinMax(effects, ok, onNotEnoughPrefix, "linePrefix", 4, 4)(code);
18310
18324
  }
18311
- function afterPrefix(code) {
18312
- const tail = self.events[self.events.length - 1];
18313
- return tail && tail[1].type === "linePrefix" && tail[2].sliceSerialize(tail[1], true).length >= 4 ? ok(code) : markdownLineEnding(code) ? furtherStart2(code) : nok(code);
18325
+ function onNotEnoughPrefix(code) {
18326
+ return markdownLineEnding(code) ? furtherStart2(code) : nok(code);
18314
18327
  }
18315
18328
  }
18316
18329
  function resolveCodeText(events) {
@@ -18866,18 +18879,16 @@ function tokenizeHardBreakEscape(effects, ok, nok) {
18866
18879
  function resolveHeadingAtx(events, context) {
18867
18880
  let contentEnd = events.length - 2;
18868
18881
  let contentStart = 3;
18869
- let content2;
18870
- let text3;
18871
18882
  if (events[contentStart][1].type === "whitespace") contentStart += 2;
18872
18883
  if (contentEnd - 2 > contentStart && events[contentEnd][1].type === "whitespace") contentEnd -= 2;
18873
18884
  if (events[contentEnd][1].type === "atxHeadingSequence" && (contentStart === contentEnd - 1 || contentEnd - 4 > contentStart && events[contentEnd - 2][1].type === "whitespace")) contentEnd -= contentStart + 1 === contentEnd ? 2 : 4;
18874
18885
  if (contentEnd > contentStart) {
18875
- content2 = {
18886
+ const content2 = {
18876
18887
  type: "atxHeadingText",
18877
18888
  start: events[contentStart][1].start,
18878
18889
  end: events[contentEnd][1].end
18879
18890
  };
18880
- text3 = {
18891
+ const text3 = {
18881
18892
  type: "chunkText",
18882
18893
  start: events[contentStart][1].start,
18883
18894
  end: events[contentEnd][1].end,
@@ -19204,7 +19215,7 @@ function tokenizeHtmlFlow(effects, ok, nok) {
19204
19215
  return continuation;
19205
19216
  }
19206
19217
  function continuationStart(code) {
19207
- return effects.check(nonLazyContinuationStart, continuationStartNonLazy, continuationAfter)(code);
19218
+ return effects.check(nonLazyContinuation, continuationStartNonLazy, continuationAfter)(code);
19208
19219
  }
19209
19220
  function continuationStartNonLazy(code) {
19210
19221
  effects.enter("lineEnding");
@@ -19279,22 +19290,6 @@ function tokenizeHtmlFlow(effects, ok, nok) {
19279
19290
  return ok(code);
19280
19291
  }
19281
19292
  }
19282
- function tokenizeNonLazyContinuationStart(effects, ok, nok) {
19283
- const self = this;
19284
- return start;
19285
- function start(code) {
19286
- if (markdownLineEnding(code)) {
19287
- effects.enter("lineEnding");
19288
- effects.consume(code);
19289
- effects.exit("lineEnding");
19290
- return after;
19291
- }
19292
- return nok(code);
19293
- }
19294
- function after(code) {
19295
- return self.parser.lazy[self.now().line] ? nok(code) : ok(code);
19296
- }
19297
- }
19298
19293
  function tokenizeBlankLineBefore(effects, ok, nok) {
19299
19294
  return start;
19300
19295
  function start(code) {
@@ -19599,12 +19594,11 @@ function resolveAllLabelEnd(events) {
19599
19594
  function resolveToLabelEnd(events, context) {
19600
19595
  let index = events.length;
19601
19596
  let offset2 = 0;
19602
- let token;
19603
19597
  let open2;
19604
19598
  let close;
19605
19599
  let media;
19606
19600
  while (index--) {
19607
- token = events[index][1];
19601
+ const token = events[index][1];
19608
19602
  if (open2) {
19609
19603
  if (token.type === "link" || token.type === "labelLink" && token._inactive) break;
19610
19604
  if (events[index][0] === "enter" && token.type === "labelLink") token._inactive = true;
@@ -19674,12 +19668,12 @@ function resolveToLabelEnd(events, context) {
19674
19668
  }
19675
19669
  function tokenizeLabelEnd(effects, ok, nok) {
19676
19670
  const self = this;
19677
- let index = self.events.length;
19671
+ const labelStarts = self._labelStarts;
19678
19672
  let labelStart;
19679
19673
  let defined;
19680
- while (index--) if ((self.events[index][1].type === "labelImage" || self.events[index][1].type === "labelLink") && !self.events[index][1]._balanced) {
19681
- labelStart = self.events[index][1];
19682
- break;
19674
+ if (labelStarts) {
19675
+ while (labelStarts.length > 0 && labelStarts[labelStarts.length - 1]._balanced) labelStarts.pop();
19676
+ labelStart = labelStarts[labelStarts.length - 1];
19683
19677
  }
19684
19678
  return start;
19685
19679
  function start(code) {
@@ -19705,6 +19699,7 @@ function tokenizeLabelEnd(effects, ok, nok) {
19705
19699
  return effects.attempt(referenceCollapsedConstruct, labelEndOk, labelEndNok)(code);
19706
19700
  }
19707
19701
  function labelEndOk(code) {
19702
+ labelStarts.pop();
19708
19703
  return ok(code);
19709
19704
  }
19710
19705
  function labelEndNok(code) {
@@ -19787,6 +19782,7 @@ function tokenizeReferenceCollapsed(effects, ok, nok) {
19787
19782
  }
19788
19783
  function tokenizeLabelStartImage(effects, ok, nok) {
19789
19784
  const self = this;
19785
+ let labelImage;
19790
19786
  return start;
19791
19787
  function start(code) {
19792
19788
  effects.enter("labelImage");
@@ -19800,28 +19796,35 @@ function tokenizeLabelStartImage(effects, ok, nok) {
19800
19796
  effects.enter("labelMarker");
19801
19797
  effects.consume(code);
19802
19798
  effects.exit("labelMarker");
19803
- effects.exit("labelImage");
19799
+ labelImage = effects.exit("labelImage");
19804
19800
  return after;
19805
19801
  }
19806
19802
  return nok(code);
19807
19803
  }
19808
19804
  function after(code) {
19809
- return code === 94 && "_hiddenFootnoteSupport" in self.parser.constructs ? nok(code) : ok(code);
19805
+ if (code === 94 && "_hiddenFootnoteSupport" in self.parser.constructs) return nok(code);
19806
+ self._labelStarts = self._labelStarts || [];
19807
+ self._labelStarts.push(labelImage);
19808
+ return ok(code);
19810
19809
  }
19811
19810
  }
19812
19811
  function tokenizeLabelStartLink(effects, ok, nok) {
19813
19812
  const self = this;
19813
+ let labelLink;
19814
19814
  return start;
19815
19815
  function start(code) {
19816
19816
  effects.enter("labelLink");
19817
19817
  effects.enter("labelMarker");
19818
19818
  effects.consume(code);
19819
19819
  effects.exit("labelMarker");
19820
- effects.exit("labelLink");
19820
+ labelLink = effects.exit("labelLink");
19821
19821
  return after;
19822
19822
  }
19823
19823
  function after(code) {
19824
- return code === 94 && "_hiddenFootnoteSupport" in self.parser.constructs ? nok(code) : ok(code);
19824
+ if (code === 94 && "_hiddenFootnoteSupport" in self.parser.constructs) return nok(code);
19825
+ self._labelStarts = self._labelStarts || [];
19826
+ self._labelStarts.push(labelLink);
19827
+ return ok(code);
19825
19828
  }
19826
19829
  }
19827
19830
  function tokenizeLineEnding(effects, ok) {
@@ -19972,6 +19975,7 @@ function tokenizeListItemPrefixWhitespace(effects, ok, nok) {
19972
19975
  }
19973
19976
  }
19974
19977
  function resolveToSetextUnderline(events, context) {
19978
+ const editMap = new EditMap$1();
19975
19979
  let index = events.length;
19976
19980
  let content2;
19977
19981
  let text3;
@@ -19983,7 +19987,7 @@ function resolveToSetextUnderline(events, context) {
19983
19987
  }
19984
19988
  if (events[index][1].type === "paragraph") text3 = index;
19985
19989
  } else {
19986
- if (events[index][1].type === "content") events.splice(index, 1);
19990
+ if (events[index][1].type === "content") editMap.add(index, 1, []);
19987
19991
  if (!definition2 && events[index][1].type === "definition") definition2 = index;
19988
19992
  }
19989
19993
  const heading = {
@@ -19993,23 +19997,24 @@ function resolveToSetextUnderline(events, context) {
19993
19997
  };
19994
19998
  events[text3][1].type = "setextHeadingText";
19995
19999
  if (definition2) {
19996
- events.splice(text3, 0, [
20000
+ editMap.add(text3, 0, [[
19997
20001
  "enter",
19998
20002
  heading,
19999
20003
  context
20000
- ]);
20001
- events.splice(definition2 + 1, 0, [
20004
+ ]]);
20005
+ editMap.add(definition2 + 1, 0, [[
20002
20006
  "exit",
20003
20007
  events[content2][1],
20004
20008
  context
20005
- ]);
20009
+ ]]);
20006
20010
  events[content2][1].end = { ...events[definition2][1].end };
20007
20011
  } else events[content2][1] = heading;
20008
- events.push([
20012
+ editMap.add(events.length, 0, [[
20009
20013
  "exit",
20010
20014
  heading,
20011
20015
  context
20012
- ]);
20016
+ ]]);
20017
+ editMap.consume(events);
20013
20018
  return events;
20014
20019
  }
20015
20020
  function tokenizeSetextUnderline(effects, ok, nok) {
@@ -21898,7 +21903,7 @@ function validateVariableReferences(passages, declarations, macros = []) {
21898
21903
  const list3 = [...passages];
21899
21904
  return checkVariableReferences(list3.filter((p) => !p.tags?.some((t) => NOT_MARKUP_TAGS.includes(t))), declarations, referenceOptions(macros, false, list3));
21900
21905
  }
21901
- var __defProp2, __exportAll, NameMap, NameSet, SIGIL_SCOPES, SIGIL_CHARS, grammar_shared_default, LB, RB, SIGIL_SCOPES$1, withSelectors, VOID_TAGS, BRANCH_PARENT$1, LINK_SEPARATORS, NO_SELECTORS, EMAIL_AUTOLINK, peg$SyntaxError, OPTION_CLAUSE, PARAMETER_TYPES, STRING_HOLDS, metadataRegistry, companionParents, BLOCK_MACROS, BLOCK_WIDGETS, WIDGETS, DEFINED_BLOCK_MACROS, DEFINED_MACROS, REGISTERED_BLOCK_MACROS, RAW_BODY_MACROS, BRANCHING, quoteArg, MAX_MARKUP_DEPTH, last$1, BRANCH_PARENT, lowerName, nameOf, closerOf, closes, astralIdentifierCodes, astralIdentifierStartCodes, nonASCIIidentifierChars, nonASCIIidentifierStartChars, reservedWords, ecma5AndLessKeywords, keywords$1, keywordRelationalOperator, nonASCIIidentifierStart, nonASCIIidentifier, TokenType, beforeExpr, startsExpr, keywords, types$1, lineBreak, lineBreakG, nonASCIIwhitespace, skipWhiteSpace, ref, hasOwnProperty$1, toString, hasOwn$1, isArray, regexpCache, loneSurrogate, Position, SourceLocation, defaultOptions, warnedAboutEcmaVersion, SCOPE_TOP, SCOPE_FUNCTION, SCOPE_ASYNC, SCOPE_GENERATOR, SCOPE_ARROW, SCOPE_SIMPLE_CATCH, SCOPE_SUPER, SCOPE_DIRECT_SUPER, SCOPE_CLASS_STATIC_BLOCK, SCOPE_CLASS_FIELD_INIT, SCOPE_SWITCH, SCOPE_VAR, BIND_NONE, BIND_VAR, BIND_LEXICAL, BIND_FUNCTION, BIND_SIMPLE_CATCH, BIND_OUTSIDE, Parser, prototypeAccessors, pp$9, literal, DestructuringErrors, pp$8, loopLabel, switchLabel, empty$1, FUNC_STATEMENT, FUNC_HANGING_STATEMENT, FUNC_NULLABLE_ID, pp$7, TokContext, types, pp$6, pp$5, empty, pp$4, pp$3, Scope, Node, pp$2, scriptValuesAddedInUnicode, ecma9BinaryProperties, ecma10BinaryProperties, ecma11BinaryProperties, ecma12BinaryProperties, ecma13BinaryProperties, unicodeBinaryProperties, unicodeBinaryPropertiesOfStrings, unicodeGeneralCategoryValues, ecma9ScriptValues, ecma10ScriptValues, ecma11ScriptValues, ecma12ScriptValues, ecma13ScriptValues, unicodeScriptValues, data, ecmaVersion, i, list$2, pp$1, BranchID, RegExpValidationState, CharSetNone, CharSetOk, CharSetString, Token, pp, INVALID_TEMPLATE_ESCAPE_ERROR, OPTIONS, AT_NAME_RE, TRANS_NAME_RE, SIGIL_IDENT_RE, LINE_BREAK_RE, NOT_A_BODY_RE, OPERAND_ENDS, SigilParser, OPENERS, CLOSERS$1, CodeSyntaxError, last, CLOSER, isNode, NAMESPACE_NAME, WORD_RE$2, FLAGS_RE, WORDS_BEFORE_STRING, NON_STRING_QUOTE_PREFIX, memoInput, memo, defaultCodeEnd, defaultHooks, MarkupError, OFFSET_FIELD, listeners, RESERVED_NAME, isArrayIndex, hasOwn, createNamespace, TRAILING_OPERATOR_RE, slice, MacroArgumentError, WORD_RE$1, NUMBER_RE$1, WORD_OR_PUNCT_RE, LEADING_OPERATOR_RE, takesRest, SUB_MACRO_PARAMETERS, _MarkupExpansionBudget, MarkupExpansionBudget, parses, CONDITION_MACROS, PASSAGE_BODIES, holdsByDefault, JS_ESCAPE_RE, textPiece, LITERAL, registeredParameters, WIDGET_PARAMETERS, SPECIAL_PASSAGES, NOT_MARKUP, NOT_MARKUP_TAGS$1, BRANCH_MACROS, didYouMean, PASSAGE_ARGUMENT_HINT, BARE_WORD_RE, NUMBER_RE, IDENT_RE, KEY_RE, ARROW_RE, LINE_END_RE, ARRAY_INDEX_RE, UNSUPPORTED_UNDEFINED, Reader, VALID_VAR_TYPES, PRIMITIVE_SAMPLES, UNSUPPORTED_TYPE, NO_STORE_VAR_MACROS, CLOSERS, BLOCK_WORDS, NOT_PARAMETERS, DECLARATIONS, WRITE_RE, MUTATORS, MUTATING_CALL_RE, BEFORE_BINDING, isWordChar, Bindings, CALL_RE, IDENTIFIER_ARGUMENT_RE, WORD_RE, MODIFIER_RE, KEY_START_RE, CONFIG_KEYS, ConfigReader, stringOf, booleanOf, textOf, stringsOf, VOID_ELEMENTS, characterEntities, own, hasOwnProperty, asciiAlpha, asciiAlphanumeric, asciiAtext, asciiDigit, asciiHexDigit, asciiPunctuation, unicodePunctuation, unicodeWhitespace, content$1, EditMap$1, document$1, containerConstruct, attention, autolink, blankLine, blockQuote, characterEscape, characterReference, nonLazyContinuation, codeFenced, codeIndented, furtherStart, codeText, SpliceBuffer, content, continuationConstruct, definition, titleBefore, hardBreakEscape, headingAtx, htmlBlockNames, htmlRawNames, htmlFlow, blankLineBefore, nonLazyContinuationStart, htmlText, labelEnd, resourceConstruct, referenceFullConstruct, referenceCollapsedConstruct, labelStartImage, labelStartLink, lineEnding, thematicBreak, list, listItemPrefixWhitespaceConstruct, indentConstruct, setextUnderline, flow$1, resolver, string$1, text$1, constructs_exports, document, contentInitial, flowInitial, flow, string, text, insideSpan, attentionMarkers, disable, search, alignment, EditMap, DEFAULT_PRETTIER_OPTIONS, SVG_PLACEHOLDERS, SPINDLE_PLACEHOLDERS, PLACEHOLDER_PATTERN, DEFAULT_DEDENTING, WHITESPACE_AS_WRITTEN, HTML_MARKDOWN_BOUNDARIES, LIST_ITEM_REGEX, CODE_FENCE_REGEX, NO_WRAP, NOT_MARKUP_TAGS;
21906
+ var __defProp2, __exportAll, NameMap, NameSet, SIGIL_SCOPES, SIGIL_CHARS, grammar_shared_default, LB, RB, SIGIL_SCOPES$1, withSelectors, VOID_TAGS, BRANCH_PARENT$1, LINK_SEPARATORS, NO_SELECTORS, EMAIL_AUTOLINK, peg$SyntaxError, OPTION_CLAUSE, PARAMETER_TYPES, STRING_HOLDS, metadataRegistry, companionParents, BLOCK_MACROS, BLOCK_WIDGETS, WIDGETS, DEFINED_BLOCK_MACROS, DEFINED_MACROS, REGISTERED_BLOCK_MACROS, RAW_BODY_MACROS, BRANCHING, quoteArg, MAX_MARKUP_DEPTH, last$1, BRANCH_PARENT, lowerName, nameOf, closerOf, closes, astralIdentifierCodes, astralIdentifierStartCodes, nonASCIIidentifierChars, nonASCIIidentifierStartChars, reservedWords, ecma5AndLessKeywords, keywords$1, keywordRelationalOperator, nonASCIIidentifierStart, nonASCIIidentifier, TokenType, beforeExpr, startsExpr, keywords, types$1, lineBreak, lineBreakG, nonASCIIwhitespace, skipWhiteSpace, ref, hasOwnProperty$1, toString, hasOwn$1, isArray, regexpCache, loneSurrogate, Position, SourceLocation, defaultOptions, warnedAboutEcmaVersion, SCOPE_TOP, SCOPE_FUNCTION, SCOPE_ASYNC, SCOPE_GENERATOR, SCOPE_ARROW, SCOPE_SIMPLE_CATCH, SCOPE_SUPER, SCOPE_DIRECT_SUPER, SCOPE_CLASS_STATIC_BLOCK, SCOPE_CLASS_FIELD_INIT, SCOPE_SWITCH, SCOPE_VAR, BIND_NONE, BIND_VAR, BIND_LEXICAL, BIND_FUNCTION, BIND_SIMPLE_CATCH, BIND_OUTSIDE, Parser, prototypeAccessors, pp$9, literal, DestructuringErrors, pp$8, loopLabel, switchLabel, empty$1, FUNC_STATEMENT, FUNC_HANGING_STATEMENT, FUNC_NULLABLE_ID, pp$7, TokContext, types, pp$6, pp$5, empty, pp$4, pp$3, Scope, Node, pp$2, scriptValuesAddedInUnicode, ecma9BinaryProperties, ecma10BinaryProperties, ecma11BinaryProperties, ecma12BinaryProperties, ecma13BinaryProperties, unicodeBinaryProperties, unicodeBinaryPropertiesOfStrings, unicodeGeneralCategoryValues, ecma9ScriptValues, ecma10ScriptValues, ecma11ScriptValues, ecma12ScriptValues, ecma13ScriptValues, unicodeScriptValues, data, ecmaVersion, i, list$2, pp$1, BranchID, RegExpValidationState, CharSetNone, CharSetOk, CharSetString, Token, pp, INVALID_TEMPLATE_ESCAPE_ERROR, OPTIONS, AT_NAME_RE, TRANS_NAME_RE, SIGIL_IDENT_RE, LINE_BREAK_RE, NOT_A_BODY_RE, OPERAND_ENDS, SigilParser, OPENERS, CLOSERS$1, CodeSyntaxError, last, CLOSER, isNode, NAMESPACE_NAME, WORD_RE$2, FLAGS_RE, WORDS_BEFORE_STRING, NON_STRING_QUOTE_PREFIX, memoInput, memo, defaultCodeEnd, defaultHooks, MarkupError, OFFSET_FIELD, listeners, RESERVED_NAME, isArrayIndex, hasOwn, createNamespace, TRAILING_OPERATOR_RE, slice, MacroArgumentError, WORD_RE$1, NUMBER_RE$1, WORD_OR_PUNCT_RE, LEADING_OPERATOR_RE, takesRest, SUB_MACRO_PARAMETERS, _MarkupExpansionBudget, MarkupExpansionBudget, parses, CONDITION_MACROS, PASSAGE_BODIES, holdsByDefault, JS_ESCAPE_RE, textPiece, LITERAL, registeredParameters, WIDGET_PARAMETERS, SPECIAL_PASSAGES, NOT_MARKUP, NOT_MARKUP_TAGS$1, BRANCH_MACROS, didYouMean, PASSAGE_ARGUMENT_HINT, BARE_WORD_RE, NUMBER_RE, IDENT_RE, KEY_RE, ARROW_RE, LINE_END_RE, ARRAY_INDEX_RE, UNSUPPORTED_UNDEFINED, Reader, VALID_VAR_TYPES, PRIMITIVE_SAMPLES, UNSUPPORTED_TYPE, NO_STORE_VAR_MACROS, CLOSERS, BLOCK_WORDS, NOT_PARAMETERS, DECLARATIONS, WRITE_RE, MUTATORS, MUTATING_CALL_RE, BEFORE_BINDING, isWordChar, Bindings, CALL_RE, IDENTIFIER_ARGUMENT_RE, WORD_RE, MODIFIER_RE, KEY_START_RE, CONFIG_KEYS, ConfigReader, stringOf, booleanOf, textOf, stringsOf, VOID_ELEMENTS, characterEntities, own, hasOwnProperty, asciiAlpha, asciiAlphanumeric, asciiAtext, asciiDigit, asciiHexDigit, asciiPunctuation, unicodePunctuation, unicodeWhitespace, content$1, EditMap$1, document$1, containerConstruct, attention, autolink, blankLine, blockQuote, characterEscape, characterReference, nonLazyContinuation, codeFenced, codeIndented, furtherStart, codeText, SpliceBuffer, content, continuationConstruct, definition, titleBefore, hardBreakEscape, headingAtx, htmlBlockNames, htmlRawNames, htmlFlow, blankLineBefore, htmlText, labelEnd, resourceConstruct, referenceFullConstruct, referenceCollapsedConstruct, labelStartImage, labelStartLink, lineEnding, thematicBreak, list, listItemPrefixWhitespaceConstruct, indentConstruct, setextUnderline, flow$1, resolver, string$1, text$1, constructs_exports, document, contentInitial, flowInitial, flow, string, text, insideSpan, attentionMarkers, disable, search, alignment, EditMap, DEFAULT_PRETTIER_OPTIONS, SVG_PLACEHOLDERS, SPINDLE_PLACEHOLDERS, PLACEHOLDER_PATTERN, DEFAULT_DEDENTING, WHITESPACE_AS_WRITTEN, HTML_MARKDOWN_BOUNDARIES, LIST_ITEM_REGEX, CODE_FENCE_REGEX, NO_WRAP, NOT_MARKUP_TAGS;
21902
21907
  var init_story_variables = __esm({
21903
21908
  "node_modules/@rohal12/spindle/dist/pkg/story-variables.js"() {
21904
21909
  __defProp2 = Object.defineProperty;
@@ -27906,7 +27911,7 @@ var init_story_variables = __esm({
27906
27911
  /** Declaration and write facts are immutable for this source and property set. */
27907
27912
  readBindings(name, properties) {
27908
27913
  const { code } = this;
27909
- const escaped = name.replace(/\$/g, "\\$");
27914
+ const escaped = escapeRegExp(name);
27910
27915
  const bindings = [];
27911
27916
  for (const m of code.matchAll(new RegExp(`(?<![\\w$])${escaped}(?![\\w$])`, "g"))) {
27912
27917
  const binding = this.bindingAt(m.index, name.length, properties);
@@ -31029,10 +31034,6 @@ var init_story_variables = __esm({
31029
31034
  partial: true,
31030
31035
  tokenize: tokenizeBlankLineBefore
31031
31036
  };
31032
- nonLazyContinuationStart = {
31033
- partial: true,
31034
- tokenize: tokenizeNonLazyContinuationStart
31035
- };
31036
31037
  htmlText = {
31037
31038
  name: "htmlText",
31038
31039
  tokenize: tokenizeHtmlText