webextensions-api-mock
Version:
WebExtensions API as sinon stubs
61 lines (60 loc) • 2.5 kB
TypeScript
import { SchemaNamespaces, NamespaceSchema } from 'webextensions-schema';
export declare type SchemaWalkerValue = any;
export interface SchemaWalkerDelegate {
handleImport(schemaId: SchemaId, name: string, out: SchemaWalkerValue): void;
createNamespaceValue(schemaId: SchemaId, out: SchemaWalkerValue): SchemaWalkerValue;
startObjectPropertyValue(schemaId: SchemaId, out: SchemaWalkerValue): SchemaWalkerValue;
finishObjectPropertyValue(schemaId: SchemaId, out: SchemaWalkerValue): SchemaWalkerValue;
valueForInvalidRef(schemaId: SchemaId): SchemaWalkerValue;
valueForCircularType(schemaId: SchemaId): SchemaWalkerValue;
finishTypeValue(schemaId: SchemaId, value: unknown, out: SchemaWalkerValue): SchemaWalkerValue;
createEnumValue(schemaId: SchemaId, type: string, choices: string[], out: SchemaWalkerValue): SchemaWalkerValue;
createPlainValue(schemaId: SchemaId, type: string, isArray: boolean, out: SchemaWalkerValue): SchemaWalkerValue;
createEventValue(schemaId: SchemaId, out: SchemaWalkerValue): SchemaWalkerValue;
createFnValue(schemaId: SchemaId, returnValue: SchemaWalkerValue, out: SchemaWalkerValue): SchemaWalkerValue;
handleField(schemaId: SchemaId, name: string, value: unknown, optional: boolean, out: SchemaWalkerValue): void;
}
export declare enum SchemaType {
Namespace = 1,
Type = 2,
ObjectProperty = 3
}
/**
Identifies either a NamespaceSchema or TypeSchema, and helps
create schemaIds for references to other TypeSchemas.
*/
export declare class SchemaId {
name: string;
type: SchemaType;
constructor(name: string, type: SchemaType);
get namespace(): string;
get namespaceId(): SchemaId;
toString(): string;
withRef(refName: string): SchemaId;
withObjectProperty(propertyName?: string): SchemaId;
static withNamespace(namespace: NamespaceSchema): SchemaId;
static withType(name: string): SchemaId;
}
export declare enum SchemaWalkerFlags {
None = 0,
SuppressWarnings = 2,
NoTypeValueReuse = 4
}
export declare class SchemaWalker {
private types;
private outs;
private delegate;
private flags;
constructor(delegate: SchemaWalkerDelegate, flags?: SchemaWalkerFlags);
walk(schemaNamespaces: SchemaNamespaces): void;
private extractTypes;
private extractNamespaces;
private schema;
private namespaceOrObjectProperty;
private field;
private type;
private value;
private event;
private fn;
private ref;
}