@getpaseo/highlight 0.4.0 → 0.5.0-beta.2

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.
@@ -0,0 +1,73 @@
1
+ // Generated by lezer-generator, taken from @replit/codemirror-lang-csharp@6.2.0.
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 { interpStringBrace, interpStringContent, interpStringEnd, interpVStringBrace, interpVStringContent, interpVStringEnd, } from "./terms.js";
8
+ const quote = 34, backslash = 92, braceL = 123, braceR = 125;
9
+ export const interpString = new ExternalTokenizer((input) => {
10
+ for (let i = 0;; i++) {
11
+ switch (input.next) {
12
+ case -1:
13
+ if (i > 0)
14
+ input.acceptToken(interpStringContent);
15
+ return;
16
+ case quote:
17
+ if (i > 0)
18
+ input.acceptToken(interpStringContent);
19
+ else
20
+ input.acceptToken(interpStringEnd, 1);
21
+ return;
22
+ case braceL:
23
+ if (input.peek(1) === braceL)
24
+ input.acceptToken(interpStringContent, 2);
25
+ else
26
+ input.acceptToken(interpStringBrace);
27
+ return;
28
+ case braceR:
29
+ if (input.peek(1) === braceR)
30
+ input.acceptToken(interpStringContent, 2);
31
+ return;
32
+ case backslash:
33
+ const next = input.peek(1);
34
+ if (next === braceL || next === braceR)
35
+ return;
36
+ input.advance();
37
+ // FALLTHROUGH
38
+ default:
39
+ input.advance();
40
+ }
41
+ }
42
+ });
43
+ export const interpVString = new ExternalTokenizer((input) => {
44
+ for (let i = 0;; i++) {
45
+ switch (input.next) {
46
+ case -1:
47
+ if (i > 0)
48
+ input.acceptToken(interpVStringContent);
49
+ return;
50
+ case quote:
51
+ if (input.peek(1) === quote)
52
+ input.acceptToken(interpVStringContent, 2);
53
+ else if (i > 0)
54
+ input.acceptToken(interpVStringContent);
55
+ else
56
+ input.acceptToken(interpVStringEnd, 1);
57
+ return;
58
+ case braceL:
59
+ if (input.peek(1) === braceL)
60
+ input.acceptToken(interpVStringContent, 2);
61
+ else
62
+ input.acceptToken(interpVStringBrace);
63
+ return;
64
+ case braceR:
65
+ if (input.peek(1) === braceR)
66
+ input.acceptToken(interpVStringContent, 2);
67
+ return;
68
+ default:
69
+ input.advance();
70
+ }
71
+ }
72
+ });
73
+ //# sourceMappingURL=tokens.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
package/dist/parsers.js CHANGED
@@ -14,8 +14,11 @@ import { parser as phpParser } from "@lezer/php";
14
14
  import { parser as rustParser } from "@lezer/rust";
15
15
  import { parser as xmlParser } from "@lezer/xml";
16
16
  import { parser as yamlParser } from "@lezer/yaml";
17
- import { csharpLanguage } from "@replit/codemirror-lang-csharp";
18
17
  import { parser as elixirParser } from "lezer-elixir";
18
+ import { csharpLanguage } from "./csharp/language.js";
19
+ import { nixLanguage } from "./nix/language.js";
20
+ import { parser as svelteBaseParser } from "./svelte/parser.js";
21
+ import { configureNesting, defaultNesting } from "./svelte/nesting.js";
19
22
  function language(parser) {
20
23
  return new Language(defineLanguageFacet(), parser);
21
24
  }
@@ -45,6 +48,8 @@ const languagesByExtension = {
45
48
  // HTML
46
49
  html: language(htmlParser),
47
50
  htm: language(htmlParser),
51
+ // Svelte
52
+ svelte: language(svelteBaseParser.configure({ wrap: configureNesting(defaultNesting) })),
48
53
  // XML
49
54
  xml: language(xmlParser),
50
55
  // Java
@@ -66,6 +71,8 @@ const languagesByExtension = {
66
71
  dart: StreamLanguage.define(dart),
67
72
  // C#
68
73
  cs: csharpLanguage,
74
+ // Nix
75
+ nix: nixLanguage,
69
76
  // Elixir
70
77
  ex: language(elixirParser),
71
78
  exs: language(elixirParser),
@@ -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