@lwc/metadata 2.19.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 (223) hide show
  1. package/LICENSE.txt +21 -0
  2. package/dist/__tests__/bundle-metadata.spec.d.ts +1 -0
  3. package/dist/bundle-metadata.d.ts +3 -0
  4. package/dist/bundle-metadata.js +119 -0
  5. package/dist/bundle-metadata.js.map +1 -0
  6. package/dist/dependency-analyzer/__tests__/komaci-script-docs.fixtures.spec.d.ts +1 -0
  7. package/dist/dependency-analyzer/__tests__/komaci-template-docs.fixtures.spec.d.ts +1 -0
  8. package/dist/dependency-analyzer/analyzeScriptFile.d.ts +4 -0
  9. package/dist/dependency-analyzer/analyzeScriptFile.js +465 -0
  10. package/dist/dependency-analyzer/analyzeScriptFile.js.map +1 -0
  11. package/dist/dependency-analyzer/analyzeTemplateFile.d.ts +3 -0
  12. package/dist/dependency-analyzer/analyzeTemplateFile.js +364 -0
  13. package/dist/dependency-analyzer/analyzeTemplateFile.js.map +1 -0
  14. package/dist/dependency-analyzer/index.d.ts +2 -0
  15. package/dist/errors/errors.d.ts +9 -0
  16. package/dist/errors/errors.js +119 -0
  17. package/dist/errors/errors.js.map +1 -0
  18. package/dist/index.d.ts +7 -0
  19. package/dist/index.js +20 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/schema/typescript-types/bundle-metadata-types.d.ts +14 -0
  22. package/dist/schema/typescript-types/common-metadata-types.d.ts +25 -0
  23. package/dist/schema/typescript-types/script-metadata-types.d.ts +241 -0
  24. package/dist/schema/typescript-types/script-metadata-types.js +18 -0
  25. package/dist/schema/typescript-types/script-metadata-types.js.map +1 -0
  26. package/dist/schema/typescript-types/style-metadata-types.d.ts +35 -0
  27. package/dist/schema/typescript-types/style-metadata-types.js +13 -0
  28. package/dist/schema/typescript-types/style-metadata-types.js.map +1 -0
  29. package/dist/schema/typescript-types/template-metadata-types.d.ts +11 -0
  30. package/dist/schema/typescript-types/template-metadata-types.js +13 -0
  31. package/dist/schema/typescript-types/template-metadata-types.js.map +1 -0
  32. package/dist/script-metadata/__tests__/class.members.spec.d.ts +1 -0
  33. package/dist/script-metadata/__tests__/classes.spec.d.ts +1 -0
  34. package/dist/script-metadata/__tests__/dynamic-import-hints.spec.d.ts +1 -0
  35. package/dist/script-metadata/__tests__/dynamic-imports.spec.d.ts +1 -0
  36. package/dist/script-metadata/__tests__/exports-default.spec.d.ts +1 -0
  37. package/dist/script-metadata/__tests__/exports.spec.d.ts +1 -0
  38. package/dist/script-metadata/__tests__/imports.spec.d.ts +1 -0
  39. package/dist/script-metadata/__tests__/module-references.spec.d.ts +1 -0
  40. package/dist/script-metadata/__tests__/reexports.spec.d.ts +1 -0
  41. package/dist/script-metadata/__tests__/script-metadata.spec.d.ts +1 -0
  42. package/dist/script-metadata/__tests__/test-util.d.ts +3 -0
  43. package/dist/script-metadata/decorators/__tests__/decorators.spec.d.ts +1 -0
  44. package/dist/script-metadata/decorators/index.d.ts +4 -0
  45. package/dist/script-metadata/decorators/index.js +184 -0
  46. package/dist/script-metadata/decorators/index.js.map +1 -0
  47. package/dist/script-metadata/events/__tests__/event-construction.spec.d.ts +1 -0
  48. package/dist/script-metadata/events/__tests__/event-dispatch.spec.d.ts +1 -0
  49. package/dist/script-metadata/events/__tests__/event-listener.spec.d.ts +1 -0
  50. package/dist/script-metadata/events/event-construction.d.ts +7 -0
  51. package/dist/script-metadata/events/event-construction.js +55 -0
  52. package/dist/script-metadata/events/event-construction.js.map +1 -0
  53. package/dist/script-metadata/events/event-dispatch.d.ts +5 -0
  54. package/dist/script-metadata/events/event-dispatch.js +46 -0
  55. package/dist/script-metadata/events/event-dispatch.js.map +1 -0
  56. package/dist/script-metadata/events/event-listener.d.ts +4 -0
  57. package/dist/script-metadata/events/event-listener.js +74 -0
  58. package/dist/script-metadata/events/event-listener.js.map +1 -0
  59. package/dist/script-metadata/events/util.d.ts +14 -0
  60. package/dist/script-metadata/events/util.js +63 -0
  61. package/dist/script-metadata/events/util.js.map +1 -0
  62. package/dist/script-metadata/index.d.ts +8 -0
  63. package/dist/script-metadata/index.js +203 -0
  64. package/dist/script-metadata/index.js.map +1 -0
  65. package/dist/script-metadata/module-references/__tests__/generic-module.spec.d.ts +1 -0
  66. package/dist/script-metadata/module-references/__tests__/local-module.spec.d.ts +1 -0
  67. package/dist/script-metadata/module-references/__tests__/salesforce-references/access-check.spec.d.ts +1 -0
  68. package/dist/script-metadata/module-references/__tests__/salesforce-references/apex-continuation.spec.d.ts +1 -0
  69. package/dist/script-metadata/module-references/__tests__/salesforce-references/apex.spec.d.ts +1 -0
  70. package/dist/script-metadata/module-references/__tests__/salesforce-references/base.spec.d.ts +1 -0
  71. package/dist/script-metadata/module-references/__tests__/salesforce-references/client.spec.d.ts +1 -0
  72. package/dist/script-metadata/module-references/__tests__/salesforce-references/commerce.spec.d.ts +1 -0
  73. package/dist/script-metadata/module-references/__tests__/salesforce-references/community.spec.d.ts +1 -0
  74. package/dist/script-metadata/module-references/__tests__/salesforce-references/content-asset-url.spec.d.ts +1 -0
  75. package/dist/script-metadata/module-references/__tests__/salesforce-references/custom-permission.spec.d.ts +1 -0
  76. package/dist/script-metadata/module-references/__tests__/salesforce-references/gates.spec.d.ts +1 -0
  77. package/dist/script-metadata/module-references/__tests__/salesforce-references/i18n.spec.d.ts +1 -0
  78. package/dist/script-metadata/module-references/__tests__/salesforce-references/internal.spec.d.ts +1 -0
  79. package/dist/script-metadata/module-references/__tests__/salesforce-references/komaci.spec.d.ts +1 -0
  80. package/dist/script-metadata/module-references/__tests__/salesforce-references/label.spec.d.ts +1 -0
  81. package/dist/script-metadata/module-references/__tests__/salesforce-references/loader.spec.d.ts +1 -0
  82. package/dist/script-metadata/module-references/__tests__/salesforce-references/message-channel.spec.d.ts +1 -0
  83. package/dist/script-metadata/module-references/__tests__/salesforce-references/metric.spec.d.ts +1 -0
  84. package/dist/script-metadata/module-references/__tests__/salesforce-references/resource-url.spec.d.ts +1 -0
  85. package/dist/script-metadata/module-references/__tests__/salesforce-references/schema.spec.d.ts +1 -0
  86. package/dist/script-metadata/module-references/__tests__/salesforce-references/site.spec.d.ts +1 -0
  87. package/dist/script-metadata/module-references/__tests__/salesforce-references/slds.spec.d.ts +1 -0
  88. package/dist/script-metadata/module-references/__tests__/salesforce-references/user-permission.spec.d.ts +1 -0
  89. package/dist/script-metadata/module-references/__tests__/salesforce-references/user.spec.d.ts +1 -0
  90. package/dist/script-metadata/module-references/collectors/__tests__/collection-api.spec.d.ts +1 -0
  91. package/dist/script-metadata/module-references/collectors/generic-module.d.ts +3 -0
  92. package/dist/script-metadata/module-references/collectors/generic-module.js +92 -0
  93. package/dist/script-metadata/module-references/collectors/generic-module.js.map +1 -0
  94. package/dist/script-metadata/module-references/collectors/local-module.d.ts +3 -0
  95. package/dist/script-metadata/module-references/collectors/local-module.js +16 -0
  96. package/dist/script-metadata/module-references/collectors/local-module.js.map +1 -0
  97. package/dist/script-metadata/module-references/collectors/main.d.ts +8 -0
  98. package/dist/script-metadata/module-references/collectors/main.js +37 -0
  99. package/dist/script-metadata/module-references/collectors/main.js.map +1 -0
  100. package/dist/script-metadata/module-references/collectors/scoped/access-check.d.ts +3 -0
  101. package/dist/script-metadata/module-references/collectors/scoped/access-check.js +12 -0
  102. package/dist/script-metadata/module-references/collectors/scoped/access-check.js.map +1 -0
  103. package/dist/script-metadata/module-references/collectors/scoped/apex.d.ts +3 -0
  104. package/dist/script-metadata/module-references/collectors/scoped/apex.js +88 -0
  105. package/dist/script-metadata/module-references/collectors/scoped/apex.js.map +1 -0
  106. package/dist/script-metadata/module-references/collectors/scoped/client.d.ts +3 -0
  107. package/dist/script-metadata/module-references/collectors/scoped/client.js +28 -0
  108. package/dist/script-metadata/module-references/collectors/scoped/client.js.map +1 -0
  109. package/dist/script-metadata/module-references/collectors/scoped/commerce.d.ts +3 -0
  110. package/dist/script-metadata/module-references/collectors/scoped/commerce.js +26 -0
  111. package/dist/script-metadata/module-references/collectors/scoped/commerce.js.map +1 -0
  112. package/dist/script-metadata/module-references/collectors/scoped/community.d.ts +3 -0
  113. package/dist/script-metadata/module-references/collectors/scoped/community.js +29 -0
  114. package/dist/script-metadata/module-references/collectors/scoped/community.js.map +1 -0
  115. package/dist/script-metadata/module-references/collectors/scoped/content-asset-url.d.ts +3 -0
  116. package/dist/script-metadata/module-references/collectors/scoped/content-asset-url.js +12 -0
  117. package/dist/script-metadata/module-references/collectors/scoped/content-asset-url.js.map +1 -0
  118. package/dist/script-metadata/module-references/collectors/scoped/custom-permissions.d.ts +3 -0
  119. package/dist/script-metadata/module-references/collectors/scoped/custom-permissions.js +12 -0
  120. package/dist/script-metadata/module-references/collectors/scoped/custom-permissions.js.map +1 -0
  121. package/dist/script-metadata/module-references/collectors/scoped/design-system.d.ts +3 -0
  122. package/dist/script-metadata/module-references/collectors/scoped/design-system.js +21 -0
  123. package/dist/script-metadata/module-references/collectors/scoped/design-system.js.map +1 -0
  124. package/dist/script-metadata/module-references/collectors/scoped/gate.d.ts +3 -0
  125. package/dist/script-metadata/module-references/collectors/scoped/gate.js +12 -0
  126. package/dist/script-metadata/module-references/collectors/scoped/gate.js.map +1 -0
  127. package/dist/script-metadata/module-references/collectors/scoped/generic-prefix-salesforce-collector.d.ts +9 -0
  128. package/dist/script-metadata/module-references/collectors/scoped/generic-prefix-salesforce-collector.js +22 -0
  129. package/dist/script-metadata/module-references/collectors/scoped/generic-prefix-salesforce-collector.js.map +1 -0
  130. package/dist/script-metadata/module-references/collectors/scoped/i18n.d.ts +3 -0
  131. package/dist/script-metadata/module-references/collectors/scoped/i18n.js +12 -0
  132. package/dist/script-metadata/module-references/collectors/scoped/i18n.js.map +1 -0
  133. package/dist/script-metadata/module-references/collectors/scoped/internal.d.ts +3 -0
  134. package/dist/script-metadata/module-references/collectors/scoped/internal.js +35 -0
  135. package/dist/script-metadata/module-references/collectors/scoped/internal.js.map +1 -0
  136. package/dist/script-metadata/module-references/collectors/scoped/komaci.d.ts +3 -0
  137. package/dist/script-metadata/module-references/collectors/scoped/komaci.js +67 -0
  138. package/dist/script-metadata/module-references/collectors/scoped/komaci.js.map +1 -0
  139. package/dist/script-metadata/module-references/collectors/scoped/label.d.ts +3 -0
  140. package/dist/script-metadata/module-references/collectors/scoped/label.js +12 -0
  141. package/dist/script-metadata/module-references/collectors/scoped/label.js.map +1 -0
  142. package/dist/script-metadata/module-references/collectors/scoped/message-channel.d.ts +3 -0
  143. package/dist/script-metadata/module-references/collectors/scoped/message-channel.js +12 -0
  144. package/dist/script-metadata/module-references/collectors/scoped/message-channel.js.map +1 -0
  145. package/dist/script-metadata/module-references/collectors/scoped/metric.d.ts +3 -0
  146. package/dist/script-metadata/module-references/collectors/scoped/metric.js +12 -0
  147. package/dist/script-metadata/module-references/collectors/scoped/metric.js.map +1 -0
  148. package/dist/script-metadata/module-references/collectors/scoped/resource-url.d.ts +3 -0
  149. package/dist/script-metadata/module-references/collectors/scoped/resource-url.js +12 -0
  150. package/dist/script-metadata/module-references/collectors/scoped/resource-url.js.map +1 -0
  151. package/dist/script-metadata/module-references/collectors/scoped/schema.d.ts +3 -0
  152. package/dist/script-metadata/module-references/collectors/scoped/schema.js +12 -0
  153. package/dist/script-metadata/module-references/collectors/scoped/schema.js.map +1 -0
  154. package/dist/script-metadata/module-references/collectors/scoped/site.d.ts +3 -0
  155. package/dist/script-metadata/module-references/collectors/scoped/site.js +28 -0
  156. package/dist/script-metadata/module-references/collectors/scoped/site.js.map +1 -0
  157. package/dist/script-metadata/module-references/collectors/scoped/user-permissions.d.ts +3 -0
  158. package/dist/script-metadata/module-references/collectors/scoped/user-permissions.js +12 -0
  159. package/dist/script-metadata/module-references/collectors/scoped/user-permissions.js.map +1 -0
  160. package/dist/script-metadata/module-references/collectors/scoped/user.d.ts +3 -0
  161. package/dist/script-metadata/module-references/collectors/scoped/user.js +28 -0
  162. package/dist/script-metadata/module-references/collectors/scoped/user.js.map +1 -0
  163. package/dist/script-metadata/module-references/collectors/utils.d.ts +16 -0
  164. package/dist/script-metadata/module-references/collectors/utils.js +166 -0
  165. package/dist/script-metadata/module-references/collectors/utils.js.map +1 -0
  166. package/dist/script-metadata/module-references/reference.d.ts +4 -0
  167. package/dist/script-metadata/module-references/reference.js +78 -0
  168. package/dist/script-metadata/module-references/reference.js.map +1 -0
  169. package/dist/script-metadata/resolver.d.ts +17 -0
  170. package/dist/script-metadata/resolver.js +306 -0
  171. package/dist/script-metadata/resolver.js.map +1 -0
  172. package/dist/script-metadata/utils.d.ts +34 -0
  173. package/dist/script-metadata/utils.js +118 -0
  174. package/dist/script-metadata/utils.js.map +1 -0
  175. package/dist/script-metadata/visitors/call-expression-visitor.d.ts +5 -0
  176. package/dist/script-metadata/visitors/call-expression-visitor.js +124 -0
  177. package/dist/script-metadata/visitors/call-expression-visitor.js.map +1 -0
  178. package/dist/script-metadata/visitors/class-visitor.d.ts +5 -0
  179. package/dist/script-metadata/visitors/class-visitor.js +195 -0
  180. package/dist/script-metadata/visitors/class-visitor.js.map +1 -0
  181. package/dist/script-metadata/visitors/dynamic-imports-visitor.d.ts +9 -0
  182. package/dist/script-metadata/visitors/dynamic-imports-visitor.js +68 -0
  183. package/dist/script-metadata/visitors/dynamic-imports-visitor.js.map +1 -0
  184. package/dist/script-metadata/visitors/export-all-visitor.d.ts +10 -0
  185. package/dist/script-metadata/visitors/export-all-visitor.js +65 -0
  186. package/dist/script-metadata/visitors/export-all-visitor.js.map +1 -0
  187. package/dist/script-metadata/visitors/export-default-visitor.d.ts +5 -0
  188. package/dist/script-metadata/visitors/export-default-visitor.js +67 -0
  189. package/dist/script-metadata/visitors/export-default-visitor.js.map +1 -0
  190. package/dist/script-metadata/visitors/export-named-visitor.d.ts +5 -0
  191. package/dist/script-metadata/visitors/export-named-visitor.js +125 -0
  192. package/dist/script-metadata/visitors/export-named-visitor.js.map +1 -0
  193. package/dist/script-metadata/visitors/module-imports-visitor.d.ts +5 -0
  194. package/dist/script-metadata/visitors/module-imports-visitor.js +63 -0
  195. package/dist/script-metadata/visitors/module-imports-visitor.js.map +1 -0
  196. package/dist/script-metadata/visitors/new-expression-visitor.d.ts +5 -0
  197. package/dist/script-metadata/visitors/new-expression-visitor.js +36 -0
  198. package/dist/script-metadata/visitors/new-expression-visitor.js.map +1 -0
  199. package/dist/shared/config.d.ts +15 -0
  200. package/dist/shared/utils.d.ts +66 -0
  201. package/dist/shared/utils.js +129 -0
  202. package/dist/shared/utils.js.map +1 -0
  203. package/dist/style-metadata/__tests__/component-references.spec.d.ts +1 -0
  204. package/dist/style-metadata/__tests__/custom-properties.spec.d.ts +1 -0
  205. package/dist/style-metadata/__tests__/imports.spec.d.ts +1 -0
  206. package/dist/style-metadata/__tests__/index.spec.d.ts +1 -0
  207. package/dist/style-metadata/component-references.d.ts +4 -0
  208. package/dist/style-metadata/component-references.js +82 -0
  209. package/dist/style-metadata/component-references.js.map +1 -0
  210. package/dist/style-metadata/custom-properties.d.ts +3 -0
  211. package/dist/style-metadata/custom-properties.js +70 -0
  212. package/dist/style-metadata/custom-properties.js.map +1 -0
  213. package/dist/style-metadata/imports.d.ts +4 -0
  214. package/dist/style-metadata/imports.js +120 -0
  215. package/dist/style-metadata/imports.js.map +1 -0
  216. package/dist/style-metadata/index.d.ts +6 -0
  217. package/dist/style-metadata/index.js +70 -0
  218. package/dist/style-metadata/index.js.map +1 -0
  219. package/dist/template-metadata/__tests__/component-reference.spec.d.ts +1 -0
  220. package/dist/template-metadata/index.d.ts +6 -0
  221. package/dist/template-metadata/index.js +136 -0
  222. package/dist/template-metadata/index.js.map +1 -0
  223. package/package.json +35 -0
@@ -0,0 +1,364 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var utils = require('../shared/utils.js');
6
+
7
+ // Copyright (c) 2022, Salesforce, Inc.,
8
+ // Convert LWC metadata of an HTML template file into a Komaci Document.
9
+ function generateKomaciDocFromTemplate(htmlFile) {
10
+ const komaciRoot = {
11
+ type: 'Container',
12
+ };
13
+ const komaciDoc = {
14
+ compositions: [komaciRoot],
15
+ exports: {
16
+ default: {
17
+ type: 'CompositionReference',
18
+ value: 0,
19
+ },
20
+ },
21
+ };
22
+ // Recursively walk AST to construct full Komaci composition.
23
+ const astRoot = htmlFile.ast;
24
+ if (astRoot) {
25
+ const analyzerContext = {
26
+ komaciDoc: komaciDoc,
27
+ componentToImportMapping: {},
28
+ iterationContext: [],
29
+ };
30
+ processChildren(analyzerContext, astRoot, komaciRoot);
31
+ }
32
+ return komaciDoc;
33
+ }
34
+ // Recurse into the children of the provided node.
35
+ function processChildren(analyzerContext, astParentNode, komaciParentNode) {
36
+ const compositions = [];
37
+ astParentNode.children.forEach((astChildNode) => {
38
+ const komaciChildNode = astNodeToKomaciNode(analyzerContext, astChildNode);
39
+ if (komaciChildNode) {
40
+ let isRelevantChild = true;
41
+ if (komaciChildNode.type === 'Container') {
42
+ // TODO: Improve typings to avoid the type guard here.
43
+ const komaciContainer = komaciChildNode;
44
+ isRelevantChild =
45
+ komaciContainer.slot !== undefined ||
46
+ komaciContainer.key !== undefined ||
47
+ komaciContainer.isActive !== undefined;
48
+ }
49
+ // If the child node is relevant add it to the parent composition, otherwise flatten
50
+ // the irrelevant child node composition it the parent composition.
51
+ if (isRelevantChild) {
52
+ compositions.push(komaciChildNode);
53
+ }
54
+ else {
55
+ const childComposition = komaciChildNode.compositions ?? [];
56
+ compositions.push(...childComposition);
57
+ }
58
+ }
59
+ });
60
+ if (compositions.length > 0) {
61
+ komaciParentNode.compositions = compositions;
62
+ }
63
+ }
64
+ // Convert a single AST node into its Komaci representation.
65
+ function astNodeToKomaciNode(analyzerContext, astNode) {
66
+ switch (astNode.type) {
67
+ case 'If':
68
+ return getKomaciContainer(analyzerContext, astNode);
69
+ case 'ForEach':
70
+ case 'ForOf':
71
+ return getKomaciIteration(analyzerContext, astNode);
72
+ case 'Component':
73
+ return getKomaciComposedAdg(analyzerContext, astNode);
74
+ case 'Slot':
75
+ return getKomaciSlot(analyzerContext, astNode);
76
+ case 'Element': {
77
+ if (astNode.name === 'img') {
78
+ return getKomaciImg(analyzerContext, astNode);
79
+ }
80
+ else {
81
+ return getKomaciContainer(analyzerContext, astNode);
82
+ }
83
+ }
84
+ case 'Text':
85
+ case 'Comment':
86
+ // Do nothing
87
+ return;
88
+ default: {
89
+ const exhaustiveCheck = astNode;
90
+ throw new Error(`Unknown child node ${exhaustiveCheck}`);
91
+ }
92
+ }
93
+ }
94
+ /**
95
+ * Returns the KomaciDoc representation of an <img> tag. This method returns `undefined` if the src parameter is blank,
96
+ * which means that no KomaciDoc representation of the <img> tag would be included in the KomaciDoc
97
+ * @param {AnalyzerContext} analyzerContext the current state of the analyzer
98
+ * @param {Element} astElement the template compiler Element
99
+ * @returns {KomaciImage | undefined} the KomaciDoc representation of the <img> tag, as a komaci Image {Image}, or undefined
100
+ * if none can be returned.
101
+ */
102
+ function getKomaciImg(analyzerContext, astElement) {
103
+ const attrValue = getAttributeValue(astElement, 'src');
104
+ if (attrValue) {
105
+ if (attrValue.type === 'Literal') {
106
+ // if `myValue.value` is blank (or not a string), we return `undefined`, as we should not generate
107
+ // an Image KomaciDoc element for this
108
+ if (typeof attrValue.value === 'boolean' ||
109
+ attrValue.value === '' ||
110
+ attrValue.value.startsWith('data:') ||
111
+ attrValue.value.startsWith('blob:')) {
112
+ return undefined;
113
+ }
114
+ return {
115
+ type: 'Image',
116
+ src: {
117
+ type: 'PrimitiveValue',
118
+ value: attrValue.value,
119
+ },
120
+ };
121
+ }
122
+ else if (attrValue.type === 'MemberExpression' || attrValue.type === 'Identifier') {
123
+ const binding = expressionToBinding(analyzerContext, attrValue);
124
+ // if `binding.value` is blank, we return `undefined`, as we should not generate an Image KomaciDoc element for this
125
+ if (binding.value === '' ||
126
+ binding.value.startsWith('data:') ||
127
+ binding.value.startsWith('blob:')) {
128
+ return undefined;
129
+ }
130
+ return {
131
+ type: 'Image',
132
+ src: binding,
133
+ };
134
+ }
135
+ }
136
+ return undefined;
137
+ }
138
+ /**
139
+ * Find attribute with matching name.
140
+ * @param {Element} node the template compiler Element, from which to find the attribute
141
+ * @param {string} attributeName the name of the attribute to return, as a string
142
+ * @returns {Attribute['value'] | undefined} value of matching attribute as a Literal, or an Expression, otherwise returns `undefined`
143
+ */
144
+ function getAttributeValue(node, attributeName) {
145
+ return node.attributes.find((attr) => attr.name === attributeName)?.value;
146
+ }
147
+ // Construct generic container which has an impact on the compositions data flow.
148
+ function getKomaciContainer(analyzerContext, astNode) {
149
+ const container = {
150
+ type: 'Container',
151
+ };
152
+ if (astNode.type === 'If') {
153
+ container.isActive = {
154
+ input: expressionToBinding(analyzerContext, astNode.condition),
155
+ negate: astNode.modifier === 'false',
156
+ };
157
+ container.location = astNode.directiveLocation;
158
+ }
159
+ if (astNode.type === 'Element') {
160
+ const keyDirective = astNode.directives.find(isKeyDirective);
161
+ if (keyDirective) {
162
+ container.key = expressionToBinding(analyzerContext, keyDirective.value);
163
+ }
164
+ const slotAttribute = astNode.attributes.find(isSlotAttribute);
165
+ if (slotAttribute) {
166
+ container.slot = slotAttribute.value.value;
167
+ }
168
+ }
169
+ processChildren(analyzerContext, astNode, container);
170
+ return container;
171
+ }
172
+ // Convert AST for:each or iterator directive into a Komaci iteration.
173
+ // TODO: Handle `key` attribute for nodes inside iterations (depends on W-8667336).
174
+ function getKomaciIteration(analyzerContext, astNode) {
175
+ const { iterationContext } = analyzerContext;
176
+ let iteration;
177
+ let iterationInfo;
178
+ if (astNode.type === 'ForEach') {
179
+ iteration = {
180
+ type: 'Iteration',
181
+ input: expressionToBinding(analyzerContext, astNode.expression),
182
+ iterator: astNode.item.name,
183
+ location: astNode.directiveLocation,
184
+ };
185
+ iterationInfo = {
186
+ directive: 'for:each',
187
+ itemName: iteration.iterator,
188
+ indexName: astNode.index?.name,
189
+ };
190
+ }
191
+ else {
192
+ iteration = {
193
+ type: 'Iteration',
194
+ input: expressionToBinding(analyzerContext, astNode.expression),
195
+ iterator: astNode.iterator.name,
196
+ location: astNode.directiveLocation,
197
+ };
198
+ iterationInfo = {
199
+ directive: 'iterator',
200
+ itemName: iteration.iterator,
201
+ };
202
+ }
203
+ // Use context to understand which iterations contain the code being analyzed.
204
+ iterationContext.unshift(iterationInfo);
205
+ processChildren(analyzerContext, astNode, iteration);
206
+ // Finished with this iteration, remove from context.
207
+ iterationContext.shift();
208
+ return iteration;
209
+ }
210
+ // Get a ComposedAdg for the provided component reference.
211
+ function getKomaciComposedAdg(analyzerContext, astComponent) {
212
+ const isDynamicComponent = astComponent.directives.some((attribute) => attribute.name === 'Dynamic');
213
+ if (isDynamicComponent) {
214
+ // Komaci doesn't support dynamic components (yet).
215
+ return;
216
+ }
217
+ const importRef = getComponentImportReference(analyzerContext, utils.tagNameToComponentName(astComponent.name));
218
+ const properties = {};
219
+ const composedAdg = {
220
+ type: 'ComposedAdg',
221
+ input: importRef,
222
+ properties,
223
+ };
224
+ const keyDirective = astComponent.directives.find(isKeyDirective);
225
+ if (keyDirective) {
226
+ composedAdg.key = expressionToBinding(analyzerContext, keyDirective.value);
227
+ }
228
+ [...astComponent.attributes, ...astComponent.properties].forEach((attrOrProp) => {
229
+ const propName = attrOrProp.type === 'Attribute'
230
+ ? utils.attributeNameToPropertyName(attrOrProp.name)
231
+ : attrOrProp.name;
232
+ switch (attrOrProp.value.type) {
233
+ case 'Literal': {
234
+ if (attrOrProp.type === 'Attribute' && isSlotAttribute(attrOrProp)) {
235
+ composedAdg.slot = attrOrProp.value.value;
236
+ }
237
+ else {
238
+ properties[propName] = {
239
+ type: 'PrimitiveValue',
240
+ value: attrOrProp.value.value,
241
+ };
242
+ }
243
+ break;
244
+ }
245
+ case 'Identifier':
246
+ case 'MemberExpression': {
247
+ properties[propName] = expressionToBinding(analyzerContext, attrOrProp.value);
248
+ break;
249
+ }
250
+ default: {
251
+ const exhaustiveCheck = attrOrProp.value;
252
+ throw new Error(`Unknown value type ${exhaustiveCheck}`);
253
+ }
254
+ }
255
+ });
256
+ processChildren(analyzerContext, astComponent, composedAdg);
257
+ return composedAdg;
258
+ }
259
+ // Convert AST slot element into Komaci slot.
260
+ function getKomaciSlot(analyzerContext, astElement) {
261
+ const slot = {
262
+ type: 'Slot',
263
+ name: astElement.slotName ?? '',
264
+ };
265
+ const keyDirective = astElement.directives.find(isKeyDirective);
266
+ if (keyDirective) {
267
+ slot.key = expressionToBinding(analyzerContext, keyDirective.value);
268
+ }
269
+ const slotAttribute = astElement.attributes.find(isSlotAttribute);
270
+ if (slotAttribute) {
271
+ slot.slot = slotAttribute.value.value;
272
+ }
273
+ // Process the default content of this slot.
274
+ processChildren(analyzerContext, astElement, slot);
275
+ return slot;
276
+ }
277
+ /**
278
+ * Map a component to an import reference based on it's namespace/name.
279
+ * If no import exist for the adg associated with the component, then
280
+ * create one and contribute it to the KomaciDocument being generated.
281
+ *
282
+ * @param analyzerContext
283
+ * @param namespaceName namespace/name (in camelcase) of component being referenced.
284
+ */
285
+ function getComponentImportReference(analyzerContext, namespaceName) {
286
+ // check cache first.
287
+ let importRef = analyzerContext.componentToImportMapping[namespaceName];
288
+ if (importRef) {
289
+ return importRef;
290
+ }
291
+ // cache miss. initialize imports, if needed.
292
+ const komaciDoc = analyzerContext.komaciDoc;
293
+ if (!komaciDoc.imports) {
294
+ komaciDoc.imports = [];
295
+ }
296
+ // Construct resourceName of the import.
297
+ const segments = namespaceName.split('/');
298
+ if (segments.length !== 2) {
299
+ throw new Error('Invalid component name. Expected format: <ns>/<name>. Received: ' + namespaceName);
300
+ }
301
+ const namespace = segments[0];
302
+ const name = segments[1];
303
+ // This import should be for the default export of component's js file.
304
+ // Which is the Adg of the component being referenced.
305
+ // Example: @salesforce/komaci/c__child__child.js
306
+ const resourceName = `@salesforce/komaci/${namespace}__${name}__${name}.js`;
307
+ // Add import to doc, create ref and cache for future use.
308
+ komaciDoc.imports.push({ resourceName, names: ['default'] });
309
+ const importIdx = komaciDoc.imports.length - 1;
310
+ importRef = {
311
+ type: 'ImportReference',
312
+ value: `${importIdx}/names/0`,
313
+ };
314
+ analyzerContext.componentToImportMapping[namespaceName] = importRef;
315
+ return importRef;
316
+ }
317
+ // Recursively process LWC expression into Komaci expression format (e.g. record/data/id).
318
+ function processExpression(astExpression) {
319
+ if (astExpression.type === 'Identifier') {
320
+ return astExpression.name;
321
+ }
322
+ else {
323
+ return `${processExpression(astExpression.object)}/${astExpression.property.name}`;
324
+ }
325
+ }
326
+ // Convert LWC expression metadata to Komaci binding reference.
327
+ function expressionToBinding(analyzerContext, astExpression) {
328
+ const { iterationContext } = analyzerContext;
329
+ let komaciExpression = processExpression(astExpression);
330
+ if (iterationContext.length) {
331
+ // Komaci normalizes expressions bound to for:each to look
332
+ // the same as those used within the 'iterator' directive.
333
+ const parts = komaciExpression.split('/');
334
+ const firstPart = parts[0];
335
+ const iterationInfo = iterationContext.find((info) => firstPart === info.itemName || firstPart === info.indexName);
336
+ if (iterationInfo?.directive === 'for:each') {
337
+ if (firstPart === iterationInfo.itemName) {
338
+ parts.splice(1, 0, 'value');
339
+ }
340
+ else if (firstPart === iterationInfo.indexName) {
341
+ parts[0] = iterationInfo.itemName;
342
+ parts.splice(1, 0, 'index');
343
+ }
344
+ komaciExpression = parts.join('/');
345
+ }
346
+ }
347
+ return {
348
+ type: 'Binding',
349
+ value: komaciExpression,
350
+ };
351
+ }
352
+ // Assert if a directive is the special lwc `key` directive.
353
+ function isKeyDirective(directive) {
354
+ return directive.name === 'Key';
355
+ }
356
+ // Assert if an attribute is a `slot` attribute.
357
+ function isSlotAttribute(attribute) {
358
+ return (attribute.name === 'slot' &&
359
+ attribute.value.type === 'Literal' &&
360
+ typeof attribute.value.type === 'string');
361
+ }
362
+
363
+ exports.generateKomaciDocFromTemplate = generateKomaciDocFromTemplate;
364
+ //# sourceMappingURL=analyzeTemplateFile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyzeTemplateFile.js","sources":["../../src/dependency-analyzer/analyzeTemplateFile.ts"],"sourcesContent":[null],"names":["tagNameToComponentName","attributeNameToPropertyName"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { generateKomaciDocFromScript } from './analyzeScriptFile';
2
+ export { generateKomaciDocFromTemplate } from './analyzeTemplateFile';
@@ -0,0 +1,9 @@
1
+ import { LWCErrorInfo, CompilerDiagnostic } from '@lwc/errors';
2
+ export declare const Errors: {
3
+ [key: string]: LWCErrorInfo;
4
+ };
5
+ export declare class MetadataCollectionError extends Error {
6
+ private readonly privateDiagnostics;
7
+ constructor(diagnostics: CompilerDiagnostic[], message?: string);
8
+ get diagnostics(): CompilerDiagnostic[];
9
+ }
@@ -0,0 +1,119 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var errors = require('@lwc/errors');
6
+
7
+ // Copyright (c) 2022, Salesforce, Inc.,
8
+ // Next error code: 1720
9
+ // TODO: add script to display next available error code
10
+ const Errors = {
11
+ INVALID_COMMUNITY_ID: {
12
+ code: 1700,
13
+ message: 'Invalid community import "{0}".',
14
+ level: errors.DiagnosticLevel.Error,
15
+ },
16
+ INVALID_LWC_IMPORT: {
17
+ code: 1701,
18
+ message: 'Invalid LWC import',
19
+ level: errors.DiagnosticLevel.Error,
20
+ },
21
+ INVALID_LWC_IMPORT_IDENTIFIER: {
22
+ code: 1702,
23
+ message: 'Invalid LWC imported identifier "{0}"',
24
+ level: errors.DiagnosticLevel.Error,
25
+ },
26
+ INVALID_MODULE_ID: {
27
+ code: 1703,
28
+ message: 'Invalid module id "{0}".',
29
+ level: errors.DiagnosticLevel.Error,
30
+ },
31
+ INVALID_USER_ID: {
32
+ code: 1708,
33
+ message: 'Invalid user import "{0}".',
34
+ level: errors.DiagnosticLevel.Error,
35
+ },
36
+ MISSING_RESOURCE_VALUE: {
37
+ code: 1704,
38
+ message: 'Missing resource value for {0}',
39
+ level: errors.DiagnosticLevel.Error,
40
+ },
41
+ MODULES_ONLY_SUPPORT_DEFAULT_IMPORTS: {
42
+ code: 1705,
43
+ message: '{0} modules only support default imports.',
44
+ level: errors.DiagnosticLevel.Error,
45
+ },
46
+ MODULE_SHOULD_HAVE_METHOD_AND_CLASSNAME: {
47
+ code: 1706,
48
+ message: '{0} modules should have both class and method names.',
49
+ level: errors.DiagnosticLevel.Error,
50
+ },
51
+ MODULE_SHOULD_NOT_BE_IMPORTED_FROM_DEFAULT_NAMESPACE: {
52
+ code: 1707,
53
+ message: "{0} modules should not be imported from default namespace 'c'.",
54
+ level: errors.DiagnosticLevel.Error,
55
+ },
56
+ SYNTAX_ERROR: {
57
+ code: 1709,
58
+ message: 'Syntax error encountered while parsing file {0}. Cause: {1}',
59
+ level: errors.DiagnosticLevel.Fatal,
60
+ },
61
+ UNSUPPORTED_SCRIPT_SYNTAX: {
62
+ code: 1711,
63
+ message: 'Unsupported javascript syntax in file {0}',
64
+ level: errors.DiagnosticLevel.Error,
65
+ },
66
+ INVALID_WIRE_USAGE: {
67
+ code: 1712,
68
+ message: '"@wire" decorators need to be invoked with a wire adapter as first argument.',
69
+ level: errors.DiagnosticLevel.Error,
70
+ },
71
+ INVALID_WIRE_CONFIG_USAGE: {
72
+ code: 1713,
73
+ message: '"@wire" decorators need to be invoked with an adapterConfig object as second argument.',
74
+ level: errors.DiagnosticLevel.Error,
75
+ },
76
+ INVALID_API_USAGE: {
77
+ code: 1714,
78
+ message: '"@api" decorator don\'t support argument',
79
+ level: errors.DiagnosticLevel.Error,
80
+ },
81
+ INVALID_TRACK_USAGE: {
82
+ code: 1715,
83
+ message: '"@track" decorator don\'t support argument',
84
+ level: errors.DiagnosticLevel.Error,
85
+ },
86
+ MISSING_ENTRY_FILE: {
87
+ code: 1716,
88
+ message: "Entry file can't be resolved in '{0}'. Expected '{1}.js' or '{1}.css' to be present in the bundle.",
89
+ level: errors.DiagnosticLevel.Fatal,
90
+ },
91
+ INVALID_SITE_ID: {
92
+ code: 1717,
93
+ message: 'Invalid site import "{0}".',
94
+ level: errors.DiagnosticLevel.Error,
95
+ },
96
+ INVALID_COMMERCE_IMPORT: {
97
+ code: 1718,
98
+ message: 'Invalid commerce import "{0}".',
99
+ level: errors.DiagnosticLevel.Error,
100
+ },
101
+ MODULES_DOES_NOT_SUPPORT_NAMESPACED_IMPORTS: {
102
+ code: 1719,
103
+ message: '{0} module does not support namespaced import.',
104
+ level: errors.DiagnosticLevel.Error,
105
+ },
106
+ };
107
+ class MetadataCollectionError extends Error {
108
+ constructor(diagnostics, message) {
109
+ super(message);
110
+ this.privateDiagnostics = diagnostics;
111
+ }
112
+ get diagnostics() {
113
+ return this.privateDiagnostics;
114
+ }
115
+ }
116
+
117
+ exports.Errors = Errors;
118
+ exports.MetadataCollectionError = MetadataCollectionError;
119
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sources":["../../src/errors/errors.ts"],"sourcesContent":[null],"names":["DiagnosticLevel"],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export { collectBundleMetadata } from './bundle-metadata';
2
+ export * from './schema/typescript-types/bundle-metadata-types';
3
+ export * from './schema/typescript-types/common-metadata-types';
4
+ export * from './schema/typescript-types/script-metadata-types';
5
+ export * from './schema/typescript-types/style-metadata-types';
6
+ export * from './schema/typescript-types/template-metadata-types';
7
+ export { BundleConfig } from './shared/config';
package/dist/index.js ADDED
@@ -0,0 +1,20 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var bundleMetadata = require('./bundle-metadata.js');
6
+ var scriptMetadataTypes = require('./schema/typescript-types/script-metadata-types.js');
7
+ var styleMetadataTypes = require('./schema/typescript-types/style-metadata-types.js');
8
+ var templateMetadataTypes = require('./schema/typescript-types/template-metadata-types.js');
9
+
10
+
11
+
12
+ exports.collectBundleMetadata = bundleMetadata.collectBundleMetadata;
13
+ Object.defineProperty(exports, 'ModuleNameType', {
14
+ enumerable: true,
15
+ get: function () { return scriptMetadataTypes.ModuleNameType; }
16
+ });
17
+ exports.isScriptFile = scriptMetadataTypes.isScriptFile;
18
+ exports.isCSSFile = styleMetadataTypes.isCSSFile;
19
+ exports.isHTMLTemplateFile = templateMetadataTypes.isHTMLTemplateFile;
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,14 @@
1
+ import { CompilerDiagnostic } from '@lwc/errors';
2
+ import { ScriptFile } from './script-metadata-types';
3
+ import { HTMLTemplateFile } from './template-metadata-types';
4
+ import { CSSFile } from './style-metadata-types';
5
+ interface BundleMetadata {
6
+ version: string;
7
+ moduleSpecifier: string;
8
+ name: string;
9
+ namespace: string;
10
+ entryFileName?: string;
11
+ files: (HTMLTemplateFile | ScriptFile | CSSFile)[];
12
+ diagnostics: CompilerDiagnostic[];
13
+ }
14
+ export { BundleMetadata };
@@ -0,0 +1,25 @@
1
+ import { CompilerDiagnostic } from '@lwc/errors';
2
+ import { KomaciDocument } from '@komaci/types';
3
+ interface SourceLocation {
4
+ startLine: number;
5
+ startColumn: number;
6
+ endLine: number;
7
+ endColumn: number;
8
+ start: number;
9
+ end: number;
10
+ fileName?: string;
11
+ }
12
+ interface ComponentReference {
13
+ name: string;
14
+ namespacedName?: string;
15
+ type: 'external';
16
+ tagName: string;
17
+ locations: SourceLocation[];
18
+ }
19
+ interface File {
20
+ fileType: 'css' | 'html' | 'js';
21
+ fileName: string;
22
+ diagnostics: CompilerDiagnostic[];
23
+ komaciDoc?: KomaciDocument;
24
+ }
25
+ export { File, SourceLocation, ComponentReference };