@breadstone-tools/cem-core 0.0.12-beta.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 (246) hide show
  1. package/Ast/Ast.d.ts +224 -0
  2. package/Ast/Ast.d.ts.map +1 -0
  3. package/Ast/Ast.js +557 -0
  4. package/Ast/Ast.js.map +1 -0
  5. package/Ast/Builder/BuildArrowFunction.d.ts +14 -0
  6. package/Ast/Builder/BuildArrowFunction.d.ts.map +1 -0
  7. package/Ast/Builder/BuildArrowFunction.js +29 -0
  8. package/Ast/Builder/BuildArrowFunction.js.map +1 -0
  9. package/Ast/Builder/BuildAttribute.d.ts +16 -0
  10. package/Ast/Builder/BuildAttribute.d.ts.map +1 -0
  11. package/Ast/Builder/BuildAttribute.js +36 -0
  12. package/Ast/Builder/BuildAttribute.js.map +1 -0
  13. package/Ast/Builder/BuildClass.d.ts +24 -0
  14. package/Ast/Builder/BuildClass.d.ts.map +1 -0
  15. package/Ast/Builder/BuildClass.js +251 -0
  16. package/Ast/Builder/BuildClass.js.map +1 -0
  17. package/Ast/Builder/BuildClassField.d.ts +14 -0
  18. package/Ast/Builder/BuildClassField.d.ts.map +1 -0
  19. package/Ast/Builder/BuildClassField.js +34 -0
  20. package/Ast/Builder/BuildClassField.js.map +1 -0
  21. package/Ast/Builder/BuildFunctionLike.d.ts +41 -0
  22. package/Ast/Builder/BuildFunctionLike.d.ts.map +1 -0
  23. package/Ast/Builder/BuildFunctionLike.js +80 -0
  24. package/Ast/Builder/BuildFunctionLike.js.map +1 -0
  25. package/Ast/Builder/BuildMixin.d.ts +19 -0
  26. package/Ast/Builder/BuildMixin.d.ts.map +1 -0
  27. package/Ast/Builder/BuildMixin.js +50 -0
  28. package/Ast/Builder/BuildMixin.js.map +1 -0
  29. package/Ast/Builder/BuildVariable.d.ts +15 -0
  30. package/Ast/Builder/BuildVariable.d.ts.map +1 -0
  31. package/Ast/Builder/BuildVariable.js +29 -0
  32. package/Ast/Builder/BuildVariable.js.map +1 -0
  33. package/Ast/Handler/HandleAttrJsDoc.d.ts +10 -0
  34. package/Ast/Handler/HandleAttrJsDoc.d.ts.map +1 -0
  35. package/Ast/Handler/HandleAttrJsDoc.js +43 -0
  36. package/Ast/Handler/HandleAttrJsDoc.js.map +1 -0
  37. package/Ast/Handler/HandleCollectMixins.d.ts +10 -0
  38. package/Ast/Handler/HandleCollectMixins.d.ts.map +1 -0
  39. package/Ast/Handler/HandleCollectMixins.js +27 -0
  40. package/Ast/Handler/HandleCollectMixins.js.map +1 -0
  41. package/Ast/Handler/HandleCreateClassDeclarationMixin.d.ts +9 -0
  42. package/Ast/Handler/HandleCreateClassDeclarationMixin.d.ts.map +1 -0
  43. package/Ast/Handler/HandleCreateClassDeclarationMixin.js +38 -0
  44. package/Ast/Handler/HandleCreateClassDeclarationMixin.js.map +1 -0
  45. package/Ast/Handler/HandleCustomJsDocTags.d.ts +8 -0
  46. package/Ast/Handler/HandleCustomJsDocTags.d.ts.map +1 -0
  47. package/Ast/Handler/HandleCustomJsDocTags.js +31 -0
  48. package/Ast/Handler/HandleCustomJsDocTags.js.map +1 -0
  49. package/Ast/Handler/HandleDefaultValue.d.ts +10 -0
  50. package/Ast/Handler/HandleDefaultValue.d.ts.map +1 -0
  51. package/Ast/Handler/HandleDefaultValue.js +48 -0
  52. package/Ast/Handler/HandleDefaultValue.js.map +1 -0
  53. package/Ast/Handler/HandleExplicitType.d.ts +10 -0
  54. package/Ast/Handler/HandleExplicitType.d.ts.map +1 -0
  55. package/Ast/Handler/HandleExplicitType.js +28 -0
  56. package/Ast/Handler/HandleExplicitType.js.map +1 -0
  57. package/Ast/Handler/HandleHeritage.d.ts +11 -0
  58. package/Ast/Handler/HandleHeritage.d.ts.map +1 -0
  59. package/Ast/Handler/HandleHeritage.js +67 -0
  60. package/Ast/Handler/HandleHeritage.js.map +1 -0
  61. package/Ast/Handler/HandleJsDoc.d.ts +9 -0
  62. package/Ast/Handler/HandleJsDoc.d.ts.map +1 -0
  63. package/Ast/Handler/HandleJsDoc.js +90 -0
  64. package/Ast/Handler/HandleJsDoc.js.map +1 -0
  65. package/Ast/Handler/HandleJsDocParameterTag.d.ts +8 -0
  66. package/Ast/Handler/HandleJsDocParameterTag.d.ts.map +1 -0
  67. package/Ast/Handler/HandleJsDocParameterTag.js +59 -0
  68. package/Ast/Handler/HandleJsDocParameterTag.js.map +1 -0
  69. package/Ast/Handler/HandleModifiers.d.ts +13 -0
  70. package/Ast/Handler/HandleModifiers.d.ts.map +1 -0
  71. package/Ast/Handler/HandleModifiers.js +49 -0
  72. package/Ast/Handler/HandleModifiers.js.map +1 -0
  73. package/Ast/Handler/HandlePrivateMember.d.ts +10 -0
  74. package/Ast/Handler/HandlePrivateMember.d.ts.map +1 -0
  75. package/Ast/Handler/HandlePrivateMember.js +25 -0
  76. package/Ast/Handler/HandlePrivateMember.js.map +1 -0
  77. package/Ast/Handler/HandleTypeInference.d.ts +9 -0
  78. package/Ast/Handler/HandleTypeInference.d.ts.map +1 -0
  79. package/Ast/Handler/HandleTypeInference.js +46 -0
  80. package/Ast/Handler/HandleTypeInference.js.map +1 -0
  81. package/Ast/Handler/HandleWellKnownTypes.d.ts +11 -0
  82. package/Ast/Handler/HandleWellKnownTypes.d.ts.map +1 -0
  83. package/Ast/Handler/HandleWellKnownTypes.js +28 -0
  84. package/Ast/Handler/HandleWellKnownTypes.js.map +1 -0
  85. package/Ast/Manifest.d.ts +47 -0
  86. package/Ast/Manifest.d.ts.map +1 -0
  87. package/Ast/Manifest.js +209 -0
  88. package/Ast/Manifest.js.map +1 -0
  89. package/Index.d.ts +9 -0
  90. package/Index.d.ts.map +1 -0
  91. package/Index.js +8 -0
  92. package/Index.js.map +1 -0
  93. package/LICENSE +21 -0
  94. package/Plugins/Analyse/ArrowFunctionPlugin.d.ts +13 -0
  95. package/Plugins/Analyse/ArrowFunctionPlugin.d.ts.map +1 -0
  96. package/Plugins/Analyse/ArrowFunctionPlugin.js +37 -0
  97. package/Plugins/Analyse/ArrowFunctionPlugin.js.map +1 -0
  98. package/Plugins/Analyse/ClassJsDocPlugin.d.ts +25 -0
  99. package/Plugins/Analyse/ClassJsDocPlugin.d.ts.map +1 -0
  100. package/Plugins/Analyse/ClassJsDocPlugin.js +200 -0
  101. package/Plugins/Analyse/ClassJsDocPlugin.js.map +1 -0
  102. package/Plugins/Analyse/ClassPlugin.d.ts +13 -0
  103. package/Plugins/Analyse/ClassPlugin.d.ts.map +1 -0
  104. package/Plugins/Analyse/ClassPlugin.js +32 -0
  105. package/Plugins/Analyse/ClassPlugin.js.map +1 -0
  106. package/Plugins/Analyse/CustomElementsDefineCallsPlugin.d.ts +15 -0
  107. package/Plugins/Analyse/CustomElementsDefineCallsPlugin.d.ts.map +1 -0
  108. package/Plugins/Analyse/CustomElementsDefineCallsPlugin.js +112 -0
  109. package/Plugins/Analyse/CustomElementsDefineCallsPlugin.js.map +1 -0
  110. package/Plugins/Analyse/ExportsPlugin.d.ts +18 -0
  111. package/Plugins/Analyse/ExportsPlugin.d.ts.map +1 -0
  112. package/Plugins/Analyse/ExportsPlugin.js +154 -0
  113. package/Plugins/Analyse/ExportsPlugin.js.map +1 -0
  114. package/Plugins/Analyse/FunctionLikePlugin.d.ts +14 -0
  115. package/Plugins/Analyse/FunctionLikePlugin.d.ts.map +1 -0
  116. package/Plugins/Analyse/FunctionLikePlugin.js +36 -0
  117. package/Plugins/Analyse/FunctionLikePlugin.js.map +1 -0
  118. package/Plugins/Analyse/MixinPlugin.d.ts +13 -0
  119. package/Plugins/Analyse/MixinPlugin.d.ts.map +1 -0
  120. package/Plugins/Analyse/MixinPlugin.js +36 -0
  121. package/Plugins/Analyse/MixinPlugin.js.map +1 -0
  122. package/Plugins/Analyse/ReexportedWrappedMixinExportsPlugin.d.ts +15 -0
  123. package/Plugins/Analyse/ReexportedWrappedMixinExportsPlugin.d.ts.map +1 -0
  124. package/Plugins/Analyse/ReexportedWrappedMixinExportsPlugin.js +56 -0
  125. package/Plugins/Analyse/ReexportedWrappedMixinExportsPlugin.js.map +1 -0
  126. package/Plugins/Analyse/VariablePlugin.d.ts +13 -0
  127. package/Plugins/Analyse/VariablePlugin.d.ts.map +1 -0
  128. package/Plugins/Analyse/VariablePlugin.js +40 -0
  129. package/Plugins/Analyse/VariablePlugin.js.map +1 -0
  130. package/Plugins/Collect/CollectImportsPlugin.d.ts +6 -0
  131. package/Plugins/Collect/CollectImportsPlugin.d.ts.map +1 -0
  132. package/Plugins/Collect/CollectImportsPlugin.js +100 -0
  133. package/Plugins/Collect/CollectImportsPlugin.js.map +1 -0
  134. package/Plugins/Framework/Catalyst/Catalyst.d.ts +3 -0
  135. package/Plugins/Framework/Catalyst/Catalyst.d.ts.map +1 -0
  136. package/Plugins/Framework/Catalyst/Catalyst.js +9 -0
  137. package/Plugins/Framework/Catalyst/Catalyst.js.map +1 -0
  138. package/Plugins/Framework/Fast/Fast.d.ts +3 -0
  139. package/Plugins/Framework/Fast/Fast.d.ts.map +1 -0
  140. package/Plugins/Framework/Fast/Fast.js +9 -0
  141. package/Plugins/Framework/Fast/Fast.js.map +1 -0
  142. package/Plugins/Framework/Lit/Lit.d.ts +8 -0
  143. package/Plugins/Framework/Lit/Lit.d.ts.map +1 -0
  144. package/Plugins/Framework/Lit/Lit.js +25 -0
  145. package/Plugins/Framework/Lit/Lit.js.map +1 -0
  146. package/Plugins/Framework/Lit/MemberDenyListPlugin.d.ts +16 -0
  147. package/Plugins/Framework/Lit/MemberDenyListPlugin.d.ts.map +1 -0
  148. package/Plugins/Framework/Lit/MemberDenyListPlugin.js +37 -0
  149. package/Plugins/Framework/Lit/MemberDenyListPlugin.js.map +1 -0
  150. package/Plugins/Framework/Lit/MethodDenyListPlugin.d.ts +24 -0
  151. package/Plugins/Framework/Lit/MethodDenyListPlugin.d.ts.map +1 -0
  152. package/Plugins/Framework/Lit/MethodDenyListPlugin.js +51 -0
  153. package/Plugins/Framework/Lit/MethodDenyListPlugin.js.map +1 -0
  154. package/Plugins/Framework/Lit/PropertyDecoratorPlugin.d.ts +16 -0
  155. package/Plugins/Framework/Lit/PropertyDecoratorPlugin.d.ts.map +1 -0
  156. package/Plugins/Framework/Lit/PropertyDecoratorPlugin.js +100 -0
  157. package/Plugins/Framework/Lit/PropertyDecoratorPlugin.js.map +1 -0
  158. package/Plugins/Framework/Lit/StaticPropertiesPlugin.d.ts +17 -0
  159. package/Plugins/Framework/Lit/StaticPropertiesPlugin.d.ts.map +1 -0
  160. package/Plugins/Framework/Lit/StaticPropertiesPlugin.js +126 -0
  161. package/Plugins/Framework/Lit/StaticPropertiesPlugin.js.map +1 -0
  162. package/Plugins/Framework/Lwc/Lwc.d.ts +3 -0
  163. package/Plugins/Framework/Lwc/Lwc.d.ts.map +1 -0
  164. package/Plugins/Framework/Lwc/Lwc.js +9 -0
  165. package/Plugins/Framework/Lwc/Lwc.js.map +1 -0
  166. package/Plugins/Framework/Shared/AttrDecoratorPlugin.d.ts +18 -0
  167. package/Plugins/Framework/Shared/AttrDecoratorPlugin.d.ts.map +1 -0
  168. package/Plugins/Framework/Shared/AttrDecoratorPlugin.js +80 -0
  169. package/Plugins/Framework/Shared/AttrDecoratorPlugin.js.map +1 -0
  170. package/Plugins/Framework/Shared/CustomElementDecoratorPlugin.d.ts +14 -0
  171. package/Plugins/Framework/Shared/CustomElementDecoratorPlugin.d.ts.map +1 -0
  172. package/Plugins/Framework/Shared/CustomElementDecoratorPlugin.js +67 -0
  173. package/Plugins/Framework/Shared/CustomElementDecoratorPlugin.js.map +1 -0
  174. package/Plugins/Framework/Stencil/Stencil.d.ts +3 -0
  175. package/Plugins/Framework/Stencil/Stencil.d.ts.map +1 -0
  176. package/Plugins/Framework/Stencil/Stencil.js +9 -0
  177. package/Plugins/Framework/Stencil/Stencil.js.map +1 -0
  178. package/Plugins/Link/CleanupClassesPlugin.d.ts +6 -0
  179. package/Plugins/Link/CleanupClassesPlugin.d.ts.map +1 -0
  180. package/Plugins/Link/CleanupClassesPlugin.js +24 -0
  181. package/Plugins/Link/CleanupClassesPlugin.js.map +1 -0
  182. package/Plugins/Link/FieldDenyListPlugin.d.ts +6 -0
  183. package/Plugins/Link/FieldDenyListPlugin.d.ts.map +1 -0
  184. package/Plugins/Link/FieldDenyListPlugin.js +23 -0
  185. package/Plugins/Link/FieldDenyListPlugin.js.map +1 -0
  186. package/Plugins/Link/MethodDenyListPlugin.d.ts +6 -0
  187. package/Plugins/Link/MethodDenyListPlugin.d.ts.map +1 -0
  188. package/Plugins/Link/MethodDenyListPlugin.js +26 -0
  189. package/Plugins/Link/MethodDenyListPlugin.js.map +1 -0
  190. package/Plugins/PostProcessing/ApplyInheritancePlugin.d.ts +6 -0
  191. package/Plugins/PostProcessing/ApplyInheritancePlugin.d.ts.map +1 -0
  192. package/Plugins/PostProcessing/ApplyInheritancePlugin.js +87 -0
  193. package/Plugins/PostProcessing/ApplyInheritancePlugin.js.map +1 -0
  194. package/Plugins/PostProcessing/IsCustomElementPlugin.d.ts +6 -0
  195. package/Plugins/PostProcessing/IsCustomElementPlugin.d.ts.map +1 -0
  196. package/Plugins/PostProcessing/IsCustomElementPlugin.js +35 -0
  197. package/Plugins/PostProcessing/IsCustomElementPlugin.js.map +1 -0
  198. package/Plugins/PostProcessing/LinkClassToTagnamePlugin.d.ts +6 -0
  199. package/Plugins/PostProcessing/LinkClassToTagnamePlugin.d.ts.map +1 -0
  200. package/Plugins/PostProcessing/LinkClassToTagnamePlugin.js +28 -0
  201. package/Plugins/PostProcessing/LinkClassToTagnamePlugin.js.map +1 -0
  202. package/Plugins/PostProcessing/RemoveUnexportedDeclarationsPlugin.d.ts +6 -0
  203. package/Plugins/PostProcessing/RemoveUnexportedDeclarationsPlugin.d.ts.map +1 -0
  204. package/Plugins/PostProcessing/RemoveUnexportedDeclarationsPlugin.js +21 -0
  205. package/Plugins/PostProcessing/RemoveUnexportedDeclarationsPlugin.js.map +1 -0
  206. package/Plugins/PostProcessing/ResolveInitializersPlugin.d.ts +6 -0
  207. package/Plugins/PostProcessing/ResolveInitializersPlugin.d.ts.map +1 -0
  208. package/Plugins/PostProcessing/ResolveInitializersPlugin.js +59 -0
  209. package/Plugins/PostProcessing/ResolveInitializersPlugin.js.map +1 -0
  210. package/Services/DependencyService.d.ts +1 -0
  211. package/Services/DependencyService.d.ts.map +1 -0
  212. package/Services/DependencyService.js +112 -0
  213. package/Services/DependencyService.js.map +1 -0
  214. package/Services/Interfaces/IDependencyService.d.ts +12 -0
  215. package/Services/Interfaces/IDependencyService.d.ts.map +1 -0
  216. package/Services/Interfaces/IDependencyService.js +4 -0
  217. package/Services/Interfaces/IDependencyService.js.map +1 -0
  218. package/Services/Interfaces/IManifestBuilder.d.ts +16 -0
  219. package/Services/Interfaces/IManifestBuilder.d.ts.map +1 -0
  220. package/Services/Interfaces/IManifestBuilder.js +4 -0
  221. package/Services/Interfaces/IManifestBuilder.js.map +1 -0
  222. package/Services/Interfaces/IManifestEngine.d.ts +16 -0
  223. package/Services/Interfaces/IManifestEngine.d.ts.map +1 -0
  224. package/Services/Interfaces/IManifestEngine.js +4 -0
  225. package/Services/Interfaces/IManifestEngine.js.map +1 -0
  226. package/Services/ManifestBuilder.d.ts +47 -0
  227. package/Services/ManifestBuilder.d.ts.map +1 -0
  228. package/Services/ManifestBuilder.js +49 -0
  229. package/Services/ManifestBuilder.js.map +1 -0
  230. package/Services/ManifestEngine.d.ts +62 -0
  231. package/Services/ManifestEngine.d.ts.map +1 -0
  232. package/Services/ManifestEngine.js +283 -0
  233. package/Services/ManifestEngine.js.map +1 -0
  234. package/Types/Framework.d.ts +2 -0
  235. package/Types/Framework.d.ts.map +1 -0
  236. package/Types/Framework.js +3 -0
  237. package/Types/Framework.js.map +1 -0
  238. package/Types.d.ts +1 -0
  239. package/Types.d.ts.map +1 -0
  240. package/Types.js +45 -0
  241. package/Types.js.map +1 -0
  242. package/Utils.d.ts +50 -0
  243. package/Utils.d.ts.map +1 -0
  244. package/Utils.js +147 -0
  245. package/Utils.js.map +1 -0
  246. package/package.json +23 -0
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ //#region Imports
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.createAttribute = createAttribute;
5
+ exports.createAttributeFromField = createAttributeFromField;
6
+ //#endregion
7
+ /**
8
+ * Creates an attribute representation from a node.
9
+ * @param node - The node to create the attribute from.
10
+ * @returns An object representing the attribute.
11
+ */
12
+ function createAttribute(node) {
13
+ const attributeTemplate = {
14
+ name: node.getText() || ''
15
+ };
16
+ return attributeTemplate;
17
+ }
18
+ /**
19
+ * Creates an attribute from a field representation.
20
+ * @param field - The field to create the attribute from.
21
+ * @returns An object representing the attribute.
22
+ */
23
+ function createAttributeFromField(field) {
24
+ const attribute = {
25
+ ...field,
26
+ fieldName: field.name
27
+ };
28
+ // Delete the following properties because they don't exist on an attributeDoc
29
+ delete attribute.kind;
30
+ delete attribute.static;
31
+ delete attribute.privacy;
32
+ delete attribute.reflects;
33
+ delete attribute.resolveInitializer;
34
+ return attribute;
35
+ }
36
+ //# sourceMappingURL=BuildAttribute.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BuildAttribute.js","sourceRoot":"","sources":["../../../src/Ast/Builder/BuildAttribute.ts"],"names":[],"mappings":";AAAA,iBAAiB;;AAWjB,0CAKC;AAOD,4DAcC;AAjCD,YAAY;AAEZ;;;;GAIG;AACH,SAAgB,eAAe,CAAC,IAAa;IACzC,MAAM,iBAAiB,GAAG;QACtB,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE;KAC7B,CAAC;IACF,OAAO,iBAAiB,CAAC;AAC7B,CAAC;AAED;;;;GAIG;AACH,SAAgB,wBAAwB,CAAC,KAAU;IAC/C,MAAM,SAAS,GAAG;QACd,GAAG,KAAK;QACR,SAAS,EAAE,KAAK,CAAC,IAAI;KACxB,CAAC;IAEF,8EAA8E;IAC9E,OAAO,SAAS,CAAC,IAAI,CAAC;IACtB,OAAO,SAAS,CAAC,MAAM,CAAC;IACxB,OAAO,SAAS,CAAC,OAAO,CAAC;IACzB,OAAO,SAAS,CAAC,QAAQ,CAAC;IAC1B,OAAO,SAAS,CAAC,kBAAkB,CAAC;IAEpC,OAAO,SAAS,CAAC;AACrB,CAAC"}
@@ -0,0 +1,24 @@
1
+ import ts from 'typescript';
2
+ interface IClassTemplate {
3
+ kind: string;
4
+ description: string;
5
+ name: string;
6
+ cssProperties: Array<any>;
7
+ cssParts: Array<any>;
8
+ slots: Array<any>;
9
+ members: Array<any>;
10
+ events: Array<any>;
11
+ attributes: Array<any>;
12
+ cssStates: Array<any>;
13
+ }
14
+ /**
15
+ * Creates a class documentation object.
16
+ * @param node - The TypeScript class node.
17
+ * @param moduleDoc - The module documentation object.
18
+ * @param context - The context for the class creation.
19
+ * @returns The class documentation object.
20
+ */
21
+ export declare function createClass(node: ts.ClassDeclaration | ts.ClassExpression, moduleDoc: any, context: any): IClassTemplate;
22
+ export declare function getDefaultValuesFromConstructorVisitor(source: ts.ClassDeclaration | ts.ClassExpression, classTemplate: IClassTemplate, context: any): void;
23
+ export {};
24
+ //# sourceMappingURL=BuildClass.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BuildClass.d.ts","sourceRoot":"","sources":["../../../src/Ast/Builder/BuildClass.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,YAAY,CAAC;AAa5B,UAAU,cAAc;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1B,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IACrB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAClB,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IACpB,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IACnB,UAAU,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;CACzB;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,GAAG,EAAE,CAAC,eAAe,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,GAAG,cAAc,CAmHxH;AAsCD,wBAAgB,sCAAsC,CAClD,MAAM,EAAE,EAAE,CAAC,gBAAgB,GAAG,EAAE,CAAC,eAAe,EAChD,aAAa,EAAE,cAAc,EAC7B,OAAO,EAAE,GAAG,GACb,IAAI,CAeN"}
@@ -0,0 +1,251 @@
1
+ "use strict";
2
+ //#region Imports
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.createClass = createClass;
8
+ exports.getDefaultValuesFromConstructorVisitor = getDefaultValuesFromConstructorVisitor;
9
+ const typescript_1 = __importDefault(require("typescript"));
10
+ const Ast_js_1 = require("../Ast.js");
11
+ const HandleAttrJsDoc_js_1 = require("../Handler/HandleAttrJsDoc.js");
12
+ const HandleDefaultValue_js_1 = require("../Handler/HandleDefaultValue.js");
13
+ const HandleHeritage_js_1 = require("../Handler/HandleHeritage.js");
14
+ const HandleJsDoc_js_1 = require("../Handler/HandleJsDoc.js");
15
+ const HandleTypeInference_js_1 = require("../Handler/HandleTypeInference.js");
16
+ const BuildAttribute_js_1 = require("./BuildAttribute.js");
17
+ const BuildClassField_js_1 = require("./BuildClassField.js");
18
+ const BuildFunctionLike_js_1 = require("./BuildFunctionLike.js");
19
+ /**
20
+ * Creates a class documentation object.
21
+ * @param node - The TypeScript class node.
22
+ * @param moduleDoc - The module documentation object.
23
+ * @param context - The context for the class creation.
24
+ * @returns The class documentation object.
25
+ */
26
+ function createClass(node, moduleDoc, context) {
27
+ let classTemplate = {
28
+ kind: 'class',
29
+ description: '',
30
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
31
+ // @ts-ignore
32
+ name: (node.name?.getText() ?? node.parent.parent.name?.getText()) || '',
33
+ cssProperties: [],
34
+ cssParts: [],
35
+ slots: [],
36
+ members: [],
37
+ events: [],
38
+ attributes: [],
39
+ cssStates: [],
40
+ };
41
+ node.members.forEach(member => {
42
+ if ((0, Ast_js_1.isProperty)(member)) {
43
+ if (member.name?.getText() === 'observedAttributes') {
44
+ if (typescript_1.default.isPropertyDeclaration(member)) {
45
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
46
+ // @ts-ignore
47
+ member.initializer?.elements?.forEach((element) => {
48
+ if (typescript_1.default.isStringLiteral(element)) {
49
+ const attribute = (0, BuildAttribute_js_1.createAttribute)(element);
50
+ classTemplate.attributes.push(attribute);
51
+ }
52
+ });
53
+ }
54
+ if (typescript_1.default.isGetAccessor(member)) {
55
+ const returnStatement = member.body?.statements.find(Ast_js_1.isReturnStatement);
56
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
57
+ // @ts-ignore
58
+ returnStatement?.expression?.elements?.forEach((element) => {
59
+ if (typescript_1.default.isStringLiteral(element)) {
60
+ const attribute = (0, BuildAttribute_js_1.createAttribute)(element);
61
+ classTemplate.attributes.push(attribute);
62
+ }
63
+ });
64
+ }
65
+ }
66
+ }
67
+ });
68
+ node.members.forEach(member => {
69
+ if (typescript_1.default.isMethodDeclaration(member) && !(0, Ast_js_1.hasIgnoreJSDoc)(member)) {
70
+ const method = (0, BuildFunctionLike_js_1.createFunctionLike)(member);
71
+ classTemplate.members.push(method);
72
+ }
73
+ if ((0, Ast_js_1.isProperty)(member) && !(0, Ast_js_1.hasIgnoreJSDoc)(member)) {
74
+ const field = (0, BuildClassField_js_1.createField)(member);
75
+ if (typescript_1.default.isGetAccessor(member)) {
76
+ const hasSetter = node.members.some(m => typescript_1.default.isSetAccessor(m) && m.name.getText() === field.name);
77
+ if (!hasSetter) {
78
+ field.readonly = true;
79
+ }
80
+ }
81
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
82
+ // @ts-ignore
83
+ if (member.initializer?.kind === typescript_1.default.SyntaxKind.Identifier) {
84
+ field.resolveInitializer = {
85
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
86
+ // @ts-ignore
87
+ ...resolveModuleOrPackageSpecifier(moduleDoc, context, member.initializer?.getText()),
88
+ };
89
+ }
90
+ if ((0, Ast_js_1.hasAttrAnnotation)(member)) {
91
+ let attribute = (0, BuildAttribute_js_1.createAttributeFromField)(field);
92
+ attribute = (0, HandleAttrJsDoc_js_1.handleAttrJsDoc)(member, attribute);
93
+ field.attribute = attribute.name;
94
+ const attrAlreadyExists = classTemplate.attributes.find(attr => attr.name === attribute.name);
95
+ if (attrAlreadyExists) {
96
+ classTemplate.attributes = classTemplate.attributes.map(attr => attr.name === attribute.name ? { ...attrAlreadyExists, ...attribute } : attr);
97
+ }
98
+ else {
99
+ classTemplate.attributes.push(attribute);
100
+ }
101
+ }
102
+ if (field.static) {
103
+ classTemplate.members.push(field);
104
+ }
105
+ else {
106
+ const fieldExists = classTemplate.members
107
+ .filter(mem => !mem?.static)
108
+ .find(mem => mem?.name === member.name?.getText());
109
+ if (fieldExists) {
110
+ classTemplate.members = classTemplate.members.map(mem => mem?.name === member.name?.getText() && !mem?.static ? { ...mem, ...field } : mem);
111
+ }
112
+ else {
113
+ classTemplate.members.push(field);
114
+ }
115
+ }
116
+ }
117
+ if (typescript_1.default.isMethodDeclaration(member)) {
118
+ eventsVisitor(member, classTemplate);
119
+ }
120
+ });
121
+ getDefaultValuesFromConstructorVisitor(node, classTemplate, context);
122
+ classTemplate.members = classTemplate.members.filter(mem => !mem.ignore);
123
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
124
+ // @ts-ignore
125
+ classTemplate = (0, HandleHeritage_js_1.handleHeritage)(classTemplate, moduleDoc, context, node);
126
+ return classTemplate;
127
+ }
128
+ function eventsVisitor(source, classTemplate) {
129
+ visitNode(source);
130
+ function visitNode(node) {
131
+ switch (node.kind) {
132
+ case typescript_1.default.SyntaxKind.CallExpression:
133
+ if ((0, Ast_js_1.isDispatchEvent)(node) && !(0, Ast_js_1.hasIgnoreJSDoc)(node.parent)) {
134
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
135
+ // @ts-ignore
136
+ node.arguments?.forEach((arg) => {
137
+ if (arg.kind === typescript_1.default.SyntaxKind.NewExpression) {
138
+ const eventName = arg?.arguments?.[0]?.text;
139
+ const isExistingEvent = classTemplate.events.some((event) => event.name === eventName);
140
+ if (!isExistingEvent) {
141
+ let eventDoc = {
142
+ ...(eventName ? { name: eventName } : {}),
143
+ type: {
144
+ text: arg.expression.text,
145
+ },
146
+ };
147
+ eventDoc = (0, HandleJsDoc_js_1.handleJsDoc)(eventDoc, node.parent);
148
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
149
+ // @ts-ignore
150
+ delete eventDoc.privacy;
151
+ classTemplate.events.push(eventDoc);
152
+ }
153
+ }
154
+ });
155
+ }
156
+ }
157
+ typescript_1.default.forEachChild(node, visitNode);
158
+ }
159
+ }
160
+ function getDefaultValuesFromConstructorVisitor(source, classTemplate, context) {
161
+ visitNode(source);
162
+ function visitNode(node) {
163
+ switch (node.kind) {
164
+ case typescript_1.default.SyntaxKind.Constructor:
165
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
166
+ // @ts-ignore
167
+ node.body?.statements?.filter((statement) => statement.kind === typescript_1.default.SyntaxKind.ExpressionStatement)
168
+ .filter((statement) => statement.expression.kind === typescript_1.default.SyntaxKind.BinaryExpression)
169
+ .forEach((statement) => mapClassMember(source, classTemplate, context, node, statement, statement.expression));
170
+ break;
171
+ }
172
+ typescript_1.default.forEachChild(node, visitNode);
173
+ }
174
+ }
175
+ function mapClassMember(source, classTemplate, context, node, statement, expression) {
176
+ let existingMember = classTemplate.members.find((member) => expression?.left?.name?.getText() === member.name && member.kind === 'field');
177
+ if (expression?.operatorToken?.kind === typescript_1.default.SyntaxKind.CommaToken) {
178
+ if (expression.left.kind === typescript_1.default.SyntaxKind.BinaryExpression) {
179
+ mapClassMember(source, classTemplate, context, node, statement, expression.left);
180
+ }
181
+ if (expression.right.kind === typescript_1.default.SyntaxKind.BinaryExpression) {
182
+ mapClassMember(source, classTemplate, context, node, statement, expression.right);
183
+ }
184
+ return;
185
+ }
186
+ if (!existingMember) {
187
+ if ((0, Ast_js_1.hasIgnoreJSDoc)(statement)) {
188
+ return;
189
+ }
190
+ if ((0, Ast_js_1.isBindCall)(statement)) {
191
+ return;
192
+ }
193
+ existingMember = {
194
+ kind: 'field',
195
+ name: expression?.left?.name?.getText(),
196
+ };
197
+ if (!classTemplate.members) {
198
+ classTemplate.members = [];
199
+ }
200
+ classTemplate.members.push(existingMember);
201
+ }
202
+ if (existingMember) {
203
+ if ((0, Ast_js_1.hasIgnoreJSDoc)(statement)) {
204
+ existingMember.ignore = true;
205
+ }
206
+ if (!existingMember?.type) {
207
+ existingMember = (0, HandleTypeInference_js_1.handleTypeInference)(existingMember, expression?.right);
208
+ }
209
+ existingMember = (0, HandleJsDoc_js_1.handleJsDoc)(existingMember, statement);
210
+ existingMember = (0, HandleDefaultValue_js_1.handleDefaultValue)(existingMember, statement, expression);
211
+ if (expression?.right?.kind === typescript_1.default.SyntaxKind.Identifier) {
212
+ existingMember.resolveInitializer = {
213
+ ...resolveModuleOrPackageSpecifier({ path: source.getSourceFile().fileName }, context, expression?.right?.getText()),
214
+ };
215
+ }
216
+ if ((0, Ast_js_1.hasAttrAnnotation)(statement)) {
217
+ const field = existingMember;
218
+ let attribute = (0, BuildAttribute_js_1.createAttributeFromField)(field);
219
+ attribute = (0, HandleAttrJsDoc_js_1.handleAttrJsDoc)(statement, attribute);
220
+ field.attribute = attribute.name;
221
+ const attrAlreadyExists = classTemplate.attributes.find(attr => attr.name === attribute.name);
222
+ if (attrAlreadyExists) {
223
+ classTemplate.attributes = classTemplate.attributes.map(attr => attr.name === attribute.name ? { ...attrAlreadyExists, ...attribute } : attr);
224
+ }
225
+ else {
226
+ classTemplate.attributes.push(attribute);
227
+ }
228
+ }
229
+ }
230
+ }
231
+ /**
232
+ * Resolves the module or package specifier for a given name.
233
+ * @param moduleDoc - The module documentation object.
234
+ * @param context - The context object containing imports.
235
+ * @param name - The name to resolve the specifier for.
236
+ * @returns An object with the resolved module or package specifier.
237
+ */
238
+ function resolveModuleOrPackageSpecifier(moduleDoc, context, name) {
239
+ const foundImport = context?.imports?.find((i) => i.name === name);
240
+ if (foundImport) {
241
+ if (foundImport.isBareModuleSpecifier) {
242
+ // Import is from a 3rd party package
243
+ return { package: foundImport.importPath };
244
+ }
245
+ // Import is from a local module
246
+ return { module: new URL(foundImport.importPath, `file:///${moduleDoc.path}`).pathname };
247
+ }
248
+ // Item is in the current module
249
+ return { module: moduleDoc.path };
250
+ }
251
+ //# sourceMappingURL=BuildClass.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BuildClass.js","sourceRoot":"","sources":["../../../src/Ast/Builder/BuildClass.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type ts from 'typescript';
2
+ interface IFieldTemplate {
3
+ kind: string;
4
+ name: string;
5
+ [key: string]: any;
6
+ }
7
+ /**
8
+ * Creates a field documentation object.
9
+ * @param node - The TypeScript node representing the field.
10
+ * @returns The field documentation object.
11
+ */
12
+ export declare function createField(node: ts.Node): IFieldTemplate;
13
+ export {};
14
+ //# sourceMappingURL=BuildClassField.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BuildClassField.d.ts","sourceRoot":"","sources":["../../../src/Ast/Builder/BuildClassField.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AASjC,UAAU,cAAc;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,cAAc,CAmBzD"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createField = createField;
4
+ const HandleDefaultValue_js_1 = require("../Handler/HandleDefaultValue.js");
5
+ const HandleExplicitType_js_1 = require("../Handler/HandleExplicitType.js");
6
+ const HandleJsDoc_js_1 = require("../Handler/HandleJsDoc.js");
7
+ const HandleModifiers_js_1 = require("../Handler/HandleModifiers.js");
8
+ const HandlePrivateMember_js_1 = require("../Handler/HandlePrivateMember.js");
9
+ const HandleTypeInference_js_1 = require("../Handler/HandleTypeInference.js");
10
+ const HandleWellKnownTypes_js_1 = require("../Handler/HandleWellKnownTypes.js");
11
+ /**
12
+ * Creates a field documentation object.
13
+ * @param node - The TypeScript node representing the field.
14
+ * @returns The field documentation object.
15
+ */
16
+ function createField(node) {
17
+ let fieldTemplate = {
18
+ kind: 'field',
19
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
20
+ // @ts-ignore
21
+ name: node.name?.getText() || '',
22
+ };
23
+ fieldTemplate = (0, HandlePrivateMember_js_1.handlePrivateMember)(fieldTemplate, node);
24
+ fieldTemplate = (0, HandleTypeInference_js_1.handleTypeInference)(fieldTemplate, node);
25
+ fieldTemplate = (0, HandleExplicitType_js_1.handleExplicitType)(fieldTemplate, node);
26
+ fieldTemplate = (0, HandleModifiers_js_1.handleModifiers)(fieldTemplate, node);
27
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
28
+ // @ts-ignore
29
+ fieldTemplate = (0, HandleDefaultValue_js_1.handleDefaultValue)(fieldTemplate, node);
30
+ fieldTemplate = (0, HandleWellKnownTypes_js_1.handleWellKnownTypes)(fieldTemplate, node);
31
+ fieldTemplate = (0, HandleJsDoc_js_1.handleJsDoc)(fieldTemplate, node);
32
+ return fieldTemplate;
33
+ }
34
+ //# sourceMappingURL=BuildClassField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BuildClassField.js","sourceRoot":"","sources":["../../../src/Ast/Builder/BuildClassField.ts"],"names":[],"mappings":";;AAoBA,kCAmBC;AAtCD,4EAAsE;AACtE,4EAAsE;AACtE,8DAAwD;AACxD,sEAAgE;AAChE,8EAAwE;AACxE,8EAAwE;AACxE,gFAA0E;AAQ1E;;;;GAIG;AACH,SAAgB,WAAW,CAAC,IAAa;IACrC,IAAI,aAAa,GAAmB;QAChC,IAAI,EAAE,OAAO;QACb,6DAA6D;QAC7D,aAAa;QACb,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;KACnC,CAAC;IAEF,aAAa,GAAG,IAAA,4CAAmB,EAAC,aAAa,EAAE,IAAI,CAAC,CAAC;IACzD,aAAa,GAAG,IAAA,4CAAmB,EAAC,aAAa,EAAE,IAAI,CAAC,CAAC;IACzD,aAAa,GAAG,IAAA,0CAAkB,EAAC,aAAa,EAAE,IAAI,CAAC,CAAC;IACxD,aAAa,GAAG,IAAA,oCAAe,EAAC,aAAa,EAAE,IAAI,CAAC,CAAC;IACrD,6DAA6D;IAC7D,aAAa;IACb,aAAa,GAAG,IAAA,0CAAkB,EAAC,aAAa,EAAE,IAAI,CAAC,CAAC;IACxD,aAAa,GAAG,IAAA,8CAAoB,EAAC,aAAa,EAAE,IAAI,CAAC,CAAC;IAC1D,aAAa,GAAG,IAAA,4BAAW,EAAC,aAAa,EAAE,IAAI,CAAC,CAAC;IAEjD,OAAO,aAAa,CAAC;AACzB,CAAC"}
@@ -0,0 +1,41 @@
1
+ import ts from 'typescript';
2
+ /**
3
+ * Creates a function-like representation, does not handle arrow functions.
4
+ * @param node - The node to create the function-like representation from.
5
+ * @returns An object representing the function-like structure.
6
+ */
7
+ export declare function createFunctionLike(node: ts.FunctionLikeDeclaration): {
8
+ kind: string;
9
+ name: string;
10
+ parameters?: any;
11
+ return?: any;
12
+ modifiers?: any;
13
+ jsDoc?: any;
14
+ };
15
+ /**
16
+ * Determines the kind of the function-like, either 'function' or 'method'.
17
+ * @param functionLike - The function-like template to update.
18
+ * @param node - The node to determine the kind from.
19
+ * @returns The updated function-like template.
20
+ */
21
+ export declare function handleKind(functionLike: {
22
+ kind: string;
23
+ name: string;
24
+ }, node: ts.Node): {
25
+ kind: string;
26
+ name: string;
27
+ };
28
+ /**
29
+ * Handles a function-like's return type and parameters/parameter types.
30
+ * @param functionLike - The function-like template to update.
31
+ * @param node - The node to extract parameters and return type from.
32
+ * @returns The updated function-like template.
33
+ */
34
+ export declare function handleParametersAndReturnType(functionLike: {
35
+ parameters?: Array<any>;
36
+ return?: any;
37
+ }, node: ts.FunctionLikeDeclaration): {
38
+ parameters?: Array<any>;
39
+ return?: any;
40
+ };
41
+ //# sourceMappingURL=BuildFunctionLike.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BuildFunctionLike.d.ts","sourceRoot":"","sources":["../../../src/Ast/Builder/BuildFunctionLike.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAI5B;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,EAAE,CAAC,uBAAuB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,GAAG,CAAC;IAAC,MAAM,CAAC,EAAE,GAAG,CAAC;IAAC,SAAS,CAAC,EAAE,GAAG,CAAC;IAAC,KAAK,CAAC,EAAE,GAAG,CAAA;CAAE,CAcjK;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,YAAY,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAUtH;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,YAAY,EAAE;IAAE,UAAU,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAAC,MAAM,CAAC,EAAE,GAAG,CAAA;CAAE,EAAE,IAAI,EAAE,EAAE,CAAC,uBAAuB,GAAG;IAAE,UAAU,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAAC,MAAM,CAAC,EAAE,GAAG,CAAA;CAAE,CAiClL"}
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createFunctionLike = createFunctionLike;
7
+ exports.handleKind = handleKind;
8
+ exports.handleParametersAndReturnType = handleParametersAndReturnType;
9
+ const typescript_1 = __importDefault(require("typescript"));
10
+ const HandleJsDoc_js_1 = require("../Handler/HandleJsDoc.js");
11
+ const HandleModifiers_js_1 = require("../Handler/HandleModifiers.js");
12
+ /**
13
+ * Creates a function-like representation, does not handle arrow functions.
14
+ * @param node - The node to create the function-like representation from.
15
+ * @returns An object representing the function-like structure.
16
+ */
17
+ function createFunctionLike(node) {
18
+ let functionLikeTemplate = {
19
+ kind: '',
20
+ name: node.name.getText() || ''
21
+ };
22
+ functionLikeTemplate = handleKind(functionLikeTemplate, node);
23
+ functionLikeTemplate = (0, HandleModifiers_js_1.handleModifiers)(functionLikeTemplate, node);
24
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
25
+ // @ts-ignore
26
+ functionLikeTemplate = handleParametersAndReturnType(functionLikeTemplate, node);
27
+ functionLikeTemplate = (0, HandleJsDoc_js_1.handleJsDoc)(functionLikeTemplate, node);
28
+ return functionLikeTemplate;
29
+ }
30
+ /**
31
+ * Determines the kind of the function-like, either 'function' or 'method'.
32
+ * @param functionLike - The function-like template to update.
33
+ * @param node - The node to determine the kind from.
34
+ * @returns The updated function-like template.
35
+ */
36
+ function handleKind(functionLike, node) {
37
+ switch (node.kind) {
38
+ case typescript_1.default.SyntaxKind.FunctionDeclaration:
39
+ functionLike.kind = 'function';
40
+ break;
41
+ case typescript_1.default.SyntaxKind.MethodDeclaration:
42
+ functionLike.kind = 'method';
43
+ break;
44
+ }
45
+ return functionLike;
46
+ }
47
+ /**
48
+ * Handles a function-like's return type and parameters/parameter types.
49
+ * @param functionLike - The function-like template to update.
50
+ * @param node - The node to extract parameters and return type from.
51
+ * @returns The updated function-like template.
52
+ */
53
+ function handleParametersAndReturnType(functionLike, node) {
54
+ if (node.type) {
55
+ functionLike.return = {
56
+ type: { text: node.type.getText() }
57
+ };
58
+ }
59
+ const parameters = [];
60
+ node.parameters.forEach(param => {
61
+ const parameter = {
62
+ name: param.name.getText(),
63
+ };
64
+ if (param.initializer) {
65
+ parameter.default = param.initializer.getText();
66
+ }
67
+ if (param.questionToken) {
68
+ parameter.optional = true;
69
+ }
70
+ if (param.type) {
71
+ parameter.type = { text: param.type.getText() };
72
+ }
73
+ parameters.push(parameter);
74
+ });
75
+ if (Array.isArray(parameters) && parameters.length > 0) {
76
+ functionLike.parameters = parameters;
77
+ }
78
+ return functionLike;
79
+ }
80
+ //# sourceMappingURL=BuildFunctionLike.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BuildFunctionLike.js","sourceRoot":"","sources":["../../../src/Ast/Builder/BuildFunctionLike.ts"],"names":[],"mappings":";;;;;AASA,gDAcC;AAQD,gCAUC;AAQD,sEAiCC;AAlFD,4DAA4B;AAC5B,8DAAwD;AACxD,sEAAgE;AAEhE;;;;GAIG;AACH,SAAgB,kBAAkB,CAAC,IAAgC;IAC/D,IAAI,oBAAoB,GAAG;QACvB,IAAI,EAAE,EAAE;QACR,IAAI,EAAG,IAAI,CAAC,IAAsB,CAAC,OAAO,EAAE,IAAI,EAAE;KACrD,CAAC;IAEF,oBAAoB,GAAG,UAAU,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;IAC9D,oBAAoB,GAAG,IAAA,oCAAe,EAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;IACnE,6DAA6D;IAC7D,aAAa;IACb,oBAAoB,GAAG,6BAA6B,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;IACjF,oBAAoB,GAAG,IAAA,4BAAW,EAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;IAE/D,OAAO,oBAAoB,CAAC;AAChC,CAAC;AAED;;;;;GAKG;AACH,SAAgB,UAAU,CAAC,YAA4C,EAAE,IAAa;IAClF,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAChB,KAAK,oBAAE,CAAC,UAAU,CAAC,mBAAmB;YAClC,YAAY,CAAC,IAAI,GAAG,UAAU,CAAC;YAC/B,MAAM;QACV,KAAK,oBAAE,CAAC,UAAU,CAAC,iBAAiB;YAChC,YAAY,CAAC,IAAI,GAAG,QAAQ,CAAC;YAC7B,MAAM;IACd,CAAC;IACD,OAAO,YAAY,CAAC;AACxB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,6BAA6B,CAAC,YAAuD,EAAE,IAAgC;IACnI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,YAAY,CAAC,MAAM,GAAG;YAClB,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;SACtC,CAAC;IACN,CAAC;IAED,MAAM,UAAU,GAAe,EAAE,CAAC;IAClC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QAC5B,MAAM,SAAS,GAAQ;YACnB,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE;SAC7B,CAAC;QAEF,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;YACpB,SAAS,CAAC,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;QACpD,CAAC;QAED,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;YACtB,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC9B,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACb,SAAS,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;QACpD,CAAC;QAED,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrD,YAAY,CAAC,UAAU,GAAG,UAAU,CAAC;IACzC,CAAC;IAED,OAAO,YAAY,CAAC;AACxB,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type ts from 'typescript';
2
+ /**
3
+ * Takes a mixinFunctionNode, which is the function/arrow function containing the mixin class
4
+ * and the actual class node returned by the mixin declaration.
5
+ * @param mixinFunctionNode - The node representing the mixin function.
6
+ * @param mixinClassNode - The node representing the mixin class.
7
+ * @param moduleDoc - The module documentation object.
8
+ * @param context - The context for the mixin creation.
9
+ * @returns The mixin documentation object.
10
+ */
11
+ export declare function createMixin(mixinFunctionNode: ts.Node, mixinClassNode: ts.ClassDeclaration | ts.ClassExpression, moduleDoc: any, context: any): any;
12
+ /**
13
+ * Handles the name of the mixin.
14
+ * @param mixin - The mixin documentation object.
15
+ * @param node - The node representing the mixin.
16
+ * @returns The mixin documentation object with the name set.
17
+ */
18
+ export declare function handleName(mixin: any, node: ts.Node): any;
19
+ //# sourceMappingURL=BuildMixin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BuildMixin.d.ts","sourceRoot":"","sources":["../../../src/Ast/Builder/BuildMixin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAKjC;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CACvB,iBAAiB,EAAE,EAAE,CAAC,IAAI,EAC1B,cAAc,EAAE,EAAE,CAAC,gBAAgB,GAAG,EAAE,CAAC,eAAe,EACxD,SAAS,EAAE,GAAG,EACd,OAAO,EAAE,GAAG,GACb,GAAG,CAWL;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,GAAG,CAKzD"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createMixin = createMixin;
4
+ exports.handleName = handleName;
5
+ const HandleJsDoc_js_1 = require("../Handler/HandleJsDoc.js");
6
+ const BuildClass_js_1 = require("./BuildClass.js");
7
+ const BuildFunctionLike_js_1 = require("./BuildFunctionLike.js");
8
+ /**
9
+ * Takes a mixinFunctionNode, which is the function/arrow function containing the mixin class
10
+ * and the actual class node returned by the mixin declaration.
11
+ * @param mixinFunctionNode - The node representing the mixin function.
12
+ * @param mixinClassNode - The node representing the mixin class.
13
+ * @param moduleDoc - The module documentation object.
14
+ * @param context - The context for the mixin creation.
15
+ * @returns The mixin documentation object.
16
+ */
17
+ function createMixin(mixinFunctionNode, mixinClassNode, moduleDoc, context) {
18
+ let mixinTemplate = (0, BuildClass_js_1.createClass)(mixinClassNode, moduleDoc, context);
19
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
20
+ // @ts-ignore
21
+ mixinTemplate = (0, BuildFunctionLike_js_1.handleParametersAndReturnType)(mixinTemplate, mixinFunctionNode.declarationList?.declarations?.[0]?.initializer || mixinFunctionNode);
22
+ mixinTemplate = (0, HandleJsDoc_js_1.handleJsDoc)(mixinTemplate, mixinFunctionNode);
23
+ mixinTemplate = handleName(mixinTemplate, mixinFunctionNode);
24
+ mixinTemplate = turnClassDocIntoMixin(mixinTemplate);
25
+ return mixinTemplate;
26
+ }
27
+ /**
28
+ * Handles the name of the mixin.
29
+ * @param mixin - The mixin documentation object.
30
+ * @param node - The node representing the mixin.
31
+ * @returns The mixin documentation object with the name set.
32
+ */
33
+ function handleName(mixin, node) {
34
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
35
+ // @ts-ignore
36
+ mixin.name = node.name?.getText() || node.parent.name?.getText() || node.declarationList?.declarations?.[0]?.name?.getText() || '';
37
+ return mixin;
38
+ }
39
+ /**
40
+ * Turns a class documentation object into a mixin documentation object.
41
+ * @param mixin - The class documentation object.
42
+ * @returns The mixin documentation object.
43
+ */
44
+ function turnClassDocIntoMixin(mixin) {
45
+ mixin.kind = 'mixin';
46
+ delete mixin.superclass;
47
+ delete mixin.return;
48
+ return mixin;
49
+ }
50
+ //# sourceMappingURL=BuildMixin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BuildMixin.js","sourceRoot":"","sources":["../../../src/Ast/Builder/BuildMixin.ts"],"names":[],"mappings":";;AAcA,kCAgBC;AAQD,gCAKC;AA1CD,8DAAwD;AACxD,mDAA8C;AAC9C,iEAAuE;AAEvE;;;;;;;;GAQG;AACH,SAAgB,WAAW,CACvB,iBAA0B,EAC1B,cAAwD,EACxD,SAAc,EACd,OAAY;IAEZ,IAAI,aAAa,GAAG,IAAA,2BAAW,EAAC,cAAc,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAEpE,6DAA6D;IAC7D,aAAa;IACb,aAAa,GAAG,IAAA,oDAA6B,EAAC,aAAa,EAAE,iBAAiB,CAAC,eAAe,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,IAAI,iBAAiB,CAAC,CAAC;IACrJ,aAAa,GAAG,IAAA,4BAAW,EAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;IAC9D,aAAa,GAAG,UAAU,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;IAC7D,aAAa,GAAG,qBAAqB,CAAC,aAAa,CAAC,CAAC;IAErD,OAAO,aAAa,CAAC;AACzB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,UAAU,CAAC,KAAU,EAAE,IAAa;IAChD,6DAA6D;IAC7D,aAAa;IACb,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,CAAC,eAAe,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACnI,OAAO,KAAK,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,SAAS,qBAAqB,CAAC,KAAU;IACrC,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC;IACrB,OAAO,KAAK,CAAC,UAAU,CAAC;IACxB,OAAO,KAAK,CAAC,MAAM,CAAC;IACpB,OAAO,KAAK,CAAC;AACjB,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type ts from 'typescript';
2
+ interface IVariableTemplate {
3
+ kind: string;
4
+ name: string;
5
+ [key: string]: any;
6
+ }
7
+ /**
8
+ * Creates a variable documentation object.
9
+ * @param variableStatementNode - The node representing the variable statement.
10
+ * @param declarationNode - The node representing the variable declaration.
11
+ * @returns The variable documentation object.
12
+ */
13
+ export declare function createVariable(variableStatementNode: ts.VariableStatement, declarationNode: ts.VariableDeclaration): IVariableTemplate;
14
+ export {};
15
+ //# sourceMappingURL=BuildVariable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BuildVariable.d.ts","sourceRoot":"","sources":["../../../src/Ast/Builder/BuildVariable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAOjC,UAAU,iBAAiB;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACtB;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC1B,qBAAqB,EAAE,EAAE,CAAC,iBAAiB,EAC3C,eAAe,EAAE,EAAE,CAAC,mBAAmB,GACxC,iBAAiB,CAenB"}