3
* Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
4
* This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
5
* The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
6
* The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
7
* Code distributed by Google as part of the polymer project is also
8
* subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
12
import * as estree from 'estree';
13
import * as jsdoc from './jsdoc';
14
import * as dom5 from 'dom5';
16
export type LiteralValue = string|number|boolean|RegExp;
18
export interface Descriptor {
19
jsdoc?: jsdoc.Annotation;
23
export interface PropertyDescriptor extends Descriptor {
27
javascriptNode: estree.Node;
28
params?: {name: string}[];
30
notify?: LiteralValue;
31
observer?: LiteralValue;
32
observerNode?: estree.Expression;
33
readOnly?: LiteralValue;
34
reflectToAttribute?: LiteralValue;
35
default?: LiteralValue;
37
configuration?: boolean;
41
__fromBehavior?: BehaviorOrName;
45
* The metadata for a single polymer element
47
export interface ElementDescriptor extends Descriptor {
50
properties?: PropertyDescriptor[];
52
javascriptNode: estree.Expression | estree.SpreadElement,
53
expression: LiteralValue
55
behaviors?: BehaviorOrName[];
57
type: string; // 'element' | 'behavior'
62
events?: EventDescriptor[];
64
domModule?: dom5.Node;
65
scriptElement?: dom5.Node;
71
* The metadata for a Polymer behavior mixin.
73
export interface BehaviorDescriptor extends ElementDescriptor {
77
export interface EventDescriptor extends Descriptor {
79
__fromBehavior?: BehaviorOrName;
87
type BehaviorOrName = LiteralValue|BehaviorDescriptor;
89
export interface FunctionDescriptor extends PropertyDescriptor {
90
function: boolean; // true
98
* The metadata for a Polymer feature.
100
export interface FeatureDescriptor extends ElementDescriptor {
104
export type BehaviorsByName = {[name: string]: BehaviorDescriptor};