@image/packer
Version:
image packer
33 lines (26 loc) • 1.44 kB
text/typescript
import {IGeneratorOutput, IGenerateOptions, IEnvironment} from './index';
export function perPageManifestsSaver(generateOptions: IGenerateOptions,
environment: IEnvironment,
result: IGeneratorOutput): Promise<void> {
return Promise.all(result.atlases.map((_, atlasIndex) => {
return Promise.all(result.atlases[atlasIndex].sheets.map((__, pageIndex) => {
return PageManifestSaver(atlasIndex, pageIndex, generateOptions, environment, result);
}));
})) as Promise<void[][]> as any;
}
export function PageManifestSaver(atlasIndex: number,
sheetIndex: number,
generateOptions: IGenerateOptions,
environment: IEnvironment,
result: IGeneratorOutput): Promise<void> {
const sheet = result.atlases[atlasIndex].sheets[sheetIndex];
if (generateOptions.atlasPageMetaPathResolver) {
const outputFilePath = generateOptions.atlasPageMetaPathResolver(atlasIndex, sheetIndex, result);
const manifestRaw = generateOptions.pageManifestBuilder ?
generateOptions.pageManifestBuilder(atlasIndex, sheetIndex, result) :
sheet;
const raw = JSON.stringify(manifestRaw, null, 4);
return environment.writeFile(outputFilePath, raw);
}
return Promise.resolve();
}