@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.
- package/LICENSE.txt +21 -0
- package/dist/__tests__/bundle-metadata.spec.d.ts +1 -0
- package/dist/bundle-metadata.d.ts +3 -0
- package/dist/bundle-metadata.js +119 -0
- package/dist/bundle-metadata.js.map +1 -0
- package/dist/dependency-analyzer/__tests__/komaci-script-docs.fixtures.spec.d.ts +1 -0
- package/dist/dependency-analyzer/__tests__/komaci-template-docs.fixtures.spec.d.ts +1 -0
- package/dist/dependency-analyzer/analyzeScriptFile.d.ts +4 -0
- package/dist/dependency-analyzer/analyzeScriptFile.js +465 -0
- package/dist/dependency-analyzer/analyzeScriptFile.js.map +1 -0
- package/dist/dependency-analyzer/analyzeTemplateFile.d.ts +3 -0
- package/dist/dependency-analyzer/analyzeTemplateFile.js +364 -0
- package/dist/dependency-analyzer/analyzeTemplateFile.js.map +1 -0
- package/dist/dependency-analyzer/index.d.ts +2 -0
- package/dist/errors/errors.d.ts +9 -0
- package/dist/errors/errors.js +119 -0
- package/dist/errors/errors.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/schema/typescript-types/bundle-metadata-types.d.ts +14 -0
- package/dist/schema/typescript-types/common-metadata-types.d.ts +25 -0
- package/dist/schema/typescript-types/script-metadata-types.d.ts +241 -0
- package/dist/schema/typescript-types/script-metadata-types.js +18 -0
- package/dist/schema/typescript-types/script-metadata-types.js.map +1 -0
- package/dist/schema/typescript-types/style-metadata-types.d.ts +35 -0
- package/dist/schema/typescript-types/style-metadata-types.js +13 -0
- package/dist/schema/typescript-types/style-metadata-types.js.map +1 -0
- package/dist/schema/typescript-types/template-metadata-types.d.ts +11 -0
- package/dist/schema/typescript-types/template-metadata-types.js +13 -0
- package/dist/schema/typescript-types/template-metadata-types.js.map +1 -0
- package/dist/script-metadata/__tests__/class.members.spec.d.ts +1 -0
- package/dist/script-metadata/__tests__/classes.spec.d.ts +1 -0
- package/dist/script-metadata/__tests__/dynamic-import-hints.spec.d.ts +1 -0
- package/dist/script-metadata/__tests__/dynamic-imports.spec.d.ts +1 -0
- package/dist/script-metadata/__tests__/exports-default.spec.d.ts +1 -0
- package/dist/script-metadata/__tests__/exports.spec.d.ts +1 -0
- package/dist/script-metadata/__tests__/imports.spec.d.ts +1 -0
- package/dist/script-metadata/__tests__/module-references.spec.d.ts +1 -0
- package/dist/script-metadata/__tests__/reexports.spec.d.ts +1 -0
- package/dist/script-metadata/__tests__/script-metadata.spec.d.ts +1 -0
- package/dist/script-metadata/__tests__/test-util.d.ts +3 -0
- package/dist/script-metadata/decorators/__tests__/decorators.spec.d.ts +1 -0
- package/dist/script-metadata/decorators/index.d.ts +4 -0
- package/dist/script-metadata/decorators/index.js +184 -0
- package/dist/script-metadata/decorators/index.js.map +1 -0
- package/dist/script-metadata/events/__tests__/event-construction.spec.d.ts +1 -0
- package/dist/script-metadata/events/__tests__/event-dispatch.spec.d.ts +1 -0
- package/dist/script-metadata/events/__tests__/event-listener.spec.d.ts +1 -0
- package/dist/script-metadata/events/event-construction.d.ts +7 -0
- package/dist/script-metadata/events/event-construction.js +55 -0
- package/dist/script-metadata/events/event-construction.js.map +1 -0
- package/dist/script-metadata/events/event-dispatch.d.ts +5 -0
- package/dist/script-metadata/events/event-dispatch.js +46 -0
- package/dist/script-metadata/events/event-dispatch.js.map +1 -0
- package/dist/script-metadata/events/event-listener.d.ts +4 -0
- package/dist/script-metadata/events/event-listener.js +74 -0
- package/dist/script-metadata/events/event-listener.js.map +1 -0
- package/dist/script-metadata/events/util.d.ts +14 -0
- package/dist/script-metadata/events/util.js +63 -0
- package/dist/script-metadata/events/util.js.map +1 -0
- package/dist/script-metadata/index.d.ts +8 -0
- package/dist/script-metadata/index.js +203 -0
- package/dist/script-metadata/index.js.map +1 -0
- package/dist/script-metadata/module-references/__tests__/generic-module.spec.d.ts +1 -0
- package/dist/script-metadata/module-references/__tests__/local-module.spec.d.ts +1 -0
- package/dist/script-metadata/module-references/__tests__/salesforce-references/access-check.spec.d.ts +1 -0
- package/dist/script-metadata/module-references/__tests__/salesforce-references/apex-continuation.spec.d.ts +1 -0
- package/dist/script-metadata/module-references/__tests__/salesforce-references/apex.spec.d.ts +1 -0
- package/dist/script-metadata/module-references/__tests__/salesforce-references/base.spec.d.ts +1 -0
- package/dist/script-metadata/module-references/__tests__/salesforce-references/client.spec.d.ts +1 -0
- package/dist/script-metadata/module-references/__tests__/salesforce-references/commerce.spec.d.ts +1 -0
- package/dist/script-metadata/module-references/__tests__/salesforce-references/community.spec.d.ts +1 -0
- package/dist/script-metadata/module-references/__tests__/salesforce-references/content-asset-url.spec.d.ts +1 -0
- package/dist/script-metadata/module-references/__tests__/salesforce-references/custom-permission.spec.d.ts +1 -0
- package/dist/script-metadata/module-references/__tests__/salesforce-references/gates.spec.d.ts +1 -0
- package/dist/script-metadata/module-references/__tests__/salesforce-references/i18n.spec.d.ts +1 -0
- package/dist/script-metadata/module-references/__tests__/salesforce-references/internal.spec.d.ts +1 -0
- package/dist/script-metadata/module-references/__tests__/salesforce-references/komaci.spec.d.ts +1 -0
- package/dist/script-metadata/module-references/__tests__/salesforce-references/label.spec.d.ts +1 -0
- package/dist/script-metadata/module-references/__tests__/salesforce-references/loader.spec.d.ts +1 -0
- package/dist/script-metadata/module-references/__tests__/salesforce-references/message-channel.spec.d.ts +1 -0
- package/dist/script-metadata/module-references/__tests__/salesforce-references/metric.spec.d.ts +1 -0
- package/dist/script-metadata/module-references/__tests__/salesforce-references/resource-url.spec.d.ts +1 -0
- package/dist/script-metadata/module-references/__tests__/salesforce-references/schema.spec.d.ts +1 -0
- package/dist/script-metadata/module-references/__tests__/salesforce-references/site.spec.d.ts +1 -0
- package/dist/script-metadata/module-references/__tests__/salesforce-references/slds.spec.d.ts +1 -0
- package/dist/script-metadata/module-references/__tests__/salesforce-references/user-permission.spec.d.ts +1 -0
- package/dist/script-metadata/module-references/__tests__/salesforce-references/user.spec.d.ts +1 -0
- package/dist/script-metadata/module-references/collectors/__tests__/collection-api.spec.d.ts +1 -0
- package/dist/script-metadata/module-references/collectors/generic-module.d.ts +3 -0
- package/dist/script-metadata/module-references/collectors/generic-module.js +92 -0
- package/dist/script-metadata/module-references/collectors/generic-module.js.map +1 -0
- package/dist/script-metadata/module-references/collectors/local-module.d.ts +3 -0
- package/dist/script-metadata/module-references/collectors/local-module.js +16 -0
- package/dist/script-metadata/module-references/collectors/local-module.js.map +1 -0
- package/dist/script-metadata/module-references/collectors/main.d.ts +8 -0
- package/dist/script-metadata/module-references/collectors/main.js +37 -0
- package/dist/script-metadata/module-references/collectors/main.js.map +1 -0
- package/dist/script-metadata/module-references/collectors/scoped/access-check.d.ts +3 -0
- package/dist/script-metadata/module-references/collectors/scoped/access-check.js +12 -0
- package/dist/script-metadata/module-references/collectors/scoped/access-check.js.map +1 -0
- package/dist/script-metadata/module-references/collectors/scoped/apex.d.ts +3 -0
- package/dist/script-metadata/module-references/collectors/scoped/apex.js +88 -0
- package/dist/script-metadata/module-references/collectors/scoped/apex.js.map +1 -0
- package/dist/script-metadata/module-references/collectors/scoped/client.d.ts +3 -0
- package/dist/script-metadata/module-references/collectors/scoped/client.js +28 -0
- package/dist/script-metadata/module-references/collectors/scoped/client.js.map +1 -0
- package/dist/script-metadata/module-references/collectors/scoped/commerce.d.ts +3 -0
- package/dist/script-metadata/module-references/collectors/scoped/commerce.js +26 -0
- package/dist/script-metadata/module-references/collectors/scoped/commerce.js.map +1 -0
- package/dist/script-metadata/module-references/collectors/scoped/community.d.ts +3 -0
- package/dist/script-metadata/module-references/collectors/scoped/community.js +29 -0
- package/dist/script-metadata/module-references/collectors/scoped/community.js.map +1 -0
- package/dist/script-metadata/module-references/collectors/scoped/content-asset-url.d.ts +3 -0
- package/dist/script-metadata/module-references/collectors/scoped/content-asset-url.js +12 -0
- package/dist/script-metadata/module-references/collectors/scoped/content-asset-url.js.map +1 -0
- package/dist/script-metadata/module-references/collectors/scoped/custom-permissions.d.ts +3 -0
- package/dist/script-metadata/module-references/collectors/scoped/custom-permissions.js +12 -0
- package/dist/script-metadata/module-references/collectors/scoped/custom-permissions.js.map +1 -0
- package/dist/script-metadata/module-references/collectors/scoped/design-system.d.ts +3 -0
- package/dist/script-metadata/module-references/collectors/scoped/design-system.js +21 -0
- package/dist/script-metadata/module-references/collectors/scoped/design-system.js.map +1 -0
- package/dist/script-metadata/module-references/collectors/scoped/gate.d.ts +3 -0
- package/dist/script-metadata/module-references/collectors/scoped/gate.js +12 -0
- package/dist/script-metadata/module-references/collectors/scoped/gate.js.map +1 -0
- package/dist/script-metadata/module-references/collectors/scoped/generic-prefix-salesforce-collector.d.ts +9 -0
- package/dist/script-metadata/module-references/collectors/scoped/generic-prefix-salesforce-collector.js +22 -0
- package/dist/script-metadata/module-references/collectors/scoped/generic-prefix-salesforce-collector.js.map +1 -0
- package/dist/script-metadata/module-references/collectors/scoped/i18n.d.ts +3 -0
- package/dist/script-metadata/module-references/collectors/scoped/i18n.js +12 -0
- package/dist/script-metadata/module-references/collectors/scoped/i18n.js.map +1 -0
- package/dist/script-metadata/module-references/collectors/scoped/internal.d.ts +3 -0
- package/dist/script-metadata/module-references/collectors/scoped/internal.js +35 -0
- package/dist/script-metadata/module-references/collectors/scoped/internal.js.map +1 -0
- package/dist/script-metadata/module-references/collectors/scoped/komaci.d.ts +3 -0
- package/dist/script-metadata/module-references/collectors/scoped/komaci.js +67 -0
- package/dist/script-metadata/module-references/collectors/scoped/komaci.js.map +1 -0
- package/dist/script-metadata/module-references/collectors/scoped/label.d.ts +3 -0
- package/dist/script-metadata/module-references/collectors/scoped/label.js +12 -0
- package/dist/script-metadata/module-references/collectors/scoped/label.js.map +1 -0
- package/dist/script-metadata/module-references/collectors/scoped/message-channel.d.ts +3 -0
- package/dist/script-metadata/module-references/collectors/scoped/message-channel.js +12 -0
- package/dist/script-metadata/module-references/collectors/scoped/message-channel.js.map +1 -0
- package/dist/script-metadata/module-references/collectors/scoped/metric.d.ts +3 -0
- package/dist/script-metadata/module-references/collectors/scoped/metric.js +12 -0
- package/dist/script-metadata/module-references/collectors/scoped/metric.js.map +1 -0
- package/dist/script-metadata/module-references/collectors/scoped/resource-url.d.ts +3 -0
- package/dist/script-metadata/module-references/collectors/scoped/resource-url.js +12 -0
- package/dist/script-metadata/module-references/collectors/scoped/resource-url.js.map +1 -0
- package/dist/script-metadata/module-references/collectors/scoped/schema.d.ts +3 -0
- package/dist/script-metadata/module-references/collectors/scoped/schema.js +12 -0
- package/dist/script-metadata/module-references/collectors/scoped/schema.js.map +1 -0
- package/dist/script-metadata/module-references/collectors/scoped/site.d.ts +3 -0
- package/dist/script-metadata/module-references/collectors/scoped/site.js +28 -0
- package/dist/script-metadata/module-references/collectors/scoped/site.js.map +1 -0
- package/dist/script-metadata/module-references/collectors/scoped/user-permissions.d.ts +3 -0
- package/dist/script-metadata/module-references/collectors/scoped/user-permissions.js +12 -0
- package/dist/script-metadata/module-references/collectors/scoped/user-permissions.js.map +1 -0
- package/dist/script-metadata/module-references/collectors/scoped/user.d.ts +3 -0
- package/dist/script-metadata/module-references/collectors/scoped/user.js +28 -0
- package/dist/script-metadata/module-references/collectors/scoped/user.js.map +1 -0
- package/dist/script-metadata/module-references/collectors/utils.d.ts +16 -0
- package/dist/script-metadata/module-references/collectors/utils.js +166 -0
- package/dist/script-metadata/module-references/collectors/utils.js.map +1 -0
- package/dist/script-metadata/module-references/reference.d.ts +4 -0
- package/dist/script-metadata/module-references/reference.js +78 -0
- package/dist/script-metadata/module-references/reference.js.map +1 -0
- package/dist/script-metadata/resolver.d.ts +17 -0
- package/dist/script-metadata/resolver.js +306 -0
- package/dist/script-metadata/resolver.js.map +1 -0
- package/dist/script-metadata/utils.d.ts +34 -0
- package/dist/script-metadata/utils.js +118 -0
- package/dist/script-metadata/utils.js.map +1 -0
- package/dist/script-metadata/visitors/call-expression-visitor.d.ts +5 -0
- package/dist/script-metadata/visitors/call-expression-visitor.js +124 -0
- package/dist/script-metadata/visitors/call-expression-visitor.js.map +1 -0
- package/dist/script-metadata/visitors/class-visitor.d.ts +5 -0
- package/dist/script-metadata/visitors/class-visitor.js +195 -0
- package/dist/script-metadata/visitors/class-visitor.js.map +1 -0
- package/dist/script-metadata/visitors/dynamic-imports-visitor.d.ts +9 -0
- package/dist/script-metadata/visitors/dynamic-imports-visitor.js +68 -0
- package/dist/script-metadata/visitors/dynamic-imports-visitor.js.map +1 -0
- package/dist/script-metadata/visitors/export-all-visitor.d.ts +10 -0
- package/dist/script-metadata/visitors/export-all-visitor.js +65 -0
- package/dist/script-metadata/visitors/export-all-visitor.js.map +1 -0
- package/dist/script-metadata/visitors/export-default-visitor.d.ts +5 -0
- package/dist/script-metadata/visitors/export-default-visitor.js +67 -0
- package/dist/script-metadata/visitors/export-default-visitor.js.map +1 -0
- package/dist/script-metadata/visitors/export-named-visitor.d.ts +5 -0
- package/dist/script-metadata/visitors/export-named-visitor.js +125 -0
- package/dist/script-metadata/visitors/export-named-visitor.js.map +1 -0
- package/dist/script-metadata/visitors/module-imports-visitor.d.ts +5 -0
- package/dist/script-metadata/visitors/module-imports-visitor.js +63 -0
- package/dist/script-metadata/visitors/module-imports-visitor.js.map +1 -0
- package/dist/script-metadata/visitors/new-expression-visitor.d.ts +5 -0
- package/dist/script-metadata/visitors/new-expression-visitor.js +36 -0
- package/dist/script-metadata/visitors/new-expression-visitor.js.map +1 -0
- package/dist/shared/config.d.ts +15 -0
- package/dist/shared/utils.d.ts +66 -0
- package/dist/shared/utils.js +129 -0
- package/dist/shared/utils.js.map +1 -0
- package/dist/style-metadata/__tests__/component-references.spec.d.ts +1 -0
- package/dist/style-metadata/__tests__/custom-properties.spec.d.ts +1 -0
- package/dist/style-metadata/__tests__/imports.spec.d.ts +1 -0
- package/dist/style-metadata/__tests__/index.spec.d.ts +1 -0
- package/dist/style-metadata/component-references.d.ts +4 -0
- package/dist/style-metadata/component-references.js +82 -0
- package/dist/style-metadata/component-references.js.map +1 -0
- package/dist/style-metadata/custom-properties.d.ts +3 -0
- package/dist/style-metadata/custom-properties.js +70 -0
- package/dist/style-metadata/custom-properties.js.map +1 -0
- package/dist/style-metadata/imports.d.ts +4 -0
- package/dist/style-metadata/imports.js +120 -0
- package/dist/style-metadata/imports.js.map +1 -0
- package/dist/style-metadata/index.d.ts +6 -0
- package/dist/style-metadata/index.js +70 -0
- package/dist/style-metadata/index.js.map +1 -0
- package/dist/template-metadata/__tests__/component-reference.spec.d.ts +1 -0
- package/dist/template-metadata/index.d.ts +6 -0
- package/dist/template-metadata/index.js +136 -0
- package/dist/template-metadata/index.js.map +1 -0
- 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;
|