@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 +235 -2
- package/dist/index.cjs.map +1 -1
- package/package.json +2 -2
- package/src/index.js +235 -2
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
|
|
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
|
|
package/dist/index.cjs.map
CHANGED
|
@@ -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.
|
|
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.
|
|
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
|
|
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
|
|