@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,306 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var t = require('@babel/types');
6
+ var utils = require('../shared/utils.js');
7
+
8
+ function _interopNamespace(e) {
9
+ if (e && e.__esModule) return e;
10
+ var n = Object.create(null);
11
+ if (e) {
12
+ Object.keys(e).forEach(function (k) {
13
+ if (k !== 'default') {
14
+ var d = Object.getOwnPropertyDescriptor(e, k);
15
+ Object.defineProperty(n, k, d.get ? d : {
16
+ enumerable: true,
17
+ get: function () { return e[k]; }
18
+ });
19
+ }
20
+ });
21
+ }
22
+ n["default"] = e;
23
+ return Object.freeze(n);
24
+ }
25
+
26
+ var t__namespace = /*#__PURE__*/_interopNamespace(t);
27
+
28
+ // Copyright (c) 2022, Salesforce, Inc.,
29
+ function unresolved() {
30
+ return {
31
+ type: 'Unresolved',
32
+ value: 'unresolved',
33
+ };
34
+ }
35
+ function resolveImportSpecifierImported(imported) {
36
+ return t__namespace.isStringLiteral(imported) ? imported.value : imported.name;
37
+ }
38
+ function resolveExportSpecifierExported(imported) {
39
+ return t__namespace.isStringLiteral(imported) ? imported.value : imported.name;
40
+ }
41
+ function resolveIdentifier(identifier, scope) {
42
+ const binding = scope.getBinding(identifier.name);
43
+ if (utils.isUndefined(binding)) {
44
+ return { type: 'Undefined', value: undefined };
45
+ }
46
+ // If identifier is a constant and it has a initial value
47
+ if (binding.kind === 'const') {
48
+ if (binding.path.node.type === 'VariableDeclarator' &&
49
+ !utils.isNull(binding.path.node.init) &&
50
+ !utils.isUndefined(binding.path.node.init)) {
51
+ return resolveExpression(binding.path.node.init, scope);
52
+ }
53
+ }
54
+ else if (binding.kind === 'module') {
55
+ // If identifier is a value imported from an external module
56
+ const { parent, node } = binding.path;
57
+ if (t__namespace.isImportDeclaration(parent)) {
58
+ if (t__namespace.isImportSpecifier(node)) {
59
+ return {
60
+ type: 'ImportedValue',
61
+ importedName: resolveImportSpecifierImported(node.imported),
62
+ localName: node.local.name,
63
+ moduleSpecifier: parent.source.value,
64
+ };
65
+ }
66
+ else if (t__namespace.isImportDefaultSpecifier(node)) {
67
+ return {
68
+ type: 'ImportedValue',
69
+ importedName: 'default',
70
+ localName: node.local.name,
71
+ moduleSpecifier: parent.source.value,
72
+ };
73
+ }
74
+ else if (t__namespace.isImportNamespaceSpecifier(node)) {
75
+ return {
76
+ type: 'ImportedValue',
77
+ importedName: '*',
78
+ localName: node.local.name,
79
+ moduleSpecifier: parent.source.value,
80
+ };
81
+ }
82
+ }
83
+ }
84
+ return unresolved();
85
+ }
86
+ /**
87
+ * Resolve MemberExpression only if the expression resolves to an ImportedBinding of a NameSpaceImport
88
+ * https://tc39.es/ecma262/multipage/ecmascript-language-scripts-and-modules.html#prod-NameSpaceImport
89
+ * Resolved expression:
90
+ * 1.
91
+ * import * as namespacedImport from 'module-name';
92
+ * export default class {
93
+ * get value() { return namespacedImport.someMethod; }
94
+ * }
95
+ * 2.
96
+ * import * as namespacedImport from 'module-name';
97
+ * export default class {
98
+ * get value() { return namespacedImport['someMethod']; }
99
+ * }
100
+ *
101
+ * Unresolved expressions:
102
+ * 1.
103
+ * import * as namespacedImport from 'module-name';
104
+ * export default class {
105
+ * get value() { return namespacedImport.someObject.property; }
106
+ * get value1() { return namespacedImport.someObject; }
107
+ * }
108
+ *
109
+ * 2.
110
+ * import { namedBinding } from 'module-name';
111
+ * export default class {
112
+ * get value() { return namedBinding.property; }
113
+ * }
114
+ * 3.
115
+ * import { default as namedBinding } from 'module-name';
116
+ * export default class {
117
+ * get value() { return namedBinding.property; }
118
+ * }
119
+ * 4.
120
+ * import defaultBinding from 'module-name';
121
+ * export default class {
122
+ * get value() { return defaultBinding.property; }
123
+ * }
124
+ */
125
+ function resolveMemberExpression(memberExpression, scope) {
126
+ // Only consider simple member expression:
127
+ // - Object and property identifiers 'foo.bar'
128
+ // - Object identifier and string literal property 'foo["bar"]'
129
+ if (!t__namespace.isIdentifier(memberExpression.object) ||
130
+ // If the member expression is computed and the property is not a string literal
131
+ (memberExpression.computed && !t__namespace.isStringLiteral(memberExpression.property)) ||
132
+ // If the member expression is not computed and the property is not an identifier(can be a private field), exit fast
133
+ (!memberExpression.computed && !t__namespace.isIdentifier(memberExpression.property))) {
134
+ return unresolved();
135
+ }
136
+ const root = memberExpression.object;
137
+ const binding = scope.getBinding(root.name);
138
+ // If the root of the MemberExpression cannot be resolved in the current scope, we will deem it unresolvable
139
+ if (utils.isUndefined(binding)) {
140
+ return unresolved();
141
+ }
142
+ if (binding.kind === 'module') {
143
+ // If identifier is a value imported from an external module
144
+ const { parent, node } = binding.path;
145
+ const importedBinding = t__namespace.isIdentifier(memberExpression.property)
146
+ ? memberExpression.property.name
147
+ : memberExpression.property.value;
148
+ if (t__namespace.isImportDeclaration(parent) && t__namespace.isImportNamespaceSpecifier(node)) {
149
+ // Represent the namespaced import in a named import format, it is a good enough approximation
150
+ return {
151
+ type: 'ImportedValue',
152
+ importedName: importedBinding,
153
+ localName: importedBinding,
154
+ moduleSpecifier: parent.source.value,
155
+ };
156
+ }
157
+ }
158
+ return unresolved();
159
+ }
160
+ /**
161
+ * Resolve TemplateLiteral only if the expression is a static string without any expressions
162
+ * Resolved expression:
163
+ * 1.
164
+ * `hello world`
165
+ * 2.
166
+ * `
167
+ * hello
168
+ * world
169
+ * `
170
+ *
171
+ * Unresolved expressions:
172
+ * 1.
173
+ * `
174
+ * hello
175
+ * ${world}
176
+ * `
177
+ */
178
+ function resolveTemplateLiteralExpression(templateLiteral) {
179
+ const { expressions, quasis } = templateLiteral;
180
+ if (expressions.length > 0 || quasis.length !== 1) {
181
+ return unresolved();
182
+ }
183
+ const first = quasis[0];
184
+ const { raw } = first.value;
185
+ return {
186
+ type: 'String',
187
+ value: raw,
188
+ };
189
+ }
190
+ function resolveExpression(expression, scope) {
191
+ switch (expression.type) {
192
+ case 'ArrayExpression':
193
+ return {
194
+ type: 'Array',
195
+ value: expression.elements.map((element) => {
196
+ if (t__namespace.isExpression(element)) {
197
+ return resolveExpression(element, scope);
198
+ }
199
+ else {
200
+ return unresolved();
201
+ }
202
+ }),
203
+ };
204
+ case 'BooleanLiteral':
205
+ return {
206
+ type: 'Boolean',
207
+ value: expression.value,
208
+ };
209
+ case 'StringLiteral':
210
+ return {
211
+ type: 'String',
212
+ value: expression.value,
213
+ };
214
+ case 'NumericLiteral':
215
+ return {
216
+ type: 'Number',
217
+ value: expression.value,
218
+ };
219
+ case 'ObjectExpression':
220
+ return {
221
+ type: 'Object',
222
+ value: expression.properties.reduce((accumulator, property) => {
223
+ if (t__namespace.isObjectProperty(property) &&
224
+ // Following key types considered {key: 'value'}, {'key': 'value'}, {1: 'value'}
225
+ (t__namespace.isIdentifier(property.key) ||
226
+ t__namespace.isStringLiteral(property.key) ||
227
+ t__namespace.isNumericLiteral(property.key))) {
228
+ const key = t__namespace.isIdentifier(property.key)
229
+ ? property.key.name
230
+ : property.key.value;
231
+ if (t__namespace.isExpression(property.value)) {
232
+ accumulator[key] = resolveExpression(property.value, scope);
233
+ }
234
+ else {
235
+ accumulator[key] = unresolved();
236
+ }
237
+ }
238
+ return accumulator;
239
+ }, {}),
240
+ };
241
+ case 'NullLiteral':
242
+ return {
243
+ type: 'Null',
244
+ value: null,
245
+ };
246
+ case 'Identifier':
247
+ return resolveIdentifier(expression, scope);
248
+ case 'MemberExpression':
249
+ return resolveMemberExpression(expression, scope);
250
+ case 'TemplateLiteral':
251
+ return resolveTemplateLiteralExpression(expression);
252
+ }
253
+ return unresolved();
254
+ }
255
+ /**
256
+ * Return value resolution will be returned only if the code block contains a single return statement
257
+ * and no other statements, except for ExpressionStatement or declarations. Such limitation is
258
+ * enforced to eliminate return value ambiguity in a multi-statement code blocks and reduce complexity.
259
+ *
260
+ * For ex, multiple return statements that are nested inside other statements, such as 'if', 'for',
261
+ * etc, can be very difficult and non-performant to locate. Therefore, we look for a return
262
+ * statement in the immediate scope and ensure no other statements exist.
263
+ */
264
+ function resolveMethodReturnValue(methodNode, scope) {
265
+ let hasUnsupportedStatement = false;
266
+ const returnStatements = [];
267
+ for (const node of methodNode.body.body) {
268
+ if (t__namespace.isReturnStatement(node)) {
269
+ returnStatements.push(node);
270
+ }
271
+ else if (!t__namespace.isExpressionStatement(node) && !t__namespace.isDeclaration(node)) {
272
+ hasUnsupportedStatement = true;
273
+ }
274
+ // Don't proceed if there is more than one statement
275
+ if (returnStatements.length > 1 || hasUnsupportedStatement) {
276
+ break;
277
+ }
278
+ }
279
+ // Existence of any 'statement' nodes inside a code block, other than a return or an expression
280
+ // type, will result in 'unresolved' return type.
281
+ if (hasUnsupportedStatement) {
282
+ return unresolved();
283
+ }
284
+ else if (returnStatements.length === 1) {
285
+ if (utils.isUndefined(returnStatements[0].argument) || utils.isNull(returnStatements[0].argument)) {
286
+ return {
287
+ type: 'Undefined',
288
+ value: undefined,
289
+ };
290
+ }
291
+ return resolveExpression(returnStatements[0].argument, scope);
292
+ }
293
+ else {
294
+ return {
295
+ type: 'Undefined',
296
+ value: undefined,
297
+ };
298
+ }
299
+ }
300
+
301
+ exports.resolveExportSpecifierExported = resolveExportSpecifierExported;
302
+ exports.resolveExpression = resolveExpression;
303
+ exports.resolveImportSpecifierImported = resolveImportSpecifierImported;
304
+ exports.resolveMethodReturnValue = resolveMethodReturnValue;
305
+ exports.unresolved = unresolved;
306
+ //# sourceMappingURL=resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver.js","sources":["../../src/script-metadata/resolver.ts"],"sourcesContent":[null],"names":["t","isUndefined","isNull"],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import * as t from '@babel/types';
2
+ import { NodePath, Scope } from '@babel/traverse';
3
+ import { SourceLocation } from '../schema/typescript-types/common-metadata-types';
4
+ import { State } from '../shared/utils';
5
+ import { Class, DOMEvent, EventDispatch, ModuleReference } from '../schema/typescript-types/script-metadata-types';
6
+ import { BundleType, NamespaceMapping } from '../shared/config';
7
+ export declare const QUOTE_LENGTH = 1;
8
+ export declare function generateSourceLocation(node: t.Node | t.Comment, precedingOffset?: number, followingOffset?: number, fileName?: string): SourceLocation;
9
+ export declare function isGlobalIdentifier(identifier: t.Identifier, scope: Scope): boolean;
10
+ export declare function resolveIdentifierValue(identifier: t.Identifier, scope: Scope): string | undefined;
11
+ export declare class ScriptState extends State {
12
+ constructor({ fileName, namespaceMapping, bundleType, source, }: {
13
+ fileName: string;
14
+ namespaceMapping: NamespaceMapping;
15
+ bundleType: BundleType;
16
+ source: string;
17
+ });
18
+ source: string;
19
+ moduleReferenceLookup: {
20
+ [moduleSpecifier: string]: ModuleReference;
21
+ };
22
+ eventLookup: Map<t.NewExpression, DOMEvent>;
23
+ eventsPendingResolution: {
24
+ eventDispatch: EventDispatch;
25
+ eventConstructor: t.NewExpression;
26
+ }[];
27
+ classLookup: Map<t.Class, Class>;
28
+ classNodeLookup: Map<Class, NodePath<t.Class>>;
29
+ mainClass?: t.Class;
30
+ }
31
+ export declare type ClassMember = t.ClassProperty | t.ClassMethod;
32
+ export declare function isClassMember(node: t.Node): node is ClassMember;
33
+ export declare function isClassPropertyOrAccessor(node: t.Node): boolean;
34
+ export declare function getClassMemberName(node: ClassMember): string | undefined;
@@ -0,0 +1,118 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var t = require('@babel/types');
6
+ var utils = require('../shared/utils.js');
7
+
8
+ function _interopNamespace(e) {
9
+ if (e && e.__esModule) return e;
10
+ var n = Object.create(null);
11
+ if (e) {
12
+ Object.keys(e).forEach(function (k) {
13
+ if (k !== 'default') {
14
+ var d = Object.getOwnPropertyDescriptor(e, k);
15
+ Object.defineProperty(n, k, d.get ? d : {
16
+ enumerable: true,
17
+ get: function () { return e[k]; }
18
+ });
19
+ }
20
+ });
21
+ }
22
+ n["default"] = e;
23
+ return Object.freeze(n);
24
+ }
25
+
26
+ var t__namespace = /*#__PURE__*/_interopNamespace(t);
27
+
28
+ // Copyright (c) 2022, Salesforce, Inc.,
29
+ const defaultLocation = {
30
+ startLine: 0,
31
+ startColumn: 0,
32
+ endLine: 0,
33
+ endColumn: 0,
34
+ start: 0,
35
+ end: 0,
36
+ };
37
+ // Offset quotes for string literal nodes
38
+ const QUOTE_LENGTH = 1;
39
+ function generateSourceLocation(node, precedingOffset = 0, followingOffset = 0, fileName) {
40
+ const { loc, start, end } = node;
41
+ const result = utils.isNull(loc) || utils.isUndefined(loc)
42
+ ? defaultLocation
43
+ : {
44
+ startLine: loc.start.line,
45
+ // Convert to 1-based index
46
+ startColumn: loc.start.column + precedingOffset + 1,
47
+ endLine: loc.end.line,
48
+ // Convert to 1-based index
49
+ endColumn: loc.end.column - followingOffset + 1,
50
+ start: start + precedingOffset,
51
+ end: end - followingOffset,
52
+ };
53
+ if (fileName) {
54
+ result.fileName = fileName;
55
+ }
56
+ return result;
57
+ }
58
+ function isGlobalIdentifier(identifier, scope) {
59
+ // If the identifier name can be resolved in current scope, then it is not a global identifier
60
+ return utils.isUndefined(scope.getBinding(identifier.name));
61
+ }
62
+ function resolveIdentifierValue(identifier, scope) {
63
+ const binding = scope.getBinding(identifier.name);
64
+ if (utils.isUndefined(binding)) {
65
+ return identifier.name;
66
+ }
67
+ else if (binding.kind === 'const' &&
68
+ binding.path.node.type === 'VariableDeclarator' &&
69
+ !utils.isNull(binding.path.node.init) &&
70
+ !utils.isUndefined(binding.path.node.init) &&
71
+ binding.path.node.init.type === 'StringLiteral') {
72
+ return binding.path.node.init.value;
73
+ }
74
+ }
75
+ class ScriptState extends utils.State {
76
+ constructor({ fileName, namespaceMapping, bundleType, source, }) {
77
+ super({ fileName, namespaceMapping, bundleType });
78
+ // Lookup for module reference by module specifier, used incase a module is imported twice in the same file
79
+ this.moduleReferenceLookup = {};
80
+ this.eventLookup = new Map();
81
+ // Any unresolved Event references unresolved when EventDispatch was create will be updated in post processing
82
+ this.eventsPendingResolution = [];
83
+ // Used to look up class metadata by ast Class node
84
+ this.classLookup = new Map();
85
+ // Used to prune class list based on ast node information
86
+ this.classNodeLookup = new Map();
87
+ this.source = source;
88
+ }
89
+ }
90
+ function isClassMember(node) {
91
+ return (t__namespace.isClassProperty(node) ||
92
+ (t__namespace.isClassMethod(node) &&
93
+ (node.kind === 'get' || node.kind === 'set' || node.kind === 'method')));
94
+ }
95
+ function isClassPropertyOrAccessor(node) {
96
+ return (t__namespace.isClassProperty(node) ||
97
+ (t__namespace.isClassMethod(node) && (node.kind === 'get' || node.kind === 'set')));
98
+ }
99
+ function getClassMemberName(node) {
100
+ switch (node.key.type) {
101
+ case 'Identifier':
102
+ return node.key.name;
103
+ case 'StringLiteral':
104
+ return node.key.value;
105
+ case 'NumericLiteral':
106
+ return node.key.value.toString();
107
+ }
108
+ }
109
+
110
+ exports.QUOTE_LENGTH = QUOTE_LENGTH;
111
+ exports.ScriptState = ScriptState;
112
+ exports.generateSourceLocation = generateSourceLocation;
113
+ exports.getClassMemberName = getClassMemberName;
114
+ exports.isClassMember = isClassMember;
115
+ exports.isClassPropertyOrAccessor = isClassPropertyOrAccessor;
116
+ exports.isGlobalIdentifier = isGlobalIdentifier;
117
+ exports.resolveIdentifierValue = resolveIdentifierValue;
118
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sources":["../../src/script-metadata/utils.ts"],"sourcesContent":[null],"names":["isNull","isUndefined","State","t"],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import * as t from '@babel/types';
2
+ import { NodePath } from '@babel/traverse';
3
+ import { ScriptFile } from '../../schema/typescript-types/script-metadata-types';
4
+ import { ScriptState } from '../utils';
5
+ export default function visitorFunction(state: ScriptState, result: ScriptFile): (path: NodePath<t.CallExpression>) => void;
@@ -0,0 +1,124 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var t = require('@babel/types');
6
+ var eventDispatch = require('../events/event-dispatch.js');
7
+ var utils = require('../utils.js');
8
+ var eventListener = require('../events/event-listener.js');
9
+
10
+ function _interopNamespace(e) {
11
+ if (e && e.__esModule) return e;
12
+ var n = Object.create(null);
13
+ if (e) {
14
+ Object.keys(e).forEach(function (k) {
15
+ if (k !== 'default') {
16
+ var d = Object.getOwnPropertyDescriptor(e, k);
17
+ Object.defineProperty(n, k, d.get ? d : {
18
+ enumerable: true,
19
+ get: function () { return e[k]; }
20
+ });
21
+ }
22
+ });
23
+ }
24
+ n["default"] = e;
25
+ return Object.freeze(n);
26
+ }
27
+
28
+ var t__namespace = /*#__PURE__*/_interopNamespace(t);
29
+
30
+ // Copyright (c) 2022, Salesforce, Inc.,
31
+ function extractCallDetails(path) {
32
+ const { node: { callee, arguments: args }, scope, } = path;
33
+ let calleeName;
34
+ let methodScope;
35
+ // Function calls of type object.method(), where method is the property of an object
36
+ // method.call(), object.method.call(), parentObject.nested.method()
37
+ if (callee.type === 'MemberExpression') {
38
+ const { property, computed } = callee;
39
+ // object['method']()
40
+ if (property.type === 'StringLiteral') {
41
+ calleeName = property.value;
42
+ methodScope = callee.object;
43
+ }
44
+ // object.method()
45
+ else if (property.type === 'Identifier') {
46
+ // method.call(), object.method.call()
47
+ if (property.name === 'call') {
48
+ // method.call()
49
+ if (callee.object.type === 'Identifier') {
50
+ calleeName = computed
51
+ ? utils.resolveIdentifierValue(callee.object, scope)
52
+ : callee.object.name;
53
+ }
54
+ // object.method.call()
55
+ else if (callee.object.type === 'MemberExpression') {
56
+ const { property: calleeObjectProperty, computed } = callee.object;
57
+ // object['method'].call()
58
+ if (calleeObjectProperty.type === 'StringLiteral') {
59
+ calleeName = calleeObjectProperty.value;
60
+ }
61
+ // object.method.call()
62
+ else if (calleeObjectProperty.type === 'Identifier') {
63
+ calleeName = computed
64
+ ? utils.resolveIdentifierValue(calleeObjectProperty, scope)
65
+ : calleeObjectProperty.name;
66
+ }
67
+ }
68
+ if (t__namespace.isExpression(args[0])) {
69
+ methodScope = args[0];
70
+ args.shift();
71
+ }
72
+ }
73
+ // parentObject.object.method() or object.method()
74
+ else {
75
+ calleeName = computed ? utils.resolveIdentifierValue(property, scope) : property.name;
76
+ methodScope = callee.object;
77
+ }
78
+ }
79
+ }
80
+ // Function calls of type method()
81
+ else if (callee.type === 'Identifier') {
82
+ calleeName = callee.name;
83
+ }
84
+ return { calleeName, methodScope, args };
85
+ }
86
+ function visitorFunction(state, result) {
87
+ return function CallExpressionVisitorFunction(path) {
88
+ const { node: { callee }, } = path;
89
+ const { object: calleeObject } = callee;
90
+ const { args, calleeName, methodScope } = extractCallDetails(path);
91
+ if (calleeName === 'dispatchEvent') {
92
+ // collect references like this.dispatchEvent(), this.template.dispatchEvent(), foo.dispatchEvent()
93
+ // do not collect references like dispatchEvent() or dispatchEvent.call(), where the left hand side of dispatchEvent is empty
94
+ if (
95
+ // dispatchEvent()
96
+ callee.type !== 'MemberExpression' ||
97
+ // dispatchEvent.call()
98
+ (callee.property.type === 'Identifier' &&
99
+ callee.property.name === 'call' &&
100
+ calleeObject.type === 'Identifier')) {
101
+ return;
102
+ }
103
+ eventDispatch.gatherEventDispatchMetadata(path, args, methodScope, result, state);
104
+ }
105
+ else if (calleeName === 'addEventListener') {
106
+ // collect references like this.addEventListener(), this.template.addEventListener(), foo.addEventListener()
107
+ // do not collect references like addEventListener() or addEventListener.call(),
108
+ // where 'dispatchEvent' is not resolved as a property of an object
109
+ if (
110
+ // addEventListener()
111
+ callee.type !== 'MemberExpression' ||
112
+ // addEventListener.call()
113
+ (callee.property.type === 'Identifier' &&
114
+ callee.property.name === 'call' &&
115
+ calleeObject.type === 'Identifier')) {
116
+ return;
117
+ }
118
+ eventListener.gatherEventListenerMetadata(path, args, methodScope, result);
119
+ }
120
+ };
121
+ }
122
+
123
+ exports["default"] = visitorFunction;
124
+ //# sourceMappingURL=call-expression-visitor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"call-expression-visitor.js","sources":["../../../src/script-metadata/visitors/call-expression-visitor.ts"],"sourcesContent":[null],"names":["resolveIdentifierValue","t","gatherEventDispatchMetadata","gatherEventListenerMetadata"],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import * as t from '@babel/types';
2
+ import { NodePath } from '@babel/traverse';
3
+ import { ScriptFile, Class } from '../../schema/typescript-types/script-metadata-types';
4
+ import { ScriptState } from '../utils';
5
+ export default function visitorFunction(state: ScriptState, result: ScriptFile): (path: NodePath<t.Class>) => void;