@knapsack/app
Version:
Build Design Systems with Knapsack
65 lines (63 loc) • 2.56 kB
TypeScript
/**
* Copyright (C) 2018 Basalt
This file is part of Knapsack.
Knapsack is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the Free
Software Foundation; either version 2 of the License, or (at your option)
any later version.
Knapsack is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details.
You should have received a copy of the GNU General Public License along
with Knapsack; if not, see <https://www.gnu.org/licenses>.
*/
import { KnapsackFile } from '@knapsack/types';
import chokidar from 'chokidar';
import { KnapsackDb } from '../../types/knapsack-db';
import { CliLifecycle } from '../../types/cli-lifecycle';
export declare class FileDb<ConfigType> implements KnapsackDb<ConfigType>, CliLifecycle {
#private;
/**
* Full path to file used for storage
*/
filePath: string;
private type;
validationSchema: Record<string, unknown>;
defaults?: ConfigType;
orderAlphabetically: boolean;
private fileHashes;
constructor({ filePath, type, defaults, validationSchema, writeFileIfAbsent, orderAlphabetically, }: {
filePath: string;
type?: 'json' | 'yml';
/**
* Shallow merge
*/
defaults?: ConfigType;
/**
* JSON Schema to validate read & writes with at run time
*/
validationSchema?: Record<string, unknown>;
writeFileIfAbsent?: boolean;
orderAlphabetically?: boolean;
});
init(_opt: Parameters<CliLifecycle['init']>[0]): Promise<void>;
watchFiles({ handleChange, extraPaths, }: {
handleChange: (filePath: string) => void;
extraPaths?: string[];
}): chokidar.FSWatcher | void;
/**
* Ensure the data is good during run-time by using provided JSON Schemas to validate
* Requires `validationSchema` to be passed in during initial creation
* @throws Error if it's not valid
*/
validateConfig(config: ConfigType): void;
serialize(config: ConfigType): Pick<KnapsackFile, 'contents' | 'encoding'>;
parse(fileString: string): ConfigType;
read(): Promise<ConfigType>;
readSync(): ConfigType;
savePrep(config?: ConfigType): Promise<KnapsackFile[]>;
getData(): Promise<ConfigType>;
getDataSync(): ConfigType;
}
//# sourceMappingURL=file-db.d.ts.map