@litsx/jsx-authoring 0.2.1 → 0.3.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/index.cjs CHANGED
@@ -32,6 +32,14 @@ function sanitizeIdentifierTailChar(char) {
32
32
  return /[A-Za-z0-9$_]/.test(char) ? char : "_";
33
33
  }
34
34
 
35
+ function isIdentifierStartChar(char) {
36
+ return /[A-Za-z$_]/.test(char);
37
+ }
38
+
39
+ function isIdentifierChar(char) {
40
+ return /[A-Za-z0-9$_]/.test(char);
41
+ }
42
+
35
43
  function encodeEditorVirtualAttributeName(name) {
36
44
  const prefix = name[0];
37
45
  const localName = name.slice(1);
@@ -43,6 +51,10 @@ function encodeEditorStaticHoistName(originalName, macroName) {
43
51
  return `$${macroName}`;
44
52
  }
45
53
 
54
+ function encodeEditorStaticHoistAssignment(name) {
55
+ return `const $${name} = `;
56
+ }
57
+
46
58
  function scanQuotedString(sourceText, start, quote) {
47
59
  let index = start + 1;
48
60
 
@@ -569,7 +581,7 @@ function decodeVirtualStaticHoistName(name) {
569
581
  return null;
570
582
  }
571
583
 
572
- return `^${match[1]}`;
584
+ return `static ${match[1]}`;
573
585
  }
574
586
 
575
587
  function remapVirtualText(text) {
@@ -590,7 +602,9 @@ function looksLikeLitsxJsx(sourceText) {
590
602
  return (
591
603
  /<[\w.-]+[^>]*\s(?:[@.?][\w:-]+)/m.test(sourceText) ||
592
604
  /(?:^|[;{}]\s*)\^[A-Za-z$_][A-Za-z0-9$_]*/m.test(sourceText) ||
593
- /^\s*\^[A-Za-z$_][A-Za-z0-9$_]*/m.test(sourceText)
605
+ /^\s*\^[A-Za-z$_][A-Za-z0-9$_]*/m.test(sourceText) ||
606
+ /(?:^|[;{}]\s*)static\s+[A-Za-z$_][A-Za-z0-9$_]*\s*=/m.test(sourceText) ||
607
+ /^\s*static\s+[A-Za-z$_][A-Za-z0-9$_]*\s*=/m.test(sourceText)
594
608
  );
595
609
  }
596
610
 
@@ -633,6 +647,186 @@ function scanStaticMacro(sourceText, start, replacements, encodeMacroName) {
633
647
  return index;
634
648
  }
635
649
 
650
+ function isLikelyStaticHoistAssignmentStart(sourceText, index) {
651
+ if (sourceText.slice(index, index + 6) !== "static") {
652
+ return false;
653
+ }
654
+
655
+ const previousChar = sourceText[index - 1];
656
+ if (previousChar && /[A-Za-z0-9$_]/.test(previousChar)) {
657
+ return false;
658
+ }
659
+
660
+ const next = sourceText[index + 6];
661
+ if (!isWhitespace(next || "")) {
662
+ return false;
663
+ }
664
+
665
+ const prefix = trimTrailingWhitespaceAndComments(sourceText.slice(0, index));
666
+ if (!prefix) {
667
+ return true;
668
+ }
669
+
670
+ const previousSignificantChar = prefix[prefix.length - 1];
671
+ return (
672
+ previousSignificantChar === ";" ||
673
+ previousSignificantChar === "{" ||
674
+ previousSignificantChar === "}"
675
+ );
676
+ }
677
+
678
+ function readStaticHoistAssignment(sourceText, start) {
679
+ let index = start + 6;
680
+
681
+ while (index < sourceText.length && isWhitespace(sourceText[index])) {
682
+ index += 1;
683
+ }
684
+
685
+ const nameStart = index;
686
+ if (!MACRO_NAME_START_CHAR.test(sourceText[index] || "")) {
687
+ return null;
688
+ }
689
+
690
+ index += 1;
691
+ while (index < sourceText.length && MACRO_NAME_CHAR.test(sourceText[index])) {
692
+ index += 1;
693
+ }
694
+
695
+ const macroName = sourceText.slice(nameStart, index);
696
+
697
+ while (index < sourceText.length && isWhitespace(sourceText[index])) {
698
+ index += 1;
699
+ }
700
+
701
+ if (sourceText[index] !== "=") {
702
+ return null;
703
+ }
704
+
705
+ index += 1;
706
+ while (index < sourceText.length && isWhitespace(sourceText[index])) {
707
+ index += 1;
708
+ }
709
+
710
+ return {
711
+ macroName,
712
+ valueStart: index,
713
+ };
714
+ }
715
+
716
+ function scanStaticHoistAssignment(sourceText, start, replacements, strategy) {
717
+ const assignment = readStaticHoistAssignment(sourceText, start);
718
+ if (!assignment) {
719
+ return start + 1;
720
+ }
721
+
722
+ const { macroName, valueStart } = assignment;
723
+
724
+ let index = valueStart;
725
+ let parenDepth = 0;
726
+ let bracketDepth = 0;
727
+ let braceDepth = 0;
728
+ let statementEnd = sourceText.length;
729
+
730
+ while (index < sourceText.length) {
731
+ const char = sourceText[index];
732
+ const next = sourceText[index + 1];
733
+
734
+ if (char === "'" || char === "\"") {
735
+ index = scanQuotedString(sourceText, index, char);
736
+ continue;
737
+ }
738
+
739
+ if (char === "`") {
740
+ index = scanTemplateLiteral(sourceText, index);
741
+ continue;
742
+ }
743
+
744
+ if (char === "/" && next === "/") {
745
+ index = scanLineComment(sourceText, index);
746
+ continue;
747
+ }
748
+
749
+ if (char === "/" && next === "*") {
750
+ index = scanBlockComment(sourceText, index);
751
+ continue;
752
+ }
753
+
754
+ if (char === "(") {
755
+ parenDepth += 1;
756
+ index += 1;
757
+ continue;
758
+ }
759
+
760
+ if (char === ")") {
761
+ parenDepth = Math.max(0, parenDepth - 1);
762
+ index += 1;
763
+ continue;
764
+ }
765
+
766
+ if (char === "[") {
767
+ bracketDepth += 1;
768
+ index += 1;
769
+ continue;
770
+ }
771
+
772
+ if (char === "]") {
773
+ bracketDepth = Math.max(0, bracketDepth - 1);
774
+ index += 1;
775
+ continue;
776
+ }
777
+
778
+ if (char === "{") {
779
+ braceDepth += 1;
780
+ index += 1;
781
+ continue;
782
+ }
783
+
784
+ if (char === "}") {
785
+ if (parenDepth === 0 && bracketDepth === 0 && braceDepth === 0) {
786
+ statementEnd = index;
787
+ break;
788
+ }
789
+
790
+ braceDepth = Math.max(0, braceDepth - 1);
791
+ index += 1;
792
+ continue;
793
+ }
794
+
795
+ if (
796
+ char === ";" &&
797
+ parenDepth === 0 &&
798
+ bracketDepth === 0 &&
799
+ braceDepth === 0
800
+ ) {
801
+ statementEnd = index + 1;
802
+ break;
803
+ }
804
+
805
+ index += 1;
806
+ }
807
+
808
+ const hasSemicolon = statementEnd > valueStart && sourceText[statementEnd - 1] === ";";
809
+ const expressionSegment = sourceText.slice(
810
+ valueStart,
811
+ hasSemicolon ? statementEnd - 1 : statementEnd,
812
+ );
813
+ const statementBody = sourceText.slice(valueStart, statementEnd);
814
+ const expressionText = trimTrailingWhitespaceAndComments(expressionSegment);
815
+ const trailingText = statementBody.slice(expressionSegment.length);
816
+
817
+ replacements.push({
818
+ start,
819
+ end: statementEnd,
820
+ originalName: `static ${macroName}`,
821
+ replacement:
822
+ strategy === "editor"
823
+ ? `${encodeEditorStaticHoistAssignment(macroName)}${statementBody}`
824
+ : `__litsx_static_${macroName}(${expressionText})${trailingText}`,
825
+ });
826
+
827
+ return statementEnd;
828
+ }
829
+
636
830
  function createVirtualLitsxJsxSource(sourceText, options = {}) {
637
831
  const strategy = options.strategy === "editor" ? "editor" : "compiler";
638
832
  const includeSourceMap = options.sourceMap === true;
@@ -672,6 +866,8 @@ function createVirtualLitsxJsxSource(sourceText, options = {}) {
672
866
 
673
867
  const replacements = [];
674
868
  let index = 0;
869
+ const blockStack = [];
870
+ let pendingClassBody = false;
675
871
 
676
872
  while (index < sourceText.length) {
677
873
  const char = sourceText[index];
@@ -707,16 +903,53 @@ function createVirtualLitsxJsxSource(sourceText, options = {}) {
707
903
  continue;
708
904
  }
709
905
 
906
+ if (
907
+ char === "s" &&
908
+ blockStack[blockStack.length - 1] !== "class" &&
909
+ isLikelyStaticHoistAssignmentStart(sourceText, index)
910
+ ) {
911
+ index = scanStaticHoistAssignment(sourceText, index, replacements, strategy);
912
+ continue;
913
+ }
914
+
915
+ if (isIdentifierStartChar(char)) {
916
+ const wordStart = index;
917
+ index += 1;
918
+ while (index < sourceText.length && isIdentifierChar(sourceText[index])) {
919
+ index += 1;
920
+ }
921
+
922
+ const word = sourceText.slice(wordStart, index);
923
+ if (word === "class") {
924
+ let lookahead = index;
925
+ while (lookahead < sourceText.length && isWhitespace(sourceText[lookahead])) {
926
+ lookahead += 1;
927
+ }
928
+
929
+ pendingClassBody = sourceText[lookahead] !== ":";
930
+ }
931
+
932
+ continue;
933
+ }
934
+
710
935
  if (char === "{") {
936
+ blockStack.push(pendingClassBody ? "class" : "block");
937
+ pendingClassBody = false;
711
938
  index += 1;
712
939
  continue;
713
940
  }
714
941
 
715
942
  if (char === "}") {
943
+ blockStack.pop();
944
+ pendingClassBody = false;
716
945
  index += 1;
717
946
  continue;
718
947
  }
719
948
 
949
+ if (char === ";" || char === "=") {
950
+ pendingClassBody = false;
951
+ }
952
+
720
953
  index += 1;
721
954
  }
722
955
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../src/index.js"],"sourcesContent":["import MagicString from \"magic-string\";\n\nconst PREFIX_TO_KIND = {\n \"@\": \"event\",\n \".\": \"prop\",\n \"?\": \"bool\",\n};\n\nconst KIND_TO_PREFIX = {\n event: \"@\",\n prop: \".\",\n bool: \"?\",\n};\n\nconst ATTR_NAME_CHAR = /[\\w:-]/;\nconst TAG_NAME_START_CHAR = /[A-Za-z]/;\nconst TAG_NAME_CHAR = /[\\w:.-]/;\nconst MACRO_NAME_START_CHAR = /[A-Za-z$_]/;\nconst MACRO_NAME_CHAR = /[A-Za-z0-9$_]/;\n\nfunction isWhitespace(char) {\n return char === \" \" || char === \"\\t\" || char === \"\\n\" || char === \"\\r\";\n}\n\nfunction isReservedVirtualAttributeName(name) {\n return /^__litsx_(event|prop|bool)_/.test(name);\n}\n\nfunction sanitizeIdentifierTailChar(char) {\n return /[A-Za-z0-9$_]/.test(char) ? char : \"_\";\n}\n\nfunction encodeEditorVirtualAttributeName(name) {\n const prefix = name[0];\n const localName = name.slice(1);\n const encodedPrefix = prefix === \"@\" ? \"e\" : prefix === \".\" ? \"p\" : \"b\";\n return `${encodedPrefix}${Array.from(localName, sanitizeIdentifierTailChar).join(\"\")}`;\n}\n\nfunction encodeEditorStaticHoistName(originalName, macroName) {\n return `$${macroName}`;\n}\n\nfunction scanQuotedString(sourceText, start, quote) {\n let index = start + 1;\n\n while (index < sourceText.length) {\n const char = sourceText[index];\n if (char === \"\\\\\") {\n index += 2;\n continue;\n }\n if (char === quote) {\n return index + 1;\n }\n index += 1;\n }\n\n return index;\n}\n\nfunction scanLineComment(sourceText, start) {\n let index = start + 2;\n while (index < sourceText.length && sourceText[index] !== \"\\n\") {\n index += 1;\n }\n return index;\n}\n\nfunction scanBlockComment(sourceText, start) {\n let index = start + 2;\n while (index < sourceText.length) {\n if (sourceText[index] === \"*\" && sourceText[index + 1] === \"/\") {\n return index + 2;\n }\n index += 1;\n }\n return index;\n}\n\nfunction scanTemplateLiteral(sourceText, start) {\n let index = start + 1;\n\n while (index < sourceText.length) {\n const char = sourceText[index];\n if (char === \"\\\\\") {\n index += 2;\n continue;\n }\n if (char === \"`\") {\n return index + 1;\n }\n if (char === \"$\" && sourceText[index + 1] === \"{\") {\n index = scanBalancedBraces(sourceText, index + 1);\n continue;\n }\n index += 1;\n }\n\n return index;\n}\n\nfunction scanBalancedBraces(sourceText, start) {\n let depth = 0;\n let index = start;\n\n while (index < sourceText.length) {\n const char = sourceText[index];\n const next = sourceText[index + 1];\n\n if (char === \"'\" || char === \"\\\"\") {\n index = scanQuotedString(sourceText, index, char);\n continue;\n }\n\n if (char === \"`\") {\n index = scanTemplateLiteral(sourceText, index);\n continue;\n }\n\n if (char === \"/\" && next === \"/\") {\n index = scanLineComment(sourceText, index);\n continue;\n }\n\n if (char === \"/\" && next === \"*\") {\n index = scanBlockComment(sourceText, index);\n continue;\n }\n\n if (char === \"{\") {\n depth += 1;\n index += 1;\n continue;\n }\n\n if (char === \"}\") {\n depth -= 1;\n index += 1;\n if (depth <= 0) {\n return index;\n }\n continue;\n }\n\n index += 1;\n }\n\n return index;\n}\n\nfunction scanBalancedBracesWithJsx(sourceText, start, replacements, encodeAttributeName) {\n let depth = 0;\n let index = start;\n\n while (index < sourceText.length) {\n const char = sourceText[index];\n const next = sourceText[index + 1];\n\n if (char === \"'\" || char === \"\\\"\") {\n index = scanQuotedString(sourceText, index, char);\n continue;\n }\n\n if (char === \"`\") {\n index = scanTemplateLiteral(sourceText, index);\n continue;\n }\n\n if (char === \"/\" && next === \"/\") {\n index = scanLineComment(sourceText, index);\n continue;\n }\n\n if (char === \"/\" && next === \"*\") {\n index = scanBlockComment(sourceText, index);\n continue;\n }\n\n if (char === \"<\" && isLikelyJsxTagStart(sourceText, index)) {\n index = scanJsxElement(sourceText, index, replacements, encodeAttributeName);\n continue;\n }\n\n if (char === \"{\") {\n depth += 1;\n index += 1;\n continue;\n }\n\n if (char === \"}\") {\n depth -= 1;\n index += 1;\n if (depth <= 0) {\n return index;\n }\n continue;\n }\n\n index += 1;\n }\n\n return index;\n}\n\nfunction trimTrailingWhitespaceAndComments(sourceText) {\n let text = sourceText;\n let changed = true;\n\n while (changed) {\n changed = false;\n\n const trimmedWhitespace = text.replace(/\\s+$/u, \"\");\n if (trimmedWhitespace !== text) {\n text = trimmedWhitespace;\n changed = true;\n }\n\n const trimmedLineComment = text.replace(/\\/\\/[^\\n\\r]*$/u, \"\");\n if (trimmedLineComment !== text) {\n text = trimmedLineComment;\n changed = true;\n continue;\n }\n\n const trimmedBlockComment = text.replace(/\\/\\*[\\s\\S]*?\\*\\/$/u, \"\");\n if (trimmedBlockComment !== text) {\n text = trimmedBlockComment;\n changed = true;\n }\n }\n\n return text;\n}\n\nfunction previousSignificantIndex(sourceText, start) {\n let index = start - 1;\n while (index >= 0 && isWhitespace(sourceText[index])) {\n index -= 1;\n }\n return index;\n}\n\nfunction readPreviousWord(sourceText, endIndex) {\n let index = endIndex;\n while (index >= 0 && /[A-Za-z]/.test(sourceText[index])) {\n index -= 1;\n }\n return sourceText.slice(index + 1, endIndex + 1);\n}\n\nfunction isLikelyJsxTagStart(sourceText, index) {\n const next = sourceText[index + 1];\n if (!TAG_NAME_START_CHAR.test(next || \"\")) {\n return false;\n }\n\n const previousIndex = previousSignificantIndex(sourceText, index);\n if (previousIndex < 0) {\n return true;\n }\n\n const previousChar = sourceText[previousIndex];\n if (\"=({[,!?:;>&|\".includes(previousChar)) {\n return true;\n }\n\n const previousWord = readPreviousWord(sourceText, previousIndex);\n return [\"return\", \"case\", \"throw\", \"yield\", \"else\"].includes(previousWord);\n}\n\nfunction readJsxTagName(sourceText, start) {\n let index = start + 1;\n const isClosing = sourceText[index] === \"/\";\n\n if (isClosing) {\n index += 1;\n }\n\n if (!TAG_NAME_START_CHAR.test(sourceText[index] || \"\")) {\n return null;\n }\n\n const nameStart = index;\n\n while (index < sourceText.length && TAG_NAME_CHAR.test(sourceText[index])) {\n index += 1;\n }\n\n return {\n name: sourceText.slice(nameStart, index),\n isClosing,\n end: index,\n };\n}\n\nfunction scanJsxTag(sourceText, start, replacements, encodeAttributeName) {\n const tag = readJsxTagName(sourceText, start);\n\n if (!tag) {\n return {\n end: start + 1,\n tagName: null,\n isClosing: false,\n selfClosing: false,\n };\n }\n\n let index = tag.end;\n\n if (tag.isClosing) {\n while (index < sourceText.length) {\n if (sourceText[index] === \">\") {\n return {\n end: index + 1,\n tagName: tag.name,\n isClosing: true,\n selfClosing: false,\n };\n }\n\n index += 1;\n }\n\n return {\n end: index,\n tagName: tag.name,\n isClosing: true,\n selfClosing: false,\n };\n }\n\n function scanAttributeValue(valueStart) {\n let valueIndex = valueStart;\n\n while (valueIndex < sourceText.length && isWhitespace(sourceText[valueIndex])) {\n valueIndex += 1;\n }\n\n if (valueIndex >= sourceText.length) {\n return valueIndex;\n }\n\n const valueChar = sourceText[valueIndex];\n if (valueChar === \"{\") {\n return scanBalancedBracesWithJsx(\n sourceText,\n valueIndex,\n replacements,\n encodeAttributeName\n );\n }\n\n if (valueChar === \"'\" || valueChar === \"\\\"\") {\n return scanQuotedString(sourceText, valueIndex, valueChar);\n }\n\n while (\n valueIndex < sourceText.length &&\n !isWhitespace(sourceText[valueIndex]) &&\n sourceText[valueIndex] !== \">\" &&\n !(sourceText[valueIndex] === \"/\" && sourceText[valueIndex + 1] === \">\")\n ) {\n valueIndex += 1;\n }\n\n return valueIndex;\n }\n\n while (index < sourceText.length) {\n const char = sourceText[index];\n const next = sourceText[index + 1];\n\n if (char === \">\") {\n return {\n end: index + 1,\n tagName: tag.name,\n isClosing: false,\n selfClosing: false,\n };\n }\n\n if (char === \"/\" && next === \">\") {\n return {\n end: index + 2,\n tagName: tag.name,\n isClosing: false,\n selfClosing: true,\n };\n }\n\n if (isWhitespace(char)) {\n index += 1;\n continue;\n }\n\n if (char === \"{\") {\n index = scanBalancedBracesWithJsx(\n sourceText,\n index,\n replacements,\n encodeAttributeName\n );\n continue;\n }\n\n if (char === \"'\" || char === \"\\\"\") {\n index = scanQuotedString(sourceText, index, char);\n continue;\n }\n\n if (Object.hasOwn(PREFIX_TO_KIND, char) && ATTR_NAME_CHAR.test(next || \"\")) {\n const attrStart = index;\n index += 1;\n\n while (index < sourceText.length && ATTR_NAME_CHAR.test(sourceText[index])) {\n index += 1;\n }\n\n const originalName = sourceText.slice(attrStart, index);\n replacements.push({\n start: attrStart,\n end: index,\n originalName,\n replacement: encodeAttributeName(originalName),\n });\n\n while (index < sourceText.length && isWhitespace(sourceText[index])) {\n index += 1;\n }\n if (sourceText[index] === \"=\") {\n index = scanAttributeValue(index + 1);\n }\n continue;\n }\n\n const attrStart = index;\n while (\n index < sourceText.length &&\n !isWhitespace(sourceText[index]) &&\n sourceText[index] !== \"=\" &&\n sourceText[index] !== \">\" &&\n !(sourceText[index] === \"/\" && sourceText[index + 1] === \">\")\n ) {\n index += 1;\n }\n\n if (index === attrStart) {\n index += 1;\n continue;\n }\n\n while (index < sourceText.length && isWhitespace(sourceText[index])) {\n index += 1;\n }\n if (sourceText[index] === \"=\") {\n index = scanAttributeValue(index + 1);\n }\n }\n\n return {\n end: index,\n tagName: tag.name,\n isClosing: false,\n selfClosing: false,\n };\n}\n\nfunction scanJsxElement(sourceText, start, replacements, encodeAttributeName) {\n const openingTag = scanJsxTag(sourceText, start, replacements, encodeAttributeName);\n\n if (\n openingTag.isClosing ||\n openingTag.selfClosing ||\n !openingTag.tagName\n ) {\n return openingTag.end;\n }\n\n let index = openingTag.end;\n\n while (index < sourceText.length) {\n const char = sourceText[index];\n const next = sourceText[index + 1];\n\n if (char === \"'\" || char === \"\\\"\") {\n index = scanQuotedString(sourceText, index, char);\n continue;\n }\n\n if (char === \"`\") {\n index = scanTemplateLiteral(sourceText, index);\n continue;\n }\n\n if (char === \"/\" && next === \"/\") {\n index = scanLineComment(sourceText, index);\n continue;\n }\n\n if (char === \"/\" && next === \"*\") {\n index = scanBlockComment(sourceText, index);\n continue;\n }\n\n if (char === \"{\") {\n index = scanBalancedBracesWithJsx(\n sourceText,\n index,\n replacements,\n encodeAttributeName\n );\n continue;\n }\n\n if (char === \"<\") {\n const nestedTag = readJsxTagName(sourceText, index);\n\n if (!nestedTag) {\n index += 1;\n continue;\n }\n\n if (nestedTag.isClosing && nestedTag.name === openingTag.tagName) {\n return scanJsxTag(sourceText, index, replacements, encodeAttributeName).end;\n }\n\n if (!nestedTag.isClosing) {\n index = scanJsxElement(sourceText, index, replacements, encodeAttributeName);\n continue;\n }\n }\n\n index += 1;\n }\n\n return index;\n}\n\nexport function encodeVirtualAttributeName(name) {\n const prefix = name[0];\n const localName = name.slice(1);\n const kind = PREFIX_TO_KIND[prefix];\n\n if (!kind) {\n return name;\n }\n\n return `__litsx_${kind}_${localName}`;\n}\n\nexport function decodeVirtualAttributeName(name) {\n const match = /^__litsx_(event|prop|bool)_(.+)$/.exec(name);\n\n if (!match) {\n return null;\n }\n\n const [, kind, localName] = match;\n return `${KIND_TO_PREFIX[kind]}${localName}`;\n}\n\nexport function decodeVirtualStaticHoistName(name) {\n const match = /^__litsx_static_([A-Za-z$_][A-Za-z0-9$_]*)$/.exec(name);\n\n if (!match) {\n return null;\n }\n\n return `^${match[1]}`;\n}\n\nexport function remapVirtualText(text) {\n if (typeof text !== \"string\") {\n return text;\n }\n\n return text\n .replace(/__litsx_(event|prop|bool)_[\\w:-]+/g, (name) => (\n decodeVirtualAttributeName(name) ?? name\n ))\n .replace(/__litsx_static_[A-Za-z$_][A-Za-z0-9$_]*/g, (name) => (\n decodeVirtualStaticHoistName(name) ?? name\n ));\n}\n\nexport function looksLikeLitsxJsx(sourceText) {\n return (\n /<[\\w.-]+[^>]*\\s(?:[@.?][\\w:-]+)/m.test(sourceText) ||\n /(?:^|[;{}]\\s*)\\^[A-Za-z$_][A-Za-z0-9$_]*/m.test(sourceText) ||\n /^\\s*\\^[A-Za-z$_][A-Za-z0-9$_]*/m.test(sourceText)\n );\n}\n\nfunction isLikelyStaticMacroStart(sourceText, index) {\n const next = sourceText[index + 1];\n if (!MACRO_NAME_START_CHAR.test(next || \"\")) {\n return false;\n }\n\n const prefix = trimTrailingWhitespaceAndComments(sourceText.slice(0, index));\n if (!prefix) {\n return true;\n }\n\n const previousChar = prefix[prefix.length - 1];\n return previousChar === \";\" || previousChar === \"{\" || previousChar === \"}\";\n}\n\nfunction scanStaticMacro(sourceText, start, replacements, encodeMacroName) {\n let index = start + 1;\n\n while (index < sourceText.length && MACRO_NAME_CHAR.test(sourceText[index])) {\n index += 1;\n }\n\n const originalName = sourceText.slice(start, index);\n const macroName = originalName.slice(1);\n\n if (macroName === \"mixins\") {\n return index;\n }\n\n replacements.push({\n start,\n end: index,\n originalName,\n replacement: encodeMacroName(originalName, macroName),\n });\n\n return index;\n}\n\nexport function createVirtualLitsxJsxSource(sourceText, options = {}) {\n const strategy = options.strategy === \"editor\" ? \"editor\" : \"compiler\";\n const includeSourceMap = options.sourceMap === true;\n const encodeAttributeName =\n strategy === \"editor\"\n ? encodeEditorVirtualAttributeName\n : encodeVirtualAttributeName;\n const encodeMacroName =\n strategy === \"editor\"\n ? encodeEditorStaticHoistName\n : (_originalName, macroName) => `__litsx_static_${macroName}`;\n\n if (!sourceText || typeof sourceText !== \"string\") {\n return {\n code: sourceText,\n map: null,\n replacements: [],\n };\n }\n\n if (strategy === \"compiler\" && sourceText.includes(\"__litsx_\")) {\n return {\n code: sourceText,\n map: null,\n replacements: [],\n collision: true,\n };\n }\n\n if (!looksLikeLitsxJsx(sourceText)) {\n return {\n code: sourceText,\n map: null,\n replacements: [],\n };\n }\n\n const replacements = [];\n let index = 0;\n let braceDepth = 0;\n\n while (index < sourceText.length) {\n const char = sourceText[index];\n const next = sourceText[index + 1];\n\n if (char === \"'\" || char === \"\\\"\") {\n index = scanQuotedString(sourceText, index, char);\n continue;\n }\n\n if (char === \"`\") {\n index = scanTemplateLiteral(sourceText, index);\n continue;\n }\n\n if (char === \"/\" && next === \"/\") {\n index = scanLineComment(sourceText, index);\n continue;\n }\n\n if (char === \"/\" && next === \"*\") {\n index = scanBlockComment(sourceText, index);\n continue;\n }\n\n if (char === \"<\" && isLikelyJsxTagStart(sourceText, index)) {\n index = scanJsxElement(sourceText, index, replacements, encodeAttributeName);\n continue;\n }\n\n if (char === \"^\" && isLikelyStaticMacroStart(sourceText, index)) {\n index = scanStaticMacro(sourceText, index, replacements, encodeMacroName);\n continue;\n }\n\n if (char === \"{\") {\n braceDepth += 1;\n index += 1;\n continue;\n }\n\n if (char === \"}\") {\n braceDepth = Math.max(0, braceDepth - 1);\n index += 1;\n continue;\n }\n\n index += 1;\n }\n\n if (!replacements.length) {\n return {\n code: sourceText,\n map: null,\n replacements: [],\n };\n }\n\n let lastIndex = 0;\n let transformed = \"\";\n\n for (const replacement of replacements) {\n transformed += sourceText.slice(lastIndex, replacement.start);\n transformed += replacement.replacement;\n lastIndex = replacement.end;\n }\n\n transformed += sourceText.slice(lastIndex);\n\n return {\n code: transformed,\n map: includeSourceMap\n ? createVirtualLitsxJsxSourceMap(sourceText, replacements, {\n sourceFileName: options.sourceFileName,\n })\n : null,\n replacements,\n };\n}\n\nexport function createVirtualLitsxJsxSourceMap(\n sourceText,\n replacements = [],\n options = {}\n) {\n const editable = new MagicString(sourceText);\n applyVirtualAttributeReplacements(editable, replacements);\n\n return editable.generateMap({\n hires: true,\n source: options.sourceFileName,\n includeContent: true,\n });\n}\n\nfunction findReplacementByVirtualPosition(position, replacements) {\n let originalCursor = 0;\n let virtualCursor = 0;\n\n for (const replacement of replacements) {\n const untouchedLength = replacement.start - originalCursor;\n const replacementVirtualStart = virtualCursor + untouchedLength;\n const replacementVirtualEnd =\n replacementVirtualStart + replacement.replacement.length;\n\n if (position >= replacementVirtualStart && position < replacementVirtualEnd) {\n return {\n replacement,\n virtualStart: replacementVirtualStart,\n virtualEnd: replacementVirtualEnd,\n };\n }\n\n originalCursor = replacement.end;\n virtualCursor = replacementVirtualEnd;\n }\n\n return null;\n}\n\nexport function mapOriginalPositionToVirtual(position, replacements = []) {\n if (!replacements.length) {\n return position;\n }\n\n let offset = 0;\n\n for (const replacement of replacements) {\n if (position < replacement.start) {\n break;\n }\n\n const originalLength = replacement.end - replacement.start;\n const replacementLength = replacement.replacement.length;\n\n if (position < replacement.end) {\n return replacement.start + offset;\n }\n\n offset += replacementLength - originalLength;\n }\n\n return position + offset;\n}\n\nexport function remapTextSpanToOriginal(span, replacements = []) {\n if (!span || !replacements.length) {\n return span;\n }\n\n const startMapping = findReplacementByVirtualPosition(span.start, replacements);\n if (startMapping) {\n return {\n start: startMapping.replacement.start,\n length: startMapping.replacement.end - startMapping.replacement.start,\n };\n }\n\n let originalStart = span.start;\n let originalEnd = span.start + span.length;\n\n for (const replacement of replacements) {\n const originalLength = replacement.end - replacement.start;\n const replacementLength = replacement.replacement.length;\n const delta = originalLength - replacementLength;\n const virtualStart = mapOriginalPositionToVirtual(replacement.start, replacements);\n const virtualEnd = virtualStart + replacementLength;\n\n if (virtualEnd <= span.start) {\n originalStart += delta;\n originalEnd += delta;\n continue;\n }\n\n if (virtualStart < span.start) {\n originalStart = replacement.start;\n }\n\n if (virtualStart < span.start + span.length) {\n originalEnd += delta;\n }\n }\n\n return {\n start: originalStart,\n length: Math.max(0, originalEnd - originalStart),\n };\n}\n\nexport function remapVirtualPositionToOriginal(position, replacements = []) {\n const span = remapTextSpanToOriginal({ start: position, length: 0 }, replacements);\n return span.start;\n}\n\nexport const mapVirtualPositionToOriginal = remapVirtualPositionToOriginal;\n\nexport function applyVirtualAttributeReplacements(editable, replacements = []) {\n for (const replacement of replacements) {\n editable.overwrite(replacement.start, replacement.end, replacement.replacement);\n }\n}\n\nexport {\n isReservedVirtualAttributeName,\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../src/index.js"],"sourcesContent":["import MagicString from \"magic-string\";\n\nconst PREFIX_TO_KIND = {\n \"@\": \"event\",\n \".\": \"prop\",\n \"?\": \"bool\",\n};\n\nconst KIND_TO_PREFIX = {\n event: \"@\",\n prop: \".\",\n bool: \"?\",\n};\n\nconst ATTR_NAME_CHAR = /[\\w:-]/;\nconst TAG_NAME_START_CHAR = /[A-Za-z]/;\nconst TAG_NAME_CHAR = /[\\w:.-]/;\nconst MACRO_NAME_START_CHAR = /[A-Za-z$_]/;\nconst MACRO_NAME_CHAR = /[A-Za-z0-9$_]/;\n\nfunction isWhitespace(char) {\n return char === \" \" || char === \"\\t\" || char === \"\\n\" || char === \"\\r\";\n}\n\nfunction isReservedVirtualAttributeName(name) {\n return /^__litsx_(event|prop|bool)_/.test(name);\n}\n\nfunction sanitizeIdentifierTailChar(char) {\n return /[A-Za-z0-9$_]/.test(char) ? char : \"_\";\n}\n\nfunction isIdentifierStartChar(char) {\n return /[A-Za-z$_]/.test(char);\n}\n\nfunction isIdentifierChar(char) {\n return /[A-Za-z0-9$_]/.test(char);\n}\n\nfunction encodeEditorVirtualAttributeName(name) {\n const prefix = name[0];\n const localName = name.slice(1);\n const encodedPrefix = prefix === \"@\" ? \"e\" : prefix === \".\" ? \"p\" : \"b\";\n return `${encodedPrefix}${Array.from(localName, sanitizeIdentifierTailChar).join(\"\")}`;\n}\n\nfunction encodeEditorStaticHoistName(originalName, macroName) {\n return `$${macroName}`;\n}\n\nfunction encodeEditorStaticHoistAssignment(name) {\n return `const $${name} = `;\n}\n\nfunction scanQuotedString(sourceText, start, quote) {\n let index = start + 1;\n\n while (index < sourceText.length) {\n const char = sourceText[index];\n if (char === \"\\\\\") {\n index += 2;\n continue;\n }\n if (char === quote) {\n return index + 1;\n }\n index += 1;\n }\n\n return index;\n}\n\nfunction scanLineComment(sourceText, start) {\n let index = start + 2;\n while (index < sourceText.length && sourceText[index] !== \"\\n\") {\n index += 1;\n }\n return index;\n}\n\nfunction scanBlockComment(sourceText, start) {\n let index = start + 2;\n while (index < sourceText.length) {\n if (sourceText[index] === \"*\" && sourceText[index + 1] === \"/\") {\n return index + 2;\n }\n index += 1;\n }\n return index;\n}\n\nfunction scanTemplateLiteral(sourceText, start) {\n let index = start + 1;\n\n while (index < sourceText.length) {\n const char = sourceText[index];\n if (char === \"\\\\\") {\n index += 2;\n continue;\n }\n if (char === \"`\") {\n return index + 1;\n }\n if (char === \"$\" && sourceText[index + 1] === \"{\") {\n index = scanBalancedBraces(sourceText, index + 1);\n continue;\n }\n index += 1;\n }\n\n return index;\n}\n\nfunction scanBalancedBraces(sourceText, start) {\n let depth = 0;\n let index = start;\n\n while (index < sourceText.length) {\n const char = sourceText[index];\n const next = sourceText[index + 1];\n\n if (char === \"'\" || char === \"\\\"\") {\n index = scanQuotedString(sourceText, index, char);\n continue;\n }\n\n if (char === \"`\") {\n index = scanTemplateLiteral(sourceText, index);\n continue;\n }\n\n if (char === \"/\" && next === \"/\") {\n index = scanLineComment(sourceText, index);\n continue;\n }\n\n if (char === \"/\" && next === \"*\") {\n index = scanBlockComment(sourceText, index);\n continue;\n }\n\n if (char === \"{\") {\n depth += 1;\n index += 1;\n continue;\n }\n\n if (char === \"}\") {\n depth -= 1;\n index += 1;\n if (depth <= 0) {\n return index;\n }\n continue;\n }\n\n index += 1;\n }\n\n return index;\n}\n\nfunction scanBalancedBracesWithJsx(sourceText, start, replacements, encodeAttributeName) {\n let depth = 0;\n let index = start;\n\n while (index < sourceText.length) {\n const char = sourceText[index];\n const next = sourceText[index + 1];\n\n if (char === \"'\" || char === \"\\\"\") {\n index = scanQuotedString(sourceText, index, char);\n continue;\n }\n\n if (char === \"`\") {\n index = scanTemplateLiteral(sourceText, index);\n continue;\n }\n\n if (char === \"/\" && next === \"/\") {\n index = scanLineComment(sourceText, index);\n continue;\n }\n\n if (char === \"/\" && next === \"*\") {\n index = scanBlockComment(sourceText, index);\n continue;\n }\n\n if (char === \"<\" && isLikelyJsxTagStart(sourceText, index)) {\n index = scanJsxElement(sourceText, index, replacements, encodeAttributeName);\n continue;\n }\n\n if (char === \"{\") {\n depth += 1;\n index += 1;\n continue;\n }\n\n if (char === \"}\") {\n depth -= 1;\n index += 1;\n if (depth <= 0) {\n return index;\n }\n continue;\n }\n\n index += 1;\n }\n\n return index;\n}\n\nfunction trimTrailingWhitespaceAndComments(sourceText) {\n let text = sourceText;\n let changed = true;\n\n while (changed) {\n changed = false;\n\n const trimmedWhitespace = text.replace(/\\s+$/u, \"\");\n if (trimmedWhitespace !== text) {\n text = trimmedWhitespace;\n changed = true;\n }\n\n const trimmedLineComment = text.replace(/\\/\\/[^\\n\\r]*$/u, \"\");\n if (trimmedLineComment !== text) {\n text = trimmedLineComment;\n changed = true;\n continue;\n }\n\n const trimmedBlockComment = text.replace(/\\/\\*[\\s\\S]*?\\*\\/$/u, \"\");\n if (trimmedBlockComment !== text) {\n text = trimmedBlockComment;\n changed = true;\n }\n }\n\n return text;\n}\n\nfunction previousSignificantIndex(sourceText, start) {\n let index = start - 1;\n while (index >= 0 && isWhitespace(sourceText[index])) {\n index -= 1;\n }\n return index;\n}\n\nfunction readPreviousWord(sourceText, endIndex) {\n let index = endIndex;\n while (index >= 0 && /[A-Za-z]/.test(sourceText[index])) {\n index -= 1;\n }\n return sourceText.slice(index + 1, endIndex + 1);\n}\n\nfunction isLikelyJsxTagStart(sourceText, index) {\n const next = sourceText[index + 1];\n if (!TAG_NAME_START_CHAR.test(next || \"\")) {\n return false;\n }\n\n const previousIndex = previousSignificantIndex(sourceText, index);\n if (previousIndex < 0) {\n return true;\n }\n\n const previousChar = sourceText[previousIndex];\n if (\"=({[,!?:;>&|\".includes(previousChar)) {\n return true;\n }\n\n const previousWord = readPreviousWord(sourceText, previousIndex);\n return [\"return\", \"case\", \"throw\", \"yield\", \"else\"].includes(previousWord);\n}\n\nfunction readJsxTagName(sourceText, start) {\n let index = start + 1;\n const isClosing = sourceText[index] === \"/\";\n\n if (isClosing) {\n index += 1;\n }\n\n if (!TAG_NAME_START_CHAR.test(sourceText[index] || \"\")) {\n return null;\n }\n\n const nameStart = index;\n\n while (index < sourceText.length && TAG_NAME_CHAR.test(sourceText[index])) {\n index += 1;\n }\n\n return {\n name: sourceText.slice(nameStart, index),\n isClosing,\n end: index,\n };\n}\n\nfunction scanJsxTag(sourceText, start, replacements, encodeAttributeName) {\n const tag = readJsxTagName(sourceText, start);\n\n if (!tag) {\n return {\n end: start + 1,\n tagName: null,\n isClosing: false,\n selfClosing: false,\n };\n }\n\n let index = tag.end;\n\n if (tag.isClosing) {\n while (index < sourceText.length) {\n if (sourceText[index] === \">\") {\n return {\n end: index + 1,\n tagName: tag.name,\n isClosing: true,\n selfClosing: false,\n };\n }\n\n index += 1;\n }\n\n return {\n end: index,\n tagName: tag.name,\n isClosing: true,\n selfClosing: false,\n };\n }\n\n function scanAttributeValue(valueStart) {\n let valueIndex = valueStart;\n\n while (valueIndex < sourceText.length && isWhitespace(sourceText[valueIndex])) {\n valueIndex += 1;\n }\n\n if (valueIndex >= sourceText.length) {\n return valueIndex;\n }\n\n const valueChar = sourceText[valueIndex];\n if (valueChar === \"{\") {\n return scanBalancedBracesWithJsx(\n sourceText,\n valueIndex,\n replacements,\n encodeAttributeName\n );\n }\n\n if (valueChar === \"'\" || valueChar === \"\\\"\") {\n return scanQuotedString(sourceText, valueIndex, valueChar);\n }\n\n while (\n valueIndex < sourceText.length &&\n !isWhitespace(sourceText[valueIndex]) &&\n sourceText[valueIndex] !== \">\" &&\n !(sourceText[valueIndex] === \"/\" && sourceText[valueIndex + 1] === \">\")\n ) {\n valueIndex += 1;\n }\n\n return valueIndex;\n }\n\n while (index < sourceText.length) {\n const char = sourceText[index];\n const next = sourceText[index + 1];\n\n if (char === \">\") {\n return {\n end: index + 1,\n tagName: tag.name,\n isClosing: false,\n selfClosing: false,\n };\n }\n\n if (char === \"/\" && next === \">\") {\n return {\n end: index + 2,\n tagName: tag.name,\n isClosing: false,\n selfClosing: true,\n };\n }\n\n if (isWhitespace(char)) {\n index += 1;\n continue;\n }\n\n if (char === \"{\") {\n index = scanBalancedBracesWithJsx(\n sourceText,\n index,\n replacements,\n encodeAttributeName\n );\n continue;\n }\n\n if (char === \"'\" || char === \"\\\"\") {\n index = scanQuotedString(sourceText, index, char);\n continue;\n }\n\n if (Object.hasOwn(PREFIX_TO_KIND, char) && ATTR_NAME_CHAR.test(next || \"\")) {\n const attrStart = index;\n index += 1;\n\n while (index < sourceText.length && ATTR_NAME_CHAR.test(sourceText[index])) {\n index += 1;\n }\n\n const originalName = sourceText.slice(attrStart, index);\n replacements.push({\n start: attrStart,\n end: index,\n originalName,\n replacement: encodeAttributeName(originalName),\n });\n\n while (index < sourceText.length && isWhitespace(sourceText[index])) {\n index += 1;\n }\n if (sourceText[index] === \"=\") {\n index = scanAttributeValue(index + 1);\n }\n continue;\n }\n\n const attrStart = index;\n while (\n index < sourceText.length &&\n !isWhitespace(sourceText[index]) &&\n sourceText[index] !== \"=\" &&\n sourceText[index] !== \">\" &&\n !(sourceText[index] === \"/\" && sourceText[index + 1] === \">\")\n ) {\n index += 1;\n }\n\n if (index === attrStart) {\n index += 1;\n continue;\n }\n\n while (index < sourceText.length && isWhitespace(sourceText[index])) {\n index += 1;\n }\n if (sourceText[index] === \"=\") {\n index = scanAttributeValue(index + 1);\n }\n }\n\n return {\n end: index,\n tagName: tag.name,\n isClosing: false,\n selfClosing: false,\n };\n}\n\nfunction scanJsxElement(sourceText, start, replacements, encodeAttributeName) {\n const openingTag = scanJsxTag(sourceText, start, replacements, encodeAttributeName);\n\n if (\n openingTag.isClosing ||\n openingTag.selfClosing ||\n !openingTag.tagName\n ) {\n return openingTag.end;\n }\n\n let index = openingTag.end;\n\n while (index < sourceText.length) {\n const char = sourceText[index];\n const next = sourceText[index + 1];\n\n if (char === \"'\" || char === \"\\\"\") {\n index = scanQuotedString(sourceText, index, char);\n continue;\n }\n\n if (char === \"`\") {\n index = scanTemplateLiteral(sourceText, index);\n continue;\n }\n\n if (char === \"/\" && next === \"/\") {\n index = scanLineComment(sourceText, index);\n continue;\n }\n\n if (char === \"/\" && next === \"*\") {\n index = scanBlockComment(sourceText, index);\n continue;\n }\n\n if (char === \"{\") {\n index = scanBalancedBracesWithJsx(\n sourceText,\n index,\n replacements,\n encodeAttributeName\n );\n continue;\n }\n\n if (char === \"<\") {\n const nestedTag = readJsxTagName(sourceText, index);\n\n if (!nestedTag) {\n index += 1;\n continue;\n }\n\n if (nestedTag.isClosing && nestedTag.name === openingTag.tagName) {\n return scanJsxTag(sourceText, index, replacements, encodeAttributeName).end;\n }\n\n if (!nestedTag.isClosing) {\n index = scanJsxElement(sourceText, index, replacements, encodeAttributeName);\n continue;\n }\n }\n\n index += 1;\n }\n\n return index;\n}\n\nexport function encodeVirtualAttributeName(name) {\n const prefix = name[0];\n const localName = name.slice(1);\n const kind = PREFIX_TO_KIND[prefix];\n\n if (!kind) {\n return name;\n }\n\n return `__litsx_${kind}_${localName}`;\n}\n\nexport function decodeVirtualAttributeName(name) {\n const match = /^__litsx_(event|prop|bool)_(.+)$/.exec(name);\n\n if (!match) {\n return null;\n }\n\n const [, kind, localName] = match;\n return `${KIND_TO_PREFIX[kind]}${localName}`;\n}\n\nexport function decodeVirtualStaticHoistName(name) {\n const match = /^__litsx_static_([A-Za-z$_][A-Za-z0-9$_]*)$/.exec(name);\n\n if (!match) {\n return null;\n }\n\n return `static ${match[1]}`;\n}\n\nexport function remapVirtualText(text) {\n if (typeof text !== \"string\") {\n return text;\n }\n\n return text\n .replace(/__litsx_(event|prop|bool)_[\\w:-]+/g, (name) => (\n decodeVirtualAttributeName(name) ?? name\n ))\n .replace(/__litsx_static_[A-Za-z$_][A-Za-z0-9$_]*/g, (name) => (\n decodeVirtualStaticHoistName(name) ?? name\n ));\n}\n\nexport function looksLikeLitsxJsx(sourceText) {\n return (\n /<[\\w.-]+[^>]*\\s(?:[@.?][\\w:-]+)/m.test(sourceText) ||\n /(?:^|[;{}]\\s*)\\^[A-Za-z$_][A-Za-z0-9$_]*/m.test(sourceText) ||\n /^\\s*\\^[A-Za-z$_][A-Za-z0-9$_]*/m.test(sourceText) ||\n /(?:^|[;{}]\\s*)static\\s+[A-Za-z$_][A-Za-z0-9$_]*\\s*=/m.test(sourceText) ||\n /^\\s*static\\s+[A-Za-z$_][A-Za-z0-9$_]*\\s*=/m.test(sourceText)\n );\n}\n\nfunction isLikelyStaticMacroStart(sourceText, index) {\n const next = sourceText[index + 1];\n if (!MACRO_NAME_START_CHAR.test(next || \"\")) {\n return false;\n }\n\n const prefix = trimTrailingWhitespaceAndComments(sourceText.slice(0, index));\n if (!prefix) {\n return true;\n }\n\n const previousChar = prefix[prefix.length - 1];\n return previousChar === \";\" || previousChar === \"{\" || previousChar === \"}\";\n}\n\nfunction scanStaticMacro(sourceText, start, replacements, encodeMacroName) {\n let index = start + 1;\n\n while (index < sourceText.length && MACRO_NAME_CHAR.test(sourceText[index])) {\n index += 1;\n }\n\n const originalName = sourceText.slice(start, index);\n const macroName = originalName.slice(1);\n\n if (macroName === \"mixins\") {\n return index;\n }\n\n replacements.push({\n start,\n end: index,\n originalName,\n replacement: encodeMacroName(originalName, macroName),\n });\n\n return index;\n}\n\nfunction isLikelyStaticHoistAssignmentStart(sourceText, index) {\n if (sourceText.slice(index, index + 6) !== \"static\") {\n return false;\n }\n\n const previousChar = sourceText[index - 1];\n if (previousChar && /[A-Za-z0-9$_]/.test(previousChar)) {\n return false;\n }\n\n const next = sourceText[index + 6];\n if (!isWhitespace(next || \"\")) {\n return false;\n }\n\n const prefix = trimTrailingWhitespaceAndComments(sourceText.slice(0, index));\n if (!prefix) {\n return true;\n }\n\n const previousSignificantChar = prefix[prefix.length - 1];\n return (\n previousSignificantChar === \";\" ||\n previousSignificantChar === \"{\" ||\n previousSignificantChar === \"}\"\n );\n}\n\nfunction readStaticHoistAssignment(sourceText, start) {\n let index = start + 6;\n\n while (index < sourceText.length && isWhitespace(sourceText[index])) {\n index += 1;\n }\n\n const nameStart = index;\n if (!MACRO_NAME_START_CHAR.test(sourceText[index] || \"\")) {\n return null;\n }\n\n index += 1;\n while (index < sourceText.length && MACRO_NAME_CHAR.test(sourceText[index])) {\n index += 1;\n }\n\n const macroName = sourceText.slice(nameStart, index);\n\n while (index < sourceText.length && isWhitespace(sourceText[index])) {\n index += 1;\n }\n\n if (sourceText[index] !== \"=\") {\n return null;\n }\n\n index += 1;\n while (index < sourceText.length && isWhitespace(sourceText[index])) {\n index += 1;\n }\n\n return {\n macroName,\n valueStart: index,\n };\n}\n\nfunction scanStaticHoistAssignment(sourceText, start, replacements, strategy) {\n const assignment = readStaticHoistAssignment(sourceText, start);\n if (!assignment) {\n return start + 1;\n }\n\n const { macroName, valueStart } = assignment;\n\n let index = valueStart;\n let parenDepth = 0;\n let bracketDepth = 0;\n let braceDepth = 0;\n let statementEnd = sourceText.length;\n\n while (index < sourceText.length) {\n const char = sourceText[index];\n const next = sourceText[index + 1];\n\n if (char === \"'\" || char === \"\\\"\") {\n index = scanQuotedString(sourceText, index, char);\n continue;\n }\n\n if (char === \"`\") {\n index = scanTemplateLiteral(sourceText, index);\n continue;\n }\n\n if (char === \"/\" && next === \"/\") {\n index = scanLineComment(sourceText, index);\n continue;\n }\n\n if (char === \"/\" && next === \"*\") {\n index = scanBlockComment(sourceText, index);\n continue;\n }\n\n if (char === \"(\") {\n parenDepth += 1;\n index += 1;\n continue;\n }\n\n if (char === \")\") {\n parenDepth = Math.max(0, parenDepth - 1);\n index += 1;\n continue;\n }\n\n if (char === \"[\") {\n bracketDepth += 1;\n index += 1;\n continue;\n }\n\n if (char === \"]\") {\n bracketDepth = Math.max(0, bracketDepth - 1);\n index += 1;\n continue;\n }\n\n if (char === \"{\") {\n braceDepth += 1;\n index += 1;\n continue;\n }\n\n if (char === \"}\") {\n if (parenDepth === 0 && bracketDepth === 0 && braceDepth === 0) {\n statementEnd = index;\n break;\n }\n\n braceDepth = Math.max(0, braceDepth - 1);\n index += 1;\n continue;\n }\n\n if (\n char === \";\" &&\n parenDepth === 0 &&\n bracketDepth === 0 &&\n braceDepth === 0\n ) {\n statementEnd = index + 1;\n break;\n }\n\n index += 1;\n }\n\n const hasSemicolon = statementEnd > valueStart && sourceText[statementEnd - 1] === \";\";\n const expressionSegment = sourceText.slice(\n valueStart,\n hasSemicolon ? statementEnd - 1 : statementEnd,\n );\n const statementBody = sourceText.slice(valueStart, statementEnd);\n const expressionText = trimTrailingWhitespaceAndComments(expressionSegment);\n const trailingText = statementBody.slice(expressionSegment.length);\n\n replacements.push({\n start,\n end: statementEnd,\n originalName: `static ${macroName}`,\n replacement:\n strategy === \"editor\"\n ? `${encodeEditorStaticHoistAssignment(macroName)}${statementBody}`\n : `__litsx_static_${macroName}(${expressionText})${trailingText}`,\n });\n\n return statementEnd;\n}\n\nexport function createVirtualLitsxJsxSource(sourceText, options = {}) {\n const strategy = options.strategy === \"editor\" ? \"editor\" : \"compiler\";\n const includeSourceMap = options.sourceMap === true;\n const encodeAttributeName =\n strategy === \"editor\"\n ? encodeEditorVirtualAttributeName\n : encodeVirtualAttributeName;\n const encodeMacroName =\n strategy === \"editor\"\n ? encodeEditorStaticHoistName\n : (_originalName, macroName) => `__litsx_static_${macroName}`;\n\n if (!sourceText || typeof sourceText !== \"string\") {\n return {\n code: sourceText,\n map: null,\n replacements: [],\n };\n }\n\n if (strategy === \"compiler\" && sourceText.includes(\"__litsx_\")) {\n return {\n code: sourceText,\n map: null,\n replacements: [],\n collision: true,\n };\n }\n\n if (!looksLikeLitsxJsx(sourceText)) {\n return {\n code: sourceText,\n map: null,\n replacements: [],\n };\n }\n\n const replacements = [];\n let index = 0;\n let braceDepth = 0;\n const blockStack = [];\n let pendingClassBody = false;\n\n while (index < sourceText.length) {\n const char = sourceText[index];\n const next = sourceText[index + 1];\n\n if (char === \"'\" || char === \"\\\"\") {\n index = scanQuotedString(sourceText, index, char);\n continue;\n }\n\n if (char === \"`\") {\n index = scanTemplateLiteral(sourceText, index);\n continue;\n }\n\n if (char === \"/\" && next === \"/\") {\n index = scanLineComment(sourceText, index);\n continue;\n }\n\n if (char === \"/\" && next === \"*\") {\n index = scanBlockComment(sourceText, index);\n continue;\n }\n\n if (char === \"<\" && isLikelyJsxTagStart(sourceText, index)) {\n index = scanJsxElement(sourceText, index, replacements, encodeAttributeName);\n continue;\n }\n\n if (char === \"^\" && isLikelyStaticMacroStart(sourceText, index)) {\n index = scanStaticMacro(sourceText, index, replacements, encodeMacroName);\n continue;\n }\n\n if (\n char === \"s\" &&\n blockStack[blockStack.length - 1] !== \"class\" &&\n isLikelyStaticHoistAssignmentStart(sourceText, index)\n ) {\n index = scanStaticHoistAssignment(sourceText, index, replacements, strategy);\n continue;\n }\n\n if (isIdentifierStartChar(char)) {\n const wordStart = index;\n index += 1;\n while (index < sourceText.length && isIdentifierChar(sourceText[index])) {\n index += 1;\n }\n\n const word = sourceText.slice(wordStart, index);\n if (word === \"class\") {\n let lookahead = index;\n while (lookahead < sourceText.length && isWhitespace(sourceText[lookahead])) {\n lookahead += 1;\n }\n\n pendingClassBody = sourceText[lookahead] !== \":\";\n }\n\n continue;\n }\n\n if (char === \"{\") {\n braceDepth += 1;\n blockStack.push(pendingClassBody ? \"class\" : \"block\");\n pendingClassBody = false;\n index += 1;\n continue;\n }\n\n if (char === \"}\") {\n braceDepth = Math.max(0, braceDepth - 1);\n blockStack.pop();\n pendingClassBody = false;\n index += 1;\n continue;\n }\n\n if (char === \";\" || char === \"=\") {\n pendingClassBody = false;\n }\n\n index += 1;\n }\n\n if (!replacements.length) {\n return {\n code: sourceText,\n map: null,\n replacements: [],\n };\n }\n\n let lastIndex = 0;\n let transformed = \"\";\n\n for (const replacement of replacements) {\n transformed += sourceText.slice(lastIndex, replacement.start);\n transformed += replacement.replacement;\n lastIndex = replacement.end;\n }\n\n transformed += sourceText.slice(lastIndex);\n\n return {\n code: transformed,\n map: includeSourceMap\n ? createVirtualLitsxJsxSourceMap(sourceText, replacements, {\n sourceFileName: options.sourceFileName,\n })\n : null,\n replacements,\n };\n}\n\nexport function createVirtualLitsxJsxSourceMap(\n sourceText,\n replacements = [],\n options = {}\n) {\n const editable = new MagicString(sourceText);\n applyVirtualAttributeReplacements(editable, replacements);\n\n return editable.generateMap({\n hires: true,\n source: options.sourceFileName,\n includeContent: true,\n });\n}\n\nfunction findReplacementByVirtualPosition(position, replacements) {\n let originalCursor = 0;\n let virtualCursor = 0;\n\n for (const replacement of replacements) {\n const untouchedLength = replacement.start - originalCursor;\n const replacementVirtualStart = virtualCursor + untouchedLength;\n const replacementVirtualEnd =\n replacementVirtualStart + replacement.replacement.length;\n\n if (position >= replacementVirtualStart && position < replacementVirtualEnd) {\n return {\n replacement,\n virtualStart: replacementVirtualStart,\n virtualEnd: replacementVirtualEnd,\n };\n }\n\n originalCursor = replacement.end;\n virtualCursor = replacementVirtualEnd;\n }\n\n return null;\n}\n\nexport function mapOriginalPositionToVirtual(position, replacements = []) {\n if (!replacements.length) {\n return position;\n }\n\n let offset = 0;\n\n for (const replacement of replacements) {\n if (position < replacement.start) {\n break;\n }\n\n const originalLength = replacement.end - replacement.start;\n const replacementLength = replacement.replacement.length;\n\n if (position < replacement.end) {\n return replacement.start + offset;\n }\n\n offset += replacementLength - originalLength;\n }\n\n return position + offset;\n}\n\nexport function remapTextSpanToOriginal(span, replacements = []) {\n if (!span || !replacements.length) {\n return span;\n }\n\n const startMapping = findReplacementByVirtualPosition(span.start, replacements);\n if (startMapping) {\n return {\n start: startMapping.replacement.start,\n length: startMapping.replacement.end - startMapping.replacement.start,\n };\n }\n\n let originalStart = span.start;\n let originalEnd = span.start + span.length;\n\n for (const replacement of replacements) {\n const originalLength = replacement.end - replacement.start;\n const replacementLength = replacement.replacement.length;\n const delta = originalLength - replacementLength;\n const virtualStart = mapOriginalPositionToVirtual(replacement.start, replacements);\n const virtualEnd = virtualStart + replacementLength;\n\n if (virtualEnd <= span.start) {\n originalStart += delta;\n originalEnd += delta;\n continue;\n }\n\n if (virtualStart < span.start) {\n originalStart = replacement.start;\n }\n\n if (virtualStart < span.start + span.length) {\n originalEnd += delta;\n }\n }\n\n return {\n start: originalStart,\n length: Math.max(0, originalEnd - originalStart),\n };\n}\n\nexport function remapVirtualPositionToOriginal(position, replacements = []) {\n const span = remapTextSpanToOriginal({ start: position, length: 0 }, replacements);\n return span.start;\n}\n\nexport const mapVirtualPositionToOriginal = remapVirtualPositionToOriginal;\n\nexport function applyVirtualAttributeReplacements(editable, replacements = []) {\n for (const replacement of replacements) {\n editable.overwrite(replacement.start, replacement.end, replacement.replacement);\n }\n}\n\nexport {\n isReservedVirtualAttributeName,\n};\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@litsx/jsx-authoring",
3
- "version": "0.2.1",
3
+ "version": "0.3.0",
4
4
  "description": "Shared authored JSX language utilities for Lit sx",
5
5
  "author": "LitX Team",
6
6
  "homepage": "https://github.com/litsxdev/litsx/tree/main/packages/jsx-authoring",
@@ -41,7 +41,7 @@
41
41
  "README.md"
42
42
  ],
43
43
  "scripts": {
44
- "build": "../../node_modules/.bin/rollup --config rollup.config.mjs",
44
+ "build": "../../node_modules/.bin/rollup --config rollup.config.js",
45
45
  "prepack": "yarn build"
46
46
  }
47
47
  }
package/src/index.js CHANGED
@@ -30,6 +30,14 @@ function sanitizeIdentifierTailChar(char) {
30
30
  return /[A-Za-z0-9$_]/.test(char) ? char : "_";
31
31
  }
32
32
 
33
+ function isIdentifierStartChar(char) {
34
+ return /[A-Za-z$_]/.test(char);
35
+ }
36
+
37
+ function isIdentifierChar(char) {
38
+ return /[A-Za-z0-9$_]/.test(char);
39
+ }
40
+
33
41
  function encodeEditorVirtualAttributeName(name) {
34
42
  const prefix = name[0];
35
43
  const localName = name.slice(1);
@@ -41,6 +49,10 @@ function encodeEditorStaticHoistName(originalName, macroName) {
41
49
  return `$${macroName}`;
42
50
  }
43
51
 
52
+ function encodeEditorStaticHoistAssignment(name) {
53
+ return `const $${name} = `;
54
+ }
55
+
44
56
  function scanQuotedString(sourceText, start, quote) {
45
57
  let index = start + 1;
46
58
 
@@ -567,7 +579,7 @@ export function decodeVirtualStaticHoistName(name) {
567
579
  return null;
568
580
  }
569
581
 
570
- return `^${match[1]}`;
582
+ return `static ${match[1]}`;
571
583
  }
572
584
 
573
585
  export function remapVirtualText(text) {
@@ -588,7 +600,9 @@ export function looksLikeLitsxJsx(sourceText) {
588
600
  return (
589
601
  /<[\w.-]+[^>]*\s(?:[@.?][\w:-]+)/m.test(sourceText) ||
590
602
  /(?:^|[;{}]\s*)\^[A-Za-z$_][A-Za-z0-9$_]*/m.test(sourceText) ||
591
- /^\s*\^[A-Za-z$_][A-Za-z0-9$_]*/m.test(sourceText)
603
+ /^\s*\^[A-Za-z$_][A-Za-z0-9$_]*/m.test(sourceText) ||
604
+ /(?:^|[;{}]\s*)static\s+[A-Za-z$_][A-Za-z0-9$_]*\s*=/m.test(sourceText) ||
605
+ /^\s*static\s+[A-Za-z$_][A-Za-z0-9$_]*\s*=/m.test(sourceText)
592
606
  );
593
607
  }
594
608
 
@@ -631,6 +645,186 @@ function scanStaticMacro(sourceText, start, replacements, encodeMacroName) {
631
645
  return index;
632
646
  }
633
647
 
648
+ function isLikelyStaticHoistAssignmentStart(sourceText, index) {
649
+ if (sourceText.slice(index, index + 6) !== "static") {
650
+ return false;
651
+ }
652
+
653
+ const previousChar = sourceText[index - 1];
654
+ if (previousChar && /[A-Za-z0-9$_]/.test(previousChar)) {
655
+ return false;
656
+ }
657
+
658
+ const next = sourceText[index + 6];
659
+ if (!isWhitespace(next || "")) {
660
+ return false;
661
+ }
662
+
663
+ const prefix = trimTrailingWhitespaceAndComments(sourceText.slice(0, index));
664
+ if (!prefix) {
665
+ return true;
666
+ }
667
+
668
+ const previousSignificantChar = prefix[prefix.length - 1];
669
+ return (
670
+ previousSignificantChar === ";" ||
671
+ previousSignificantChar === "{" ||
672
+ previousSignificantChar === "}"
673
+ );
674
+ }
675
+
676
+ function readStaticHoistAssignment(sourceText, start) {
677
+ let index = start + 6;
678
+
679
+ while (index < sourceText.length && isWhitespace(sourceText[index])) {
680
+ index += 1;
681
+ }
682
+
683
+ const nameStart = index;
684
+ if (!MACRO_NAME_START_CHAR.test(sourceText[index] || "")) {
685
+ return null;
686
+ }
687
+
688
+ index += 1;
689
+ while (index < sourceText.length && MACRO_NAME_CHAR.test(sourceText[index])) {
690
+ index += 1;
691
+ }
692
+
693
+ const macroName = sourceText.slice(nameStart, index);
694
+
695
+ while (index < sourceText.length && isWhitespace(sourceText[index])) {
696
+ index += 1;
697
+ }
698
+
699
+ if (sourceText[index] !== "=") {
700
+ return null;
701
+ }
702
+
703
+ index += 1;
704
+ while (index < sourceText.length && isWhitespace(sourceText[index])) {
705
+ index += 1;
706
+ }
707
+
708
+ return {
709
+ macroName,
710
+ valueStart: index,
711
+ };
712
+ }
713
+
714
+ function scanStaticHoistAssignment(sourceText, start, replacements, strategy) {
715
+ const assignment = readStaticHoistAssignment(sourceText, start);
716
+ if (!assignment) {
717
+ return start + 1;
718
+ }
719
+
720
+ const { macroName, valueStart } = assignment;
721
+
722
+ let index = valueStart;
723
+ let parenDepth = 0;
724
+ let bracketDepth = 0;
725
+ let braceDepth = 0;
726
+ let statementEnd = sourceText.length;
727
+
728
+ while (index < sourceText.length) {
729
+ const char = sourceText[index];
730
+ const next = sourceText[index + 1];
731
+
732
+ if (char === "'" || char === "\"") {
733
+ index = scanQuotedString(sourceText, index, char);
734
+ continue;
735
+ }
736
+
737
+ if (char === "`") {
738
+ index = scanTemplateLiteral(sourceText, index);
739
+ continue;
740
+ }
741
+
742
+ if (char === "/" && next === "/") {
743
+ index = scanLineComment(sourceText, index);
744
+ continue;
745
+ }
746
+
747
+ if (char === "/" && next === "*") {
748
+ index = scanBlockComment(sourceText, index);
749
+ continue;
750
+ }
751
+
752
+ if (char === "(") {
753
+ parenDepth += 1;
754
+ index += 1;
755
+ continue;
756
+ }
757
+
758
+ if (char === ")") {
759
+ parenDepth = Math.max(0, parenDepth - 1);
760
+ index += 1;
761
+ continue;
762
+ }
763
+
764
+ if (char === "[") {
765
+ bracketDepth += 1;
766
+ index += 1;
767
+ continue;
768
+ }
769
+
770
+ if (char === "]") {
771
+ bracketDepth = Math.max(0, bracketDepth - 1);
772
+ index += 1;
773
+ continue;
774
+ }
775
+
776
+ if (char === "{") {
777
+ braceDepth += 1;
778
+ index += 1;
779
+ continue;
780
+ }
781
+
782
+ if (char === "}") {
783
+ if (parenDepth === 0 && bracketDepth === 0 && braceDepth === 0) {
784
+ statementEnd = index;
785
+ break;
786
+ }
787
+
788
+ braceDepth = Math.max(0, braceDepth - 1);
789
+ index += 1;
790
+ continue;
791
+ }
792
+
793
+ if (
794
+ char === ";" &&
795
+ parenDepth === 0 &&
796
+ bracketDepth === 0 &&
797
+ braceDepth === 0
798
+ ) {
799
+ statementEnd = index + 1;
800
+ break;
801
+ }
802
+
803
+ index += 1;
804
+ }
805
+
806
+ const hasSemicolon = statementEnd > valueStart && sourceText[statementEnd - 1] === ";";
807
+ const expressionSegment = sourceText.slice(
808
+ valueStart,
809
+ hasSemicolon ? statementEnd - 1 : statementEnd,
810
+ );
811
+ const statementBody = sourceText.slice(valueStart, statementEnd);
812
+ const expressionText = trimTrailingWhitespaceAndComments(expressionSegment);
813
+ const trailingText = statementBody.slice(expressionSegment.length);
814
+
815
+ replacements.push({
816
+ start,
817
+ end: statementEnd,
818
+ originalName: `static ${macroName}`,
819
+ replacement:
820
+ strategy === "editor"
821
+ ? `${encodeEditorStaticHoistAssignment(macroName)}${statementBody}`
822
+ : `__litsx_static_${macroName}(${expressionText})${trailingText}`,
823
+ });
824
+
825
+ return statementEnd;
826
+ }
827
+
634
828
  export function createVirtualLitsxJsxSource(sourceText, options = {}) {
635
829
  const strategy = options.strategy === "editor" ? "editor" : "compiler";
636
830
  const includeSourceMap = options.sourceMap === true;
@@ -671,6 +865,8 @@ export function createVirtualLitsxJsxSource(sourceText, options = {}) {
671
865
  const replacements = [];
672
866
  let index = 0;
673
867
  let braceDepth = 0;
868
+ const blockStack = [];
869
+ let pendingClassBody = false;
674
870
 
675
871
  while (index < sourceText.length) {
676
872
  const char = sourceText[index];
@@ -706,18 +902,55 @@ export function createVirtualLitsxJsxSource(sourceText, options = {}) {
706
902
  continue;
707
903
  }
708
904
 
905
+ if (
906
+ char === "s" &&
907
+ blockStack[blockStack.length - 1] !== "class" &&
908
+ isLikelyStaticHoistAssignmentStart(sourceText, index)
909
+ ) {
910
+ index = scanStaticHoistAssignment(sourceText, index, replacements, strategy);
911
+ continue;
912
+ }
913
+
914
+ if (isIdentifierStartChar(char)) {
915
+ const wordStart = index;
916
+ index += 1;
917
+ while (index < sourceText.length && isIdentifierChar(sourceText[index])) {
918
+ index += 1;
919
+ }
920
+
921
+ const word = sourceText.slice(wordStart, index);
922
+ if (word === "class") {
923
+ let lookahead = index;
924
+ while (lookahead < sourceText.length && isWhitespace(sourceText[lookahead])) {
925
+ lookahead += 1;
926
+ }
927
+
928
+ pendingClassBody = sourceText[lookahead] !== ":";
929
+ }
930
+
931
+ continue;
932
+ }
933
+
709
934
  if (char === "{") {
710
935
  braceDepth += 1;
936
+ blockStack.push(pendingClassBody ? "class" : "block");
937
+ pendingClassBody = false;
711
938
  index += 1;
712
939
  continue;
713
940
  }
714
941
 
715
942
  if (char === "}") {
716
943
  braceDepth = Math.max(0, braceDepth - 1);
944
+ blockStack.pop();
945
+ pendingClassBody = false;
717
946
  index += 1;
718
947
  continue;
719
948
  }
720
949
 
950
+ if (char === ";" || char === "=") {
951
+ pendingClassBody = false;
952
+ }
953
+
721
954
  index += 1;
722
955
  }
723
956