@mdfriday/foundry
Version:
The core engine of MDFriday. Convert Markdown and shortcodes into fully themed static sites – Hugo-style, powered by TypeScript.
84 lines • 2.85 kB
TypeScript
import { MediaType } from '../../../pkg/media/type';
import { Fs } from '../../domain/fs/type';
import { Readable } from 'stream';
export interface ReadSeekCloser extends Readable {
seek(offset: number, whence: number): Promise<number>;
close(): Promise<void>;
}
export type OpenReadSeekCloser = () => Promise<ReadSeekCloser>;
export interface Workspace extends ResourceFs, URLConfig, TemplateSvc {
}
export interface ResourceFs {
assetsFs(): Fs;
publishFs(): Fs;
}
export interface URLConfig {
baseUrl(): string;
}
export interface TemplateSvc {
executeTemplate(templateName: string, rawContent: string, data: any): Promise<string>;
}
export interface ResourceTransformer {
transform(...transformations: ResourceTransformation[]): Promise<Resource>;
}
export interface ResourceTransformation {
key(): ResourceTransformationKey;
transform(ctx: ResourceTransformationContext): Promise<void>;
}
export interface ResourceTransformationKey {
name: string;
value(): string;
}
export interface ResourceTransformationContext {
source: {
from: NodeJS.ReadableStream;
inPath: string;
inMediaType: MediaType;
};
target: {
to: NodeJS.WritableStream;
};
data: Record<string, any>;
addOutPathIdentifier(identifier: string): void;
updateBuffer(): void;
updateSource(): void;
close(): void;
}
export interface Resources {
getResource(pathname: string): Promise<Resource | null>;
getResourceWithOpener(pathname: string, opener: OpenReadSeekCloser): Promise<Resource | null>;
executeAsTemplate(resource: Resource, targetPath: string, data: any): Promise<Resource>;
minify(resource: Resource): Promise<Resource>;
fingerprint(resource: Resource): Promise<Resource>;
getMinifierClient(): MinifierClient;
getIntegrityClient(): IntegrityClient;
setTemplateClient(client: TemplateClient): void;
}
export interface Resource extends ResourceTransformer {
name(): string;
readSeekCloser(): Promise<ReadSeekCloser>;
targetPath(): string;
content(ctx?: any): Promise<any>;
data(): any;
resourceType(): string;
mediaType(): MediaType;
cloneTo(targetPath: string): Resource;
key(): string;
permalink(): string;
relPermalink(): string;
}
export interface ResourceCopier {
cloneTo(targetPath: string): Resource;
}
export interface MinifierClient {
minify(resource: Resource): Promise<Resource>;
getMinifier(mediaType: string): ((content: string) => Promise<string>) | null;
}
export interface IntegrityClient {
fingerprint(resource: Resource): Promise<Resource>;
generateIntegrity(content: string): string;
}
export interface TemplateClient {
executeAsTemplate(resource: Resource, targetPath: string, data: any): Promise<Resource>;
}
//# sourceMappingURL=type.d.ts.map