Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
}
var directive = metadata_1.reflectObjectLiteral(meta);
if (directive.has('jit')) {
// The only allowed value is true, so there's no need to expand further.
return undefined;
}
var members = reflector.getMembersOfClass(clazz);
// Precompute a list of ts.ClassElements that have decorators. This includes things like @Input,
// @Output, @HostBinding, etc.
var decoratedElements = members.filter(function (member) { return !member.isStatic && member.decorators !== null; });
var coreModule = isCore ? undefined : '@angular/core';
// Construct the map of inputs both from the @Directive/@Component
// decorator, and the decorated
// fields.
var inputsFromMeta = parseFieldToPropertyMapping(directive, 'inputs', reflector, checker);
var inputsFromFields = parseDecoratedFields(metadata_1.filterToMembersWithDecorator(decoratedElements, 'Input', coreModule), reflector, checker, resolveInput);
// And outputs.
var outputsFromMeta = parseFieldToPropertyMapping(directive, 'outputs', reflector, checker);
var outputsFromFields = parseDecoratedFields(metadata_1.filterToMembersWithDecorator(decoratedElements, 'Output', coreModule), reflector, checker, resolveOutput);
// Construct the list of queries.
var contentChildFromFields = queriesFromFields(metadata_1.filterToMembersWithDecorator(decoratedElements, 'ContentChild', coreModule), reflector, checker);
var contentChildrenFromFields = queriesFromFields(metadata_1.filterToMembersWithDecorator(decoratedElements, 'ContentChildren', coreModule), reflector, checker);
var queries = tslib_1.__spread(contentChildFromFields, contentChildrenFromFields);
if (directive.has('queries')) {
var queriesFromDecorator = extractQueriesFromDecorator(directive.get('queries'), reflector, checker, isCore);
queries.push.apply(queries, tslib_1.__spread(queriesFromDecorator.content));
}
// Parse the selector.
var selector = defaultSelector;
if (directive.has('selector')) {
var expr = directive.get('selector');
var resolved = metadata_1.staticallyResolve(expr, reflector, checker);
interpolation = compiler_1.InterpolationConfig.fromArray(value);
}
var template = compiler_1.parseTemplate(templateStr, node.getSourceFile().fileName + "#" + node.name.text + "/template.html", { preserveWhitespaces: preserveWhitespaces, interpolationConfig: interpolation });
if (template.errors !== undefined) {
throw new Error("Errors parsing template: " + template.errors.map(function (e) { return e.toString(); }).join(', '));
}
// If the component has a selector, it should be registered with the `SelectorScopeRegistry` so
// when this component appears in an `@NgModule` scope, its selector can be determined.
if (metadata.selector !== null) {
var ref = new metadata_1.ResolvedReference(node, node.name);
this.scopeRegistry.registerDirective(node, tslib_1.__assign({ ref: ref, name: node.name.text, directive: ref, selector: metadata.selector, exportAs: metadata.exportAs, inputs: metadata.inputs, outputs: metadata.outputs, queries: metadata.queries.map(function (query) { return query.propertyName; }), isComponent: true }, util_1.extractDirectiveGuards(node, this.reflector)));
}
// Construct the list of view queries.
var coreModule = this.isCore ? undefined : '@angular/core';
var viewChildFromFields = directive_1.queriesFromFields(metadata_1.filterToMembersWithDecorator(decoratedElements, 'ViewChild', coreModule), this.reflector, this.checker);
var viewChildrenFromFields = directive_1.queriesFromFields(metadata_1.filterToMembersWithDecorator(decoratedElements, 'ViewChildren', coreModule), this.reflector, this.checker);
var viewQueries = tslib_1.__spread(viewChildFromFields, viewChildrenFromFields);
if (component.has('queries')) {
var queriesFromDecorator = directive_1.extractQueriesFromDecorator(component.get('queries'), this.reflector, this.checker, this.isCore);
viewQueries.push.apply(viewQueries, tslib_1.__spread(queriesFromDecorator.view));
}
var styles = null;
if (component.has('styles')) {
styles = directive_1.parseFieldArrayValue(component, 'styles', this.reflector, this.checker);
}
var styleUrls = this._extractStyleUrls(component);
if (styleUrls !== null) {
if (styles === null) {
styles = [];
}
styles.push.apply(styles, tslib_1.__spread(styleUrls.map(function (styleUrl) { return _this.resourceLoader.load(styleUrl, containingFile); })));
}
// The only allowed value is true, so there's no need to expand further.
return undefined;
}
var members = reflector.getMembersOfClass(clazz);
// Precompute a list of ts.ClassElements that have decorators. This includes things like @Input,
// @Output, @HostBinding, etc.
var decoratedElements = members.filter(function (member) { return !member.isStatic && member.decorators !== null; });
var coreModule = isCore ? undefined : '@angular/core';
// Construct the map of inputs both from the @Directive/@Component
// decorator, and the decorated
// fields.
var inputsFromMeta = parseFieldToPropertyMapping(directive, 'inputs', reflector, checker);
var inputsFromFields = parseDecoratedFields(metadata_1.filterToMembersWithDecorator(decoratedElements, 'Input', coreModule), reflector, checker, resolveInput);
// And outputs.
var outputsFromMeta = parseFieldToPropertyMapping(directive, 'outputs', reflector, checker);
var outputsFromFields = parseDecoratedFields(metadata_1.filterToMembersWithDecorator(decoratedElements, 'Output', coreModule), reflector, checker, resolveOutput);
// Construct the list of queries.
var contentChildFromFields = queriesFromFields(metadata_1.filterToMembersWithDecorator(decoratedElements, 'ContentChild', coreModule), reflector, checker);
var contentChildrenFromFields = queriesFromFields(metadata_1.filterToMembersWithDecorator(decoratedElements, 'ContentChildren', coreModule), reflector, checker);
var queries = tslib_1.__spread(contentChildFromFields, contentChildrenFromFields);
if (directive.has('queries')) {
var queriesFromDecorator = extractQueriesFromDecorator(directive.get('queries'), reflector, checker, isCore);
queries.push.apply(queries, tslib_1.__spread(queriesFromDecorator.content));
}
// Parse the selector.
var selector = defaultSelector;
if (directive.has('selector')) {
var expr = directive.get('selector');
var resolved = metadata_1.staticallyResolve(expr, reflector, checker);
if (typeof resolved !== 'string') {
throw new diagnostics_1.FatalDiagnosticError(diagnostics_1.ErrorCode.VALUE_HAS_WRONG_TYPE, expr, "selector must be a string");
}
}
var members = reflector.getMembersOfClass(clazz);
// Precompute a list of ts.ClassElements that have decorators. This includes things like @Input,
// @Output, @HostBinding, etc.
var decoratedElements = members.filter(function (member) { return !member.isStatic && member.decorators !== null; });
var coreModule = isCore ? undefined : '@angular/core';
// Construct the map of inputs both from the @Directive/@Component
// decorator, and the decorated
// fields.
var inputsFromMeta = parseFieldToPropertyMapping(directive, 'inputs', reflector, checker);
var inputsFromFields = parseDecoratedFields(metadata_1.filterToMembersWithDecorator(decoratedElements, 'Input', coreModule), reflector, checker, resolveInput);
// And outputs.
var outputsFromMeta = parseFieldToPropertyMapping(directive, 'outputs', reflector, checker);
var outputsFromFields = parseDecoratedFields(metadata_1.filterToMembersWithDecorator(decoratedElements, 'Output', coreModule), reflector, checker, resolveOutput);
// Construct the list of queries.
var contentChildFromFields = queriesFromFields(metadata_1.filterToMembersWithDecorator(decoratedElements, 'ContentChild', coreModule), reflector, checker);
var contentChildrenFromFields = queriesFromFields(metadata_1.filterToMembersWithDecorator(decoratedElements, 'ContentChildren', coreModule), reflector, checker);
var queries = tslib_1.__spread(contentChildFromFields, contentChildrenFromFields);
if (directive.has('queries')) {
var queriesFromDecorator = extractQueriesFromDecorator(directive.get('queries'), reflector, checker, isCore);
queries.push.apply(queries, tslib_1.__spread(queriesFromDecorator.content));
}
// Parse the selector.
var selector = defaultSelector;
if (directive.has('selector')) {
var expr = directive.get('selector');
var resolved = metadata_1.staticallyResolve(expr, reflector, checker);
if (typeof resolved !== 'string') {
throw new diagnostics_1.FatalDiagnosticError(diagnostics_1.ErrorCode.VALUE_HAS_WRONG_TYPE, expr, "selector must be a string");
}
selector = resolved;
}
decorators.forEach(function (decorator) {
var hostPropertyName = member.name;
if (decorator.args !== null && decorator.args.length > 0) {
if (decorator.args.length !== 1) {
throw new Error("@HostBinding() can have at most one argument");
}
var resolved = metadata_1.staticallyResolve(decorator.args[0], reflector, checker);
if (typeof resolved !== 'string') {
throw new Error("@HostBinding()'s argument must be a string");
}
hostPropertyName = resolved;
}
properties[hostPropertyName] = member.name;
});
});
metadata_1.filterToMembersWithDecorator(members, 'HostListener', coreModule)
.forEach(function (_a) {
var member = _a.member, decorators = _a.decorators;
decorators.forEach(function (decorator) {
var eventName = member.name;
var args = [];
if (decorator.args !== null && decorator.args.length > 0) {
if (decorator.args.length > 2) {
throw new diagnostics_1.FatalDiagnosticError(diagnostics_1.ErrorCode.DECORATOR_ARITY_WRONG, decorator.args[2], "@HostListener() can have at most two arguments");
}
var resolved = metadata_1.staticallyResolve(decorator.args[0], reflector, checker);
if (typeof resolved !== 'string') {
throw new diagnostics_1.FatalDiagnosticError(diagnostics_1.ErrorCode.VALUE_HAS_WRONG_TYPE, decorator.args[0], "@HostListener()'s event name argument must be a string");
}
eventName = resolved;
if (decorator.args.length === 2) {
var resolvedArgs = metadata_1.staticallyResolve(decorator.args[1], reflector, checker);