xmlui 0.9.21 → 0.9.25

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 (102) hide show
  1. package/dist/apiInterceptorWorker-CFF3bC6o.mjs +818 -0
  2. package/dist/{index-B3CWFAxa.mjs → index-DtxDGaqF.mjs} +11942 -3291
  3. package/dist/index.css +1301 -564
  4. package/dist/language-server-web-worker.mjs +1 -1
  5. package/dist/language-server.mjs +1 -1
  6. package/dist/lint-CYAUfk0_.mjs +168 -0
  7. package/dist/metadata-utils-CCIMqe69.mjs +466 -0
  8. package/dist/scripts/package.json +252 -0
  9. package/dist/scripts/src/components/App/AppLayoutContext.js +0 -1
  10. package/dist/scripts/src/components/App/AppNative.js +21 -9
  11. package/dist/scripts/src/components/AppHeader/AppHeader.js +1 -1
  12. package/dist/scripts/src/components/AutoComplete/AutoComplete.js +5 -2
  13. package/dist/scripts/src/components/AutoComplete/AutoCompleteNative.js +13 -10
  14. package/dist/scripts/src/components/Bookmark/BookmarkNative.js +5 -1
  15. package/dist/scripts/src/components/CodeBlock/CodeBlock.js +31 -0
  16. package/dist/scripts/src/components/CodeBlock/CodeBlockNative.js +82 -0
  17. package/dist/scripts/src/components/ComponentProvider.js +5 -0
  18. package/dist/scripts/src/components/DatePicker/DatePickerNative.js +1 -0
  19. package/dist/scripts/src/components/Form/FormContext.js +5 -4
  20. package/dist/scripts/src/components/Form/FormNative.js +41 -43
  21. package/dist/scripts/src/components/Form/formActions.js +1 -1
  22. package/dist/scripts/src/components/FormItem/FormItem.js +6 -3
  23. package/dist/scripts/src/components/FormItem/FormItemNative.js +56 -15
  24. package/dist/scripts/src/components/FormItem/ItemWithLabel.js +1 -1
  25. package/dist/scripts/src/components/Heading/Heading.js +13 -0
  26. package/dist/scripts/src/components/Heading/HeadingNative.js +1 -1
  27. package/dist/scripts/src/components/HtmlTags/HtmlTags.js +7 -3
  28. package/dist/scripts/src/components/Icon/DarkToLightIcon.js +10 -0
  29. package/dist/scripts/src/components/Icon/LightToDark.js +10 -0
  30. package/dist/scripts/src/components/IconProvider.js +4 -0
  31. package/dist/scripts/src/components/Image/ImageNative.js +1 -1
  32. package/dist/scripts/src/components/Items/ItemsNative.js +8 -6
  33. package/dist/scripts/src/components/Link/Link.js +5 -5
  34. package/dist/scripts/src/components/List/ListNative.js +1 -1
  35. package/dist/scripts/src/components/Markdown/Markdown.js +52 -16
  36. package/dist/scripts/src/components/Markdown/MarkdownNative.js +34 -73
  37. package/dist/scripts/src/components/Markdown/highlight-code.js +160 -0
  38. package/dist/scripts/src/components/Markdown/parse-binding-expr.js +60 -0
  39. package/dist/scripts/src/components/Markdown/utils.js +282 -0
  40. package/dist/scripts/src/components/ModalDialog/ConfirmationModalContextProvider.js +116 -0
  41. package/dist/scripts/src/components/ModalDialog/Dialog.js +20 -0
  42. package/dist/scripts/src/components/NavGroup/NavGroupNative.js +4 -5
  43. package/dist/scripts/src/components/NestedApp/NestedApp.js +61 -0
  44. package/dist/scripts/src/components/NestedApp/NestedAppNative.js +125 -0
  45. package/dist/scripts/src/components/NestedApp/Tooltip.js +46 -0
  46. package/dist/scripts/src/components/NumberBox/NumberBox.js +4 -1
  47. package/dist/scripts/src/components/NumberBox/NumberBoxNative.js +2 -2
  48. package/dist/scripts/src/components/Option/Option.js +3 -2
  49. package/dist/scripts/src/components/Select/Select.js +5 -3
  50. package/dist/scripts/src/components/Select/SelectNative.js +53 -40
  51. package/dist/scripts/src/components/SelectionStore/SelectionStore.js +1 -1
  52. package/dist/scripts/src/components/Spinner/Spinner.js +0 -1
  53. package/dist/scripts/src/components/TableOfContents/TableOfContents.js +1 -0
  54. package/dist/scripts/src/components/Text/Text.js +12 -1
  55. package/dist/scripts/src/components/Text/TextNative.js +5 -1
  56. package/dist/scripts/src/components/TextBox/TextBox.js +6 -1
  57. package/dist/scripts/src/components/TextBox/TextBoxNative.js +2 -2
  58. package/dist/scripts/src/components/Theme/ThemeNative.js +7 -3
  59. package/dist/scripts/src/components/ToneChangerButton/ToneChangerButton.js +1 -3
  60. package/dist/scripts/src/components-core/RestApiProxy.js +10 -7
  61. package/dist/scripts/src/components-core/TableOfContentsContext.js +1 -1
  62. package/dist/scripts/src/components-core/appContext/date-functions.js +23 -0
  63. package/dist/scripts/src/components-core/appContext/math-function.js +27 -0
  64. package/dist/scripts/src/components-core/appContext/misc-utils.js +13 -0
  65. package/dist/scripts/src/components-core/interception/ApiInterceptor.js +199 -0
  66. package/dist/scripts/src/components-core/interception/ApiInterceptorProvider.js +94 -0
  67. package/dist/scripts/src/components-core/interception/Backend.js +128 -0
  68. package/dist/scripts/src/components-core/interception/Errors.js +129 -0
  69. package/dist/scripts/src/components-core/interception/InMemoryDb.js +41 -0
  70. package/dist/scripts/src/components-core/interception/IndexedDb.js +207 -0
  71. package/dist/scripts/src/components-core/interception/ReadonlyCollection.js +145 -0
  72. package/dist/scripts/src/components-core/interception/abstractions.js +2 -0
  73. package/dist/scripts/src/components-core/interception/apiInterceptorWorker.js +46 -0
  74. package/dist/scripts/src/components-core/interception/useApiInterceptorContext.js +9 -0
  75. package/dist/scripts/src/components-core/rendering/AppContent.js +336 -0
  76. package/dist/scripts/src/components-core/rendering/AppRoot.js +84 -0
  77. package/dist/scripts/src/components-core/rendering/AppWrapper.js +49 -0
  78. package/dist/scripts/src/components-core/rendering/ComponentAdapter.js +17 -7
  79. package/dist/scripts/src/components-core/rendering/Container.js +2 -1
  80. package/dist/scripts/src/components-core/theming/ThemeProvider.js +2 -7
  81. package/dist/scripts/src/components-core/theming/themes/root.js +1 -0
  82. package/dist/scripts/src/components-core/utils/date-utils.js +78 -0
  83. package/dist/scripts/src/components-core/utils/hooks.js +26 -0
  84. package/dist/scripts/src/components-core/utils/misc.js +1 -1
  85. package/dist/scripts/src/components-core/utils/request-params.js +70 -0
  86. package/dist/scripts/src/logging/LoggerContext.js +22 -0
  87. package/dist/scripts/src/logging/LoggerInitializer.js +14 -0
  88. package/dist/scripts/src/logging/LoggerService.js +60 -0
  89. package/dist/scripts/src/parsers/xmlui-parser/transform.js +7 -0
  90. package/dist/{server-common-DW5h7Q34.mjs → server-common-9TiLMTJj.mjs} +106 -98
  91. package/dist/style.css +3314 -2823
  92. package/dist/{lint-EcgF-9Wr.mjs → transform-DC0Gy6qw.mjs} +1246 -540
  93. package/dist/xmlui-metadata.mjs +2850 -2665
  94. package/dist/xmlui-metadata.umd.js +2850 -2665
  95. package/dist/xmlui-parser.d.ts +49 -4
  96. package/dist/xmlui-parser.mjs +49 -48
  97. package/dist/xmlui-standalone.umd.js +34674 -31457
  98. package/dist/xmlui.d.ts +3 -1
  99. package/dist/xmlui.mjs +10 -10
  100. package/package.json +3 -1
  101. package/dist/apiInterceptorWorker-7aKQ2rBj.mjs +0 -8447
  102. package/dist/parser-CBXS8ft2.mjs +0 -1196
@@ -1,1196 +0,0 @@
1
- var CharacterCodes = /* @__PURE__ */ ((CharacterCodes2) => {
2
- CharacterCodes2[CharacterCodes2["EOF"] = -1] = "EOF";
3
- CharacterCodes2[CharacterCodes2["nullCharacter"] = 0] = "nullCharacter";
4
- CharacterCodes2[CharacterCodes2["maxAsciiCharacter"] = 127] = "maxAsciiCharacter";
5
- CharacterCodes2[CharacterCodes2["lineFeed"] = 10] = "lineFeed";
6
- CharacterCodes2[CharacterCodes2["carriageReturn"] = 13] = "carriageReturn";
7
- CharacterCodes2[CharacterCodes2["lineSeparator"] = 8232] = "lineSeparator";
8
- CharacterCodes2[CharacterCodes2["paragraphSeparator"] = 8233] = "paragraphSeparator";
9
- CharacterCodes2[CharacterCodes2["nextLine"] = 133] = "nextLine";
10
- CharacterCodes2[CharacterCodes2["space"] = 32] = "space";
11
- CharacterCodes2[CharacterCodes2["nonBreakingSpace"] = 160] = "nonBreakingSpace";
12
- CharacterCodes2[CharacterCodes2["enQuad"] = 8192] = "enQuad";
13
- CharacterCodes2[CharacterCodes2["emQuad"] = 8193] = "emQuad";
14
- CharacterCodes2[CharacterCodes2["enSpace"] = 8194] = "enSpace";
15
- CharacterCodes2[CharacterCodes2["emSpace"] = 8195] = "emSpace";
16
- CharacterCodes2[CharacterCodes2["threePerEmSpace"] = 8196] = "threePerEmSpace";
17
- CharacterCodes2[CharacterCodes2["fourPerEmSpace"] = 8197] = "fourPerEmSpace";
18
- CharacterCodes2[CharacterCodes2["sixPerEmSpace"] = 8198] = "sixPerEmSpace";
19
- CharacterCodes2[CharacterCodes2["figureSpace"] = 8199] = "figureSpace";
20
- CharacterCodes2[CharacterCodes2["punctuationSpace"] = 8200] = "punctuationSpace";
21
- CharacterCodes2[CharacterCodes2["thinSpace"] = 8201] = "thinSpace";
22
- CharacterCodes2[CharacterCodes2["hairSpace"] = 8202] = "hairSpace";
23
- CharacterCodes2[CharacterCodes2["zeroWidthSpace"] = 8203] = "zeroWidthSpace";
24
- CharacterCodes2[CharacterCodes2["narrowNoBreakSpace"] = 8239] = "narrowNoBreakSpace";
25
- CharacterCodes2[CharacterCodes2["ideographicSpace"] = 12288] = "ideographicSpace";
26
- CharacterCodes2[CharacterCodes2["mathematicalSpace"] = 8287] = "mathematicalSpace";
27
- CharacterCodes2[CharacterCodes2["ogham"] = 5760] = "ogham";
28
- CharacterCodes2[CharacterCodes2["replacementCharacter"] = 65533] = "replacementCharacter";
29
- CharacterCodes2[CharacterCodes2["_"] = 95] = "_";
30
- CharacterCodes2[CharacterCodes2["$"] = 36] = "$";
31
- CharacterCodes2[CharacterCodes2["_0"] = 48] = "_0";
32
- CharacterCodes2[CharacterCodes2["_1"] = 49] = "_1";
33
- CharacterCodes2[CharacterCodes2["_2"] = 50] = "_2";
34
- CharacterCodes2[CharacterCodes2["_3"] = 51] = "_3";
35
- CharacterCodes2[CharacterCodes2["_4"] = 52] = "_4";
36
- CharacterCodes2[CharacterCodes2["_5"] = 53] = "_5";
37
- CharacterCodes2[CharacterCodes2["_6"] = 54] = "_6";
38
- CharacterCodes2[CharacterCodes2["_7"] = 55] = "_7";
39
- CharacterCodes2[CharacterCodes2["_8"] = 56] = "_8";
40
- CharacterCodes2[CharacterCodes2["_9"] = 57] = "_9";
41
- CharacterCodes2[CharacterCodes2["a"] = 97] = "a";
42
- CharacterCodes2[CharacterCodes2["b"] = 98] = "b";
43
- CharacterCodes2[CharacterCodes2["c"] = 99] = "c";
44
- CharacterCodes2[CharacterCodes2["d"] = 100] = "d";
45
- CharacterCodes2[CharacterCodes2["e"] = 101] = "e";
46
- CharacterCodes2[CharacterCodes2["f"] = 102] = "f";
47
- CharacterCodes2[CharacterCodes2["g"] = 103] = "g";
48
- CharacterCodes2[CharacterCodes2["h"] = 104] = "h";
49
- CharacterCodes2[CharacterCodes2["i"] = 105] = "i";
50
- CharacterCodes2[CharacterCodes2["j"] = 106] = "j";
51
- CharacterCodes2[CharacterCodes2["k"] = 107] = "k";
52
- CharacterCodes2[CharacterCodes2["l"] = 108] = "l";
53
- CharacterCodes2[CharacterCodes2["m"] = 109] = "m";
54
- CharacterCodes2[CharacterCodes2["n"] = 110] = "n";
55
- CharacterCodes2[CharacterCodes2["o"] = 111] = "o";
56
- CharacterCodes2[CharacterCodes2["p"] = 112] = "p";
57
- CharacterCodes2[CharacterCodes2["q"] = 113] = "q";
58
- CharacterCodes2[CharacterCodes2["r"] = 114] = "r";
59
- CharacterCodes2[CharacterCodes2["s"] = 115] = "s";
60
- CharacterCodes2[CharacterCodes2["t"] = 116] = "t";
61
- CharacterCodes2[CharacterCodes2["u"] = 117] = "u";
62
- CharacterCodes2[CharacterCodes2["v"] = 118] = "v";
63
- CharacterCodes2[CharacterCodes2["w"] = 119] = "w";
64
- CharacterCodes2[CharacterCodes2["x"] = 120] = "x";
65
- CharacterCodes2[CharacterCodes2["y"] = 121] = "y";
66
- CharacterCodes2[CharacterCodes2["z"] = 122] = "z";
67
- CharacterCodes2[CharacterCodes2["A"] = 65] = "A";
68
- CharacterCodes2[CharacterCodes2["B"] = 66] = "B";
69
- CharacterCodes2[CharacterCodes2["C"] = 67] = "C";
70
- CharacterCodes2[CharacterCodes2["D"] = 68] = "D";
71
- CharacterCodes2[CharacterCodes2["E"] = 69] = "E";
72
- CharacterCodes2[CharacterCodes2["F"] = 70] = "F";
73
- CharacterCodes2[CharacterCodes2["G"] = 71] = "G";
74
- CharacterCodes2[CharacterCodes2["H"] = 72] = "H";
75
- CharacterCodes2[CharacterCodes2["I"] = 73] = "I";
76
- CharacterCodes2[CharacterCodes2["J"] = 74] = "J";
77
- CharacterCodes2[CharacterCodes2["K"] = 75] = "K";
78
- CharacterCodes2[CharacterCodes2["L"] = 76] = "L";
79
- CharacterCodes2[CharacterCodes2["M"] = 77] = "M";
80
- CharacterCodes2[CharacterCodes2["N"] = 78] = "N";
81
- CharacterCodes2[CharacterCodes2["O"] = 79] = "O";
82
- CharacterCodes2[CharacterCodes2["P"] = 80] = "P";
83
- CharacterCodes2[CharacterCodes2["Q"] = 81] = "Q";
84
- CharacterCodes2[CharacterCodes2["R"] = 82] = "R";
85
- CharacterCodes2[CharacterCodes2["S"] = 83] = "S";
86
- CharacterCodes2[CharacterCodes2["T"] = 84] = "T";
87
- CharacterCodes2[CharacterCodes2["U"] = 85] = "U";
88
- CharacterCodes2[CharacterCodes2["V"] = 86] = "V";
89
- CharacterCodes2[CharacterCodes2["W"] = 87] = "W";
90
- CharacterCodes2[CharacterCodes2["X"] = 88] = "X";
91
- CharacterCodes2[CharacterCodes2["Y"] = 89] = "Y";
92
- CharacterCodes2[CharacterCodes2["Z"] = 90] = "Z";
93
- CharacterCodes2[CharacterCodes2["ampersand"] = 38] = "ampersand";
94
- CharacterCodes2[CharacterCodes2["asterisk"] = 42] = "asterisk";
95
- CharacterCodes2[CharacterCodes2["at"] = 64] = "at";
96
- CharacterCodes2[CharacterCodes2["backslash"] = 92] = "backslash";
97
- CharacterCodes2[CharacterCodes2["backtick"] = 96] = "backtick";
98
- CharacterCodes2[CharacterCodes2["bar"] = 124] = "bar";
99
- CharacterCodes2[CharacterCodes2["caret"] = 94] = "caret";
100
- CharacterCodes2[CharacterCodes2["closeBrace"] = 125] = "closeBrace";
101
- CharacterCodes2[CharacterCodes2["closeBracket"] = 93] = "closeBracket";
102
- CharacterCodes2[CharacterCodes2["closeParen"] = 41] = "closeParen";
103
- CharacterCodes2[CharacterCodes2["colon"] = 58] = "colon";
104
- CharacterCodes2[CharacterCodes2["comma"] = 44] = "comma";
105
- CharacterCodes2[CharacterCodes2["dot"] = 46] = "dot";
106
- CharacterCodes2[CharacterCodes2["doubleQuote"] = 34] = "doubleQuote";
107
- CharacterCodes2[CharacterCodes2["equals"] = 61] = "equals";
108
- CharacterCodes2[CharacterCodes2["exclamation"] = 33] = "exclamation";
109
- CharacterCodes2[CharacterCodes2["greaterThan"] = 62] = "greaterThan";
110
- CharacterCodes2[CharacterCodes2["hash"] = 35] = "hash";
111
- CharacterCodes2[CharacterCodes2["lessThan"] = 60] = "lessThan";
112
- CharacterCodes2[CharacterCodes2["minus"] = 45] = "minus";
113
- CharacterCodes2[CharacterCodes2["openBrace"] = 123] = "openBrace";
114
- CharacterCodes2[CharacterCodes2["openBracket"] = 91] = "openBracket";
115
- CharacterCodes2[CharacterCodes2["openParen"] = 40] = "openParen";
116
- CharacterCodes2[CharacterCodes2["percent"] = 37] = "percent";
117
- CharacterCodes2[CharacterCodes2["plus"] = 43] = "plus";
118
- CharacterCodes2[CharacterCodes2["question"] = 63] = "question";
119
- CharacterCodes2[CharacterCodes2["semicolon"] = 59] = "semicolon";
120
- CharacterCodes2[CharacterCodes2["singleQuote"] = 39] = "singleQuote";
121
- CharacterCodes2[CharacterCodes2["slash"] = 47] = "slash";
122
- CharacterCodes2[CharacterCodes2["tilde"] = 126] = "tilde";
123
- CharacterCodes2[CharacterCodes2["backspace"] = 8] = "backspace";
124
- CharacterCodes2[CharacterCodes2["formFeed"] = 12] = "formFeed";
125
- CharacterCodes2[CharacterCodes2["byteOrderMark"] = 65279] = "byteOrderMark";
126
- CharacterCodes2[CharacterCodes2["tab"] = 9] = "tab";
127
- CharacterCodes2[CharacterCodes2["verticalTab"] = 11] = "verticalTab";
128
- return CharacterCodes2;
129
- })(CharacterCodes || {});
130
- var DiagnosticCategory = /* @__PURE__ */ ((DiagnosticCategory2) => {
131
- DiagnosticCategory2[DiagnosticCategory2["Warning"] = 0] = "Warning";
132
- DiagnosticCategory2[DiagnosticCategory2["Error"] = 1] = "Error";
133
- DiagnosticCategory2[DiagnosticCategory2["Suggestion"] = 2] = "Suggestion";
134
- DiagnosticCategory2[DiagnosticCategory2["Message"] = 3] = "Message";
135
- return DiagnosticCategory2;
136
- })(DiagnosticCategory || {});
137
- var ErrCodes = /* @__PURE__ */ ((ErrCodes2) => {
138
- ErrCodes2["onlyOneElem"] = "U002";
139
- ErrCodes2["expTagOpen"] = "U003";
140
- ErrCodes2["expTagIdent"] = "U004";
141
- ErrCodes2["expCloseStart"] = "U005";
142
- ErrCodes2["expEndOrClose"] = "U006";
143
- ErrCodes2["tagNameMismatch"] = "U007";
144
- ErrCodes2["expEnd"] = "U008";
145
- ErrCodes2["expAttrIdent"] = "U009";
146
- ErrCodes2["expEq"] = "U010";
147
- ErrCodes2["expAttrValue"] = "U011";
148
- ErrCodes2["duplAttr"] = "U012";
149
- ErrCodes2["uppercaseAttr"] = "U013";
150
- ErrCodes2["invalidChar"] = "W001";
151
- ErrCodes2["untermStr"] = "W002";
152
- ErrCodes2["untermComment"] = "W007";
153
- ErrCodes2["untermCData"] = "W008";
154
- ErrCodes2["untermScript"] = "W009";
155
- return ErrCodes2;
156
- })(ErrCodes || {});
157
- function diagnosticCategoryName(d, lowerCase = true) {
158
- const name = DiagnosticCategory[d.category];
159
- return lowerCase ? name.toLowerCase() : name;
160
- }
161
- const Diag_Invalid_Character = {
162
- code: "W001",
163
- category: 1,
164
- message: "Invalid character."
165
- };
166
- const Diag_Unterminated_String_Literal = {
167
- code: "W002",
168
- category: 1,
169
- message: "Unterminated string literal."
170
- };
171
- const Diag_Unterminated_Comment = {
172
- code: "W007",
173
- category: 1,
174
- message: "Unterminated comment"
175
- };
176
- const Diag_Unterminated_CData = {
177
- code: "W008",
178
- category: 1,
179
- message: "Unterminated CDATA section"
180
- };
181
- const Diag_Unterminated_Script = {
182
- code: "W009",
183
- category: 1,
184
- message: "Unterminated script section"
185
- };
186
- const Diag_End_Token_Expected = {
187
- category: 1,
188
- code: "U008",
189
- message: "A '>' token expected."
190
- };
191
- const Diag_CloseNodeStart_Token_Expected = {
192
- category: 1,
193
- code: "U005",
194
- message: "A '</' token expected."
195
- };
196
- const Diag_Tag_Identifier_Expected = {
197
- category: 1,
198
- code: "U004",
199
- message: "A tag identifier expected."
200
- };
201
- const Diag_Attr_Value_Expected = {
202
- category: 1,
203
- code: "U011",
204
- message: "An attribute value expected."
205
- };
206
- const Diag_Eq_Token_Expected = {
207
- category: 1,
208
- code: "U010",
209
- message: "An '=' token expected."
210
- };
211
- const Diag_OpenNodeStart_Token_Expected = {
212
- category: 1,
213
- code: "U003",
214
- message: "A '<' token expected."
215
- };
216
- const Diag_End_Or_Close_Token_Expected = {
217
- category: 1,
218
- code: "U006",
219
- message: `A '>' or '/>' token expected.`
220
- };
221
- const Diag_Attr_Identifier_Expected = {
222
- category: 1,
223
- code: "U009",
224
- message: `An attribute identifier expected.`
225
- };
226
- var SyntaxKind = /* @__PURE__ */ ((SyntaxKind2) => {
227
- SyntaxKind2[SyntaxKind2["Unknown"] = 0] = "Unknown";
228
- SyntaxKind2[SyntaxKind2["EndOfFileToken"] = 1] = "EndOfFileToken";
229
- SyntaxKind2[SyntaxKind2["CommentTrivia"] = 2] = "CommentTrivia";
230
- SyntaxKind2[SyntaxKind2["NewLineTrivia"] = 3] = "NewLineTrivia";
231
- SyntaxKind2[SyntaxKind2["WhitespaceTrivia"] = 4] = "WhitespaceTrivia";
232
- SyntaxKind2[SyntaxKind2["Identifier"] = 5] = "Identifier";
233
- SyntaxKind2[SyntaxKind2["OpenNodeStart"] = 6] = "OpenNodeStart";
234
- SyntaxKind2[SyntaxKind2["CloseNodeStart"] = 7] = "CloseNodeStart";
235
- SyntaxKind2[SyntaxKind2["NodeEnd"] = 8] = "NodeEnd";
236
- SyntaxKind2[SyntaxKind2["NodeClose"] = 9] = "NodeClose";
237
- SyntaxKind2[SyntaxKind2["Colon"] = 10] = "Colon";
238
- SyntaxKind2[SyntaxKind2["Equal"] = 11] = "Equal";
239
- SyntaxKind2[SyntaxKind2["StringLiteral"] = 12] = "StringLiteral";
240
- SyntaxKind2[SyntaxKind2["CData"] = 13] = "CData";
241
- SyntaxKind2[SyntaxKind2["Script"] = 14] = "Script";
242
- SyntaxKind2[SyntaxKind2["TextNode"] = 15] = "TextNode";
243
- SyntaxKind2[SyntaxKind2["AmpersandEntity"] = 16] = "AmpersandEntity";
244
- SyntaxKind2[SyntaxKind2["LessThanEntity"] = 17] = "LessThanEntity";
245
- SyntaxKind2[SyntaxKind2["GreaterThanEntity"] = 18] = "GreaterThanEntity";
246
- SyntaxKind2[SyntaxKind2["SingleQuoteEntity"] = 19] = "SingleQuoteEntity";
247
- SyntaxKind2[SyntaxKind2["DoubleQuoteEntity"] = 20] = "DoubleQuoteEntity";
248
- SyntaxKind2[SyntaxKind2["ElementNode"] = 21] = "ElementNode";
249
- SyntaxKind2[SyntaxKind2["AttributeNode"] = 22] = "AttributeNode";
250
- SyntaxKind2[SyntaxKind2["AttributeKeyNode"] = 23] = "AttributeKeyNode";
251
- SyntaxKind2[SyntaxKind2["ContentListNode"] = 24] = "ContentListNode";
252
- SyntaxKind2[SyntaxKind2["AttributeListNode"] = 25] = "AttributeListNode";
253
- SyntaxKind2[SyntaxKind2["TagNameNode"] = 26] = "TagNameNode";
254
- SyntaxKind2[SyntaxKind2["ErrorNode"] = 27] = "ErrorNode";
255
- return SyntaxKind2;
256
- })(SyntaxKind || {});
257
- function isTrivia(token) {
258
- return token >= 2 && token <= 4;
259
- }
260
- function isInnerNode(token) {
261
- return token >= 21 && token <= 27;
262
- }
263
- function getSyntaxKindStrRepr(kind) {
264
- switch (kind) {
265
- case 0:
266
- return "Unknown";
267
- case 1:
268
- return "EndOfFileToken";
269
- case 2:
270
- return "CommentTrivia";
271
- case 3:
272
- return "NewLineTrivia";
273
- case 4:
274
- return "WhitespaceTrivia";
275
- case 5:
276
- return "Identifier";
277
- case 6:
278
- return "OpenNodeStart";
279
- case 7:
280
- return "CloseNodeStart";
281
- case 8:
282
- return "NodeEnd";
283
- case 9:
284
- return "NodeClose";
285
- case 10:
286
- return "Colon";
287
- case 11:
288
- return "Equal";
289
- case 12:
290
- return "StringLiteral";
291
- case 13:
292
- return "CData";
293
- case 14:
294
- return "Script";
295
- case 16:
296
- return "AmpersandEntity";
297
- case 17:
298
- return "LessThanEntity";
299
- case 18:
300
- return "GreaterThanEntity";
301
- case 19:
302
- return "SingleQuoteEntity";
303
- case 20:
304
- return "DoubleQuoteEntity";
305
- case 21:
306
- return "ElementNode";
307
- case 22:
308
- return "AttributeNode";
309
- case 15:
310
- return "TextNode";
311
- case 24:
312
- return "ContentListNode";
313
- case 25:
314
- return "AttributeListNode";
315
- case 26:
316
- return "TagNameNode";
317
- case 27:
318
- return "ErrorNode";
319
- case 23:
320
- return "AttributeKeyNode";
321
- }
322
- return assertUnreachable();
323
- }
324
- function assertUnreachable(x) {
325
- throw new Error("Didn't expect to get here");
326
- }
327
- function createScanner(skipTrivia, textInitial, onError, start, length) {
328
- let text = textInitial ?? "";
329
- let pos;
330
- let end;
331
- let fullStartPos;
332
- let tokenStart;
333
- let token;
334
- let tokenValue;
335
- setText(text, start, length);
336
- return {
337
- getStartPos: () => fullStartPos,
338
- getTokenEnd: () => pos,
339
- getToken: () => token,
340
- getTokenStart: () => tokenStart,
341
- getTokenText: () => text.substring(tokenStart, pos),
342
- getTokenValue: () => tokenValue,
343
- isIdentifier: () => token === SyntaxKind.Identifier,
344
- peekChar,
345
- scanChar,
346
- scan,
347
- scanTrivia,
348
- scanText,
349
- getText,
350
- setText,
351
- setOnError,
352
- resetTokenState,
353
- back
354
- };
355
- function peekChar(ahead) {
356
- if (pos + (ahead ?? 0) >= end) {
357
- return null;
358
- }
359
- const ch = codePointUnchecked(pos + (ahead ?? 0));
360
- return isNaN(ch) ? null : ch;
361
- }
362
- function scanChar() {
363
- if (pos >= end) {
364
- return null;
365
- }
366
- const ch = codePointUnchecked(pos);
367
- pos += charSize(ch);
368
- return ch;
369
- }
370
- function scan() {
371
- fullStartPos = pos;
372
- while (true) {
373
- tokenStart = pos;
374
- if (pos >= end) {
375
- return token = SyntaxKind.EndOfFileToken;
376
- }
377
- const ch = codePointUnchecked(pos);
378
- switch (ch) {
379
- case CharacterCodes.lineFeed:
380
- case CharacterCodes.carriageReturn:
381
- if (skipTrivia) {
382
- pos++;
383
- continue;
384
- } else {
385
- if (ch === CharacterCodes.carriageReturn && pos + 1 < end && charCodeUnchecked(pos + 1) === CharacterCodes.lineFeed) {
386
- pos += 2;
387
- } else {
388
- pos++;
389
- }
390
- return token = SyntaxKind.NewLineTrivia;
391
- }
392
- case CharacterCodes.tab:
393
- case CharacterCodes.verticalTab:
394
- case CharacterCodes.formFeed:
395
- case CharacterCodes.space:
396
- case CharacterCodes.nonBreakingSpace:
397
- case CharacterCodes.ogham:
398
- case CharacterCodes.enQuad:
399
- case CharacterCodes.emQuad:
400
- case CharacterCodes.enSpace:
401
- case CharacterCodes.emSpace:
402
- case CharacterCodes.threePerEmSpace:
403
- case CharacterCodes.fourPerEmSpace:
404
- case CharacterCodes.sixPerEmSpace:
405
- case CharacterCodes.figureSpace:
406
- case CharacterCodes.punctuationSpace:
407
- case CharacterCodes.thinSpace:
408
- case CharacterCodes.hairSpace:
409
- case CharacterCodes.zeroWidthSpace:
410
- case CharacterCodes.narrowNoBreakSpace:
411
- case CharacterCodes.mathematicalSpace:
412
- case CharacterCodes.ideographicSpace:
413
- case CharacterCodes.byteOrderMark:
414
- if (skipTrivia) {
415
- pos++;
416
- continue;
417
- } else {
418
- while (pos < end && isWhiteSpaceSingleLine(charCodeUnchecked(pos))) {
419
- pos++;
420
- }
421
- return token = SyntaxKind.WhitespaceTrivia;
422
- }
423
- case CharacterCodes.doubleQuote:
424
- case CharacterCodes.singleQuote:
425
- case CharacterCodes.backtick:
426
- tokenValue = scanString();
427
- return token = SyntaxKind.StringLiteral;
428
- case CharacterCodes.ampersand:
429
- if (charCodeUnchecked(pos + 1) === CharacterCodes.a && charCodeUnchecked(pos + 2) === CharacterCodes.m && charCodeUnchecked(pos + 3) === CharacterCodes.p && charCodeUnchecked(pos + 4) === CharacterCodes.semicolon) {
430
- pos += 5;
431
- return token = SyntaxKind.AmpersandEntity;
432
- } else if (charCodeUnchecked(pos + 1) === CharacterCodes.l && charCodeUnchecked(pos + 2) === CharacterCodes.t && charCodeUnchecked(pos + 3) === CharacterCodes.semicolon) {
433
- pos += 4;
434
- return token = SyntaxKind.LessThanEntity;
435
- } else if (charCodeUnchecked(pos + 1) === CharacterCodes.g && charCodeUnchecked(pos + 2) === CharacterCodes.t && charCodeUnchecked(pos + 3) === CharacterCodes.semicolon) {
436
- pos += 4;
437
- return token = SyntaxKind.GreaterThanEntity;
438
- } else if (charCodeUnchecked(pos + 1) === CharacterCodes.q && charCodeUnchecked(pos + 2) === CharacterCodes.u && charCodeUnchecked(pos + 3) === CharacterCodes.o && charCodeUnchecked(pos + 4) === CharacterCodes.t && charCodeUnchecked(pos + 5) === CharacterCodes.semicolon) {
439
- pos += 6;
440
- return token = SyntaxKind.DoubleQuoteEntity;
441
- } else if (charCodeUnchecked(pos + 1) === CharacterCodes.a && charCodeUnchecked(pos + 2) === CharacterCodes.p && charCodeUnchecked(pos + 3) === CharacterCodes.o && charCodeUnchecked(pos + 4) === CharacterCodes.s && charCodeUnchecked(pos + 5) === CharacterCodes.semicolon) {
442
- pos += 6;
443
- return token = SyntaxKind.SingleQuoteEntity;
444
- }
445
- pos++;
446
- error(Diag_Invalid_Character, 1);
447
- return token = SyntaxKind.Unknown;
448
- case CharacterCodes.equals:
449
- pos++;
450
- return token = SyntaxKind.Equal;
451
- case CharacterCodes.colon:
452
- pos++;
453
- return token = SyntaxKind.Colon;
454
- case CharacterCodes.lessThan:
455
- if (charCodeUnchecked(pos + 1) === CharacterCodes.slash) {
456
- pos += 2;
457
- return token = SyntaxKind.CloseNodeStart;
458
- } else if (
459
- // --- "<!-- -->", XMLUI comment
460
- charCodeUnchecked(pos + 1) === CharacterCodes.exclamation && charCodeUnchecked(pos + 2) === CharacterCodes.minus && charCodeUnchecked(pos + 3) === CharacterCodes.minus
461
- ) {
462
- pos += 4;
463
- while (pos < end) {
464
- if (charCodeUnchecked(pos) === CharacterCodes.minus && charCodeUnchecked(pos + 1) === CharacterCodes.minus && charCodeUnchecked(pos + 2) === CharacterCodes.greaterThan) {
465
- pos += 3;
466
- return token = SyntaxKind.CommentTrivia;
467
- }
468
- pos += charSize(charCodeUnchecked(pos));
469
- }
470
- error(Diag_Unterminated_Comment, 4);
471
- return token = SyntaxKind.Unknown;
472
- } else if (
473
- // --- <![CDATA[ section
474
- charCodeUnchecked(pos + 1) === CharacterCodes.exclamation && charCodeUnchecked(pos + 2) === CharacterCodes.openBracket && charCodeUnchecked(pos + 3) === CharacterCodes.C && charCodeUnchecked(pos + 4) === CharacterCodes.D && charCodeUnchecked(pos + 5) === CharacterCodes.A && charCodeUnchecked(pos + 6) === CharacterCodes.T && charCodeUnchecked(pos + 7) === CharacterCodes.A && charCodeUnchecked(pos + 8) === CharacterCodes.openBracket
475
- ) {
476
- pos += 9;
477
- while (pos < end) {
478
- if (charCodeUnchecked(pos) === CharacterCodes.closeBracket && charCodeUnchecked(pos + 1) === CharacterCodes.closeBracket && charCodeUnchecked(pos + 2) === CharacterCodes.greaterThan) {
479
- pos += 3;
480
- return token = SyntaxKind.CData;
481
- }
482
- pos += charSize(charCodeUnchecked(pos));
483
- }
484
- error(Diag_Unterminated_CData, 9);
485
- return token = SyntaxKind.CData;
486
- } else if (
487
- // --- <script>
488
- charCodeUnchecked(pos + 1) === CharacterCodes.s && charCodeUnchecked(pos + 2) === CharacterCodes.c && charCodeUnchecked(pos + 3) === CharacterCodes.r && charCodeUnchecked(pos + 4) === CharacterCodes.i && charCodeUnchecked(pos + 5) === CharacterCodes.p && charCodeUnchecked(pos + 6) === CharacterCodes.t && charCodeUnchecked(pos + 7) === CharacterCodes.greaterThan
489
- ) {
490
- pos += 8;
491
- while (pos < end) {
492
- if (charCodeUnchecked(pos) === CharacterCodes.lessThan && charCodeUnchecked(pos + 1) === CharacterCodes.slash && charCodeUnchecked(pos + 2) === CharacterCodes.s && charCodeUnchecked(pos + 3) === CharacterCodes.c && charCodeUnchecked(pos + 4) === CharacterCodes.r && charCodeUnchecked(pos + 5) === CharacterCodes.i && charCodeUnchecked(pos + 6) === CharacterCodes.p && charCodeUnchecked(pos + 7) === CharacterCodes.t && charCodeUnchecked(pos + 8) === CharacterCodes.greaterThan) {
493
- pos += 9;
494
- return token = SyntaxKind.Script;
495
- }
496
- pos += charSize(charCodeUnchecked(pos));
497
- }
498
- error(Diag_Unterminated_Script, 9);
499
- return token = SyntaxKind.Script;
500
- }
501
- pos++;
502
- return token = SyntaxKind.OpenNodeStart;
503
- case CharacterCodes.slash:
504
- if (charCodeUnchecked(pos + 1) === CharacterCodes.greaterThan) {
505
- pos += 2;
506
- return token = SyntaxKind.NodeClose;
507
- }
508
- pos++;
509
- error(Diag_Invalid_Character, 1);
510
- return token = SyntaxKind.Unknown;
511
- case CharacterCodes.greaterThan:
512
- pos++;
513
- return token = SyntaxKind.NodeEnd;
514
- default:
515
- const identifierKind = scanIdentifier(ch);
516
- if (identifierKind) {
517
- return token = identifierKind;
518
- } else if (isWhiteSpaceSingleLine(ch)) {
519
- pos += charSize(ch);
520
- continue;
521
- } else if (isLineBreak(ch)) {
522
- pos += charSize(ch);
523
- continue;
524
- }
525
- const size = charSize(ch);
526
- pos += size;
527
- error(Diag_Invalid_Character, size);
528
- return token = SyntaxKind.Unknown;
529
- }
530
- }
531
- }
532
- function scanTrivia() {
533
- const currentPos = pos;
534
- const token2 = scan();
535
- if (isTrivia(token2)) {
536
- return token2;
537
- }
538
- resetTokenState(currentPos);
539
- return null;
540
- }
541
- function scanText() {
542
- return SyntaxKind.Unknown;
543
- }
544
- function getText() {
545
- return text;
546
- }
547
- function charCodeUnchecked(pos2) {
548
- return text.charCodeAt(pos2);
549
- }
550
- function codePointUnchecked(pos2) {
551
- return codePointAt(text, pos2);
552
- }
553
- function codePointAt(s, i) {
554
- return s.codePointAt(i) ?? 0;
555
- }
556
- function setText(newText, start2, length2) {
557
- text = newText || "";
558
- end = length2 === void 0 ? text.length : start2 + length2;
559
- resetTokenState(start2 || 0);
560
- }
561
- function setOnError(errorCallback) {
562
- onError = errorCallback;
563
- }
564
- function resetTokenState(position) {
565
- pos = position;
566
- fullStartPos = position;
567
- tokenStart = position;
568
- token = SyntaxKind.Unknown;
569
- tokenValue = void 0;
570
- }
571
- function back() {
572
- resetTokenState(fullStartPos);
573
- }
574
- function scanIdentifier(startCharacter) {
575
- let ch = startCharacter;
576
- if (isIdentifierStart(ch)) {
577
- pos += charSize(ch);
578
- while (pos < end && isIdentifierPart(ch = codePointUnchecked(pos))) {
579
- pos += charSize(ch);
580
- }
581
- tokenValue = text.substring(tokenStart, pos);
582
- return getIdentifierToken();
583
- }
584
- }
585
- function getIdentifierToken() {
586
- return token = SyntaxKind.Identifier;
587
- }
588
- function scanString() {
589
- const quote = charCodeUnchecked(pos);
590
- pos++;
591
- let result = "";
592
- let start2 = pos;
593
- while (true) {
594
- if (pos >= end) {
595
- result += text.substring(start2, pos);
596
- error(Diag_Unterminated_String_Literal, 1);
597
- break;
598
- }
599
- const ch = charCodeUnchecked(pos);
600
- if (ch === quote) {
601
- result += text.substring(start2, pos);
602
- pos++;
603
- break;
604
- }
605
- pos++;
606
- }
607
- return result;
608
- }
609
- function error(message, troublesomePrefixLength = 0) {
610
- if (onError) {
611
- onError(message, troublesomePrefixLength);
612
- }
613
- }
614
- }
615
- function charSize(ch) {
616
- if (ch >= 65536) {
617
- return 2;
618
- }
619
- if (ch === CharacterCodes.EOF) {
620
- return 0;
621
- }
622
- return 1;
623
- }
624
- function isASCIILetter(ch) {
625
- return ch >= CharacterCodes.A && ch <= CharacterCodes.Z || ch >= CharacterCodes.a && ch <= CharacterCodes.z;
626
- }
627
- function isWordCharacter(ch) {
628
- return isASCIILetter(ch) || isDigit(ch) || ch === CharacterCodes._;
629
- }
630
- function isDigit(ch) {
631
- return ch >= CharacterCodes._0 && ch <= CharacterCodes._9;
632
- }
633
- function isIdentifierStart(ch) {
634
- return isASCIILetter(ch) || ch === CharacterCodes.$ || ch === CharacterCodes._;
635
- }
636
- function isIdentifierPart(ch) {
637
- return isWordCharacter(ch) || ch === CharacterCodes.$ || ch === CharacterCodes.minus || ch === CharacterCodes.dot;
638
- }
639
- function isWhiteSpaceSingleLine(ch) {
640
- return ch === CharacterCodes.space || ch === CharacterCodes.tab || ch === CharacterCodes.verticalTab || ch === CharacterCodes.formFeed || ch === CharacterCodes.nonBreakingSpace || ch === CharacterCodes.nextLine || ch === CharacterCodes.ogham || ch >= CharacterCodes.enQuad && ch <= CharacterCodes.zeroWidthSpace || ch === CharacterCodes.narrowNoBreakSpace || ch === CharacterCodes.mathematicalSpace || ch === CharacterCodes.ideographicSpace || ch === CharacterCodes.byteOrderMark;
641
- }
642
- function isLineBreak(ch) {
643
- return ch === CharacterCodes.lineFeed || ch === CharacterCodes.carriageReturn || ch === CharacterCodes.lineSeparator || ch === CharacterCodes.paragraphSeparator;
644
- }
645
- function toDbgString(node, getText, indentationLvl = 0) {
646
- var _a;
647
- const prefix = `${" ".repeat(indentationLvl)} ${getSyntaxKindStrRepr(node.kind)} @${node.start}..${node.end}`;
648
- if (!isInnerNode(node.kind)) {
649
- let tokenText = getText(node);
650
- if (node.kind === SyntaxKind.NewLineTrivia) {
651
- tokenText = "*newline*";
652
- }
653
- return prefix + ` "${tokenText}"`;
654
- } else {
655
- return prefix + "\n" + ((_a = node.children) == null ? void 0 : _a.map((c) => toDbgString(c, getText, indentationLvl + 1)).join("\n"));
656
- }
657
- }
658
- function tagNameNodesWithoutErrorsMatch(name1, name2, getText) {
659
- var _a, _b;
660
- const children1 = ((_a = name1.children) == null ? void 0 : _a.filter((c) => c.kind !== SyntaxKind.ErrorNode)) ?? [];
661
- const children2 = ((_b = name2.children) == null ? void 0 : _b.filter((c) => c.kind !== SyntaxKind.ErrorNode)) ?? [];
662
- if (children1.length !== children2.length) {
663
- return false;
664
- }
665
- for (let i = 0; i < children1.length; ++i) {
666
- if (getText(children1[i]) !== getText(children2[i])) {
667
- return false;
668
- }
669
- }
670
- return true;
671
- }
672
- function findTokenAtPos(node, position) {
673
- const chain = [node];
674
- let sharedParents;
675
- if (node.start > position || position > node.end) {
676
- return void 0;
677
- }
678
- const res = {
679
- chainAtPos: chain,
680
- chainBeforePos: void 0,
681
- sharedParents: void 0
682
- };
683
- while (node.children !== void 0 && node.children.length > 0) {
684
- const nodeAtPosIdx = node.children.findIndex(
685
- (n) => n.start <= position && (position < n.end || n.kind === SyntaxKind.EndOfFileToken && n.start <= n.end)
686
- );
687
- const nodeAtPos = node.children[nodeAtPosIdx];
688
- const nodeBeforePos = node.children[nodeAtPosIdx - 1];
689
- if (nodeBeforePos !== void 0 && position <= nodeAtPos.pos) {
690
- sharedParents = chain.length;
691
- return {
692
- chainBeforePos: chain.concat(findLastToken(nodeBeforePos)),
693
- sharedParents,
694
- chainAtPos: chain.concat(findFirstToken(nodeAtPos))
695
- };
696
- }
697
- node = nodeAtPos;
698
- res.chainAtPos.push(node);
699
- }
700
- return res;
701
- }
702
- function findFirstToken(node) {
703
- const chain = [node];
704
- while (node.children !== void 0 && node.children.length > 0) {
705
- node = node.children[0];
706
- chain.push(node);
707
- }
708
- return chain;
709
- }
710
- function findLastToken(node) {
711
- const chain = [node];
712
- while (node.children !== void 0 && node.children.length > 0) {
713
- node = node.children[node.children.length - 1];
714
- chain.push(node);
715
- }
716
- return chain;
717
- }
718
- const MakeErr = {
719
- uppercaseAttr: function(attrName) {
720
- return {
721
- category: DiagnosticCategory.Error,
722
- code: ErrCodes.uppercaseAttr,
723
- message: `Attribute name '${attrName}' cannot start with an uppercase letter.`
724
- };
725
- },
726
- duplAttr: function(attrName) {
727
- return {
728
- category: DiagnosticCategory.Error,
729
- code: ErrCodes.duplAttr,
730
- message: `Duplicated attribute: '${attrName}'.`
731
- };
732
- },
733
- tagNameMismatch: function(openTagName, closeTagName) {
734
- return {
735
- category: DiagnosticCategory.Error,
736
- code: ErrCodes.tagNameMismatch,
737
- message: `Opening and closing tag names should match. Opening tag has a name '${openTagName}', but the closing tag name is '${closeTagName}'.`
738
- };
739
- },
740
- invalidChar: function(char) {
741
- return {
742
- category: DiagnosticCategory.Error,
743
- code: ErrCodes.invalidChar,
744
- message: `Invalid character '${char}'.`
745
- };
746
- }
747
- };
748
- [SyntaxKind.CData, SyntaxKind.Script, SyntaxKind.OpenNodeStart];
749
- function createXmlUiParser(source) {
750
- return {
751
- parse: () => parseXmlUiMarkup(source),
752
- getText: (n, ignoreTrivia = true) => source.substring(ignoreTrivia ? n.pos ?? n.start ?? 0 : n.start ?? n.pos ?? 0, n.end)
753
- };
754
- }
755
- function parseXmlUiMarkup(text) {
756
- const errors = [];
757
- const parents = [];
758
- let peekedToken;
759
- let node = { children: [] };
760
- let errFromScanner = void 0;
761
- const onScannerErr = function(message, length) {
762
- errFromScanner = {
763
- message,
764
- prefixLength: length
765
- };
766
- };
767
- const scanner = createScanner(false, text, onScannerErr);
768
- function getText(n, ignoreTrivia = true) {
769
- return text.substring(ignoreTrivia ? n.pos : n.start, n.end);
770
- }
771
- function parseContent() {
772
- startNode();
773
- loop: while (true) {
774
- const token = peekInContent();
775
- switch (token.kind) {
776
- case SyntaxKind.TextNode:
777
- case SyntaxKind.StringLiteral:
778
- bump(token.kind);
779
- break;
780
- case SyntaxKind.CloseNodeStart:
781
- break loop;
782
- case SyntaxKind.EndOfFileToken:
783
- break loop;
784
- default:
785
- parseTagLike();
786
- break;
787
- }
788
- }
789
- if (node.children && node.children.length > 0) {
790
- completeNode(SyntaxKind.ContentListNode);
791
- } else {
792
- abandonNode();
793
- }
794
- }
795
- function parseSourceContent() {
796
- while (true) {
797
- const token = peekInContent();
798
- switch (token.kind) {
799
- case SyntaxKind.EndOfFileToken:
800
- bumpAny();
801
- return;
802
- default:
803
- parseTagLike();
804
- break;
805
- }
806
- }
807
- }
808
- function parseTagLike() {
809
- if (!eat(SyntaxKind.CData) && !eat(SyntaxKind.Script)) {
810
- if (at(SyntaxKind.OpenNodeStart)) {
811
- parseTag();
812
- } else {
813
- errorAndBump(Diag_OpenNodeStart_Token_Expected);
814
- }
815
- }
816
- }
817
- function parseTag() {
818
- startNode();
819
- bump(SyntaxKind.OpenNodeStart);
820
- let openTagName = void 0;
821
- if (at(SyntaxKind.Identifier)) {
822
- openTagName = parseTagName();
823
- } else {
824
- error(Diag_Tag_Identifier_Expected);
825
- }
826
- parseAttrList();
827
- if (eat(SyntaxKind.NodeClose)) {
828
- completeNode(SyntaxKind.ElementNode);
829
- return;
830
- } else if (eat(SyntaxKind.NodeEnd)) {
831
- parseContent();
832
- if (eat(SyntaxKind.CloseNodeStart)) {
833
- if (at(SyntaxKind.Identifier)) {
834
- const closeTagName = parseTagName();
835
- const namesMismatch = openTagName !== void 0 && !tagNameNodesWithoutErrorsMatch(openTagName, closeTagName, getText);
836
- if (namesMismatch) {
837
- error(MakeErr.tagNameMismatch(getText(openTagName), getText(closeTagName)));
838
- }
839
- } else {
840
- errRecover(Diag_Tag_Identifier_Expected, [SyntaxKind.NodeEnd]);
841
- }
842
- if (!eat(SyntaxKind.NodeEnd)) {
843
- error(Diag_End_Token_Expected);
844
- }
845
- } else {
846
- error(Diag_CloseNodeStart_Token_Expected);
847
- }
848
- completeNode(SyntaxKind.ElementNode);
849
- return;
850
- } else {
851
- error(Diag_End_Or_Close_Token_Expected);
852
- }
853
- }
854
- function parseTagName() {
855
- startNode();
856
- bump(SyntaxKind.Identifier);
857
- if (eat(SyntaxKind.Colon)) {
858
- if (!eat(SyntaxKind.Identifier)) ;
859
- }
860
- return completeNode(SyntaxKind.TagNameNode);
861
- }
862
- function parseAttrList() {
863
- startNode();
864
- const attrNames = [];
865
- while (!atAnyOf([SyntaxKind.EndOfFileToken, SyntaxKind.NodeEnd, SyntaxKind.NodeClose])) {
866
- parseAttr(attrNames);
867
- }
868
- if (node.children.length === 0) {
869
- abandonNode();
870
- } else {
871
- completeNode(SyntaxKind.AttributeListNode);
872
- }
873
- }
874
- function parseAttr(attrNames) {
875
- startNode();
876
- if (at(SyntaxKind.Identifier)) {
877
- parseAttrName(attrNames);
878
- } else {
879
- const attrNameFollow = [SyntaxKind.Equal];
880
- const eqFollows = errRecover(Diag_Attr_Identifier_Expected, attrNameFollow);
881
- if (!eqFollows) {
882
- return;
883
- }
884
- }
885
- if (eat(SyntaxKind.Equal)) {
886
- if (!eat(SyntaxKind.StringLiteral)) {
887
- const attrFollowWithoutIdent = [SyntaxKind.NodeEnd, SyntaxKind.NodeClose];
888
- errRecover(Diag_Attr_Value_Expected, attrFollowWithoutIdent);
889
- }
890
- }
891
- completeNode(SyntaxKind.AttributeNode);
892
- }
893
- function parseAttrName(attrNames) {
894
- const nameIdent = peek();
895
- let nsIdent = void 0;
896
- startNode();
897
- bump(SyntaxKind.Identifier);
898
- if (eat(SyntaxKind.Colon)) {
899
- if (at(SyntaxKind.Identifier)) {
900
- nsIdent = bump(SyntaxKind.Identifier);
901
- } else {
902
- errRecover(Diag_Attr_Identifier_Expected, [
903
- SyntaxKind.NodeClose,
904
- SyntaxKind.NodeEnd,
905
- SyntaxKind.Equal
906
- ]);
907
- }
908
- }
909
- checkAttrName(attrNames, { nsIdent, nameIdent });
910
- completeNode(SyntaxKind.AttributeKeyNode);
911
- }
912
- function checkAttrName(attrNames, { nameIdent, nsIdent }) {
913
- const attrName = getText(nameIdent);
914
- const attrNs = nsIdent === void 0 ? void 0 : getText(nsIdent);
915
- const attrKeyMatches = ({ ns, name }) => name === attrName && ns === attrNs;
916
- const isDuplicate = attrNames.findIndex(attrKeyMatches) !== -1;
917
- const nameStartsWithUppercase = "A" <= attrName[0] && attrName[0] <= "Z";
918
- const faultyName = isDuplicate || nameStartsWithUppercase;
919
- if (isDuplicate) {
920
- errorAt(MakeErr.duplAttr(attrName), nameIdent.pos, nameIdent.end);
921
- }
922
- if (nameStartsWithUppercase) {
923
- errorAt(MakeErr.uppercaseAttr(attrName), nameIdent.pos, nameIdent.end);
924
- }
925
- if (!faultyName) {
926
- attrNames.push({ name: attrName });
927
- }
928
- }
929
- function at(kindToCheck) {
930
- return peek().kind === kindToCheck;
931
- }
932
- function eat(kind) {
933
- const kindMatched = at(kind);
934
- if (kindMatched) {
935
- bumpAny();
936
- }
937
- return kindMatched;
938
- }
939
- function atAnyOf(kinds) {
940
- return kinds.includes(peek().kind);
941
- }
942
- function errRecover(errCodeAndMsg, recoveryTokens) {
943
- if (atAnyOf(recoveryTokens) || at(SyntaxKind.EndOfFileToken)) {
944
- error(errCodeAndMsg);
945
- return true;
946
- }
947
- startNode();
948
- error(errCodeAndMsg);
949
- bumpAny();
950
- completeNode(SyntaxKind.ErrorNode);
951
- return false;
952
- }
953
- function error({ code, message, category }) {
954
- const { pos, end } = peek();
955
- errors.push({
956
- category,
957
- code,
958
- message,
959
- pos,
960
- end
961
- });
962
- }
963
- function errorAt({ code, message, category }, pos, end) {
964
- errors.push({
965
- category,
966
- code,
967
- message,
968
- pos,
969
- end
970
- });
971
- }
972
- function peek(inContent = false) {
973
- if (peekedToken !== void 0) {
974
- return peekedToken;
975
- }
976
- peekedToken = collectToken(inContent);
977
- return peekedToken;
978
- }
979
- function peekInContent() {
980
- const token = peek(true);
981
- if (token.kind === SyntaxKind.EndOfFileToken || token.kind === SyntaxKind.OpenNodeStart || token.kind === SyntaxKind.Script || token.kind === SyntaxKind.CData || token.kind === SyntaxKind.CloseNodeStart) {
982
- return token;
983
- }
984
- const trivia = token.triviaBefore;
985
- const triviaLength = (trivia == null ? void 0 : trivia.length) ?? 0;
986
- let i = 0;
987
- let leadingComments = [];
988
- let firstNonCommentTriviaIdx = -1;
989
- for (; i < triviaLength; ++i) {
990
- if (trivia[i].kind === SyntaxKind.CommentTrivia) {
991
- leadingComments.push(trivia[i]);
992
- } else {
993
- firstNonCommentTriviaIdx = i;
994
- break;
995
- }
996
- }
997
- let secondCommentGroupStartIdx = -1;
998
- for (; i < triviaLength; ++i) {
999
- if (trivia[i].kind === SyntaxKind.CommentTrivia) {
1000
- secondCommentGroupStartIdx = i;
1001
- break;
1002
- }
1003
- }
1004
- let parseAsStringLiteral = false;
1005
- if (token.kind === SyntaxKind.StringLiteral) {
1006
- const beforeLookahead = token.end;
1007
- const nextToken = collectToken(true);
1008
- parseAsStringLiteral = nextToken.kind === SyntaxKind.CData || nextToken.kind === SyntaxKind.CloseNodeStart || nextToken.kind === SyntaxKind.Script || nextToken.kind === SyntaxKind.OpenNodeStart;
1009
- scanner.resetTokenState(beforeLookahead);
1010
- }
1011
- let pos;
1012
- if (parseAsStringLiteral) {
1013
- pos = token.pos;
1014
- } else if (leadingComments.length > 0) {
1015
- pos = leadingComments[leadingComments.length - 1].end;
1016
- } else if (firstNonCommentTriviaIdx !== -1) {
1017
- pos = trivia[firstNonCommentTriviaIdx].pos;
1018
- } else {
1019
- pos = token.start;
1020
- }
1021
- let start = pos;
1022
- let triviaBefore = void 0;
1023
- if (leadingComments.length > 0) {
1024
- triviaBefore = leadingComments;
1025
- start = leadingComments[0].pos;
1026
- }
1027
- let kind = SyntaxKind.TextNode;
1028
- let end = -1;
1029
- if (secondCommentGroupStartIdx !== -1) {
1030
- end = trivia[secondCommentGroupStartIdx].pos;
1031
- scanner.resetTokenState(end);
1032
- } else if (parseAsStringLiteral) {
1033
- kind = SyntaxKind.StringLiteral;
1034
- end = token.end;
1035
- } else {
1036
- while (true) {
1037
- const nextChar = scanner.peekChar();
1038
- if (nextChar === null || nextChar === CharacterCodes.lessThan) {
1039
- break;
1040
- }
1041
- scanner.scanChar();
1042
- }
1043
- end = scanner.getTokenEnd();
1044
- }
1045
- peekedToken = { kind, start, pos, end, triviaBefore };
1046
- return peekedToken;
1047
- }
1048
- function bump(kind) {
1049
- const token = bumpAny();
1050
- if (token.kind !== kind) {
1051
- throw new Error(
1052
- `expected ${getSyntaxKindStrRepr(kind)}, bumped a ${getSyntaxKindStrRepr(token.kind)}`
1053
- );
1054
- }
1055
- return token;
1056
- }
1057
- function bumpAny() {
1058
- if (peekedToken) {
1059
- node.children.push(peekedToken);
1060
- const bumpedToken = peekedToken;
1061
- peekedToken = void 0;
1062
- return bumpedToken;
1063
- }
1064
- const token = collectToken(false);
1065
- node.children.push(token);
1066
- return token;
1067
- }
1068
- function startNode() {
1069
- parents.push(node);
1070
- node = {
1071
- children: []
1072
- };
1073
- }
1074
- function completeNode(type) {
1075
- const completedNode2 = createNode(type, node.children);
1076
- const parentNode = parents[parents.length - 1];
1077
- parentNode.children.push(completedNode2);
1078
- node = parentNode;
1079
- parents.pop();
1080
- return completedNode2;
1081
- }
1082
- function collectToken(inContent) {
1083
- let kind;
1084
- let triviaCollected = [];
1085
- let start = null;
1086
- while (true) {
1087
- kind = scanner.scan();
1088
- if (start === null) {
1089
- start = scanner.getTokenStart();
1090
- }
1091
- if (errFromScanner !== void 0) {
1092
- let err;
1093
- if (errFromScanner.message.code === ErrCodes.invalidChar) {
1094
- err = MakeErr.invalidChar(scanner.getTokenText());
1095
- } else {
1096
- err = errFromScanner.message;
1097
- }
1098
- const pos = scanner.getTokenStart();
1099
- const token = {
1100
- kind,
1101
- start,
1102
- pos,
1103
- end: scanner.getTokenEnd(),
1104
- triviaBefore: triviaCollected.length > 0 ? triviaCollected : void 0
1105
- };
1106
- triviaCollected = [];
1107
- if (inContent && err.code === ErrCodes.invalidChar) {
1108
- errFromScanner = void 0;
1109
- return token;
1110
- }
1111
- const badPrefixEnd = pos + errFromScanner.prefixLength;
1112
- token.end = badPrefixEnd;
1113
- scanner.resetTokenState(badPrefixEnd);
1114
- startNode();
1115
- node.children.push(token);
1116
- errorAt(err, pos, badPrefixEnd);
1117
- completeNode(SyntaxKind.ErrorNode);
1118
- errFromScanner = void 0;
1119
- return collectToken(inContent);
1120
- }
1121
- switch (kind) {
1122
- case SyntaxKind.CommentTrivia:
1123
- case SyntaxKind.NewLineTrivia:
1124
- case SyntaxKind.WhitespaceTrivia:
1125
- triviaCollected.push({
1126
- kind,
1127
- start,
1128
- pos: scanner.getTokenStart(),
1129
- end: scanner.getTokenEnd()
1130
- });
1131
- break;
1132
- default:
1133
- return {
1134
- kind,
1135
- start,
1136
- pos: scanner.getTokenStart(),
1137
- end: scanner.getTokenEnd(),
1138
- triviaBefore: triviaCollected.length > 0 ? triviaCollected : void 0
1139
- };
1140
- }
1141
- }
1142
- }
1143
- function errorAndBump(errCodeAndMsg) {
1144
- errRecover(errCodeAndMsg, []);
1145
- }
1146
- function abandonNode() {
1147
- const parentNode = parents[parents.length - 1];
1148
- parentNode.children.push(...node.children);
1149
- node = parentNode;
1150
- parents.pop();
1151
- }
1152
- parseSourceContent();
1153
- const completedNode = createNode(SyntaxKind.ContentListNode, node.children);
1154
- return { node: completedNode, errors };
1155
- }
1156
- function createNode(kind, children) {
1157
- const firstChild = children[0];
1158
- const lastChild = children[children.length - 1];
1159
- return {
1160
- kind,
1161
- start: firstChild.start,
1162
- pos: firstChild.pos,
1163
- end: lastChild.end,
1164
- children
1165
- };
1166
- }
1167
- export {
1168
- CharacterCodes as C,
1169
- DiagnosticCategory as D,
1170
- ErrCodes as E,
1171
- SyntaxKind as S,
1172
- Diag_Invalid_Character as a,
1173
- Diag_Unterminated_String_Literal as b,
1174
- createXmlUiParser as c,
1175
- diagnosticCategoryName as d,
1176
- Diag_Unterminated_Comment as e,
1177
- Diag_Unterminated_CData as f,
1178
- Diag_Unterminated_Script as g,
1179
- Diag_End_Token_Expected as h,
1180
- Diag_CloseNodeStart_Token_Expected as i,
1181
- Diag_Tag_Identifier_Expected as j,
1182
- Diag_Attr_Value_Expected as k,
1183
- Diag_Eq_Token_Expected as l,
1184
- Diag_OpenNodeStart_Token_Expected as m,
1185
- Diag_End_Or_Close_Token_Expected as n,
1186
- Diag_Attr_Identifier_Expected as o,
1187
- parseXmlUiMarkup as p,
1188
- createScanner as q,
1189
- isIdentifierStart as r,
1190
- isTrivia as s,
1191
- isInnerNode as t,
1192
- getSyntaxKindStrRepr as u,
1193
- toDbgString as v,
1194
- tagNameNodesWithoutErrorsMatch as w,
1195
- findTokenAtPos as x
1196
- };