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,71 @@
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 TypeParser extends AbstractParser {
11
+ /**
12
+ * @param {TypedocReflectionMeta} item
13
+ * @returns {Boolean}
14
+ */
15
+ canParse( item ) {
16
+ return item.kindString === 'Type alias';
17
+ }
18
+
19
+ /**
20
+ * @param {TypedocReflection<'Type alias'>} item
21
+ * @param {String} parentName
22
+ * @returns {Object}
23
+ */
24
+ parse( item, parentName ) {
25
+ const result = {
26
+ name: item.name,
27
+ memberof: parentName,
28
+ longname: this.getLongName( item, parentName ),
29
+
30
+ scope: 'inner',
31
+ kind: this.getKind( item ),
32
+ extraId: this.getExtraId( item ),
33
+ file: this.getFile( item ),
34
+ skipSource: this.shouldSkipSource( item ),
35
+ description: this.getComment( item ),
36
+ deprecated: this.isDeprecated( item ),
37
+
38
+ // This property will be filled in the post-processing phase.
39
+ typeParameters: null
40
+ };
41
+
42
+ // There are two distinct type definitions that are rendered in own way by Umberto: function type and object type.
43
+ // For function type, its params and return type is displayed. For object, all its properties are shown.
44
+ const isFunctionType = item.type.declaration && item.type.declaration.signatures;
45
+
46
+ if ( isFunctionType ) {
47
+ // Needed for post-processing once all project reflections are converted.
48
+ result._signature = item.type.declaration.signatures[ 0 ];
49
+
50
+ result.description = this.getComment( result._signature );
51
+ result.type = {
52
+ names: [
53
+ 'function'
54
+ ]
55
+ };
56
+
57
+ // These properties will be filled in the post-processing phase.
58
+ result.returns = null;
59
+ result.params = null;
60
+ } else {
61
+ // Needed for post-processing once all project reflections are converted.
62
+ result._signature = item;
63
+
64
+ // These properties will be filled in the post-processing phase.
65
+ result.properties = null;
66
+ result.type = null;
67
+ }
68
+
69
+ return result;
70
+ }
71
+ };
@@ -0,0 +1,52 @@
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( './typedoc/typedocconverter' );
9
+ const ModuleParser = require( './typedoc/moduleparser' );
10
+ const ClassParser = require( './typedoc/classparser' );
11
+ const AccessorParser = require( './typedoc/accessorparser' );
12
+ const InterfaceParser = require( './typedoc/interfaceparser' );
13
+ const ConstantParser = require( './typedoc/constantparser' );
14
+ const TypeParser = require( './typedoc/typeparser' );
15
+ const FunctionParser = require( './typedoc/functionparser' );
16
+ const PropertyParser = require( './typedoc/propertyparser' );
17
+ const MethodParser = require( './typedoc/methodparser' );
18
+ const ConstructorParser = require( './typedoc/constructorparser' );
19
+ const ErrorParser = require( './typedoc/errorparser' );
20
+ const EventParser = require( './typedoc/eventparser' );
21
+
22
+ module.exports = data => {
23
+ const projectReflection = JSON.parse( data );
24
+
25
+ if ( !projectReflection.children ) {
26
+ console.warn( 'No doclets found in passed data.' );
27
+
28
+ return [];
29
+ }
30
+
31
+ const typedoc = new TypedocConverter( [
32
+ // Top level. All things belong to a module.
33
+ ModuleParser,
34
+
35
+ // Module's children.
36
+ ClassParser,
37
+ InterfaceParser,
38
+ FunctionParser,
39
+ ConstantParser,
40
+ TypeParser,
41
+ ErrorParser,
42
+
43
+ // Class's and interface's children.
44
+ ConstructorParser,
45
+ MethodParser,
46
+ AccessorParser,
47
+ PropertyParser,
48
+ EventParser
49
+ ] );
50
+
51
+ return typedoc.convertToJsDoc( projectReflection );
52
+ };
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Copyright (c) 2017-2022, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2017-2023, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md.
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Copyright (c) 2017-2022, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2017-2023, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md.
4
4
  */
5
5
 
@@ -8,10 +8,12 @@
8
8
  const DataCollection = require( './data-collection' );
9
9
  const jsdoc2umberto = require( './converters/jsdoc2umberto' );
10
10
  const jsduck2umberto = require( './converters/jsduck2umberto' );
11
+ const typedoc2umberto = require( './converters/typedoc2umberto' );
11
12
  const relationFixer = require( './middlewares/relation-fixer' );
12
13
  const converters = new Map( [
13
14
  [ 'jsdoc', jsdoc2umberto ],
14
- [ 'jsduck', jsduck2umberto ]
15
+ [ 'jsduck', jsduck2umberto ],
16
+ [ 'typedoc', typedoc2umberto ]
15
17
  ] );
16
18
 
17
19
  /**
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Copyright (c) 2017-2022, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2017-2023, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md.
4
4
  */
5
5
 
@@ -17,6 +17,14 @@ class DocletCollection {
17
17
  this._allData = [];
18
18
  }
19
19
 
20
+ get size() {
21
+ return this._allData.length;
22
+ }
23
+
24
+ get isEmpty() {
25
+ return this.size === 0;
26
+ }
27
+
20
28
  /**
21
29
  * Adds doclet to collection. Keeps it sorted by doclet's name.
22
30
  *
@@ -57,7 +65,11 @@ class DocletCollection {
57
65
  * @returns {Doclet|null}
58
66
  */
59
67
  getFirst() {
60
- return this._allData.length > 0 ? this._allData[ 0 ] : null;
68
+ return this.isEmpty ? null : this.getAll()[ 0 ];
69
+ }
70
+
71
+ getByLabel( label ) {
72
+ return this.getAll().find( doclet => doclet.label === label );
61
73
  }
62
74
  }
63
75
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Copyright (c) 2017-2022, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2017-2023, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md.
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Copyright (c) 2017-2022, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2017-2023, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md.
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Copyright (c) 2017-2022, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2017-2023, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md.
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Copyright (c) 2017-2022, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2017-2023, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md.
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Copyright (c) 2017-2022, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2017-2023, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md.
4
4
  */
5
5
 
@@ -7,5 +7,6 @@
7
7
 
8
8
  module.exports = {
9
9
  jsdoc: 'json',
10
- jsduck: 'json'
10
+ jsduck: 'json',
11
+ typedoc: 'json'
11
12
  };
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Copyright (c) 2017-2022, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2017-2023, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md.
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Copyright (c) 2017-2022, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2017-2023, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md.
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Copyright (c) 2017-2022, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2017-2023, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md.
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Copyright (c) 2017-2022, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2017-2023, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md.
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Copyright (c) 2017-2022, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2017-2023, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md.
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Copyright (c) 2017-2022, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2017-2023, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md.
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Copyright (c) 2017-2022, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2017-2023, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md.
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Copyright (c) 2017-2022, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2017-2023, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md.
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Copyright (c) 2017-2022, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2017-2023, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md.
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Copyright (c) 2017-2022, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2017-2023, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md.
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Copyright (c) 2017-2022, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2017-2023, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md.
4
4
  */
5
5
 
@@ -1,26 +1,95 @@
1
1
  /**
2
- * @license Copyright (c) 2017-2022, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2017-2023, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md.
4
4
  */
5
5
 
6
6
  'use strict';
7
7
 
8
+ const { MEMBER_NAME_REGEXP, LONG_NAME_LABEL_REGEXP } = require( '../api-builder/utils/utils' );
9
+
10
+ /**
11
+ * @param {String} longname
12
+ * @returns {LongNameParts}
13
+ */
8
14
  module.exports = longname => {
9
15
  if ( !longname || typeof longname !== 'string' ) {
10
16
  return {};
11
17
  }
12
18
 
19
+ // Processing a literal value. Let's return it without modifications.
20
+ if ( longname.startsWith( '\'' ) && longname.endsWith( '\'' ) ) {
21
+ return {
22
+ isSingle: true,
23
+ name: longname,
24
+ longnameBase: '',
25
+ directoryNames: []
26
+ };
27
+ }
28
+
13
29
  const parts = longname.split( '/' );
14
- const nameMatch = /[:{}\-\w$]+$/.exec( longname );
15
- const name = nameMatch ? nameMatch[ 0 ].replace( 'module:', '' ) : ''; // last part of the longname
16
- const longnameBase = longname.slice( 0, -( name.length + 1 ) );
30
+ let [ , nameMatch, label ] = MEMBER_NAME_REGEXP.exec( longname ) || [];
31
+
32
+ let name = nameMatch ? nameMatch.replace( 'module:', '' ) : ''; // last part of the longname
33
+ let longnameBase = longname.split( new RegExp( '[#.]' + name ) )[ 0 ];
34
+
35
+ // Remove the label part from a member name.
36
+ name = name.replace( LONG_NAME_LABEL_REGEXP, '' );
37
+
38
+ const isStatic = longname[ longnameBase.length ] === '.' || longnameBase.startsWith( '.' ) || longnameBase.endsWith( '.' );
39
+
40
+ // `longnameBase` might start or end with a symbol. It depends if it is a full or short link.
41
+ longnameBase = longnameBase.replace( /^[#~.]|[#~.]$/g, '' );
42
+
43
+ // Support for links containing a doclet type.
44
+ // E.g., `CKEDITOR.feature#property-allowedContent`.
45
+ if ( name.includes( '-' ) ) {
46
+ let [ type, description ] = name.split( '-' );
47
+
48
+ // JSDuck replaces `$` with `s-`.
49
+ if ( type === 's' ) {
50
+ description = `s-${ description }`;
51
+ }
52
+
53
+ // For events, we want to keep the `name` as it is specified.
54
+ if ( type === 'event' ) {
55
+ name = type;
56
+
57
+ // An event within a namespace.
58
+ if ( label ) {
59
+ label = `${ description }:${ label }`;
60
+ }
61
+ else {
62
+ label = description;
63
+ }
64
+ }
65
+ // Otherwise, skip the type. Use the name only.
66
+ else {
67
+ name = description;
68
+ }
69
+ }
17
70
 
18
71
  if ( parts.length === 1 ) {
72
+ // When processing a string that looks like an assignment expression,
73
+ // let's return the original string (do not cut it anywhere).
74
+ // It is useful when processing a generic argument.
75
+ const isTypeAssignment = longname.split( '=' ).length === 2;
76
+
77
+ if ( isTypeAssignment ) {
78
+ return {
79
+ isSingle: true,
80
+ name: longname,
81
+ longnameBase: '',
82
+ directoryNames: []
83
+ };
84
+ }
85
+
19
86
  return {
20
87
  isSingle: true,
21
88
  name,
22
89
  longnameBase,
23
- directoryNames: []
90
+ directoryNames: [],
91
+ label,
92
+ isStatic
24
93
  };
25
94
  }
26
95
 
@@ -36,11 +105,35 @@ module.exports = longname => {
36
105
  const directoryNames = parts;
37
106
 
38
107
  return {
39
- name, // last part of longname
40
- longnameBase, // longname without the last part
108
+ name,
109
+ longnameBase,
41
110
  moduleName,
42
111
  className,
43
112
  packageName,
44
- directoryNames
113
+ directoryNames,
114
+ label,
115
+ isStatic
45
116
  };
46
117
  };
118
+
119
+ /**
120
+ * @typedef {Object} LongNameParts
121
+ *
122
+ * @property {Array.<String>} [directoryNames]
123
+ *
124
+ * @property {Boolean} [isStatic]
125
+ *
126
+ * @property {Boolean} [isSingle]
127
+ *
128
+ * @property {String} [longnameBase]
129
+ *
130
+ * @property {String} [moduleName]
131
+ *
132
+ * @property {String} [className]
133
+ *
134
+ * @property {String} [packageName]
135
+ *
136
+ * @property {String} [name]
137
+ *
138
+ * @property {String} [label]
139
+ */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Copyright (c) 2017-2022, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2017-2023, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md.
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Copyright (c) 2017-2022, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2017-2023, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md.
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Copyright (c) 2017-2022, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2017-2023, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md.
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Copyright (c) 2017-2022, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2017-2023, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md.
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Copyright (c) 2017-2022, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2017-2023, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md.
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Copyright (c) 2017-2022, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2017-2023, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md.
4
4
  */
5
5
 
package/src/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Copyright (c) 2017-2022, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2017-2023, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md.
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Copyright (c) 2017-2022, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2017-2023, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md.
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Copyright (c) 2017-2022, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2017-2023, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md.
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Copyright (c) 2017-2022, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2017-2023, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md.
4
4
  */
5
5
 
@@ -25,7 +25,6 @@ module.exports = config => {
25
25
  src,
26
26
  projectDst, // e.g.: ckeditor5/latest/api
27
27
  outputDir, // build/docs
28
- type, // type of API data (jsdoc, jsduck)
29
28
  themePath, // Umberto theme path
30
29
  BASE_PATH, // e.g.: ckeditor5/latest
31
30
  docSearch, // Algolia's docsearch config
@@ -37,9 +36,10 @@ module.exports = config => {
37
36
 
38
37
  const apiConfig = projectConfig.groups ? projectConfig.groups.find( g => g.id === 'api-reference' ) : null;
39
38
  const middlewares = apiConfig ? apiConfig.middlewares : [];
40
- const docSources = readDocSources( src, type );
39
+ const apiType = templateLocals.projectLocals.apiType;
40
+ const docSources = readDocSources( src, apiType );
41
41
  const dataProvider = new DataProvider();
42
- const dataCollection = dataProvider.convert( type, docSources, { middlewares } );
42
+ const dataCollection = dataProvider.convert( apiType, docSources, { middlewares } );
43
43
  const projectName = projectConfig.name;
44
44
 
45
45
  if ( !dataCollection ) {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Copyright (c) 2017-2022, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2017-2023, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md.
4
4
  */
5
5
 
@@ -449,7 +449,6 @@ function buildApis( projectConfigs, options = {} ) {
449
449
  src: upath.join( config.projectRootPath, config.path, apiConfig.sourceDir ),
450
450
  projectDst: upath.join( BASE_PATH, apiConfig.slug ),
451
451
  outputDir: hexoManager.getPublicDir().replace( process.cwd(), '' ),
452
- type: apiConfig.type,
453
452
  themePath: hexoManager.getThemePath(),
454
453
  BASE_PATH,
455
454
  docSearch: options.docSearch,
@@ -465,7 +464,8 @@ function buildApis( projectConfigs, options = {} ) {
465
464
  disableSearch: config.docsearch === false,
466
465
  repoUrl: config.repoUrl,
467
466
  og: config.og,
468
- projectSlug: config.slug
467
+ projectSlug: config.slug,
468
+ apiType: apiConfig.type
469
469
  },
470
470
  disableSearch: options.disableSearch,
471
471
  googleoptimize: options.googleoptimize,
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Copyright (c) 2017-2022, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2017-2023, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md.
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Copyright (c) 2017-2022, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2017-2023, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md.
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Copyright (c) 2017-2022, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2017-2023, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md.
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Copyright (c) 2017-2022, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2017-2023, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md.
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Copyright (c) 2017-2022, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2017-2023, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md.
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Copyright (c) 2017-2022, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2017-2023, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md.
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Copyright (c) 2017-2022, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2017-2023, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md.
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Copyright (c) 2017-2022, CKSource Holding sp. z o.o. All rights reserved.
2
+ * @license Copyright (c) 2017-2023, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md.
4
4
  */
5
5