@bscotch/gml-parser 1.14.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.
Files changed (208) hide show
  1. package/LICENSE.md +29 -0
  2. package/README.md +151 -0
  3. package/assets/GmlSpec.xml +11419 -0
  4. package/dist/index.d.ts +16 -0
  5. package/dist/index.d.ts.map +1 -0
  6. package/dist/index.js +13 -0
  7. package/dist/index.js.map +1 -0
  8. package/dist/jsdoc.d.ts +79 -0
  9. package/dist/jsdoc.d.ts.map +1 -0
  10. package/dist/jsdoc.feather.d.ts +23 -0
  11. package/dist/jsdoc.feather.d.ts.map +1 -0
  12. package/dist/jsdoc.feather.js +143 -0
  13. package/dist/jsdoc.feather.js.map +1 -0
  14. package/dist/jsdoc.js +468 -0
  15. package/dist/jsdoc.js.map +1 -0
  16. package/dist/jsdoc.test.d.ts +2 -0
  17. package/dist/jsdoc.test.d.ts.map +1 -0
  18. package/dist/jsdoc.test.js +185 -0
  19. package/dist/jsdoc.test.js.map +1 -0
  20. package/dist/lexer.d.ts +3 -0
  21. package/dist/lexer.d.ts.map +1 -0
  22. package/dist/lexer.js +14 -0
  23. package/dist/lexer.js.map +1 -0
  24. package/dist/lexer.test.d.ts +2 -0
  25. package/dist/lexer.test.d.ts.map +1 -0
  26. package/dist/lexer.test.js +78 -0
  27. package/dist/lexer.test.js.map +1 -0
  28. package/dist/lib.objects.d.ts +190 -0
  29. package/dist/lib.objects.d.ts.map +1 -0
  30. package/dist/lib.objects.js +242 -0
  31. package/dist/lib.objects.js.map +1 -0
  32. package/dist/logger.d.ts +13 -0
  33. package/dist/logger.d.ts.map +1 -0
  34. package/dist/logger.js +14 -0
  35. package/dist/logger.js.map +1 -0
  36. package/dist/modules.d.ts +19 -0
  37. package/dist/modules.d.ts.map +1 -0
  38. package/dist/modules.js +320 -0
  39. package/dist/modules.js.map +1 -0
  40. package/dist/modules.test.d.ts +2 -0
  41. package/dist/modules.test.d.ts.map +1 -0
  42. package/dist/modules.test.js +57 -0
  43. package/dist/modules.test.js.map +1 -0
  44. package/dist/modules.types.d.ts +78 -0
  45. package/dist/modules.types.d.ts.map +1 -0
  46. package/dist/modules.types.js +2 -0
  47. package/dist/modules.types.js.map +1 -0
  48. package/dist/modules.util.d.ts +5 -0
  49. package/dist/modules.util.d.ts.map +1 -0
  50. package/dist/modules.util.js +13 -0
  51. package/dist/modules.util.js.map +1 -0
  52. package/dist/parser.d.ts +121 -0
  53. package/dist/parser.d.ts.map +1 -0
  54. package/dist/parser.js +571 -0
  55. package/dist/parser.js.map +1 -0
  56. package/dist/parser.test.d.ts +2 -0
  57. package/dist/parser.test.d.ts.map +1 -0
  58. package/dist/parser.test.js +143 -0
  59. package/dist/parser.test.js.map +1 -0
  60. package/dist/parser.utility.d.ts +29 -0
  61. package/dist/parser.utility.d.ts.map +1 -0
  62. package/dist/parser.utility.js +125 -0
  63. package/dist/parser.utility.js.map +1 -0
  64. package/dist/project.asset.d.ts +115 -0
  65. package/dist/project.asset.d.ts.map +1 -0
  66. package/dist/project.asset.js +802 -0
  67. package/dist/project.asset.js.map +1 -0
  68. package/dist/project.code.d.ts +130 -0
  69. package/dist/project.code.d.ts.map +1 -0
  70. package/dist/project.code.js +570 -0
  71. package/dist/project.code.js.map +1 -0
  72. package/dist/project.d.ts +533 -0
  73. package/dist/project.d.ts.map +1 -0
  74. package/dist/project.diagnostics.d.ts +32 -0
  75. package/dist/project.diagnostics.d.ts.map +1 -0
  76. package/dist/project.diagnostics.js +23 -0
  77. package/dist/project.diagnostics.js.map +1 -0
  78. package/dist/project.js +1216 -0
  79. package/dist/project.js.map +1 -0
  80. package/dist/project.location.d.ts +133 -0
  81. package/dist/project.location.d.ts.map +1 -0
  82. package/dist/project.location.js +219 -0
  83. package/dist/project.location.js.map +1 -0
  84. package/dist/project.native.d.ts +26 -0
  85. package/dist/project.native.d.ts.map +1 -0
  86. package/dist/project.native.js +321 -0
  87. package/dist/project.native.js.map +1 -0
  88. package/dist/project.spec.d.ts +1298 -0
  89. package/dist/project.spec.d.ts.map +1 -0
  90. package/dist/project.spec.js +263 -0
  91. package/dist/project.spec.js.map +1 -0
  92. package/dist/project.test.d.ts +2 -0
  93. package/dist/project.test.d.ts.map +1 -0
  94. package/dist/project.test.js +633 -0
  95. package/dist/project.test.js.map +1 -0
  96. package/dist/shaderDefaults.d.ts +3 -0
  97. package/dist/shaderDefaults.d.ts.map +1 -0
  98. package/dist/shaderDefaults.js +32 -0
  99. package/dist/shaderDefaults.js.map +1 -0
  100. package/dist/signifiers.d.ts +54 -0
  101. package/dist/signifiers.d.ts.map +1 -0
  102. package/dist/signifiers.flags.d.ts +38 -0
  103. package/dist/signifiers.flags.d.ts.map +1 -0
  104. package/dist/signifiers.flags.js +131 -0
  105. package/dist/signifiers.flags.js.map +1 -0
  106. package/dist/signifiers.js +117 -0
  107. package/dist/signifiers.js.map +1 -0
  108. package/dist/spine.d.ts +28 -0
  109. package/dist/spine.d.ts.map +1 -0
  110. package/dist/spine.js +64 -0
  111. package/dist/spine.js.map +1 -0
  112. package/dist/spine.test.d.ts +2 -0
  113. package/dist/spine.test.d.ts.map +1 -0
  114. package/dist/spine.test.js +420 -0
  115. package/dist/spine.test.js.map +1 -0
  116. package/dist/spine.types.d.ts +89 -0
  117. package/dist/spine.types.d.ts.map +1 -0
  118. package/dist/spine.types.js +2 -0
  119. package/dist/spine.types.js.map +1 -0
  120. package/dist/test.lib.d.ts +3 -0
  121. package/dist/test.lib.d.ts.map +1 -0
  122. package/dist/test.lib.js +16 -0
  123. package/dist/test.lib.js.map +1 -0
  124. package/dist/tokens.categories.d.ts +22 -0
  125. package/dist/tokens.categories.d.ts.map +1 -0
  126. package/dist/tokens.categories.js +78 -0
  127. package/dist/tokens.categories.js.map +1 -0
  128. package/dist/tokens.code.d.ts +2 -0
  129. package/dist/tokens.code.d.ts.map +1 -0
  130. package/dist/tokens.code.js +523 -0
  131. package/dist/tokens.code.js.map +1 -0
  132. package/dist/tokens.d.ts +130 -0
  133. package/dist/tokens.d.ts.map +1 -0
  134. package/dist/tokens.js +13 -0
  135. package/dist/tokens.js.map +1 -0
  136. package/dist/tokens.lib.d.ts +15 -0
  137. package/dist/tokens.lib.d.ts.map +1 -0
  138. package/dist/tokens.lib.js +12 -0
  139. package/dist/tokens.lib.js.map +1 -0
  140. package/dist/tokens.shared.d.ts +4 -0
  141. package/dist/tokens.shared.d.ts.map +1 -0
  142. package/dist/tokens.shared.js +35 -0
  143. package/dist/tokens.shared.js.map +1 -0
  144. package/dist/tokens.strings.d.ts +5 -0
  145. package/dist/tokens.strings.d.ts.map +1 -0
  146. package/dist/tokens.strings.js +111 -0
  147. package/dist/tokens.strings.js.map +1 -0
  148. package/dist/types.checks.d.ts +50 -0
  149. package/dist/types.checks.d.ts.map +1 -0
  150. package/dist/types.checks.js +246 -0
  151. package/dist/types.checks.js.map +1 -0
  152. package/dist/types.d.ts +152 -0
  153. package/dist/types.d.ts.map +1 -0
  154. package/dist/types.feather.d.ts +21 -0
  155. package/dist/types.feather.d.ts.map +1 -0
  156. package/dist/types.feather.js +156 -0
  157. package/dist/types.feather.js.map +1 -0
  158. package/dist/types.hover.d.ts +4 -0
  159. package/dist/types.hover.d.ts.map +1 -0
  160. package/dist/types.hover.js +99 -0
  161. package/dist/types.hover.js.map +1 -0
  162. package/dist/types.js +457 -0
  163. package/dist/types.js.map +1 -0
  164. package/dist/types.primitives.d.ts +10 -0
  165. package/dist/types.primitives.d.ts.map +1 -0
  166. package/dist/types.primitives.js +88 -0
  167. package/dist/types.primitives.js.map +1 -0
  168. package/dist/types.sprites.d.ts +8 -0
  169. package/dist/types.sprites.d.ts.map +1 -0
  170. package/dist/types.sprites.js +417 -0
  171. package/dist/types.sprites.js.map +1 -0
  172. package/dist/types.test.d.ts +2 -0
  173. package/dist/types.test.d.ts.map +1 -0
  174. package/dist/types.test.js +62 -0
  175. package/dist/types.test.js.map +1 -0
  176. package/dist/util.d.ts +50 -0
  177. package/dist/util.d.ts.map +1 -0
  178. package/dist/util.js +168 -0
  179. package/dist/util.js.map +1 -0
  180. package/dist/util.test.d.ts +3 -0
  181. package/dist/util.test.d.ts.map +1 -0
  182. package/dist/util.test.js +63 -0
  183. package/dist/util.test.js.map +1 -0
  184. package/dist/visitor.assign.d.ts +24 -0
  185. package/dist/visitor.assign.d.ts.map +1 -0
  186. package/dist/visitor.assign.js +112 -0
  187. package/dist/visitor.assign.js.map +1 -0
  188. package/dist/visitor.d.ts +89 -0
  189. package/dist/visitor.d.ts.map +1 -0
  190. package/dist/visitor.functionExpression.d.ts +7 -0
  191. package/dist/visitor.functionExpression.d.ts.map +1 -0
  192. package/dist/visitor.functionExpression.js +216 -0
  193. package/dist/visitor.functionExpression.js.map +1 -0
  194. package/dist/visitor.globals.d.ts +59 -0
  195. package/dist/visitor.globals.d.ts.map +1 -0
  196. package/dist/visitor.globals.js +271 -0
  197. package/dist/visitor.globals.js.map +1 -0
  198. package/dist/visitor.identifierAccessor.d.ts +6 -0
  199. package/dist/visitor.identifierAccessor.d.ts.map +1 -0
  200. package/dist/visitor.identifierAccessor.js +381 -0
  201. package/dist/visitor.identifierAccessor.js.map +1 -0
  202. package/dist/visitor.js +605 -0
  203. package/dist/visitor.js.map +1 -0
  204. package/dist/visitor.processor.d.ts +66 -0
  205. package/dist/visitor.processor.d.ts.map +1 -0
  206. package/dist/visitor.processor.js +147 -0
  207. package/dist/visitor.processor.js.map +1 -0
  208. package/package.json +63 -0
package/dist/jsdoc.js ADDED
@@ -0,0 +1,468 @@
1
+ import { keysOf } from '@bscotch/utility';
2
+ import { flattenFeatherTypes } from './jsdoc.feather.js';
3
+ import { assert } from './util.js';
4
+ const patterns = {
5
+ param: `@(param(eter)?|arg(ument)?)\\b`,
6
+ description: `@desc(ription)?\\b`,
7
+ function: `@func(tion)?\\b`,
8
+ returns: `@returns?\\b`,
9
+ pure: `@pure\\b`,
10
+ mixin: `@mixin\\b`,
11
+ ignore: `@ignore\\b`,
12
+ deprecated: `@deprecated\\b`,
13
+ self: `@(context|self)\\b`,
14
+ type: `@type\\b`,
15
+ localvar: `@(localvar|var)\\b`,
16
+ globalvar: `@globalvar\\b`,
17
+ instancevar: `@(instancevar|prop(erty)?)\\b`,
18
+ template: `@template\\b`,
19
+ unknown: `@\\w+\\b`,
20
+ };
21
+ const typeGroupPattern = `(?<typeGroup>{\\s*(?<typeUnion>[^}]*?)?\\s*})`;
22
+ const linePrefixPattern = `^(\\s*(?<delim>///|\\*)\\s*)?`;
23
+ const descriptionPattern = `(?:\\s*-\\s*)?(?<info>.*)`;
24
+ const paramNamePattern = `(?<name>[a-zA-Z_][a-zA-Z_0-9]*)`;
25
+ const paramDefaultPattern = `(?:\\s*=\\s*(?<default>[^\\]]+?)\\s*)`;
26
+ const dotdotdot = `\\.\\.\\.`;
27
+ const optionalParamNamePattern = `\\[\\s*(?<optionalName>(?:[a-zA-Z_][a-zA-Z_0-9]*|${dotdotdot}))\\s*${paramDefaultPattern}?\\]`;
28
+ const names = keysOf(patterns);
29
+ for (const tagName of names) {
30
+ // Add the line prefix and a tag capture group
31
+ patterns[tagName] = `${linePrefixPattern}(?<tag>(?<${tagName}>${patterns[tagName]}))`;
32
+ }
33
+ // Types with required typeGroups
34
+ const typeTags = ['returns', 'type'];
35
+ for (const tagName of typeTags) {
36
+ patterns[tagName] = `${patterns[tagName]}\\s*${typeGroupPattern}`;
37
+ }
38
+ // Params
39
+ patterns.param = `${patterns.param}(\\s+${typeGroupPattern})?\\s+(${paramNamePattern}|${optionalParamNamePattern})`;
40
+ // Variable declaration patterns
41
+ for (const tagName of [
42
+ 'localvar',
43
+ 'globalvar',
44
+ 'instancevar',
45
+ 'template',
46
+ ]) {
47
+ patterns[tagName] = `${patterns[tagName]}(\\s+${typeGroupPattern})?\\s+${paramNamePattern}`;
48
+ }
49
+ // Self (has a type but no group. Make brackets optional to be more forgiving)
50
+ patterns.self = `${patterns.self}\\s+(?<extraBracket>\\{\\s*)?(?<type>[a-zA-Z_][a-zA-Z_0-9.]*)(?:\\s*\\})?`;
51
+ // Descriptions
52
+ for (const tagName of names) {
53
+ patterns[tagName] = `${patterns[tagName]}(\\s+${descriptionPattern})?`;
54
+ }
55
+ const descriptionLine = `${linePrefixPattern}\\s*${descriptionPattern}`;
56
+ const regexes = names.reduce((acc, tagName) => {
57
+ // The 'd' flag is only supported in Node 18+, which VSCode doesn't support yet.
58
+ acc[tagName] = new RegExp(patterns[tagName]);
59
+ return acc;
60
+ }, {});
61
+ /**
62
+ * Given an IToken containing an entire JSDoc block,
63
+ * convert it to a list of lines, each with its own position.
64
+ */
65
+ function jsdocBlockToLines(raw) {
66
+ raw = { ...raw }; // Clone so we don't mutate the original
67
+ const startPosition = {
68
+ line: raw.startLine,
69
+ column: raw.startColumn,
70
+ offset: raw.startOffset,
71
+ };
72
+ // If this starts with a /**, remove that.
73
+ raw.image = raw.image.replace(/^\/\*\*/, ' ');
74
+ // If this ends with a */, remove that.
75
+ raw.image = raw.image.replace(/\*\/$/, ' ');
76
+ const rawLines = raw.image.split(/(\r?\n)/);
77
+ const jsdocLines = [];
78
+ let jsdocLine = {
79
+ content: '',
80
+ start: startPosition,
81
+ };
82
+ for (let l = 0; l < rawLines.length; l++) {
83
+ const line = rawLines[l];
84
+ if (!line)
85
+ continue;
86
+ if (line.match(/\r?\n/)) {
87
+ // Then we need to add more space to the current jsdocline
88
+ // start position
89
+ jsdocLine.start.line++;
90
+ jsdocLine.start.column = 1;
91
+ jsdocLine.start.offset += line.length;
92
+ continue;
93
+ }
94
+ jsdocLine.content += line;
95
+ jsdocLines.push(jsdocLine);
96
+ // Create the next jsdoc line
97
+ jsdocLine = {
98
+ content: '',
99
+ start: {
100
+ line: jsdocLine.start.line,
101
+ column: jsdocLine.start.column + line.length,
102
+ offset: jsdocLine.start.offset + line.length,
103
+ },
104
+ };
105
+ }
106
+ return jsdocLines;
107
+ }
108
+ /**
109
+ * Given an array of ITokens, each containing a single line
110
+ * from a block of ///-style JSDoc comments, convert it to
111
+ * a common format.
112
+ */
113
+ function jsdocGmlToLines(raw) {
114
+ // We already have lines as required, so just convert formats
115
+ return raw.map((token) => ({
116
+ content: token.image,
117
+ start: {
118
+ line: token.startLine,
119
+ column: token.startColumn,
120
+ offset: token.startOffset,
121
+ },
122
+ }));
123
+ }
124
+ /**
125
+ * Given a raw string containing a JSDoc block in either GML
126
+ * or JS style, convert it
127
+ * to a list of lines, each with its own position.
128
+ */
129
+ function jsdocStringToLines(raw, startPosition) {
130
+ const asIToken = {
131
+ image: raw,
132
+ startLine: startPosition?.line || 1,
133
+ startColumn: startPosition?.column || 1,
134
+ startOffset: startPosition?.offset || 0,
135
+ };
136
+ return jsdocBlockToLines(asIToken);
137
+ }
138
+ /**
139
+ * Since single-line style comments make it impossible to
140
+ * tell when we're in a NEW doc, we need to break lines into
141
+ * groups
142
+ */
143
+ export function gmlLinesByGroup(gmlLines) {
144
+ const lines = jsdocGmlToLines(gmlLines);
145
+ const groups = [[]];
146
+ let currentGroup = groups[0];
147
+ lines: for (const line of lines) {
148
+ if (!line) {
149
+ continue;
150
+ }
151
+ let match = null;
152
+ for (const tagName of names) {
153
+ match = line.content.match(regexes[tagName]);
154
+ if (!match) {
155
+ continue;
156
+ }
157
+ const parts = match.groups;
158
+ // Consider simpler groups and let the rest fall together
159
+ if (parts.localvar || parts.globalvar || parts.instancevar) {
160
+ // Then this is a new block!
161
+ currentGroup = [];
162
+ groups.push(currentGroup);
163
+ }
164
+ currentGroup.push(line);
165
+ continue lines; // Matches are exclusive, so go to the next line
166
+ }
167
+ // If we make it here then we didn't fine a match. Just add it to the currentgruop
168
+ currentGroup.push(line);
169
+ }
170
+ return groups.filter((g) => g.length);
171
+ }
172
+ export function parseJsdoc(raw,
173
+ /**
174
+ * The position of the first character of the jsdoc string,
175
+ * if it has been parsed out of a larger document. This is
176
+ * used to offset the positions of discovered tag components.
177
+ */
178
+ startPosition) {
179
+ let lines;
180
+ if (typeof raw === 'string') {
181
+ lines = jsdocStringToLines(raw, startPosition);
182
+ }
183
+ else if (Array.isArray(raw)) {
184
+ if (raw[0] && 'image' in raw[0]) {
185
+ // Then this is a list of ITokens
186
+ lines = jsdocGmlToLines(raw);
187
+ }
188
+ else {
189
+ // Then this is a list of JsdocLines
190
+ lines = raw;
191
+ }
192
+ }
193
+ else {
194
+ // Then this is a single IToken
195
+ lines = jsdocBlockToLines(raw);
196
+ }
197
+ assert(lines, 'Lines must be an array');
198
+ if (!lines.length)
199
+ return undefined;
200
+ assert(lines[0], 'No lines found in jsdoc block');
201
+ const start = lines[0].start;
202
+ const end = { ...lines.at(-1).start };
203
+ end.column += lines.at(-1).content.length;
204
+ end.offset += lines.at(-1).content.length;
205
+ // Default to a description-only doc, and update its type
206
+ // if we can infer it based on the tags.
207
+ const doc = {
208
+ kind: 'description',
209
+ description: '',
210
+ start,
211
+ end,
212
+ tags: [],
213
+ diagnostics: [],
214
+ typeRanges: [],
215
+ };
216
+ const addTypeRanges = (component) => {
217
+ if (!component)
218
+ return;
219
+ const types = flattenFeatherTypes(component.content);
220
+ for (const type of types) {
221
+ // Convert the offset to a range and add it to typeRanges
222
+ const start = {
223
+ line: component.start.line,
224
+ column: component.start.column + type.name.offset,
225
+ offset: component.start.offset + type.name.offset,
226
+ };
227
+ const end = { ...start };
228
+ end.column += type.name.content.length - 1;
229
+ end.offset += type.name.content.length - 1;
230
+ doc.typeRanges.push({
231
+ content: type.name.content,
232
+ start,
233
+ end,
234
+ });
235
+ }
236
+ };
237
+ let describing = doc;
238
+ const appendDescription = (currentDescription, newDescription) => {
239
+ newDescription ||= '';
240
+ if (currentDescription) {
241
+ return `${currentDescription}\n${newDescription}`;
242
+ }
243
+ return newDescription;
244
+ };
245
+ for (const line of lines) {
246
+ assert(line, 'Line does not exist');
247
+ // Check for a match against each of the tag patterns
248
+ // until we fined one. If we don't then `match` will
249
+ // stay null, and we can use the line as a description.
250
+ let match = null;
251
+ for (const tagName of names) {
252
+ match = line.content.match(regexes[tagName]);
253
+ const parts = match?.groups;
254
+ // TODO: In Node <18, this will be undefined. Once VSCode
255
+ // updates to use Node 18+ we can remove the `undefined` union.
256
+ // const indices = match?.indices?.groups as MatchIndices | undefined;
257
+ if (!match) {
258
+ // Then we haven't found a tag yet
259
+ continue;
260
+ }
261
+ // Add the tag to the list of tags
262
+ const tagMatch = line.content.match(/@\w+\b/);
263
+ assert(tagMatch, 'Tag match should exist');
264
+ assert(tagMatch[0], 'Tag match must be an array');
265
+ const tagIndices = [
266
+ tagMatch.index,
267
+ tagMatch.index + tagMatch[0].length,
268
+ ];
269
+ doc.tags.push({
270
+ content: parts.tag,
271
+ ...matchIndexToRange(line.start, tagIndices),
272
+ });
273
+ // Based on the tag type, update the doc
274
+ const impliesFunction = parts.function ||
275
+ parts.param ||
276
+ parts.returns ||
277
+ parts.pure ||
278
+ parts.template;
279
+ if (impliesFunction) {
280
+ doc.kind = 'function';
281
+ }
282
+ const matchIndices = [
283
+ match.index,
284
+ match.index + match[0].length,
285
+ ];
286
+ const entireMatchRange = matchIndexToRange(line.start, matchIndices);
287
+ // If this uses an @description tag, then apply that description
288
+ // to the root doc.
289
+ if (parts.description) {
290
+ doc.description = appendDescription(doc.description, parts.info);
291
+ }
292
+ // If it's an unfamiliar tag, just skip it
293
+ else if (parts.unknown) {
294
+ // Unset the describe target
295
+ describing = null;
296
+ }
297
+ // Handle params, templates, and variables
298
+ else if (parts.param ||
299
+ parts.template ||
300
+ parts.localvar ||
301
+ parts.globalvar ||
302
+ parts.instancevar) {
303
+ // Until VSCode ships Node 18, and therefore has group
304
+ // indices, we'll have to get positions with a simple search
305
+ // per group.
306
+ const kind = parts.param
307
+ ? 'param'
308
+ : parts.template
309
+ ? 'template'
310
+ : parts.localvar
311
+ ? 'localvar'
312
+ : parts.globalvar
313
+ ? 'globalvar'
314
+ : 'instancevar';
315
+ const typeString = substringRange(line.content, parts.typeUnion, line.start);
316
+ addTypeRanges(typeString);
317
+ const entity = {
318
+ kind,
319
+ name: substringRange(line.content, parts.name || parts.optionalName, line.start),
320
+ optional: !!parts.optionalName,
321
+ type: typeString,
322
+ description: parts.info || '',
323
+ ...entireMatchRange,
324
+ };
325
+ if (kind === 'param') {
326
+ doc.params = doc.params || [];
327
+ doc.params.push(entity);
328
+ }
329
+ else if (kind === 'template') {
330
+ doc.templates = doc.templates || [];
331
+ doc.templates.push(entity);
332
+ }
333
+ else {
334
+ doc.kind = kind;
335
+ doc.type = entity.type;
336
+ doc.name = entity.name;
337
+ doc.description = entity.description;
338
+ }
339
+ // Update the current describing object in case the next line is a description
340
+ describing = entity;
341
+ }
342
+ // Handle returns
343
+ else if (parts.returns) {
344
+ if (doc.returns) {
345
+ // Then we don't want to overwrite.
346
+ break;
347
+ }
348
+ const typeString = substringRange(line.content, parts.typeUnion, line.start);
349
+ addTypeRanges(typeString);
350
+ const returns = {
351
+ kind: 'returns',
352
+ type: typeString,
353
+ description: parts.info || '',
354
+ ...entireMatchRange,
355
+ };
356
+ doc.returns = returns;
357
+ // Update the current describing object in case the next line is a description
358
+ describing = returns;
359
+ }
360
+ // Handle Self
361
+ else if (parts.self) {
362
+ doc.self = substringRange(line.content, parts.type, line.start);
363
+ addTypeRanges(doc.self);
364
+ if (parts.extraBracket) {
365
+ doc.diagnostics.push({
366
+ message: '@self types should not be wrapped in brackets',
367
+ start: doc.self.start,
368
+ end: doc.self.end,
369
+ });
370
+ }
371
+ }
372
+ // Handle Type
373
+ else if (parts.type) {
374
+ doc.kind = 'type';
375
+ doc.type = substringRange(line.content, parts.typeUnion, line.start);
376
+ addTypeRanges(doc.type);
377
+ doc.description = appendDescription(doc.description, parts.info);
378
+ }
379
+ // Handle modifiers
380
+ else if (parts.deprecated) {
381
+ doc.deprecated = true;
382
+ }
383
+ else if (parts.ignore) {
384
+ doc.ignore = true;
385
+ }
386
+ else if (parts.mixin) {
387
+ doc.mixin = true;
388
+ }
389
+ break;
390
+ }
391
+ // If we haven't found a tag, then this is a description line
392
+ // Then this is a description-only line (or something invalid).
393
+ // Apply it to the current describing object.
394
+ if (!match && describing) {
395
+ const descriptionMatch = line.content.match(descriptionLine);
396
+ if (descriptionMatch) {
397
+ describing.description = appendDescription(describing.description, descriptionMatch.groups?.info);
398
+ }
399
+ }
400
+ }
401
+ if (doc.kind === 'description' && doc.self) {
402
+ // Then we don't know for sure what this context is for,
403
+ // but it's useful to call it a self doc.
404
+ doc.kind = 'self';
405
+ }
406
+ // Ensure that there are no redundantly-named params, since that
407
+ // is both not allowed and likely to cause weird problems later.
408
+ // The safest thing to do if we see a duplicate is to skip it and all
409
+ // subsequent params.
410
+ const paramNames = new Set();
411
+ for (let i = 0; i < (doc.params?.length || 0); i++) {
412
+ const param = doc.params[i];
413
+ if (paramNames.has(param.name.content)) {
414
+ doc.diagnostics.push({
415
+ message: `Duplicate param name: ${param.name.content}`,
416
+ start: param.name.start,
417
+ end: param.name.end,
418
+ });
419
+ // Add diagnostics for all subsequent params
420
+ for (let j = i + 1; j < doc.params.length; j++) {
421
+ const laterParam = doc.params[j];
422
+ doc.diagnostics.push({
423
+ message: `Skipping due to previous duplicate param`,
424
+ start: laterParam.name.start,
425
+ end: laterParam.name.end,
426
+ });
427
+ }
428
+ doc.params.splice(i);
429
+ break;
430
+ }
431
+ paramNames.add(param.name.content);
432
+ }
433
+ return doc;
434
+ }
435
+ function substringRange(string, substring, start) {
436
+ if (!substring) {
437
+ return undefined;
438
+ }
439
+ start = { ...start };
440
+ const index = string.indexOf(substring);
441
+ if (index < 0) {
442
+ return undefined;
443
+ }
444
+ start.column += index;
445
+ start.offset += index;
446
+ return {
447
+ start,
448
+ end: {
449
+ column: start.column + substring.length - 1,
450
+ line: start.line,
451
+ offset: start.offset + substring.length - 1,
452
+ },
453
+ content: substring,
454
+ };
455
+ }
456
+ function matchIndexToRange(startPosition, index) {
457
+ // Note that the IRange uses column and line indexes that start at 1, while the offset starts at 0.
458
+ const range = {
459
+ start: { ...startPosition },
460
+ end: { ...startPosition },
461
+ };
462
+ range.start.column += index?.[0] || 0;
463
+ range.start.offset += index?.[0] || 0;
464
+ range.end.column += index?.[1] || 0;
465
+ range.end.offset += index?.[1] || 0;
466
+ return range;
467
+ }
468
+ //# sourceMappingURL=jsdoc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsdoc.js","sourceRoot":"","sources":["../src/jsdoc.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=jsdoc.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsdoc.test.d.ts","sourceRoot":"","sources":["../src/jsdoc.test.ts"],"names":[],"mappings":""}