
The zip will contain: - the anchoring proof PDF ; - plus all accessible files stored on IPFS. If the key is invalid, a broken file will be added to the archive. If the key is missing, the file will not be added to the archive, because there is no way it could be deciphered. For now, all network errors from IPFS are silently ignored, resulting in an archive containing only the anchoring proof.
35 lines
1.4 KiB
TypeScript
35 lines
1.4 KiB
TypeScript
import * as Optics from "monocle-ts";
|
|
import * as Traversal from "monocle-ts/Traversal";
|
|
import * as Array from "fp-ts/Array";
|
|
|
|
import { Document, File, OfficeFolder } from "le-coffre-resources/dist/Notary";
|
|
|
|
/**
|
|
* Lenses
|
|
*/
|
|
export const folderDocumentsLens = Optics.Lens.fromNullableProp<OfficeFolder>()("documents", []);
|
|
export const documentFilesLens = Optics.Lens.fromNullableProp<Document>()("files", []);
|
|
export const fileHashLens = Optics.Lens.fromProp<File>()("hash");
|
|
export const fileUidLens = Optics.Lens.fromProp<File>()("uid");
|
|
|
|
/**
|
|
* Traversals
|
|
*/
|
|
export const documentsTraversal = Optics.fromTraversable(Array.Traversable)<Document>();
|
|
export const filesTraversal = Optics.fromTraversable(Array.Traversable)<File>();
|
|
|
|
export const folderFilesTraversal = folderDocumentsLens
|
|
.composeTraversal(documentsTraversal)
|
|
.composeLens(documentFilesLens)
|
|
.composeTraversal(filesTraversal);
|
|
|
|
export const folderHashesTraversal = folderFilesTraversal.composeLens(fileHashLens);
|
|
export const folderFilesUidTraversal = folderFilesTraversal.composeLens(fileUidLens);
|
|
|
|
/**
|
|
* Getters
|
|
*/
|
|
export const getFolderFiles = (folder: OfficeFolder) => Traversal.getAll(folder)(folderFilesTraversal);
|
|
export const getFolderHashes = (folder: OfficeFolder) => Traversal.getAll(folder)(folderHashesTraversal);
|
|
export const getFolderFilesUid = (folder: OfficeFolder) => Traversal.getAll(folder)(folderFilesUidTraversal);
|