@omnia/tooling-vue
Version:
Used to bundle and serve manifests web component that build on Vue framework.
115 lines (114 loc) • 4.07 kB
TypeScript
import type { OmniaPluginOptions } from '../plugins';
export interface ResolverInstance<Name extends string> extends ResolverConfig {
name: Name;
}
export interface ResolverConfig {
test(source: string, importer: string, fileGraph: FileGraph, ctx: RuntimeContext, fromWorker: boolean): boolean;
resolve(source: string, importer: string, fileGraph: FileGraph, ctx: RuntimeContext, fromWorker: boolean): string | Promise<string>;
}
export type Resolver<Name extends string, Args extends any[]> = (...args: Args) => ResolverInstance<Name>;
export interface TransformerInstance<Name extends string> extends TransformerConfig {
name: Name;
}
export interface TransformerConfig {
test(code: string, id: string, fileGraph: FileGraph, ctx: RuntimeContext, fromWorker: boolean): boolean;
transform(code: string, id: string, fileGraph: FileGraph, ctx: RuntimeContext, fromWorker: boolean): string | Promise<string>;
}
export type Transformer<Name extends string, Args extends any[], R> = (...args: Args) => R extends Promise<any> ? Promise<TransformerInstance<Name>> : TransformerInstance<Name>;
export interface OmniaHmrConfig {
alias: Record<string, string>;
resolvers: Array<ResolverInstance<any>>;
transformers: Array<TransformerInstance<any> | Promise<TransformerInstance<any>>>;
}
export interface RuntimeContext {
options: OmniaPluginOptions;
serviceId: string;
alias: Record<string, string>;
toModuleId(unknownId: string): string;
toFileGraphId(unknownId: string): string;
getFileGraph(unknownId: string): FileGraph;
}
export interface FileGraph {
id: string;
entry: boolean;
preBundled: boolean;
extension: string;
resourceId: string;
connectedResourceIds: Array<string>;
importers: Array<string>;
exporters: Array<string>;
js: FileGraphJavaScript;
bareImport: boolean;
timestamp?: number;
}
export interface FileGraphJavaScript {
scanned: boolean;
empty: boolean;
bareImportVariable?: string;
bareImportDynamicResourceId?: string;
metadata?: ModuleJS;
}
export interface ModuleJS {
importPaths: Array<string>;
exportPaths: Array<string>;
namedExports: Array<string>;
imports: {
namedVariables: Array<ImportedNamedVariableJS>;
wildcardVariables: Array<ImportedWildcardVariableJS>;
defaultVariables: Array<ImportedDefaultVariableJS>;
noneVariables: Array<ImportedNoneVariableJS>;
};
exports: {
locals: Array<string>;
localNamedVariables: Array<ExportedLocalNamedVariableJS>;
externalNamedVariables: Array<ExportedExternalNamedVariableJS>;
wildcardVariables: Array<ExportedWildcardVariableJS>;
wildcards: Array<ExportedWildcardJS>;
default: DefaultExportJS;
};
requires: Array<CommonJsRequireJS>;
}
export interface DefaultExportJS {
available: boolean;
wildcard: ExportedWildcardVariableJS;
nameless: boolean;
original?: string;
path?: string;
}
export interface NamedVariablesValueJS {
values: Array<string>;
asValues: Record<string, string>;
}
export interface PathValueJS {
statement: string;
path: string;
rawPath: string;
}
export interface NamedVariableJS {
value: string;
original?: string;
}
export interface ImportedNamedVariableJS extends NamedVariablesValueJS, PathValueJS {
}
export interface ImportedWildcardVariableJS extends PathValueJS {
value: string;
}
export interface ImportedDefaultVariableJS extends PathValueJS {
default: string;
}
export interface ImportedNoneVariableJS extends PathValueJS {
}
export interface ExportedExternalNamedVariableJS extends NamedVariablesValueJS, PathValueJS {
default?: string;
}
export interface ExportedLocalNamedVariableJS extends NamedVariablesValueJS {
default?: string;
}
export interface ExportedWildcardVariableJS extends PathValueJS {
value: string;
defaultAvailable: boolean;
}
export interface ExportedWildcardJS extends PathValueJS {
}
export interface CommonJsRequireJS extends PathValueJS {
}