add optics for accessing nested hashes
This commit is contained in:
parent
c4dcc16027
commit
b448aea01e
15
package-lock.json
generated
15
package-lock.json
generated
@ -18,9 +18,11 @@
|
||||
"cors": "^2.8.5",
|
||||
"cron": "^2.3.1",
|
||||
"express": "^4.18.2",
|
||||
"fp-ts": "^2.16.1",
|
||||
"jsonwebtoken": "^9.0.0",
|
||||
"le-coffre-resources": "git@github.com:smart-chain-fr/leCoffre-resources.git#v2.77",
|
||||
"module-alias": "^2.2.2",
|
||||
"monocle-ts": "^2.3.13",
|
||||
"multer": "^1.4.5-lts.1",
|
||||
"next": "^13.1.5",
|
||||
"node-cache": "^5.1.2",
|
||||
@ -2474,6 +2476,11 @@
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/fp-ts": {
|
||||
"version": "2.16.1",
|
||||
"resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-2.16.1.tgz",
|
||||
"integrity": "sha512-by7U5W8dkIzcvDofUcO42yl9JbnHTEDBrzu3pt5fKT+Z4Oy85I21K80EYJYdjQGC2qum4Vo55Ag57iiIK4FYuA=="
|
||||
},
|
||||
"node_modules/fresh": {
|
||||
"version": "0.5.2",
|
||||
"license": "MIT",
|
||||
@ -3901,6 +3908,14 @@
|
||||
"version": "2.2.3",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/monocle-ts": {
|
||||
"version": "2.3.13",
|
||||
"resolved": "https://registry.npmjs.org/monocle-ts/-/monocle-ts-2.3.13.tgz",
|
||||
"integrity": "sha512-D5Ygd3oulEoAm3KuGO0eeJIrhFf1jlQIoEVV2DYsZUMz42j4tGxgct97Aq68+F8w4w4geEnwFa8HayTS/7lpKQ==",
|
||||
"peerDependencies": {
|
||||
"fp-ts": "^2.5.0"
|
||||
}
|
||||
},
|
||||
"node_modules/ms": {
|
||||
"version": "2.0.0",
|
||||
"license": "MIT"
|
||||
|
@ -51,9 +51,11 @@
|
||||
"cors": "^2.8.5",
|
||||
"cron": "^2.3.1",
|
||||
"express": "^4.18.2",
|
||||
"fp-ts": "^2.16.1",
|
||||
"jsonwebtoken": "^9.0.0",
|
||||
"le-coffre-resources": "git@github.com:smart-chain-fr/leCoffre-resources.git#v2.77",
|
||||
"module-alias": "^2.2.2",
|
||||
"monocle-ts": "^2.3.13",
|
||||
"multer": "^1.4.5-lts.1",
|
||||
"next": "^13.1.5",
|
||||
"node-cache": "^5.1.2",
|
||||
|
29
src/common/optics/notary/index.ts
Normal file
29
src/common/optics/notary/index.ts
Normal file
@ -0,0 +1,29 @@
|
||||
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");
|
||||
|
||||
/**
|
||||
* Traversals
|
||||
*/
|
||||
export const documentsTraversal = Optics.fromTraversable(Array.Traversable)<Document>();
|
||||
export const filesTraversal = Optics.fromTraversable(Array.Traversable)<File>();
|
||||
|
||||
export const folderHashesTraversal = folderDocumentsLens
|
||||
.composeTraversal(documentsTraversal)
|
||||
.composeLens(documentFilesLens)
|
||||
.composeTraversal(filesTraversal)
|
||||
.composeLens(fileHashLens);
|
||||
|
||||
/**
|
||||
* Getters
|
||||
*/
|
||||
export const getFolderHashes = (folder: OfficeFolder) => Traversal.getAll(folder)(folderHashesTraversal);
|
Loading…
x
Reference in New Issue
Block a user