2269 lines
66 KiB
TypeScript
2269 lines
66 KiB
TypeScript
|
|
import type { InMemoryFileSystem } from '../compiler/sys/in-memory-fs';
|
||
|
|
import type { BuildEvents, BuildLog, BuildResultsComponentGraph, CompilerBuildResults, CompilerBuildStart, CompilerFsStats, CompilerRequestResponse, CompilerSystem, Config, CopyResults, DevServerConfig, DevServerEditor, Diagnostic, Logger, LoggerLineUpdater, LoggerTimeSpan, OptimizeCssInput, OptimizeCssOutput, OutputTargetWww, PageReloadStrategy, PrerenderConfig, StyleDoc, TaskCommand } from './stencil-public-compiler';
|
||
|
|
import type { ComponentInterface, ListenOptions, ListenTargetOptions, VNode, VNodeData } from './stencil-public-runtime';
|
||
|
|
export interface SourceMap {
|
||
|
|
file: string;
|
||
|
|
mappings: string;
|
||
|
|
names: string[];
|
||
|
|
sourceRoot?: string;
|
||
|
|
sources: string[];
|
||
|
|
sourcesContent?: string[];
|
||
|
|
version: number;
|
||
|
|
}
|
||
|
|
export interface PrintLine {
|
||
|
|
lineIndex: number;
|
||
|
|
lineNumber: number;
|
||
|
|
text?: string;
|
||
|
|
errorCharStart: number;
|
||
|
|
errorLength?: number;
|
||
|
|
}
|
||
|
|
export interface AssetsMeta {
|
||
|
|
absolutePath: string;
|
||
|
|
cmpRelativePath: string;
|
||
|
|
originalComponentPath: string;
|
||
|
|
}
|
||
|
|
export interface ParsedImport {
|
||
|
|
importPath: string;
|
||
|
|
basename: string;
|
||
|
|
ext: string;
|
||
|
|
data: ImportData;
|
||
|
|
}
|
||
|
|
export interface ImportData {
|
||
|
|
tag?: string;
|
||
|
|
encapsulation?: string;
|
||
|
|
mode?: string;
|
||
|
|
}
|
||
|
|
export interface SerializeImportData extends ImportData {
|
||
|
|
importeePath: string;
|
||
|
|
importerPath?: string;
|
||
|
|
}
|
||
|
|
export interface BuildFeatures {
|
||
|
|
style: boolean;
|
||
|
|
mode: boolean;
|
||
|
|
shadowDom: boolean;
|
||
|
|
shadowDelegatesFocus: boolean;
|
||
|
|
scoped: boolean;
|
||
|
|
/**
|
||
|
|
* Every component has a render function
|
||
|
|
*/
|
||
|
|
allRenderFn: boolean;
|
||
|
|
/**
|
||
|
|
* At least one component has a render function
|
||
|
|
*/
|
||
|
|
hasRenderFn: boolean;
|
||
|
|
vdomRender: boolean;
|
||
|
|
vdomAttribute: boolean;
|
||
|
|
vdomClass: boolean;
|
||
|
|
vdomFunctional: boolean;
|
||
|
|
vdomKey: boolean;
|
||
|
|
vdomListener: boolean;
|
||
|
|
vdomPropOrAttr: boolean;
|
||
|
|
vdomRef: boolean;
|
||
|
|
vdomStyle: boolean;
|
||
|
|
vdomText: boolean;
|
||
|
|
vdomXlink: boolean;
|
||
|
|
slotRelocation: boolean;
|
||
|
|
slot: boolean;
|
||
|
|
svg: boolean;
|
||
|
|
element: boolean;
|
||
|
|
event: boolean;
|
||
|
|
hostListener: boolean;
|
||
|
|
hostListenerTargetWindow: boolean;
|
||
|
|
hostListenerTargetDocument: boolean;
|
||
|
|
hostListenerTargetBody: boolean;
|
||
|
|
/**
|
||
|
|
* @deprecated Prevented from new apps, but left in for older collections
|
||
|
|
*/
|
||
|
|
hostListenerTargetParent: boolean;
|
||
|
|
hostListenerTarget: boolean;
|
||
|
|
method: boolean;
|
||
|
|
prop: boolean;
|
||
|
|
propMutable: boolean;
|
||
|
|
state: boolean;
|
||
|
|
watchCallback: boolean;
|
||
|
|
member: boolean;
|
||
|
|
updatable: boolean;
|
||
|
|
propBoolean: boolean;
|
||
|
|
propNumber: boolean;
|
||
|
|
propString: boolean;
|
||
|
|
lifecycle: boolean;
|
||
|
|
cmpDidLoad: boolean;
|
||
|
|
cmpShouldUpdate: boolean;
|
||
|
|
cmpWillLoad: boolean;
|
||
|
|
cmpDidUpdate: boolean;
|
||
|
|
cmpWillUpdate: boolean;
|
||
|
|
cmpWillRender: boolean;
|
||
|
|
cmpDidRender: boolean;
|
||
|
|
cmpDidUnload: boolean;
|
||
|
|
connectedCallback: boolean;
|
||
|
|
disconnectedCallback: boolean;
|
||
|
|
asyncLoading: boolean;
|
||
|
|
observeAttribute: boolean;
|
||
|
|
reflect: boolean;
|
||
|
|
taskQueue: boolean;
|
||
|
|
}
|
||
|
|
export interface BuildConditionals extends Partial<BuildFeatures> {
|
||
|
|
hotModuleReplacement?: boolean;
|
||
|
|
isDebug?: boolean;
|
||
|
|
isTesting?: boolean;
|
||
|
|
isDev?: boolean;
|
||
|
|
devTools?: boolean;
|
||
|
|
invisiblePrehydration?: boolean;
|
||
|
|
hydrateServerSide?: boolean;
|
||
|
|
hydrateClientSide?: boolean;
|
||
|
|
lifecycleDOMEvents?: boolean;
|
||
|
|
cssAnnotations?: boolean;
|
||
|
|
lazyLoad?: boolean;
|
||
|
|
profile?: boolean;
|
||
|
|
cssVarShim?: boolean;
|
||
|
|
constructableCSS?: boolean;
|
||
|
|
appendChildSlotFix?: boolean;
|
||
|
|
slotChildNodesFix?: boolean;
|
||
|
|
scopedSlotTextContentFix?: boolean;
|
||
|
|
cloneNodeFix?: boolean;
|
||
|
|
dynamicImportShim?: boolean;
|
||
|
|
hydratedAttribute?: boolean;
|
||
|
|
hydratedClass?: boolean;
|
||
|
|
initializeNextTick?: boolean;
|
||
|
|
safari10?: boolean;
|
||
|
|
scriptDataOpts?: boolean;
|
||
|
|
shadowDomShim?: boolean;
|
||
|
|
asyncQueue?: boolean;
|
||
|
|
transformTagName?: boolean;
|
||
|
|
attachStyles?: boolean;
|
||
|
|
}
|
||
|
|
export type ModuleFormat = 'amd' | 'cjs' | 'es' | 'iife' | 'system' | 'umd' | 'commonjs' | 'esm' | 'module' | 'systemjs';
|
||
|
|
export interface RollupResultModule {
|
||
|
|
id: string;
|
||
|
|
}
|
||
|
|
export interface RollupResults {
|
||
|
|
modules: RollupResultModule[];
|
||
|
|
}
|
||
|
|
export interface UpdatedLazyBuildCtx {
|
||
|
|
name: 'esm-browser' | 'esm' | 'cjs' | 'system';
|
||
|
|
buildCtx: BuildCtx;
|
||
|
|
}
|
||
|
|
export interface BuildCtx {
|
||
|
|
buildId: number;
|
||
|
|
buildResults: CompilerBuildResults;
|
||
|
|
buildStats?: CompilerBuildStats | {
|
||
|
|
diagnostics: Diagnostic[];
|
||
|
|
};
|
||
|
|
buildMessages: string[];
|
||
|
|
bundleBuildCount: number;
|
||
|
|
collections: Collection[];
|
||
|
|
compilerCtx: CompilerCtx;
|
||
|
|
esmBrowserComponentBundle: ReadonlyArray<BundleModule>;
|
||
|
|
esmComponentBundle: ReadonlyArray<BundleModule>;
|
||
|
|
es5ComponentBundle: ReadonlyArray<BundleModule>;
|
||
|
|
systemComponentBundle: ReadonlyArray<BundleModule>;
|
||
|
|
commonJsComponentBundle: ReadonlyArray<BundleModule>;
|
||
|
|
components: ComponentCompilerMeta[];
|
||
|
|
componentGraph: Map<string, string[]>;
|
||
|
|
config: Config;
|
||
|
|
createTimeSpan(msg: string, debug?: boolean): LoggerTimeSpan;
|
||
|
|
data: any;
|
||
|
|
debug: (msg: string) => void;
|
||
|
|
diagnostics: Diagnostic[];
|
||
|
|
dirsAdded: string[];
|
||
|
|
dirsDeleted: string[];
|
||
|
|
entryModules: EntryModule[];
|
||
|
|
filesAdded: string[];
|
||
|
|
filesChanged: string[];
|
||
|
|
filesDeleted: string[];
|
||
|
|
filesUpdated: string[];
|
||
|
|
filesWritten: string[];
|
||
|
|
globalStyle: string | undefined;
|
||
|
|
hasConfigChanges: boolean;
|
||
|
|
hasError: boolean;
|
||
|
|
hasFinished: boolean;
|
||
|
|
hasHtmlChanges: boolean;
|
||
|
|
hasPrintedResults: boolean;
|
||
|
|
hasServiceWorkerChanges: boolean;
|
||
|
|
hasScriptChanges: boolean;
|
||
|
|
hasStyleChanges: boolean;
|
||
|
|
hasWarning: boolean;
|
||
|
|
hydrateAppFilePath: string;
|
||
|
|
indexBuildCount: number;
|
||
|
|
indexDoc: Document;
|
||
|
|
isRebuild: boolean;
|
||
|
|
moduleFiles: Module[];
|
||
|
|
packageJson: PackageJsonData;
|
||
|
|
pendingCopyTasks: Promise<CopyResults>[];
|
||
|
|
progress(task: BuildTask): void;
|
||
|
|
requiresFullBuild: boolean;
|
||
|
|
rollupResults?: RollupResults;
|
||
|
|
scriptsAdded: string[];
|
||
|
|
scriptsDeleted: string[];
|
||
|
|
startTime: number;
|
||
|
|
styleBuildCount: number;
|
||
|
|
stylesPromise: Promise<void>;
|
||
|
|
stylesUpdated: BuildStyleUpdate[];
|
||
|
|
timeSpan: LoggerTimeSpan;
|
||
|
|
timestamp: string;
|
||
|
|
transpileBuildCount: number;
|
||
|
|
validateTypesBuild?(): Promise<void>;
|
||
|
|
validateTypesHandler?: (results: any) => Promise<void>;
|
||
|
|
validateTypesPromise?: Promise<any>;
|
||
|
|
}
|
||
|
|
export interface BuildStyleUpdate {
|
||
|
|
styleTag: string;
|
||
|
|
styleText: string;
|
||
|
|
styleMode: string;
|
||
|
|
}
|
||
|
|
export type BuildTask = any;
|
||
|
|
export type BuildStatus = 'pending' | 'error' | 'disabled' | 'default';
|
||
|
|
export interface CompilerBuildStats {
|
||
|
|
timestamp: string;
|
||
|
|
compiler: {
|
||
|
|
name: string;
|
||
|
|
version: string;
|
||
|
|
};
|
||
|
|
app: {
|
||
|
|
namespace: string;
|
||
|
|
fsNamespace: string;
|
||
|
|
components: number;
|
||
|
|
entries: number;
|
||
|
|
bundles: number;
|
||
|
|
outputs: any;
|
||
|
|
};
|
||
|
|
options: {
|
||
|
|
minifyJs: boolean;
|
||
|
|
minifyCss: boolean;
|
||
|
|
hashFileNames: boolean;
|
||
|
|
hashedFileNameLength: number;
|
||
|
|
buildEs5: boolean | 'prod';
|
||
|
|
};
|
||
|
|
formats: {
|
||
|
|
esmBrowser: ReadonlyArray<CompilerBuildStatBundle>;
|
||
|
|
esm: ReadonlyArray<CompilerBuildStatBundle>;
|
||
|
|
es5: ReadonlyArray<CompilerBuildStatBundle>;
|
||
|
|
system: ReadonlyArray<CompilerBuildStatBundle>;
|
||
|
|
commonjs: ReadonlyArray<CompilerBuildStatBundle>;
|
||
|
|
};
|
||
|
|
components: BuildComponent[];
|
||
|
|
entries: EntryModule[];
|
||
|
|
rollupResults: RollupResults;
|
||
|
|
sourceGraph?: BuildSourceGraph;
|
||
|
|
componentGraph: BuildResultsComponentGraph;
|
||
|
|
collections: {
|
||
|
|
name: string;
|
||
|
|
source: string;
|
||
|
|
tags: string[];
|
||
|
|
}[];
|
||
|
|
}
|
||
|
|
export interface CompilerBuildStatBundle {
|
||
|
|
key: string;
|
||
|
|
components: string[];
|
||
|
|
bundleId: string;
|
||
|
|
fileName: string;
|
||
|
|
imports: string[];
|
||
|
|
originalByteSize: number;
|
||
|
|
}
|
||
|
|
export interface BuildEntry {
|
||
|
|
entryId: string;
|
||
|
|
components: BuildComponent[];
|
||
|
|
bundles: BuildBundle[];
|
||
|
|
inputs: string[];
|
||
|
|
modes?: string[];
|
||
|
|
encapsulations: Encapsulation[];
|
||
|
|
}
|
||
|
|
export interface BuildBundle {
|
||
|
|
fileName: string;
|
||
|
|
outputs: string[];
|
||
|
|
size?: number;
|
||
|
|
mode?: string;
|
||
|
|
scopedStyles?: boolean;
|
||
|
|
target?: string;
|
||
|
|
}
|
||
|
|
export interface BuildSourceGraph {
|
||
|
|
[filePath: string]: string[];
|
||
|
|
}
|
||
|
|
export interface BuildComponent {
|
||
|
|
tag: string;
|
||
|
|
dependencyOf?: string[];
|
||
|
|
dependencies?: string[];
|
||
|
|
}
|
||
|
|
export interface BundleOutputChunk {
|
||
|
|
code: string;
|
||
|
|
fileName: string;
|
||
|
|
isDynamicEntry: boolean;
|
||
|
|
isEntry: boolean;
|
||
|
|
map: any;
|
||
|
|
dynamicImports: string[];
|
||
|
|
imports: string[];
|
||
|
|
exports: string[];
|
||
|
|
modules: {
|
||
|
|
[modulePath: string]: {
|
||
|
|
renderedExports: string[];
|
||
|
|
removedExports: string[];
|
||
|
|
renderedLength: number;
|
||
|
|
originalLength: number;
|
||
|
|
};
|
||
|
|
};
|
||
|
|
name: string;
|
||
|
|
}
|
||
|
|
export type SourceTarget = 'es5' | 'es2017' | 'latest';
|
||
|
|
export interface BundleEntryInputs {
|
||
|
|
[entryKey: string]: string;
|
||
|
|
}
|
||
|
|
/**
|
||
|
|
* A note regarding Rollup types:
|
||
|
|
* As of this writing, there is no great way to import external types for packages that are directly embedded in the
|
||
|
|
* Stencil source. As a result, some types are duplicated here for Rollup that will be used within the codebase.
|
||
|
|
* Updates to rollup may require these typings to be updated.
|
||
|
|
*/
|
||
|
|
export type RollupResult = RollupChunkResult | RollupAssetResult;
|
||
|
|
export interface RollupAssetResult {
|
||
|
|
type: 'asset';
|
||
|
|
fileName: string;
|
||
|
|
content: string;
|
||
|
|
}
|
||
|
|
export interface RollupChunkResult {
|
||
|
|
type: 'chunk';
|
||
|
|
entryKey: string;
|
||
|
|
fileName: string;
|
||
|
|
code: string;
|
||
|
|
isEntry: boolean;
|
||
|
|
isComponent: boolean;
|
||
|
|
isCore: boolean;
|
||
|
|
isIndex: boolean;
|
||
|
|
isBrowserLoader: boolean;
|
||
|
|
imports: string[];
|
||
|
|
moduleFormat: ModuleFormat;
|
||
|
|
map?: RollupSourceMap;
|
||
|
|
}
|
||
|
|
export interface RollupSourceMap {
|
||
|
|
file: string;
|
||
|
|
mappings: string;
|
||
|
|
names: string[];
|
||
|
|
sources: string[];
|
||
|
|
sourcesContent: string[];
|
||
|
|
version: number;
|
||
|
|
toString(): string;
|
||
|
|
toUrl(): string;
|
||
|
|
}
|
||
|
|
/**
|
||
|
|
* Result of Stencil compressing, mangling, and otherwise 'minifying' JavaScript
|
||
|
|
*/
|
||
|
|
export type OptimizeJsResult = {
|
||
|
|
output: string;
|
||
|
|
diagnostics: Diagnostic[];
|
||
|
|
sourceMap?: SourceMap;
|
||
|
|
};
|
||
|
|
export interface BundleModule {
|
||
|
|
entryKey: string;
|
||
|
|
rollupResult: RollupChunkResult;
|
||
|
|
cmps: ComponentCompilerMeta[];
|
||
|
|
output: BundleModuleOutput;
|
||
|
|
}
|
||
|
|
export interface BundleModuleOutput {
|
||
|
|
bundleId: string;
|
||
|
|
fileName: string;
|
||
|
|
code: string;
|
||
|
|
}
|
||
|
|
export interface Cache {
|
||
|
|
get(key: string): Promise<string>;
|
||
|
|
put(key: string, value: string): Promise<boolean>;
|
||
|
|
has(key: string): Promise<boolean>;
|
||
|
|
createKey(domain: string, ...args: any[]): Promise<string>;
|
||
|
|
commit(): Promise<void>;
|
||
|
|
clear(): void;
|
||
|
|
clearDiskCache(): Promise<void>;
|
||
|
|
getMemoryStats(): string;
|
||
|
|
initCacheDir(): Promise<void>;
|
||
|
|
}
|
||
|
|
export interface CollectionCompilerMeta {
|
||
|
|
collectionName?: string;
|
||
|
|
moduleId?: string;
|
||
|
|
moduleDir?: string;
|
||
|
|
moduleFiles?: Module[];
|
||
|
|
global?: Module;
|
||
|
|
compiler?: CollectionCompilerVersion;
|
||
|
|
isInitialized?: boolean;
|
||
|
|
hasExports?: boolean;
|
||
|
|
dependencies?: string[];
|
||
|
|
bundles?: {
|
||
|
|
components: string[];
|
||
|
|
}[];
|
||
|
|
}
|
||
|
|
export interface CollectionCompilerVersion {
|
||
|
|
name: string;
|
||
|
|
version: string;
|
||
|
|
typescriptVersion?: string;
|
||
|
|
}
|
||
|
|
export interface CollectionManifest {
|
||
|
|
entries?: CollectionComponentEntryPath[];
|
||
|
|
collections?: CollectionDependencyManifest[];
|
||
|
|
global?: string;
|
||
|
|
compiler?: CollectionCompilerVersion;
|
||
|
|
bundles?: CollectionBundleManifest[];
|
||
|
|
}
|
||
|
|
export type CollectionComponentEntryPath = string;
|
||
|
|
export interface CollectionBundleManifest {
|
||
|
|
components: string[];
|
||
|
|
}
|
||
|
|
export interface CollectionDependencyManifest {
|
||
|
|
name: string;
|
||
|
|
tags: string[];
|
||
|
|
}
|
||
|
|
/** OLD WAY */
|
||
|
|
export interface Collection {
|
||
|
|
collectionName?: string;
|
||
|
|
moduleDir?: string;
|
||
|
|
moduleFiles?: any[];
|
||
|
|
global?: any;
|
||
|
|
compiler?: CollectionCompiler;
|
||
|
|
isInitialized?: boolean;
|
||
|
|
hasExports?: boolean;
|
||
|
|
dependencies?: string[];
|
||
|
|
bundles?: {
|
||
|
|
components: string[];
|
||
|
|
}[];
|
||
|
|
}
|
||
|
|
export interface CollectionCompiler {
|
||
|
|
name: string;
|
||
|
|
version: string;
|
||
|
|
typescriptVersion?: string;
|
||
|
|
}
|
||
|
|
export interface AppRegistry {
|
||
|
|
namespace?: string;
|
||
|
|
fsNamespace?: string;
|
||
|
|
loader?: string;
|
||
|
|
core?: string;
|
||
|
|
corePolyfilled?: string;
|
||
|
|
global?: string;
|
||
|
|
components?: AppRegistryComponents;
|
||
|
|
}
|
||
|
|
export interface AppRegistryComponents {
|
||
|
|
[tagName: string]: {
|
||
|
|
bundleIds: ModeBundleIds;
|
||
|
|
encapsulation?: 'shadow' | 'scoped';
|
||
|
|
};
|
||
|
|
}
|
||
|
|
/** OLD WAY */
|
||
|
|
export interface ModuleFile {
|
||
|
|
sourceFilePath: string;
|
||
|
|
jsFilePath?: string;
|
||
|
|
dtsFilePath?: string;
|
||
|
|
cmpMeta?: any;
|
||
|
|
isCollectionDependency?: boolean;
|
||
|
|
excludeFromCollection?: boolean;
|
||
|
|
originalCollectionComponentPath?: string;
|
||
|
|
externalImports?: string[];
|
||
|
|
localImports?: string[];
|
||
|
|
potentialCmpRefs?: string[];
|
||
|
|
hasSlot?: boolean;
|
||
|
|
hasSvg?: boolean;
|
||
|
|
}
|
||
|
|
export interface ModuleBundles {
|
||
|
|
[bundleId: string]: string;
|
||
|
|
}
|
||
|
|
export interface CollectionData {
|
||
|
|
components?: ComponentData[];
|
||
|
|
collections?: CollectionDependencyData[];
|
||
|
|
global?: string;
|
||
|
|
modules?: string[];
|
||
|
|
compiler?: {
|
||
|
|
name: string;
|
||
|
|
version: string;
|
||
|
|
typescriptVersion?: string;
|
||
|
|
};
|
||
|
|
bundles?: CollectionBundle[];
|
||
|
|
}
|
||
|
|
export interface CollectionBundle {
|
||
|
|
components: string[];
|
||
|
|
}
|
||
|
|
export interface CollectionDependencyData {
|
||
|
|
name: string;
|
||
|
|
tags: string[];
|
||
|
|
}
|
||
|
|
export interface ComponentData {
|
||
|
|
tag?: string;
|
||
|
|
componentPath?: string;
|
||
|
|
componentClass?: string;
|
||
|
|
dependencies?: string[];
|
||
|
|
styles?: StylesData;
|
||
|
|
props?: PropData[];
|
||
|
|
states?: StateData[];
|
||
|
|
listeners?: ListenerData[];
|
||
|
|
methods?: MethodData[];
|
||
|
|
events?: EventData[];
|
||
|
|
connect?: ConnectData[];
|
||
|
|
context?: ContextData[];
|
||
|
|
hostElement?: HostElementData;
|
||
|
|
host?: any;
|
||
|
|
assetPaths?: string[];
|
||
|
|
slot?: 'hasSlots' | 'hasNamedSlots';
|
||
|
|
shadow?: boolean;
|
||
|
|
scoped?: boolean;
|
||
|
|
priority?: 'low';
|
||
|
|
}
|
||
|
|
export interface StylesData {
|
||
|
|
[modeName: string]: StyleData;
|
||
|
|
}
|
||
|
|
export interface StyleData {
|
||
|
|
stylePaths?: string[];
|
||
|
|
style?: string;
|
||
|
|
}
|
||
|
|
export interface PropData {
|
||
|
|
name?: string;
|
||
|
|
type?: 'Boolean' | 'Number' | 'String' | 'Any';
|
||
|
|
mutable?: boolean;
|
||
|
|
attr?: string;
|
||
|
|
reflectToAttr?: boolean;
|
||
|
|
watch?: string[];
|
||
|
|
}
|
||
|
|
export interface StateData {
|
||
|
|
name: string;
|
||
|
|
}
|
||
|
|
export interface ListenerData {
|
||
|
|
event: string;
|
||
|
|
method: string;
|
||
|
|
capture?: boolean;
|
||
|
|
passive?: boolean;
|
||
|
|
enabled?: boolean;
|
||
|
|
}
|
||
|
|
export interface MethodData {
|
||
|
|
name: string;
|
||
|
|
}
|
||
|
|
export interface EventData {
|
||
|
|
event: string;
|
||
|
|
method?: string;
|
||
|
|
bubbles?: boolean;
|
||
|
|
cancelable?: boolean;
|
||
|
|
composed?: boolean;
|
||
|
|
}
|
||
|
|
export interface ConnectData {
|
||
|
|
name: string;
|
||
|
|
tag?: string;
|
||
|
|
}
|
||
|
|
export interface ContextData {
|
||
|
|
name: string;
|
||
|
|
id?: string;
|
||
|
|
}
|
||
|
|
export interface HostElementData {
|
||
|
|
name: string;
|
||
|
|
}
|
||
|
|
export interface BuildOutputFile {
|
||
|
|
name: string;
|
||
|
|
content: string;
|
||
|
|
}
|
||
|
|
export type OnCallback = (buildStart: CompilerBuildStart) => void;
|
||
|
|
export type RemoveCallback = () => boolean;
|
||
|
|
export interface CompilerCtx {
|
||
|
|
version: number;
|
||
|
|
activeBuildId: number;
|
||
|
|
activeDirsAdded: string[];
|
||
|
|
activeDirsDeleted: string[];
|
||
|
|
activeFilesAdded: string[];
|
||
|
|
activeFilesDeleted: string[];
|
||
|
|
activeFilesUpdated: string[];
|
||
|
|
addWatchDir: (path: string, recursive: boolean) => void;
|
||
|
|
addWatchFile: (path: string) => void;
|
||
|
|
cache: Cache;
|
||
|
|
cssModuleImports: Map<string, string[]>;
|
||
|
|
cachedGlobalStyle: string;
|
||
|
|
collections: CollectionCompilerMeta[];
|
||
|
|
compilerOptions: any;
|
||
|
|
events: BuildEvents;
|
||
|
|
fs: InMemoryFileSystem;
|
||
|
|
hasSuccessfulBuild: boolean;
|
||
|
|
isActivelyBuilding: boolean;
|
||
|
|
lastBuildResults: CompilerBuildResults;
|
||
|
|
moduleMap: ModuleMap;
|
||
|
|
nodeMap: NodeMap;
|
||
|
|
resolvedCollections: Set<string>;
|
||
|
|
rollupCacheHydrate: any;
|
||
|
|
rollupCacheLazy: any;
|
||
|
|
rollupCacheNative: any;
|
||
|
|
styleModeNames: Set<string>;
|
||
|
|
changedModules: Set<string>;
|
||
|
|
changedFiles: Set<string>;
|
||
|
|
worker?: CompilerWorkerContext;
|
||
|
|
rollupCache: Map<string, any>;
|
||
|
|
reset(): void;
|
||
|
|
}
|
||
|
|
export type NodeMap = WeakMap<any, ComponentCompilerMeta>;
|
||
|
|
/** Must be serializable to JSON!! */
|
||
|
|
export interface ComponentCompilerFeatures {
|
||
|
|
hasAttribute: boolean;
|
||
|
|
hasAttributeChangedCallbackFn: boolean;
|
||
|
|
hasComponentWillLoadFn: boolean;
|
||
|
|
hasComponentDidLoadFn: boolean;
|
||
|
|
hasComponentShouldUpdateFn: boolean;
|
||
|
|
hasComponentWillUpdateFn: boolean;
|
||
|
|
hasComponentDidUpdateFn: boolean;
|
||
|
|
hasComponentWillRenderFn: boolean;
|
||
|
|
hasComponentDidRenderFn: boolean;
|
||
|
|
hasComponentDidUnloadFn: boolean;
|
||
|
|
hasConnectedCallbackFn: boolean;
|
||
|
|
hasDisconnectedCallbackFn: boolean;
|
||
|
|
hasElement: boolean;
|
||
|
|
hasEvent: boolean;
|
||
|
|
hasLifecycle: boolean;
|
||
|
|
hasListener: boolean;
|
||
|
|
hasListenerTarget: boolean;
|
||
|
|
hasListenerTargetWindow: boolean;
|
||
|
|
hasListenerTargetDocument: boolean;
|
||
|
|
hasListenerTargetBody: boolean;
|
||
|
|
/**
|
||
|
|
* @deprecated Prevented from new apps, but left in for older collections
|
||
|
|
*/
|
||
|
|
hasListenerTargetParent: boolean;
|
||
|
|
hasMember: boolean;
|
||
|
|
hasMethod: boolean;
|
||
|
|
hasMode: boolean;
|
||
|
|
hasProp: boolean;
|
||
|
|
hasPropBoolean: boolean;
|
||
|
|
hasPropNumber: boolean;
|
||
|
|
hasPropString: boolean;
|
||
|
|
hasPropMutable: boolean;
|
||
|
|
hasReflect: boolean;
|
||
|
|
hasRenderFn: boolean;
|
||
|
|
hasState: boolean;
|
||
|
|
hasStyle: boolean;
|
||
|
|
hasVdomAttribute: boolean;
|
||
|
|
hasVdomClass: boolean;
|
||
|
|
hasVdomFunctional: boolean;
|
||
|
|
hasVdomKey: boolean;
|
||
|
|
hasVdomListener: boolean;
|
||
|
|
hasVdomPropOrAttr: boolean;
|
||
|
|
hasVdomRef: boolean;
|
||
|
|
hasVdomRender: boolean;
|
||
|
|
hasVdomStyle: boolean;
|
||
|
|
hasVdomText: boolean;
|
||
|
|
hasVdomXlink: boolean;
|
||
|
|
hasWatchCallback: boolean;
|
||
|
|
htmlAttrNames: string[];
|
||
|
|
htmlTagNames: string[];
|
||
|
|
htmlParts: string[];
|
||
|
|
isUpdateable: boolean;
|
||
|
|
isPlain: boolean;
|
||
|
|
potentialCmpRefs: string[];
|
||
|
|
}
|
||
|
|
/** Must be serializable to JSON!! */
|
||
|
|
export interface ComponentCompilerMeta extends ComponentCompilerFeatures {
|
||
|
|
assetsDirs: CompilerAssetDir[];
|
||
|
|
componentClassName: string;
|
||
|
|
elementRef: string;
|
||
|
|
encapsulation: Encapsulation;
|
||
|
|
shadowDelegatesFocus: boolean;
|
||
|
|
excludeFromCollection: boolean;
|
||
|
|
isCollectionDependency: boolean;
|
||
|
|
docs: CompilerJsDoc;
|
||
|
|
jsFilePath: string;
|
||
|
|
sourceMapPath: string;
|
||
|
|
listeners: ComponentCompilerListener[];
|
||
|
|
events: ComponentCompilerEvent[];
|
||
|
|
methods: ComponentCompilerMethod[];
|
||
|
|
virtualProperties: ComponentCompilerVirtualProperty[];
|
||
|
|
properties: ComponentCompilerProperty[];
|
||
|
|
watchers: ComponentCompilerWatch[];
|
||
|
|
sourceFilePath: string;
|
||
|
|
states: ComponentCompilerState[];
|
||
|
|
styleDocs: CompilerStyleDoc[];
|
||
|
|
styles: StyleCompiler[];
|
||
|
|
tagName: string;
|
||
|
|
internal: boolean;
|
||
|
|
legacyConnect: ComponentCompilerLegacyConnect[];
|
||
|
|
legacyContext: ComponentCompilerLegacyContext[];
|
||
|
|
dependencies?: string[];
|
||
|
|
dependents?: string[];
|
||
|
|
directDependencies?: string[];
|
||
|
|
directDependents?: string[];
|
||
|
|
}
|
||
|
|
export interface ComponentCompilerLegacyConnect {
|
||
|
|
name: string;
|
||
|
|
connect: string;
|
||
|
|
}
|
||
|
|
export interface ComponentCompilerLegacyContext {
|
||
|
|
name: string;
|
||
|
|
context: string;
|
||
|
|
}
|
||
|
|
export type Encapsulation = 'shadow' | 'scoped' | 'none';
|
||
|
|
/**
|
||
|
|
* Intermediate Representation (IR) of a static property on a Stencil component
|
||
|
|
*/
|
||
|
|
export interface ComponentCompilerStaticProperty {
|
||
|
|
mutable: boolean;
|
||
|
|
optional: boolean;
|
||
|
|
required: boolean;
|
||
|
|
type: ComponentCompilerPropertyType;
|
||
|
|
complexType: ComponentCompilerPropertyComplexType;
|
||
|
|
attribute?: string;
|
||
|
|
reflect?: boolean;
|
||
|
|
docs: CompilerJsDoc;
|
||
|
|
defaultValue?: string;
|
||
|
|
}
|
||
|
|
/**
|
||
|
|
* Intermediate Representation (IR) of a property on a Stencil component
|
||
|
|
*/
|
||
|
|
export interface ComponentCompilerProperty extends ComponentCompilerStaticProperty {
|
||
|
|
name: string;
|
||
|
|
internal: boolean;
|
||
|
|
}
|
||
|
|
export interface ComponentCompilerVirtualProperty {
|
||
|
|
name: string;
|
||
|
|
type: string;
|
||
|
|
docs: string;
|
||
|
|
}
|
||
|
|
export type ComponentCompilerPropertyType = 'any' | 'string' | 'boolean' | 'number' | 'unknown';
|
||
|
|
export interface ComponentCompilerPropertyComplexType {
|
||
|
|
original: string;
|
||
|
|
resolved: string;
|
||
|
|
references: ComponentCompilerTypeReferences;
|
||
|
|
}
|
||
|
|
/**
|
||
|
|
* A record of `ComponentCompilerTypeReference` entities.
|
||
|
|
*
|
||
|
|
* Each key in this record is intended to be the names of the types used by a component. However, this is not enforced
|
||
|
|
* by the type system (I.E. any string can be used as a key).
|
||
|
|
*
|
||
|
|
* Note any key can be a user defined type or a TypeScript standard type.
|
||
|
|
*/
|
||
|
|
export type ComponentCompilerTypeReferences = Record<string, ComponentCompilerTypeReference>;
|
||
|
|
/**
|
||
|
|
* Describes a reference to a type used by a component.
|
||
|
|
*/
|
||
|
|
export interface ComponentCompilerTypeReference {
|
||
|
|
/**
|
||
|
|
* A type may be defined:
|
||
|
|
* - locally (in the same file as the component that uses it)
|
||
|
|
* - globally
|
||
|
|
* - by importing it into a file (and is defined elsewhere)
|
||
|
|
*/
|
||
|
|
location: 'local' | 'global' | 'import';
|
||
|
|
/**
|
||
|
|
* The path to the type reference, if applicable (global types should not need a path associated with them)
|
||
|
|
*/
|
||
|
|
path?: string;
|
||
|
|
}
|
||
|
|
export interface ComponentCompilerStaticEvent {
|
||
|
|
name: string;
|
||
|
|
method: string;
|
||
|
|
bubbles: boolean;
|
||
|
|
cancelable: boolean;
|
||
|
|
composed: boolean;
|
||
|
|
docs: CompilerJsDoc;
|
||
|
|
complexType: ComponentCompilerEventComplexType;
|
||
|
|
}
|
||
|
|
export interface ComponentCompilerEvent extends ComponentCompilerStaticEvent {
|
||
|
|
internal: boolean;
|
||
|
|
}
|
||
|
|
export interface ComponentCompilerEventComplexType {
|
||
|
|
original: string;
|
||
|
|
resolved: string;
|
||
|
|
references: ComponentCompilerTypeReferences;
|
||
|
|
}
|
||
|
|
export interface ComponentCompilerListener {
|
||
|
|
name: string;
|
||
|
|
method: string;
|
||
|
|
capture: boolean;
|
||
|
|
passive: boolean;
|
||
|
|
target: ListenTargetOptions | undefined;
|
||
|
|
}
|
||
|
|
export interface ComponentCompilerStaticMethod {
|
||
|
|
docs: CompilerJsDoc;
|
||
|
|
complexType: ComponentCompilerMethodComplexType;
|
||
|
|
}
|
||
|
|
export interface ComponentCompilerMethodComplexType {
|
||
|
|
signature: string;
|
||
|
|
parameters: CompilerJsDoc[];
|
||
|
|
references: ComponentCompilerTypeReferences;
|
||
|
|
return: string;
|
||
|
|
}
|
||
|
|
export interface ComponentCompilerWatch {
|
||
|
|
propName: string;
|
||
|
|
methodName: string;
|
||
|
|
}
|
||
|
|
export interface ComponentCompilerMethod extends ComponentCompilerStaticMethod {
|
||
|
|
name: string;
|
||
|
|
internal: boolean;
|
||
|
|
}
|
||
|
|
export interface ComponentCompilerState {
|
||
|
|
name: string;
|
||
|
|
}
|
||
|
|
/**
|
||
|
|
* Representation of JSDoc that is pulled off a node in the AST
|
||
|
|
*/
|
||
|
|
export interface CompilerJsDoc {
|
||
|
|
/**
|
||
|
|
* The text associated with the JSDoc
|
||
|
|
*/
|
||
|
|
text: string;
|
||
|
|
/**
|
||
|
|
* Tags included in the JSDoc
|
||
|
|
*/
|
||
|
|
tags: CompilerJsDocTagInfo[];
|
||
|
|
}
|
||
|
|
/**
|
||
|
|
* Representation of a tag that exists in a JSDoc
|
||
|
|
*/
|
||
|
|
export interface CompilerJsDocTagInfo {
|
||
|
|
/**
|
||
|
|
* The name of the tag - e.g. `@deprecated`
|
||
|
|
*/
|
||
|
|
name: string;
|
||
|
|
/**
|
||
|
|
* Additional text that is associated with the tag - e.g. `@deprecated use v2 of this API`
|
||
|
|
*/
|
||
|
|
text?: string;
|
||
|
|
}
|
||
|
|
export interface CompilerStyleDoc {
|
||
|
|
name: string;
|
||
|
|
docs: string;
|
||
|
|
annotation: 'prop';
|
||
|
|
}
|
||
|
|
export interface CompilerAssetDir {
|
||
|
|
absolutePath?: string;
|
||
|
|
cmpRelativePath?: string;
|
||
|
|
originalComponentPath?: string;
|
||
|
|
}
|
||
|
|
export interface ComponentCompilerData {
|
||
|
|
exportLine: string;
|
||
|
|
filePath: string;
|
||
|
|
cmp: ComponentCompilerMeta;
|
||
|
|
uniqueComponentClassName?: string;
|
||
|
|
importLine?: string;
|
||
|
|
}
|
||
|
|
export interface ComponentConstructor {
|
||
|
|
is?: string;
|
||
|
|
properties?: ComponentConstructorProperties;
|
||
|
|
watchers?: ComponentConstructorWatchers;
|
||
|
|
events?: ComponentConstructorEvent[];
|
||
|
|
listeners?: ComponentConstructorListener[];
|
||
|
|
style?: string;
|
||
|
|
styleId?: string;
|
||
|
|
encapsulation?: ComponentConstructorEncapsulation;
|
||
|
|
observedAttributes?: string[];
|
||
|
|
cmpMeta?: ComponentRuntimeMeta;
|
||
|
|
isProxied?: boolean;
|
||
|
|
isStyleRegistered?: boolean;
|
||
|
|
}
|
||
|
|
/**
|
||
|
|
* A mapping from class member names to a list of methods which are watching
|
||
|
|
* them.
|
||
|
|
*/
|
||
|
|
export interface ComponentConstructorWatchers {
|
||
|
|
[propName: string]: string[];
|
||
|
|
}
|
||
|
|
export interface ComponentTestingConstructor extends ComponentConstructor {
|
||
|
|
COMPILER_META: ComponentCompilerMeta;
|
||
|
|
prototype?: {
|
||
|
|
componentWillLoad?: Function;
|
||
|
|
componentWillUpdate?: Function;
|
||
|
|
componentWillRender?: Function;
|
||
|
|
__componentWillLoad?: Function | null;
|
||
|
|
__componentWillUpdate?: Function | null;
|
||
|
|
__componentWillRender?: Function | null;
|
||
|
|
};
|
||
|
|
}
|
||
|
|
export interface ComponentNativeConstructor extends ComponentConstructor {
|
||
|
|
cmpMeta: ComponentRuntimeMeta;
|
||
|
|
}
|
||
|
|
export type ComponentConstructorEncapsulation = 'shadow' | 'scoped' | 'none';
|
||
|
|
export interface ComponentConstructorProperties {
|
||
|
|
[propName: string]: ComponentConstructorProperty;
|
||
|
|
}
|
||
|
|
export interface ComponentConstructorProperty {
|
||
|
|
attribute?: string;
|
||
|
|
elementRef?: boolean;
|
||
|
|
method?: boolean;
|
||
|
|
mutable?: boolean;
|
||
|
|
reflect?: boolean;
|
||
|
|
state?: boolean;
|
||
|
|
type?: ComponentConstructorPropertyType;
|
||
|
|
watchCallbacks?: string[];
|
||
|
|
}
|
||
|
|
export type ComponentConstructorPropertyType = StringConstructor | BooleanConstructor | NumberConstructor | 'string' | 'boolean' | 'number';
|
||
|
|
export interface ComponentConstructorEvent {
|
||
|
|
name: string;
|
||
|
|
method: string;
|
||
|
|
bubbles: boolean;
|
||
|
|
cancelable: boolean;
|
||
|
|
composed: boolean;
|
||
|
|
}
|
||
|
|
export interface ComponentConstructorListener {
|
||
|
|
name: string;
|
||
|
|
method: string;
|
||
|
|
capture?: boolean;
|
||
|
|
passive?: boolean;
|
||
|
|
}
|
||
|
|
export interface HostConfig {
|
||
|
|
hosting?: {
|
||
|
|
rules?: HostRule[];
|
||
|
|
};
|
||
|
|
}
|
||
|
|
export interface HostRule {
|
||
|
|
include: string;
|
||
|
|
headers: HostRuleHeader[];
|
||
|
|
}
|
||
|
|
export interface HostRuleHeader {
|
||
|
|
name?: string;
|
||
|
|
value?: string;
|
||
|
|
}
|
||
|
|
export interface CssVarShim {
|
||
|
|
i(): Promise<any>;
|
||
|
|
addLink(linkEl: HTMLLinkElement): Promise<any>;
|
||
|
|
addGlobalStyle(styleEl: HTMLStyleElement): void;
|
||
|
|
createHostStyle(hostEl: HTMLElement, templateName: string, cssText: string, isScoped: boolean): HTMLStyleElement;
|
||
|
|
removeHost(hostEl: HTMLElement): void;
|
||
|
|
updateHost(hostEl: HTMLElement): void;
|
||
|
|
updateGlobal(): void;
|
||
|
|
}
|
||
|
|
export interface DevClientWindow extends Window {
|
||
|
|
['s-dev-server']: boolean;
|
||
|
|
['s-initial-load']: boolean;
|
||
|
|
['s-build-id']: number;
|
||
|
|
WebSocket: new (socketUrl: string, protos: string[]) => WebSocket;
|
||
|
|
devServerConfig?: DevClientConfig;
|
||
|
|
}
|
||
|
|
export interface DevClientConfig {
|
||
|
|
basePath: string;
|
||
|
|
editors: DevServerEditor[];
|
||
|
|
reloadStrategy: PageReloadStrategy;
|
||
|
|
socketUrl?: string;
|
||
|
|
}
|
||
|
|
export interface HttpRequest {
|
||
|
|
method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'HEAD' | 'OPTIONS';
|
||
|
|
acceptHeader: string;
|
||
|
|
url: URL;
|
||
|
|
searchParams: URLSearchParams;
|
||
|
|
pathname?: string;
|
||
|
|
filePath?: string;
|
||
|
|
stats?: CompilerFsStats;
|
||
|
|
headers?: {
|
||
|
|
[name: string]: string;
|
||
|
|
};
|
||
|
|
host?: string;
|
||
|
|
}
|
||
|
|
export interface DevServerMessage {
|
||
|
|
startServer?: DevServerConfig;
|
||
|
|
closeServer?: boolean;
|
||
|
|
serverStarted?: DevServerConfig;
|
||
|
|
serverClosed?: boolean;
|
||
|
|
buildStart?: boolean;
|
||
|
|
buildLog?: BuildLog;
|
||
|
|
buildResults?: CompilerBuildResults;
|
||
|
|
requestBuildResults?: boolean;
|
||
|
|
error?: {
|
||
|
|
message?: string;
|
||
|
|
type?: string;
|
||
|
|
stack?: any;
|
||
|
|
};
|
||
|
|
isActivelyBuilding?: boolean;
|
||
|
|
compilerRequestPath?: string;
|
||
|
|
compilerRequestResults?: CompilerRequestResponse;
|
||
|
|
requestLog?: {
|
||
|
|
method: string;
|
||
|
|
url: string;
|
||
|
|
status: number;
|
||
|
|
};
|
||
|
|
}
|
||
|
|
export type DevServerSendMessage = (msg: DevServerMessage) => void;
|
||
|
|
export interface DevServerContext {
|
||
|
|
connectorHtml: string;
|
||
|
|
dirTemplate: string;
|
||
|
|
getBuildResults: () => Promise<CompilerBuildResults>;
|
||
|
|
getCompilerRequest: (path: string) => Promise<CompilerRequestResponse>;
|
||
|
|
isServerListening: boolean;
|
||
|
|
logRequest: (req: HttpRequest, status: number) => void;
|
||
|
|
prerenderConfig: PrerenderConfig;
|
||
|
|
serve302: (req: any, res: any, pathname?: string) => void;
|
||
|
|
serve404: (req: any, res: any, xSource: string, content?: string) => void;
|
||
|
|
serve500: (req: any, res: any, error: any, xSource: string) => void;
|
||
|
|
sys: CompilerSystem;
|
||
|
|
}
|
||
|
|
export type InitServerProcess = (sendMsg: (msg: DevServerMessage) => void) => (msg: DevServerMessage) => void;
|
||
|
|
export interface DevResponseHeaders {
|
||
|
|
'cache-control'?: string;
|
||
|
|
expires?: string;
|
||
|
|
'content-type'?: string;
|
||
|
|
'content-length'?: number;
|
||
|
|
date?: string;
|
||
|
|
'access-control-allow-origin'?: string;
|
||
|
|
'access-control-expose-headers'?: string;
|
||
|
|
'content-encoding'?: 'gzip';
|
||
|
|
vary?: 'Accept-Encoding';
|
||
|
|
server?: string;
|
||
|
|
'x-directory-index'?: string;
|
||
|
|
'x-source'?: string;
|
||
|
|
}
|
||
|
|
export interface OpenInEditorData {
|
||
|
|
file?: string;
|
||
|
|
line?: number;
|
||
|
|
column?: number;
|
||
|
|
open?: string;
|
||
|
|
editor?: string;
|
||
|
|
exists?: boolean;
|
||
|
|
error?: string;
|
||
|
|
}
|
||
|
|
export interface EntryModule {
|
||
|
|
entryKey: string;
|
||
|
|
cmps: ComponentCompilerMeta[];
|
||
|
|
}
|
||
|
|
export interface EntryBundle {
|
||
|
|
fileName: string;
|
||
|
|
text: string;
|
||
|
|
outputs: string[];
|
||
|
|
modeName: string;
|
||
|
|
isScopedStyles: boolean;
|
||
|
|
sourceTarget: string;
|
||
|
|
}
|
||
|
|
export interface EntryComponent {
|
||
|
|
tag: string;
|
||
|
|
dependencyOf?: string[];
|
||
|
|
}
|
||
|
|
export interface ComponentRef {
|
||
|
|
tag: string;
|
||
|
|
filePath: string;
|
||
|
|
}
|
||
|
|
export interface ModuleGraph {
|
||
|
|
filePath: string;
|
||
|
|
importPaths: string[];
|
||
|
|
}
|
||
|
|
export interface AddEventListener {
|
||
|
|
(elm: Element | Document | Window, eventName: string, cb: EventListenerCallback, opts?: ListenOptions): Function;
|
||
|
|
}
|
||
|
|
export interface EventListenerCallback {
|
||
|
|
(ev?: any): void;
|
||
|
|
}
|
||
|
|
export interface EventEmitterData<T = any> {
|
||
|
|
detail?: T;
|
||
|
|
bubbles?: boolean;
|
||
|
|
cancelable?: boolean;
|
||
|
|
composed?: boolean;
|
||
|
|
}
|
||
|
|
export interface HostElement extends HTMLElement {
|
||
|
|
connectedCallback?: () => void;
|
||
|
|
attributeChangedCallback?: (attribName: string, oldVal: string, newVal: string, namespace: string) => void;
|
||
|
|
disconnectedCallback?: () => void;
|
||
|
|
host?: Element;
|
||
|
|
forceUpdate?: () => void;
|
||
|
|
/**
|
||
|
|
* Unique stencil id for this element
|
||
|
|
*/
|
||
|
|
['s-id']?: string;
|
||
|
|
/**
|
||
|
|
* Content Reference:
|
||
|
|
* Reference to the HTML Comment that's placed inside of the
|
||
|
|
* host element's original content. This comment is used to
|
||
|
|
* always represent where host element's light dom is.
|
||
|
|
*/
|
||
|
|
['s-cr']?: RenderNode;
|
||
|
|
/**
|
||
|
|
* Lifecycle ready
|
||
|
|
*/
|
||
|
|
['s-lr']?: boolean;
|
||
|
|
/**
|
||
|
|
* On Render Callbacks:
|
||
|
|
* Array of callbacks to fire off after it has rendered.
|
||
|
|
*/
|
||
|
|
['s-rc']?: (() => void)[];
|
||
|
|
/**
|
||
|
|
* Scope Id
|
||
|
|
* The scope id of this component when using scoped css encapsulation
|
||
|
|
* or using shadow dom but the browser doesn't support it
|
||
|
|
*/
|
||
|
|
['s-sc']?: string;
|
||
|
|
/**
|
||
|
|
* Hot Module Replacement, dev mode only
|
||
|
|
*/
|
||
|
|
['s-hmr']?: (versionId: string) => void;
|
||
|
|
/**
|
||
|
|
* Callback method for when HMR finishes
|
||
|
|
*/
|
||
|
|
['s-hmr-load']?: () => void;
|
||
|
|
['s-p']?: Promise<void>[];
|
||
|
|
componentOnReady?: () => Promise<this>;
|
||
|
|
}
|
||
|
|
export interface HydrateResults {
|
||
|
|
buildId: string;
|
||
|
|
diagnostics: Diagnostic[];
|
||
|
|
url: string;
|
||
|
|
host: string;
|
||
|
|
hostname: string;
|
||
|
|
href: string;
|
||
|
|
port: string;
|
||
|
|
pathname: string;
|
||
|
|
search: string;
|
||
|
|
hash: string;
|
||
|
|
html: string;
|
||
|
|
components: HydrateComponent[];
|
||
|
|
anchors: HydrateAnchorElement[];
|
||
|
|
imgs: HydrateImgElement[];
|
||
|
|
scripts: HydrateScriptElement[];
|
||
|
|
styles: HydrateStyleElement[];
|
||
|
|
staticData: HydrateStaticData[];
|
||
|
|
title: string;
|
||
|
|
hydratedCount: number;
|
||
|
|
httpStatus: number;
|
||
|
|
}
|
||
|
|
export interface HydrateComponent {
|
||
|
|
tag: string;
|
||
|
|
mode: string;
|
||
|
|
count: number;
|
||
|
|
depth: number;
|
||
|
|
}
|
||
|
|
export interface HydrateElement {
|
||
|
|
[attrName: string]: string | undefined;
|
||
|
|
}
|
||
|
|
export interface HydrateAnchorElement extends HydrateElement {
|
||
|
|
href?: string;
|
||
|
|
target?: string;
|
||
|
|
}
|
||
|
|
export interface HydrateImgElement extends HydrateElement {
|
||
|
|
src?: string;
|
||
|
|
}
|
||
|
|
export interface HydrateScriptElement extends HydrateElement {
|
||
|
|
src?: string;
|
||
|
|
type?: string;
|
||
|
|
}
|
||
|
|
export interface HydrateStyleElement extends HydrateElement {
|
||
|
|
href?: string;
|
||
|
|
}
|
||
|
|
export interface HydrateStaticData {
|
||
|
|
id: string;
|
||
|
|
type: string;
|
||
|
|
content: string;
|
||
|
|
}
|
||
|
|
export interface JsDoc {
|
||
|
|
name: string;
|
||
|
|
documentation: string;
|
||
|
|
type: string;
|
||
|
|
tags: JSDocTagInfo[];
|
||
|
|
default?: string;
|
||
|
|
parameters?: JsDoc[];
|
||
|
|
returns?: {
|
||
|
|
type: string;
|
||
|
|
documentation: string;
|
||
|
|
};
|
||
|
|
}
|
||
|
|
export interface JSDocTagInfo {
|
||
|
|
name: string;
|
||
|
|
text?: string;
|
||
|
|
}
|
||
|
|
export interface MinifyJsResult {
|
||
|
|
code: string;
|
||
|
|
sourceMap: any;
|
||
|
|
error: {
|
||
|
|
message: string;
|
||
|
|
filename: string;
|
||
|
|
line: number;
|
||
|
|
col: number;
|
||
|
|
pos: number;
|
||
|
|
};
|
||
|
|
}
|
||
|
|
export type ModuleMap = Map<string, Module>;
|
||
|
|
/**
|
||
|
|
* Stencil's Intermediate Representation (IR) of a module, bundling together
|
||
|
|
* various pieces of information like the classes declared within it, the path
|
||
|
|
* to the original source file, HTML tag names defined in the file, and so on.
|
||
|
|
*
|
||
|
|
* Note that this gets serialized/parsed as JSON and therefore cannot be a
|
||
|
|
* `Map` or a `Set`.
|
||
|
|
*/
|
||
|
|
export interface Module {
|
||
|
|
cmps: ComponentCompilerMeta[];
|
||
|
|
coreRuntimeApis: string[];
|
||
|
|
collectionName: string;
|
||
|
|
dtsFilePath: string;
|
||
|
|
excludeFromCollection: boolean;
|
||
|
|
externalImports: string[];
|
||
|
|
htmlAttrNames: string[];
|
||
|
|
htmlTagNames: string[];
|
||
|
|
htmlParts: string[];
|
||
|
|
isCollectionDependency: boolean;
|
||
|
|
isLegacy: boolean;
|
||
|
|
jsFilePath: string;
|
||
|
|
localImports: string[];
|
||
|
|
originalImports: string[];
|
||
|
|
originalCollectionComponentPath: string;
|
||
|
|
potentialCmpRefs: string[];
|
||
|
|
sourceFilePath: string;
|
||
|
|
staticSourceFile: any;
|
||
|
|
staticSourceFileText: string;
|
||
|
|
sourceMapPath: string;
|
||
|
|
sourceMapFileText: string;
|
||
|
|
hasVdomAttribute: boolean;
|
||
|
|
hasVdomClass: boolean;
|
||
|
|
hasVdomFunctional: boolean;
|
||
|
|
hasVdomKey: boolean;
|
||
|
|
hasVdomListener: boolean;
|
||
|
|
hasVdomPropOrAttr: boolean;
|
||
|
|
hasVdomRef: boolean;
|
||
|
|
hasVdomRender: boolean;
|
||
|
|
hasVdomStyle: boolean;
|
||
|
|
hasVdomText: boolean;
|
||
|
|
hasVdomXlink: boolean;
|
||
|
|
}
|
||
|
|
export interface Plugin {
|
||
|
|
name?: string;
|
||
|
|
pluginType?: string;
|
||
|
|
load?: (id: string, context: PluginCtx) => Promise<string> | string;
|
||
|
|
resolveId?: (importee: string, importer: string, context: PluginCtx) => Promise<string> | string;
|
||
|
|
transform?: (sourceText: string, id: string, context: PluginCtx) => Promise<PluginTransformResults> | PluginTransformResults | string;
|
||
|
|
}
|
||
|
|
export interface PluginTransformResults {
|
||
|
|
code?: string;
|
||
|
|
map?: string;
|
||
|
|
id?: string;
|
||
|
|
diagnostics?: Diagnostic[];
|
||
|
|
dependencies?: string[];
|
||
|
|
}
|
||
|
|
export interface PluginCtx {
|
||
|
|
config: Config;
|
||
|
|
sys: CompilerSystem;
|
||
|
|
fs: InMemoryFileSystem;
|
||
|
|
cache: Cache;
|
||
|
|
diagnostics: Diagnostic[];
|
||
|
|
}
|
||
|
|
export interface PrerenderUrlResults {
|
||
|
|
anchorUrls: string[];
|
||
|
|
diagnostics: Diagnostic[];
|
||
|
|
filePath: string;
|
||
|
|
}
|
||
|
|
export interface PrerenderUrlRequest {
|
||
|
|
appDir: string;
|
||
|
|
buildId: string;
|
||
|
|
baseUrl: string;
|
||
|
|
componentGraphPath: string;
|
||
|
|
devServerHostUrl: string;
|
||
|
|
hydrateAppFilePath: string;
|
||
|
|
isDebug: boolean;
|
||
|
|
prerenderConfigPath: string;
|
||
|
|
staticSite: boolean;
|
||
|
|
templateId: string;
|
||
|
|
url: string;
|
||
|
|
writeToFilePath: string;
|
||
|
|
}
|
||
|
|
export interface PrerenderManager {
|
||
|
|
config: Config;
|
||
|
|
prerenderUrlWorker: (prerenderRequest: PrerenderUrlRequest) => Promise<PrerenderUrlResults>;
|
||
|
|
devServerHostUrl: string;
|
||
|
|
diagnostics: Diagnostic[];
|
||
|
|
hydrateAppFilePath: string;
|
||
|
|
isDebug: boolean;
|
||
|
|
logCount: number;
|
||
|
|
outputTarget: OutputTargetWww;
|
||
|
|
prerenderConfig: PrerenderConfig;
|
||
|
|
prerenderConfigPath: string;
|
||
|
|
progressLogger?: LoggerLineUpdater;
|
||
|
|
resolve: Function;
|
||
|
|
staticSite: boolean;
|
||
|
|
templateId: string;
|
||
|
|
componentGraphPath: string;
|
||
|
|
urlsProcessing: Set<string>;
|
||
|
|
urlsPending: Set<string>;
|
||
|
|
urlsCompleted: Set<string>;
|
||
|
|
maxConcurrency: number;
|
||
|
|
}
|
||
|
|
/**
|
||
|
|
* Generic node that represents all of the
|
||
|
|
* different types of nodes we'd see when rendering
|
||
|
|
*/
|
||
|
|
export interface RenderNode extends HostElement {
|
||
|
|
/**
|
||
|
|
* Shadow root's host
|
||
|
|
*/
|
||
|
|
host?: Element;
|
||
|
|
/**
|
||
|
|
* Is Content Reference Node:
|
||
|
|
* This node is a content reference node.
|
||
|
|
*/
|
||
|
|
['s-cn']?: boolean;
|
||
|
|
/**
|
||
|
|
* Is a slot reference node:
|
||
|
|
* This is a node that represents where a slot
|
||
|
|
* was originally located.
|
||
|
|
*/
|
||
|
|
['s-sr']?: boolean;
|
||
|
|
/**
|
||
|
|
* Slot name
|
||
|
|
*/
|
||
|
|
['s-sn']?: string;
|
||
|
|
/**
|
||
|
|
* Host element tag name:
|
||
|
|
* The tag name of the host element that this
|
||
|
|
* node was created in.
|
||
|
|
*/
|
||
|
|
['s-hn']?: string;
|
||
|
|
/**
|
||
|
|
* Original Location Reference:
|
||
|
|
* A reference pointing to the comment
|
||
|
|
* which represents the original location
|
||
|
|
* before it was moved to its slot.
|
||
|
|
*/
|
||
|
|
['s-ol']?: RenderNode;
|
||
|
|
/**
|
||
|
|
* Node reference:
|
||
|
|
* This is a reference for a original location node
|
||
|
|
* back to the node that's been moved around.
|
||
|
|
*/
|
||
|
|
['s-nr']?: RenderNode;
|
||
|
|
/**
|
||
|
|
* Scope Id
|
||
|
|
*/
|
||
|
|
['s-si']?: string;
|
||
|
|
/**
|
||
|
|
* Host Id (hydrate only)
|
||
|
|
*/
|
||
|
|
['s-host-id']?: number;
|
||
|
|
/**
|
||
|
|
* Node Id (hydrate only)
|
||
|
|
*/
|
||
|
|
['s-node-id']?: number;
|
||
|
|
/**
|
||
|
|
* Used to know the components encapsulation.
|
||
|
|
* empty "" for shadow, "c" from scoped
|
||
|
|
*/
|
||
|
|
['s-en']?: '' | /*shadow*/ 'c';
|
||
|
|
}
|
||
|
|
export type LazyBundlesRuntimeData = LazyBundleRuntimeData[];
|
||
|
|
export type LazyBundleRuntimeData = [
|
||
|
|
/** bundleIds */
|
||
|
|
string,
|
||
|
|
ComponentRuntimeMetaCompact[]
|
||
|
|
];
|
||
|
|
export type ComponentRuntimeMetaCompact = [
|
||
|
|
/** flags */
|
||
|
|
number,
|
||
|
|
/** tagname */
|
||
|
|
string,
|
||
|
|
/** members */
|
||
|
|
{
|
||
|
|
[memberName: string]: ComponentRuntimeMember;
|
||
|
|
}?,
|
||
|
|
/** listeners */
|
||
|
|
ComponentRuntimeHostListener[]?
|
||
|
|
];
|
||
|
|
/**
|
||
|
|
* Runtime metadata for a Stencil component
|
||
|
|
*/
|
||
|
|
export interface ComponentRuntimeMeta {
|
||
|
|
/**
|
||
|
|
* This number is used to hold a series of bitflags for various features we
|
||
|
|
* support on components. The flags which this value is intended to store are
|
||
|
|
* documented in the {@link CMP_FLAGS} enum.
|
||
|
|
*/
|
||
|
|
$flags$: number;
|
||
|
|
/**
|
||
|
|
* Just what it says on the tin - the tag name for the component, as set in
|
||
|
|
* the `@Component` decorator.
|
||
|
|
*/
|
||
|
|
$tagName$: string;
|
||
|
|
/**
|
||
|
|
* A map of the component's members, which could include fields decorated
|
||
|
|
* with `@Prop`, `@State`, etc as well as methods.
|
||
|
|
*/
|
||
|
|
$members$?: ComponentRuntimeMembers;
|
||
|
|
/**
|
||
|
|
* Information about listeners on the component.
|
||
|
|
*/
|
||
|
|
$listeners$?: ComponentRuntimeHostListener[];
|
||
|
|
/**
|
||
|
|
* Tuples containing information about `@Prop` fields on the component which
|
||
|
|
* are set to be reflected (i.e. kept in sync) as HTML attributes when
|
||
|
|
* updated.
|
||
|
|
*/
|
||
|
|
$attrsToReflect$?: ComponentRuntimeReflectingAttr[];
|
||
|
|
/**
|
||
|
|
* Information about which class members have watchers attached on the component.
|
||
|
|
*/
|
||
|
|
$watchers$?: ComponentConstructorWatchers;
|
||
|
|
/**
|
||
|
|
* A bundle ID used for lazy loading.
|
||
|
|
*/
|
||
|
|
$lazyBundleId$?: string;
|
||
|
|
}
|
||
|
|
/**
|
||
|
|
* A mapping of the names of members on the component to some runtime-specific
|
||
|
|
* information about them.
|
||
|
|
*/
|
||
|
|
export interface ComponentRuntimeMembers {
|
||
|
|
[memberName: string]: ComponentRuntimeMember;
|
||
|
|
}
|
||
|
|
/**
|
||
|
|
* A tuple with information about a class member that's relevant at runtime.
|
||
|
|
* The fields are:
|
||
|
|
*
|
||
|
|
* 1. A number used to hold bitflags for component members. The bit flags which
|
||
|
|
* this is intended to store are documented in the {@link MEMBER_FLAGS} enum.
|
||
|
|
* 2. The attribute name to observe.
|
||
|
|
*/
|
||
|
|
export type ComponentRuntimeMember = [number, string?];
|
||
|
|
/**
|
||
|
|
* A tuple holding information about a host listener which is relevant at
|
||
|
|
* runtime. The field are:
|
||
|
|
*
|
||
|
|
* 1. A number used to hold bitflags for listeners. The bit flags which this is
|
||
|
|
* intended to store are documented in the {@link LISTENER_FLAGS} enum.
|
||
|
|
* 2. The event name.
|
||
|
|
* 3. The method name.
|
||
|
|
*/
|
||
|
|
export type ComponentRuntimeHostListener = [number, string, string];
|
||
|
|
/**
|
||
|
|
* A tuple containing information about props which are "reflected" at runtime,
|
||
|
|
* meaning that HTML attributes on the component instance are kept in sync with
|
||
|
|
* the prop value.
|
||
|
|
*
|
||
|
|
* The fields are:
|
||
|
|
*
|
||
|
|
* 1. the prop name
|
||
|
|
* 2. the prop attribute.
|
||
|
|
*/
|
||
|
|
export type ComponentRuntimeReflectingAttr = [string, string | undefined];
|
||
|
|
export type ModeBundleId = ModeBundleIds | string;
|
||
|
|
export interface ModeBundleIds {
|
||
|
|
[modeName: string]: string;
|
||
|
|
}
|
||
|
|
export type RuntimeRef = HostElement | {};
|
||
|
|
/**
|
||
|
|
* Interface used to track an Element, it's virtual Node (`VNode`), and other data
|
||
|
|
*/
|
||
|
|
export interface HostRef {
|
||
|
|
$ancestorComponent$?: HostElement;
|
||
|
|
$flags$: number;
|
||
|
|
$cmpMeta$: ComponentRuntimeMeta;
|
||
|
|
$hostElement$?: HostElement;
|
||
|
|
$instanceValues$?: Map<string, any>;
|
||
|
|
$lazyInstance$?: ComponentInterface;
|
||
|
|
$onReadyPromise$?: Promise<any>;
|
||
|
|
$onReadyResolve$?: (elm: any) => void;
|
||
|
|
$onInstancePromise$?: Promise<any>;
|
||
|
|
$onInstanceResolve$?: (elm: any) => void;
|
||
|
|
$onRenderResolve$?: () => void;
|
||
|
|
$vnode$?: VNode;
|
||
|
|
$queuedListeners$?: [string, any][];
|
||
|
|
$rmListeners$?: (() => void)[];
|
||
|
|
$modeName$?: string;
|
||
|
|
$renderCount$?: number;
|
||
|
|
}
|
||
|
|
export interface PlatformRuntime {
|
||
|
|
$cssShim$?: CssVarShim;
|
||
|
|
$flags$: number;
|
||
|
|
$orgLocNodes$?: Map<string, RenderNode>;
|
||
|
|
$resourcesUrl$: string;
|
||
|
|
/**
|
||
|
|
* The nonce value to be applied to all script/style tags at runtime.
|
||
|
|
* If `null`, the nonce attribute will not be applied.
|
||
|
|
*/
|
||
|
|
$nonce$?: string | null;
|
||
|
|
jmp: (c: Function) => any;
|
||
|
|
raf: (c: FrameRequestCallback) => number;
|
||
|
|
ael: (el: EventTarget, eventName: string, listener: EventListenerOrEventListenerObject, options: boolean | AddEventListenerOptions) => void;
|
||
|
|
rel: (el: EventTarget, eventName: string, listener: EventListenerOrEventListenerObject, options: boolean | AddEventListenerOptions) => void;
|
||
|
|
ce: (eventName: string, opts?: any) => CustomEvent;
|
||
|
|
}
|
||
|
|
export type RefMap = WeakMap<any, HostRef>;
|
||
|
|
export type StyleMap = Map<string, CSSStyleSheet | string>;
|
||
|
|
export type RootAppliedStyleMap = WeakMap<Element, Set<string>>;
|
||
|
|
export type AppliedStyleMap = Set<string>;
|
||
|
|
export type ActivelyProcessingCmpMap = Set<Element>;
|
||
|
|
export interface ScreenshotConnector {
|
||
|
|
initBuild(opts: ScreenshotConnectorOptions): Promise<void>;
|
||
|
|
completeBuild(masterBuild: ScreenshotBuild): Promise<ScreenshotBuildResults>;
|
||
|
|
getMasterBuild(): Promise<ScreenshotBuild>;
|
||
|
|
pullMasterBuild(): Promise<void>;
|
||
|
|
publishBuild(buildResults: ScreenshotBuildResults): Promise<ScreenshotBuildResults>;
|
||
|
|
getScreenshotCache(): Promise<ScreenshotCache>;
|
||
|
|
updateScreenshotCache(screenshotCache: ScreenshotCache, buildResults: ScreenshotBuildResults): Promise<ScreenshotCache>;
|
||
|
|
generateJsonpDataUris(build: ScreenshotBuild): Promise<void>;
|
||
|
|
sortScreenshots(screenshots: Screenshot[]): Screenshot[];
|
||
|
|
toJson(masterBuild: ScreenshotBuild, screenshotCache: ScreenshotCache): string;
|
||
|
|
}
|
||
|
|
export interface ScreenshotBuildResults {
|
||
|
|
appNamespace: string;
|
||
|
|
masterBuild: ScreenshotBuild;
|
||
|
|
currentBuild: ScreenshotBuild;
|
||
|
|
compare: ScreenshotCompareResults;
|
||
|
|
}
|
||
|
|
export interface ScreenshotCompareResults {
|
||
|
|
id: string;
|
||
|
|
a: {
|
||
|
|
id: string;
|
||
|
|
message: string;
|
||
|
|
author: string;
|
||
|
|
url: string;
|
||
|
|
previewUrl: string;
|
||
|
|
};
|
||
|
|
b: {
|
||
|
|
id: string;
|
||
|
|
message: string;
|
||
|
|
author: string;
|
||
|
|
url: string;
|
||
|
|
previewUrl: string;
|
||
|
|
};
|
||
|
|
timestamp: number;
|
||
|
|
url: string;
|
||
|
|
appNamespace: string;
|
||
|
|
diffs: ScreenshotDiff[];
|
||
|
|
}
|
||
|
|
export interface ScreenshotConnectorOptions {
|
||
|
|
buildId: string;
|
||
|
|
buildMessage: string;
|
||
|
|
buildAuthor?: string;
|
||
|
|
buildUrl?: string;
|
||
|
|
previewUrl?: string;
|
||
|
|
appNamespace: string;
|
||
|
|
buildTimestamp: number;
|
||
|
|
logger: Logger;
|
||
|
|
rootDir: string;
|
||
|
|
cacheDir: string;
|
||
|
|
packageDir: string;
|
||
|
|
screenshotDirName?: string;
|
||
|
|
imagesDirName?: string;
|
||
|
|
buildsDirName?: string;
|
||
|
|
currentBuildDir?: string;
|
||
|
|
updateMaster?: boolean;
|
||
|
|
allowableMismatchedPixels?: number;
|
||
|
|
allowableMismatchedRatio?: number;
|
||
|
|
pixelmatchThreshold?: number;
|
||
|
|
waitBeforeScreenshot?: number;
|
||
|
|
pixelmatchModulePath?: string;
|
||
|
|
}
|
||
|
|
export interface ScreenshotBuildData {
|
||
|
|
buildId: string;
|
||
|
|
rootDir: string;
|
||
|
|
screenshotDir: string;
|
||
|
|
imagesDir: string;
|
||
|
|
buildsDir: string;
|
||
|
|
currentBuildDir: string;
|
||
|
|
updateMaster: boolean;
|
||
|
|
allowableMismatchedPixels: number;
|
||
|
|
allowableMismatchedRatio: number;
|
||
|
|
pixelmatchThreshold: number;
|
||
|
|
masterScreenshots: {
|
||
|
|
[screenshotId: string]: string;
|
||
|
|
};
|
||
|
|
cache: {
|
||
|
|
[cacheKey: string]: number;
|
||
|
|
};
|
||
|
|
timeoutBeforeScreenshot: number;
|
||
|
|
pixelmatchModulePath: string;
|
||
|
|
}
|
||
|
|
export interface PixelMatchInput {
|
||
|
|
imageAPath: string;
|
||
|
|
imageBPath: string;
|
||
|
|
width: number;
|
||
|
|
height: number;
|
||
|
|
pixelmatchThreshold: number;
|
||
|
|
}
|
||
|
|
export interface ScreenshotBuild {
|
||
|
|
id: string;
|
||
|
|
message: string;
|
||
|
|
author?: string;
|
||
|
|
url?: string;
|
||
|
|
previewUrl?: string;
|
||
|
|
appNamespace: string;
|
||
|
|
timestamp: number;
|
||
|
|
screenshots: Screenshot[];
|
||
|
|
}
|
||
|
|
export interface ScreenshotCache {
|
||
|
|
timestamp?: number;
|
||
|
|
lastBuildId?: string;
|
||
|
|
size?: number;
|
||
|
|
items?: {
|
||
|
|
/**
|
||
|
|
* Cache key
|
||
|
|
*/
|
||
|
|
key: string;
|
||
|
|
/**
|
||
|
|
* Timestamp used to remove the oldest data
|
||
|
|
*/
|
||
|
|
ts: number;
|
||
|
|
/**
|
||
|
|
* Mismatched pixels
|
||
|
|
*/
|
||
|
|
mp: number;
|
||
|
|
}[];
|
||
|
|
}
|
||
|
|
export interface Screenshot {
|
||
|
|
id: string;
|
||
|
|
desc?: string;
|
||
|
|
image: string;
|
||
|
|
device?: string;
|
||
|
|
userAgent?: string;
|
||
|
|
width?: number;
|
||
|
|
height?: number;
|
||
|
|
deviceScaleFactor?: number;
|
||
|
|
hasTouch?: boolean;
|
||
|
|
isLandscape?: boolean;
|
||
|
|
isMobile?: boolean;
|
||
|
|
testPath?: string;
|
||
|
|
diff?: ScreenshotDiff;
|
||
|
|
}
|
||
|
|
export interface ScreenshotDiff {
|
||
|
|
mismatchedPixels: number;
|
||
|
|
id?: string;
|
||
|
|
desc?: string;
|
||
|
|
imageA?: string;
|
||
|
|
imageB?: string;
|
||
|
|
device?: string;
|
||
|
|
userAgent?: string;
|
||
|
|
width?: number;
|
||
|
|
height?: number;
|
||
|
|
deviceScaleFactor?: number;
|
||
|
|
hasTouch?: boolean;
|
||
|
|
isLandscape?: boolean;
|
||
|
|
isMobile?: boolean;
|
||
|
|
allowableMismatchedPixels: number;
|
||
|
|
allowableMismatchedRatio: number;
|
||
|
|
testPath?: string;
|
||
|
|
cacheKey?: string;
|
||
|
|
}
|
||
|
|
export interface ScreenshotOptions {
|
||
|
|
/**
|
||
|
|
* When true, takes a screenshot of the full scrollable page.
|
||
|
|
* Default: `false`
|
||
|
|
*/
|
||
|
|
fullPage?: boolean;
|
||
|
|
/**
|
||
|
|
* An object which specifies clipping region of the page.
|
||
|
|
*/
|
||
|
|
clip?: ScreenshotBoundingBox;
|
||
|
|
/**
|
||
|
|
* Hides default white background and allows capturing screenshots with transparency.
|
||
|
|
* Default: `false`
|
||
|
|
*/
|
||
|
|
omitBackground?: boolean;
|
||
|
|
/**
|
||
|
|
* Matching threshold, ranges from `0` to 1. Smaller values make the comparison
|
||
|
|
* more sensitive. Defaults to the testing config `pixelmatchThreshold` value;
|
||
|
|
*/
|
||
|
|
pixelmatchThreshold?: number;
|
||
|
|
}
|
||
|
|
export interface ScreenshotBoundingBox {
|
||
|
|
/**
|
||
|
|
* The x-coordinate of top-left corner.
|
||
|
|
*/
|
||
|
|
x: number;
|
||
|
|
/**
|
||
|
|
* The y-coordinate of top-left corner.
|
||
|
|
*/
|
||
|
|
y: number;
|
||
|
|
/**
|
||
|
|
* The width in pixels.
|
||
|
|
*/
|
||
|
|
width: number;
|
||
|
|
/**
|
||
|
|
* The height in pixels.
|
||
|
|
*/
|
||
|
|
height: number;
|
||
|
|
}
|
||
|
|
export interface ServerConfigInput {
|
||
|
|
app: ExpressApp;
|
||
|
|
configPath?: string;
|
||
|
|
}
|
||
|
|
export interface ServerConfigOutput {
|
||
|
|
config: Config;
|
||
|
|
logger: Logger;
|
||
|
|
wwwDir: string;
|
||
|
|
destroy?: () => void;
|
||
|
|
}
|
||
|
|
export interface ExpressApp {
|
||
|
|
use?: Function;
|
||
|
|
}
|
||
|
|
export interface MiddlewareConfig {
|
||
|
|
config: string | Config;
|
||
|
|
destroy?: () => void;
|
||
|
|
}
|
||
|
|
export interface StyleCompiler {
|
||
|
|
modeName: string;
|
||
|
|
styleId: string;
|
||
|
|
styleStr: string;
|
||
|
|
styleIdentifier: string;
|
||
|
|
externalStyles: ExternalStyleCompiler[];
|
||
|
|
}
|
||
|
|
export interface ExternalStyleCompiler {
|
||
|
|
absolutePath: string;
|
||
|
|
relativePath: string;
|
||
|
|
originalComponentPath: string;
|
||
|
|
}
|
||
|
|
export interface CompilerModeStyles {
|
||
|
|
[modeName: string]: string[];
|
||
|
|
}
|
||
|
|
export interface CssImportData {
|
||
|
|
srcImport: string;
|
||
|
|
updatedImport?: string;
|
||
|
|
url: string;
|
||
|
|
filePath: string;
|
||
|
|
altFilePath?: string;
|
||
|
|
styleText?: string | null;
|
||
|
|
}
|
||
|
|
export interface CssToEsmImportData {
|
||
|
|
srcImportText: string;
|
||
|
|
varName: string;
|
||
|
|
url: string;
|
||
|
|
filePath: string;
|
||
|
|
}
|
||
|
|
/**
|
||
|
|
* Input CSS to be transformed into ESM
|
||
|
|
*/
|
||
|
|
export interface TransformCssToEsmInput {
|
||
|
|
input: string;
|
||
|
|
module?: 'cjs' | 'esm' | string;
|
||
|
|
file?: string;
|
||
|
|
tag?: string;
|
||
|
|
encapsulation?: string;
|
||
|
|
mode?: string;
|
||
|
|
commentOriginalSelector?: boolean;
|
||
|
|
sourceMap?: boolean;
|
||
|
|
minify?: boolean;
|
||
|
|
docs?: boolean;
|
||
|
|
autoprefixer?: any;
|
||
|
|
styleImportData?: string;
|
||
|
|
}
|
||
|
|
export interface TransformCssToEsmOutput {
|
||
|
|
styleText: string;
|
||
|
|
output: string;
|
||
|
|
map: any;
|
||
|
|
diagnostics: Diagnostic[];
|
||
|
|
defaultVarName: string;
|
||
|
|
styleDocs: StyleDoc[];
|
||
|
|
imports: {
|
||
|
|
varName: string;
|
||
|
|
importPath: string;
|
||
|
|
}[];
|
||
|
|
}
|
||
|
|
export interface PackageJsonData {
|
||
|
|
name?: string;
|
||
|
|
version?: string;
|
||
|
|
main?: string;
|
||
|
|
description?: string;
|
||
|
|
bin?: {
|
||
|
|
[key: string]: string;
|
||
|
|
};
|
||
|
|
browser?: string;
|
||
|
|
module?: string;
|
||
|
|
'jsnext:main'?: string;
|
||
|
|
'collection:main'?: string;
|
||
|
|
unpkg?: string;
|
||
|
|
collection?: string;
|
||
|
|
types?: string;
|
||
|
|
files?: string[];
|
||
|
|
['dist-tags']?: {
|
||
|
|
latest: string;
|
||
|
|
};
|
||
|
|
dependencies?: {
|
||
|
|
[moduleId: string]: string;
|
||
|
|
};
|
||
|
|
devDependencies?: {
|
||
|
|
[moduleId: string]: string;
|
||
|
|
};
|
||
|
|
repository?: {
|
||
|
|
type?: string;
|
||
|
|
url?: string;
|
||
|
|
};
|
||
|
|
private?: boolean;
|
||
|
|
scripts?: {
|
||
|
|
[runName: string]: string;
|
||
|
|
};
|
||
|
|
license?: string;
|
||
|
|
keywords?: string[];
|
||
|
|
}
|
||
|
|
export interface Workbox {
|
||
|
|
generateSW(swConfig: any): Promise<any>;
|
||
|
|
generateFileManifest(): Promise<any>;
|
||
|
|
getFileManifestEntries(): Promise<any>;
|
||
|
|
injectManifest(swConfig: any): Promise<any>;
|
||
|
|
copyWorkboxLibraries(wwwDir: string): Promise<any>;
|
||
|
|
}
|
||
|
|
export interface Url {
|
||
|
|
href?: string;
|
||
|
|
protocol?: string;
|
||
|
|
auth?: string;
|
||
|
|
hostname?: string;
|
||
|
|
host?: string;
|
||
|
|
port?: string;
|
||
|
|
pathname?: string;
|
||
|
|
path?: string;
|
||
|
|
search?: string;
|
||
|
|
query?: string | any;
|
||
|
|
hash?: string;
|
||
|
|
}
|
||
|
|
declare global {
|
||
|
|
namespace jest {
|
||
|
|
interface Matchers<R, T> {
|
||
|
|
/**
|
||
|
|
* Compares HTML, but first normalizes the HTML so all
|
||
|
|
* whitespace, attribute order and css class order are
|
||
|
|
* the same. When given an element, it will compare
|
||
|
|
* the element's `outerHTML`. When given a Document Fragment,
|
||
|
|
* such as a Shadow Root, it'll compare its `innerHTML`.
|
||
|
|
* Otherwise it'll compare two strings representing HTML.
|
||
|
|
*/
|
||
|
|
toEqualHtml(expectHtml: string): void;
|
||
|
|
/**
|
||
|
|
* Compares HTML light DOKM only, but first normalizes the HTML so all
|
||
|
|
* whitespace, attribute order and css class order are
|
||
|
|
* the same. When given an element, it will compare
|
||
|
|
* the element's `outerHTML`. When given a Document Fragment,
|
||
|
|
* such as a Shadow Root, it'll compare its `innerHTML`.
|
||
|
|
* Otherwise it'll compare two strings representing HTML.
|
||
|
|
*/
|
||
|
|
toEqualLightHtml(expectLightHtml: string): void;
|
||
|
|
/**
|
||
|
|
* When given an element, it'll compare the element's
|
||
|
|
* `textContent`. Otherwise it'll compare two strings. This
|
||
|
|
* matcher will also `trim()` each string before comparing.
|
||
|
|
*/
|
||
|
|
toEqualText(expectTextContent: string): void;
|
||
|
|
/**
|
||
|
|
* Checks if an element simply has the attribute. It does
|
||
|
|
* not check any values of the attribute
|
||
|
|
*/
|
||
|
|
toHaveAttribute(expectAttrName: string): void;
|
||
|
|
/**
|
||
|
|
* Checks if an element's attribute value equals the expect value.
|
||
|
|
*/
|
||
|
|
toEqualAttribute(expectAttrName: string, expectAttrValue: any): void;
|
||
|
|
/**
|
||
|
|
* Checks if an element's has each of the expected attribute
|
||
|
|
* names and values.
|
||
|
|
*/
|
||
|
|
toEqualAttributes(expectAttrs: {
|
||
|
|
[attrName: string]: any;
|
||
|
|
}): void;
|
||
|
|
/**
|
||
|
|
* Checks if an element has the expected css class.
|
||
|
|
*/
|
||
|
|
toHaveClass(expectClassName: string): void;
|
||
|
|
/**
|
||
|
|
* Checks if an element has each of the expected css classes
|
||
|
|
* in the array.
|
||
|
|
*/
|
||
|
|
toHaveClasses(expectClassNames: string[]): void;
|
||
|
|
/**
|
||
|
|
* Checks if an element has the exact same css classes
|
||
|
|
* as the expected array of css classes.
|
||
|
|
*/
|
||
|
|
toMatchClasses(expectClassNames: string[]): void;
|
||
|
|
/**
|
||
|
|
* When given an EventSpy, checks if the event has been
|
||
|
|
* received or not.
|
||
|
|
*/
|
||
|
|
toHaveReceivedEvent(): void;
|
||
|
|
/**
|
||
|
|
* When given an EventSpy, checks how many times the
|
||
|
|
* event has been received.
|
||
|
|
*/
|
||
|
|
toHaveReceivedEventTimes(count: number): void;
|
||
|
|
/**
|
||
|
|
* When given an EventSpy, checks the event has
|
||
|
|
* received the correct custom event `detail` data.
|
||
|
|
*/
|
||
|
|
toHaveReceivedEventDetail(eventDetail: any): void;
|
||
|
|
/**
|
||
|
|
* When given an EventSpy, checks the first event has
|
||
|
|
* received the correct custom event `detail` data.
|
||
|
|
*/
|
||
|
|
toHaveFirstReceivedEventDetail(eventDetail: any): void;
|
||
|
|
/**
|
||
|
|
* When given an EventSpy, checks the event at an index
|
||
|
|
* has received the correct custom event `detail` data.
|
||
|
|
*/
|
||
|
|
toHaveNthReceivedEventDetail(index: number, eventDetail: any): void;
|
||
|
|
/**
|
||
|
|
* Used to evaluate the results of `compareScreenshot()`, such as
|
||
|
|
* `expect(compare).toMatchScreenshot()`. The `allowableMismatchedRatio`
|
||
|
|
* value from the testing config is used by default if
|
||
|
|
* `MatchScreenshotOptions` were not provided.
|
||
|
|
*/
|
||
|
|
toMatchScreenshot(opts?: MatchScreenshotOptions): void;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
export interface MatchScreenshotOptions {
|
||
|
|
/**
|
||
|
|
* The `allowableMismatchedPixels` value is the total number of pixels
|
||
|
|
* that can be mismatched until the test fails. For example, if the value
|
||
|
|
* is `100`, and if there were `101` pixels that were mismatched then the
|
||
|
|
* test would fail. If the `allowableMismatchedRatio` is provided it will
|
||
|
|
* take precedence, otherwise `allowableMismatchedPixels` will be used.
|
||
|
|
*/
|
||
|
|
allowableMismatchedPixels?: number;
|
||
|
|
/**
|
||
|
|
* The `allowableMismatchedRatio` ranges from `0` to `1` and is used to
|
||
|
|
* determine an acceptable ratio of pixels that can be mismatched before
|
||
|
|
* the image is considered to have changes. Realistically, two screenshots
|
||
|
|
* representing the same content may have a small number of pixels that
|
||
|
|
* are not identical due to anti-aliasing, which is perfectly normal. The
|
||
|
|
* `allowableMismatchedRatio` is the number of pixels that were mismatched,
|
||
|
|
* divided by the total number of pixels in the screenshot. For example,
|
||
|
|
* a ratio value of `0.06` means 6% of the pixels can be mismatched before
|
||
|
|
* the image is considered to have changes. If the `allowableMismatchedRatio`
|
||
|
|
* is provided it will take precedence, otherwise `allowableMismatchedPixels`
|
||
|
|
* will be used.
|
||
|
|
*/
|
||
|
|
allowableMismatchedRatio?: number;
|
||
|
|
}
|
||
|
|
export interface EventSpy {
|
||
|
|
events: SerializedEvent[];
|
||
|
|
eventName: string;
|
||
|
|
firstEvent: SerializedEvent;
|
||
|
|
lastEvent: SerializedEvent;
|
||
|
|
length: number;
|
||
|
|
next(): Promise<{
|
||
|
|
done: boolean;
|
||
|
|
value: SerializedEvent;
|
||
|
|
}>;
|
||
|
|
}
|
||
|
|
export interface SerializedEvent {
|
||
|
|
bubbles: boolean;
|
||
|
|
cancelBubble: boolean;
|
||
|
|
cancelable: boolean;
|
||
|
|
composed: boolean;
|
||
|
|
currentTarget: any;
|
||
|
|
defaultPrevented: boolean;
|
||
|
|
detail: any;
|
||
|
|
eventPhase: any;
|
||
|
|
isTrusted: boolean;
|
||
|
|
returnValue: any;
|
||
|
|
srcElement: any;
|
||
|
|
target: any;
|
||
|
|
timeStamp: number;
|
||
|
|
type: string;
|
||
|
|
isSerializedEvent: boolean;
|
||
|
|
}
|
||
|
|
export interface EventInitDict {
|
||
|
|
bubbles?: boolean;
|
||
|
|
cancelable?: boolean;
|
||
|
|
composed?: boolean;
|
||
|
|
detail?: any;
|
||
|
|
}
|
||
|
|
export interface JestEnvironmentGlobal {
|
||
|
|
__NEW_TEST_PAGE__: () => Promise<any>;
|
||
|
|
__CLOSE_OPEN_PAGES__: () => Promise<any>;
|
||
|
|
Context: any;
|
||
|
|
loadTestWindow: (testWindow: any) => Promise<void>;
|
||
|
|
h: any;
|
||
|
|
resourcesUrl: string;
|
||
|
|
currentSpec?: {
|
||
|
|
id: string;
|
||
|
|
description: string;
|
||
|
|
fullName: string;
|
||
|
|
testPath: string;
|
||
|
|
};
|
||
|
|
env: {
|
||
|
|
[prop: string]: string;
|
||
|
|
};
|
||
|
|
screenshotDescriptions: Set<string>;
|
||
|
|
}
|
||
|
|
export interface E2EProcessEnv {
|
||
|
|
STENCIL_COMMIT_ID?: string;
|
||
|
|
STENCIL_COMMIT_MESSAGE?: string;
|
||
|
|
STENCIL_REPO_URL?: string;
|
||
|
|
STENCIL_SCREENSHOT_CONNECTOR?: string;
|
||
|
|
STENCIL_SCREENSHOT_SERVER?: string;
|
||
|
|
__STENCIL_EMULATE_CONFIGS__?: string;
|
||
|
|
__STENCIL_ENV__?: string;
|
||
|
|
__STENCIL_EMULATE__?: string;
|
||
|
|
__STENCIL_BROWSER_URL__?: string;
|
||
|
|
__STENCIL_APP_SCRIPT_URL__?: string;
|
||
|
|
__STENCIL_APP_STYLE_URL__?: string;
|
||
|
|
__STENCIL_BROWSER_WS_ENDPOINT__?: string;
|
||
|
|
__STENCIL_BROWSER_WAIT_UNTIL?: string;
|
||
|
|
__STENCIL_SCREENSHOT__?: 'true';
|
||
|
|
__STENCIL_SCREENSHOT_BUILD__?: string;
|
||
|
|
__STENCIL_E2E_TESTS__?: 'true';
|
||
|
|
__STENCIL_E2E_DEVTOOLS__?: 'true';
|
||
|
|
__STENCIL_SPEC_TESTS__?: 'true';
|
||
|
|
__STENCIL_PUPPETEER_MODULE__?: string;
|
||
|
|
__STENCIL_DEFAULT_TIMEOUT__?: string;
|
||
|
|
}
|
||
|
|
export interface AnyHTMLElement extends HTMLElement {
|
||
|
|
[key: string]: any;
|
||
|
|
}
|
||
|
|
export interface SpecPage {
|
||
|
|
/**
|
||
|
|
* Mocked testing `document.body`.
|
||
|
|
*/
|
||
|
|
body: HTMLBodyElement;
|
||
|
|
/**
|
||
|
|
* Mocked testing `document`.
|
||
|
|
*/
|
||
|
|
doc: HTMLDocument;
|
||
|
|
/**
|
||
|
|
* The first component found within the mocked `document.body`. If a component isn't found, then it'll return `document.body.firstElementChild`.
|
||
|
|
*/
|
||
|
|
root?: AnyHTMLElement;
|
||
|
|
/**
|
||
|
|
* Similar to `root`, except returns the component instance. If a root component was not found it'll return `null`.
|
||
|
|
*/
|
||
|
|
rootInstance?: any;
|
||
|
|
/**
|
||
|
|
* Convenience function to set `document.body.innerHTML` and `waitForChanges()`. Function argument should be an html string.
|
||
|
|
*/
|
||
|
|
setContent: (html: string) => Promise<any>;
|
||
|
|
/**
|
||
|
|
* After changes have been made to a component, such as a update to a property or attribute, the test page does not automatically apply the changes. In order to wait for, and apply the update, call `await page.waitForChanges()`.
|
||
|
|
*/
|
||
|
|
waitForChanges: () => Promise<any>;
|
||
|
|
/**
|
||
|
|
* Mocked testing `window`.
|
||
|
|
*/
|
||
|
|
win: Window;
|
||
|
|
build: BuildConditionals;
|
||
|
|
flushLoadModule: (bundleId?: string) => Promise<any>;
|
||
|
|
flushQueue: () => Promise<any>;
|
||
|
|
styles: Map<string, string>;
|
||
|
|
}
|
||
|
|
export interface NewSpecPageOptions {
|
||
|
|
/**
|
||
|
|
* An array of components to test. Component classes can be imported into the spec file, then their reference should be added to the `component` array in order to be used throughout the test.
|
||
|
|
*/
|
||
|
|
components: any[];
|
||
|
|
/**
|
||
|
|
* Sets the mocked `document.cookie`.
|
||
|
|
*/
|
||
|
|
cookie?: string;
|
||
|
|
/**
|
||
|
|
* Sets the mocked `dir` attribute on `<html>`.
|
||
|
|
*/
|
||
|
|
direction?: string;
|
||
|
|
flushQueue?: boolean;
|
||
|
|
/**
|
||
|
|
* The initial HTML used to generate the test. This can be useful to construct a collection of components working together, and assign HTML attributes. This value sets the mocked `document.body.innerHTML`.
|
||
|
|
*/
|
||
|
|
html?: string;
|
||
|
|
/**
|
||
|
|
* The initial JSX used to generate the test.
|
||
|
|
* Use `template` when you want to initialize a component using their properties, instead of their HTML attributes.
|
||
|
|
* It will render the specified template (JSX) into `document.body`.
|
||
|
|
*/
|
||
|
|
template?: () => any;
|
||
|
|
/**
|
||
|
|
* Sets the mocked `lang` attribute on `<html>`.
|
||
|
|
*/
|
||
|
|
language?: string;
|
||
|
|
/**
|
||
|
|
* Useful for debugging hydrating components client-side. Sets that the `html` option already includes annotated prerender attributes and comments.
|
||
|
|
*/
|
||
|
|
hydrateClientSide?: boolean;
|
||
|
|
/**
|
||
|
|
* Useful for debugging hydrating components server-side. The output HTML will also include prerender annotations.
|
||
|
|
*/
|
||
|
|
hydrateServerSide?: boolean;
|
||
|
|
/**
|
||
|
|
* Sets the mocked `document.referrer`.
|
||
|
|
*/
|
||
|
|
referrer?: string;
|
||
|
|
/**
|
||
|
|
* Manually set if the mocked document supports Shadow DOM or not. Default is `true`.
|
||
|
|
*/
|
||
|
|
supportsShadowDom?: boolean;
|
||
|
|
/**
|
||
|
|
* When a component is prerendered it includes HTML annotations, such as `s-id` attributes and `<!-t.0->` comments. This information is used by clientside hydrating. Default is `false`.
|
||
|
|
*/
|
||
|
|
includeAnnotations?: boolean;
|
||
|
|
/**
|
||
|
|
* Sets the mocked browser's `location.href`.
|
||
|
|
*/
|
||
|
|
url?: string;
|
||
|
|
/**
|
||
|
|
* Sets the mocked browser's `navigator.userAgent`.
|
||
|
|
*/
|
||
|
|
userAgent?: string;
|
||
|
|
/**
|
||
|
|
* By default, any changes to component properties and attributes must `page.waitForChanges()` in order to test the updates. As an option, `autoAppluChanges` continuously flushes the queue on the background. Default is `false`.
|
||
|
|
*/
|
||
|
|
autoApplyChanges?: boolean;
|
||
|
|
/**
|
||
|
|
* By default, styles are not attached to the DOM and they are not reflected in the serialized HTML.
|
||
|
|
* Setting this option to `true` will include the component's styles in the serializable output.
|
||
|
|
*/
|
||
|
|
attachStyles?: boolean;
|
||
|
|
strictBuild?: boolean;
|
||
|
|
/**
|
||
|
|
* Default values to be set on the platform runtime object (@see PlatformRuntime) when creating
|
||
|
|
* the spec page.
|
||
|
|
*/
|
||
|
|
platform?: Partial<PlatformRuntime>;
|
||
|
|
}
|
||
|
|
/**
|
||
|
|
* A record of `TypesMemberNameData` entities.
|
||
|
|
*
|
||
|
|
* Each key in this record is intended to be the path to a file that declares one or more types used by a component.
|
||
|
|
* However, this is not enforced by the type system - users of this interface should not make any assumptions regarding
|
||
|
|
* the format of the path used as a key (relative vs. absolute)
|
||
|
|
*/
|
||
|
|
export interface TypesImportData {
|
||
|
|
[key: string]: TypesMemberNameData[];
|
||
|
|
}
|
||
|
|
/**
|
||
|
|
* A type describing how Stencil may alias an imported type to avoid naming collisions when performing operations such
|
||
|
|
* as generating `components.d.ts` files.
|
||
|
|
*/
|
||
|
|
export interface TypesMemberNameData {
|
||
|
|
/**
|
||
|
|
* The name of the type as it's used within a file.
|
||
|
|
*/
|
||
|
|
localName: string;
|
||
|
|
/**
|
||
|
|
* An alias that Stencil may apply to the `localName` to avoid naming collisions. This name does not appear in the
|
||
|
|
* file that is using `localName`.
|
||
|
|
*/
|
||
|
|
importName?: string;
|
||
|
|
}
|
||
|
|
export interface TypesModule {
|
||
|
|
isDep: boolean;
|
||
|
|
tagName: string;
|
||
|
|
tagNameAsPascal: string;
|
||
|
|
htmlElementName: string;
|
||
|
|
component: string;
|
||
|
|
jsx: string;
|
||
|
|
element: string;
|
||
|
|
}
|
||
|
|
export type TypeInfo = {
|
||
|
|
name: string;
|
||
|
|
type: string;
|
||
|
|
optional: boolean;
|
||
|
|
required: boolean;
|
||
|
|
internal: boolean;
|
||
|
|
jsdoc?: string;
|
||
|
|
}[];
|
||
|
|
export interface Hyperscript {
|
||
|
|
(sel: any): VNode;
|
||
|
|
(sel: Node, data: VNodeData): VNode;
|
||
|
|
(sel: any, data: VNodeData): VNode;
|
||
|
|
(sel: any, text: string): VNode;
|
||
|
|
(sel: any, children: Array<VNode | undefined | null>): VNode;
|
||
|
|
(sel: any, data: VNodeData, text: string): VNode;
|
||
|
|
(sel: any, data: VNodeData, children: Array<VNode | undefined | null>): VNode;
|
||
|
|
(sel: any, data: VNodeData, children: VNode): VNode;
|
||
|
|
}
|
||
|
|
export type ChildType = VNode | number | string;
|
||
|
|
export type PropsType = VNodeProdData | number | string | null;
|
||
|
|
export interface VNodeProdData {
|
||
|
|
key?: string | number;
|
||
|
|
class?: {
|
||
|
|
[className: string]: boolean;
|
||
|
|
} | string;
|
||
|
|
className?: {
|
||
|
|
[className: string]: boolean;
|
||
|
|
} | string;
|
||
|
|
style?: any;
|
||
|
|
[key: string]: any;
|
||
|
|
}
|
||
|
|
export interface CompilerWorkerContext {
|
||
|
|
optimizeCss(inputOpts: OptimizeCssInput): Promise<OptimizeCssOutput>;
|
||
|
|
prepareModule(input: string, minifyOpts: any, transpile: boolean, inlineHelpers: boolean): Promise<{
|
||
|
|
output: string;
|
||
|
|
diagnostics: Diagnostic[];
|
||
|
|
sourceMap?: SourceMap;
|
||
|
|
}>;
|
||
|
|
prerenderWorker(prerenderRequest: PrerenderUrlRequest): Promise<PrerenderUrlResults>;
|
||
|
|
transformCssToEsm(input: TransformCssToEsmInput): Promise<TransformCssToEsmOutput>;
|
||
|
|
}
|
||
|
|
export interface MsgToWorker {
|
||
|
|
stencilId: number;
|
||
|
|
args: any[];
|
||
|
|
}
|
||
|
|
export interface MsgFromWorker {
|
||
|
|
stencilId?: number;
|
||
|
|
stencilRtnValue: any;
|
||
|
|
stencilRtnError: string;
|
||
|
|
}
|
||
|
|
export interface CompilerWorkerTask {
|
||
|
|
stencilId?: number;
|
||
|
|
inputArgs?: any[];
|
||
|
|
resolve: (val: any) => any;
|
||
|
|
reject: (msg: string) => any;
|
||
|
|
retries?: number;
|
||
|
|
}
|
||
|
|
export type WorkerMsgHandler = (msgToWorker: MsgToWorker) => Promise<any>;
|
||
|
|
export interface WorkerTask {
|
||
|
|
taskId: number;
|
||
|
|
method: string;
|
||
|
|
args: any[];
|
||
|
|
resolve: (val: any) => any;
|
||
|
|
reject: (msg: string) => any;
|
||
|
|
retries: number;
|
||
|
|
isLongRunningTask: boolean;
|
||
|
|
workerKey: string;
|
||
|
|
}
|
||
|
|
export interface WorkerMessage {
|
||
|
|
taskId?: number;
|
||
|
|
method?: string;
|
||
|
|
args?: any[];
|
||
|
|
value?: any;
|
||
|
|
error?: string;
|
||
|
|
exit?: boolean;
|
||
|
|
}
|
||
|
|
export type WorkerRunner = (methodName: string, args: any[]) => Promise<any>;
|
||
|
|
export interface WorkerRunnerOptions {
|
||
|
|
isLongRunningTask?: boolean;
|
||
|
|
workerKey?: string;
|
||
|
|
}
|
||
|
|
export interface WorkerContext {
|
||
|
|
tsHost?: any;
|
||
|
|
tsProgram?: any;
|
||
|
|
}
|
||
|
|
export interface TranspileModuleResults {
|
||
|
|
sourceFilePath: string;
|
||
|
|
code: string;
|
||
|
|
map: any;
|
||
|
|
diagnostics: Diagnostic[];
|
||
|
|
moduleFile: Module;
|
||
|
|
}
|
||
|
|
export interface ValidateTypesResults {
|
||
|
|
diagnostics: Diagnostic[];
|
||
|
|
dirPaths: string[];
|
||
|
|
filePaths: string[];
|
||
|
|
}
|
||
|
|
export interface TerminalInfo {
|
||
|
|
/**
|
||
|
|
* Whether this is in CI or not.
|
||
|
|
*/
|
||
|
|
readonly ci: boolean;
|
||
|
|
/**
|
||
|
|
* Whether the terminal is an interactive TTY or not.
|
||
|
|
*/
|
||
|
|
readonly tty: boolean;
|
||
|
|
}
|
||
|
|
/**
|
||
|
|
* The task to run in order to collect the duration data point.
|
||
|
|
*/
|
||
|
|
export type TelemetryCallback = (...args: any[]) => void | Promise<void>;
|
||
|
|
/**
|
||
|
|
* The model for the data that's tracked.
|
||
|
|
*/
|
||
|
|
export interface TrackableData {
|
||
|
|
arguments: string[];
|
||
|
|
build: string;
|
||
|
|
component_count?: number;
|
||
|
|
config: Config;
|
||
|
|
cpu_model: string | undefined;
|
||
|
|
duration_ms: number | undefined;
|
||
|
|
has_app_pwa_config: boolean;
|
||
|
|
is_browser_env: boolean;
|
||
|
|
os_name: string | undefined;
|
||
|
|
os_version: string | undefined;
|
||
|
|
packages: string[];
|
||
|
|
packages_no_versions?: string[];
|
||
|
|
rollup: string;
|
||
|
|
stencil: string;
|
||
|
|
system: string;
|
||
|
|
system_major?: string;
|
||
|
|
targets: string[];
|
||
|
|
task: TaskCommand | null;
|
||
|
|
typescript: string;
|
||
|
|
yarn: boolean;
|
||
|
|
}
|
||
|
|
/**
|
||
|
|
* Used as the object sent to the server. Value is the data tracked.
|
||
|
|
*/
|
||
|
|
export interface Metric {
|
||
|
|
name: string;
|
||
|
|
timestamp: string;
|
||
|
|
source: 'stencil_cli';
|
||
|
|
value: TrackableData;
|
||
|
|
session_id: string;
|
||
|
|
}
|
||
|
|
export interface TelemetryConfig {
|
||
|
|
'telemetry.stencil'?: boolean;
|
||
|
|
'tokens.telemetry'?: string;
|
||
|
|
}
|