@xyo-network/crypto-contract-function-read-plugin 2.77.17 → 2.77.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"Erc721Diviner.d.ts","sourceRoot":"","sources":["../../src/Erc721Diviner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,MAAM,2DAA2D,CAAA;AAC5G,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAEzE,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAElG,eAAO,MAAM,uCAAuC,2DAA2D,CAAA;AAC/G,MAAM,MAAM,uCAAuC,GAAG,OAAO,uCAAuC,CAAA;AAEpG,MAAM,MAAM,iCAAiC,GAAG,aAAa,CAAA;AAC7D,MAAM,MAAM,iCAAiC,GAAG,aAAa,CAAC,iCAAiC,CAAC,CAAA;AAEhG,eAAO,MAAM,wBAAwB,4CAA4C,CAAA;AACjF,MAAM,MAAM,wBAAwB,GAAG,OAAO,wBAAwB,CAAA;AAEtE,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAC3C;IACE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,EACD,wBAAwB,CACzB,CAAA;AAED,qBAAa,2BAA2B,CACtC,OAAO,SAAS,iCAAiC,GAAG,iCAAiC,CACrF,SAAQ,qBAAqB,CAAC,kBAAkB,EAAE,OAAO,CAAC;IAC1D,OAAgB,aAAa,WAA4C;cAEhD,aAAa,CACpC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,gCAAgC,EAAE,GAC9C,OAAO,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;CASpD"}
1
+ {"version":3,"file":"Erc721Diviner.d.ts","sourceRoot":"","sources":["../../src/Erc721Diviner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,MAAM,2DAA2D,CAAA;AAC5G,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAEzE,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAElG,eAAO,MAAM,uCAAuC,2DAA2D,CAAA;AAC/G,MAAM,MAAM,uCAAuC,GAAG,OAAO,uCAAuC,CAAA;AAEpG,MAAM,MAAM,iCAAiC,GAAG,aAAa,CAAA;AAC7D,MAAM,MAAM,iCAAiC,GAAG,aAAa,CAAC,iCAAiC,CAAC,CAAA;AAEhG,eAAO,MAAM,wBAAwB,4CAA4C,CAAA;AACjF,MAAM,MAAM,wBAAwB,GAAG,OAAO,wBAAwB,CAAA;AAEtE,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAC3C;IACE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,EACD,wBAAwB,CACzB,CAAA;AAED,qBAAa,2BAA2B,CACtC,OAAO,SAAS,iCAAiC,GAAG,iCAAiC,CACrF,SAAQ,qBAAqB,CAAC,kBAAkB,EAAE,OAAO,CAAC;IAC1D,OAAgB,aAAa,WAA4C;cAEhD,aAAa,CACpC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,gCAAgC,EAAE,GAC9C,OAAO,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;CAWpD"}
@@ -1 +1 @@
1
- {"version":3,"file":"Erc721Diviner.d.ts","sourceRoot":"","sources":["../../src/Erc721Diviner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,MAAM,2DAA2D,CAAA;AAC5G,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAEzE,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAElG,eAAO,MAAM,uCAAuC,2DAA2D,CAAA;AAC/G,MAAM,MAAM,uCAAuC,GAAG,OAAO,uCAAuC,CAAA;AAEpG,MAAM,MAAM,iCAAiC,GAAG,aAAa,CAAA;AAC7D,MAAM,MAAM,iCAAiC,GAAG,aAAa,CAAC,iCAAiC,CAAC,CAAA;AAEhG,eAAO,MAAM,wBAAwB,4CAA4C,CAAA;AACjF,MAAM,MAAM,wBAAwB,GAAG,OAAO,wBAAwB,CAAA;AAEtE,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAC3C;IACE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,EACD,wBAAwB,CACzB,CAAA;AAED,qBAAa,2BAA2B,CACtC,OAAO,SAAS,iCAAiC,GAAG,iCAAiC,CACrF,SAAQ,qBAAqB,CAAC,kBAAkB,EAAE,OAAO,CAAC;IAC1D,OAAgB,aAAa,WAA4C;cAEhD,aAAa,CACpC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,gCAAgC,EAAE,GAC9C,OAAO,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;CASpD"}
1
+ {"version":3,"file":"Erc721Diviner.d.ts","sourceRoot":"","sources":["../../src/Erc721Diviner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,MAAM,2DAA2D,CAAA;AAC5G,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAEzE,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAElG,eAAO,MAAM,uCAAuC,2DAA2D,CAAA;AAC/G,MAAM,MAAM,uCAAuC,GAAG,OAAO,uCAAuC,CAAA;AAEpG,MAAM,MAAM,iCAAiC,GAAG,aAAa,CAAA;AAC7D,MAAM,MAAM,iCAAiC,GAAG,aAAa,CAAC,iCAAiC,CAAC,CAAA;AAEhG,eAAO,MAAM,wBAAwB,4CAA4C,CAAA;AACjF,MAAM,MAAM,wBAAwB,GAAG,OAAO,wBAAwB,CAAA;AAEtE,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAC3C;IACE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,EACD,wBAAwB,CACzB,CAAA;AAED,qBAAa,2BAA2B,CACtC,OAAO,SAAS,iCAAiC,GAAG,iCAAiC,CACrF,SAAQ,qBAAqB,CAAC,kBAAkB,EAAE,OAAO,CAAC;IAC1D,OAAgB,aAAa,WAA4C;cAEhD,aAAa,CACpC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,gCAAgC,EAAE,GAC9C,OAAO,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;CAWpD"}
@@ -1 +1 @@
1
- {"version":3,"file":"Erc721Diviner.d.ts","sourceRoot":"","sources":["../../src/Erc721Diviner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,MAAM,2DAA2D,CAAA;AAC5G,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAEzE,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAElG,eAAO,MAAM,uCAAuC,2DAA2D,CAAA;AAC/G,MAAM,MAAM,uCAAuC,GAAG,OAAO,uCAAuC,CAAA;AAEpG,MAAM,MAAM,iCAAiC,GAAG,aAAa,CAAA;AAC7D,MAAM,MAAM,iCAAiC,GAAG,aAAa,CAAC,iCAAiC,CAAC,CAAA;AAEhG,eAAO,MAAM,wBAAwB,4CAA4C,CAAA;AACjF,MAAM,MAAM,wBAAwB,GAAG,OAAO,wBAAwB,CAAA;AAEtE,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAC3C;IACE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,EACD,wBAAwB,CACzB,CAAA;AAED,qBAAa,2BAA2B,CACtC,OAAO,SAAS,iCAAiC,GAAG,iCAAiC,CACrF,SAAQ,qBAAqB,CAAC,kBAAkB,EAAE,OAAO,CAAC;IAC1D,OAAgB,aAAa,WAA4C;cAEhD,aAAa,CACpC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,gCAAgC,EAAE,GAC9C,OAAO,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;CASpD"}
1
+ {"version":3,"file":"Erc721Diviner.d.ts","sourceRoot":"","sources":["../../src/Erc721Diviner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,MAAM,2DAA2D,CAAA;AAC5G,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAEzE,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAElG,eAAO,MAAM,uCAAuC,2DAA2D,CAAA;AAC/G,MAAM,MAAM,uCAAuC,GAAG,OAAO,uCAAuC,CAAA;AAEpG,MAAM,MAAM,iCAAiC,GAAG,aAAa,CAAA;AAC7D,MAAM,MAAM,iCAAiC,GAAG,aAAa,CAAC,iCAAiC,CAAC,CAAA;AAEhG,eAAO,MAAM,wBAAwB,4CAA4C,CAAA;AACjF,MAAM,MAAM,wBAAwB,GAAG,OAAO,wBAAwB,CAAA;AAEtE,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAC3C;IACE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,EACD,wBAAwB,CACzB,CAAA;AAED,qBAAa,2BAA2B,CACtC,OAAO,SAAS,iCAAiC,GAAG,iCAAiC,CACrF,SAAQ,qBAAqB,CAAC,kBAAkB,EAAE,OAAO,CAAC;IAC1D,OAAgB,aAAa,WAA4C;cAEhD,aAAa,CACpC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,gCAAgC,EAAE,GAC9C,OAAO,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;CAWpD"}
@@ -1 +1 @@
1
- {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EACL,0BAA0B,EAC1B,gCAAgC,EAGhC,uCAAuC,EAExC,MAAM,2DAA2D,CAAA;AAElE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAE3D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAa,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAE5C,MAAM,MAAM,uCAAuC,CAAC,SAAS,SAAS,QAAQ,IAAI,aAAa,CAC7F,eAAe,CAAC,uCAAuC,CAAC,EACxD;IACE,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,SAAS,CAAA;CACxC,CACF,CAAA;AAED,qBAAa,iCAAiC,CAC5C,SAAS,SAAS,QAAQ,GAAG,QAAQ,EACrC,OAAO,SAAS,uCAAuC,CAAC,SAAS,CAAC,GAAG,uCAAuC,CAAC,SAAS,CAAC,CACvH,SAAQ,eAAe,CAAC,OAAO,EAAE,0BAA0B,CAAC,MAAM,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE,gCAAgC,CAAC;IAC7H,OAAgB,aAAa,WAAkD;cAEtD,cAAc,CACrC,UAAU,GAAE,0BAA0B,CAAC,MAAM,SAAS,CAAC,YAAY,CAAC,CAAC,EAAO,GAC3E,OAAO,CAAC,gCAAgC,EAAE,CAAC;CA0B/C"}
1
+ {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EACL,0BAA0B,EAC1B,gCAAgC,EAGhC,uCAAuC,EAExC,MAAM,2DAA2D,CAAA;AAElE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAE3D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAa,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAE5C,MAAM,MAAM,uCAAuC,CAAC,SAAS,SAAS,QAAQ,IAAI,aAAa,CAC7F,eAAe,CAAC,uCAAuC,CAAC,EACxD;IACE,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,SAAS,CAAA;CACxC,CACF,CAAA;AAED,qBAAa,iCAAiC,CAC5C,SAAS,SAAS,QAAQ,GAAG,QAAQ,EACrC,OAAO,SAAS,uCAAuC,CAAC,SAAS,CAAC,GAAG,uCAAuC,CAAC,SAAS,CAAC,CACvH,SAAQ,eAAe,CAAC,OAAO,EAAE,0BAA0B,CAAC,MAAM,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE,gCAAgC,CAAC;IAC7H,OAAgB,aAAa,WAAkD;cAEtD,cAAc,CACrC,UAAU,GAAE,0BAA0B,CAAC,MAAM,SAAS,CAAC,YAAY,CAAC,CAAC,EAAO,GAC3E,OAAO,CAAC,gCAAgC,EAAE,CAAC;CAgC/C"}
@@ -1 +1 @@
1
- {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EACL,0BAA0B,EAC1B,gCAAgC,EAGhC,uCAAuC,EAExC,MAAM,2DAA2D,CAAA;AAElE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAE3D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAa,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAE5C,MAAM,MAAM,uCAAuC,CAAC,SAAS,SAAS,QAAQ,IAAI,aAAa,CAC7F,eAAe,CAAC,uCAAuC,CAAC,EACxD;IACE,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,SAAS,CAAA;CACxC,CACF,CAAA;AAED,qBAAa,iCAAiC,CAC5C,SAAS,SAAS,QAAQ,GAAG,QAAQ,EACrC,OAAO,SAAS,uCAAuC,CAAC,SAAS,CAAC,GAAG,uCAAuC,CAAC,SAAS,CAAC,CACvH,SAAQ,eAAe,CAAC,OAAO,EAAE,0BAA0B,CAAC,MAAM,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE,gCAAgC,CAAC;IAC7H,OAAgB,aAAa,WAAkD;cAEtD,cAAc,CACrC,UAAU,GAAE,0BAA0B,CAAC,MAAM,SAAS,CAAC,YAAY,CAAC,CAAC,EAAO,GAC3E,OAAO,CAAC,gCAAgC,EAAE,CAAC;CA0B/C"}
1
+ {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EACL,0BAA0B,EAC1B,gCAAgC,EAGhC,uCAAuC,EAExC,MAAM,2DAA2D,CAAA;AAElE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAE3D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAa,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAE5C,MAAM,MAAM,uCAAuC,CAAC,SAAS,SAAS,QAAQ,IAAI,aAAa,CAC7F,eAAe,CAAC,uCAAuC,CAAC,EACxD;IACE,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,SAAS,CAAA;CACxC,CACF,CAAA;AAED,qBAAa,iCAAiC,CAC5C,SAAS,SAAS,QAAQ,GAAG,QAAQ,EACrC,OAAO,SAAS,uCAAuC,CAAC,SAAS,CAAC,GAAG,uCAAuC,CAAC,SAAS,CAAC,CACvH,SAAQ,eAAe,CAAC,OAAO,EAAE,0BAA0B,CAAC,MAAM,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE,gCAAgC,CAAC;IAC7H,OAAgB,aAAa,WAAkD;cAEtD,cAAc,CACrC,UAAU,GAAE,0BAA0B,CAAC,MAAM,SAAS,CAAC,YAAY,CAAC,CAAC,EAAO,GAC3E,OAAO,CAAC,gCAAgC,EAAE,CAAC;CAgC/C"}
@@ -1 +1 @@
1
- {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EACL,0BAA0B,EAC1B,gCAAgC,EAGhC,uCAAuC,EAExC,MAAM,2DAA2D,CAAA;AAElE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAE3D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAa,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAE5C,MAAM,MAAM,uCAAuC,CAAC,SAAS,SAAS,QAAQ,IAAI,aAAa,CAC7F,eAAe,CAAC,uCAAuC,CAAC,EACxD;IACE,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,SAAS,CAAA;CACxC,CACF,CAAA;AAED,qBAAa,iCAAiC,CAC5C,SAAS,SAAS,QAAQ,GAAG,QAAQ,EACrC,OAAO,SAAS,uCAAuC,CAAC,SAAS,CAAC,GAAG,uCAAuC,CAAC,SAAS,CAAC,CACvH,SAAQ,eAAe,CAAC,OAAO,EAAE,0BAA0B,CAAC,MAAM,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE,gCAAgC,CAAC;IAC7H,OAAgB,aAAa,WAAkD;cAEtD,cAAc,CACrC,UAAU,GAAE,0BAA0B,CAAC,MAAM,SAAS,CAAC,YAAY,CAAC,CAAC,EAAO,GAC3E,OAAO,CAAC,gCAAgC,EAAE,CAAC;CA0B/C"}
1
+ {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EACL,0BAA0B,EAC1B,gCAAgC,EAGhC,uCAAuC,EAExC,MAAM,2DAA2D,CAAA;AAElE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAE3D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAa,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAE5C,MAAM,MAAM,uCAAuC,CAAC,SAAS,SAAS,QAAQ,IAAI,aAAa,CAC7F,eAAe,CAAC,uCAAuC,CAAC,EACxD;IACE,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,SAAS,CAAA;CACxC,CACF,CAAA;AAED,qBAAa,iCAAiC,CAC5C,SAAS,SAAS,QAAQ,GAAG,QAAQ,EACrC,OAAO,SAAS,uCAAuC,CAAC,SAAS,CAAC,GAAG,uCAAuC,CAAC,SAAS,CAAC,CACvH,SAAQ,eAAe,CAAC,OAAO,EAAE,0BAA0B,CAAC,MAAM,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE,gCAAgC,CAAC;IAC7H,OAAgB,aAAa,WAAkD;cAEtD,cAAc,CACrC,UAAU,GAAE,0BAA0B,CAAC,MAAM,SAAS,CAAC,YAAY,CAAC,CAAC,EAAO,GAC3E,OAAO,CAAC,gCAAgC,EAAE,CAAC;CAgC/C"}
@@ -51,26 +51,32 @@ var CryptoContractFunctionReadWitness = class extends import_abstract_witness.Ab
51
51
  static configSchemas = [import_crypto_contract_function_read_payload_plugin.CryptoContractFunctionReadWitnessConfigSchema];
52
52
  async observeHandler(inPayloads = []) {
53
53
  await this.started("throw");
54
- const observations = await Promise.all(
55
- inPayloads.filter((0, import_payload_model.isPayloadOfSchemaType)(import_crypto_contract_function_read_payload_plugin.CryptoContractFunctionCallSchema)).map(async (callPayload) => {
56
- const fullCallPayload = { ...{ params: [] }, ...this.config.call, ...callPayload };
57
- const { address, functionName, params } = fullCallPayload;
58
- const validatedAddress = (0, import_assert.assertEx)(address, "Missing address");
59
- const contract = this.params.factory(validatedAddress);
60
- const func = (0, import_assert.assertEx)(contract.callStatic[(0, import_assert.assertEx)(functionName, "missing functionName")], `functionName [${functionName}] not found`);
61
- const rawResult = await func(...params ?? []);
62
- const result = import_ethers.BigNumber.isBigNumber(rawResult) ? { type: "BigNumber", value: rawResult.toHexString() } : { value: rawResult };
63
- const observation = {
64
- address: validatedAddress,
65
- call: await import_hash.PayloadHasher.hashAsync(fullCallPayload),
66
- chainId: (await contract.provider.getNetwork()).chainId,
67
- result,
68
- schema: import_crypto_contract_function_read_payload_plugin.CryptoContractFunctionCallResultSchema
69
- };
70
- return observation;
71
- })
72
- );
73
- return observations.flat();
54
+ try {
55
+ const observations = await Promise.all(
56
+ inPayloads.filter((0, import_payload_model.isPayloadOfSchemaType)(import_crypto_contract_function_read_payload_plugin.CryptoContractFunctionCallSchema)).map(async (callPayload) => {
57
+ const fullCallPayload = { ...{ params: [] }, ...this.config.call, ...callPayload };
58
+ const { address, functionName, params } = fullCallPayload;
59
+ const validatedAddress = (0, import_assert.assertEx)(address, "Missing address");
60
+ const contract = this.params.factory(validatedAddress);
61
+ const func = (0, import_assert.assertEx)(contract.callStatic[(0, import_assert.assertEx)(functionName, "missing functionName")], `functionName [${functionName}] not found`);
62
+ const rawResult = await func(...params ?? []);
63
+ const result = import_ethers.BigNumber.isBigNumber(rawResult) ? { type: "BigNumber", value: rawResult.toHexString() } : { value: rawResult };
64
+ const observation = {
65
+ address: validatedAddress,
66
+ call: await import_hash.PayloadHasher.hashAsync(fullCallPayload),
67
+ chainId: (await contract.provider.getNetwork()).chainId,
68
+ result,
69
+ schema: import_crypto_contract_function_read_payload_plugin.CryptoContractFunctionCallResultSchema
70
+ };
71
+ return observation;
72
+ })
73
+ );
74
+ return observations.flat();
75
+ } catch (ex) {
76
+ const error = ex;
77
+ console.log(`Error [${this.config.name}]: ${error.message}`);
78
+ }
79
+ return [];
74
80
  }
75
81
  };
76
82
 
@@ -153,10 +159,12 @@ var CryptoContractErc721Diviner = class _CryptoContractErc721Diviner extends Cry
153
159
  async reduceResults(address, callResults) {
154
160
  const name = await _CryptoContractErc721Diviner.findCallResult(address, "name", [], callResults);
155
161
  const symbol = await _CryptoContractErc721Diviner.findCallResult(address, "symbol", [], callResults);
162
+ const totalSupply = await _CryptoContractErc721Diviner.findCallResult(address, "totalSupply", [], callResults);
156
163
  return {
157
164
  name,
158
165
  schema: Erc721ContractInfoSchema,
159
- symbol
166
+ symbol,
167
+ totalSupply
160
168
  };
161
169
  }
162
170
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/Plugin.ts","../../src/Witness.ts","../../src/CryptoContractDiviner.ts","../../src/Erc721Diviner.ts","../../src/Erc1155Diviner.ts"],"sourcesContent":["import { CryptoContractFunctionReadWitnessPlugin } from './Plugin'\n\nexport * from './CryptoContractDiviner'\nexport * from './Erc721Diviner'\nexport * from './Erc1155Diviner'\nexport * from './Witness'\n\nexport { CryptoContractFunctionReadWitnessPlugin }\n\n// eslint-disable-next-line import/no-default-export\nexport default CryptoContractFunctionReadWitnessPlugin\n","import { NftSchema } from '@xyo-network/crypto-nft-payload-plugin'\nimport { PayloadSetSchema } from '@xyo-network/payload-model'\nimport { createPayloadSetWitnessPlugin } from '@xyo-network/payloadset-plugin'\n\nimport { CryptoContractFunctionReadWitness } from './Witness'\n\nexport const CryptoContractFunctionReadWitnessPlugin = () =>\n createPayloadSetWitnessPlugin<CryptoContractFunctionReadWitness>(\n { required: { [NftSchema]: 1 }, schema: PayloadSetSchema },\n {\n witness: async (params) => {\n const result = await CryptoContractFunctionReadWitness.create(params)\n return result\n },\n },\n )\n","import { assertEx } from '@xylabs/assert'\nimport { AbstractWitness } from '@xyo-network/abstract-witness'\nimport {\n CryptoContractFunctionCall,\n CryptoContractFunctionCallResult,\n CryptoContractFunctionCallResultSchema,\n CryptoContractFunctionCallSchema,\n CryptoContractFunctionReadWitnessConfig,\n CryptoContractFunctionReadWitnessConfigSchema,\n} from '@xyo-network/crypto-contract-function-read-payload-plugin'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { AnyConfigSchema } from '@xyo-network/module-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\nimport { WitnessParams } from '@xyo-network/witness-model'\nimport { BigNumber, Contract } from 'ethers'\n\nexport type CryptoContractFunctionReadWitnessParams<TContract extends Contract> = WitnessParams<\n AnyConfigSchema<CryptoContractFunctionReadWitnessConfig>,\n {\n factory: (address: string) => TContract\n }\n>\n\nexport class CryptoContractFunctionReadWitness<\n TContract extends Contract = Contract,\n TParams extends CryptoContractFunctionReadWitnessParams<TContract> = CryptoContractFunctionReadWitnessParams<TContract>,\n> extends AbstractWitness<TParams, CryptoContractFunctionCall<keyof TContract['callStatic']>, CryptoContractFunctionCallResult> {\n static override configSchemas = [CryptoContractFunctionReadWitnessConfigSchema]\n\n protected override async observeHandler(\n inPayloads: CryptoContractFunctionCall<keyof TContract['callStatic']>[] = [],\n ): Promise<CryptoContractFunctionCallResult[]> {\n await this.started('throw')\n const observations = await Promise.all(\n inPayloads.filter(isPayloadOfSchemaType(CryptoContractFunctionCallSchema)).map(async (callPayload) => {\n const fullCallPayload = { ...{ params: [] }, ...this.config.call, ...callPayload }\n const { address, functionName, params } = fullCallPayload\n const validatedAddress = assertEx(address, 'Missing address')\n const contract = this.params.factory(validatedAddress)\n const func = assertEx(contract.callStatic[assertEx(functionName, 'missing functionName')], `functionName [${functionName}] not found`)\n const rawResult = await func(...(params ?? []))\n const result: CryptoContractFunctionCallResult['result'] = BigNumber.isBigNumber(rawResult)\n ? { type: 'BigNumber', value: rawResult.toHexString() }\n : { value: rawResult }\n const observation: CryptoContractFunctionCallResult = {\n address: validatedAddress,\n call: await PayloadHasher.hashAsync(fullCallPayload),\n chainId: (await contract.provider.getNetwork()).chainId,\n result,\n schema: CryptoContractFunctionCallResultSchema,\n }\n return observation\n }),\n )\n\n return observations.flat()\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { Promisable } from '@xylabs/promise'\nimport { AbstractDiviner } from '@xyo-network/abstract-diviner'\nimport {\n CryptoContractFunctionCall,\n CryptoContractFunctionCallResult,\n CryptoContractFunctionCallResultSchema,\n CryptoContractFunctionCallSchema,\n} from '@xyo-network/crypto-contract-function-read-payload-plugin'\nimport { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { isPayloadOfSchemaType, Payload } from '@xyo-network/payload-model'\n\nexport type FindCallResult<TResult = string, TPayload = Payload> = [TResult, TPayload] | [undefined, TPayload] | [undefined, undefined]\n\nexport const CryptoContractDivinerConfigSchema = 'network.xyo.crypto.contract.diviner.config'\nexport type CryptoContractDivinerConfigSchema = typeof CryptoContractDivinerConfigSchema\n\nexport type CryptoContractDivinerConfig = DivinerConfig\nexport type CryptoContractDivinerParams = DivinerParams<CryptoContractDivinerConfig>\n\nexport const ContractInfoSchema = 'network.xyo.crypto.contract.info'\nexport type ContractInfoSchema = typeof ContractInfoSchema\n\nexport type OmittedContractInfo<TFields extends object | Payload | null = null, TSchema extends string | null = null> = Omit<\n ContractInfo<TFields, TSchema extends null ? (TFields extends Payload ? TFields['schema'] : never) : TSchema>,\n 'address' | 'chainId'\n>\n\nexport type ContractInfo<TFields extends object | null = null, TSchema extends string = ContractInfoSchema> = Payload<\n TFields extends null\n ? object\n : TFields & {\n address: string\n chainId: string\n },\n TSchema\n>\n\nexport abstract class CryptoContractDiviner<\n TContractInfo extends Payload<Omit<ContractInfo, 'schema'>> = ContractInfo,\n TParams extends CryptoContractDivinerParams = CryptoContractDivinerParams,\n> extends AbstractDiviner<TParams> {\n static override configSchemas = [CryptoContractDivinerConfigSchema]\n\n protected static async findCallResult<TResult = string>(\n address: string,\n functionName: string,\n params: unknown[],\n payloads: CryptoContractFunctionCallResult[],\n ): Promise<TResult | undefined> {\n const callHash = await this.generateCallHash(address, functionName, params)\n const foundPayload = payloads.find((payload) => payload.call === callHash)\n return foundPayload?.result.value as TResult | undefined\n }\n\n protected static async generateCallHash(address: string, functionName: string, params: unknown[]) {\n const callPayload: CryptoContractFunctionCall = {\n address,\n functionName,\n params,\n schema: CryptoContractFunctionCallSchema,\n }\n return await PayloadHasher.hashAsync(callPayload)\n }\n\n protected static matchingExistingField<R = string, T extends Payload = Payload>(objs: T[], field: keyof T) {\n const expectedValue = objs.at(0)?.[field] as R\n const didNotMatch = objs.reduce((prev, obj) => {\n return prev || obj[field] !== expectedValue\n }, false)\n return didNotMatch ? undefined : expectedValue\n }\n\n protected contractInfoRequiredFields(callResults: CryptoContractFunctionCallResult[]): Promisable<Omit<ContractInfo, 'schema'>> {\n return {\n address: assertEx(CryptoContractDiviner.matchingExistingField(callResults, 'address'), 'Mismatched address'),\n chainId: assertEx(CryptoContractDiviner.matchingExistingField(callResults, 'chainId'), 'Mismatched chainId'),\n }\n }\n\n protected override async divineHandler(inPayloads: CryptoContractFunctionCallResult[] = []): Promise<TContractInfo[]> {\n const callResults = inPayloads.filter(isPayloadOfSchemaType<CryptoContractFunctionCallResult>(CryptoContractFunctionCallResultSchema))\n const addresses = Object.keys(\n callResults.reduce<Record<string, boolean>>((prev, result) => {\n if (result.address) {\n prev[result.address] = true\n }\n return prev\n }, {}),\n )\n const result = await Promise.all(\n addresses.map(async (address) => {\n const foundCallResults = callResults.filter((callResult) => callResult.address === address)\n return {\n ...(await this.reduceResults(address, foundCallResults)),\n ...this.contractInfoRequiredFields(foundCallResults),\n } as TContractInfo\n }),\n )\n\n return result\n }\n\n protected abstract reduceResults(\n address: string,\n callResults: CryptoContractFunctionCallResult[],\n ): Promisable<Omit<TContractInfo, 'address' | 'chainId'>>\n}\n","import { CryptoContractFunctionCallResult } from '@xyo-network/crypto-contract-function-read-payload-plugin'\nimport { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model'\n\nimport { ContractInfo, CryptoContractDiviner, OmittedContractInfo } from './CryptoContractDiviner'\n\nexport const CryptoContractErc721DivinerConfigSchema = 'network.xyo.crypto.contract.erc721.info.diviner.config'\nexport type CryptoContractErc721DivinerConfigSchema = typeof CryptoContractErc721DivinerConfigSchema\n\nexport type CryptoContractErc721DivinerConfig = DivinerConfig\nexport type CryptoContractErc721DivinerParams = DivinerParams<CryptoContractErc721DivinerConfig>\n\nexport const Erc721ContractInfoSchema = 'network.xyo.crypto.contract.erc721.info'\nexport type Erc721ContractInfoSchema = typeof Erc721ContractInfoSchema\n\nexport type Erc721ContractInfo = ContractInfo<\n {\n name?: string\n symbol?: string\n totalSupply?: string\n },\n Erc721ContractInfoSchema\n>\n\nexport class CryptoContractErc721Diviner<\n TParams extends CryptoContractErc721DivinerParams = CryptoContractErc721DivinerParams,\n> extends CryptoContractDiviner<Erc721ContractInfo, TParams> {\n static override configSchemas = [CryptoContractErc721DivinerConfigSchema]\n\n protected override async reduceResults(\n address: string,\n callResults: CryptoContractFunctionCallResult[],\n ): Promise<OmittedContractInfo<Erc721ContractInfo>> {\n const name = await CryptoContractErc721Diviner.findCallResult(address, 'name', [], callResults)\n const symbol = await CryptoContractErc721Diviner.findCallResult(address, 'symbol', [], callResults)\n return {\n name,\n schema: Erc721ContractInfoSchema,\n symbol,\n }\n }\n}\n","import { CryptoContractFunctionCallResult } from '@xyo-network/crypto-contract-function-read-payload-plugin'\nimport { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model'\n\nimport { ContractInfo, CryptoContractDiviner, OmittedContractInfo } from './CryptoContractDiviner'\n\nexport const CryptoContractErc1155DivinerConfigSchema = 'network.xyo.crypto.contract.erc1155.info.diviner.config'\nexport type CryptoContractErc1155DivinerConfigSchema = typeof CryptoContractErc1155DivinerConfigSchema\n\nexport type CryptoContractErc1155DivinerConfig = DivinerConfig\nexport type CryptoContractErc1155DivinerParams = DivinerParams<CryptoContractErc1155DivinerConfig>\n\nexport const Erc1155ContractInfoSchema = 'network.xyo.crypto.contract.erc1155.info'\nexport type Erc1155ContractInfoSchema = typeof Erc1155ContractInfoSchema\n\nexport type Erc1155ContractInfo = ContractInfo<\n {\n uri?: string\n },\n Erc1155ContractInfoSchema\n>\n\nexport class CryptoContractErc1155Diviner<\n TParams extends CryptoContractErc1155DivinerParams = CryptoContractErc1155DivinerParams,\n> extends CryptoContractDiviner<Erc1155ContractInfo, TParams> {\n static override configSchemas = [CryptoContractErc1155DivinerConfigSchema]\n\n protected override async reduceResults(\n address: string,\n callResults: CryptoContractFunctionCallResult[],\n ): Promise<OmittedContractInfo<Erc1155ContractInfo>> {\n const uri = await CryptoContractErc1155Diviner.findCallResult(address, 'uri', [], callResults)\n return {\n schema: Erc1155ContractInfoSchema,\n uri,\n }\n }\n}\n"],"mappings":"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","names":["import_payload_model","import_assert","import_crypto_contract_function_read_payload_plugin","import_hash","import_payload_model","result"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/Plugin.ts","../../src/Witness.ts","../../src/CryptoContractDiviner.ts","../../src/Erc721Diviner.ts","../../src/Erc1155Diviner.ts"],"sourcesContent":["import { CryptoContractFunctionReadWitnessPlugin } from './Plugin'\n\nexport * from './CryptoContractDiviner'\nexport * from './Erc721Diviner'\nexport * from './Erc1155Diviner'\nexport * from './Witness'\n\nexport { CryptoContractFunctionReadWitnessPlugin }\n\n// eslint-disable-next-line import/no-default-export\nexport default CryptoContractFunctionReadWitnessPlugin\n","import { NftSchema } from '@xyo-network/crypto-nft-payload-plugin'\nimport { PayloadSetSchema } from '@xyo-network/payload-model'\nimport { createPayloadSetWitnessPlugin } from '@xyo-network/payloadset-plugin'\n\nimport { CryptoContractFunctionReadWitness } from './Witness'\n\nexport const CryptoContractFunctionReadWitnessPlugin = () =>\n createPayloadSetWitnessPlugin<CryptoContractFunctionReadWitness>(\n { required: { [NftSchema]: 1 }, schema: PayloadSetSchema },\n {\n witness: async (params) => {\n const result = await CryptoContractFunctionReadWitness.create(params)\n return result\n },\n },\n )\n","import { assertEx } from '@xylabs/assert'\nimport { AbstractWitness } from '@xyo-network/abstract-witness'\nimport {\n CryptoContractFunctionCall,\n CryptoContractFunctionCallResult,\n CryptoContractFunctionCallResultSchema,\n CryptoContractFunctionCallSchema,\n CryptoContractFunctionReadWitnessConfig,\n CryptoContractFunctionReadWitnessConfigSchema,\n} from '@xyo-network/crypto-contract-function-read-payload-plugin'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { AnyConfigSchema } from '@xyo-network/module-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\nimport { WitnessParams } from '@xyo-network/witness-model'\nimport { BigNumber, Contract } from 'ethers'\n\nexport type CryptoContractFunctionReadWitnessParams<TContract extends Contract> = WitnessParams<\n AnyConfigSchema<CryptoContractFunctionReadWitnessConfig>,\n {\n factory: (address: string) => TContract\n }\n>\n\nexport class CryptoContractFunctionReadWitness<\n TContract extends Contract = Contract,\n TParams extends CryptoContractFunctionReadWitnessParams<TContract> = CryptoContractFunctionReadWitnessParams<TContract>,\n> extends AbstractWitness<TParams, CryptoContractFunctionCall<keyof TContract['callStatic']>, CryptoContractFunctionCallResult> {\n static override configSchemas = [CryptoContractFunctionReadWitnessConfigSchema]\n\n protected override async observeHandler(\n inPayloads: CryptoContractFunctionCall<keyof TContract['callStatic']>[] = [],\n ): Promise<CryptoContractFunctionCallResult[]> {\n await this.started('throw')\n try {\n const observations = await Promise.all(\n inPayloads.filter(isPayloadOfSchemaType(CryptoContractFunctionCallSchema)).map(async (callPayload) => {\n const fullCallPayload = { ...{ params: [] }, ...this.config.call, ...callPayload }\n const { address, functionName, params } = fullCallPayload\n const validatedAddress = assertEx(address, 'Missing address')\n const contract = this.params.factory(validatedAddress)\n const func = assertEx(contract.callStatic[assertEx(functionName, 'missing functionName')], `functionName [${functionName}] not found`)\n const rawResult = await func(...(params ?? []))\n const result: CryptoContractFunctionCallResult['result'] = BigNumber.isBigNumber(rawResult)\n ? { type: 'BigNumber', value: rawResult.toHexString() }\n : { value: rawResult }\n const observation: CryptoContractFunctionCallResult = {\n address: validatedAddress,\n call: await PayloadHasher.hashAsync(fullCallPayload),\n chainId: (await contract.provider.getNetwork()).chainId,\n result,\n schema: CryptoContractFunctionCallResultSchema,\n }\n return observation\n }),\n )\n return observations.flat()\n } catch (ex) {\n const error = ex as Error\n console.log(`Error [${this.config.name}]: ${error.message}`)\n }\n\n return []\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { Promisable } from '@xylabs/promise'\nimport { AbstractDiviner } from '@xyo-network/abstract-diviner'\nimport {\n CryptoContractFunctionCall,\n CryptoContractFunctionCallResult,\n CryptoContractFunctionCallResultSchema,\n CryptoContractFunctionCallSchema,\n} from '@xyo-network/crypto-contract-function-read-payload-plugin'\nimport { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { isPayloadOfSchemaType, Payload } from '@xyo-network/payload-model'\n\nexport type FindCallResult<TResult = string, TPayload = Payload> = [TResult, TPayload] | [undefined, TPayload] | [undefined, undefined]\n\nexport const CryptoContractDivinerConfigSchema = 'network.xyo.crypto.contract.diviner.config'\nexport type CryptoContractDivinerConfigSchema = typeof CryptoContractDivinerConfigSchema\n\nexport type CryptoContractDivinerConfig = DivinerConfig\nexport type CryptoContractDivinerParams = DivinerParams<CryptoContractDivinerConfig>\n\nexport const ContractInfoSchema = 'network.xyo.crypto.contract.info'\nexport type ContractInfoSchema = typeof ContractInfoSchema\n\nexport type OmittedContractInfo<TFields extends object | Payload | null = null, TSchema extends string | null = null> = Omit<\n ContractInfo<TFields, TSchema extends null ? (TFields extends Payload ? TFields['schema'] : never) : TSchema>,\n 'address' | 'chainId'\n>\n\nexport type ContractInfo<TFields extends object | null = null, TSchema extends string = ContractInfoSchema> = Payload<\n TFields extends null\n ? object\n : TFields & {\n address: string\n chainId: string\n },\n TSchema\n>\n\nexport abstract class CryptoContractDiviner<\n TContractInfo extends Payload<Omit<ContractInfo, 'schema'>> = ContractInfo,\n TParams extends CryptoContractDivinerParams = CryptoContractDivinerParams,\n> extends AbstractDiviner<TParams> {\n static override configSchemas = [CryptoContractDivinerConfigSchema]\n\n protected static async findCallResult<TResult = string>(\n address: string,\n functionName: string,\n params: unknown[],\n payloads: CryptoContractFunctionCallResult[],\n ): Promise<TResult | undefined> {\n const callHash = await this.generateCallHash(address, functionName, params)\n const foundPayload = payloads.find((payload) => payload.call === callHash)\n return foundPayload?.result.value as TResult | undefined\n }\n\n protected static async generateCallHash(address: string, functionName: string, params: unknown[]) {\n const callPayload: CryptoContractFunctionCall = {\n address,\n functionName,\n params,\n schema: CryptoContractFunctionCallSchema,\n }\n return await PayloadHasher.hashAsync(callPayload)\n }\n\n protected static matchingExistingField<R = string, T extends Payload = Payload>(objs: T[], field: keyof T) {\n const expectedValue = objs.at(0)?.[field] as R\n const didNotMatch = objs.reduce((prev, obj) => {\n return prev || obj[field] !== expectedValue\n }, false)\n return didNotMatch ? undefined : expectedValue\n }\n\n protected contractInfoRequiredFields(callResults: CryptoContractFunctionCallResult[]): Promisable<Omit<ContractInfo, 'schema'>> {\n return {\n address: assertEx(CryptoContractDiviner.matchingExistingField(callResults, 'address'), 'Mismatched address'),\n chainId: assertEx(CryptoContractDiviner.matchingExistingField(callResults, 'chainId'), 'Mismatched chainId'),\n }\n }\n\n protected override async divineHandler(inPayloads: CryptoContractFunctionCallResult[] = []): Promise<TContractInfo[]> {\n const callResults = inPayloads.filter(isPayloadOfSchemaType<CryptoContractFunctionCallResult>(CryptoContractFunctionCallResultSchema))\n const addresses = Object.keys(\n callResults.reduce<Record<string, boolean>>((prev, result) => {\n if (result.address) {\n prev[result.address] = true\n }\n return prev\n }, {}),\n )\n const result = await Promise.all(\n addresses.map(async (address) => {\n const foundCallResults = callResults.filter((callResult) => callResult.address === address)\n return {\n ...(await this.reduceResults(address, foundCallResults)),\n ...this.contractInfoRequiredFields(foundCallResults),\n } as TContractInfo\n }),\n )\n\n return result\n }\n\n protected abstract reduceResults(\n address: string,\n callResults: CryptoContractFunctionCallResult[],\n ): Promisable<Omit<TContractInfo, 'address' | 'chainId'>>\n}\n","import { CryptoContractFunctionCallResult } from '@xyo-network/crypto-contract-function-read-payload-plugin'\nimport { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model'\n\nimport { ContractInfo, CryptoContractDiviner, OmittedContractInfo } from './CryptoContractDiviner'\n\nexport const CryptoContractErc721DivinerConfigSchema = 'network.xyo.crypto.contract.erc721.info.diviner.config'\nexport type CryptoContractErc721DivinerConfigSchema = typeof CryptoContractErc721DivinerConfigSchema\n\nexport type CryptoContractErc721DivinerConfig = DivinerConfig\nexport type CryptoContractErc721DivinerParams = DivinerParams<CryptoContractErc721DivinerConfig>\n\nexport const Erc721ContractInfoSchema = 'network.xyo.crypto.contract.erc721.info'\nexport type Erc721ContractInfoSchema = typeof Erc721ContractInfoSchema\n\nexport type Erc721ContractInfo = ContractInfo<\n {\n name?: string\n symbol?: string\n totalSupply?: string\n },\n Erc721ContractInfoSchema\n>\n\nexport class CryptoContractErc721Diviner<\n TParams extends CryptoContractErc721DivinerParams = CryptoContractErc721DivinerParams,\n> extends CryptoContractDiviner<Erc721ContractInfo, TParams> {\n static override configSchemas = [CryptoContractErc721DivinerConfigSchema]\n\n protected override async reduceResults(\n address: string,\n callResults: CryptoContractFunctionCallResult[],\n ): Promise<OmittedContractInfo<Erc721ContractInfo>> {\n const name = await CryptoContractErc721Diviner.findCallResult(address, 'name', [], callResults)\n const symbol = await CryptoContractErc721Diviner.findCallResult(address, 'symbol', [], callResults)\n const totalSupply = await CryptoContractErc721Diviner.findCallResult(address, 'totalSupply', [], callResults)\n return {\n name,\n schema: Erc721ContractInfoSchema,\n symbol,\n totalSupply,\n }\n }\n}\n","import { CryptoContractFunctionCallResult } from '@xyo-network/crypto-contract-function-read-payload-plugin'\nimport { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model'\n\nimport { ContractInfo, CryptoContractDiviner, OmittedContractInfo } from './CryptoContractDiviner'\n\nexport const CryptoContractErc1155DivinerConfigSchema = 'network.xyo.crypto.contract.erc1155.info.diviner.config'\nexport type CryptoContractErc1155DivinerConfigSchema = typeof CryptoContractErc1155DivinerConfigSchema\n\nexport type CryptoContractErc1155DivinerConfig = DivinerConfig\nexport type CryptoContractErc1155DivinerParams = DivinerParams<CryptoContractErc1155DivinerConfig>\n\nexport const Erc1155ContractInfoSchema = 'network.xyo.crypto.contract.erc1155.info'\nexport type Erc1155ContractInfoSchema = typeof Erc1155ContractInfoSchema\n\nexport type Erc1155ContractInfo = ContractInfo<\n {\n uri?: string\n },\n Erc1155ContractInfoSchema\n>\n\nexport class CryptoContractErc1155Diviner<\n TParams extends CryptoContractErc1155DivinerParams = CryptoContractErc1155DivinerParams,\n> extends CryptoContractDiviner<Erc1155ContractInfo, TParams> {\n static override configSchemas = [CryptoContractErc1155DivinerConfigSchema]\n\n protected override async reduceResults(\n address: string,\n callResults: CryptoContractFunctionCallResult[],\n ): Promise<OmittedContractInfo<Erc1155ContractInfo>> {\n const uri = await CryptoContractErc1155Diviner.findCallResult(address, 'uri', [], callResults)\n return {\n schema: Erc1155ContractInfoSchema,\n uri,\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,uCAA0B;AAC1B,IAAAA,wBAAiC;AACjC,+BAA8C;;;ACF9C,oBAAyB;AACzB,8BAAgC;AAChC,0DAOO;AACP,kBAA8B;AAE9B,2BAAsC;AAEtC,oBAAoC;AAS7B,IAAM,oCAAN,cAGG,wCAAsH;AAAA,EAC9H,OAAgB,gBAAgB,CAAC,iGAA6C;AAAA,EAE9E,MAAyB,eACvB,aAA0E,CAAC,GAC9B;AAC7C,UAAM,KAAK,QAAQ,OAAO;AAC1B,QAAI;AACF,YAAM,eAAe,MAAM,QAAQ;AAAA,QACjC,WAAW,WAAO,4CAAsB,oFAAgC,CAAC,EAAE,IAAI,OAAO,gBAAgB;AACpG,gBAAM,kBAAkB,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,GAAG,GAAG,KAAK,OAAO,MAAM,GAAG,YAAY;AACjF,gBAAM,EAAE,SAAS,cAAc,OAAO,IAAI;AAC1C,gBAAM,uBAAmB,wBAAS,SAAS,iBAAiB;AAC5D,gBAAM,WAAW,KAAK,OAAO,QAAQ,gBAAgB;AACrD,gBAAM,WAAO,wBAAS,SAAS,eAAW,wBAAS,cAAc,sBAAsB,CAAC,GAAG,iBAAiB,YAAY,aAAa;AACrI,gBAAM,YAAY,MAAM,KAAK,GAAI,UAAU,CAAC,CAAE;AAC9C,gBAAM,SAAqD,wBAAU,YAAY,SAAS,IACtF,EAAE,MAAM,aAAa,OAAO,UAAU,YAAY,EAAE,IACpD,EAAE,OAAO,UAAU;AACvB,gBAAM,cAAgD;AAAA,YACpD,SAAS;AAAA,YACT,MAAM,MAAM,0BAAc,UAAU,eAAe;AAAA,YACnD,UAAU,MAAM,SAAS,SAAS,WAAW,GAAG;AAAA,YAChD;AAAA,YACA,QAAQ;AAAA,UACV;AACA,iBAAO;AAAA,QACT,CAAC;AAAA,MACH;AACA,aAAO,aAAa,KAAK;AAAA,IAC3B,SAAS,IAAI;AACX,YAAM,QAAQ;AACd,cAAQ,IAAI,UAAU,KAAK,OAAO,IAAI,MAAM,MAAM,OAAO,EAAE;AAAA,IAC7D;AAEA,WAAO,CAAC;AAAA,EACV;AACF;;;ADzDO,IAAM,0CAA0C,UACrD;AAAA,EACE,EAAE,UAAU,EAAE,CAAC,0CAAS,GAAG,EAAE,GAAG,QAAQ,uCAAiB;AAAA,EACzD;AAAA,IACE,SAAS,OAAO,WAAW;AACzB,YAAM,SAAS,MAAM,kCAAkC,OAAO,MAAM;AACpE,aAAO;AAAA,IACT;AAAA,EACF;AACF;;;AEfF,IAAAC,iBAAyB;AAEzB,8BAAgC;AAChC,IAAAC,uDAKO;AAEP,IAAAC,eAA8B;AAC9B,IAAAC,wBAA+C;AAIxC,IAAM,oCAAoC;AAM1C,IAAM,qBAAqB;AAkB3B,IAAe,wBAAf,MAAe,+BAGZ,wCAAyB;AAAA,EACjC,OAAgB,gBAAgB,CAAC,iCAAiC;AAAA,EAElE,aAAuB,eACrB,SACA,cACA,QACA,UAC8B;AAC9B,UAAM,WAAW,MAAM,KAAK,iBAAiB,SAAS,cAAc,MAAM;AAC1E,UAAM,eAAe,SAAS,KAAK,CAAC,YAAY,QAAQ,SAAS,QAAQ;AACzE,WAAO,cAAc,OAAO;AAAA,EAC9B;AAAA,EAEA,aAAuB,iBAAiB,SAAiB,cAAsB,QAAmB;AAChG,UAAM,cAA0C;AAAA,MAC9C;AAAA,MACA;AAAA,MACA;AAAA,MACA,QAAQ;AAAA,IACV;AACA,WAAO,MAAM,2BAAc,UAAU,WAAW;AAAA,EAClD;AAAA,EAEA,OAAiB,sBAA+D,MAAW,OAAgB;AACzG,UAAM,gBAAgB,KAAK,GAAG,CAAC,IAAI,KAAK;AACxC,UAAM,cAAc,KAAK,OAAO,CAAC,MAAM,QAAQ;AAC7C,aAAO,QAAQ,IAAI,KAAK,MAAM;AAAA,IAChC,GAAG,KAAK;AACR,WAAO,cAAc,SAAY;AAAA,EACnC;AAAA,EAEU,2BAA2B,aAA2F;AAC9H,WAAO;AAAA,MACL,aAAS,yBAAS,uBAAsB,sBAAsB,aAAa,SAAS,GAAG,oBAAoB;AAAA,MAC3G,aAAS,yBAAS,uBAAsB,sBAAsB,aAAa,SAAS,GAAG,oBAAoB;AAAA,IAC7G;AAAA,EACF;AAAA,EAEA,MAAyB,cAAc,aAAiD,CAAC,GAA6B;AACpH,UAAM,cAAc,WAAW,WAAO,6CAAwD,2FAAsC,CAAC;AACrI,UAAM,YAAY,OAAO;AAAA,MACvB,YAAY,OAAgC,CAAC,MAAMC,YAAW;AAC5D,YAAIA,QAAO,SAAS;AAClB,eAAKA,QAAO,OAAO,IAAI;AAAA,QACzB;AACA,eAAO;AAAA,MACT,GAAG,CAAC,CAAC;AAAA,IACP;AACA,UAAM,SAAS,MAAM,QAAQ;AAAA,MAC3B,UAAU,IAAI,OAAO,YAAY;AAC/B,cAAM,mBAAmB,YAAY,OAAO,CAAC,eAAe,WAAW,YAAY,OAAO;AAC1F,eAAO;AAAA,UACL,GAAI,MAAM,KAAK,cAAc,SAAS,gBAAgB;AAAA,UACtD,GAAG,KAAK,2BAA2B,gBAAgB;AAAA,QACrD;AAAA,MACF,CAAC;AAAA,IACH;AAEA,WAAO;AAAA,EACT;AAMF;;;ACvGO,IAAM,0CAA0C;AAMhD,IAAM,2BAA2B;AAYjC,IAAM,8BAAN,MAAM,qCAEH,sBAAmD;AAAA,EAC3D,OAAgB,gBAAgB,CAAC,uCAAuC;AAAA,EAExE,MAAyB,cACvB,SACA,aACkD;AAClD,UAAM,OAAO,MAAM,6BAA4B,eAAe,SAAS,QAAQ,CAAC,GAAG,WAAW;AAC9F,UAAM,SAAS,MAAM,6BAA4B,eAAe,SAAS,UAAU,CAAC,GAAG,WAAW;AAClG,UAAM,cAAc,MAAM,6BAA4B,eAAe,SAAS,eAAe,CAAC,GAAG,WAAW;AAC5G,WAAO;AAAA,MACL;AAAA,MACA,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;;;ACrCO,IAAM,2CAA2C;AAMjD,IAAM,4BAA4B;AAUlC,IAAM,+BAAN,MAAM,sCAEH,sBAAoD;AAAA,EAC5D,OAAgB,gBAAgB,CAAC,wCAAwC;AAAA,EAEzE,MAAyB,cACvB,SACA,aACmD;AACnD,UAAM,MAAM,MAAM,8BAA6B,eAAe,SAAS,OAAO,CAAC,GAAG,WAAW;AAC7F,WAAO;AAAA,MACL,QAAQ;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACF;;;AL1BA,IAAO,cAAQ;","names":["import_payload_model","import_assert","import_crypto_contract_function_read_payload_plugin","import_hash","import_payload_model","result"]}
@@ -18,26 +18,32 @@ var CryptoContractFunctionReadWitness = class extends AbstractWitness {
18
18
  static configSchemas = [CryptoContractFunctionReadWitnessConfigSchema];
19
19
  async observeHandler(inPayloads = []) {
20
20
  await this.started("throw");
21
- const observations = await Promise.all(
22
- inPayloads.filter(isPayloadOfSchemaType(CryptoContractFunctionCallSchema)).map(async (callPayload) => {
23
- const fullCallPayload = { ...{ params: [] }, ...this.config.call, ...callPayload };
24
- const { address, functionName, params } = fullCallPayload;
25
- const validatedAddress = assertEx(address, "Missing address");
26
- const contract = this.params.factory(validatedAddress);
27
- const func = assertEx(contract.callStatic[assertEx(functionName, "missing functionName")], `functionName [${functionName}] not found`);
28
- const rawResult = await func(...params ?? []);
29
- const result = BigNumber.isBigNumber(rawResult) ? { type: "BigNumber", value: rawResult.toHexString() } : { value: rawResult };
30
- const observation = {
31
- address: validatedAddress,
32
- call: await PayloadHasher.hashAsync(fullCallPayload),
33
- chainId: (await contract.provider.getNetwork()).chainId,
34
- result,
35
- schema: CryptoContractFunctionCallResultSchema
36
- };
37
- return observation;
38
- })
39
- );
40
- return observations.flat();
21
+ try {
22
+ const observations = await Promise.all(
23
+ inPayloads.filter(isPayloadOfSchemaType(CryptoContractFunctionCallSchema)).map(async (callPayload) => {
24
+ const fullCallPayload = { ...{ params: [] }, ...this.config.call, ...callPayload };
25
+ const { address, functionName, params } = fullCallPayload;
26
+ const validatedAddress = assertEx(address, "Missing address");
27
+ const contract = this.params.factory(validatedAddress);
28
+ const func = assertEx(contract.callStatic[assertEx(functionName, "missing functionName")], `functionName [${functionName}] not found`);
29
+ const rawResult = await func(...params ?? []);
30
+ const result = BigNumber.isBigNumber(rawResult) ? { type: "BigNumber", value: rawResult.toHexString() } : { value: rawResult };
31
+ const observation = {
32
+ address: validatedAddress,
33
+ call: await PayloadHasher.hashAsync(fullCallPayload),
34
+ chainId: (await contract.provider.getNetwork()).chainId,
35
+ result,
36
+ schema: CryptoContractFunctionCallResultSchema
37
+ };
38
+ return observation;
39
+ })
40
+ );
41
+ return observations.flat();
42
+ } catch (ex) {
43
+ const error = ex;
44
+ console.log(`Error [${this.config.name}]: ${error.message}`);
45
+ }
46
+ return [];
41
47
  }
42
48
  };
43
49
 
@@ -123,10 +129,12 @@ var CryptoContractErc721Diviner = class _CryptoContractErc721Diviner extends Cry
123
129
  async reduceResults(address, callResults) {
124
130
  const name = await _CryptoContractErc721Diviner.findCallResult(address, "name", [], callResults);
125
131
  const symbol = await _CryptoContractErc721Diviner.findCallResult(address, "symbol", [], callResults);
132
+ const totalSupply = await _CryptoContractErc721Diviner.findCallResult(address, "totalSupply", [], callResults);
126
133
  return {
127
134
  name,
128
135
  schema: Erc721ContractInfoSchema,
129
- symbol
136
+ symbol,
137
+ totalSupply
130
138
  };
131
139
  }
132
140
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Plugin.ts","../../src/Witness.ts","../../src/CryptoContractDiviner.ts","../../src/Erc721Diviner.ts","../../src/Erc1155Diviner.ts","../../src/index.ts"],"sourcesContent":["import { NftSchema } from '@xyo-network/crypto-nft-payload-plugin'\nimport { PayloadSetSchema } from '@xyo-network/payload-model'\nimport { createPayloadSetWitnessPlugin } from '@xyo-network/payloadset-plugin'\n\nimport { CryptoContractFunctionReadWitness } from './Witness'\n\nexport const CryptoContractFunctionReadWitnessPlugin = () =>\n createPayloadSetWitnessPlugin<CryptoContractFunctionReadWitness>(\n { required: { [NftSchema]: 1 }, schema: PayloadSetSchema },\n {\n witness: async (params) => {\n const result = await CryptoContractFunctionReadWitness.create(params)\n return result\n },\n },\n )\n","import { assertEx } from '@xylabs/assert'\nimport { AbstractWitness } from '@xyo-network/abstract-witness'\nimport {\n CryptoContractFunctionCall,\n CryptoContractFunctionCallResult,\n CryptoContractFunctionCallResultSchema,\n CryptoContractFunctionCallSchema,\n CryptoContractFunctionReadWitnessConfig,\n CryptoContractFunctionReadWitnessConfigSchema,\n} from '@xyo-network/crypto-contract-function-read-payload-plugin'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { AnyConfigSchema } from '@xyo-network/module-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\nimport { WitnessParams } from '@xyo-network/witness-model'\nimport { BigNumber, Contract } from 'ethers'\n\nexport type CryptoContractFunctionReadWitnessParams<TContract extends Contract> = WitnessParams<\n AnyConfigSchema<CryptoContractFunctionReadWitnessConfig>,\n {\n factory: (address: string) => TContract\n }\n>\n\nexport class CryptoContractFunctionReadWitness<\n TContract extends Contract = Contract,\n TParams extends CryptoContractFunctionReadWitnessParams<TContract> = CryptoContractFunctionReadWitnessParams<TContract>,\n> extends AbstractWitness<TParams, CryptoContractFunctionCall<keyof TContract['callStatic']>, CryptoContractFunctionCallResult> {\n static override configSchemas = [CryptoContractFunctionReadWitnessConfigSchema]\n\n protected override async observeHandler(\n inPayloads: CryptoContractFunctionCall<keyof TContract['callStatic']>[] = [],\n ): Promise<CryptoContractFunctionCallResult[]> {\n await this.started('throw')\n const observations = await Promise.all(\n inPayloads.filter(isPayloadOfSchemaType(CryptoContractFunctionCallSchema)).map(async (callPayload) => {\n const fullCallPayload = { ...{ params: [] }, ...this.config.call, ...callPayload }\n const { address, functionName, params } = fullCallPayload\n const validatedAddress = assertEx(address, 'Missing address')\n const contract = this.params.factory(validatedAddress)\n const func = assertEx(contract.callStatic[assertEx(functionName, 'missing functionName')], `functionName [${functionName}] not found`)\n const rawResult = await func(...(params ?? []))\n const result: CryptoContractFunctionCallResult['result'] = BigNumber.isBigNumber(rawResult)\n ? { type: 'BigNumber', value: rawResult.toHexString() }\n : { value: rawResult }\n const observation: CryptoContractFunctionCallResult = {\n address: validatedAddress,\n call: await PayloadHasher.hashAsync(fullCallPayload),\n chainId: (await contract.provider.getNetwork()).chainId,\n result,\n schema: CryptoContractFunctionCallResultSchema,\n }\n return observation\n }),\n )\n\n return observations.flat()\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { Promisable } from '@xylabs/promise'\nimport { AbstractDiviner } from '@xyo-network/abstract-diviner'\nimport {\n CryptoContractFunctionCall,\n CryptoContractFunctionCallResult,\n CryptoContractFunctionCallResultSchema,\n CryptoContractFunctionCallSchema,\n} from '@xyo-network/crypto-contract-function-read-payload-plugin'\nimport { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { isPayloadOfSchemaType, Payload } from '@xyo-network/payload-model'\n\nexport type FindCallResult<TResult = string, TPayload = Payload> = [TResult, TPayload] | [undefined, TPayload] | [undefined, undefined]\n\nexport const CryptoContractDivinerConfigSchema = 'network.xyo.crypto.contract.diviner.config'\nexport type CryptoContractDivinerConfigSchema = typeof CryptoContractDivinerConfigSchema\n\nexport type CryptoContractDivinerConfig = DivinerConfig\nexport type CryptoContractDivinerParams = DivinerParams<CryptoContractDivinerConfig>\n\nexport const ContractInfoSchema = 'network.xyo.crypto.contract.info'\nexport type ContractInfoSchema = typeof ContractInfoSchema\n\nexport type OmittedContractInfo<TFields extends object | Payload | null = null, TSchema extends string | null = null> = Omit<\n ContractInfo<TFields, TSchema extends null ? (TFields extends Payload ? TFields['schema'] : never) : TSchema>,\n 'address' | 'chainId'\n>\n\nexport type ContractInfo<TFields extends object | null = null, TSchema extends string = ContractInfoSchema> = Payload<\n TFields extends null\n ? object\n : TFields & {\n address: string\n chainId: string\n },\n TSchema\n>\n\nexport abstract class CryptoContractDiviner<\n TContractInfo extends Payload<Omit<ContractInfo, 'schema'>> = ContractInfo,\n TParams extends CryptoContractDivinerParams = CryptoContractDivinerParams,\n> extends AbstractDiviner<TParams> {\n static override configSchemas = [CryptoContractDivinerConfigSchema]\n\n protected static async findCallResult<TResult = string>(\n address: string,\n functionName: string,\n params: unknown[],\n payloads: CryptoContractFunctionCallResult[],\n ): Promise<TResult | undefined> {\n const callHash = await this.generateCallHash(address, functionName, params)\n const foundPayload = payloads.find((payload) => payload.call === callHash)\n return foundPayload?.result.value as TResult | undefined\n }\n\n protected static async generateCallHash(address: string, functionName: string, params: unknown[]) {\n const callPayload: CryptoContractFunctionCall = {\n address,\n functionName,\n params,\n schema: CryptoContractFunctionCallSchema,\n }\n return await PayloadHasher.hashAsync(callPayload)\n }\n\n protected static matchingExistingField<R = string, T extends Payload = Payload>(objs: T[], field: keyof T) {\n const expectedValue = objs.at(0)?.[field] as R\n const didNotMatch = objs.reduce((prev, obj) => {\n return prev || obj[field] !== expectedValue\n }, false)\n return didNotMatch ? undefined : expectedValue\n }\n\n protected contractInfoRequiredFields(callResults: CryptoContractFunctionCallResult[]): Promisable<Omit<ContractInfo, 'schema'>> {\n return {\n address: assertEx(CryptoContractDiviner.matchingExistingField(callResults, 'address'), 'Mismatched address'),\n chainId: assertEx(CryptoContractDiviner.matchingExistingField(callResults, 'chainId'), 'Mismatched chainId'),\n }\n }\n\n protected override async divineHandler(inPayloads: CryptoContractFunctionCallResult[] = []): Promise<TContractInfo[]> {\n const callResults = inPayloads.filter(isPayloadOfSchemaType<CryptoContractFunctionCallResult>(CryptoContractFunctionCallResultSchema))\n const addresses = Object.keys(\n callResults.reduce<Record<string, boolean>>((prev, result) => {\n if (result.address) {\n prev[result.address] = true\n }\n return prev\n }, {}),\n )\n const result = await Promise.all(\n addresses.map(async (address) => {\n const foundCallResults = callResults.filter((callResult) => callResult.address === address)\n return {\n ...(await this.reduceResults(address, foundCallResults)),\n ...this.contractInfoRequiredFields(foundCallResults),\n } as TContractInfo\n }),\n )\n\n return result\n }\n\n protected abstract reduceResults(\n address: string,\n callResults: CryptoContractFunctionCallResult[],\n ): Promisable<Omit<TContractInfo, 'address' | 'chainId'>>\n}\n","import { CryptoContractFunctionCallResult } from '@xyo-network/crypto-contract-function-read-payload-plugin'\nimport { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model'\n\nimport { ContractInfo, CryptoContractDiviner, OmittedContractInfo } from './CryptoContractDiviner'\n\nexport const CryptoContractErc721DivinerConfigSchema = 'network.xyo.crypto.contract.erc721.info.diviner.config'\nexport type CryptoContractErc721DivinerConfigSchema = typeof CryptoContractErc721DivinerConfigSchema\n\nexport type CryptoContractErc721DivinerConfig = DivinerConfig\nexport type CryptoContractErc721DivinerParams = DivinerParams<CryptoContractErc721DivinerConfig>\n\nexport const Erc721ContractInfoSchema = 'network.xyo.crypto.contract.erc721.info'\nexport type Erc721ContractInfoSchema = typeof Erc721ContractInfoSchema\n\nexport type Erc721ContractInfo = ContractInfo<\n {\n name?: string\n symbol?: string\n totalSupply?: string\n },\n Erc721ContractInfoSchema\n>\n\nexport class CryptoContractErc721Diviner<\n TParams extends CryptoContractErc721DivinerParams = CryptoContractErc721DivinerParams,\n> extends CryptoContractDiviner<Erc721ContractInfo, TParams> {\n static override configSchemas = [CryptoContractErc721DivinerConfigSchema]\n\n protected override async reduceResults(\n address: string,\n callResults: CryptoContractFunctionCallResult[],\n ): Promise<OmittedContractInfo<Erc721ContractInfo>> {\n const name = await CryptoContractErc721Diviner.findCallResult(address, 'name', [], callResults)\n const symbol = await CryptoContractErc721Diviner.findCallResult(address, 'symbol', [], callResults)\n return {\n name,\n schema: Erc721ContractInfoSchema,\n symbol,\n }\n }\n}\n","import { CryptoContractFunctionCallResult } from '@xyo-network/crypto-contract-function-read-payload-plugin'\nimport { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model'\n\nimport { ContractInfo, CryptoContractDiviner, OmittedContractInfo } from './CryptoContractDiviner'\n\nexport const CryptoContractErc1155DivinerConfigSchema = 'network.xyo.crypto.contract.erc1155.info.diviner.config'\nexport type CryptoContractErc1155DivinerConfigSchema = typeof CryptoContractErc1155DivinerConfigSchema\n\nexport type CryptoContractErc1155DivinerConfig = DivinerConfig\nexport type CryptoContractErc1155DivinerParams = DivinerParams<CryptoContractErc1155DivinerConfig>\n\nexport const Erc1155ContractInfoSchema = 'network.xyo.crypto.contract.erc1155.info'\nexport type Erc1155ContractInfoSchema = typeof Erc1155ContractInfoSchema\n\nexport type Erc1155ContractInfo = ContractInfo<\n {\n uri?: string\n },\n Erc1155ContractInfoSchema\n>\n\nexport class CryptoContractErc1155Diviner<\n TParams extends CryptoContractErc1155DivinerParams = CryptoContractErc1155DivinerParams,\n> extends CryptoContractDiviner<Erc1155ContractInfo, TParams> {\n static override configSchemas = [CryptoContractErc1155DivinerConfigSchema]\n\n protected override async reduceResults(\n address: string,\n callResults: CryptoContractFunctionCallResult[],\n ): Promise<OmittedContractInfo<Erc1155ContractInfo>> {\n const uri = await CryptoContractErc1155Diviner.findCallResult(address, 'uri', [], callResults)\n return {\n schema: Erc1155ContractInfoSchema,\n uri,\n }\n }\n}\n","import { CryptoContractFunctionReadWitnessPlugin } from './Plugin'\n\nexport * from './CryptoContractDiviner'\nexport * from './Erc721Diviner'\nexport * from './Erc1155Diviner'\nexport * from './Witness'\n\nexport { CryptoContractFunctionReadWitnessPlugin }\n\n// eslint-disable-next-line import/no-default-export\nexport default CryptoContractFunctionReadWitnessPlugin\n"],"mappings":"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","names":["assertEx","CryptoContractFunctionCallResultSchema","CryptoContractFunctionCallSchema","PayloadHasher","isPayloadOfSchemaType","result"]}
1
+ {"version":3,"sources":["../../src/Plugin.ts","../../src/Witness.ts","../../src/CryptoContractDiviner.ts","../../src/Erc721Diviner.ts","../../src/Erc1155Diviner.ts","../../src/index.ts"],"sourcesContent":["import { NftSchema } from '@xyo-network/crypto-nft-payload-plugin'\nimport { PayloadSetSchema } from '@xyo-network/payload-model'\nimport { createPayloadSetWitnessPlugin } from '@xyo-network/payloadset-plugin'\n\nimport { CryptoContractFunctionReadWitness } from './Witness'\n\nexport const CryptoContractFunctionReadWitnessPlugin = () =>\n createPayloadSetWitnessPlugin<CryptoContractFunctionReadWitness>(\n { required: { [NftSchema]: 1 }, schema: PayloadSetSchema },\n {\n witness: async (params) => {\n const result = await CryptoContractFunctionReadWitness.create(params)\n return result\n },\n },\n )\n","import { assertEx } from '@xylabs/assert'\nimport { AbstractWitness } from '@xyo-network/abstract-witness'\nimport {\n CryptoContractFunctionCall,\n CryptoContractFunctionCallResult,\n CryptoContractFunctionCallResultSchema,\n CryptoContractFunctionCallSchema,\n CryptoContractFunctionReadWitnessConfig,\n CryptoContractFunctionReadWitnessConfigSchema,\n} from '@xyo-network/crypto-contract-function-read-payload-plugin'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { AnyConfigSchema } from '@xyo-network/module-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\nimport { WitnessParams } from '@xyo-network/witness-model'\nimport { BigNumber, Contract } from 'ethers'\n\nexport type CryptoContractFunctionReadWitnessParams<TContract extends Contract> = WitnessParams<\n AnyConfigSchema<CryptoContractFunctionReadWitnessConfig>,\n {\n factory: (address: string) => TContract\n }\n>\n\nexport class CryptoContractFunctionReadWitness<\n TContract extends Contract = Contract,\n TParams extends CryptoContractFunctionReadWitnessParams<TContract> = CryptoContractFunctionReadWitnessParams<TContract>,\n> extends AbstractWitness<TParams, CryptoContractFunctionCall<keyof TContract['callStatic']>, CryptoContractFunctionCallResult> {\n static override configSchemas = [CryptoContractFunctionReadWitnessConfigSchema]\n\n protected override async observeHandler(\n inPayloads: CryptoContractFunctionCall<keyof TContract['callStatic']>[] = [],\n ): Promise<CryptoContractFunctionCallResult[]> {\n await this.started('throw')\n try {\n const observations = await Promise.all(\n inPayloads.filter(isPayloadOfSchemaType(CryptoContractFunctionCallSchema)).map(async (callPayload) => {\n const fullCallPayload = { ...{ params: [] }, ...this.config.call, ...callPayload }\n const { address, functionName, params } = fullCallPayload\n const validatedAddress = assertEx(address, 'Missing address')\n const contract = this.params.factory(validatedAddress)\n const func = assertEx(contract.callStatic[assertEx(functionName, 'missing functionName')], `functionName [${functionName}] not found`)\n const rawResult = await func(...(params ?? []))\n const result: CryptoContractFunctionCallResult['result'] = BigNumber.isBigNumber(rawResult)\n ? { type: 'BigNumber', value: rawResult.toHexString() }\n : { value: rawResult }\n const observation: CryptoContractFunctionCallResult = {\n address: validatedAddress,\n call: await PayloadHasher.hashAsync(fullCallPayload),\n chainId: (await contract.provider.getNetwork()).chainId,\n result,\n schema: CryptoContractFunctionCallResultSchema,\n }\n return observation\n }),\n )\n return observations.flat()\n } catch (ex) {\n const error = ex as Error\n console.log(`Error [${this.config.name}]: ${error.message}`)\n }\n\n return []\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { Promisable } from '@xylabs/promise'\nimport { AbstractDiviner } from '@xyo-network/abstract-diviner'\nimport {\n CryptoContractFunctionCall,\n CryptoContractFunctionCallResult,\n CryptoContractFunctionCallResultSchema,\n CryptoContractFunctionCallSchema,\n} from '@xyo-network/crypto-contract-function-read-payload-plugin'\nimport { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { isPayloadOfSchemaType, Payload } from '@xyo-network/payload-model'\n\nexport type FindCallResult<TResult = string, TPayload = Payload> = [TResult, TPayload] | [undefined, TPayload] | [undefined, undefined]\n\nexport const CryptoContractDivinerConfigSchema = 'network.xyo.crypto.contract.diviner.config'\nexport type CryptoContractDivinerConfigSchema = typeof CryptoContractDivinerConfigSchema\n\nexport type CryptoContractDivinerConfig = DivinerConfig\nexport type CryptoContractDivinerParams = DivinerParams<CryptoContractDivinerConfig>\n\nexport const ContractInfoSchema = 'network.xyo.crypto.contract.info'\nexport type ContractInfoSchema = typeof ContractInfoSchema\n\nexport type OmittedContractInfo<TFields extends object | Payload | null = null, TSchema extends string | null = null> = Omit<\n ContractInfo<TFields, TSchema extends null ? (TFields extends Payload ? TFields['schema'] : never) : TSchema>,\n 'address' | 'chainId'\n>\n\nexport type ContractInfo<TFields extends object | null = null, TSchema extends string = ContractInfoSchema> = Payload<\n TFields extends null\n ? object\n : TFields & {\n address: string\n chainId: string\n },\n TSchema\n>\n\nexport abstract class CryptoContractDiviner<\n TContractInfo extends Payload<Omit<ContractInfo, 'schema'>> = ContractInfo,\n TParams extends CryptoContractDivinerParams = CryptoContractDivinerParams,\n> extends AbstractDiviner<TParams> {\n static override configSchemas = [CryptoContractDivinerConfigSchema]\n\n protected static async findCallResult<TResult = string>(\n address: string,\n functionName: string,\n params: unknown[],\n payloads: CryptoContractFunctionCallResult[],\n ): Promise<TResult | undefined> {\n const callHash = await this.generateCallHash(address, functionName, params)\n const foundPayload = payloads.find((payload) => payload.call === callHash)\n return foundPayload?.result.value as TResult | undefined\n }\n\n protected static async generateCallHash(address: string, functionName: string, params: unknown[]) {\n const callPayload: CryptoContractFunctionCall = {\n address,\n functionName,\n params,\n schema: CryptoContractFunctionCallSchema,\n }\n return await PayloadHasher.hashAsync(callPayload)\n }\n\n protected static matchingExistingField<R = string, T extends Payload = Payload>(objs: T[], field: keyof T) {\n const expectedValue = objs.at(0)?.[field] as R\n const didNotMatch = objs.reduce((prev, obj) => {\n return prev || obj[field] !== expectedValue\n }, false)\n return didNotMatch ? undefined : expectedValue\n }\n\n protected contractInfoRequiredFields(callResults: CryptoContractFunctionCallResult[]): Promisable<Omit<ContractInfo, 'schema'>> {\n return {\n address: assertEx(CryptoContractDiviner.matchingExistingField(callResults, 'address'), 'Mismatched address'),\n chainId: assertEx(CryptoContractDiviner.matchingExistingField(callResults, 'chainId'), 'Mismatched chainId'),\n }\n }\n\n protected override async divineHandler(inPayloads: CryptoContractFunctionCallResult[] = []): Promise<TContractInfo[]> {\n const callResults = inPayloads.filter(isPayloadOfSchemaType<CryptoContractFunctionCallResult>(CryptoContractFunctionCallResultSchema))\n const addresses = Object.keys(\n callResults.reduce<Record<string, boolean>>((prev, result) => {\n if (result.address) {\n prev[result.address] = true\n }\n return prev\n }, {}),\n )\n const result = await Promise.all(\n addresses.map(async (address) => {\n const foundCallResults = callResults.filter((callResult) => callResult.address === address)\n return {\n ...(await this.reduceResults(address, foundCallResults)),\n ...this.contractInfoRequiredFields(foundCallResults),\n } as TContractInfo\n }),\n )\n\n return result\n }\n\n protected abstract reduceResults(\n address: string,\n callResults: CryptoContractFunctionCallResult[],\n ): Promisable<Omit<TContractInfo, 'address' | 'chainId'>>\n}\n","import { CryptoContractFunctionCallResult } from '@xyo-network/crypto-contract-function-read-payload-plugin'\nimport { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model'\n\nimport { ContractInfo, CryptoContractDiviner, OmittedContractInfo } from './CryptoContractDiviner'\n\nexport const CryptoContractErc721DivinerConfigSchema = 'network.xyo.crypto.contract.erc721.info.diviner.config'\nexport type CryptoContractErc721DivinerConfigSchema = typeof CryptoContractErc721DivinerConfigSchema\n\nexport type CryptoContractErc721DivinerConfig = DivinerConfig\nexport type CryptoContractErc721DivinerParams = DivinerParams<CryptoContractErc721DivinerConfig>\n\nexport const Erc721ContractInfoSchema = 'network.xyo.crypto.contract.erc721.info'\nexport type Erc721ContractInfoSchema = typeof Erc721ContractInfoSchema\n\nexport type Erc721ContractInfo = ContractInfo<\n {\n name?: string\n symbol?: string\n totalSupply?: string\n },\n Erc721ContractInfoSchema\n>\n\nexport class CryptoContractErc721Diviner<\n TParams extends CryptoContractErc721DivinerParams = CryptoContractErc721DivinerParams,\n> extends CryptoContractDiviner<Erc721ContractInfo, TParams> {\n static override configSchemas = [CryptoContractErc721DivinerConfigSchema]\n\n protected override async reduceResults(\n address: string,\n callResults: CryptoContractFunctionCallResult[],\n ): Promise<OmittedContractInfo<Erc721ContractInfo>> {\n const name = await CryptoContractErc721Diviner.findCallResult(address, 'name', [], callResults)\n const symbol = await CryptoContractErc721Diviner.findCallResult(address, 'symbol', [], callResults)\n const totalSupply = await CryptoContractErc721Diviner.findCallResult(address, 'totalSupply', [], callResults)\n return {\n name,\n schema: Erc721ContractInfoSchema,\n symbol,\n totalSupply,\n }\n }\n}\n","import { CryptoContractFunctionCallResult } from '@xyo-network/crypto-contract-function-read-payload-plugin'\nimport { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model'\n\nimport { ContractInfo, CryptoContractDiviner, OmittedContractInfo } from './CryptoContractDiviner'\n\nexport const CryptoContractErc1155DivinerConfigSchema = 'network.xyo.crypto.contract.erc1155.info.diviner.config'\nexport type CryptoContractErc1155DivinerConfigSchema = typeof CryptoContractErc1155DivinerConfigSchema\n\nexport type CryptoContractErc1155DivinerConfig = DivinerConfig\nexport type CryptoContractErc1155DivinerParams = DivinerParams<CryptoContractErc1155DivinerConfig>\n\nexport const Erc1155ContractInfoSchema = 'network.xyo.crypto.contract.erc1155.info'\nexport type Erc1155ContractInfoSchema = typeof Erc1155ContractInfoSchema\n\nexport type Erc1155ContractInfo = ContractInfo<\n {\n uri?: string\n },\n Erc1155ContractInfoSchema\n>\n\nexport class CryptoContractErc1155Diviner<\n TParams extends CryptoContractErc1155DivinerParams = CryptoContractErc1155DivinerParams,\n> extends CryptoContractDiviner<Erc1155ContractInfo, TParams> {\n static override configSchemas = [CryptoContractErc1155DivinerConfigSchema]\n\n protected override async reduceResults(\n address: string,\n callResults: CryptoContractFunctionCallResult[],\n ): Promise<OmittedContractInfo<Erc1155ContractInfo>> {\n const uri = await CryptoContractErc1155Diviner.findCallResult(address, 'uri', [], callResults)\n return {\n schema: Erc1155ContractInfoSchema,\n uri,\n }\n }\n}\n","import { CryptoContractFunctionReadWitnessPlugin } from './Plugin'\n\nexport * from './CryptoContractDiviner'\nexport * from './Erc721Diviner'\nexport * from './Erc1155Diviner'\nexport * from './Witness'\n\nexport { CryptoContractFunctionReadWitnessPlugin }\n\n// eslint-disable-next-line import/no-default-export\nexport default CryptoContractFunctionReadWitnessPlugin\n"],"mappings":"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","names":["assertEx","CryptoContractFunctionCallResultSchema","CryptoContractFunctionCallSchema","PayloadHasher","isPayloadOfSchemaType","result"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Erc721Diviner.d.ts","sourceRoot":"","sources":["../../src/Erc721Diviner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,MAAM,2DAA2D,CAAA;AAC5G,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAEzE,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAElG,eAAO,MAAM,uCAAuC,2DAA2D,CAAA;AAC/G,MAAM,MAAM,uCAAuC,GAAG,OAAO,uCAAuC,CAAA;AAEpG,MAAM,MAAM,iCAAiC,GAAG,aAAa,CAAA;AAC7D,MAAM,MAAM,iCAAiC,GAAG,aAAa,CAAC,iCAAiC,CAAC,CAAA;AAEhG,eAAO,MAAM,wBAAwB,4CAA4C,CAAA;AACjF,MAAM,MAAM,wBAAwB,GAAG,OAAO,wBAAwB,CAAA;AAEtE,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAC3C;IACE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,EACD,wBAAwB,CACzB,CAAA;AAED,qBAAa,2BAA2B,CACtC,OAAO,SAAS,iCAAiC,GAAG,iCAAiC,CACrF,SAAQ,qBAAqB,CAAC,kBAAkB,EAAE,OAAO,CAAC;IAC1D,OAAgB,aAAa,WAA4C;cAEhD,aAAa,CACpC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,gCAAgC,EAAE,GAC9C,OAAO,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;CASpD"}
1
+ {"version":3,"file":"Erc721Diviner.d.ts","sourceRoot":"","sources":["../../src/Erc721Diviner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,MAAM,2DAA2D,CAAA;AAC5G,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAEzE,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAElG,eAAO,MAAM,uCAAuC,2DAA2D,CAAA;AAC/G,MAAM,MAAM,uCAAuC,GAAG,OAAO,uCAAuC,CAAA;AAEpG,MAAM,MAAM,iCAAiC,GAAG,aAAa,CAAA;AAC7D,MAAM,MAAM,iCAAiC,GAAG,aAAa,CAAC,iCAAiC,CAAC,CAAA;AAEhG,eAAO,MAAM,wBAAwB,4CAA4C,CAAA;AACjF,MAAM,MAAM,wBAAwB,GAAG,OAAO,wBAAwB,CAAA;AAEtE,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAC3C;IACE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,EACD,wBAAwB,CACzB,CAAA;AAED,qBAAa,2BAA2B,CACtC,OAAO,SAAS,iCAAiC,GAAG,iCAAiC,CACrF,SAAQ,qBAAqB,CAAC,kBAAkB,EAAE,OAAO,CAAC;IAC1D,OAAgB,aAAa,WAA4C;cAEhD,aAAa,CACpC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,gCAAgC,EAAE,GAC9C,OAAO,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;CAWpD"}
@@ -1 +1 @@
1
- {"version":3,"file":"Erc721Diviner.d.ts","sourceRoot":"","sources":["../../src/Erc721Diviner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,MAAM,2DAA2D,CAAA;AAC5G,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAEzE,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAElG,eAAO,MAAM,uCAAuC,2DAA2D,CAAA;AAC/G,MAAM,MAAM,uCAAuC,GAAG,OAAO,uCAAuC,CAAA;AAEpG,MAAM,MAAM,iCAAiC,GAAG,aAAa,CAAA;AAC7D,MAAM,MAAM,iCAAiC,GAAG,aAAa,CAAC,iCAAiC,CAAC,CAAA;AAEhG,eAAO,MAAM,wBAAwB,4CAA4C,CAAA;AACjF,MAAM,MAAM,wBAAwB,GAAG,OAAO,wBAAwB,CAAA;AAEtE,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAC3C;IACE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,EACD,wBAAwB,CACzB,CAAA;AAED,qBAAa,2BAA2B,CACtC,OAAO,SAAS,iCAAiC,GAAG,iCAAiC,CACrF,SAAQ,qBAAqB,CAAC,kBAAkB,EAAE,OAAO,CAAC;IAC1D,OAAgB,aAAa,WAA4C;cAEhD,aAAa,CACpC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,gCAAgC,EAAE,GAC9C,OAAO,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;CASpD"}
1
+ {"version":3,"file":"Erc721Diviner.d.ts","sourceRoot":"","sources":["../../src/Erc721Diviner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,MAAM,2DAA2D,CAAA;AAC5G,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAEzE,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAElG,eAAO,MAAM,uCAAuC,2DAA2D,CAAA;AAC/G,MAAM,MAAM,uCAAuC,GAAG,OAAO,uCAAuC,CAAA;AAEpG,MAAM,MAAM,iCAAiC,GAAG,aAAa,CAAA;AAC7D,MAAM,MAAM,iCAAiC,GAAG,aAAa,CAAC,iCAAiC,CAAC,CAAA;AAEhG,eAAO,MAAM,wBAAwB,4CAA4C,CAAA;AACjF,MAAM,MAAM,wBAAwB,GAAG,OAAO,wBAAwB,CAAA;AAEtE,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAC3C;IACE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,EACD,wBAAwB,CACzB,CAAA;AAED,qBAAa,2BAA2B,CACtC,OAAO,SAAS,iCAAiC,GAAG,iCAAiC,CACrF,SAAQ,qBAAqB,CAAC,kBAAkB,EAAE,OAAO,CAAC;IAC1D,OAAgB,aAAa,WAA4C;cAEhD,aAAa,CACpC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,gCAAgC,EAAE,GAC9C,OAAO,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;CAWpD"}
@@ -1 +1 @@
1
- {"version":3,"file":"Erc721Diviner.d.ts","sourceRoot":"","sources":["../../src/Erc721Diviner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,MAAM,2DAA2D,CAAA;AAC5G,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAEzE,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAElG,eAAO,MAAM,uCAAuC,2DAA2D,CAAA;AAC/G,MAAM,MAAM,uCAAuC,GAAG,OAAO,uCAAuC,CAAA;AAEpG,MAAM,MAAM,iCAAiC,GAAG,aAAa,CAAA;AAC7D,MAAM,MAAM,iCAAiC,GAAG,aAAa,CAAC,iCAAiC,CAAC,CAAA;AAEhG,eAAO,MAAM,wBAAwB,4CAA4C,CAAA;AACjF,MAAM,MAAM,wBAAwB,GAAG,OAAO,wBAAwB,CAAA;AAEtE,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAC3C;IACE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,EACD,wBAAwB,CACzB,CAAA;AAED,qBAAa,2BAA2B,CACtC,OAAO,SAAS,iCAAiC,GAAG,iCAAiC,CACrF,SAAQ,qBAAqB,CAAC,kBAAkB,EAAE,OAAO,CAAC;IAC1D,OAAgB,aAAa,WAA4C;cAEhD,aAAa,CACpC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,gCAAgC,EAAE,GAC9C,OAAO,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;CASpD"}
1
+ {"version":3,"file":"Erc721Diviner.d.ts","sourceRoot":"","sources":["../../src/Erc721Diviner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,MAAM,2DAA2D,CAAA;AAC5G,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAEzE,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAElG,eAAO,MAAM,uCAAuC,2DAA2D,CAAA;AAC/G,MAAM,MAAM,uCAAuC,GAAG,OAAO,uCAAuC,CAAA;AAEpG,MAAM,MAAM,iCAAiC,GAAG,aAAa,CAAA;AAC7D,MAAM,MAAM,iCAAiC,GAAG,aAAa,CAAC,iCAAiC,CAAC,CAAA;AAEhG,eAAO,MAAM,wBAAwB,4CAA4C,CAAA;AACjF,MAAM,MAAM,wBAAwB,GAAG,OAAO,wBAAwB,CAAA;AAEtE,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAC3C;IACE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,EACD,wBAAwB,CACzB,CAAA;AAED,qBAAa,2BAA2B,CACtC,OAAO,SAAS,iCAAiC,GAAG,iCAAiC,CACrF,SAAQ,qBAAqB,CAAC,kBAAkB,EAAE,OAAO,CAAC;IAC1D,OAAgB,aAAa,WAA4C;cAEhD,aAAa,CACpC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,gCAAgC,EAAE,GAC9C,OAAO,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;CAWpD"}
@@ -1 +1 @@
1
- {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EACL,0BAA0B,EAC1B,gCAAgC,EAGhC,uCAAuC,EAExC,MAAM,2DAA2D,CAAA;AAElE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAE3D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAa,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAE5C,MAAM,MAAM,uCAAuC,CAAC,SAAS,SAAS,QAAQ,IAAI,aAAa,CAC7F,eAAe,CAAC,uCAAuC,CAAC,EACxD;IACE,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,SAAS,CAAA;CACxC,CACF,CAAA;AAED,qBAAa,iCAAiC,CAC5C,SAAS,SAAS,QAAQ,GAAG,QAAQ,EACrC,OAAO,SAAS,uCAAuC,CAAC,SAAS,CAAC,GAAG,uCAAuC,CAAC,SAAS,CAAC,CACvH,SAAQ,eAAe,CAAC,OAAO,EAAE,0BAA0B,CAAC,MAAM,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE,gCAAgC,CAAC;IAC7H,OAAgB,aAAa,WAAkD;cAEtD,cAAc,CACrC,UAAU,GAAE,0BAA0B,CAAC,MAAM,SAAS,CAAC,YAAY,CAAC,CAAC,EAAO,GAC3E,OAAO,CAAC,gCAAgC,EAAE,CAAC;CA0B/C"}
1
+ {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EACL,0BAA0B,EAC1B,gCAAgC,EAGhC,uCAAuC,EAExC,MAAM,2DAA2D,CAAA;AAElE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAE3D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAa,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAE5C,MAAM,MAAM,uCAAuC,CAAC,SAAS,SAAS,QAAQ,IAAI,aAAa,CAC7F,eAAe,CAAC,uCAAuC,CAAC,EACxD;IACE,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,SAAS,CAAA;CACxC,CACF,CAAA;AAED,qBAAa,iCAAiC,CAC5C,SAAS,SAAS,QAAQ,GAAG,QAAQ,EACrC,OAAO,SAAS,uCAAuC,CAAC,SAAS,CAAC,GAAG,uCAAuC,CAAC,SAAS,CAAC,CACvH,SAAQ,eAAe,CAAC,OAAO,EAAE,0BAA0B,CAAC,MAAM,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE,gCAAgC,CAAC;IAC7H,OAAgB,aAAa,WAAkD;cAEtD,cAAc,CACrC,UAAU,GAAE,0BAA0B,CAAC,MAAM,SAAS,CAAC,YAAY,CAAC,CAAC,EAAO,GAC3E,OAAO,CAAC,gCAAgC,EAAE,CAAC;CAgC/C"}
@@ -1 +1 @@
1
- {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EACL,0BAA0B,EAC1B,gCAAgC,EAGhC,uCAAuC,EAExC,MAAM,2DAA2D,CAAA;AAElE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAE3D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAa,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAE5C,MAAM,MAAM,uCAAuC,CAAC,SAAS,SAAS,QAAQ,IAAI,aAAa,CAC7F,eAAe,CAAC,uCAAuC,CAAC,EACxD;IACE,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,SAAS,CAAA;CACxC,CACF,CAAA;AAED,qBAAa,iCAAiC,CAC5C,SAAS,SAAS,QAAQ,GAAG,QAAQ,EACrC,OAAO,SAAS,uCAAuC,CAAC,SAAS,CAAC,GAAG,uCAAuC,CAAC,SAAS,CAAC,CACvH,SAAQ,eAAe,CAAC,OAAO,EAAE,0BAA0B,CAAC,MAAM,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE,gCAAgC,CAAC;IAC7H,OAAgB,aAAa,WAAkD;cAEtD,cAAc,CACrC,UAAU,GAAE,0BAA0B,CAAC,MAAM,SAAS,CAAC,YAAY,CAAC,CAAC,EAAO,GAC3E,OAAO,CAAC,gCAAgC,EAAE,CAAC;CA0B/C"}
1
+ {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EACL,0BAA0B,EAC1B,gCAAgC,EAGhC,uCAAuC,EAExC,MAAM,2DAA2D,CAAA;AAElE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAE3D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAa,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAE5C,MAAM,MAAM,uCAAuC,CAAC,SAAS,SAAS,QAAQ,IAAI,aAAa,CAC7F,eAAe,CAAC,uCAAuC,CAAC,EACxD;IACE,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,SAAS,CAAA;CACxC,CACF,CAAA;AAED,qBAAa,iCAAiC,CAC5C,SAAS,SAAS,QAAQ,GAAG,QAAQ,EACrC,OAAO,SAAS,uCAAuC,CAAC,SAAS,CAAC,GAAG,uCAAuC,CAAC,SAAS,CAAC,CACvH,SAAQ,eAAe,CAAC,OAAO,EAAE,0BAA0B,CAAC,MAAM,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE,gCAAgC,CAAC;IAC7H,OAAgB,aAAa,WAAkD;cAEtD,cAAc,CACrC,UAAU,GAAE,0BAA0B,CAAC,MAAM,SAAS,CAAC,YAAY,CAAC,CAAC,EAAO,GAC3E,OAAO,CAAC,gCAAgC,EAAE,CAAC;CAgC/C"}
@@ -1 +1 @@
1
- {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EACL,0BAA0B,EAC1B,gCAAgC,EAGhC,uCAAuC,EAExC,MAAM,2DAA2D,CAAA;AAElE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAE3D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAa,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAE5C,MAAM,MAAM,uCAAuC,CAAC,SAAS,SAAS,QAAQ,IAAI,aAAa,CAC7F,eAAe,CAAC,uCAAuC,CAAC,EACxD;IACE,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,SAAS,CAAA;CACxC,CACF,CAAA;AAED,qBAAa,iCAAiC,CAC5C,SAAS,SAAS,QAAQ,GAAG,QAAQ,EACrC,OAAO,SAAS,uCAAuC,CAAC,SAAS,CAAC,GAAG,uCAAuC,CAAC,SAAS,CAAC,CACvH,SAAQ,eAAe,CAAC,OAAO,EAAE,0BAA0B,CAAC,MAAM,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE,gCAAgC,CAAC;IAC7H,OAAgB,aAAa,WAAkD;cAEtD,cAAc,CACrC,UAAU,GAAE,0BAA0B,CAAC,MAAM,SAAS,CAAC,YAAY,CAAC,CAAC,EAAO,GAC3E,OAAO,CAAC,gCAAgC,EAAE,CAAC;CA0B/C"}
1
+ {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EACL,0BAA0B,EAC1B,gCAAgC,EAGhC,uCAAuC,EAExC,MAAM,2DAA2D,CAAA;AAElE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAE3D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAa,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAE5C,MAAM,MAAM,uCAAuC,CAAC,SAAS,SAAS,QAAQ,IAAI,aAAa,CAC7F,eAAe,CAAC,uCAAuC,CAAC,EACxD;IACE,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,SAAS,CAAA;CACxC,CACF,CAAA;AAED,qBAAa,iCAAiC,CAC5C,SAAS,SAAS,QAAQ,GAAG,QAAQ,EACrC,OAAO,SAAS,uCAAuC,CAAC,SAAS,CAAC,GAAG,uCAAuC,CAAC,SAAS,CAAC,CACvH,SAAQ,eAAe,CAAC,OAAO,EAAE,0BAA0B,CAAC,MAAM,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE,gCAAgC,CAAC;IAC7H,OAAgB,aAAa,WAAkD;cAEtD,cAAc,CACrC,UAAU,GAAE,0BAA0B,CAAC,MAAM,SAAS,CAAC,YAAY,CAAC,CAAC,EAAO,GAC3E,OAAO,CAAC,gCAAgC,EAAE,CAAC;CAgC/C"}
@@ -51,26 +51,32 @@ var CryptoContractFunctionReadWitness = class extends import_abstract_witness.Ab
51
51
  static configSchemas = [import_crypto_contract_function_read_payload_plugin.CryptoContractFunctionReadWitnessConfigSchema];
52
52
  async observeHandler(inPayloads = []) {
53
53
  await this.started("throw");
54
- const observations = await Promise.all(
55
- inPayloads.filter((0, import_payload_model.isPayloadOfSchemaType)(import_crypto_contract_function_read_payload_plugin.CryptoContractFunctionCallSchema)).map(async (callPayload) => {
56
- const fullCallPayload = { ...{ params: [] }, ...this.config.call, ...callPayload };
57
- const { address, functionName, params } = fullCallPayload;
58
- const validatedAddress = (0, import_assert.assertEx)(address, "Missing address");
59
- const contract = this.params.factory(validatedAddress);
60
- const func = (0, import_assert.assertEx)(contract.callStatic[(0, import_assert.assertEx)(functionName, "missing functionName")], `functionName [${functionName}] not found`);
61
- const rawResult = await func(...params ?? []);
62
- const result = import_ethers.BigNumber.isBigNumber(rawResult) ? { type: "BigNumber", value: rawResult.toHexString() } : { value: rawResult };
63
- const observation = {
64
- address: validatedAddress,
65
- call: await import_hash.PayloadHasher.hashAsync(fullCallPayload),
66
- chainId: (await contract.provider.getNetwork()).chainId,
67
- result,
68
- schema: import_crypto_contract_function_read_payload_plugin.CryptoContractFunctionCallResultSchema
69
- };
70
- return observation;
71
- })
72
- );
73
- return observations.flat();
54
+ try {
55
+ const observations = await Promise.all(
56
+ inPayloads.filter((0, import_payload_model.isPayloadOfSchemaType)(import_crypto_contract_function_read_payload_plugin.CryptoContractFunctionCallSchema)).map(async (callPayload) => {
57
+ const fullCallPayload = { ...{ params: [] }, ...this.config.call, ...callPayload };
58
+ const { address, functionName, params } = fullCallPayload;
59
+ const validatedAddress = (0, import_assert.assertEx)(address, "Missing address");
60
+ const contract = this.params.factory(validatedAddress);
61
+ const func = (0, import_assert.assertEx)(contract.callStatic[(0, import_assert.assertEx)(functionName, "missing functionName")], `functionName [${functionName}] not found`);
62
+ const rawResult = await func(...params ?? []);
63
+ const result = import_ethers.BigNumber.isBigNumber(rawResult) ? { type: "BigNumber", value: rawResult.toHexString() } : { value: rawResult };
64
+ const observation = {
65
+ address: validatedAddress,
66
+ call: await import_hash.PayloadHasher.hashAsync(fullCallPayload),
67
+ chainId: (await contract.provider.getNetwork()).chainId,
68
+ result,
69
+ schema: import_crypto_contract_function_read_payload_plugin.CryptoContractFunctionCallResultSchema
70
+ };
71
+ return observation;
72
+ })
73
+ );
74
+ return observations.flat();
75
+ } catch (ex) {
76
+ const error = ex;
77
+ console.log(`Error [${this.config.name}]: ${error.message}`);
78
+ }
79
+ return [];
74
80
  }
75
81
  };
76
82
 
@@ -154,10 +160,12 @@ var CryptoContractErc721Diviner = class _CryptoContractErc721Diviner extends Cry
154
160
  async reduceResults(address, callResults) {
155
161
  const name = await _CryptoContractErc721Diviner.findCallResult(address, "name", [], callResults);
156
162
  const symbol = await _CryptoContractErc721Diviner.findCallResult(address, "symbol", [], callResults);
163
+ const totalSupply = await _CryptoContractErc721Diviner.findCallResult(address, "totalSupply", [], callResults);
157
164
  return {
158
165
  name,
159
166
  schema: Erc721ContractInfoSchema,
160
- symbol
167
+ symbol,
168
+ totalSupply
161
169
  };
162
170
  }
163
171
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/Plugin.ts","../../src/Witness.ts","../../src/CryptoContractDiviner.ts","../../src/Erc721Diviner.ts","../../src/Erc1155Diviner.ts"],"sourcesContent":["import { CryptoContractFunctionReadWitnessPlugin } from './Plugin'\n\nexport * from './CryptoContractDiviner'\nexport * from './Erc721Diviner'\nexport * from './Erc1155Diviner'\nexport * from './Witness'\n\nexport { CryptoContractFunctionReadWitnessPlugin }\n\n// eslint-disable-next-line import/no-default-export\nexport default CryptoContractFunctionReadWitnessPlugin\n","import { NftSchema } from '@xyo-network/crypto-nft-payload-plugin'\nimport { PayloadSetSchema } from '@xyo-network/payload-model'\nimport { createPayloadSetWitnessPlugin } from '@xyo-network/payloadset-plugin'\n\nimport { CryptoContractFunctionReadWitness } from './Witness'\n\nexport const CryptoContractFunctionReadWitnessPlugin = () =>\n createPayloadSetWitnessPlugin<CryptoContractFunctionReadWitness>(\n { required: { [NftSchema]: 1 }, schema: PayloadSetSchema },\n {\n witness: async (params) => {\n const result = await CryptoContractFunctionReadWitness.create(params)\n return result\n },\n },\n )\n","import { assertEx } from '@xylabs/assert'\nimport { AbstractWitness } from '@xyo-network/abstract-witness'\nimport {\n CryptoContractFunctionCall,\n CryptoContractFunctionCallResult,\n CryptoContractFunctionCallResultSchema,\n CryptoContractFunctionCallSchema,\n CryptoContractFunctionReadWitnessConfig,\n CryptoContractFunctionReadWitnessConfigSchema,\n} from '@xyo-network/crypto-contract-function-read-payload-plugin'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { AnyConfigSchema } from '@xyo-network/module-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\nimport { WitnessParams } from '@xyo-network/witness-model'\nimport { BigNumber, Contract } from 'ethers'\n\nexport type CryptoContractFunctionReadWitnessParams<TContract extends Contract> = WitnessParams<\n AnyConfigSchema<CryptoContractFunctionReadWitnessConfig>,\n {\n factory: (address: string) => TContract\n }\n>\n\nexport class CryptoContractFunctionReadWitness<\n TContract extends Contract = Contract,\n TParams extends CryptoContractFunctionReadWitnessParams<TContract> = CryptoContractFunctionReadWitnessParams<TContract>,\n> extends AbstractWitness<TParams, CryptoContractFunctionCall<keyof TContract['callStatic']>, CryptoContractFunctionCallResult> {\n static override configSchemas = [CryptoContractFunctionReadWitnessConfigSchema]\n\n protected override async observeHandler(\n inPayloads: CryptoContractFunctionCall<keyof TContract['callStatic']>[] = [],\n ): Promise<CryptoContractFunctionCallResult[]> {\n await this.started('throw')\n const observations = await Promise.all(\n inPayloads.filter(isPayloadOfSchemaType(CryptoContractFunctionCallSchema)).map(async (callPayload) => {\n const fullCallPayload = { ...{ params: [] }, ...this.config.call, ...callPayload }\n const { address, functionName, params } = fullCallPayload\n const validatedAddress = assertEx(address, 'Missing address')\n const contract = this.params.factory(validatedAddress)\n const func = assertEx(contract.callStatic[assertEx(functionName, 'missing functionName')], `functionName [${functionName}] not found`)\n const rawResult = await func(...(params ?? []))\n const result: CryptoContractFunctionCallResult['result'] = BigNumber.isBigNumber(rawResult)\n ? { type: 'BigNumber', value: rawResult.toHexString() }\n : { value: rawResult }\n const observation: CryptoContractFunctionCallResult = {\n address: validatedAddress,\n call: await PayloadHasher.hashAsync(fullCallPayload),\n chainId: (await contract.provider.getNetwork()).chainId,\n result,\n schema: CryptoContractFunctionCallResultSchema,\n }\n return observation\n }),\n )\n\n return observations.flat()\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { Promisable } from '@xylabs/promise'\nimport { AbstractDiviner } from '@xyo-network/abstract-diviner'\nimport {\n CryptoContractFunctionCall,\n CryptoContractFunctionCallResult,\n CryptoContractFunctionCallResultSchema,\n CryptoContractFunctionCallSchema,\n} from '@xyo-network/crypto-contract-function-read-payload-plugin'\nimport { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { isPayloadOfSchemaType, Payload } from '@xyo-network/payload-model'\n\nexport type FindCallResult<TResult = string, TPayload = Payload> = [TResult, TPayload] | [undefined, TPayload] | [undefined, undefined]\n\nexport const CryptoContractDivinerConfigSchema = 'network.xyo.crypto.contract.diviner.config'\nexport type CryptoContractDivinerConfigSchema = typeof CryptoContractDivinerConfigSchema\n\nexport type CryptoContractDivinerConfig = DivinerConfig\nexport type CryptoContractDivinerParams = DivinerParams<CryptoContractDivinerConfig>\n\nexport const ContractInfoSchema = 'network.xyo.crypto.contract.info'\nexport type ContractInfoSchema = typeof ContractInfoSchema\n\nexport type OmittedContractInfo<TFields extends object | Payload | null = null, TSchema extends string | null = null> = Omit<\n ContractInfo<TFields, TSchema extends null ? (TFields extends Payload ? TFields['schema'] : never) : TSchema>,\n 'address' | 'chainId'\n>\n\nexport type ContractInfo<TFields extends object | null = null, TSchema extends string = ContractInfoSchema> = Payload<\n TFields extends null\n ? object\n : TFields & {\n address: string\n chainId: string\n },\n TSchema\n>\n\nexport abstract class CryptoContractDiviner<\n TContractInfo extends Payload<Omit<ContractInfo, 'schema'>> = ContractInfo,\n TParams extends CryptoContractDivinerParams = CryptoContractDivinerParams,\n> extends AbstractDiviner<TParams> {\n static override configSchemas = [CryptoContractDivinerConfigSchema]\n\n protected static async findCallResult<TResult = string>(\n address: string,\n functionName: string,\n params: unknown[],\n payloads: CryptoContractFunctionCallResult[],\n ): Promise<TResult | undefined> {\n const callHash = await this.generateCallHash(address, functionName, params)\n const foundPayload = payloads.find((payload) => payload.call === callHash)\n return foundPayload?.result.value as TResult | undefined\n }\n\n protected static async generateCallHash(address: string, functionName: string, params: unknown[]) {\n const callPayload: CryptoContractFunctionCall = {\n address,\n functionName,\n params,\n schema: CryptoContractFunctionCallSchema,\n }\n return await PayloadHasher.hashAsync(callPayload)\n }\n\n protected static matchingExistingField<R = string, T extends Payload = Payload>(objs: T[], field: keyof T) {\n const expectedValue = objs.at(0)?.[field] as R\n const didNotMatch = objs.reduce((prev, obj) => {\n return prev || obj[field] !== expectedValue\n }, false)\n return didNotMatch ? undefined : expectedValue\n }\n\n protected contractInfoRequiredFields(callResults: CryptoContractFunctionCallResult[]): Promisable<Omit<ContractInfo, 'schema'>> {\n return {\n address: assertEx(CryptoContractDiviner.matchingExistingField(callResults, 'address'), 'Mismatched address'),\n chainId: assertEx(CryptoContractDiviner.matchingExistingField(callResults, 'chainId'), 'Mismatched chainId'),\n }\n }\n\n protected override async divineHandler(inPayloads: CryptoContractFunctionCallResult[] = []): Promise<TContractInfo[]> {\n const callResults = inPayloads.filter(isPayloadOfSchemaType<CryptoContractFunctionCallResult>(CryptoContractFunctionCallResultSchema))\n const addresses = Object.keys(\n callResults.reduce<Record<string, boolean>>((prev, result) => {\n if (result.address) {\n prev[result.address] = true\n }\n return prev\n }, {}),\n )\n const result = await Promise.all(\n addresses.map(async (address) => {\n const foundCallResults = callResults.filter((callResult) => callResult.address === address)\n return {\n ...(await this.reduceResults(address, foundCallResults)),\n ...this.contractInfoRequiredFields(foundCallResults),\n } as TContractInfo\n }),\n )\n\n return result\n }\n\n protected abstract reduceResults(\n address: string,\n callResults: CryptoContractFunctionCallResult[],\n ): Promisable<Omit<TContractInfo, 'address' | 'chainId'>>\n}\n","import { CryptoContractFunctionCallResult } from '@xyo-network/crypto-contract-function-read-payload-plugin'\nimport { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model'\n\nimport { ContractInfo, CryptoContractDiviner, OmittedContractInfo } from './CryptoContractDiviner'\n\nexport const CryptoContractErc721DivinerConfigSchema = 'network.xyo.crypto.contract.erc721.info.diviner.config'\nexport type CryptoContractErc721DivinerConfigSchema = typeof CryptoContractErc721DivinerConfigSchema\n\nexport type CryptoContractErc721DivinerConfig = DivinerConfig\nexport type CryptoContractErc721DivinerParams = DivinerParams<CryptoContractErc721DivinerConfig>\n\nexport const Erc721ContractInfoSchema = 'network.xyo.crypto.contract.erc721.info'\nexport type Erc721ContractInfoSchema = typeof Erc721ContractInfoSchema\n\nexport type Erc721ContractInfo = ContractInfo<\n {\n name?: string\n symbol?: string\n totalSupply?: string\n },\n Erc721ContractInfoSchema\n>\n\nexport class CryptoContractErc721Diviner<\n TParams extends CryptoContractErc721DivinerParams = CryptoContractErc721DivinerParams,\n> extends CryptoContractDiviner<Erc721ContractInfo, TParams> {\n static override configSchemas = [CryptoContractErc721DivinerConfigSchema]\n\n protected override async reduceResults(\n address: string,\n callResults: CryptoContractFunctionCallResult[],\n ): Promise<OmittedContractInfo<Erc721ContractInfo>> {\n const name = await CryptoContractErc721Diviner.findCallResult(address, 'name', [], callResults)\n const symbol = await CryptoContractErc721Diviner.findCallResult(address, 'symbol', [], callResults)\n return {\n name,\n schema: Erc721ContractInfoSchema,\n symbol,\n }\n }\n}\n","import { CryptoContractFunctionCallResult } from '@xyo-network/crypto-contract-function-read-payload-plugin'\nimport { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model'\n\nimport { ContractInfo, CryptoContractDiviner, OmittedContractInfo } from './CryptoContractDiviner'\n\nexport const CryptoContractErc1155DivinerConfigSchema = 'network.xyo.crypto.contract.erc1155.info.diviner.config'\nexport type CryptoContractErc1155DivinerConfigSchema = typeof CryptoContractErc1155DivinerConfigSchema\n\nexport type CryptoContractErc1155DivinerConfig = DivinerConfig\nexport type CryptoContractErc1155DivinerParams = DivinerParams<CryptoContractErc1155DivinerConfig>\n\nexport const Erc1155ContractInfoSchema = 'network.xyo.crypto.contract.erc1155.info'\nexport type Erc1155ContractInfoSchema = typeof Erc1155ContractInfoSchema\n\nexport type Erc1155ContractInfo = ContractInfo<\n {\n uri?: string\n },\n Erc1155ContractInfoSchema\n>\n\nexport class CryptoContractErc1155Diviner<\n TParams extends CryptoContractErc1155DivinerParams = CryptoContractErc1155DivinerParams,\n> extends CryptoContractDiviner<Erc1155ContractInfo, TParams> {\n static override configSchemas = [CryptoContractErc1155DivinerConfigSchema]\n\n protected override async reduceResults(\n address: string,\n callResults: CryptoContractFunctionCallResult[],\n ): Promise<OmittedContractInfo<Erc1155ContractInfo>> {\n const uri = await CryptoContractErc1155Diviner.findCallResult(address, 'uri', [], callResults)\n return {\n schema: Erc1155ContractInfoSchema,\n uri,\n }\n }\n}\n"],"mappings":"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","names":["import_payload_model","import_assert","import_crypto_contract_function_read_payload_plugin","import_hash","import_payload_model","result"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/Plugin.ts","../../src/Witness.ts","../../src/CryptoContractDiviner.ts","../../src/Erc721Diviner.ts","../../src/Erc1155Diviner.ts"],"sourcesContent":["import { CryptoContractFunctionReadWitnessPlugin } from './Plugin'\n\nexport * from './CryptoContractDiviner'\nexport * from './Erc721Diviner'\nexport * from './Erc1155Diviner'\nexport * from './Witness'\n\nexport { CryptoContractFunctionReadWitnessPlugin }\n\n// eslint-disable-next-line import/no-default-export\nexport default CryptoContractFunctionReadWitnessPlugin\n","import { NftSchema } from '@xyo-network/crypto-nft-payload-plugin'\nimport { PayloadSetSchema } from '@xyo-network/payload-model'\nimport { createPayloadSetWitnessPlugin } from '@xyo-network/payloadset-plugin'\n\nimport { CryptoContractFunctionReadWitness } from './Witness'\n\nexport const CryptoContractFunctionReadWitnessPlugin = () =>\n createPayloadSetWitnessPlugin<CryptoContractFunctionReadWitness>(\n { required: { [NftSchema]: 1 }, schema: PayloadSetSchema },\n {\n witness: async (params) => {\n const result = await CryptoContractFunctionReadWitness.create(params)\n return result\n },\n },\n )\n","import { assertEx } from '@xylabs/assert'\nimport { AbstractWitness } from '@xyo-network/abstract-witness'\nimport {\n CryptoContractFunctionCall,\n CryptoContractFunctionCallResult,\n CryptoContractFunctionCallResultSchema,\n CryptoContractFunctionCallSchema,\n CryptoContractFunctionReadWitnessConfig,\n CryptoContractFunctionReadWitnessConfigSchema,\n} from '@xyo-network/crypto-contract-function-read-payload-plugin'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { AnyConfigSchema } from '@xyo-network/module-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\nimport { WitnessParams } from '@xyo-network/witness-model'\nimport { BigNumber, Contract } from 'ethers'\n\nexport type CryptoContractFunctionReadWitnessParams<TContract extends Contract> = WitnessParams<\n AnyConfigSchema<CryptoContractFunctionReadWitnessConfig>,\n {\n factory: (address: string) => TContract\n }\n>\n\nexport class CryptoContractFunctionReadWitness<\n TContract extends Contract = Contract,\n TParams extends CryptoContractFunctionReadWitnessParams<TContract> = CryptoContractFunctionReadWitnessParams<TContract>,\n> extends AbstractWitness<TParams, CryptoContractFunctionCall<keyof TContract['callStatic']>, CryptoContractFunctionCallResult> {\n static override configSchemas = [CryptoContractFunctionReadWitnessConfigSchema]\n\n protected override async observeHandler(\n inPayloads: CryptoContractFunctionCall<keyof TContract['callStatic']>[] = [],\n ): Promise<CryptoContractFunctionCallResult[]> {\n await this.started('throw')\n try {\n const observations = await Promise.all(\n inPayloads.filter(isPayloadOfSchemaType(CryptoContractFunctionCallSchema)).map(async (callPayload) => {\n const fullCallPayload = { ...{ params: [] }, ...this.config.call, ...callPayload }\n const { address, functionName, params } = fullCallPayload\n const validatedAddress = assertEx(address, 'Missing address')\n const contract = this.params.factory(validatedAddress)\n const func = assertEx(contract.callStatic[assertEx(functionName, 'missing functionName')], `functionName [${functionName}] not found`)\n const rawResult = await func(...(params ?? []))\n const result: CryptoContractFunctionCallResult['result'] = BigNumber.isBigNumber(rawResult)\n ? { type: 'BigNumber', value: rawResult.toHexString() }\n : { value: rawResult }\n const observation: CryptoContractFunctionCallResult = {\n address: validatedAddress,\n call: await PayloadHasher.hashAsync(fullCallPayload),\n chainId: (await contract.provider.getNetwork()).chainId,\n result,\n schema: CryptoContractFunctionCallResultSchema,\n }\n return observation\n }),\n )\n return observations.flat()\n } catch (ex) {\n const error = ex as Error\n console.log(`Error [${this.config.name}]: ${error.message}`)\n }\n\n return []\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { Promisable } from '@xylabs/promise'\nimport { AbstractDiviner } from '@xyo-network/abstract-diviner'\nimport {\n CryptoContractFunctionCall,\n CryptoContractFunctionCallResult,\n CryptoContractFunctionCallResultSchema,\n CryptoContractFunctionCallSchema,\n} from '@xyo-network/crypto-contract-function-read-payload-plugin'\nimport { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { isPayloadOfSchemaType, Payload } from '@xyo-network/payload-model'\n\nexport type FindCallResult<TResult = string, TPayload = Payload> = [TResult, TPayload] | [undefined, TPayload] | [undefined, undefined]\n\nexport const CryptoContractDivinerConfigSchema = 'network.xyo.crypto.contract.diviner.config'\nexport type CryptoContractDivinerConfigSchema = typeof CryptoContractDivinerConfigSchema\n\nexport type CryptoContractDivinerConfig = DivinerConfig\nexport type CryptoContractDivinerParams = DivinerParams<CryptoContractDivinerConfig>\n\nexport const ContractInfoSchema = 'network.xyo.crypto.contract.info'\nexport type ContractInfoSchema = typeof ContractInfoSchema\n\nexport type OmittedContractInfo<TFields extends object | Payload | null = null, TSchema extends string | null = null> = Omit<\n ContractInfo<TFields, TSchema extends null ? (TFields extends Payload ? TFields['schema'] : never) : TSchema>,\n 'address' | 'chainId'\n>\n\nexport type ContractInfo<TFields extends object | null = null, TSchema extends string = ContractInfoSchema> = Payload<\n TFields extends null\n ? object\n : TFields & {\n address: string\n chainId: string\n },\n TSchema\n>\n\nexport abstract class CryptoContractDiviner<\n TContractInfo extends Payload<Omit<ContractInfo, 'schema'>> = ContractInfo,\n TParams extends CryptoContractDivinerParams = CryptoContractDivinerParams,\n> extends AbstractDiviner<TParams> {\n static override configSchemas = [CryptoContractDivinerConfigSchema]\n\n protected static async findCallResult<TResult = string>(\n address: string,\n functionName: string,\n params: unknown[],\n payloads: CryptoContractFunctionCallResult[],\n ): Promise<TResult | undefined> {\n const callHash = await this.generateCallHash(address, functionName, params)\n const foundPayload = payloads.find((payload) => payload.call === callHash)\n return foundPayload?.result.value as TResult | undefined\n }\n\n protected static async generateCallHash(address: string, functionName: string, params: unknown[]) {\n const callPayload: CryptoContractFunctionCall = {\n address,\n functionName,\n params,\n schema: CryptoContractFunctionCallSchema,\n }\n return await PayloadHasher.hashAsync(callPayload)\n }\n\n protected static matchingExistingField<R = string, T extends Payload = Payload>(objs: T[], field: keyof T) {\n const expectedValue = objs.at(0)?.[field] as R\n const didNotMatch = objs.reduce((prev, obj) => {\n return prev || obj[field] !== expectedValue\n }, false)\n return didNotMatch ? undefined : expectedValue\n }\n\n protected contractInfoRequiredFields(callResults: CryptoContractFunctionCallResult[]): Promisable<Omit<ContractInfo, 'schema'>> {\n return {\n address: assertEx(CryptoContractDiviner.matchingExistingField(callResults, 'address'), 'Mismatched address'),\n chainId: assertEx(CryptoContractDiviner.matchingExistingField(callResults, 'chainId'), 'Mismatched chainId'),\n }\n }\n\n protected override async divineHandler(inPayloads: CryptoContractFunctionCallResult[] = []): Promise<TContractInfo[]> {\n const callResults = inPayloads.filter(isPayloadOfSchemaType<CryptoContractFunctionCallResult>(CryptoContractFunctionCallResultSchema))\n const addresses = Object.keys(\n callResults.reduce<Record<string, boolean>>((prev, result) => {\n if (result.address) {\n prev[result.address] = true\n }\n return prev\n }, {}),\n )\n const result = await Promise.all(\n addresses.map(async (address) => {\n const foundCallResults = callResults.filter((callResult) => callResult.address === address)\n return {\n ...(await this.reduceResults(address, foundCallResults)),\n ...this.contractInfoRequiredFields(foundCallResults),\n } as TContractInfo\n }),\n )\n\n return result\n }\n\n protected abstract reduceResults(\n address: string,\n callResults: CryptoContractFunctionCallResult[],\n ): Promisable<Omit<TContractInfo, 'address' | 'chainId'>>\n}\n","import { CryptoContractFunctionCallResult } from '@xyo-network/crypto-contract-function-read-payload-plugin'\nimport { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model'\n\nimport { ContractInfo, CryptoContractDiviner, OmittedContractInfo } from './CryptoContractDiviner'\n\nexport const CryptoContractErc721DivinerConfigSchema = 'network.xyo.crypto.contract.erc721.info.diviner.config'\nexport type CryptoContractErc721DivinerConfigSchema = typeof CryptoContractErc721DivinerConfigSchema\n\nexport type CryptoContractErc721DivinerConfig = DivinerConfig\nexport type CryptoContractErc721DivinerParams = DivinerParams<CryptoContractErc721DivinerConfig>\n\nexport const Erc721ContractInfoSchema = 'network.xyo.crypto.contract.erc721.info'\nexport type Erc721ContractInfoSchema = typeof Erc721ContractInfoSchema\n\nexport type Erc721ContractInfo = ContractInfo<\n {\n name?: string\n symbol?: string\n totalSupply?: string\n },\n Erc721ContractInfoSchema\n>\n\nexport class CryptoContractErc721Diviner<\n TParams extends CryptoContractErc721DivinerParams = CryptoContractErc721DivinerParams,\n> extends CryptoContractDiviner<Erc721ContractInfo, TParams> {\n static override configSchemas = [CryptoContractErc721DivinerConfigSchema]\n\n protected override async reduceResults(\n address: string,\n callResults: CryptoContractFunctionCallResult[],\n ): Promise<OmittedContractInfo<Erc721ContractInfo>> {\n const name = await CryptoContractErc721Diviner.findCallResult(address, 'name', [], callResults)\n const symbol = await CryptoContractErc721Diviner.findCallResult(address, 'symbol', [], callResults)\n const totalSupply = await CryptoContractErc721Diviner.findCallResult(address, 'totalSupply', [], callResults)\n return {\n name,\n schema: Erc721ContractInfoSchema,\n symbol,\n totalSupply,\n }\n }\n}\n","import { CryptoContractFunctionCallResult } from '@xyo-network/crypto-contract-function-read-payload-plugin'\nimport { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model'\n\nimport { ContractInfo, CryptoContractDiviner, OmittedContractInfo } from './CryptoContractDiviner'\n\nexport const CryptoContractErc1155DivinerConfigSchema = 'network.xyo.crypto.contract.erc1155.info.diviner.config'\nexport type CryptoContractErc1155DivinerConfigSchema = typeof CryptoContractErc1155DivinerConfigSchema\n\nexport type CryptoContractErc1155DivinerConfig = DivinerConfig\nexport type CryptoContractErc1155DivinerParams = DivinerParams<CryptoContractErc1155DivinerConfig>\n\nexport const Erc1155ContractInfoSchema = 'network.xyo.crypto.contract.erc1155.info'\nexport type Erc1155ContractInfoSchema = typeof Erc1155ContractInfoSchema\n\nexport type Erc1155ContractInfo = ContractInfo<\n {\n uri?: string\n },\n Erc1155ContractInfoSchema\n>\n\nexport class CryptoContractErc1155Diviner<\n TParams extends CryptoContractErc1155DivinerParams = CryptoContractErc1155DivinerParams,\n> extends CryptoContractDiviner<Erc1155ContractInfo, TParams> {\n static override configSchemas = [CryptoContractErc1155DivinerConfigSchema]\n\n protected override async reduceResults(\n address: string,\n callResults: CryptoContractFunctionCallResult[],\n ): Promise<OmittedContractInfo<Erc1155ContractInfo>> {\n const uri = await CryptoContractErc1155Diviner.findCallResult(address, 'uri', [], callResults)\n return {\n schema: Erc1155ContractInfoSchema,\n uri,\n }\n }\n}\n"],"mappings":"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","names":["import_payload_model","import_assert","import_crypto_contract_function_read_payload_plugin","import_hash","import_payload_model","result"]}
@@ -18,26 +18,32 @@ var CryptoContractFunctionReadWitness = class extends AbstractWitness {
18
18
  static configSchemas = [CryptoContractFunctionReadWitnessConfigSchema];
19
19
  async observeHandler(inPayloads = []) {
20
20
  await this.started("throw");
21
- const observations = await Promise.all(
22
- inPayloads.filter(isPayloadOfSchemaType(CryptoContractFunctionCallSchema)).map(async (callPayload) => {
23
- const fullCallPayload = { ...{ params: [] }, ...this.config.call, ...callPayload };
24
- const { address, functionName, params } = fullCallPayload;
25
- const validatedAddress = assertEx(address, "Missing address");
26
- const contract = this.params.factory(validatedAddress);
27
- const func = assertEx(contract.callStatic[assertEx(functionName, "missing functionName")], `functionName [${functionName}] not found`);
28
- const rawResult = await func(...params ?? []);
29
- const result = BigNumber.isBigNumber(rawResult) ? { type: "BigNumber", value: rawResult.toHexString() } : { value: rawResult };
30
- const observation = {
31
- address: validatedAddress,
32
- call: await PayloadHasher.hashAsync(fullCallPayload),
33
- chainId: (await contract.provider.getNetwork()).chainId,
34
- result,
35
- schema: CryptoContractFunctionCallResultSchema
36
- };
37
- return observation;
38
- })
39
- );
40
- return observations.flat();
21
+ try {
22
+ const observations = await Promise.all(
23
+ inPayloads.filter(isPayloadOfSchemaType(CryptoContractFunctionCallSchema)).map(async (callPayload) => {
24
+ const fullCallPayload = { ...{ params: [] }, ...this.config.call, ...callPayload };
25
+ const { address, functionName, params } = fullCallPayload;
26
+ const validatedAddress = assertEx(address, "Missing address");
27
+ const contract = this.params.factory(validatedAddress);
28
+ const func = assertEx(contract.callStatic[assertEx(functionName, "missing functionName")], `functionName [${functionName}] not found`);
29
+ const rawResult = await func(...params ?? []);
30
+ const result = BigNumber.isBigNumber(rawResult) ? { type: "BigNumber", value: rawResult.toHexString() } : { value: rawResult };
31
+ const observation = {
32
+ address: validatedAddress,
33
+ call: await PayloadHasher.hashAsync(fullCallPayload),
34
+ chainId: (await contract.provider.getNetwork()).chainId,
35
+ result,
36
+ schema: CryptoContractFunctionCallResultSchema
37
+ };
38
+ return observation;
39
+ })
40
+ );
41
+ return observations.flat();
42
+ } catch (ex) {
43
+ const error = ex;
44
+ console.log(`Error [${this.config.name}]: ${error.message}`);
45
+ }
46
+ return [];
41
47
  }
42
48
  };
43
49
 
@@ -124,10 +130,12 @@ var CryptoContractErc721Diviner = class _CryptoContractErc721Diviner extends Cry
124
130
  async reduceResults(address, callResults) {
125
131
  const name = await _CryptoContractErc721Diviner.findCallResult(address, "name", [], callResults);
126
132
  const symbol = await _CryptoContractErc721Diviner.findCallResult(address, "symbol", [], callResults);
133
+ const totalSupply = await _CryptoContractErc721Diviner.findCallResult(address, "totalSupply", [], callResults);
127
134
  return {
128
135
  name,
129
136
  schema: Erc721ContractInfoSchema,
130
- symbol
137
+ symbol,
138
+ totalSupply
131
139
  };
132
140
  }
133
141
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Plugin.ts","../../src/Witness.ts","../../src/CryptoContractDiviner.ts","../../src/Erc721Diviner.ts","../../src/Erc1155Diviner.ts","../../src/index.ts"],"sourcesContent":["import { NftSchema } from '@xyo-network/crypto-nft-payload-plugin'\nimport { PayloadSetSchema } from '@xyo-network/payload-model'\nimport { createPayloadSetWitnessPlugin } from '@xyo-network/payloadset-plugin'\n\nimport { CryptoContractFunctionReadWitness } from './Witness'\n\nexport const CryptoContractFunctionReadWitnessPlugin = () =>\n createPayloadSetWitnessPlugin<CryptoContractFunctionReadWitness>(\n { required: { [NftSchema]: 1 }, schema: PayloadSetSchema },\n {\n witness: async (params) => {\n const result = await CryptoContractFunctionReadWitness.create(params)\n return result\n },\n },\n )\n","import { assertEx } from '@xylabs/assert'\nimport { AbstractWitness } from '@xyo-network/abstract-witness'\nimport {\n CryptoContractFunctionCall,\n CryptoContractFunctionCallResult,\n CryptoContractFunctionCallResultSchema,\n CryptoContractFunctionCallSchema,\n CryptoContractFunctionReadWitnessConfig,\n CryptoContractFunctionReadWitnessConfigSchema,\n} from '@xyo-network/crypto-contract-function-read-payload-plugin'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { AnyConfigSchema } from '@xyo-network/module-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\nimport { WitnessParams } from '@xyo-network/witness-model'\nimport { BigNumber, Contract } from 'ethers'\n\nexport type CryptoContractFunctionReadWitnessParams<TContract extends Contract> = WitnessParams<\n AnyConfigSchema<CryptoContractFunctionReadWitnessConfig>,\n {\n factory: (address: string) => TContract\n }\n>\n\nexport class CryptoContractFunctionReadWitness<\n TContract extends Contract = Contract,\n TParams extends CryptoContractFunctionReadWitnessParams<TContract> = CryptoContractFunctionReadWitnessParams<TContract>,\n> extends AbstractWitness<TParams, CryptoContractFunctionCall<keyof TContract['callStatic']>, CryptoContractFunctionCallResult> {\n static override configSchemas = [CryptoContractFunctionReadWitnessConfigSchema]\n\n protected override async observeHandler(\n inPayloads: CryptoContractFunctionCall<keyof TContract['callStatic']>[] = [],\n ): Promise<CryptoContractFunctionCallResult[]> {\n await this.started('throw')\n const observations = await Promise.all(\n inPayloads.filter(isPayloadOfSchemaType(CryptoContractFunctionCallSchema)).map(async (callPayload) => {\n const fullCallPayload = { ...{ params: [] }, ...this.config.call, ...callPayload }\n const { address, functionName, params } = fullCallPayload\n const validatedAddress = assertEx(address, 'Missing address')\n const contract = this.params.factory(validatedAddress)\n const func = assertEx(contract.callStatic[assertEx(functionName, 'missing functionName')], `functionName [${functionName}] not found`)\n const rawResult = await func(...(params ?? []))\n const result: CryptoContractFunctionCallResult['result'] = BigNumber.isBigNumber(rawResult)\n ? { type: 'BigNumber', value: rawResult.toHexString() }\n : { value: rawResult }\n const observation: CryptoContractFunctionCallResult = {\n address: validatedAddress,\n call: await PayloadHasher.hashAsync(fullCallPayload),\n chainId: (await contract.provider.getNetwork()).chainId,\n result,\n schema: CryptoContractFunctionCallResultSchema,\n }\n return observation\n }),\n )\n\n return observations.flat()\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { Promisable } from '@xylabs/promise'\nimport { AbstractDiviner } from '@xyo-network/abstract-diviner'\nimport {\n CryptoContractFunctionCall,\n CryptoContractFunctionCallResult,\n CryptoContractFunctionCallResultSchema,\n CryptoContractFunctionCallSchema,\n} from '@xyo-network/crypto-contract-function-read-payload-plugin'\nimport { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { isPayloadOfSchemaType, Payload } from '@xyo-network/payload-model'\n\nexport type FindCallResult<TResult = string, TPayload = Payload> = [TResult, TPayload] | [undefined, TPayload] | [undefined, undefined]\n\nexport const CryptoContractDivinerConfigSchema = 'network.xyo.crypto.contract.diviner.config'\nexport type CryptoContractDivinerConfigSchema = typeof CryptoContractDivinerConfigSchema\n\nexport type CryptoContractDivinerConfig = DivinerConfig\nexport type CryptoContractDivinerParams = DivinerParams<CryptoContractDivinerConfig>\n\nexport const ContractInfoSchema = 'network.xyo.crypto.contract.info'\nexport type ContractInfoSchema = typeof ContractInfoSchema\n\nexport type OmittedContractInfo<TFields extends object | Payload | null = null, TSchema extends string | null = null> = Omit<\n ContractInfo<TFields, TSchema extends null ? (TFields extends Payload ? TFields['schema'] : never) : TSchema>,\n 'address' | 'chainId'\n>\n\nexport type ContractInfo<TFields extends object | null = null, TSchema extends string = ContractInfoSchema> = Payload<\n TFields extends null\n ? object\n : TFields & {\n address: string\n chainId: string\n },\n TSchema\n>\n\nexport abstract class CryptoContractDiviner<\n TContractInfo extends Payload<Omit<ContractInfo, 'schema'>> = ContractInfo,\n TParams extends CryptoContractDivinerParams = CryptoContractDivinerParams,\n> extends AbstractDiviner<TParams> {\n static override configSchemas = [CryptoContractDivinerConfigSchema]\n\n protected static async findCallResult<TResult = string>(\n address: string,\n functionName: string,\n params: unknown[],\n payloads: CryptoContractFunctionCallResult[],\n ): Promise<TResult | undefined> {\n const callHash = await this.generateCallHash(address, functionName, params)\n const foundPayload = payloads.find((payload) => payload.call === callHash)\n return foundPayload?.result.value as TResult | undefined\n }\n\n protected static async generateCallHash(address: string, functionName: string, params: unknown[]) {\n const callPayload: CryptoContractFunctionCall = {\n address,\n functionName,\n params,\n schema: CryptoContractFunctionCallSchema,\n }\n return await PayloadHasher.hashAsync(callPayload)\n }\n\n protected static matchingExistingField<R = string, T extends Payload = Payload>(objs: T[], field: keyof T) {\n const expectedValue = objs.at(0)?.[field] as R\n const didNotMatch = objs.reduce((prev, obj) => {\n return prev || obj[field] !== expectedValue\n }, false)\n return didNotMatch ? undefined : expectedValue\n }\n\n protected contractInfoRequiredFields(callResults: CryptoContractFunctionCallResult[]): Promisable<Omit<ContractInfo, 'schema'>> {\n return {\n address: assertEx(CryptoContractDiviner.matchingExistingField(callResults, 'address'), 'Mismatched address'),\n chainId: assertEx(CryptoContractDiviner.matchingExistingField(callResults, 'chainId'), 'Mismatched chainId'),\n }\n }\n\n protected override async divineHandler(inPayloads: CryptoContractFunctionCallResult[] = []): Promise<TContractInfo[]> {\n const callResults = inPayloads.filter(isPayloadOfSchemaType<CryptoContractFunctionCallResult>(CryptoContractFunctionCallResultSchema))\n const addresses = Object.keys(\n callResults.reduce<Record<string, boolean>>((prev, result) => {\n if (result.address) {\n prev[result.address] = true\n }\n return prev\n }, {}),\n )\n const result = await Promise.all(\n addresses.map(async (address) => {\n const foundCallResults = callResults.filter((callResult) => callResult.address === address)\n return {\n ...(await this.reduceResults(address, foundCallResults)),\n ...this.contractInfoRequiredFields(foundCallResults),\n } as TContractInfo\n }),\n )\n\n return result\n }\n\n protected abstract reduceResults(\n address: string,\n callResults: CryptoContractFunctionCallResult[],\n ): Promisable<Omit<TContractInfo, 'address' | 'chainId'>>\n}\n","import { CryptoContractFunctionCallResult } from '@xyo-network/crypto-contract-function-read-payload-plugin'\nimport { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model'\n\nimport { ContractInfo, CryptoContractDiviner, OmittedContractInfo } from './CryptoContractDiviner'\n\nexport const CryptoContractErc721DivinerConfigSchema = 'network.xyo.crypto.contract.erc721.info.diviner.config'\nexport type CryptoContractErc721DivinerConfigSchema = typeof CryptoContractErc721DivinerConfigSchema\n\nexport type CryptoContractErc721DivinerConfig = DivinerConfig\nexport type CryptoContractErc721DivinerParams = DivinerParams<CryptoContractErc721DivinerConfig>\n\nexport const Erc721ContractInfoSchema = 'network.xyo.crypto.contract.erc721.info'\nexport type Erc721ContractInfoSchema = typeof Erc721ContractInfoSchema\n\nexport type Erc721ContractInfo = ContractInfo<\n {\n name?: string\n symbol?: string\n totalSupply?: string\n },\n Erc721ContractInfoSchema\n>\n\nexport class CryptoContractErc721Diviner<\n TParams extends CryptoContractErc721DivinerParams = CryptoContractErc721DivinerParams,\n> extends CryptoContractDiviner<Erc721ContractInfo, TParams> {\n static override configSchemas = [CryptoContractErc721DivinerConfigSchema]\n\n protected override async reduceResults(\n address: string,\n callResults: CryptoContractFunctionCallResult[],\n ): Promise<OmittedContractInfo<Erc721ContractInfo>> {\n const name = await CryptoContractErc721Diviner.findCallResult(address, 'name', [], callResults)\n const symbol = await CryptoContractErc721Diviner.findCallResult(address, 'symbol', [], callResults)\n return {\n name,\n schema: Erc721ContractInfoSchema,\n symbol,\n }\n }\n}\n","import { CryptoContractFunctionCallResult } from '@xyo-network/crypto-contract-function-read-payload-plugin'\nimport { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model'\n\nimport { ContractInfo, CryptoContractDiviner, OmittedContractInfo } from './CryptoContractDiviner'\n\nexport const CryptoContractErc1155DivinerConfigSchema = 'network.xyo.crypto.contract.erc1155.info.diviner.config'\nexport type CryptoContractErc1155DivinerConfigSchema = typeof CryptoContractErc1155DivinerConfigSchema\n\nexport type CryptoContractErc1155DivinerConfig = DivinerConfig\nexport type CryptoContractErc1155DivinerParams = DivinerParams<CryptoContractErc1155DivinerConfig>\n\nexport const Erc1155ContractInfoSchema = 'network.xyo.crypto.contract.erc1155.info'\nexport type Erc1155ContractInfoSchema = typeof Erc1155ContractInfoSchema\n\nexport type Erc1155ContractInfo = ContractInfo<\n {\n uri?: string\n },\n Erc1155ContractInfoSchema\n>\n\nexport class CryptoContractErc1155Diviner<\n TParams extends CryptoContractErc1155DivinerParams = CryptoContractErc1155DivinerParams,\n> extends CryptoContractDiviner<Erc1155ContractInfo, TParams> {\n static override configSchemas = [CryptoContractErc1155DivinerConfigSchema]\n\n protected override async reduceResults(\n address: string,\n callResults: CryptoContractFunctionCallResult[],\n ): Promise<OmittedContractInfo<Erc1155ContractInfo>> {\n const uri = await CryptoContractErc1155Diviner.findCallResult(address, 'uri', [], callResults)\n return {\n schema: Erc1155ContractInfoSchema,\n uri,\n }\n }\n}\n","import { CryptoContractFunctionReadWitnessPlugin } from './Plugin'\n\nexport * from './CryptoContractDiviner'\nexport * from './Erc721Diviner'\nexport * from './Erc1155Diviner'\nexport * from './Witness'\n\nexport { CryptoContractFunctionReadWitnessPlugin }\n\n// eslint-disable-next-line import/no-default-export\nexport default CryptoContractFunctionReadWitnessPlugin\n"],"mappings":";AAAA,SAAS,iBAAiB;AAC1B,SAAS,wBAAwB;AACjC,SAAS,qCAAqC;;;ACF9C,SAAS,gBAAgB;AACzB,SAAS,uBAAuB;AAChC;AAAA,EAGE;AAAA,EACA;AAAA,EAEA;AAAA,OACK;AACP,SAAS,qBAAqB;AAE9B,SAAS,6BAA6B;AAEtC,SAAS,iBAA2B;AAS7B,IAAM,oCAAN,cAGG,gBAAsH;AAAA,EAC9H,OAAgB,gBAAgB,CAAC,6CAA6C;AAAA,EAE9E,MAAyB,eACvB,aAA0E,CAAC,GAC9B;AAC7C,UAAM,KAAK,QAAQ,OAAO;AAC1B,UAAM,eAAe,MAAM,QAAQ;AAAA,MACjC,WAAW,OAAO,sBAAsB,gCAAgC,CAAC,EAAE,IAAI,OAAO,gBAAgB;AACpG,cAAM,kBAAkB,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,GAAG,GAAG,KAAK,OAAO,MAAM,GAAG,YAAY;AACjF,cAAM,EAAE,SAAS,cAAc,OAAO,IAAI;AAC1C,cAAM,mBAAmB,SAAS,SAAS,iBAAiB;AAC5D,cAAM,WAAW,KAAK,OAAO,QAAQ,gBAAgB;AACrD,cAAM,OAAO,SAAS,SAAS,WAAW,SAAS,cAAc,sBAAsB,CAAC,GAAG,iBAAiB,YAAY,aAAa;AACrI,cAAM,YAAY,MAAM,KAAK,GAAI,UAAU,CAAC,CAAE;AAC9C,cAAM,SAAqD,UAAU,YAAY,SAAS,IACtF,EAAE,MAAM,aAAa,OAAO,UAAU,YAAY,EAAE,IACpD,EAAE,OAAO,UAAU;AACvB,cAAM,cAAgD;AAAA,UACpD,SAAS;AAAA,UACT,MAAM,MAAM,cAAc,UAAU,eAAe;AAAA,UACnD,UAAU,MAAM,SAAS,SAAS,WAAW,GAAG;AAAA,UAChD;AAAA,UACA,QAAQ;AAAA,QACV;AACA,eAAO;AAAA,MACT,CAAC;AAAA,IACH;AAEA,WAAO,aAAa,KAAK;AAAA,EAC3B;AACF;;;ADnDO,IAAM,0CAA0C,MACrD;AAAA,EACE,EAAE,UAAU,EAAE,CAAC,SAAS,GAAG,EAAE,GAAG,QAAQ,iBAAiB;AAAA,EACzD;AAAA,IACE,SAAS,OAAO,WAAW;AACzB,YAAM,SAAS,MAAM,kCAAkC,OAAO,MAAM;AACpE,aAAO;AAAA,IACT;AAAA,EACF;AACF;;;AEfF,SAAS,YAAAA,iBAAgB;AAEzB,SAAS,uBAAuB;AAChC;AAAA,EAGE,0CAAAC;AAAA,EACA,oCAAAC;AAAA,OACK;AAEP,SAAS,iBAAAC,sBAAqB;AAC9B,SAAS,yBAAAC,8BAAsC;AAIxC,IAAM,oCAAoC;AAM1C,IAAM,qBAAqB;AAkB3B,IAAe,wBAAf,MAAe,+BAGZ,gBAAyB;AAAA,EACjC,OAAgB,gBAAgB,CAAC,iCAAiC;AAAA,EAElE,aAAuB,eACrB,SACA,cACA,QACA,UAC8B;AAC9B,UAAM,WAAW,MAAM,KAAK,iBAAiB,SAAS,cAAc,MAAM;AAC1E,UAAM,eAAe,SAAS,KAAK,CAAC,YAAY,QAAQ,SAAS,QAAQ;AACzE,WAAO,6CAAc,OAAO;AAAA,EAC9B;AAAA,EAEA,aAAuB,iBAAiB,SAAiB,cAAsB,QAAmB;AAChG,UAAM,cAA0C;AAAA,MAC9C;AAAA,MACA;AAAA,MACA;AAAA,MACA,QAAQF;AAAA,IACV;AACA,WAAO,MAAMC,eAAc,UAAU,WAAW;AAAA,EAClD;AAAA,EAEA,OAAiB,sBAA+D,MAAW,OAAgB;AAlE7G;AAmEI,UAAM,iBAAgB,UAAK,GAAG,CAAC,MAAT,mBAAa;AACnC,UAAM,cAAc,KAAK,OAAO,CAAC,MAAM,QAAQ;AAC7C,aAAO,QAAQ,IAAI,KAAK,MAAM;AAAA,IAChC,GAAG,KAAK;AACR,WAAO,cAAc,SAAY;AAAA,EACnC;AAAA,EAEU,2BAA2B,aAA2F;AAC9H,WAAO;AAAA,MACL,SAASH,UAAS,uBAAsB,sBAAsB,aAAa,SAAS,GAAG,oBAAoB;AAAA,MAC3G,SAASA,UAAS,uBAAsB,sBAAsB,aAAa,SAAS,GAAG,oBAAoB;AAAA,IAC7G;AAAA,EACF;AAAA,EAEA,MAAyB,cAAc,aAAiD,CAAC,GAA6B;AACpH,UAAM,cAAc,WAAW,OAAOI,uBAAwDH,uCAAsC,CAAC;AACrI,UAAM,YAAY,OAAO;AAAA,MACvB,YAAY,OAAgC,CAAC,MAAMI,YAAW;AAC5D,YAAIA,QAAO,SAAS;AAClB,eAAKA,QAAO,OAAO,IAAI;AAAA,QACzB;AACA,eAAO;AAAA,MACT,GAAG,CAAC,CAAC;AAAA,IACP;AACA,UAAM,SAAS,MAAM,QAAQ;AAAA,MAC3B,UAAU,IAAI,OAAO,YAAY;AAC/B,cAAM,mBAAmB,YAAY,OAAO,CAAC,eAAe,WAAW,YAAY,OAAO;AAC1F,eAAO;AAAA,UACL,GAAI,MAAM,KAAK,cAAc,SAAS,gBAAgB;AAAA,UACtD,GAAG,KAAK,2BAA2B,gBAAgB;AAAA,QACrD;AAAA,MACF,CAAC;AAAA,IACH;AAEA,WAAO;AAAA,EACT;AAMF;;;ACvGO,IAAM,0CAA0C;AAMhD,IAAM,2BAA2B;AAYjC,IAAM,8BAAN,MAAM,qCAEH,sBAAmD;AAAA,EAC3D,OAAgB,gBAAgB,CAAC,uCAAuC;AAAA,EAExE,MAAyB,cACvB,SACA,aACkD;AAClD,UAAM,OAAO,MAAM,6BAA4B,eAAe,SAAS,QAAQ,CAAC,GAAG,WAAW;AAC9F,UAAM,SAAS,MAAM,6BAA4B,eAAe,SAAS,UAAU,CAAC,GAAG,WAAW;AAClG,WAAO;AAAA,MACL;AAAA,MACA,QAAQ;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACF;;;ACnCO,IAAM,2CAA2C;AAMjD,IAAM,4BAA4B;AAUlC,IAAM,+BAAN,MAAM,sCAEH,sBAAoD;AAAA,EAC5D,OAAgB,gBAAgB,CAAC,wCAAwC;AAAA,EAEzE,MAAyB,cACvB,SACA,aACmD;AACnD,UAAM,MAAM,MAAM,8BAA6B,eAAe,SAAS,OAAO,CAAC,GAAG,WAAW;AAC7F,WAAO;AAAA,MACL,QAAQ;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACF;;;AC1BA,IAAO,cAAQ;","names":["assertEx","CryptoContractFunctionCallResultSchema","CryptoContractFunctionCallSchema","PayloadHasher","isPayloadOfSchemaType","result"]}
1
+ {"version":3,"sources":["../../src/Plugin.ts","../../src/Witness.ts","../../src/CryptoContractDiviner.ts","../../src/Erc721Diviner.ts","../../src/Erc1155Diviner.ts","../../src/index.ts"],"sourcesContent":["import { NftSchema } from '@xyo-network/crypto-nft-payload-plugin'\nimport { PayloadSetSchema } from '@xyo-network/payload-model'\nimport { createPayloadSetWitnessPlugin } from '@xyo-network/payloadset-plugin'\n\nimport { CryptoContractFunctionReadWitness } from './Witness'\n\nexport const CryptoContractFunctionReadWitnessPlugin = () =>\n createPayloadSetWitnessPlugin<CryptoContractFunctionReadWitness>(\n { required: { [NftSchema]: 1 }, schema: PayloadSetSchema },\n {\n witness: async (params) => {\n const result = await CryptoContractFunctionReadWitness.create(params)\n return result\n },\n },\n )\n","import { assertEx } from '@xylabs/assert'\nimport { AbstractWitness } from '@xyo-network/abstract-witness'\nimport {\n CryptoContractFunctionCall,\n CryptoContractFunctionCallResult,\n CryptoContractFunctionCallResultSchema,\n CryptoContractFunctionCallSchema,\n CryptoContractFunctionReadWitnessConfig,\n CryptoContractFunctionReadWitnessConfigSchema,\n} from '@xyo-network/crypto-contract-function-read-payload-plugin'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { AnyConfigSchema } from '@xyo-network/module-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\nimport { WitnessParams } from '@xyo-network/witness-model'\nimport { BigNumber, Contract } from 'ethers'\n\nexport type CryptoContractFunctionReadWitnessParams<TContract extends Contract> = WitnessParams<\n AnyConfigSchema<CryptoContractFunctionReadWitnessConfig>,\n {\n factory: (address: string) => TContract\n }\n>\n\nexport class CryptoContractFunctionReadWitness<\n TContract extends Contract = Contract,\n TParams extends CryptoContractFunctionReadWitnessParams<TContract> = CryptoContractFunctionReadWitnessParams<TContract>,\n> extends AbstractWitness<TParams, CryptoContractFunctionCall<keyof TContract['callStatic']>, CryptoContractFunctionCallResult> {\n static override configSchemas = [CryptoContractFunctionReadWitnessConfigSchema]\n\n protected override async observeHandler(\n inPayloads: CryptoContractFunctionCall<keyof TContract['callStatic']>[] = [],\n ): Promise<CryptoContractFunctionCallResult[]> {\n await this.started('throw')\n try {\n const observations = await Promise.all(\n inPayloads.filter(isPayloadOfSchemaType(CryptoContractFunctionCallSchema)).map(async (callPayload) => {\n const fullCallPayload = { ...{ params: [] }, ...this.config.call, ...callPayload }\n const { address, functionName, params } = fullCallPayload\n const validatedAddress = assertEx(address, 'Missing address')\n const contract = this.params.factory(validatedAddress)\n const func = assertEx(contract.callStatic[assertEx(functionName, 'missing functionName')], `functionName [${functionName}] not found`)\n const rawResult = await func(...(params ?? []))\n const result: CryptoContractFunctionCallResult['result'] = BigNumber.isBigNumber(rawResult)\n ? { type: 'BigNumber', value: rawResult.toHexString() }\n : { value: rawResult }\n const observation: CryptoContractFunctionCallResult = {\n address: validatedAddress,\n call: await PayloadHasher.hashAsync(fullCallPayload),\n chainId: (await contract.provider.getNetwork()).chainId,\n result,\n schema: CryptoContractFunctionCallResultSchema,\n }\n return observation\n }),\n )\n return observations.flat()\n } catch (ex) {\n const error = ex as Error\n console.log(`Error [${this.config.name}]: ${error.message}`)\n }\n\n return []\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { Promisable } from '@xylabs/promise'\nimport { AbstractDiviner } from '@xyo-network/abstract-diviner'\nimport {\n CryptoContractFunctionCall,\n CryptoContractFunctionCallResult,\n CryptoContractFunctionCallResultSchema,\n CryptoContractFunctionCallSchema,\n} from '@xyo-network/crypto-contract-function-read-payload-plugin'\nimport { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { isPayloadOfSchemaType, Payload } from '@xyo-network/payload-model'\n\nexport type FindCallResult<TResult = string, TPayload = Payload> = [TResult, TPayload] | [undefined, TPayload] | [undefined, undefined]\n\nexport const CryptoContractDivinerConfigSchema = 'network.xyo.crypto.contract.diviner.config'\nexport type CryptoContractDivinerConfigSchema = typeof CryptoContractDivinerConfigSchema\n\nexport type CryptoContractDivinerConfig = DivinerConfig\nexport type CryptoContractDivinerParams = DivinerParams<CryptoContractDivinerConfig>\n\nexport const ContractInfoSchema = 'network.xyo.crypto.contract.info'\nexport type ContractInfoSchema = typeof ContractInfoSchema\n\nexport type OmittedContractInfo<TFields extends object | Payload | null = null, TSchema extends string | null = null> = Omit<\n ContractInfo<TFields, TSchema extends null ? (TFields extends Payload ? TFields['schema'] : never) : TSchema>,\n 'address' | 'chainId'\n>\n\nexport type ContractInfo<TFields extends object | null = null, TSchema extends string = ContractInfoSchema> = Payload<\n TFields extends null\n ? object\n : TFields & {\n address: string\n chainId: string\n },\n TSchema\n>\n\nexport abstract class CryptoContractDiviner<\n TContractInfo extends Payload<Omit<ContractInfo, 'schema'>> = ContractInfo,\n TParams extends CryptoContractDivinerParams = CryptoContractDivinerParams,\n> extends AbstractDiviner<TParams> {\n static override configSchemas = [CryptoContractDivinerConfigSchema]\n\n protected static async findCallResult<TResult = string>(\n address: string,\n functionName: string,\n params: unknown[],\n payloads: CryptoContractFunctionCallResult[],\n ): Promise<TResult | undefined> {\n const callHash = await this.generateCallHash(address, functionName, params)\n const foundPayload = payloads.find((payload) => payload.call === callHash)\n return foundPayload?.result.value as TResult | undefined\n }\n\n protected static async generateCallHash(address: string, functionName: string, params: unknown[]) {\n const callPayload: CryptoContractFunctionCall = {\n address,\n functionName,\n params,\n schema: CryptoContractFunctionCallSchema,\n }\n return await PayloadHasher.hashAsync(callPayload)\n }\n\n protected static matchingExistingField<R = string, T extends Payload = Payload>(objs: T[], field: keyof T) {\n const expectedValue = objs.at(0)?.[field] as R\n const didNotMatch = objs.reduce((prev, obj) => {\n return prev || obj[field] !== expectedValue\n }, false)\n return didNotMatch ? undefined : expectedValue\n }\n\n protected contractInfoRequiredFields(callResults: CryptoContractFunctionCallResult[]): Promisable<Omit<ContractInfo, 'schema'>> {\n return {\n address: assertEx(CryptoContractDiviner.matchingExistingField(callResults, 'address'), 'Mismatched address'),\n chainId: assertEx(CryptoContractDiviner.matchingExistingField(callResults, 'chainId'), 'Mismatched chainId'),\n }\n }\n\n protected override async divineHandler(inPayloads: CryptoContractFunctionCallResult[] = []): Promise<TContractInfo[]> {\n const callResults = inPayloads.filter(isPayloadOfSchemaType<CryptoContractFunctionCallResult>(CryptoContractFunctionCallResultSchema))\n const addresses = Object.keys(\n callResults.reduce<Record<string, boolean>>((prev, result) => {\n if (result.address) {\n prev[result.address] = true\n }\n return prev\n }, {}),\n )\n const result = await Promise.all(\n addresses.map(async (address) => {\n const foundCallResults = callResults.filter((callResult) => callResult.address === address)\n return {\n ...(await this.reduceResults(address, foundCallResults)),\n ...this.contractInfoRequiredFields(foundCallResults),\n } as TContractInfo\n }),\n )\n\n return result\n }\n\n protected abstract reduceResults(\n address: string,\n callResults: CryptoContractFunctionCallResult[],\n ): Promisable<Omit<TContractInfo, 'address' | 'chainId'>>\n}\n","import { CryptoContractFunctionCallResult } from '@xyo-network/crypto-contract-function-read-payload-plugin'\nimport { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model'\n\nimport { ContractInfo, CryptoContractDiviner, OmittedContractInfo } from './CryptoContractDiviner'\n\nexport const CryptoContractErc721DivinerConfigSchema = 'network.xyo.crypto.contract.erc721.info.diviner.config'\nexport type CryptoContractErc721DivinerConfigSchema = typeof CryptoContractErc721DivinerConfigSchema\n\nexport type CryptoContractErc721DivinerConfig = DivinerConfig\nexport type CryptoContractErc721DivinerParams = DivinerParams<CryptoContractErc721DivinerConfig>\n\nexport const Erc721ContractInfoSchema = 'network.xyo.crypto.contract.erc721.info'\nexport type Erc721ContractInfoSchema = typeof Erc721ContractInfoSchema\n\nexport type Erc721ContractInfo = ContractInfo<\n {\n name?: string\n symbol?: string\n totalSupply?: string\n },\n Erc721ContractInfoSchema\n>\n\nexport class CryptoContractErc721Diviner<\n TParams extends CryptoContractErc721DivinerParams = CryptoContractErc721DivinerParams,\n> extends CryptoContractDiviner<Erc721ContractInfo, TParams> {\n static override configSchemas = [CryptoContractErc721DivinerConfigSchema]\n\n protected override async reduceResults(\n address: string,\n callResults: CryptoContractFunctionCallResult[],\n ): Promise<OmittedContractInfo<Erc721ContractInfo>> {\n const name = await CryptoContractErc721Diviner.findCallResult(address, 'name', [], callResults)\n const symbol = await CryptoContractErc721Diviner.findCallResult(address, 'symbol', [], callResults)\n const totalSupply = await CryptoContractErc721Diviner.findCallResult(address, 'totalSupply', [], callResults)\n return {\n name,\n schema: Erc721ContractInfoSchema,\n symbol,\n totalSupply,\n }\n }\n}\n","import { CryptoContractFunctionCallResult } from '@xyo-network/crypto-contract-function-read-payload-plugin'\nimport { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model'\n\nimport { ContractInfo, CryptoContractDiviner, OmittedContractInfo } from './CryptoContractDiviner'\n\nexport const CryptoContractErc1155DivinerConfigSchema = 'network.xyo.crypto.contract.erc1155.info.diviner.config'\nexport type CryptoContractErc1155DivinerConfigSchema = typeof CryptoContractErc1155DivinerConfigSchema\n\nexport type CryptoContractErc1155DivinerConfig = DivinerConfig\nexport type CryptoContractErc1155DivinerParams = DivinerParams<CryptoContractErc1155DivinerConfig>\n\nexport const Erc1155ContractInfoSchema = 'network.xyo.crypto.contract.erc1155.info'\nexport type Erc1155ContractInfoSchema = typeof Erc1155ContractInfoSchema\n\nexport type Erc1155ContractInfo = ContractInfo<\n {\n uri?: string\n },\n Erc1155ContractInfoSchema\n>\n\nexport class CryptoContractErc1155Diviner<\n TParams extends CryptoContractErc1155DivinerParams = CryptoContractErc1155DivinerParams,\n> extends CryptoContractDiviner<Erc1155ContractInfo, TParams> {\n static override configSchemas = [CryptoContractErc1155DivinerConfigSchema]\n\n protected override async reduceResults(\n address: string,\n callResults: CryptoContractFunctionCallResult[],\n ): Promise<OmittedContractInfo<Erc1155ContractInfo>> {\n const uri = await CryptoContractErc1155Diviner.findCallResult(address, 'uri', [], callResults)\n return {\n schema: Erc1155ContractInfoSchema,\n uri,\n }\n }\n}\n","import { CryptoContractFunctionReadWitnessPlugin } from './Plugin'\n\nexport * from './CryptoContractDiviner'\nexport * from './Erc721Diviner'\nexport * from './Erc1155Diviner'\nexport * from './Witness'\n\nexport { CryptoContractFunctionReadWitnessPlugin }\n\n// eslint-disable-next-line import/no-default-export\nexport default CryptoContractFunctionReadWitnessPlugin\n"],"mappings":";AAAA,SAAS,iBAAiB;AAC1B,SAAS,wBAAwB;AACjC,SAAS,qCAAqC;;;ACF9C,SAAS,gBAAgB;AACzB,SAAS,uBAAuB;AAChC;AAAA,EAGE;AAAA,EACA;AAAA,EAEA;AAAA,OACK;AACP,SAAS,qBAAqB;AAE9B,SAAS,6BAA6B;AAEtC,SAAS,iBAA2B;AAS7B,IAAM,oCAAN,cAGG,gBAAsH;AAAA,EAC9H,OAAgB,gBAAgB,CAAC,6CAA6C;AAAA,EAE9E,MAAyB,eACvB,aAA0E,CAAC,GAC9B;AAC7C,UAAM,KAAK,QAAQ,OAAO;AAC1B,QAAI;AACF,YAAM,eAAe,MAAM,QAAQ;AAAA,QACjC,WAAW,OAAO,sBAAsB,gCAAgC,CAAC,EAAE,IAAI,OAAO,gBAAgB;AACpG,gBAAM,kBAAkB,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,GAAG,GAAG,KAAK,OAAO,MAAM,GAAG,YAAY;AACjF,gBAAM,EAAE,SAAS,cAAc,OAAO,IAAI;AAC1C,gBAAM,mBAAmB,SAAS,SAAS,iBAAiB;AAC5D,gBAAM,WAAW,KAAK,OAAO,QAAQ,gBAAgB;AACrD,gBAAM,OAAO,SAAS,SAAS,WAAW,SAAS,cAAc,sBAAsB,CAAC,GAAG,iBAAiB,YAAY,aAAa;AACrI,gBAAM,YAAY,MAAM,KAAK,GAAI,UAAU,CAAC,CAAE;AAC9C,gBAAM,SAAqD,UAAU,YAAY,SAAS,IACtF,EAAE,MAAM,aAAa,OAAO,UAAU,YAAY,EAAE,IACpD,EAAE,OAAO,UAAU;AACvB,gBAAM,cAAgD;AAAA,YACpD,SAAS;AAAA,YACT,MAAM,MAAM,cAAc,UAAU,eAAe;AAAA,YACnD,UAAU,MAAM,SAAS,SAAS,WAAW,GAAG;AAAA,YAChD;AAAA,YACA,QAAQ;AAAA,UACV;AACA,iBAAO;AAAA,QACT,CAAC;AAAA,MACH;AACA,aAAO,aAAa,KAAK;AAAA,IAC3B,SAAS,IAAI;AACX,YAAM,QAAQ;AACd,cAAQ,IAAI,UAAU,KAAK,OAAO,IAAI,MAAM,MAAM,OAAO,EAAE;AAAA,IAC7D;AAEA,WAAO,CAAC;AAAA,EACV;AACF;;;ADzDO,IAAM,0CAA0C,MACrD;AAAA,EACE,EAAE,UAAU,EAAE,CAAC,SAAS,GAAG,EAAE,GAAG,QAAQ,iBAAiB;AAAA,EACzD;AAAA,IACE,SAAS,OAAO,WAAW;AACzB,YAAM,SAAS,MAAM,kCAAkC,OAAO,MAAM;AACpE,aAAO;AAAA,IACT;AAAA,EACF;AACF;;;AEfF,SAAS,YAAAA,iBAAgB;AAEzB,SAAS,uBAAuB;AAChC;AAAA,EAGE,0CAAAC;AAAA,EACA,oCAAAC;AAAA,OACK;AAEP,SAAS,iBAAAC,sBAAqB;AAC9B,SAAS,yBAAAC,8BAAsC;AAIxC,IAAM,oCAAoC;AAM1C,IAAM,qBAAqB;AAkB3B,IAAe,wBAAf,MAAe,+BAGZ,gBAAyB;AAAA,EACjC,OAAgB,gBAAgB,CAAC,iCAAiC;AAAA,EAElE,aAAuB,eACrB,SACA,cACA,QACA,UAC8B;AAC9B,UAAM,WAAW,MAAM,KAAK,iBAAiB,SAAS,cAAc,MAAM;AAC1E,UAAM,eAAe,SAAS,KAAK,CAAC,YAAY,QAAQ,SAAS,QAAQ;AACzE,WAAO,6CAAc,OAAO;AAAA,EAC9B;AAAA,EAEA,aAAuB,iBAAiB,SAAiB,cAAsB,QAAmB;AAChG,UAAM,cAA0C;AAAA,MAC9C;AAAA,MACA;AAAA,MACA;AAAA,MACA,QAAQF;AAAA,IACV;AACA,WAAO,MAAMC,eAAc,UAAU,WAAW;AAAA,EAClD;AAAA,EAEA,OAAiB,sBAA+D,MAAW,OAAgB;AAlE7G;AAmEI,UAAM,iBAAgB,UAAK,GAAG,CAAC,MAAT,mBAAa;AACnC,UAAM,cAAc,KAAK,OAAO,CAAC,MAAM,QAAQ;AAC7C,aAAO,QAAQ,IAAI,KAAK,MAAM;AAAA,IAChC,GAAG,KAAK;AACR,WAAO,cAAc,SAAY;AAAA,EACnC;AAAA,EAEU,2BAA2B,aAA2F;AAC9H,WAAO;AAAA,MACL,SAASH,UAAS,uBAAsB,sBAAsB,aAAa,SAAS,GAAG,oBAAoB;AAAA,MAC3G,SAASA,UAAS,uBAAsB,sBAAsB,aAAa,SAAS,GAAG,oBAAoB;AAAA,IAC7G;AAAA,EACF;AAAA,EAEA,MAAyB,cAAc,aAAiD,CAAC,GAA6B;AACpH,UAAM,cAAc,WAAW,OAAOI,uBAAwDH,uCAAsC,CAAC;AACrI,UAAM,YAAY,OAAO;AAAA,MACvB,YAAY,OAAgC,CAAC,MAAMI,YAAW;AAC5D,YAAIA,QAAO,SAAS;AAClB,eAAKA,QAAO,OAAO,IAAI;AAAA,QACzB;AACA,eAAO;AAAA,MACT,GAAG,CAAC,CAAC;AAAA,IACP;AACA,UAAM,SAAS,MAAM,QAAQ;AAAA,MAC3B,UAAU,IAAI,OAAO,YAAY;AAC/B,cAAM,mBAAmB,YAAY,OAAO,CAAC,eAAe,WAAW,YAAY,OAAO;AAC1F,eAAO;AAAA,UACL,GAAI,MAAM,KAAK,cAAc,SAAS,gBAAgB;AAAA,UACtD,GAAG,KAAK,2BAA2B,gBAAgB;AAAA,QACrD;AAAA,MACF,CAAC;AAAA,IACH;AAEA,WAAO;AAAA,EACT;AAMF;;;ACvGO,IAAM,0CAA0C;AAMhD,IAAM,2BAA2B;AAYjC,IAAM,8BAAN,MAAM,qCAEH,sBAAmD;AAAA,EAC3D,OAAgB,gBAAgB,CAAC,uCAAuC;AAAA,EAExE,MAAyB,cACvB,SACA,aACkD;AAClD,UAAM,OAAO,MAAM,6BAA4B,eAAe,SAAS,QAAQ,CAAC,GAAG,WAAW;AAC9F,UAAM,SAAS,MAAM,6BAA4B,eAAe,SAAS,UAAU,CAAC,GAAG,WAAW;AAClG,UAAM,cAAc,MAAM,6BAA4B,eAAe,SAAS,eAAe,CAAC,GAAG,WAAW;AAC5G,WAAO;AAAA,MACL;AAAA,MACA,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;;;ACrCO,IAAM,2CAA2C;AAMjD,IAAM,4BAA4B;AAUlC,IAAM,+BAAN,MAAM,sCAEH,sBAAoD;AAAA,EAC5D,OAAgB,gBAAgB,CAAC,wCAAwC;AAAA,EAEzE,MAAyB,cACvB,SACA,aACmD;AACnD,UAAM,MAAM,MAAM,8BAA6B,eAAe,SAAS,OAAO,CAAC,GAAG,WAAW;AAC7F,WAAO;AAAA,MACL,QAAQ;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACF;;;AC1BA,IAAO,cAAQ;","names":["assertEx","CryptoContractFunctionCallResultSchema","CryptoContractFunctionCallSchema","PayloadHasher","isPayloadOfSchemaType","result"]}
package/package.json CHANGED
@@ -12,26 +12,26 @@
12
12
  "dependencies": {
13
13
  "@xylabs/assert": "^2.13.3",
14
14
  "@xylabs/promise": "^2.13.3",
15
- "@xyo-network/abstract-diviner": "~2.77.17",
16
- "@xyo-network/abstract-witness": "~2.77.17",
17
- "@xyo-network/crypto-contract-function-read-payload-plugin": "~2.77.17",
18
- "@xyo-network/crypto-nft-payload-plugin": "~2.77.17",
19
- "@xyo-network/diviner-model": "~2.77.17",
20
- "@xyo-network/hash": "~2.77.17",
21
- "@xyo-network/module-model": "~2.77.17",
22
- "@xyo-network/payload-model": "~2.77.17",
23
- "@xyo-network/payloadset-plugin": "~2.77.17",
24
- "@xyo-network/witness-model": "~2.77.17"
15
+ "@xyo-network/abstract-diviner": "~2.77.18",
16
+ "@xyo-network/abstract-witness": "~2.77.18",
17
+ "@xyo-network/crypto-contract-function-read-payload-plugin": "~2.77.18",
18
+ "@xyo-network/crypto-nft-payload-plugin": "~2.77.18",
19
+ "@xyo-network/diviner-model": "~2.77.18",
20
+ "@xyo-network/hash": "~2.77.18",
21
+ "@xyo-network/module-model": "~2.77.18",
22
+ "@xyo-network/payload-model": "~2.77.18",
23
+ "@xyo-network/payloadset-plugin": "~2.77.18",
24
+ "@xyo-network/witness-model": "~2.77.18"
25
25
  },
26
26
  "devDependencies": {
27
27
  "@ethersproject/providers": "^5.7.2",
28
28
  "@xylabs/jest-helpers": "^2.13.3",
29
29
  "@xylabs/ts-scripts-yarn3": "^3.1.13",
30
30
  "@xylabs/tsconfig": "^3.1.13",
31
- "@xyo-network/account": "~2.77.17",
32
- "@xyo-network/manifest": "~2.77.17",
31
+ "@xyo-network/account": "~2.77.18",
32
+ "@xyo-network/manifest": "~2.77.18",
33
33
  "@xyo-network/open-zeppelin-typechain": "^2.2.11",
34
- "@xyo-network/sentinel-model": "~2.77.17",
34
+ "@xyo-network/sentinel-model": "~2.77.18",
35
35
  "ethers": "^5.7.2",
36
36
  "jest": "^29.7.0",
37
37
  "typescript": "^5.2.2"
@@ -76,5 +76,5 @@
76
76
  "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js.git"
77
77
  },
78
78
  "sideEffects": false,
79
- "version": "2.77.17"
79
+ "version": "2.77.18"
80
80
  }
@@ -32,10 +32,12 @@ export class CryptoContractErc721Diviner<
32
32
  ): Promise<OmittedContractInfo<Erc721ContractInfo>> {
33
33
  const name = await CryptoContractErc721Diviner.findCallResult(address, 'name', [], callResults)
34
34
  const symbol = await CryptoContractErc721Diviner.findCallResult(address, 'symbol', [], callResults)
35
+ const totalSupply = await CryptoContractErc721Diviner.findCallResult(address, 'totalSupply', [], callResults)
35
36
  return {
36
37
  name,
37
38
  schema: Erc721ContractInfoSchema,
38
39
  symbol,
40
+ totalSupply,
39
41
  }
40
42
  }
41
43
  }
@@ -4,7 +4,7 @@
4
4
  {
5
5
  "config": {
6
6
  "accountPath": "m/44'/60'/1'/0'/0'",
7
- "name": "Erc721Info",
7
+ "name": "NftInfo",
8
8
  "schema": "network.xyo.node.config"
9
9
  },
10
10
  "modules": {
@@ -47,7 +47,7 @@
47
47
  "params": []
48
48
  },
49
49
  "labels": {
50
- "network.xyo.crypto.contract.interface": "Erc721"
50
+ "network.xyo.crypto.contract.interface": "Erc721Enumerable"
51
51
  },
52
52
  "language": "javascript",
53
53
  "name": "Erc721TotalSupplyWitness",
@@ -89,7 +89,7 @@
89
89
  "config": {
90
90
  "accountPath": "m/44'/60'/1'/3'/0'",
91
91
  "language": "javascript",
92
- "name": "Erc721InfoSentinel",
92
+ "name": "NftInfoSentinel",
93
93
  "schema": "network.xyo.sentinel.config",
94
94
  "synchronous": "true",
95
95
  "tasks": [
package/src/Witness.ts CHANGED
@@ -31,28 +31,34 @@ export class CryptoContractFunctionReadWitness<
31
31
  inPayloads: CryptoContractFunctionCall<keyof TContract['callStatic']>[] = [],
32
32
  ): Promise<CryptoContractFunctionCallResult[]> {
33
33
  await this.started('throw')
34
- const observations = await Promise.all(
35
- inPayloads.filter(isPayloadOfSchemaType(CryptoContractFunctionCallSchema)).map(async (callPayload) => {
36
- const fullCallPayload = { ...{ params: [] }, ...this.config.call, ...callPayload }
37
- const { address, functionName, params } = fullCallPayload
38
- const validatedAddress = assertEx(address, 'Missing address')
39
- const contract = this.params.factory(validatedAddress)
40
- const func = assertEx(contract.callStatic[assertEx(functionName, 'missing functionName')], `functionName [${functionName}] not found`)
41
- const rawResult = await func(...(params ?? []))
42
- const result: CryptoContractFunctionCallResult['result'] = BigNumber.isBigNumber(rawResult)
43
- ? { type: 'BigNumber', value: rawResult.toHexString() }
44
- : { value: rawResult }
45
- const observation: CryptoContractFunctionCallResult = {
46
- address: validatedAddress,
47
- call: await PayloadHasher.hashAsync(fullCallPayload),
48
- chainId: (await contract.provider.getNetwork()).chainId,
49
- result,
50
- schema: CryptoContractFunctionCallResultSchema,
51
- }
52
- return observation
53
- }),
54
- )
34
+ try {
35
+ const observations = await Promise.all(
36
+ inPayloads.filter(isPayloadOfSchemaType(CryptoContractFunctionCallSchema)).map(async (callPayload) => {
37
+ const fullCallPayload = { ...{ params: [] }, ...this.config.call, ...callPayload }
38
+ const { address, functionName, params } = fullCallPayload
39
+ const validatedAddress = assertEx(address, 'Missing address')
40
+ const contract = this.params.factory(validatedAddress)
41
+ const func = assertEx(contract.callStatic[assertEx(functionName, 'missing functionName')], `functionName [${functionName}] not found`)
42
+ const rawResult = await func(...(params ?? []))
43
+ const result: CryptoContractFunctionCallResult['result'] = BigNumber.isBigNumber(rawResult)
44
+ ? { type: 'BigNumber', value: rawResult.toHexString() }
45
+ : { value: rawResult }
46
+ const observation: CryptoContractFunctionCallResult = {
47
+ address: validatedAddress,
48
+ call: await PayloadHasher.hashAsync(fullCallPayload),
49
+ chainId: (await contract.provider.getNetwork()).chainId,
50
+ result,
51
+ schema: CryptoContractFunctionCallResultSchema,
52
+ }
53
+ return observation
54
+ }),
55
+ )
56
+ return observations.flat()
57
+ } catch (ex) {
58
+ const error = ex as Error
59
+ console.log(`Error [${this.config.name}]: ${error.message}`)
60
+ }
55
61
 
56
- return observations.flat()
62
+ return []
57
63
  }
58
64
  }