///
///
import type { DataSource, DbDataSource, IncrementalMatch, LogStatus, TaskAction, ViewEngine } from './squared';
import type { ExternalAsset, FileCommand, FileData, IFileThread, OutputFinalize } from './asset';
import type { BucketWebsiteOptions, CloudDatabase, CloudFeatures, CloudFunctions, CloudService, CloudStorage, CloudStorageDownload, CloudStorageUpload, UploadAssetOptions } from './cloud';
import type { BufferResult, CompressFormat, CompressLevel, ReadableOptions, TryFileCompressor } from './compress';
import type { ClientDbConstructor, HostInitConfig, IAbortComponent, IClient, IClientDb, IPermission, JoinQueueOptions, PermissionReadWrite, ResumeThreadOptions, ThreadCountStat } from './core';
import type { BatchQueryResult, DB_TYPE, ErrorQueryCallback, ExecuteBatchQueryOptions, ExecuteQueryOptions, HandleFailOptions, ProcessRowsOptions, QueryResult, SQL_COMMAND } from './db';
import type { AsSourceFileOptions, ConfigOrTransformer, CustomizeOptions as CustomizeDocument, GenerateLintTableOptions, LintMessage, PluginConfig, SourceCode, SourceInput, SourceMap, SourceMapOptions, TransformAction, TransformCallback, TransformOutput, TransformResult, UpdateGradleOptions } from './document';
import type { AssetContentOptions, ChecksumOptions, DeleteFileAddendum, FileOutput, FinalizeResult, FindAssetOptions, IHttpDiskCache, IHttpMemoryCache, ImageMimeMap, InstallData, PostFinalizeCallback, ReplaceOptions } from './filemanager';
import type { HttpAgentSettings, HttpProtocolVersion, HttpRequestClient, InternetProtocolVersion } from './http';
import type { CommandData, CropData, QualityData, ResizeData, RotateData, TransformOptions } from './image';
import type { ExecCommand, LOG_TYPE, LogArguments, LogComponent, LogDate, LogFailOptions, LogMessageOptions, LogOptions, LogProcessOptions, LogState, LogTime, LogType, LogValue, STATUS_TYPE, StatusType } from './logger';
import type { AsHashOptions, CheckSemVerOptions, CopyDirOptions, CopyDirResult, CopyFileOptions, CreateDirOptions, DeleteFileOptions, FileTypeFormat, GlobDirOptions, MoveFileOptions, ParseFunctionOptions, PermissionOptions, ProtocolType, ReadBufferOptions, ReadFileCallback, ReadFileOptions, ReadHashOptions, ReadTextOptions, RemoveDirOptions, TempDirOptions, WriteFileOptions } from './module';
import type { RequestData, Settings } from './node';
import type { ApplyOptions, Aria2Options, BufferFormat, DataEncodedResult, DataObjectResult, FormDataPart, HeadersOnCallback, HostConfig, OpenOptions, PostOptions, ProxySettings, PutOptions, ReadExpectType, RequestInit, StatusOnCallback } from './request';
import type { ClientModule, CloudAuthSettings, CloudModule, CloudServiceOptions, CompressModule, CompressSettings, DbCoerceSettings, DbModule, DbSourceOptions, DnsLookupSettings, DocumentComponent, DocumentComponentOption, DocumentModule, HandlerSettings, HttpConnectSettings, HttpMemorySettings, ImageModule, LoggerFormat, LoggerFormatSettings, PoolConfig, RequestModule, RequestSettings, TaskModule, WatchModule } from './settings';
import type { Command, SpawnResult } from './task';
import type { IFileGroup, ModifiedPostFinalizeListener, SecureOptions, WatchInitResult } from './watch';
import type { SpawnOptions } from 'child_process';
import type { BinaryLike, BinaryToTextEncoding, HashOptions } from 'crypto';
import type { NoParamCallback, WriteStream } from 'fs';
import type { ClientRequest, OutgoingHttpHeaders } from 'http';
import type { LookupFunction } from 'net';
import type { Readable, Writable } from 'stream';
import type { SecureContextOptions } from 'tls';
import type { BrotliCompress, Gzip } from 'zlib';
// @ts-ignore
import type { FileTypeResult } from 'file-type';
import type * as EventEmitter from 'events';
// @ts-ignore
import type * as ws from 'ws';
type BufferView = Bufferable | NodeJS.ArrayBufferView;
type CpuUsage = NodeJS.CpuUsage;
declare namespace functions {
type WatchInstance = IWatch, T, U, ModifiedPostFinalizeListener>;
type FormatMessageArgs = [type: LogType, title: string, value: LogValue, message: unknown, options: LogMessageOptions];
interface IScopeOrigin {
host?: T;
instance?: U;
}
interface IExternalConfig {
module: T;
init(...args: unknown[]): this;
get settings(): U;
}
interface IExternalFunction> {
set extensions(values: unknown[]);
get extensions(): T[];
}
interface ICompress extends IModule, IExternalConfig {
level: ObjectMap;
compressors: ObjectMap;
register(format: string, callback: TryFileCompressor): void;
getLevel(value: string, fallback?: number): Undef;
getReadable(file: string | URL | Buffer, options?: ReadableOptions): Readable;
createGzip(file: string | Buffer, options?: CompressLevel): Gzip;
createBrotliCompress(file: string | Buffer, options?: CompressLevel): BrotliCompress;
createWriteStreamAsGzip(file: string | Buffer, output: string, options?: CompressLevel): WriteStream;
createWriteStreamAsBrotli(file: string | Buffer, output: string, options?: CompressLevel): WriteStream;
writeGzip(file: string | Buffer, output: string, options?: CompressLevel): Promise;
writeBrotli(file: string | Buffer, output: string, options?: CompressLevel): Promise;
tryFile(file: string | Buffer, options: CompressFormat): Promise;
tryFile(file: string | Buffer, output: string, options?: CompressFormat): Promise;
tryImage(file: string, options: CompressFormat): Promise;
tryImage(file: string | Buffer, output: string, options?: CompressFormat): Promise;
set chunkSize(value: Undef);
get chunkSize(): Undef;
}
interface CompressConstructor extends ModuleConstructor {
singleton(): ICompress;
readonly prototype: ICompress;
new(module?: U): ICompress;
}
interface IImage extends IClient {
resizeData?: ResizeData;
cropData?: CropData;
rotateData?: RotateData;
qualityData?: QualityData;
methodData?: [string, unknown[]?][];
opacityValue?: number;
setCommand(value: string | CommandData, outputAs?: string): void;
getCommand(): string;
parseCommand(value: string): CommandData;
parseMethod(value: string): Undef<[string, unknown[]?][]>;
parseResize(value: string): Undef;
parseCrop(value: string): Undef;
parseRotate(value: string): Undef;
parseQuality(value: string): Undef;
parseOpacity(value: string): number;
using?(data: IFileThread, command: string): Promise;
get outputAs(): string;
}
interface ImageConstructor extends ModuleConstructor {
readonly REGEXP_SIZERANGE: RegExp;
transform(file: string, command: string, options?: V): Promise>;
clamp(value: unknown, min?: number, max?: number): number;
isBinary(mime: unknown): mime is string;
toABGR(buffer: Uint8Array | Buffer): Buffer;
readonly prototype: IImage;
new(module?: U, ...args: unknown[]): IImage;
}
interface ITask extends IClient {
using?(data: IFileThread): Promise;
collect?(items: unknown[], preceding?: boolean): Promise[];
map?(tasks: Command[]): Promise>[];
series?(tasks: Command[]): Promise;
parallel?(tasks: Command[]): Promise;
spawn?(task: PlainObject, callback: (result?: SpawnResult) => void): void;
execute?, W extends ExternalAsset>(manager: V, task: PlainObject, callback: (value?: unknown) => void): void;
}
interface TaskConstructor extends ModuleConstructor {
finalize(this: T, instance: ITask, assets: V[]): Promise;
readonly prototype: ITask;
new(module?: U, ...args: unknown[]): ITask;
}
interface IDb extends IClientDb {
setCredential(item: V): Promise;
getCredential(item: V): Undef;
hasSource(source: string, ...type: number[]): boolean;
applyCommand(...items: V[]): void;
executeQuery(item: V, callback: ErrorQueryCallback): Promise;
executeQuery(item: V, sessionKey: string): Promise;
executeQuery(item: V, options?: ExecuteQueryOptions | string): Promise;
executeBatchQuery(batch: V[], callback: ErrorQueryCallback, outResult?: BatchQueryResult): Promise;
executeBatchQuery(batch: V[], sessionKey: string, outResult?: BatchQueryResult): Promise;
executeBatchQuery(batch: V[], options?: ExecuteBatchQueryOptions | string, outResult?: BatchQueryResult): Promise;
processRows(batch: V[], tasks: Promise>[], parallel: boolean): Promise;
processRows(batch: V[], tasks: Promise>[], options?: ProcessRowsOptions, outResult?: BatchQueryResult): Promise;
handleFail(err: unknown, item: V, options?: HandleFailOptions): boolean;
readTLSCert(value: unknown, cache?: boolean): string;
readTLSConfig(options: SecureContextOptions, cache?: boolean): void;
settingsOf(source: string, name: keyof Omit): unknown;
settingsOf(source: string, name: "coerce", component: keyof X): unknown;
settingsKey(source: string, name: keyof Omit): unknown;
settingsKey(source: string, name: "coerce", component: keyof X): unknown;
getPoolConfig(source: string, uuidKey?: string): Undef>;
get sourceType(): DB_TYPE;
get commandType(): SQL_COMMAND;
}
interface DbConstructor extends ClientDbConstructor {
setPoolConfig(value: ObjectMap): void;
getPoolConfig(source: string): Undef>;
readonly prototype: IDb;
new(module?: U, database?: V[], ...args: unknown[]): IDb;
}
interface ICloud extends IClientDb {
readonly uploaded: string[];
readonly downloaded: string[];
createBucket(service: string, credential: unknown, bucket: string, acl?: unknown, options?: unknown): Promise;
createBucket(service: string, credential: unknown, bucket: string, publicRead?: boolean): Promise;
setBucketPolicy(service: string, credential: unknown, bucket: string, options: unknown): Promise;
setBucketTagging(service: string, credential: unknown, bucket: string, options: unknown): Promise;
setBucketWebsite(service: string, credential: unknown, bucket: string, options: BucketWebsiteOptions): Promise;
deleteObjects(service: string, credential: unknown, bucket: string, recursive?: boolean): Promise;
uploadObject(service: string, credential: unknown, bucket: string, upload: CloudStorageUpload, localUri: string, beforeResolve?: (value: string) => Void>): Promise;
downloadObject(service: string, credential: unknown, bucket: string, download: CloudStorageDownload, beforeResolve?: (value: Null) => Void>>): Promise;
getStorage(action: CloudFunctions, data: Undef): Undef;
hasStorage(action: CloudFunctions, storage: CloudStorage): CloudStorageUpload | false;
getDatabaseRows(item: V, ignoreErrors: boolean, sessionKey?: string): Promise;
getDatabaseRows(item: V, sessionKey?: string): Promise;
getDatabaseBatchRows(batch: V[], ignoreErrors: boolean, sessionKey?: string): Promise;
getDatabaseBatchRows(batch: V[], sessionKey?: string): Promise;
hasCredential(feature: CloudFeatures, data: CloudService, credential?: unknown): boolean;
getCredential(item: CloudService, unused?: boolean): PlainObject;
getSettings(service: string): Undef;
settingsOf(service: string, name: "cache"): unknown;
settingsOf(service: string, name: "coerce", component: keyof DbCoerceSettings): unknown;
settingsOf(service: string, name: "auth", component: keyof CloudAuthSettings): unknown;
getUploadHandler(service: string, credential: unknown): FunctionType;
getDownloadHandler(service: string, credential: unknown): FunctionType;
resolveService(service: string, folder?: string): string;
}
interface CloudConstructor extends ClientDbConstructor {
LOG_CLOUD_FAIL: LogMessageOptions;
LOG_CLOUD_COMMAND: LogMessageOptions;
LOG_CLOUD_WARN: LogMessageOptions;
LOG_CLOUD_UPLOAD: LogMessageOptions;
LOG_CLOUD_DOWNLOAD: LogMessageOptions;
LOG_CLOUD_DELETE: LogMessageOptions;
LOG_CLOUD_DELAYED: LogMessageOptions;
finalize(this: T, instance: ICloud): Promise;
uploadAsset, X extends ExternalAsset>(state: IScopeOrigin>, file: X, options: UploadAssetOptions): Promise[];
uploadAsset, X extends ExternalAsset>(state: IScopeOrigin>, file: X, ignoreProcess: boolean): Promise[];
uploadAsset, X extends ExternalAsset>(state: IScopeOrigin>, file: X, contentType?: string | boolean | UploadAssetOptions, ignoreProcess?: boolean): Promise[];
sanitizeAssets(assets: W[]): W[];
readonly prototype: ICloud;
new(module?: U, database?: CloudDatabase[], ...args: unknown[]): ICloud;
}
interface IDocument, U extends ExternalAsset = ExternalAsset, V extends ClientModule = DocumentModule, W extends DocumentComponent = DocumentComponent, X extends DocumentComponentOption = DocumentComponentOption, Y extends ICloud = ICloud> extends IClient> {
Db: Null;
assets: U[];
config: StandardMap;
init(assets: U[], config?: HostInitConfig): this;
customize(options?: CustomizeDocument): void;
findConfig(data: object, name: string, type?: string): PluginConfig;
loadConfig(data: object, name: string): Optional;
asSourceFile(value: string, cache: boolean): unknown;
asSourceFile(value: string, options?: AsSourceFileOptions): unknown;
findVersion(name: ArrayOf, fallback?: string): string;
findSourceScope(uri: string, imports: AnyObject): StringMap[];
findSourceRoot(uri: string, imports?: StringMap): Undef;
resolveDir(name: string, ...paths: string[]): Undef;
locateSourceFiles(file: U, code?: string, bundleContent?: string[]): (imports?: StringMap) => Undef;
resolveSourceFile(file: U): (code?: string, imports?: StringMap) => Undef>;
tryParse(source: string, format: string, options?: PlainObject): unknown;
forDb(item: DataSource): boolean;
hasEval(name: string): boolean;
settingsOf(name: keyof W, option: keyof X): unknown;
parseTemplate(viewEngine: ViewEngine | string, template: string, data: unknown[]): Promise>;
transform(type: string, code: string, format: ArrayOf, options?: TransformOutput & TransformAction): Promise>;
abort(err: Error): void;
abort(name?: keyof W, reason?: unknown): void;
restart(): void;
using?(data: IFileThread): Promise;
setLocalUri?(file: U, replace?: boolean): void;
resolveUri?(file: U, source: string): string;
resolveUri?(file: U, source: string, trailing: string): TupleOf;
resolveImports?(file: U, code: string, baseFile?: string | U): Undef;
replaceContent?(source: string, statement: RegExpExecArray | string, mimeType?: string): Undef;
addCopy?(data: FileCommand, saveAs: string, replace?: boolean): Undef;
writeImage?(output: OutputFinalize): boolean;
cloudInit?(state: IScopeOrigin): void;
cloudObject?(state: IScopeOrigin, file: U): boolean;
cloudUpload?(state: IScopeOrigin, file: U, url: string, active: boolean): Promise;
cloudFinalize?(state: IScopeOrigin): Promise;
watchInit?(watch: IFileGroup, assets: U[], sanitize?: boolean): Undef;
watchModified?(watch: IFileGroup, assets?: U[]): PostFinalizeCallback;
set dataSource(value: DataSource[]);
get dataSource(): DataSource[];
set imports(value);
get imports(): StringMap;
get watching(): boolean;
}
interface DocumentConstructor, U extends ExternalAsset = ExternalAsset, V extends ClientModule = DocumentModule, W extends DocumentComponent = DocumentComponent, X extends DocumentComponentOption = DocumentComponentOption, Y extends ICloud = ICloud> extends ModuleConstructor {
finalize(this: T, instance: IDocument): Promise;
/** @deprecated */
createSourceMap(code: string, remove: boolean): SourceMap;
/** @deprecated */
createSourceMap(code: string, uri?: string, remove?: boolean): SourceMap;
writeSourceMap(uri: string, data: SourceCode, options?: SourceMapOptions): Undef;
updateGradle(source: string, namespaces: string[], value: string, upgrade: boolean): string;
updateGradle(source: string, namespaces: string[], value: string, options?: UpdateGradleOptions): string;
generateLintTable(messages: LintMessage[], options: GenerateLintTableOptions): LogComponent[];
cleanup?(this: T, instance: IDocument): Promise;
sanitizeAssets?(assets: U[], exclusions?: unknown[]): U[];
readonly prototype: IDocument;
new(module?: V, ...args: unknown[]): IDocument;
}
interface IWatch, U extends ExternalAsset = ExternalAsset, V extends WatchModule = WatchModule, W extends FunctionType = ModifiedPostFinalizeListener> extends IClient {
connectTimeout: number;
init(config?: HostInitConfig): this;
start(assets: U[], permission?: Null): void;
modified(watch: IFileGroup): Promise>;
configureServer(options: SecureOptions): boolean;
setCA(value: string): boolean;
setSSLKey(value: string): boolean;
setSSLCert(value: string): boolean;
hasSecureProtocol(): boolean;
whenModified?(assets: U[], postFinalize: PostFinalizeCallback): IFileManager;
whenModified?(assets: U[], sanitize?: boolean, postFinalize?: PostFinalizeCallback): IFileManager;
set assets(value: U[]);
get assets(): U[];
set interval(value);
get interval(): number;
set port(value);
get port(): number;
set securePort(value);
get securePort(): number;
}
interface WatchConstructor, U extends ExternalAsset = ExternalAsset, V extends WatchModule = WatchModule, W extends FunctionType = ModifiedPostFinalizeListener> extends ModuleConstructor {
createServer(port: number, active: boolean): Null;
createServer(port: number, secure?: Null, active?: boolean): Null;
shutdown(): void;
setTimeout(value: number | string): void;
checkTimeout(client: ws): boolean;
readonly prototype: IWatch;
new(module?: V): IWatch;
new(interval?: number, port?: number, securePort?: number, extensions?: unknown[]): IWatch;
}
interface IRequest extends IModule, IExternalConfig {
startTime: number;
acceptEncoding: boolean;
keepAlive: Null;
readTimeout: number;
readExpect: ReadExpectType;
proxy: Null;
init(config?: RequestInit): this;
apply(options: ApplyOptions): this;
addDns(hostname: string, address: string, timeout: number): void;
addDns(hostname: string, address: string, family?: number | string, timeout?: number): void;
lookupDns(hostname: string): LookupFunction;
proxyOf(uri: string, localhost?: boolean): Undef;
statusOn(name: ArrayOf, callback: StatusOnCallback): void;
statusOn(name: ArrayOf, globUrl: string, callback: StatusOnCallback): void;
headersOn(name: ArrayOf, callback: HeadersOnCallback): void;
headersOn(name: ArrayOf, globUrl: string, callback: HeadersOnCallback): void;
headersOf(uri: string): Undef;
aria2c(uri: string | URL, pathname: string): Promise;
aria2c(uri: string | URL, options?: Aria2Options): Promise;
json(uri: string | URL, options?: OpenOptions): Promise>;
pipe(uri: string | URL, to: Writable, options?: OpenOptions): Promise;
opts(url: string | URL, options?: OpenOptions): HostConfig;
open(uri: string | URL, options: OpenOptions): HttpRequestClient;
head(uri: string | URL, options?: OpenOptions): ClientRequest;
put(uri: string | URL, data: unknown, contentType: string): Promise>;
put(uri: string | URL, data: unknown, options: V): Promise>;
put(uri: string | URL, data: unknown, contentType?: string | V, options?: V): Promise>;
post(uri: string | URL, data: unknown, contentType: string): Promise>;
post(uri: string | URL, parts: FormDataPart[]): Promise>;
post(uri: string | URL, form: AnyObject, parts: FormDataPart[]): Promise>;
post(uri: string | URL, data: unknown, options: V): Promise>;
post(uri: string | URL, data: unknown, contentType?: string | FormDataPart[] | V, options?: V): Promise>;
get(uri: string | URL, options?: W): Promise : DataEncodedResult>;
detach(singleton?: boolean): void;
reset(): void;
close(): void;
set agentTimeout(value);
get agentTimeout(): number;
set httpVersion(value);
get httpVersion(): Null;
set ipVersion(value);
get ipVersion(): InternetProtocolVersion;
}
interface RequestConstructor extends ModuleConstructor {
readCACert(value: string, cache?: boolean): string;
readTLSKey(value: string, cache?: boolean): string;
readTLSCert(value: string, cache?: boolean): string;
isCert(value: string): boolean;
fromURL(url: URL, value: string): string;
fromStatusCode(value: number | string): string;
defineHttpAgent(options: HttpAgentSettings): void;
defineDnsLookup(options: DnsLookupSettings, clear?: boolean): void;
getAria2Path(): string;
readonly prototype: IRequest;
new(module?: T): IRequest;
}
interface IFileManager extends IHost, Set {
processTimeout: number;
cacheToDisk: IHttpDiskCache;
cacheToMemory: IHttpMemoryCache;
Request: IRequest;
Document: InstallData, T>, DocumentConstructor, T>>[];
Task: InstallData[];
Image: Null;
Cloud: Null;
Watch: Null>;
Compress: Null;
readonly documentAssets: T[];
readonly taskAssets: (T & Required)[];
readonly dataSourceItems: DataSource[];
readonly files: Set;
readonly filesQueued: Set;
readonly filesToRemove: Set;
readonly filesToCompare: Map;
readonly contentToAppend: Map;
readonly contentToReplace: Map;
readonly processing: IFileThread[];
readonly fetchedAssets: T[];
readonly copiedAssets: T[];
readonly emptyDir: Set;
install(name: "document", handler: string, module?: DocumentModule, ...args: unknown[]): Undef, T>>;
install(name: "document", target: DocumentConstructor, T>, module?: DocumentModule, ...args: unknown[]): Undef, T>>;
install(name: "task", handler: string, module?: TaskModule, ...args: unknown[]): Undef;
install(name: "task", target: TaskConstructor, module?: TaskModule, ...args: unknown[]): Undef;
install(name: "cloud", handler: string, module?: CloudModule, ...args: unknown[]): Undef;
install(name: "cloud", module?: CloudModule): Undef;
install(name: "image", handler: string, module?: ImageModule, ...args: unknown[]): Undef;
install(name: "image", target: ImageConstructor, module?: ImageModule, ...args: unknown[]): Undef;
install(name: "image", targets: Map, module?: ImageModule): void;
install(name: "watch", module: WatchModule): Undef>;
install(name: "watch", interval?: number | string, port?: number | string, securePort?: number | string, extensions?: unknown[]): Undef>;
install(name: "compress", module?: CompressModule): Undef;
install(name: string, ...args: unknown[]): Undef;
using(...items: FirstOf): this;
contains(item: T, condition?: FunctionArgs<[T], boolean>): boolean;
removeCwd(value: unknown): string;
findAsset(value: string | URL, instance?: IModule | FindAssetOptions): Undef;
removeAsset(file: T): boolean;
replace(file: T, replaceWith: string, mimeType: Undef): boolean;
replace(file: T, replaceWith: string, options?: ReplaceOptions): boolean;
rename(file: T, value: string): boolean;
performAsyncTask(): void;
removeAsyncTask(): void;
completeAsyncTask(err?: unknown, uri?: string, parent?: T, type?: number): void;
performFinalize(override?: boolean): void;
hasDocument(instance: IModule, document: Undef>): boolean;
getDocumentAssets(instance: IModule, condition?: FunctionArgs<[T], boolean>): T[];
getDataSourceItems(instance: IModule, condition?: FunctionArgs<[DataSource], boolean>): DataSource[];
checkFilename(file: T, pathname?: string): string;
setLocalUri(file: T, replace?: boolean): FileOutput;
getLocalUri(data: FileData): string;
getMimeType(data: FileData): string;
openThread(instance: IModule, data: IFileThread, timeout?: number): boolean;
closeThread(instance: Null, data: IFileThread, callback?: FunctionType): boolean;
addProcessTimeout(instance: IModule, file: T, timeout: number): void;
removeProcessTimeout(instance: IModule, file: T): void;
getProcessTimeout(handler: InstallData): number;
clearProcessTimeout(): void;
scheduleTask(url: string | URL, data: unknown, priority: number): Promise