@camerontaylor/paseo-highlight 0.8.0-fork.1

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.
Files changed (48) hide show
  1. package/dist/astro/parser.d.ts +11 -0
  2. package/dist/astro/parser.js +228 -0
  3. package/dist/colors.d.ts +4 -0
  4. package/dist/colors.js +45 -0
  5. package/dist/csharp/highlight.d.ts +2 -0
  6. package/dist/csharp/highlight.js +22 -0
  7. package/dist/csharp/language.d.ts +3 -0
  8. package/dist/csharp/language.js +21 -0
  9. package/dist/csharp/parser.d.ts +3 -0
  10. package/dist/csharp/parser.js +150 -0
  11. package/dist/csharp/terms.d.ts +7 -0
  12. package/dist/csharp/terms.js +12 -0
  13. package/dist/csharp/tokens.d.ts +4 -0
  14. package/dist/csharp/tokens.js +73 -0
  15. package/dist/highlighter.d.ts +4 -0
  16. package/dist/highlighter.js +55 -0
  17. package/dist/index.d.ts +8 -0
  18. package/dist/index.js +6 -0
  19. package/dist/nix/highlight.d.ts +2 -0
  20. package/dist/nix/highlight.js +21 -0
  21. package/dist/nix/language.d.ts +3 -0
  22. package/dist/nix/language.js +32 -0
  23. package/dist/nix/parser.d.ts +3 -0
  24. package/dist/nix/parser.js +45 -0
  25. package/dist/nix/terms.d.ts +9 -0
  26. package/dist/nix/terms.js +14 -0
  27. package/dist/nix/tokens.d.ts +4 -0
  28. package/dist/nix/tokens.js +70 -0
  29. package/dist/parsers.d.ts +7 -0
  30. package/dist/parsers.js +101 -0
  31. package/dist/svelte/highlight.d.ts +2 -0
  32. package/dist/svelte/highlight.js +54 -0
  33. package/dist/svelte/nesting.d.ts +9 -0
  34. package/dist/svelte/nesting.js +97 -0
  35. package/dist/svelte/parser.d.ts +3 -0
  36. package/dist/svelte/parser.js +204 -0
  37. package/dist/svelte/terms.d.ts +24 -0
  38. package/dist/svelte/terms.js +24 -0
  39. package/dist/svelte/tokens.d.ts +16 -0
  40. package/dist/svelte/tokens.js +509 -0
  41. package/dist/syntax-roles.d.ts +10 -0
  42. package/dist/syntax-roles.js +50 -0
  43. package/dist/themes.d.ts +12 -0
  44. package/dist/themes.js +235 -0
  45. package/dist/types.d.ts +6 -0
  46. package/dist/types.js +2 -0
  47. package/package.json +55 -0
  48. package/src/astro/LICENSE +21 -0
@@ -0,0 +1,55 @@
1
+ import { highlightTree } from "@lezer/highlight";
2
+ import { getParserForFile } from "./parsers.js";
3
+ import { staticSyntaxHighlighter } from "./syntax-roles.js";
4
+ export function highlightCode(code, filename) {
5
+ const parser = getParserForFile(filename);
6
+ if (!parser) {
7
+ return code.split("\n").map((line) => [{ text: line, style: null }]);
8
+ }
9
+ const tree = parser.parse(code);
10
+ const lines = code.split("\n");
11
+ const result = [];
12
+ for (let i = 0; i < lines.length; i++) {
13
+ result.push([]);
14
+ }
15
+ // Build a map of character positions to styles
16
+ const styleMap = Array.from({ length: code.length }, () => null);
17
+ highlightTree(tree, staticSyntaxHighlighter, (from, to, classes) => {
18
+ for (let i = from; i < to && i < styleMap.length; i++) {
19
+ styleMap[i] = classes;
20
+ }
21
+ });
22
+ // Convert style map to tokens per line
23
+ let pos = 0;
24
+ for (let lineIndex = 0; lineIndex < lines.length; lineIndex++) {
25
+ const line = lines[lineIndex];
26
+ if (line.length === 0) {
27
+ result[lineIndex].push({ text: "", style: null });
28
+ pos++; // skip newline
29
+ continue;
30
+ }
31
+ let currentToken = { text: "", style: styleMap[pos] };
32
+ for (let i = 0; i < line.length; i++) {
33
+ const charStyle = styleMap[pos + i];
34
+ if (charStyle === currentToken.style) {
35
+ currentToken.text += line[i];
36
+ }
37
+ else {
38
+ if (currentToken.text) {
39
+ result[lineIndex].push(currentToken);
40
+ }
41
+ currentToken = { text: line[i], style: charStyle };
42
+ }
43
+ }
44
+ if (currentToken.text) {
45
+ result[lineIndex].push(currentToken);
46
+ }
47
+ pos += line.length + 1; // +1 for newline
48
+ }
49
+ return result;
50
+ }
51
+ export function highlightLine(line, filename) {
52
+ const result = highlightCode(line, filename);
53
+ return result[0] ?? [{ text: line, style: null }];
54
+ }
55
+ //# sourceMappingURL=highlighter.js.map
@@ -0,0 +1,8 @@
1
+ export type { HighlightStyle, HighlightToken } from "./types.js";
2
+ export { getLanguageForFile, getParserForFile, isLanguageSupported, getSupportedExtensions, } from "./parsers.js";
3
+ export { createCodeMirrorHighlightStyle } from "./syntax-roles.js";
4
+ export { highlightCode, highlightLine } from "./highlighter.js";
5
+ export { darkHighlightColors, lightHighlightColors } from "./colors.js";
6
+ export type { SyntaxThemeId, SyntaxThemeOption, SyntaxColors } from "./themes.js";
7
+ export { SYNTAX_THEME_IDS, SYNTAX_THEME_OPTIONS, isSyntaxThemeId, resolveSyntaxColors, } from "./themes.js";
8
+ //# sourceMappingURL=index.d.ts.map
package/dist/index.js ADDED
@@ -0,0 +1,6 @@
1
+ export { getLanguageForFile, getParserForFile, isLanguageSupported, getSupportedExtensions, } from "./parsers.js";
2
+ export { createCodeMirrorHighlightStyle } from "./syntax-roles.js";
3
+ export { highlightCode, highlightLine } from "./highlighter.js";
4
+ export { darkHighlightColors, lightHighlightColors } from "./colors.js";
5
+ export { SYNTAX_THEME_IDS, SYNTAX_THEME_OPTIONS, isSyntaxThemeId, resolveSyntaxColors, } from "./themes.js";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,2 @@
1
+ export declare const nixHighlighting: import("@lezer/common").NodePropSource;
2
+ //# sourceMappingURL=highlight.d.ts.map
@@ -0,0 +1,21 @@
1
+ import { styleTags, tags as t } from "@lezer/highlight";
2
+ export const nixHighlighting = styleTags({
3
+ Identifier: t.propertyName,
4
+ Boolean: t.bool,
5
+ String: t.string,
6
+ IndentedString: t.string,
7
+ LineComment: t.lineComment,
8
+ BlockComment: t.blockComment,
9
+ Float: t.float,
10
+ Integer: t.integer,
11
+ Null: t.null,
12
+ URI: t.url,
13
+ SPath: t.literal,
14
+ Path: t.literal,
15
+ "( )": t.paren,
16
+ "{ }": t.brace,
17
+ "[ ]": t.squareBracket,
18
+ "if then else": t.controlKeyword,
19
+ "import with let in rec builtins inherit assert or": t.keyword,
20
+ });
21
+ //# sourceMappingURL=highlight.js.map
@@ -0,0 +1,3 @@
1
+ import { LRLanguage } from "@codemirror/language";
2
+ export declare const nixLanguage: LRLanguage;
3
+ //# sourceMappingURL=language.d.ts.map
@@ -0,0 +1,32 @@
1
+ import { continuedIndent, delimitedIndent, foldInside, foldNodeProp, indentNodeProp, LRLanguage, } from "@codemirror/language";
2
+ import { parser } from "./parser.js";
3
+ export const nixLanguage = LRLanguage.define({
4
+ name: "Nix",
5
+ parser: parser.configure({
6
+ props: [
7
+ indentNodeProp.add({
8
+ Parenthesized: delimitedIndent({ closing: ")" }),
9
+ AttrSet: delimitedIndent({ closing: "}" }),
10
+ List: delimitedIndent({ closing: "]" }),
11
+ Let: continuedIndent({ except: /^\s*in\b/ }),
12
+ }),
13
+ foldNodeProp.add({
14
+ AttrSet: foldInside,
15
+ List: foldInside,
16
+ Let(node) {
17
+ const first = node.getChild("let");
18
+ const last = node.getChild("in");
19
+ if (!first || !last)
20
+ return null;
21
+ return { from: first.to, to: last.from };
22
+ },
23
+ }),
24
+ ],
25
+ }),
26
+ languageData: {
27
+ commentTokens: { line: "#", block: { open: "/*", close: "*/" } },
28
+ closeBrackets: { brackets: ["(", "[", "{", "''", '"'] },
29
+ indentOnInput: /^\s*(in|\}|\)|\])$/,
30
+ },
31
+ });
32
+ //# sourceMappingURL=language.js.map
@@ -0,0 +1,3 @@
1
+ import { LRParser } from "@lezer/lr";
2
+ export declare const parser: LRParser;
3
+ //# sourceMappingURL=parser.d.ts.map
@@ -0,0 +1,45 @@
1
+ // Generated by lezer-generator, taken from @replit/codemirror-lang-nix@6.0.1.
2
+ // Vendored so the daemon never loads the editor-only runtime those packages
3
+ // pull in at import time (@codemirror/autocomplete, view, state). Only pure
4
+ // Lezer primitives are used here. See packages/highlight/src/svelte for the
5
+ // same treatment applied to Svelte.
6
+ import { LRParser } from "@lezer/lr";
7
+ import { nixHighlighting } from "./highlight.js";
8
+ import { scanIndString, scanString } from "./tokens.js";
9
+ const spec_Identifier = new Map([
10
+ ["assert", 22],
11
+ ["with", 26],
12
+ ["let", 30],
13
+ ["inherit", 42],
14
+ ["in", 48],
15
+ ["if", 52],
16
+ ["then", 54],
17
+ ["else", 56],
18
+ ["builtins", 70],
19
+ ["null", 214],
20
+ ["true", 216],
21
+ ["false", 216],
22
+ ["rec", 100],
23
+ ["or", 108],
24
+ ]);
25
+ export const parser = /*@__PURE__*/ LRParser.deserialize({
26
+ version: 14,
27
+ states: "7QO]QSOOO!sQWO'#DyO#XQ`O'#EjO&QQSO'#C`O&YQTO'#CnO'lQWO'#EWO(VQSO'#C|O(VQSO'#C|OOQO'#DQ'#DQOOQO'#DT'#DTO)dQUO'#DUO*yQSO'#DcOOQO'#Ej'#EjO,XQ`O'#EiOOQO'#Ei'#EiO-wQ`O'#EXOOQO'#Eh'#EhOOQO'#EX'#EXOOQO'#EW'#EWOOQO'#Dw'#DwO]QSO'#CfO]QSO'#ChO/dQSO'#D^O]QSO'#CuO]QSO'#D[O/xQSO'#D_QOQSOOO/}QSO'#CdO0`Q`O,5:eO3XQSO,5:eO3aQSO,5:eO4sQSO'#EOOOQO'#Cm'#CmOOQO'#Df'#DfO4}QSO,59wO]QSO'#CpO5`QSO'#ClO5eQSO'#EUO]QSO,58zO5sQSO,58zO5xQSO,58zOOQP'#EQ'#EQOOQP'#Dg'#DgO5}QTO,59YOOQO,59Y,59YO]QSO'#CoO6]QSO,59eO(VQSO,59eO(VQSO,59eO(VQSO,59eO(VQSO,59eO(VQSO,59eO(VQSO,59eO(VQSO,59eO(VQSO,59eO(VQSO,59eO(VQSO,59eO(VQSO,59eO(VQSO,59eO(VQSO,59eO6|QWO,59hO8VQSO'#D]O/xQSO'#D^OOQO,59h,59hOOQQ'#En'#EnOOQQ'#Dj'#DjO8hQUO,59pOOQO,59p,59pO]QSO'#DVOOQO'#Dk'#DkO8vQSO,59}OOQO,59},59}O8}QSO'#EiO6]QSO,59jOOQO,59i,59iO9XQSO,59QO9^QSO,59SO9cQSO,59UO]QSO,59UOOQO,59x,59xO9tQSO,59aO9yQSO,59vOOQO,59y,59yO:OQSO'#DhO;hQSO,5:jO]QSO,59OO;rQWO1G0PO;zQSO1G0POOQO1G0P1G0POOQO-E7d-E7dOOQO1G/c1G/cO<SQSO,59[O]QSO,59WOOQO'#Di'#DiO<XQSO,5:pO]QSO,5:qOOQO1G.f1G.fO<gQWO'#DyO<rQSO1G.fOOQP-E7e-E7eOOQO1G.t1G.tO<wQSO,59ZO<|Q`O'#EOOOQO1G/P1G/PO@PQWO1G/PO@WQWO1G/POAuQWO1G/POA|QWO1G/POBTQWO1G/POC^QWO1G/PODgQWO1G/POEpQWO1G/POFyQWO1G/POHSQWO1G/POI]QWO1G/POJfQWO1G/POKoQWO1G/POOQO,59w,59wOOQQ-E7h-E7hOOQO1G/[1G/[OLYQSO,59qOOQO-E7i-E7iOOQO1G/i1G/iOMfQ`O1G/UO]QSO1G.lO]QSO1G.nO]QSO1G.pOOQO1G.p1G.pO]QSO1G.{OOQO1G/b1G/bOOQO,5:S,5:SOOQO-E7f-E7fOOQO1G.j1G.jO! UQSO'#CdOOQO,5:P,5:PO! aQSO7+%kO! fQWO7+%kOOQO-E7c-E7cOOQO7+%k7+%kOOQO1G.v1G.vO! nQSO1G.rOOQO-E7g-E7gOOQO1G0[1G0[O! sQSO1G0]OOQO,5:e,5:eO]QSO7+$QOOQP1G.u1G.uO! xQ`O,5:jOOQQ1G/]1G/]O!#eQSO1G/UO)rQSO7+$pOOQO7+$W7+$WOOQO7+$Y7+$YOOQO7+$[7+$[O!#oQSO7+$gOOQO<<IV<<IVO!#tQSO<<IVP!#yQSO'#DeOOQO7+$^7+$^O!$OQSO7+%wOOQO<<Gl<<GlOOQO<<H[<<H[O]QSO<<HROOQOAN>qAN>qO!$ZQSO<<IcOOQOAN=mAN=mOOQOAN>}AN>}O!$iQSO,59jO)rQSO7+$p",
28
+ stateData: "!$x~O!jOSPOSQOS~OTQOUPOZdO]eO_fOfhOjgOs[Ou[Ov[Oz[O{[O|[O}[O!SiO!UZO!sSO#QVO#ZUO#_WO#`XO#aYO~OTkOVlOXnOeuO!sSO!usO~O!lvO!pwOT#^XU#^X_#^Xf#^Xn#^Xo#^Xs#^Xu#^Xv#^Xz#^X{#^X|#^X}#^X!S#^X!U#^X!`#^X!n#^X!s#^X!v#^X!|#^X!}#^X#O#^X#P#^X#Q#^X#R#^X#S#^X#T#^X#U#^X#V#^X#W#^X#X#^X#Y#^X#_#^X#`#^X#a#^X!q#^Xk#^Xg#^XV#^X!o#^Xl#^X~O!lvO!pxO~O!ayO!b}O!c|O!dyO~On!TOo!VO!n!OO!|!PO!}!PO#O!QO#P!RO#Q!SO#R!TO#S!UO#T!WO#U!XO#V!YO#W!ZO#X![O#Y!]O~O!`!zX!q!zXk!zXg!zXV!zX!o!zXl!zX~P&hOT[OU!_O_!`OfhOs[Ou[Ov[Oz[O{[O|[O}[O!SiO!UZO!sSO#QVO#ZUO#_WO#`XO#aYO~O!e!bO!f!fO!g!eO!h!bO~OT[OU!_O_!`OfhOs[Ou[Ov[Oz[O{[O|[O}[O!SiO!UZO!sSO#_WO#`XO#aYO~O!T!iO~P)rOT#]XU#]X_#]Xf#]Xs#]Xu#]Xv#]Xz#]X{#]X|#]X}#]X!S#]X!U#]X!s#]X#_#]X#`#]X#a#]X~O!v!kOn#]Xo#]X!`#]X!n#]X!|#]X!}#]X#O#]X#P#]X#Q#]X#R#]X#S#]X#T#]X#U#]X#V#]X#W#]X#X#]X#Y#]X!q#]Xk#]Xg#]XV#]X!o#]Xl#]X~P+QOn!{Xo!{X!`!{X!n!{X!|!{X!}!{X#O!{X#P!{X#Q!{X#R!{X#S!{X#T!{X#U!{X#V!{X#W!{X#X!{X#Y!{X!q!{Xk!{Xg!{XV!{X!o!{Xl!{X~P)rOToOU!_OeuOh!pO!sSO!usO~OU!_O~O!n!wO!v!uOVWX!oWX!w!rX~OT!PaU!Pa_!Paf!Pan!Pao!Pas!Pau!Pav!Paz!Pa{!Pa|!Pa}!Pa!S!Pa!U!Pa!`!Pa!l!ma!n!Pa!p!ma!s!Pa!v!Pa!|!Pa!}!Pa#O!Pa#P!Pa#Q!Pa#R!Pa#S!Pa#T!Pa#U!Pa#V!Pa#W!Pa#X!Pa#Y!Pa#_!Pa#`!Pa#a!Pa!q!Pak!Pag!PaV!Pa!o!Pal!Pa~OV!zO!o!xO~OV!zO~O!v!uOT!rXU!rX_!rXf!rXs!rXu!rXv!rXz!rX{!rX|!rX}!rX!S!rX!U!rX!W!rX!s!rX#_!rX#`!rX#a!rX~O!w!rX!T!rX~P3fOToOV!|OeuO!sSO!usO~O!w#OO~OT#POf#RO!sSO!usO~OU#TO~OT#UO~O!ayO!b}O!c#WO!dyO~OT#YO!sSO!usO~O!n!OO!|!PO!}!PO#O!QO#P!RO#Q!SO~Onpaopa!`pa#Rpa#Spa#Tpa#Upa#Vpa#Wpa#Xpa#Ypa!qpakpagpaVpa!opalpa~P6hOToOV#iOeuO!sSO!usO~O!e!bO!f!fO!g#kO!h!bO~O!T#nO~P)rO!v$mO!T#]X~P+QO!q#pO~O!q#qO~OToOeuOh#rO!sSO!usO~Ok#tO~Og#uO~OT#vO!sSO!usO~O!v!uOT!raU!ra_!raf!ras!rau!rav!raz!ra{!ra|!ra}!ra!S!ra!U!ra!W!ra!s!ra#_!ra#`!ra#a!ra~O!w!ra!T!ra~P:ZOT#yOX#{O~OV$OO!o#|O~OV$PO~OT#PO!q$SO!sSO!usO~OT#yOV$UOXnO~O!l$VO~OV$WO~On!rXo!rX!`!rX!n!rX!|!rX!}!rX#O!rX#P!rX#Q!rX#R!rX#S!rX#T!rX#U!rX#V!rX#W!rX#X!rX#Y!rX!q!rXk!rXg!rXV!rX!o!rXl!rX~P3fO!n!OO!|!POnmiomi!`mi#Omi#Pmi#Qmi#Rmi#Smi#Tmi#Umi#Vmi#Wmi#Xmi#Ymi!qmikmigmiVmi!omilmi~O!}mi~P>iO!}!PO~P>iO!n!OO!|!PO!}!PO#O!QOnmiomi!`mi#Qmi#Rmi#Smi#Tmi#Umi#Vmi#Wmi#Xmi#Ymi!qmikmigmiVmi!omilmi~O#Pmi~P@_O#P!RO~P@_O#R!TOnmiomi!`mi#Smi#Tmi#Umi#Vmi#Wmi#Xmi#Ymi!qmikmigmiVmi!omilmi~P6hOn!TO#R!TOomi!`mi#Smi#Tmi#Umi#Vmi#Wmi#Xmi#Ymi!qmikmigmiVmi!omilmi~P6hOn!TO#R!TO#S!UOomi!`mi#Tmi#Umi#Vmi#Wmi#Xmi#Ymi!qmikmigmiVmi!omilmi~P6hOn!TOo!VO#R!TO#S!UO!`mi#Tmi#Umi#Vmi#Wmi#Xmi#Ymi!qmikmigmiVmi!omilmi~P6hOn!TOo!VO#R!TO#S!UO#T!WO!`mi#Umi#Vmi#Wmi#Xmi#Ymi!qmikmigmiVmi!omilmi~P6hOn!TOo!VO#R!TO#S!UO#T!WO#U!XO!`mi#Vmi#Wmi#Xmi#Ymi!qmikmigmiVmi!omilmi~P6hOn!TOo!VO#R!TO#S!UO#T!WO#U!XO#V!YO!`mi#Wmi#Xmi#Ymi!qmikmigmiVmi!omilmi~P6hOn!TOo!VO#R!TO#S!UO#T!WO#U!XO#V!YO#W!ZO!`mi#Xmi#Ymi!qmikmigmiVmi!omilmi~P6hO!`mi!qmikmigmiVmi!omilmi~P&hOV$YO~OTriUri_rifrisriurivrizri{ri|ri}ri!Sri!Uri!sri#_ri#`ri#ari~O!W$[Onriori!`ri!nri!|ri!}ri#Ori#Pri#Qri#Rri#Sri#Tri#Uri#Vri#Wri#Xri#Yri!qrikrigriVri!orilri~PL_O!n!wOVWX!oWX~OV$aO~OT#yOX$bO~O!q$dO~Og$eO~On!rao!ra!`!ra!n!ra!|!ra!}!ra#O!ra#P!ra#Q!ra#R!ra#S!ra#T!ra#U!ra#V!ra#W!ra#X!ra#Y!ra!q!rak!rag!raV!ra!o!ral!ra~P:ZO!W$nO!Tri~PL_Ol$hO~OV$iO~OT#yO~OT#PO!sSO!usO~OT#PO!q$lO!sSO!usO~OToO!sSO!usO~Oz!v!v~",
29
+ goto: "2g#cPPPP#dPPP#yP#dP#dP#dP$S$Z$k%{%fPPPP&PPPP&fPP&f'[(QP({PP({({)vPPPP({)z({({PPP({P*|+S+_+e+p+z,QPPPPPPPPPPP,WP-cPPPP-{P.VPPP$S$S#d.ZPPPPPPPPPPPPPP/o0e1fPPP2cwcOdeghsv}!f!p!w#O#R#p#q#r#t$V$hSmP#TV#z!x#|$cZqPfr!_!oYtPfr!_!oQ#Z!OQ#o!kR$Z$m!p[OUVZ_deghsv}!P!Q!R!S!T!U!V!W!X!Y!Z![!]!f!h!p!w#O#R#p#q#r#t$V$[$h$n[oPfr!_!o$mW#Pu#Q$e$jS#Y!O!kR#v!uTyS{wbOdeghsv}!f!p!w#O#R#p#q#r#t$V$h!gaOUVdeghsv}!P!Q!R!S!T!U!V!W!X!Y!Z![!]!f!p!w#O#R#p#q#r#t$V$h!g`OUVdeghsv}!P!Q!R!S!T!U!V!W!X!Y!Z![!]!f!p!w#O#R#p#q#r#t$V$h!q^OUVZ_deghsv}!P!Q!R!S!T!U!V!W!X!Y!Z![!]!f!h!p!w#O#R#p#q#r#t$V$[$h$n!q[OUVZ_deghsv}!P!Q!R!S!T!U!V!W!X!Y!Z![!]!f!h!p!w#O#R#p#q#r#t$V$[$h$nT!bY!d!p[OUVZ_deghsv}!P!Q!R!S!T!U!V!W!X!Y!Z![!]!f!h!p!w#O#R#p#q#r#t$V$[$h$nS!qf!`R!tiQ!ymR#}!ySrP!_Q!ofT!{r!oQ{SR#V{S!vkoS#w!v$XR$X#YQ#QuS$R#Q$jR$j$eQ!dYR#j!dQ!hZR#m!hQjOQ!mdQ!neQ!rgQ!shQ!}sQ#SvQ#X}Q#l!fQ#s!pQ#x!wQ$Q#OQ$T#RQ$]#pQ$^#qQ$_#rQ$`#tQ$f$VR$k$hvROdeghsv}!f!p!w#O#R#p#q#r#t$V$hR#UwapPfr!O!_!k!o$mTzS{vTOdeghsv}!f!p!w#O#R#p#q#r#t$V$hQ!^UQ!aVQ#[!PQ#]!QQ#^!RQ#_!SQ#`!TQ#a!UQ#b!VQ#c!WQ#d!XQ#e!YQ#f!ZQ#g![R#h!]!g_OUVdeghsv}!P!Q!R!S!T!U!V!W!X!Y!Z![!]!f!p!w#O#R#p#q#r#t$V$h!f`OUVdeghsv}!P!Q!R!S!T!U!V!W!X!Y!Z![!]!f!p!w#O#R#p#q#r#t$V$hS!gZ!hQ!l_T$g$[$n!j]OUV_deghsv}!P!Q!R!S!T!U!V!W!X!Y!Z![!]!f!p!w#O#R#p#q#r#t$V$[$hV!jZ!h$nT!cY!d",
30
+ nodeNames: "⚠ LineComment BlockComment Program Function Identifier { } Formal Ellipses Assert assert With with Let let Bind AttrPath String Interpolation Interpolation inherit ( ) in IfExpr if then else BinaryExpr < > UnaryExpr App Select builtins Null Integer Float Boolean IndentedString Interpolation Path HPath SPath URI Parenthesized AttrSet LetAttrSet RecAttrSet rec ] [ List or",
31
+ maxTerm: 110,
32
+ nodeProps: [
33
+ ["closedBy", 6, "}", 22, ")", 52, "]"],
34
+ ["openedBy", 7, "{", 23, "(", 51, "["],
35
+ ],
36
+ skippedNodes: [0, 1, 2],
37
+ repeatNodeCount: 7,
38
+ tokenData: ">P~RtXY#cYZ#c]^#cpq#cqr#trs$Rst$Wtu$ovw$zwx%Vxy%byz%gz{%l{|%q|})]}!O)b!O!P*X!P!Q.r!Q!R0l!R![2e![!]3S!]!^3X!^!_3^!_!`5_!`!a5l!a!b5y!b!c6O!c!}6T!}#O;g#P#Q;l#R#S:u#T#o6T#o#p;q#p#q;v#q#r<R#r#s<W~#hS!j~XY#cYZ#c]^#cpq#cV#yP#ZP!_!`#|U$RO#VU~$WO!s~~$]SP~OY$WZ;'S$W;'S;=`$i<%lO$W~$lP;=`<%l$W~$rP#o#p$u~$zO!u~~$}Pvw%Q~%VO#W~~%YPwx%]~%bO#a~~%gOf~~%lOg~~%qO!}~~%vW#P~{|&`}!O&}!O!P&}!P!Q'j!Q![&}!c!}&}#R#S&}#T#o&}~&eW!|~{|&}}!O&}!O!P&}!P!Q'j!Q![&}!c!}&}#R#S&}#T#o&}T'QW{|&}}!O&}!O!P&}!P!Q'j!Q![&}!c!}&}#R#S&}#T#o&}T'mV{|(S}!O(S!O!P(S!Q![(S!c!}(S#R#S(S#T#o(ST(XWzT{|(S}!O(S!O!P(S!P!Q(q!Q![(S!c!}(S#R#S(S#T#o(ST(vVzT{|(S}!O(S!O!P(S!Q![(S!c!}(S#R#S(S#T#o(S~)bO!o~~)gX#Q~{|&}}!O&}!O!P&}!P!Q'j!Q![&}!`!a*S!c!}&}#R#S&}#T#o&}~*XO#Y~~*^W!vT{|&}}!O&}!O!P*v!P!Q'j!Q![,Q!c!}&}#R#S&}#T#o&}V*yW{|&}}!O&}!O!P+c!P!Q'j!Q![&}!c!}&}#R#S&}#T#o&}V+hWXQ{|&}}!O&}!O!P&}!P!Q'j!Q![&}!c!}&}#R#S&}#T#o&}~,V[v~{|&}}!O&}!O!P&}!P!Q'j!Q![,Q!c!g&}!g!h,{!h!}&}#R#S&}#T#X&}#X#Y,{#Y#o&}~-OW{|-h}!O-h!O!P&}!P!Q'j!Q![.T!c!}&}#R#S&}#T#o&}~-kW{|&}}!O&}!O!P&}!P!Q'j!Q![.T!c!}&}#R#S&}#T#o&}~.YWv~{|&}}!O&}!O!P&}!P!Q'j!Q![.T!c!}&}#R#S&}#T#o&}~.wX#O~z{/d{|(S}!O(S!O!P(S!P!Q0g!Q![(S!c!}(S#R#S(S#T#o(S~/iTQ~Oz/dz{/x{;'S/d;'S;=`0a<%lO/d~/{TO!P/d!P!Q0[!Q;'S/d;'S;=`0a<%lO/d~0aOQ~~0dP;=`<%l/d~0lO#R~~0qWu~{|&}}!O&}!O!P1Z!P!Q'j!Q![1v!c!}&}#R#S&}#T#o&}~1^W{|&}}!O&}!O!P&}!P!Q'j!Q![,Q!c!}&}#R#S&}#T#o&}~1{Wu~{|&}}!O&}!O!P&}!P!Q'j!Q![1v!c!}&}#R#S&}#T#o&}~2jWu~{|&}}!O&}!O!P,Q!P!Q'j!Q![2e!c!}&}#R#S&}#T#o&}~3XO!l~~3^O!q~~3cWn~{|3{}!O3{!O!P3{!Q![3{!_!`5Y!c!}3{#R#S3{#T#o3{~4OX{|3{}!O3{!O!P3{!P!Q4k!Q![3{!`!a5T!c!}3{#R#S3{#T#o3{~4nV{|3{}!O3{!O!P3{!Q![3{!c!}3{#R#S3{#T#o3{~5YO|~~5_O#S~V5dP!wP!_!`5gU5lO#UU~5qPo~!_!`5t~5yO#T~~6OO!n~~6TO!p~~6YYT~wx6x{|7a}!O6T!O!P7a!P!Q'j!Q![6T![!]8P!c!}6T#R#S:u#T#o6T~6}UT~wx6x}!O6x!Q![6x!c!}6x#R#S6x#T#o6x~7dX{|7a}!O7a!O!P7a!P!Q'j!Q![7a![!]8P!c!}7a#R#S&}#T#o7a~8Sdqr9btu9buv9bvw9bwx9bz{9b{|9b|}9b}!O9b!O!P9b!P!Q9b!Q![9b![!]9b!_!`9b!a!b9b!b!c9b!c!}9b#R#S9b#T#o9b#r#s9b~9gd}~qr9btu9buv9bvw9bwx9bz{9b{|9b|}9b}!O9b!O!P9b!P!Q9b!Q![9b![!]9b!_!`9b!a!b9b!b!c9b!c!}9b#R#S9b#T#o9b#r#s9b~:zXT~wx6x{|&}}!O:u!O!P&}!P!Q'j!Q![:u!c!}:u#R#S:u#T#o:u~;lO!U~~;qO!T~~;vOU~~;yP#p#q;|~<RO#X~~<WOV~~<ZP!P!Q<^~<aV{|<v}!O<v!O!P<v!Q![<v!c!}<v#R#S<v#T#o<v~<{W{~{|<v}!O<v!O!P<v!P!Q=e!Q![<v!c!}<v#R#S<v#T#o<v~=jV{~{|<v}!O<v!O!P<v!Q![<v!c!}<v#R#S<v#T#o<v",
39
+ tokenizers: [scanString, scanIndString, 0, 1, 2],
40
+ topRules: { Program: [0, 3] },
41
+ specialized: [{ term: 5, get: (value) => spec_Identifier.get(value) ?? -1 }],
42
+ propSources: [nixHighlighting],
43
+ tokenPrec: 2290,
44
+ });
45
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1,9 @@
1
+ export declare const strContent = 63;
2
+ export declare const strDollarBrace = 64;
3
+ export declare const strEnd = 65;
4
+ export declare const escapeSequence = 66;
5
+ export declare const indStrContent = 67;
6
+ export declare const indStrDollarBrace = 68;
7
+ export declare const indStrEnd = 69;
8
+ export declare const indEscapeSequence = 70;
9
+ //# sourceMappingURL=terms.d.ts.map
@@ -0,0 +1,14 @@
1
+ // Generated by lezer-generator, taken from @replit/codemirror-lang-nix@6.0.1.
2
+ // Vendored so the daemon never loads the editor-only runtime those packages
3
+ // pull in at import time (@codemirror/autocomplete, view, state). Only pure
4
+ // Lezer primitives are used here. See packages/highlight/src/svelte for the
5
+ // same treatment applied to Svelte.
6
+ export const strContent = 63;
7
+ export const strDollarBrace = 64;
8
+ export const strEnd = 65;
9
+ export const escapeSequence = 66;
10
+ export const indStrContent = 67;
11
+ export const indStrDollarBrace = 68;
12
+ export const indStrEnd = 69;
13
+ export const indEscapeSequence = 70;
14
+ //# sourceMappingURL=terms.js.map
@@ -0,0 +1,4 @@
1
+ import { ExternalTokenizer } from "@lezer/lr";
2
+ export declare const scanString: ExternalTokenizer;
3
+ export declare const scanIndString: ExternalTokenizer;
4
+ //# sourceMappingURL=tokens.d.ts.map
@@ -0,0 +1,70 @@
1
+ // Generated by lezer-generator, taken from @replit/codemirror-lang-nix@6.0.1.
2
+ // Vendored so the daemon never loads the editor-only runtime those packages
3
+ // pull in at import time (@codemirror/autocomplete, view, state). Only pure
4
+ // Lezer primitives are used here. See packages/highlight/src/svelte for the
5
+ // same treatment applied to Svelte.
6
+ import { ExternalTokenizer } from "@lezer/lr";
7
+ import { escapeSequence, indEscapeSequence, indStrContent, indStrDollarBrace, indStrEnd, strContent, strDollarBrace, strEnd, } from "./terms.js";
8
+ const quote = 34, backslack = 92, braceL = 123, dollar = 36, apostrophe = 39;
9
+ export const scanString = new ExternalTokenizer((input) => {
10
+ for (let afterDollar = false, i = 0;; i++) {
11
+ let { next } = input;
12
+ if (next < 0) {
13
+ if (i > 0)
14
+ input.acceptToken(strContent);
15
+ break;
16
+ }
17
+ else if (next === quote) {
18
+ if (i > 0)
19
+ input.acceptToken(strContent);
20
+ else
21
+ input.acceptToken(strEnd, 1);
22
+ break;
23
+ }
24
+ else if (next === braceL && afterDollar) {
25
+ if (i == 1)
26
+ input.acceptToken(strDollarBrace, 1);
27
+ else
28
+ input.acceptToken(strContent, -1);
29
+ break;
30
+ }
31
+ else if (next === backslack) {
32
+ input.advance();
33
+ input.acceptToken(escapeSequence, 1);
34
+ }
35
+ afterDollar = next === dollar;
36
+ input.advance();
37
+ }
38
+ });
39
+ export const scanIndString = new ExternalTokenizer((input) => {
40
+ for (let afterDollar = false, afterApostrophe = false, i = 0;; i++) {
41
+ let { next } = input;
42
+ if (next < 0) {
43
+ if (i > 0)
44
+ input.acceptToken(indStrContent);
45
+ break;
46
+ }
47
+ else if (next === apostrophe && afterApostrophe) {
48
+ if (i > 1)
49
+ input.acceptToken(indStrContent, -1);
50
+ else
51
+ input.acceptToken(indStrEnd, 1);
52
+ break;
53
+ }
54
+ else if (next === braceL && afterDollar) {
55
+ if (i == 1)
56
+ input.acceptToken(indStrDollarBrace, 1);
57
+ else
58
+ input.acceptToken(indStrContent, -1);
59
+ break;
60
+ }
61
+ else if (next === backslack) {
62
+ input.advance();
63
+ input.acceptToken(indEscapeSequence, 1);
64
+ }
65
+ afterDollar = next === dollar;
66
+ afterApostrophe = next === apostrophe;
67
+ input.advance();
68
+ }
69
+ });
70
+ //# sourceMappingURL=tokens.js.map
@@ -0,0 +1,7 @@
1
+ import { Language } from "@codemirror/language";
2
+ import type { Parser } from "@lezer/common";
3
+ export declare function getLanguageForFile(filename: string): Language | null;
4
+ export declare function getParserForFile(filename: string): Parser | null;
5
+ export declare function isLanguageSupported(filename: string): boolean;
6
+ export declare function getSupportedExtensions(): string[];
7
+ //# sourceMappingURL=parsers.d.ts.map
@@ -0,0 +1,101 @@
1
+ import { defineLanguageFacet, Language, StreamLanguage } from "@codemirror/language";
2
+ import { dart } from "@codemirror/legacy-modes/mode/clike";
3
+ import { swift } from "@codemirror/legacy-modes/mode/swift";
4
+ import { parser as jsParser } from "@lezer/javascript";
5
+ import { parser as jsonParser } from "@lezer/json";
6
+ import { parser as cssParser } from "@lezer/css";
7
+ import { parser as cppParser } from "@lezer/cpp";
8
+ import { parser as goParser } from "@lezer/go";
9
+ import { parser as htmlParser } from "@lezer/html";
10
+ import { parser as javaParser } from "@lezer/java";
11
+ import { parser as pythonParser } from "@lezer/python";
12
+ import { parser as markdownParser } from "@lezer/markdown";
13
+ import { parser as phpParser } from "@lezer/php";
14
+ import { parser as rustParser } from "@lezer/rust";
15
+ import { parser as xmlParser } from "@lezer/xml";
16
+ import { parser as yamlParser } from "@lezer/yaml";
17
+ import { parser as elixirParser } from "lezer-elixir";
18
+ import { csharpLanguage } from "./csharp/language.js";
19
+ import { astroParser } from "./astro/parser.js";
20
+ import { nixLanguage } from "./nix/language.js";
21
+ import { parser as svelteBaseParser } from "./svelte/parser.js";
22
+ import { configureNesting, defaultNesting } from "./svelte/nesting.js";
23
+ function language(parser) {
24
+ return new Language(defineLanguageFacet(), parser);
25
+ }
26
+ const languagesByExtension = {
27
+ // JavaScript/TypeScript
28
+ js: language(jsParser),
29
+ jsx: language(jsParser.configure({ dialect: "jsx" })),
30
+ ts: language(jsParser.configure({ dialect: "ts" })),
31
+ tsx: language(jsParser.configure({ dialect: "ts jsx" })),
32
+ mjs: language(jsParser),
33
+ cjs: language(jsParser),
34
+ // C / C++ / Objective-C
35
+ c: language(cppParser),
36
+ h: language(cppParser),
37
+ cc: language(cppParser),
38
+ cpp: language(cppParser),
39
+ cxx: language(cppParser),
40
+ hpp: language(cppParser),
41
+ hxx: language(cppParser),
42
+ m: language(cppParser),
43
+ mm: language(cppParser),
44
+ // JSON
45
+ json: language(jsonParser),
46
+ // CSS
47
+ css: language(cssParser),
48
+ scss: language(cssParser),
49
+ // HTML
50
+ html: language(htmlParser),
51
+ htm: language(htmlParser),
52
+ // Svelte
53
+ svelte: language(svelteBaseParser.configure({ wrap: configureNesting(defaultNesting) })),
54
+ // Astro
55
+ astro: language(astroParser),
56
+ // XML
57
+ xml: language(xmlParser),
58
+ // Java
59
+ java: language(javaParser),
60
+ // Python
61
+ py: language(pythonParser),
62
+ // Go
63
+ go: language(goParser),
64
+ // PHP
65
+ php: language(phpParser),
66
+ // YAML
67
+ yaml: language(yamlParser),
68
+ yml: language(yamlParser),
69
+ // Rust
70
+ rs: language(rustParser),
71
+ // Swift
72
+ swift: StreamLanguage.define(swift),
73
+ // Dart
74
+ dart: StreamLanguage.define(dart),
75
+ // C#
76
+ cs: csharpLanguage,
77
+ // Nix
78
+ nix: nixLanguage,
79
+ // Elixir
80
+ ex: language(elixirParser),
81
+ exs: language(elixirParser),
82
+ // Markdown
83
+ md: language(markdownParser),
84
+ mdx: language(markdownParser),
85
+ };
86
+ export function getLanguageForFile(filename) {
87
+ const ext = filename.split(".").pop()?.toLowerCase();
88
+ if (!ext)
89
+ return null;
90
+ return languagesByExtension[ext] ?? null;
91
+ }
92
+ export function getParserForFile(filename) {
93
+ return getLanguageForFile(filename)?.parser ?? null;
94
+ }
95
+ export function isLanguageSupported(filename) {
96
+ return getParserForFile(filename) !== null;
97
+ }
98
+ export function getSupportedExtensions() {
99
+ return Object.keys(languagesByExtension);
100
+ }
101
+ //# sourceMappingURL=parsers.js.map
@@ -0,0 +1,2 @@
1
+ export declare const svelteHighlighting: import("@lezer/common").NodePropSource;
2
+ //# sourceMappingURL=highlight.d.ts.map
@@ -0,0 +1,54 @@
1
+ import { styleTags, tags as t } from "@lezer/highlight";
2
+ export const svelteHighlighting = styleTags({
3
+ "Text RawText": t.content,
4
+ "StartTag StartCloseTag SelfClosingEndTag EndTag": t.angleBracket,
5
+ TagName: t.tagName,
6
+ "MismatchedCloseTag/TagName": [t.tagName, t.invalid],
7
+ AttributeName: t.attributeName,
8
+ UnquotedAttributeValue: t.attributeValue,
9
+ "DoubleQuote SingleQuote AttributeValueContent": t.attributeValue,
10
+ Is: t.definitionOperator,
11
+ "EntityReference CharacterReference": t.character,
12
+ Comment: t.blockComment,
13
+ ProcessingInst: t.processingInstruction,
14
+ DoctypeDecl: t.documentMeta,
15
+ "{ }": t.bracket,
16
+ "[ ]": t.squareBracket,
17
+ "( )": t.paren,
18
+ "| , :": t.punctuation,
19
+ "...": t.derefOperator,
20
+ ComponentName: t.className,
21
+ SvelteElementNamespace: t.namespace,
22
+ SvelteElementType: t.tagName,
23
+ StyleAttributeName: t.propertyName,
24
+ BlockType: t.controlKeyword,
25
+ BlockPrefix: t.typeOperator,
26
+ "UnknownBlock/BlockType": t.invalid,
27
+ UnknownBlockContent: t.invalid,
28
+ "if then catch": t.controlKeyword,
29
+ as: t.definitionOperator,
30
+ Variable: t.variableName,
31
+ Modifier: t.modifier,
32
+ DirectlyInterpolatedAttributeValue: t.attributeValue,
33
+ "DirectiveOn/DirectiveName": t.controlKeyword,
34
+ "DirectiveOn/DirectiveTarget": t.typeName,
35
+ "DirectiveUse/DirectiveName": t.controlKeyword,
36
+ "DirectiveUse/DirectiveTarget": t.function(t.variableName),
37
+ "DirectiveBind/DirectiveName": t.controlKeyword,
38
+ "DirectiveBind/DirectiveTarget": t.variableName,
39
+ "DirectiveLet/DirectiveName": t.definitionKeyword,
40
+ "DirectiveLet/DirectiveTarget": t.definition(t.variableName),
41
+ "DirectiveTransition/DirectiveName": t.operatorKeyword,
42
+ "DirectiveTransition/DirectiveTarget": t.function(t.variableName),
43
+ "DirectiveIn/DirectiveName": t.operatorKeyword,
44
+ "DirectiveIn/DirectiveTarget": t.function(t.variableName),
45
+ "DirectiveOut/DirectiveName": t.operatorKeyword,
46
+ "DirectiveOut/DirectiveTarget": t.function(t.variableName),
47
+ "DirectiveAnimate/DirectiveName": t.operatorKeyword,
48
+ "DirectiveAnimate/DirectiveTarget": t.function(t.variableName),
49
+ "DirectiveClass/DirectiveName": t.attributeName,
50
+ "DirectiveClass/DirectiveTarget": t.variableName,
51
+ "DirectiveStyle/DirectiveName": t.attributeName,
52
+ "DirectiveStyle/DirectiveTarget": t.propertyName,
53
+ });
54
+ //# sourceMappingURL=highlight.js.map
@@ -0,0 +1,9 @@
1
+ import { type Parser } from "@lezer/common";
2
+ export interface NestedLang {
3
+ tag: "script" | "style" | "textarea";
4
+ attrs?: (attrs: Record<string, string>) => boolean;
5
+ parser: Parser;
6
+ }
7
+ export declare const defaultNesting: NestedLang[];
8
+ export declare function configureNesting(tags: NestedLang[]): import("@lezer/common").ParseWrapper;
9
+ //# sourceMappingURL=nesting.d.ts.map
@@ -0,0 +1,97 @@
1
+ import { parseMixed, } from "@lezer/common";
2
+ import { parser as cssParser } from "@lezer/css";
3
+ import { parser as jsParser } from "@lezer/javascript";
4
+ import { LongExpression, ScriptText, ShortExpression, StyleText, TextareaText } from "./terms.js";
5
+ const expressionParser = jsParser.configure({ top: "SingleExpression" });
6
+ export const defaultNesting = [
7
+ {
8
+ tag: "script",
9
+ attrs: (attrs) => attrs.type === "text/typescript" || attrs.lang === "ts",
10
+ parser: jsParser.configure({ dialect: "ts" }),
11
+ },
12
+ {
13
+ tag: "script",
14
+ attrs(attrs) {
15
+ return (!attrs.type ||
16
+ /^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^module$|^$/i.test(attrs.type));
17
+ },
18
+ parser: jsParser,
19
+ },
20
+ {
21
+ tag: "style",
22
+ attrs(attrs) {
23
+ return ((!attrs.lang || attrs.lang === "css" || attrs.lang === "scss") &&
24
+ (!attrs.type || /^(text\/)?(x-)?(stylesheet|css|scss)$/i.test(attrs.type)));
25
+ },
26
+ parser: cssParser,
27
+ },
28
+ ];
29
+ function getAttrs(element, input) {
30
+ const attrs = Object.create(null);
31
+ const firstChild = element.node.firstChild;
32
+ if (!firstChild)
33
+ return attrs;
34
+ for (const att of firstChild.getChildren("Attribute")) {
35
+ const name = att.getChild("AttributeName");
36
+ const value = att.getChild("AttributeValue") || att.getChild("UnquotedAttributeValue");
37
+ if (name) {
38
+ const attrName = input.read(name.from, name.to);
39
+ if (!value) {
40
+ attrs[attrName] = "";
41
+ }
42
+ else if (value.name === "AttributeValue") {
43
+ attrs[attrName] = input.read(value.from + 1, value.to - 1);
44
+ }
45
+ else {
46
+ attrs[attrName] = input.read(value.from, value.to);
47
+ }
48
+ }
49
+ }
50
+ return attrs;
51
+ }
52
+ function maybeNest(node, input, tags) {
53
+ let attrs;
54
+ const parent = node.node.parent;
55
+ if (!parent)
56
+ return null;
57
+ for (const tag of tags) {
58
+ if (!tag.attrs || tag.attrs(attrs || (attrs = getAttrs(parent, input)))) {
59
+ return { parser: tag.parser };
60
+ }
61
+ }
62
+ return null;
63
+ }
64
+ export function configureNesting(tags) {
65
+ const script = [];
66
+ const style = [];
67
+ const textarea = [];
68
+ for (const tag of tags) {
69
+ let array;
70
+ if (tag.tag === "script") {
71
+ array = script;
72
+ }
73
+ else if (tag.tag === "style") {
74
+ array = style;
75
+ }
76
+ else if (tag.tag === "textarea") {
77
+ array = textarea;
78
+ }
79
+ else {
80
+ throw new RangeError("Only script, style, and textarea tags can host nested parsers");
81
+ }
82
+ array.push(tag);
83
+ }
84
+ return parseMixed((node, input) => {
85
+ const id = node.type.id;
86
+ if (id === LongExpression || id === ShortExpression)
87
+ return { parser: expressionParser };
88
+ if (id === ScriptText)
89
+ return maybeNest(node, input, script);
90
+ if (id === StyleText)
91
+ return maybeNest(node, input, style);
92
+ if (id === TextareaText)
93
+ return maybeNest(node, input, textarea);
94
+ return null;
95
+ });
96
+ }
97
+ //# sourceMappingURL=nesting.js.map
@@ -0,0 +1,3 @@
1
+ import { LRParser } from "@lezer/lr";
2
+ export declare const parser: LRParser;
3
+ //# sourceMappingURL=parser.d.ts.map