umberto 2.2.0 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (198) hide show
  1. package/.eslintrc.js +2 -2
  2. package/LICENSE.md +1 -1
  3. package/hexo-shim.js +1 -1
  4. package/package.json +2 -1
  5. package/scripts/filter/after-post-render/basepath-replacer.js +1 -1
  6. package/scripts/filter/after-post-render/fix-code-samples.js +1 -1
  7. package/scripts/filter/after-post-render/gather-guides.js +1 -1
  8. package/scripts/filter/after-post-render/img-linker.js +1 -1
  9. package/scripts/filter/after-post-render/import-guide.js +1 -1
  10. package/scripts/filter/after-post-render/insert-error-codes.js +1 -1
  11. package/scripts/filter/after-post-render/linker.js +1 -1
  12. package/scripts/filter/after-post-render/parseicontag.js +1 -1
  13. package/scripts/filter/after-post-render/process-variables.js +1 -1
  14. package/scripts/filter/after-post-render/snippets.js +1 -1
  15. package/scripts/filter/after-post-render/time-end.js +1 -1
  16. package/scripts/filter/after-post-render/time-start.js +1 -1
  17. package/scripts/filter/after-post-render/validate-after-render.js +1 -1
  18. package/scripts/filter/before-post-render/add-project-info-to-page.js +1 -1
  19. package/scripts/filter/before-post-render/add-repo-url.js +1 -1
  20. package/scripts/filter/before-post-render/change-output-path.js +1 -1
  21. package/scripts/filter/before-post-render/escape-special-characters.js +1 -1
  22. package/scripts/filter/before-post-render/execute-and-insert-function-results.js +1 -1
  23. package/scripts/filter/before-post-render/infobox.js +1 -1
  24. package/scripts/filter/before-post-render/insertchangelog.js +1 -1
  25. package/scripts/filter/before-post-render/replace-macros.js +1 -1
  26. package/scripts/filter/before-post-render/set-layout.js +1 -1
  27. package/scripts/filter/before-post-render/validate-page-data.js +1 -1
  28. package/scripts/helper/find-main-category-page.js +1 -1
  29. package/scripts/helper/get-pages-for-nav-tree.js +1 -1
  30. package/scripts/helper/mark-empty-categories.js +1 -1
  31. package/scripts/helper/normalize-badges.js +1 -1
  32. package/scripts/helper/u-split-to-title-and-content.js +1 -1
  33. package/scripts/helper/u-toc.js +1 -1
  34. package/scripts/utils/execute-and-insert-function-results.js +1 -1
  35. package/scripts/utils/findmaincategorypage.js +1 -1
  36. package/scripts/utils/getreportissuewidgeturl.js +1 -1
  37. package/scripts/utils/insertchangelog.js +1 -1
  38. package/scripts/utils/normalizebadges.js +1 -1
  39. package/scripts/utils/parseicontag.js +1 -1
  40. package/scripts/utils/parselinks.js +61 -41
  41. package/scripts/utils/shoulddisplaynewindicator.js +1 -1
  42. package/scripts/utils/transforminfobox.js +1 -1
  43. package/scripts-dev/postinstall.js +1 -1
  44. package/src/api-builder/api-builder.js +28 -8
  45. package/src/api-builder/classes/description-parser.js +79 -63
  46. package/src/api-builder/classes/doc-data-factory.js +58 -5
  47. package/src/api-builder/classes/file-name-manager.js +1 -1
  48. package/src/api-builder/classes/html-file.js +1 -1
  49. package/src/api-builder/classes/navigation-tree.js +1 -1
  50. package/src/api-builder/classes/tree-node.js +1 -1
  51. package/src/api-builder/utils/findtargetdoclet.js +84 -0
  52. package/src/api-builder/utils/utils.js +41 -0
  53. package/src/data-converter/converters/jsdoc2umberto.js +8 -1
  54. package/src/data-converter/converters/jsduck2umberto.js +1 -1
  55. package/src/data-converter/converters/typedoc/abstractparser.js +364 -0
  56. package/src/data-converter/converters/typedoc/accessorparser.js +64 -0
  57. package/src/data-converter/converters/typedoc/classparser.js +49 -0
  58. package/src/data-converter/converters/typedoc/constantparser.js +45 -0
  59. package/src/data-converter/converters/typedoc/constructorparser.js +34 -0
  60. package/src/data-converter/converters/typedoc/errorparser.js +44 -0
  61. package/src/data-converter/converters/typedoc/eventparser.js +57 -0
  62. package/src/data-converter/converters/typedoc/functionparser.js +61 -0
  63. package/src/data-converter/converters/typedoc/interfaceparser.js +46 -0
  64. package/src/data-converter/converters/typedoc/methodparser.js +63 -0
  65. package/src/data-converter/converters/typedoc/moduleparser.js +31 -0
  66. package/src/data-converter/converters/typedoc/propertyparser.js +74 -0
  67. package/src/data-converter/converters/typedoc/typedoc.ts +297 -0
  68. package/src/data-converter/converters/typedoc/typedocconverter.js +742 -0
  69. package/src/data-converter/converters/typedoc/typeparser.js +71 -0
  70. package/src/data-converter/converters/typedoc2umberto.js +52 -0
  71. package/src/data-converter/data-collection.js +1 -1
  72. package/src/data-converter/data-provider.js +4 -2
  73. package/src/data-converter/doclet-collection.js +14 -2
  74. package/src/data-converter/middlewares/relation-fixer.js +1 -1
  75. package/src/helpers/capitalize.js +1 -1
  76. package/src/helpers/copy-file.js +1 -1
  77. package/src/helpers/create-filtering-data-attribs.js +1 -1
  78. package/src/helpers/doc-formats.js +3 -2
  79. package/src/helpers/escape-longname.js +1 -1
  80. package/src/helpers/extract-longname.js +1 -1
  81. package/src/helpers/get-api-infobox-tooltip.js +1 -1
  82. package/src/helpers/get-docsearch-config.js +1 -1
  83. package/src/helpers/get-file-patterns-to-process.js +1 -1
  84. package/src/helpers/get-short-module-path.js +1 -1
  85. package/src/helpers/github-url.js +1 -1
  86. package/src/helpers/glob-to-regexp.js +1 -1
  87. package/src/helpers/html-safe.js +1 -1
  88. package/src/helpers/is-non-empty-array.js +1 -1
  89. package/src/helpers/snippets.js +1 -1
  90. package/src/helpers/split-longname.js +101 -8
  91. package/src/hexo/filter/extend-config.js +1 -1
  92. package/src/hexo/filter/project-locals.js +1 -1
  93. package/src/hexo/get-repo-urls.js +1 -1
  94. package/src/hexo/helper/get-page-group.js +1 -1
  95. package/src/hexo/project-globals.js +1 -1
  96. package/src/hexo-manager.js +1 -1
  97. package/src/index.js +1 -1
  98. package/src/sdk-builder/get-sdk-sources.js +1 -1
  99. package/src/sdk-builder/sdk-builder.js +1 -1
  100. package/src/tasks/build-api-docs.js +4 -4
  101. package/src/tasks/build-documentation.js +3 -3
  102. package/src/tasks/build-sdk.js +1 -1
  103. package/src/tasks/build-snippets.js +1 -1
  104. package/src/tasks/cache-files.js +1 -1
  105. package/src/tasks/compile-sass.js +1 -1
  106. package/src/tasks/copy-assets.js +1 -1
  107. package/src/tasks/copy-files.js +1 -1
  108. package/src/tasks/copy-project-docs.js +1 -1
  109. package/src/tasks/copy-project-icons.js +1 -1
  110. package/src/tasks/create-redirect-page.js +1 -1
  111. package/src/tasks/create-sitemap.js +1 -1
  112. package/src/tasks/create-sym-links.js +1 -1
  113. package/src/tasks/execute-hooks.js +1 -1
  114. package/src/tasks/get-extra-files.js +1 -1
  115. package/src/tasks/get-hexo-config.js +1 -1
  116. package/src/tasks/get-main-config.js +1 -1
  117. package/src/tasks/get-project-config.js +3 -3
  118. package/src/tasks/macro-replacer.js +1 -1
  119. package/src/tasks/overwrite-api-guides.js +1 -1
  120. package/src/tasks/read-doc-sources.js +1 -1
  121. package/src/tasks/run-webpack.js +1 -1
  122. package/src/tasks/validate-html-w3c.js +1 -1
  123. package/src/tasks/validate-links.js +1 -1
  124. package/src/tasks/watcher.js +1 -1
  125. package/src/tasks/write-html-files.js +1 -1
  126. package/src/template/template-collection.js +1 -1
  127. package/themes/umberto/layout/_api-docs/_mixin/_api-see-source.pug +2 -1
  128. package/themes/umberto/layout/_api-docs/_mixin/_class-item.pug +0 -1
  129. package/themes/umberto/layout/_api-docs/_mixin/_dev-names.pug +9 -3
  130. package/themes/umberto/layout/_api-docs/_mixin/_fires-item.pug +2 -2
  131. package/themes/umberto/layout/_api-docs/_mixin/_hierarchy-item.pug +2 -2
  132. package/themes/umberto/layout/_api-docs/_mixin/_link-or-text.pug +40 -41
  133. package/themes/umberto/layout/_api-docs/_mixin/_method.pug +8 -2
  134. package/themes/umberto/layout/_api-docs/_mixin/_property.pug +1 -1
  135. package/themes/umberto/layout/_api-docs/_mixin/_related.pug +1 -1
  136. package/themes/umberto/layout/_api-docs/_mixin/_sidebox-list-item.pug +1 -1
  137. package/themes/umberto/layout/_api-docs/_mixin/_type.pug +175 -9
  138. package/themes/umberto/layout/_api-docs/_mixin/type-parameter.pug +18 -0
  139. package/themes/umberto/layout/_api-docs/_partial/filter.pug +16 -4
  140. package/themes/umberto/layout/_api-docs/_partial/type-parameters.pug +26 -0
  141. package/themes/umberto/layout/_api-docs/api-base.pug +2 -0
  142. package/themes/umberto/src/css/_api-content.scss +1 -1
  143. package/themes/umberto/src/css/_api-info-box.scss +1 -1
  144. package/themes/umberto/src/css/_api-props-filter.scss +1 -1
  145. package/themes/umberto/src/css/_api-see-source.scss +1 -1
  146. package/themes/umberto/src/css/_api-subheader.scss +1 -1
  147. package/themes/umberto/src/css/_api-tree.scss +1 -1
  148. package/themes/umberto/src/css/_badge.scss +1 -1
  149. package/themes/umberto/src/css/_collapsinglist.scss +1 -1
  150. package/themes/umberto/src/css/_content.scss +3 -2
  151. package/themes/umberto/src/css/_docsearch.scss +1 -1
  152. package/themes/umberto/src/css/_dropdown.scss +1 -1
  153. package/themes/umberto/src/css/_editor-icon.scss +1 -1
  154. package/themes/umberto/src/css/_feedback-widget.scss +1 -1
  155. package/themes/umberto/src/css/_footer.scss +1 -1
  156. package/themes/umberto/src/css/_formatted.scss +1 -1
  157. package/themes/umberto/src/css/_guide-content.scss +1 -1
  158. package/themes/umberto/src/css/_guide-sdk-tree.scss +1 -1
  159. package/themes/umberto/src/css/_loading-spinner.scss +1 -1
  160. package/themes/umberto/src/css/_main.scss +1 -1
  161. package/themes/umberto/src/css/_navigation.scss +1 -1
  162. package/themes/umberto/src/css/_notice.scss +1 -1
  163. package/themes/umberto/src/css/_print.scss +1 -1
  164. package/themes/umberto/src/css/_prism.scss +1 -1
  165. package/themes/umberto/src/css/_rwd-breadcrumbs.scss +1 -1
  166. package/themes/umberto/src/css/_rwd-menu.scss +1 -1
  167. package/themes/umberto/src/css/_secondary-navigation.scss +1 -1
  168. package/themes/umberto/src/css/_theme-dark.scss +1 -1
  169. package/themes/umberto/src/css/_toggler.scss +1 -1
  170. package/themes/umberto/src/css/_top.scss +1 -1
  171. package/themes/umberto/src/css/_tree.scss +7 -5
  172. package/themes/umberto/src/css/_warning-banner.scss +1 -1
  173. package/themes/umberto/src/css/components/_lightbox.scss +1 -1
  174. package/themes/umberto/src/css/helpers/_color.scss +1 -1
  175. package/themes/umberto/src/css/helpers/_font.scss +1 -1
  176. package/themes/umberto/src/css/helpers/_globals.scss +1 -1
  177. package/themes/umberto/src/css/helpers/_reset.scss +1 -1
  178. package/themes/umberto/src/css/helpers/_spacing.scss +1 -1
  179. package/themes/umberto/src/css/pages/_sdk.scss +1 -1
  180. package/themes/umberto/src/css/styles.scss +1 -1
  181. package/themes/umberto/src/js/_anchors.js +1 -1
  182. package/themes/umberto/src/js/_apisearch.js +1 -1
  183. package/themes/umberto/src/js/_apitree.js +1 -1
  184. package/themes/umberto/src/js/_collapsables.js +1 -1
  185. package/themes/umberto/src/js/_copymobileapinavigation.js +1 -1
  186. package/themes/umberto/src/js/_devnames.js +1 -1
  187. package/themes/umberto/src/js/_dropdowns.js +1 -1
  188. package/themes/umberto/src/js/_filtering.js +2 -1
  189. package/themes/umberto/src/js/_imageModal.js +1 -1
  190. package/themes/umberto/src/js/_pagenavigation.js +1 -1
  191. package/themes/umberto/src/js/_prism.js +1 -1
  192. package/themes/umberto/src/js/_rwdmenu.js +1 -1
  193. package/themes/umberto/src/js/_samplecode.js +1 -1
  194. package/themes/umberto/src/js/_sidenavigation.js +1 -1
  195. package/themes/umberto/src/js/_toc.js +1 -1
  196. package/themes/umberto/src/js/_tooltips.js +1 -1
  197. package/themes/umberto/src/js/_warningbanner.js +1 -1
  198. package/themes/umberto/src/js/app.js +1 -1
@@ -0,0 +1,364 @@
1
+ /**
2
+ * @license Copyright (c) 2017-2023, CKSource Holding sp. z o.o. All rights reserved.
3
+ * For licensing, see LICENSE.md.
4
+ */
5
+
6
+ 'use strict';
7
+
8
+ const TypedocConverter = require( './typedocconverter' );
9
+
10
+ /**
11
+ * An abstract parser class providing basic utils for converting Typedoc reflection to JSDoc doclet.
12
+ */
13
+ module.exports = class AbstractParser {
14
+ /**
15
+ * @abstract
16
+ * @method canParse
17
+ * @param {TypedocReflection<TypedocParsers>} item
18
+ * @returns {Boolean}
19
+ */
20
+
21
+ /**
22
+ * @abstract
23
+ * @method parse
24
+ * @param {TypedocReflection<TypedocParsers>} item
25
+ * @param {String|null} [parentName=null]
26
+ * @returns {Object}
27
+ */
28
+
29
+ /**
30
+ * Coverts the item's comment from Markdown to HTML.
31
+ *
32
+ * @param {TypedocReflectionMeta} item
33
+ * @returns {String}
34
+ */
35
+ getComment( item ) {
36
+ if ( item.comment && Array.isArray( item.comment.summary ) ) {
37
+ return TypedocConverter.convertComment( item.comment.summary );
38
+ }
39
+
40
+ return '';
41
+ }
42
+
43
+ /**
44
+ * @param {TypedocReflectionMeta} item
45
+ * @param {String|null} [parentName=null]
46
+ * @returns {String}
47
+ */
48
+ getLongName( item, parentName = null ) {
49
+ let separator;
50
+
51
+ switch ( item.kindString ) {
52
+ case 'Module':
53
+ separator = ':';
54
+ parentName = 'module';
55
+ break;
56
+
57
+ case 'Class':
58
+ case 'Function':
59
+ case 'Interface':
60
+ case 'Type alias':
61
+ separator = '~';
62
+ break;
63
+
64
+ case 'Event':
65
+ separator = '#event:';
66
+ break;
67
+
68
+ default:
69
+ separator = this.getScope( item ) === 'static' ? '.' : '#';
70
+ break;
71
+ }
72
+
73
+ return `${ parentName }${ separator }${ item.name }`;
74
+ }
75
+
76
+ /**
77
+ * Returns the access type for the item.
78
+ *
79
+ * @param {TypedocReflectionMeta} item
80
+ * @returns {'public'|'internal'|'protected'|'private'}
81
+ */
82
+ getVisibility( item ) {
83
+ const flags = item.flags || {};
84
+
85
+ if ( this.isInternal( item ) ) {
86
+ return 'internal';
87
+ }
88
+
89
+ if ( flags.isProtected ) {
90
+ return 'protected';
91
+ }
92
+
93
+ if ( flags.isPrivate ) {
94
+ return 'private';
95
+ }
96
+
97
+ return 'public';
98
+ }
99
+
100
+ /**
101
+ * Returns the item's kind.
102
+ *
103
+ * @param {TypedocReflectionMeta} item
104
+ * @returns {String}
105
+ */
106
+ getKind( item ) {
107
+ switch ( item.kindString ) {
108
+ case 'Module':
109
+ return 'module';
110
+
111
+ case 'Class':
112
+ return 'class';
113
+
114
+ case 'Function':
115
+ case 'Method':
116
+ case 'Constructor':
117
+ return 'function';
118
+
119
+ case 'Interface':
120
+ return 'interface';
121
+
122
+ case 'Accessor':
123
+ case 'Property':
124
+ return 'member';
125
+
126
+ case 'Variable':
127
+ return 'constant';
128
+
129
+ case 'Type alias':
130
+ return 'typedef';
131
+
132
+ case 'Event':
133
+ return 'event';
134
+
135
+ case 'Error':
136
+ return 'error';
137
+ }
138
+ }
139
+
140
+ /**
141
+ * Returns the item's scope.
142
+ *
143
+ * @param {TypedocReflectionMeta} item
144
+ * @returns {'instance'|'static'}
145
+ */
146
+ getScope( item ) {
147
+ const flags = item.flags || {};
148
+
149
+ if ( flags.isStatic ) {
150
+ return 'static';
151
+ }
152
+
153
+ return 'instance';
154
+ }
155
+
156
+ /**
157
+ * Returns the `extraId` combined from the item's scope, kind, name and optional variation.
158
+ *
159
+ * @param {TypedocReflectionMeta} item
160
+ * @returns {String}
161
+ */
162
+ getExtraId( item ) {
163
+ const staticModifier = this.getScope( item ) === 'static' ? 'static-' : '';
164
+
165
+ return staticModifier + this.getKind( item ) + '-' + item.name;
166
+ }
167
+
168
+ /**
169
+ * Returns the long names of the events that are fired from the signature.
170
+ *
171
+ * @param {TypedocReflectionMeta} signature
172
+ * @param {String} parentName
173
+ * @returns {Array.<String>|null}
174
+ */
175
+ getFiredEvents( signature, parentName ) {
176
+ if ( !signature.comment || !signature.comment.blockTags ) {
177
+ return null;
178
+ }
179
+
180
+ return signature.comment.blockTags
181
+ .filter( blockTag => blockTag.tag === '@fires' )
182
+ .map( blockTag => {
183
+ const content = blockTag.content[ 0 ].text;
184
+
185
+ if ( content.startsWith( 'module:' ) ) {
186
+ return content;
187
+ }
188
+
189
+ return `${ parentName }#event:${ content }`;
190
+ } );
191
+ }
192
+
193
+ /**
194
+ * Returns the URL to GitHub with selected line, where the given doclet is defined.
195
+ * The URL includes a commit hash which was used to build the API docs.
196
+ *
197
+ * @param {TypedocReflection<TypedocParsers>} item
198
+ * @param {Number} sourceIndex
199
+ * @returns {Object|null}
200
+ */
201
+ getFile( item, sourceIndex = 0 ) {
202
+ if ( !item.sources ) {
203
+ return null;
204
+ }
205
+
206
+ return {
207
+ url: item.sources[ sourceIndex ].url
208
+ };
209
+ }
210
+
211
+ /**
212
+ * Returns links from the "@see" tags.
213
+ *
214
+ * @param {TypedocReflectionMeta} item
215
+ * @param {String|null} [parentName=null]
216
+ * @returns {Array.<String>}
217
+ */
218
+ getRelated( item, parentName ) {
219
+ if ( !item.comment || !item.comment.blockTags ) {
220
+ return null;
221
+ }
222
+
223
+ return item.comment.blockTags
224
+ .filter( blockTag => blockTag.tag === '@see' )
225
+ .flatMap( blockTag => {
226
+ const items = blockTag.content
227
+ .map( ( { text } ) => text.trim() )
228
+ // To remove list markers.
229
+ .filter( text => text.length > 1 );
230
+
231
+ if ( !parentName ) {
232
+ return items;
233
+ }
234
+
235
+ return items.map( text => {
236
+ // A full reference to a module.
237
+ if ( text.startsWith( 'module:' ) ) {
238
+ return text;
239
+ }
240
+
241
+ // A short reference to an existing item in the `parentName` module.
242
+ if ( text.startsWith( '~' ) ) {
243
+ const [ moduleName ] = parentName.split( '~' );
244
+
245
+ return moduleName + text;
246
+ }
247
+
248
+ return parentName + text;
249
+ } );
250
+ } );
251
+ }
252
+
253
+ /**
254
+ * Checks if the item is readonly.
255
+ *
256
+ * The readonly state can be marked either by a TypeScript `readonly` keyword, or by the `@readonly` JSDoc keyword.
257
+ *
258
+ * @param {TypedocReflection} item
259
+ * @returns {Boolean}
260
+ */
261
+ isReadonly( item ) {
262
+ if ( item.flags && item.flags.isReadonly ) {
263
+ return true;
264
+ }
265
+
266
+ return false;
267
+ }
268
+
269
+ /**
270
+ * Checks if the item is observable.
271
+ *
272
+ * The observable state can be marked by the `@observable` JSDoc keyword.
273
+ *
274
+ * @param {TypedocReflectionMeta} item
275
+ * @returns {Boolean}
276
+ */
277
+ isObservable( item ) {
278
+ if ( item.comment && item.comment.blockTags ) {
279
+ return item.comment.blockTags.some( tag => tag.tag === '@observable' );
280
+ }
281
+
282
+ return false;
283
+ }
284
+
285
+ /**
286
+ * Checks if the item is marked as an optional.
287
+ *
288
+ * @param {TypedocReflectionMeta} item
289
+ * @returns {Boolean}
290
+ */
291
+ isOptional( item ) {
292
+ if ( item.flags && item.flags.isOptional ) {
293
+ return true;
294
+ }
295
+
296
+ return false;
297
+ }
298
+
299
+ /**
300
+ * Checks if the member is marked as `internal` one.
301
+ *
302
+ * The `internal` state means the same as `protected`, but with one exception: the `internal` member can be used from outside the class
303
+ * in which it is defined (or its derivatives), as opposed to the `protected` state.
304
+ *
305
+ * @param {TypedocReflectionMeta} item
306
+ * @returns {Boolean}
307
+ */
308
+ isInternal( item ) {
309
+ if ( item.comment && item.comment.modifierTags ) {
310
+ return item.comment.modifierTags.some( tag => tag === '@internal' );
311
+ }
312
+
313
+ return false;
314
+ }
315
+
316
+ /**
317
+ * Checks if the member is marked by the `@deprecated` JSDoc tag.
318
+ *
319
+ * @param {TypedocReflectionMeta>} item
320
+ * @returns {Boolean}
321
+ */
322
+ isDeprecated( item ) {
323
+ if ( item.comment && item.comment.blockTags ) {
324
+ return item.comment.blockTags.some( tag => tag.tag === '@deprecated' );
325
+ }
326
+
327
+ return false;
328
+ }
329
+
330
+ /**
331
+ * Checks if the member contains the `@skipSource` annotation.
332
+ *
333
+ * @param {TypedocReflectionMeta} item
334
+ * @returns {Boolean}
335
+ */
336
+ shouldSkipSource( item ) {
337
+ if ( item.comment && item.comment.modifierTags ) {
338
+ return item.comment.modifierTags.some( tag => tag === '@skipSource' );
339
+ }
340
+
341
+ return false;
342
+ }
343
+
344
+ /**
345
+ * Returns a name specified in the `@label` annotation.
346
+ *
347
+ * @protected
348
+ * @param {TypedocReflectionMeta} item
349
+ * @returns {String}
350
+ */
351
+ _getLabelName( item ) {
352
+ if ( item.comment && item.comment.blockTags ) {
353
+ const labelComment = item.comment.blockTags.find( tag => tag.tag === '@label' );
354
+
355
+ if ( !labelComment ) {
356
+ return '';
357
+ }
358
+
359
+ return labelComment.content[ 0 ].text;
360
+ }
361
+
362
+ return '';
363
+ }
364
+ };
@@ -0,0 +1,64 @@
1
+ /**
2
+ * @license Copyright (c) 2017-2023, CKSource Holding sp. z o.o. All rights reserved.
3
+ * For licensing, see LICENSE.md.
4
+ */
5
+
6
+ 'use strict';
7
+
8
+ const AbstractParser = require( './abstractparser' );
9
+
10
+ module.exports = class AccessorParser extends AbstractParser {
11
+ /**
12
+ * @param {TypedocReflectionMeta} item
13
+ * @returns {Boolean}
14
+ */
15
+ canParse( item ) {
16
+ return item.kindString === 'Accessor';
17
+ }
18
+
19
+ /**
20
+ * Checks if the accessor is readonly.
21
+ *
22
+ * @override
23
+ * @param {TypedocReflection} item
24
+ * @returns {Boolean}
25
+ */
26
+ isReadonly( item ) {
27
+ return !item.setSignature;
28
+ }
29
+
30
+ /**
31
+ * @param {TypedocReflection<'Accessor'>} item
32
+ * @param {String} parentName
33
+ * @returns {Object}
34
+ */
35
+ parse( item, parentName ) {
36
+ // A getter and setter can't be overloaded, so their first signature (if exists) is the only one.
37
+ // Starting from `typedoc@0.23`, these properties are no longer an array.
38
+ const { getSignature, setSignature } = item;
39
+
40
+ return {
41
+ // Needed for post-processing once all project reflections are converted.
42
+ _signature: [ getSignature || {}, setSignature || {} ],
43
+
44
+ name: item.name,
45
+ memberof: parentName,
46
+ longname: this.getLongName( item, parentName ),
47
+
48
+ scope: this.getScope( item ),
49
+ readonly: this.isReadonly( item ),
50
+ access: this.getVisibility( item ),
51
+ kind: this.getKind( item ),
52
+ extraId: this.getExtraId( item ),
53
+ description: this.getComment( getSignature || setSignature ),
54
+ file: this.getFile( item ),
55
+ skipSource: this.shouldSkipSource( getSignature || setSignature ),
56
+ deprecated: this.isDeprecated( getSignature || setSignature ),
57
+ inherited: !!item.inheritedFrom,
58
+
59
+ // These properties will be filled in the post-processing phase.
60
+ type: null,
61
+ params: null
62
+ };
63
+ }
64
+ };
@@ -0,0 +1,49 @@
1
+ /**
2
+ * @license Copyright (c) 2017-2023, CKSource Holding sp. z o.o. All rights reserved.
3
+ * For licensing, see LICENSE.md.
4
+ */
5
+
6
+ 'use strict';
7
+
8
+ const AbstractParser = require( './abstractparser' );
9
+
10
+ module.exports = class ClassParser extends AbstractParser {
11
+ /**
12
+ * @param {TypedocReflectionMeta} item
13
+ * @returns {Boolean}
14
+ */
15
+ canParse( item ) {
16
+ return item.kindString === 'Class';
17
+ }
18
+
19
+ /**
20
+ * @param {TypedocReflection<'Class'>} item
21
+ * @param {String} parentName
22
+ * @returns {Object}
23
+ */
24
+ parse( item, parentName ) {
25
+ return {
26
+ // Needed for post-processing once all project reflections are converted.
27
+ _signature: item,
28
+
29
+ name: item.name,
30
+ memberof: parentName,
31
+ longname: this.getLongName( item, parentName ),
32
+
33
+ scope: this.getScope( item ),
34
+ access: this.getVisibility( item ),
35
+ kind: this.getKind( item ),
36
+ extraId: this.getExtraId( item ),
37
+ description: this.getComment( item ),
38
+ file: this.getFile( item ),
39
+ skipSource: this.shouldSkipSource( item ),
40
+ deprecated: this.isDeprecated( item ),
41
+
42
+ // Properties specified below will be mapped to module names once the entire project is transformed.
43
+ typeParameters: null,
44
+ augmentsNested: null,
45
+ implementsNested: null,
46
+ descendants: null
47
+ };
48
+ }
49
+ };
@@ -0,0 +1,45 @@
1
+ /**
2
+ * @license Copyright (c) 2017-2023, CKSource Holding sp. z o.o. All rights reserved.
3
+ * For licensing, see LICENSE.md.
4
+ */
5
+
6
+ 'use strict';
7
+
8
+ const AbstractParser = require( './abstractparser' );
9
+
10
+ module.exports = class ConstantParser extends AbstractParser {
11
+ /**
12
+ * @param {TypedocReflectionMeta} item
13
+ * @returns {Boolean}
14
+ */
15
+ canParse( item ) {
16
+ return item.kindString === 'Variable';
17
+ }
18
+
19
+ /**
20
+ * @param {TypedocReflection<'Variable'>} item
21
+ * @param {String} parentName
22
+ * @returns {Object}
23
+ */
24
+ parse( item, parentName ) {
25
+ return {
26
+ // Needed for post-processing once all project reflections are converted.
27
+ _signature: item,
28
+
29
+ name: item.name,
30
+ memberof: parentName,
31
+ longname: this.getLongName( item, parentName ),
32
+
33
+ scope: 'inner',
34
+ kind: this.getKind( item ),
35
+ extraId: `constant-${ item.name }`,
36
+ file: this.getFile( item ),
37
+ skipSource: this.shouldSkipSource( item ),
38
+ description: this.getComment( item ),
39
+ deprecated: this.isDeprecated( item ),
40
+
41
+ // This property will be filled in the post-processing phase.
42
+ type: null
43
+ };
44
+ }
45
+ };
@@ -0,0 +1,34 @@
1
+ /**
2
+ * @license Copyright (c) 2017-2023, CKSource Holding sp. z o.o. All rights reserved.
3
+ * For licensing, see LICENSE.md.
4
+ */
5
+
6
+ 'use strict';
7
+
8
+ const MethodParser = require( './methodparser' );
9
+
10
+ module.exports = class ConstructorParser extends MethodParser {
11
+ /**
12
+ * @param {TypedocReflectionMeta} item
13
+ * @returns {Boolean}
14
+ */
15
+ canParse( item ) {
16
+ return item.kindString === 'Constructor';
17
+ }
18
+
19
+ /**
20
+ * @param {TypedocReflection<'Constructor'>} item
21
+ * @param {String} parentName
22
+ * @returns {Array.<Object>}
23
+ */
24
+ parse( item, parentName ) {
25
+ const results = super.parse( item, parentName );
26
+
27
+ for ( const item of results ) {
28
+ // Constructors cannot return any value.
29
+ delete item.returns;
30
+ }
31
+
32
+ return results;
33
+ }
34
+ };
@@ -0,0 +1,44 @@
1
+ /**
2
+ * @license Copyright (c) 2017-2023, CKSource Holding sp. z o.o. All rights reserved.
3
+ * For licensing, see LICENSE.md.
4
+ */
5
+
6
+ 'use strict';
7
+
8
+ const AbstractParser = require( './abstractparser' );
9
+
10
+ module.exports = class ErrorParser extends AbstractParser {
11
+ /**
12
+ * @param {TypedocReflectionMeta} item
13
+ * @returns {Boolean}
14
+ */
15
+ canParse( item ) {
16
+ return item.kindString === 'Error';
17
+ }
18
+
19
+ /**
20
+ * @param {TypedocReflection<'Error'>} item
21
+ * @returns {Object}
22
+ */
23
+ parse( item ) {
24
+ return {
25
+ _signature: [
26
+ {},
27
+ // As errors are our custom implementation, TypeDoc does not allow creating `parameters` property for them. Error parameters
28
+ // are passed in `typeParameters` property. To process the error parameters properly, we manually map `typeParameters` into
29
+ // `parameters` property.
30
+ { parameters: item.typeParameters }
31
+ ],
32
+
33
+ kind: this.getKind( item ),
34
+ scope: 'inner',
35
+ name: item.name,
36
+ longname: `module:errors/${ item.name }`,
37
+ extraId: this.getExtraId( item ),
38
+ description: this.getComment( item ),
39
+
40
+ // This property will be filled in the post-processing phase.
41
+ params: null
42
+ };
43
+ }
44
+ };
@@ -0,0 +1,57 @@
1
+ /**
2
+ * @license Copyright (c) 2017-2023, CKSource Holding sp. z o.o. All rights reserved.
3
+ * For licensing, see LICENSE.md.
4
+ */
5
+
6
+ 'use strict';
7
+
8
+ const AbstractParser = require( './abstractparser' );
9
+
10
+ module.exports = class EventParser extends AbstractParser {
11
+ /**
12
+ * @param {TypedocReflectionMeta} item
13
+ * @returns {Boolean}
14
+ */
15
+ canParse( item ) {
16
+ return item.kindString === 'Event';
17
+ }
18
+
19
+ /**
20
+ * @param {TypedocReflection<'Event'>} item
21
+ * @param {String} parentName
22
+ * @returns {Object}
23
+ */
24
+ parse( item, parentName ) {
25
+ // TypeDoc adds the "event:" prefix to the event name to make sure the name is unique in the scope of its parent.
26
+ // Here, in the parser, we do not need it anymore.
27
+ item.name = item.name.replace( 'event:', '' );
28
+
29
+ return {
30
+ // Needed for post-processing once all project reflections are converted.
31
+ _signature: [
32
+ {},
33
+ // As events are our custom implementation, TypeDoc does not allow creating `parameters` property for them. Event parameters
34
+ // are passed in `typeParameters` property. To process the event parameters properly, we manually map `typeParameters` into
35
+ // `parameters` property.
36
+ { parameters: item.typeParameters }
37
+ ],
38
+
39
+ name: item.name,
40
+ memberof: parentName,
41
+ longname: this.getLongName( item, parentName ),
42
+
43
+ scope: this.getScope( item ),
44
+ kind: this.getKind( item ),
45
+ extraId: this.getExtraId( item ),
46
+ description: this.getComment( item ),
47
+ file: this.getFile( item ),
48
+ skipSource: this.shouldSkipSource( item ),
49
+ deprecated: this.isDeprecated( item ),
50
+ inherited: !!item.inheritedFrom,
51
+ see: this.getRelated( item, parentName ),
52
+
53
+ // These properties will be filled in the post-processing phase.
54
+ params: null
55
+ };
56
+ }
57
+ };