@xyo-network/archivist-memory 2.90.18 → 2.90.20

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":"MemoryArchivist.d.ts","sourceRoot":"","sources":["../../src/MemoryArchivist.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAElC,OAAO,EAAa,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAIL,eAAe,EAKf,iBAAiB,EACjB,wBAAwB,EACzB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE1G,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,MAAM,MAAM,2BAA2B,GAAG,qCAAqC,CAAA;AAC/E,eAAO,MAAM,2BAA2B,EAAE,2BAAmE,CAAA;AAE7G,MAAM,MAAM,qBAAqB,GAAG,eAAe,CAAC;IAClD,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,2BAA2B,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAA;CAChE,CAAC,CAAA;AAEF,KAAK,eAAe,CAAC,CAAC,SAAS,OAAO,IAAI,CAAC,GAAG;IAC5C,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AA0BD,MAAM,MAAM,qBAAqB,CAAC,OAAO,SAAS,eAAe,CAAC,qBAAqB,CAAC,GAAG,eAAe,CAAC,qBAAqB,CAAC,IAC/H,YAAY,CAAC,OAAO,CAAC,CAAA;AACvB,qBACa,eAAe,CACxB,OAAO,SAAS,qBAAqB,CAAC,eAAe,CAAC,qBAAqB,CAAC,CAAC,GAAG,qBAAqB,EACrG,UAAU,SAAS,wBAAwB,GAAG,wBAAwB,CAExE,SAAQ,iBAAiB,CAAC,OAAO,EAAE,UAAU,CAC7C,YAAW,iBAAiB,EAAE,cAAc;IAE5C,OAAgB,aAAa,WAAuD;IAEpF,OAAO,CAAC,cAAc,CAAC,CAA0B;IACjD,OAAO,CAAC,MAAM,CAAC,CAAoD;IAEnE,IAAI,aAAa,sCAGhB;IAED,IAAI,KAAK,gEAGR;IAED,IAAI,GAAG,WAEN;IAED,IAAa,OAAO,aASnB;cAEwB,UAAU,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;cAK9C,YAAY,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;cAM9B,aAAa,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;cAiBlD,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;cAWtD,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,eAAe,EAAE,CAAC;cAarD,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAWvF,OAAO,CAAC,sBAAsB;CAM/B"}
1
+ {"version":3,"file":"MemoryArchivist.d.ts","sourceRoot":"","sources":["../../src/MemoryArchivist.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAElC,OAAO,EAAa,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAE,iBAAiB,EAAwD,MAAM,iCAAiC,CAAA;AACzH,OAAO,EAIL,eAAe,EAKf,iBAAiB,EACjB,wBAAwB,EACzB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE1G,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,MAAM,MAAM,2BAA2B,GAAG,qCAAqC,CAAA;AAC/E,eAAO,MAAM,2BAA2B,EAAE,2BAAmE,CAAA;AAE7G,MAAM,MAAM,qBAAqB,GAAG,eAAe,CAAC;IAClD,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,2BAA2B,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAA;CAChE,CAAC,CAAA;AAEF,KAAK,eAAe,CAAC,CAAC,SAAS,OAAO,IAAI,CAAC,GAAG;IAC5C,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,qBAAqB,CAAC,OAAO,SAAS,eAAe,CAAC,qBAAqB,CAAC,GAAG,eAAe,CAAC,qBAAqB,CAAC,IAC/H,YAAY,CAAC,OAAO,CAAC,CAAA;AACvB,qBACa,eAAe,CACxB,OAAO,SAAS,qBAAqB,CAAC,eAAe,CAAC,qBAAqB,CAAC,CAAC,GAAG,qBAAqB,EACrG,UAAU,SAAS,wBAAwB,GAAG,wBAAwB,CAExE,SAAQ,iBAAiB,CAAC,OAAO,EAAE,UAAU,CAC7C,YAAW,iBAAiB,EAAE,cAAc;IAE5C,OAAgB,aAAa,WAAuD;IAEpF,OAAO,CAAC,cAAc,CAAC,CAA0B;IACjD,OAAO,CAAC,MAAM,CAAC,CAAoD;IAEnE,IAAI,aAAa,sCAGhB;IAED,IAAI,KAAK,gEAGR;IAED,IAAI,GAAG,WAEN;IAED,IAAa,OAAO,aASnB;cAEwB,UAAU,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;cAK9C,YAAY,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;cAM9B,aAAa,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;cAiBlD,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;cAWtD,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,eAAe,EAAE,CAAC;cAarD,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAWvF,OAAO,CAAC,sBAAsB;CAM/B"}
@@ -1 +1 @@
1
- {"version":3,"file":"MemoryArchivist.d.ts","sourceRoot":"","sources":["../../src/MemoryArchivist.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAElC,OAAO,EAAa,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAIL,eAAe,EAKf,iBAAiB,EACjB,wBAAwB,EACzB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE1G,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,MAAM,MAAM,2BAA2B,GAAG,qCAAqC,CAAA;AAC/E,eAAO,MAAM,2BAA2B,EAAE,2BAAmE,CAAA;AAE7G,MAAM,MAAM,qBAAqB,GAAG,eAAe,CAAC;IAClD,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,2BAA2B,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAA;CAChE,CAAC,CAAA;AAEF,KAAK,eAAe,CAAC,CAAC,SAAS,OAAO,IAAI,CAAC,GAAG;IAC5C,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AA0BD,MAAM,MAAM,qBAAqB,CAAC,OAAO,SAAS,eAAe,CAAC,qBAAqB,CAAC,GAAG,eAAe,CAAC,qBAAqB,CAAC,IAC/H,YAAY,CAAC,OAAO,CAAC,CAAA;AACvB,qBACa,eAAe,CACxB,OAAO,SAAS,qBAAqB,CAAC,eAAe,CAAC,qBAAqB,CAAC,CAAC,GAAG,qBAAqB,EACrG,UAAU,SAAS,wBAAwB,GAAG,wBAAwB,CAExE,SAAQ,iBAAiB,CAAC,OAAO,EAAE,UAAU,CAC7C,YAAW,iBAAiB,EAAE,cAAc;IAE5C,OAAgB,aAAa,WAAuD;IAEpF,OAAO,CAAC,cAAc,CAAC,CAA0B;IACjD,OAAO,CAAC,MAAM,CAAC,CAAoD;IAEnE,IAAI,aAAa,sCAGhB;IAED,IAAI,KAAK,gEAGR;IAED,IAAI,GAAG,WAEN;IAED,IAAa,OAAO,aASnB;cAEwB,UAAU,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;cAK9C,YAAY,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;cAM9B,aAAa,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;cAiBlD,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;cAWtD,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,eAAe,EAAE,CAAC;cAarD,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAWvF,OAAO,CAAC,sBAAsB;CAM/B"}
1
+ {"version":3,"file":"MemoryArchivist.d.ts","sourceRoot":"","sources":["../../src/MemoryArchivist.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAElC,OAAO,EAAa,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAE,iBAAiB,EAAwD,MAAM,iCAAiC,CAAA;AACzH,OAAO,EAIL,eAAe,EAKf,iBAAiB,EACjB,wBAAwB,EACzB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE1G,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,MAAM,MAAM,2BAA2B,GAAG,qCAAqC,CAAA;AAC/E,eAAO,MAAM,2BAA2B,EAAE,2BAAmE,CAAA;AAE7G,MAAM,MAAM,qBAAqB,GAAG,eAAe,CAAC;IAClD,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,2BAA2B,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAA;CAChE,CAAC,CAAA;AAEF,KAAK,eAAe,CAAC,CAAC,SAAS,OAAO,IAAI,CAAC,GAAG;IAC5C,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,qBAAqB,CAAC,OAAO,SAAS,eAAe,CAAC,qBAAqB,CAAC,GAAG,eAAe,CAAC,qBAAqB,CAAC,IAC/H,YAAY,CAAC,OAAO,CAAC,CAAA;AACvB,qBACa,eAAe,CACxB,OAAO,SAAS,qBAAqB,CAAC,eAAe,CAAC,qBAAqB,CAAC,CAAC,GAAG,qBAAqB,EACrG,UAAU,SAAS,wBAAwB,GAAG,wBAAwB,CAExE,SAAQ,iBAAiB,CAAC,OAAO,EAAE,UAAU,CAC7C,YAAW,iBAAiB,EAAE,cAAc;IAE5C,OAAgB,aAAa,WAAuD;IAEpF,OAAO,CAAC,cAAc,CAAC,CAA0B;IACjD,OAAO,CAAC,MAAM,CAAC,CAAoD;IAEnE,IAAI,aAAa,sCAGhB;IAED,IAAI,KAAK,gEAGR;IAED,IAAI,GAAG,WAEN;IAED,IAAa,OAAO,aASnB;cAEwB,UAAU,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;cAK9C,YAAY,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;cAM9B,aAAa,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;cAiBlD,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;cAWtD,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,eAAe,EAAE,CAAC;cAarD,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAWvF,OAAO,CAAC,sBAAsB;CAM/B"}
@@ -1 +1 @@
1
- {"version":3,"file":"MemoryArchivist.d.ts","sourceRoot":"","sources":["../../src/MemoryArchivist.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAElC,OAAO,EAAa,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAIL,eAAe,EAKf,iBAAiB,EACjB,wBAAwB,EACzB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE1G,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,MAAM,MAAM,2BAA2B,GAAG,qCAAqC,CAAA;AAC/E,eAAO,MAAM,2BAA2B,EAAE,2BAAmE,CAAA;AAE7G,MAAM,MAAM,qBAAqB,GAAG,eAAe,CAAC;IAClD,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,2BAA2B,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAA;CAChE,CAAC,CAAA;AAEF,KAAK,eAAe,CAAC,CAAC,SAAS,OAAO,IAAI,CAAC,GAAG;IAC5C,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AA0BD,MAAM,MAAM,qBAAqB,CAAC,OAAO,SAAS,eAAe,CAAC,qBAAqB,CAAC,GAAG,eAAe,CAAC,qBAAqB,CAAC,IAC/H,YAAY,CAAC,OAAO,CAAC,CAAA;AACvB,qBACa,eAAe,CACxB,OAAO,SAAS,qBAAqB,CAAC,eAAe,CAAC,qBAAqB,CAAC,CAAC,GAAG,qBAAqB,EACrG,UAAU,SAAS,wBAAwB,GAAG,wBAAwB,CAExE,SAAQ,iBAAiB,CAAC,OAAO,EAAE,UAAU,CAC7C,YAAW,iBAAiB,EAAE,cAAc;IAE5C,OAAgB,aAAa,WAAuD;IAEpF,OAAO,CAAC,cAAc,CAAC,CAA0B;IACjD,OAAO,CAAC,MAAM,CAAC,CAAoD;IAEnE,IAAI,aAAa,sCAGhB;IAED,IAAI,KAAK,gEAGR;IAED,IAAI,GAAG,WAEN;IAED,IAAa,OAAO,aASnB;cAEwB,UAAU,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;cAK9C,YAAY,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;cAM9B,aAAa,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;cAiBlD,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;cAWtD,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,eAAe,EAAE,CAAC;cAarD,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAWvF,OAAO,CAAC,sBAAsB;CAM/B"}
1
+ {"version":3,"file":"MemoryArchivist.d.ts","sourceRoot":"","sources":["../../src/MemoryArchivist.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAElC,OAAO,EAAa,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAE,iBAAiB,EAAwD,MAAM,iCAAiC,CAAA;AACzH,OAAO,EAIL,eAAe,EAKf,iBAAiB,EACjB,wBAAwB,EACzB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE1G,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,MAAM,MAAM,2BAA2B,GAAG,qCAAqC,CAAA;AAC/E,eAAO,MAAM,2BAA2B,EAAE,2BAAmE,CAAA;AAE7G,MAAM,MAAM,qBAAqB,GAAG,eAAe,CAAC;IAClD,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,2BAA2B,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAA;CAChE,CAAC,CAAA;AAEF,KAAK,eAAe,CAAC,CAAC,SAAS,OAAO,IAAI,CAAC,GAAG;IAC5C,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,qBAAqB,CAAC,OAAO,SAAS,eAAe,CAAC,qBAAqB,CAAC,GAAG,eAAe,CAAC,qBAAqB,CAAC,IAC/H,YAAY,CAAC,OAAO,CAAC,CAAA;AACvB,qBACa,eAAe,CACxB,OAAO,SAAS,qBAAqB,CAAC,eAAe,CAAC,qBAAqB,CAAC,CAAC,GAAG,qBAAqB,EACrG,UAAU,SAAS,wBAAwB,GAAG,wBAAwB,CAExE,SAAQ,iBAAiB,CAAC,OAAO,EAAE,UAAU,CAC7C,YAAW,iBAAiB,EAAE,cAAc;IAE5C,OAAgB,aAAa,WAAuD;IAEpF,OAAO,CAAC,cAAc,CAAC,CAA0B;IACjD,OAAO,CAAC,MAAM,CAAC,CAAoD;IAEnE,IAAI,aAAa,sCAGhB;IAED,IAAI,KAAK,gEAGR;IAED,IAAI,GAAG,WAEN;IAED,IAAa,OAAO,aASnB;cAEwB,UAAU,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;cAK9C,YAAY,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;cAM9B,aAAa,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;cAiBlD,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;cAWtD,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,eAAe,EAAE,CAAC;cAarD,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAWvF,OAAO,CAAC,sBAAsB;CAM/B"}
@@ -47,27 +47,6 @@ function _ts_decorate(decorators, target, key, desc) {
47
47
  }
48
48
  __name(_ts_decorate, "_ts_decorate");
49
49
  var MemoryArchivistConfigSchema = "network.xyo.archivist.memory.config";
50
- var maxSequenceIndex = 10000000000n;
51
- var sequenceNumber = /* @__PURE__ */ __name((index) => {
52
- (0, import_assert.assertEx)(index < maxSequenceIndex, () => `index may not be larger than ${maxSequenceIndex}`);
53
- return BigInt(Date.now()) * maxSequenceIndex + BigInt(index);
54
- }, "sequenceNumber");
55
- var addStorageMeta = /* @__PURE__ */ __name((payload, index = 0) => {
56
- return {
57
- ...payload,
58
- _sequence: sequenceNumber(index)
59
- };
60
- }, "addStorageMeta");
61
- var sortByStorageMeta = /* @__PURE__ */ __name((payloads) => {
62
- return payloads.sort((a, b) => a._sequence < b._sequence ? -1 : a._sequence > b._sequence ? 1 : 0);
63
- }, "sortByStorageMeta");
64
- function removeStorageMeta(payload) {
65
- if (!payload)
66
- return;
67
- const { _sequence, ...noMeta } = payload;
68
- return noMeta;
69
- }
70
- __name(removeStorageMeta, "removeStorageMeta");
71
50
  var MemoryArchivist = class extends import_archivist_abstract.AbstractArchivist {
72
51
  static {
73
52
  __name(this, "MemoryArchivist");
@@ -105,7 +84,7 @@ var MemoryArchivist = class extends import_archivist_abstract.AbstractArchivist
105
84
  }
106
85
  async allHandler() {
107
86
  const all = (0, import_lodash.compact)(await Promise.all(this.cache.dump().map((value) => value[1].value)));
108
- return sortByStorageMeta(all).map((payload) => removeStorageMeta(payload));
87
+ return (0, import_archivist_abstract.sortByStorageMeta)(all).map((payload) => (0, import_archivist_abstract.removeStorageMeta)(payload));
109
88
  }
110
89
  clearHandler() {
111
90
  this.cache.clear();
@@ -139,7 +118,7 @@ var MemoryArchivist = class extends import_archivist_abstract.AbstractArchivist
139
118
  if (resolvedHash !== hash && !result) {
140
119
  throw new Error("Missing referenced payload");
141
120
  }
142
- return removeStorageMeta(result);
121
+ return (0, import_archivist_abstract.removeStorageMeta)(result);
143
122
  }));
144
123
  }
145
124
  async insertHandler(payloads) {
@@ -150,7 +129,7 @@ var MemoryArchivist = class extends import_archivist_abstract.AbstractArchivist
150
129
  return insertedPayloads;
151
130
  }
152
131
  insertPayloadIntoCache(payload, hash, index = 0) {
153
- const withMeta = addStorageMeta(payload, index);
132
+ const withMeta = (0, import_archivist_abstract.addStorageMeta)(payload, index);
154
133
  this.cache.set(hash, withMeta);
155
134
  this.bodyHashIndex.set(withMeta.$hash, hash);
156
135
  return payload;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/MemoryArchivist.ts"],"sourcesContent":["export * from './MemoryArchivist'\n","import { assertEx } from '@xylabs/assert'\nimport { Hash } from '@xylabs/hex'\nimport { compact } from '@xylabs/lodash'\nimport { fulfilled, Promisable } from '@xylabs/promise'\nimport { AbstractArchivist } from '@xyo-network/archivist-abstract'\nimport {\n ArchivistAllQuerySchema,\n ArchivistClearQuerySchema,\n ArchivistCommitQuerySchema,\n ArchivistConfig,\n ArchivistConfigSchema,\n ArchivistDeleteQuerySchema,\n ArchivistInsertQuery,\n ArchivistInsertQuerySchema,\n ArchivistInstance,\n ArchivistModuleEventData,\n} from '@xyo-network/archivist-model'\nimport { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { AnyConfigSchema, creatableModule, ModuleInstance, ModuleParams } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, PayloadWithMeta, WithMeta } from '@xyo-network/payload-model'\nimport { LRUCache } from 'lru-cache'\n\nexport type MemoryArchivistConfigSchema = 'network.xyo.archivist.memory.config'\nexport const MemoryArchivistConfigSchema: MemoryArchivistConfigSchema = 'network.xyo.archivist.memory.config'\n\nexport type MemoryArchivistConfig = ArchivistConfig<{\n max?: number\n schema: MemoryArchivistConfigSchema | ArchivistConfig['schema']\n}>\n\ntype WithStorageMeta<T extends Payload> = T & {\n _sequence: bigint\n}\n\nconst maxSequenceIndex = 10_000_000_000n\n\nconst sequenceNumber = (index: number) => {\n assertEx(index < maxSequenceIndex, () => `index may not be larger than ${maxSequenceIndex}`)\n return BigInt(Date.now()) * maxSequenceIndex + BigInt(index)\n}\n\nconst addStorageMeta = <T extends PayloadWithMeta>(payload: T, index = 0) => {\n return { ...payload, _sequence: sequenceNumber(index) } as WithStorageMeta<T>\n}\n\nconst sortByStorageMeta = <T extends PayloadWithMeta>(payloads: WithStorageMeta<T>[]) => {\n return payloads.sort((a, b) => (a._sequence < b._sequence ? -1 : a._sequence > b._sequence ? 1 : 0))\n}\n\nfunction removeStorageMeta<T extends PayloadWithMeta>(payload: WithStorageMeta<T>): T\nfunction removeStorageMeta<T extends PayloadWithMeta>(payload?: WithStorageMeta<T>): T | undefined\nfunction removeStorageMeta<T extends PayloadWithMeta>(payload?: WithStorageMeta<T>) {\n if (!payload) return\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { _sequence, ...noMeta } = payload as WithStorageMeta<T>\n return noMeta as T\n}\n\nexport type MemoryArchivistParams<TConfig extends AnyConfigSchema<MemoryArchivistConfig> = AnyConfigSchema<MemoryArchivistConfig>> =\n ModuleParams<TConfig>\n@creatableModule()\nexport class MemoryArchivist<\n TParams extends MemoryArchivistParams<AnyConfigSchema<MemoryArchivistConfig>> = MemoryArchivistParams,\n TEventData extends ArchivistModuleEventData = ArchivistModuleEventData,\n >\n extends AbstractArchivist<TParams, TEventData>\n implements ArchivistInstance, ModuleInstance\n{\n static override configSchemas = [MemoryArchivistConfigSchema, ArchivistConfigSchema]\n\n private _bodyHashIndex?: LRUCache<string, string>\n private _cache?: LRUCache<string, WithStorageMeta<PayloadWithMeta>>\n\n get bodyHashIndex() {\n this._bodyHashIndex = this._bodyHashIndex ?? new LRUCache<string, string>({ max: this.max })\n return this._bodyHashIndex\n }\n\n get cache() {\n this._cache = this._cache ?? new LRUCache<string, WithStorageMeta<PayloadWithMeta>>({ max: this.max })\n return this._cache\n }\n\n get max() {\n return this.config?.max ?? 10_000\n }\n\n override get queries() {\n return [\n ArchivistAllQuerySchema,\n ArchivistDeleteQuerySchema,\n ArchivistClearQuerySchema,\n ArchivistInsertQuerySchema,\n ArchivistCommitQuerySchema,\n ...super.queries,\n ]\n }\n\n protected override async allHandler(): Promise<PayloadWithMeta[]> {\n const all = compact(await Promise.all(this.cache.dump().map((value) => value[1].value)))\n return sortByStorageMeta(all).map((payload) => removeStorageMeta(payload))\n }\n\n protected override clearHandler(): void | Promise<void> {\n this.cache.clear()\n this.bodyHashIndex.clear()\n return this.emit('cleared', { module: this })\n }\n\n protected override async commitHandler(): Promise<WithMeta<BoundWitness>[]> {\n const payloads = assertEx(await this.allHandler(), 'Nothing to commit')\n const settled = await Promise.allSettled(\n compact(\n Object.values((await this.parents()).commit ?? [])?.map(async (parent) => {\n const queryPayload: ArchivistInsertQuery = {\n schema: ArchivistInsertQuerySchema,\n }\n const query = await this.bindQuery(queryPayload, payloads)\n return (await parent?.query(query[0], query[1]))?.[0]\n }),\n ),\n )\n await this.clearHandler()\n return compact(settled.filter(fulfilled).map((result) => result.value))\n }\n\n protected override async deleteHandler(hashes: Hash[]): Promise<string[]> {\n const deletedHashes = compact(\n await Promise.all(\n hashes.map((hash) => {\n return this.cache.delete(hash) ? hash : undefined\n }),\n ),\n )\n return deletedHashes\n }\n\n protected override getHandler(hashes: string[]): Promisable<PayloadWithMeta[]> {\n return compact(\n hashes.map((hash) => {\n const resolvedHash = this.bodyHashIndex.get(hash) ?? hash\n const result = this.cache.get(resolvedHash)\n if (resolvedHash !== hash && !result) {\n throw new Error('Missing referenced payload')\n }\n return removeStorageMeta(result)\n }),\n )\n }\n\n protected override async insertHandler(payloads: Payload[]): Promise<PayloadWithMeta[]> {\n const pairs = await PayloadBuilder.hashPairs(payloads)\n const insertedPayloads = await Promise.all(\n pairs.map(([payload, hash]) => {\n return this.insertPayloadIntoCache(payload, hash)\n }),\n )\n\n return insertedPayloads\n }\n\n private insertPayloadIntoCache(payload: PayloadWithMeta, hash: string, index = 0): PayloadWithMeta {\n const withMeta = addStorageMeta(payload, index)\n this.cache.set(hash, withMeta)\n this.bodyHashIndex.set(withMeta.$hash, hash)\n return payload\n }\n}\n"],"mappings":"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","names":["MemoryArchivistConfigSchema","maxSequenceIndex","sequenceNumber","index","assertEx","BigInt","Date","now","addStorageMeta","payload","_sequence","sortByStorageMeta","payloads","sort","a","b","removeStorageMeta","noMeta","MemoryArchivist","AbstractArchivist","configSchemas","ArchivistConfigSchema","_bodyHashIndex","_cache","bodyHashIndex","LRUCache","max","cache","config","queries","ArchivistAllQuerySchema","ArchivistDeleteQuerySchema","ArchivistClearQuerySchema","ArchivistInsertQuerySchema","ArchivistCommitQuerySchema","allHandler","all","compact","Promise","dump","map","value","clearHandler","clear","emit","module","commitHandler","settled","allSettled","Object","values","parents","commit","parent","queryPayload","schema","query","bindQuery","filter","fulfilled","result","deleteHandler","hashes","deletedHashes","hash","delete","undefined","getHandler","resolvedHash","get","Error","insertHandler","pairs","PayloadBuilder","hashPairs","insertedPayloads","insertPayloadIntoCache","withMeta","set","$hash","creatableModule"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/MemoryArchivist.ts"],"sourcesContent":["export * from './MemoryArchivist'\n","import { assertEx } from '@xylabs/assert'\nimport { Hash } from '@xylabs/hex'\nimport { compact } from '@xylabs/lodash'\nimport { fulfilled, Promisable } from '@xylabs/promise'\nimport { AbstractArchivist, addStorageMeta, removeStorageMeta, sortByStorageMeta } from '@xyo-network/archivist-abstract'\nimport {\n ArchivistAllQuerySchema,\n ArchivistClearQuerySchema,\n ArchivistCommitQuerySchema,\n ArchivistConfig,\n ArchivistConfigSchema,\n ArchivistDeleteQuerySchema,\n ArchivistInsertQuery,\n ArchivistInsertQuerySchema,\n ArchivistInstance,\n ArchivistModuleEventData,\n} from '@xyo-network/archivist-model'\nimport { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { AnyConfigSchema, creatableModule, ModuleInstance, ModuleParams } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, PayloadWithMeta, WithMeta } from '@xyo-network/payload-model'\nimport { LRUCache } from 'lru-cache'\n\nexport type MemoryArchivistConfigSchema = 'network.xyo.archivist.memory.config'\nexport const MemoryArchivistConfigSchema: MemoryArchivistConfigSchema = 'network.xyo.archivist.memory.config'\n\nexport type MemoryArchivistConfig = ArchivistConfig<{\n max?: number\n schema: MemoryArchivistConfigSchema | ArchivistConfig['schema']\n}>\n\ntype WithStorageMeta<T extends Payload> = T & {\n _sequence: bigint\n}\n\nexport type MemoryArchivistParams<TConfig extends AnyConfigSchema<MemoryArchivistConfig> = AnyConfigSchema<MemoryArchivistConfig>> =\n ModuleParams<TConfig>\n@creatableModule()\nexport class MemoryArchivist<\n TParams extends MemoryArchivistParams<AnyConfigSchema<MemoryArchivistConfig>> = MemoryArchivistParams,\n TEventData extends ArchivistModuleEventData = ArchivistModuleEventData,\n >\n extends AbstractArchivist<TParams, TEventData>\n implements ArchivistInstance, ModuleInstance\n{\n static override configSchemas = [MemoryArchivistConfigSchema, ArchivistConfigSchema]\n\n private _bodyHashIndex?: LRUCache<string, string>\n private _cache?: LRUCache<string, WithStorageMeta<PayloadWithMeta>>\n\n get bodyHashIndex() {\n this._bodyHashIndex = this._bodyHashIndex ?? new LRUCache<string, string>({ max: this.max })\n return this._bodyHashIndex\n }\n\n get cache() {\n this._cache = this._cache ?? new LRUCache<string, WithStorageMeta<PayloadWithMeta>>({ max: this.max })\n return this._cache\n }\n\n get max() {\n return this.config?.max ?? 10_000\n }\n\n override get queries() {\n return [\n ArchivistAllQuerySchema,\n ArchivistDeleteQuerySchema,\n ArchivistClearQuerySchema,\n ArchivistInsertQuerySchema,\n ArchivistCommitQuerySchema,\n ...super.queries,\n ]\n }\n\n protected override async allHandler(): Promise<PayloadWithMeta[]> {\n const all = compact(await Promise.all(this.cache.dump().map((value) => value[1].value)))\n return sortByStorageMeta(all).map((payload) => removeStorageMeta(payload))\n }\n\n protected override clearHandler(): void | Promise<void> {\n this.cache.clear()\n this.bodyHashIndex.clear()\n return this.emit('cleared', { module: this })\n }\n\n protected override async commitHandler(): Promise<WithMeta<BoundWitness>[]> {\n const payloads = assertEx(await this.allHandler(), 'Nothing to commit')\n const settled = await Promise.allSettled(\n compact(\n Object.values((await this.parents()).commit ?? [])?.map(async (parent) => {\n const queryPayload: ArchivistInsertQuery = {\n schema: ArchivistInsertQuerySchema,\n }\n const query = await this.bindQuery(queryPayload, payloads)\n return (await parent?.query(query[0], query[1]))?.[0]\n }),\n ),\n )\n await this.clearHandler()\n return compact(settled.filter(fulfilled).map((result) => result.value))\n }\n\n protected override async deleteHandler(hashes: Hash[]): Promise<string[]> {\n const deletedHashes = compact(\n await Promise.all(\n hashes.map((hash) => {\n return this.cache.delete(hash) ? hash : undefined\n }),\n ),\n )\n return deletedHashes\n }\n\n protected override getHandler(hashes: string[]): Promisable<PayloadWithMeta[]> {\n return compact(\n hashes.map((hash) => {\n const resolvedHash = this.bodyHashIndex.get(hash) ?? hash\n const result = this.cache.get(resolvedHash)\n if (resolvedHash !== hash && !result) {\n throw new Error('Missing referenced payload')\n }\n return removeStorageMeta(result)\n }),\n )\n }\n\n protected override async insertHandler(payloads: Payload[]): Promise<PayloadWithMeta[]> {\n const pairs = await PayloadBuilder.hashPairs(payloads)\n const insertedPayloads = await Promise.all(\n pairs.map(([payload, hash]) => {\n return this.insertPayloadIntoCache(payload, hash)\n }),\n )\n\n return insertedPayloads\n }\n\n private insertPayloadIntoCache(payload: PayloadWithMeta, hash: string, index = 0): PayloadWithMeta {\n const withMeta = addStorageMeta(payload, index)\n this.cache.set(hash, withMeta)\n this.bodyHashIndex.set(withMeta.$hash, hash)\n return payload\n }\n}\n"],"mappings":"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","names":["MemoryArchivistConfigSchema","MemoryArchivist","AbstractArchivist","configSchemas","ArchivistConfigSchema","_bodyHashIndex","_cache","bodyHashIndex","LRUCache","max","cache","config","queries","ArchivistAllQuerySchema","ArchivistDeleteQuerySchema","ArchivistClearQuerySchema","ArchivistInsertQuerySchema","ArchivistCommitQuerySchema","allHandler","all","compact","Promise","dump","map","value","sortByStorageMeta","payload","removeStorageMeta","clearHandler","clear","emit","module","commitHandler","payloads","assertEx","settled","allSettled","Object","values","parents","commit","parent","queryPayload","schema","query","bindQuery","filter","fulfilled","result","deleteHandler","hashes","deletedHashes","hash","delete","undefined","getHandler","resolvedHash","get","Error","insertHandler","pairs","PayloadBuilder","hashPairs","insertedPayloads","insertPayloadIntoCache","index","withMeta","addStorageMeta","set","$hash","creatableModule"]}
@@ -5,7 +5,7 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
5
5
  import { assertEx } from "@xylabs/assert";
6
6
  import { compact } from "@xylabs/lodash";
7
7
  import { fulfilled } from "@xylabs/promise";
8
- import { AbstractArchivist } from "@xyo-network/archivist-abstract";
8
+ import { AbstractArchivist, addStorageMeta, removeStorageMeta, sortByStorageMeta } from "@xyo-network/archivist-abstract";
9
9
  import { ArchivistAllQuerySchema, ArchivistClearQuerySchema, ArchivistCommitQuerySchema, ArchivistConfigSchema, ArchivistDeleteQuerySchema, ArchivistInsertQuerySchema } from "@xyo-network/archivist-model";
10
10
  import { creatableModule } from "@xyo-network/module-model";
11
11
  import { PayloadBuilder } from "@xyo-network/payload-builder";
@@ -22,27 +22,6 @@ function _ts_decorate(decorators, target, key, desc) {
22
22
  }
23
23
  __name(_ts_decorate, "_ts_decorate");
24
24
  var MemoryArchivistConfigSchema = "network.xyo.archivist.memory.config";
25
- var maxSequenceIndex = 10000000000n;
26
- var sequenceNumber = /* @__PURE__ */ __name((index) => {
27
- assertEx(index < maxSequenceIndex, () => `index may not be larger than ${maxSequenceIndex}`);
28
- return BigInt(Date.now()) * maxSequenceIndex + BigInt(index);
29
- }, "sequenceNumber");
30
- var addStorageMeta = /* @__PURE__ */ __name((payload, index = 0) => {
31
- return {
32
- ...payload,
33
- _sequence: sequenceNumber(index)
34
- };
35
- }, "addStorageMeta");
36
- var sortByStorageMeta = /* @__PURE__ */ __name((payloads) => {
37
- return payloads.sort((a, b) => a._sequence < b._sequence ? -1 : a._sequence > b._sequence ? 1 : 0);
38
- }, "sortByStorageMeta");
39
- function removeStorageMeta(payload) {
40
- if (!payload)
41
- return;
42
- const { _sequence, ...noMeta } = payload;
43
- return noMeta;
44
- }
45
- __name(removeStorageMeta, "removeStorageMeta");
46
25
  var MemoryArchivist = class extends AbstractArchivist {
47
26
  static {
48
27
  __name(this, "MemoryArchivist");
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/MemoryArchivist.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { Hash } from '@xylabs/hex'\nimport { compact } from '@xylabs/lodash'\nimport { fulfilled, Promisable } from '@xylabs/promise'\nimport { AbstractArchivist } from '@xyo-network/archivist-abstract'\nimport {\n ArchivistAllQuerySchema,\n ArchivistClearQuerySchema,\n ArchivistCommitQuerySchema,\n ArchivistConfig,\n ArchivistConfigSchema,\n ArchivistDeleteQuerySchema,\n ArchivistInsertQuery,\n ArchivistInsertQuerySchema,\n ArchivistInstance,\n ArchivistModuleEventData,\n} from '@xyo-network/archivist-model'\nimport { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { AnyConfigSchema, creatableModule, ModuleInstance, ModuleParams } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, PayloadWithMeta, WithMeta } from '@xyo-network/payload-model'\nimport { LRUCache } from 'lru-cache'\n\nexport type MemoryArchivistConfigSchema = 'network.xyo.archivist.memory.config'\nexport const MemoryArchivistConfigSchema: MemoryArchivistConfigSchema = 'network.xyo.archivist.memory.config'\n\nexport type MemoryArchivistConfig = ArchivistConfig<{\n max?: number\n schema: MemoryArchivistConfigSchema | ArchivistConfig['schema']\n}>\n\ntype WithStorageMeta<T extends Payload> = T & {\n _sequence: bigint\n}\n\nconst maxSequenceIndex = 10_000_000_000n\n\nconst sequenceNumber = (index: number) => {\n assertEx(index < maxSequenceIndex, () => `index may not be larger than ${maxSequenceIndex}`)\n return BigInt(Date.now()) * maxSequenceIndex + BigInt(index)\n}\n\nconst addStorageMeta = <T extends PayloadWithMeta>(payload: T, index = 0) => {\n return { ...payload, _sequence: sequenceNumber(index) } as WithStorageMeta<T>\n}\n\nconst sortByStorageMeta = <T extends PayloadWithMeta>(payloads: WithStorageMeta<T>[]) => {\n return payloads.sort((a, b) => (a._sequence < b._sequence ? -1 : a._sequence > b._sequence ? 1 : 0))\n}\n\nfunction removeStorageMeta<T extends PayloadWithMeta>(payload: WithStorageMeta<T>): T\nfunction removeStorageMeta<T extends PayloadWithMeta>(payload?: WithStorageMeta<T>): T | undefined\nfunction removeStorageMeta<T extends PayloadWithMeta>(payload?: WithStorageMeta<T>) {\n if (!payload) return\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { _sequence, ...noMeta } = payload as WithStorageMeta<T>\n return noMeta as T\n}\n\nexport type MemoryArchivistParams<TConfig extends AnyConfigSchema<MemoryArchivistConfig> = AnyConfigSchema<MemoryArchivistConfig>> =\n ModuleParams<TConfig>\n@creatableModule()\nexport class MemoryArchivist<\n TParams extends MemoryArchivistParams<AnyConfigSchema<MemoryArchivistConfig>> = MemoryArchivistParams,\n TEventData extends ArchivistModuleEventData = ArchivistModuleEventData,\n >\n extends AbstractArchivist<TParams, TEventData>\n implements ArchivistInstance, ModuleInstance\n{\n static override configSchemas = [MemoryArchivistConfigSchema, ArchivistConfigSchema]\n\n private _bodyHashIndex?: LRUCache<string, string>\n private _cache?: LRUCache<string, WithStorageMeta<PayloadWithMeta>>\n\n get bodyHashIndex() {\n this._bodyHashIndex = this._bodyHashIndex ?? new LRUCache<string, string>({ max: this.max })\n return this._bodyHashIndex\n }\n\n get cache() {\n this._cache = this._cache ?? new LRUCache<string, WithStorageMeta<PayloadWithMeta>>({ max: this.max })\n return this._cache\n }\n\n get max() {\n return this.config?.max ?? 10_000\n }\n\n override get queries() {\n return [\n ArchivistAllQuerySchema,\n ArchivistDeleteQuerySchema,\n ArchivistClearQuerySchema,\n ArchivistInsertQuerySchema,\n ArchivistCommitQuerySchema,\n ...super.queries,\n ]\n }\n\n protected override async allHandler(): Promise<PayloadWithMeta[]> {\n const all = compact(await Promise.all(this.cache.dump().map((value) => value[1].value)))\n return sortByStorageMeta(all).map((payload) => removeStorageMeta(payload))\n }\n\n protected override clearHandler(): void | Promise<void> {\n this.cache.clear()\n this.bodyHashIndex.clear()\n return this.emit('cleared', { module: this })\n }\n\n protected override async commitHandler(): Promise<WithMeta<BoundWitness>[]> {\n const payloads = assertEx(await this.allHandler(), 'Nothing to commit')\n const settled = await Promise.allSettled(\n compact(\n Object.values((await this.parents()).commit ?? [])?.map(async (parent) => {\n const queryPayload: ArchivistInsertQuery = {\n schema: ArchivistInsertQuerySchema,\n }\n const query = await this.bindQuery(queryPayload, payloads)\n return (await parent?.query(query[0], query[1]))?.[0]\n }),\n ),\n )\n await this.clearHandler()\n return compact(settled.filter(fulfilled).map((result) => result.value))\n }\n\n protected override async deleteHandler(hashes: Hash[]): Promise<string[]> {\n const deletedHashes = compact(\n await Promise.all(\n hashes.map((hash) => {\n return this.cache.delete(hash) ? hash : undefined\n }),\n ),\n )\n return deletedHashes\n }\n\n protected override getHandler(hashes: string[]): Promisable<PayloadWithMeta[]> {\n return compact(\n hashes.map((hash) => {\n const resolvedHash = this.bodyHashIndex.get(hash) ?? hash\n const result = this.cache.get(resolvedHash)\n if (resolvedHash !== hash && !result) {\n throw new Error('Missing referenced payload')\n }\n return removeStorageMeta(result)\n }),\n )\n }\n\n protected override async insertHandler(payloads: Payload[]): Promise<PayloadWithMeta[]> {\n const pairs = await PayloadBuilder.hashPairs(payloads)\n const insertedPayloads = await Promise.all(\n pairs.map(([payload, hash]) => {\n return this.insertPayloadIntoCache(payload, hash)\n }),\n )\n\n return insertedPayloads\n }\n\n private insertPayloadIntoCache(payload: PayloadWithMeta, hash: string, index = 0): PayloadWithMeta {\n const withMeta = addStorageMeta(payload, index)\n this.cache.set(hash, withMeta)\n this.bodyHashIndex.set(withMeta.$hash, hash)\n return payload\n }\n}\n"],"mappings":"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","names":["assertEx","compact","fulfilled","AbstractArchivist","ArchivistAllQuerySchema","ArchivistClearQuerySchema","ArchivistCommitQuerySchema","ArchivistConfigSchema","ArchivistDeleteQuerySchema","ArchivistInsertQuerySchema","creatableModule","PayloadBuilder","LRUCache","MemoryArchivistConfigSchema","maxSequenceIndex","sequenceNumber","index","assertEx","BigInt","Date","now","addStorageMeta","payload","_sequence","sortByStorageMeta","payloads","sort","a","b","removeStorageMeta","noMeta","MemoryArchivist","AbstractArchivist","configSchemas","ArchivistConfigSchema","_bodyHashIndex","_cache","bodyHashIndex","LRUCache","max","cache","config","queries","ArchivistAllQuerySchema","ArchivistDeleteQuerySchema","ArchivistClearQuerySchema","ArchivistInsertQuerySchema","ArchivistCommitQuerySchema","allHandler","all","compact","Promise","dump","map","value","clearHandler","clear","emit","module","commitHandler","settled","allSettled","Object","values","parents","commit","parent","queryPayload","schema","query","bindQuery","filter","fulfilled","result","deleteHandler","hashes","deletedHashes","hash","delete","undefined","getHandler","resolvedHash","get","Error","insertHandler","pairs","PayloadBuilder","hashPairs","insertedPayloads","insertPayloadIntoCache","withMeta","set","$hash","creatableModule"]}
1
+ {"version":3,"sources":["../../src/MemoryArchivist.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { Hash } from '@xylabs/hex'\nimport { compact } from '@xylabs/lodash'\nimport { fulfilled, Promisable } from '@xylabs/promise'\nimport { AbstractArchivist, addStorageMeta, removeStorageMeta, sortByStorageMeta } from '@xyo-network/archivist-abstract'\nimport {\n ArchivistAllQuerySchema,\n ArchivistClearQuerySchema,\n ArchivistCommitQuerySchema,\n ArchivistConfig,\n ArchivistConfigSchema,\n ArchivistDeleteQuerySchema,\n ArchivistInsertQuery,\n ArchivistInsertQuerySchema,\n ArchivistInstance,\n ArchivistModuleEventData,\n} from '@xyo-network/archivist-model'\nimport { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { AnyConfigSchema, creatableModule, ModuleInstance, ModuleParams } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, PayloadWithMeta, WithMeta } from '@xyo-network/payload-model'\nimport { LRUCache } from 'lru-cache'\n\nexport type MemoryArchivistConfigSchema = 'network.xyo.archivist.memory.config'\nexport const MemoryArchivistConfigSchema: MemoryArchivistConfigSchema = 'network.xyo.archivist.memory.config'\n\nexport type MemoryArchivistConfig = ArchivistConfig<{\n max?: number\n schema: MemoryArchivistConfigSchema | ArchivistConfig['schema']\n}>\n\ntype WithStorageMeta<T extends Payload> = T & {\n _sequence: bigint\n}\n\nexport type MemoryArchivistParams<TConfig extends AnyConfigSchema<MemoryArchivistConfig> = AnyConfigSchema<MemoryArchivistConfig>> =\n ModuleParams<TConfig>\n@creatableModule()\nexport class MemoryArchivist<\n TParams extends MemoryArchivistParams<AnyConfigSchema<MemoryArchivistConfig>> = MemoryArchivistParams,\n TEventData extends ArchivistModuleEventData = ArchivistModuleEventData,\n >\n extends AbstractArchivist<TParams, TEventData>\n implements ArchivistInstance, ModuleInstance\n{\n static override configSchemas = [MemoryArchivistConfigSchema, ArchivistConfigSchema]\n\n private _bodyHashIndex?: LRUCache<string, string>\n private _cache?: LRUCache<string, WithStorageMeta<PayloadWithMeta>>\n\n get bodyHashIndex() {\n this._bodyHashIndex = this._bodyHashIndex ?? new LRUCache<string, string>({ max: this.max })\n return this._bodyHashIndex\n }\n\n get cache() {\n this._cache = this._cache ?? new LRUCache<string, WithStorageMeta<PayloadWithMeta>>({ max: this.max })\n return this._cache\n }\n\n get max() {\n return this.config?.max ?? 10_000\n }\n\n override get queries() {\n return [\n ArchivistAllQuerySchema,\n ArchivistDeleteQuerySchema,\n ArchivistClearQuerySchema,\n ArchivistInsertQuerySchema,\n ArchivistCommitQuerySchema,\n ...super.queries,\n ]\n }\n\n protected override async allHandler(): Promise<PayloadWithMeta[]> {\n const all = compact(await Promise.all(this.cache.dump().map((value) => value[1].value)))\n return sortByStorageMeta(all).map((payload) => removeStorageMeta(payload))\n }\n\n protected override clearHandler(): void | Promise<void> {\n this.cache.clear()\n this.bodyHashIndex.clear()\n return this.emit('cleared', { module: this })\n }\n\n protected override async commitHandler(): Promise<WithMeta<BoundWitness>[]> {\n const payloads = assertEx(await this.allHandler(), 'Nothing to commit')\n const settled = await Promise.allSettled(\n compact(\n Object.values((await this.parents()).commit ?? [])?.map(async (parent) => {\n const queryPayload: ArchivistInsertQuery = {\n schema: ArchivistInsertQuerySchema,\n }\n const query = await this.bindQuery(queryPayload, payloads)\n return (await parent?.query(query[0], query[1]))?.[0]\n }),\n ),\n )\n await this.clearHandler()\n return compact(settled.filter(fulfilled).map((result) => result.value))\n }\n\n protected override async deleteHandler(hashes: Hash[]): Promise<string[]> {\n const deletedHashes = compact(\n await Promise.all(\n hashes.map((hash) => {\n return this.cache.delete(hash) ? hash : undefined\n }),\n ),\n )\n return deletedHashes\n }\n\n protected override getHandler(hashes: string[]): Promisable<PayloadWithMeta[]> {\n return compact(\n hashes.map((hash) => {\n const resolvedHash = this.bodyHashIndex.get(hash) ?? hash\n const result = this.cache.get(resolvedHash)\n if (resolvedHash !== hash && !result) {\n throw new Error('Missing referenced payload')\n }\n return removeStorageMeta(result)\n }),\n )\n }\n\n protected override async insertHandler(payloads: Payload[]): Promise<PayloadWithMeta[]> {\n const pairs = await PayloadBuilder.hashPairs(payloads)\n const insertedPayloads = await Promise.all(\n pairs.map(([payload, hash]) => {\n return this.insertPayloadIntoCache(payload, hash)\n }),\n )\n\n return insertedPayloads\n }\n\n private insertPayloadIntoCache(payload: PayloadWithMeta, hash: string, index = 0): PayloadWithMeta {\n const withMeta = addStorageMeta(payload, index)\n this.cache.set(hash, withMeta)\n this.bodyHashIndex.set(withMeta.$hash, hash)\n return payload\n }\n}\n"],"mappings":"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","names":["assertEx","compact","fulfilled","AbstractArchivist","addStorageMeta","removeStorageMeta","sortByStorageMeta","ArchivistAllQuerySchema","ArchivistClearQuerySchema","ArchivistCommitQuerySchema","ArchivistConfigSchema","ArchivistDeleteQuerySchema","ArchivistInsertQuerySchema","creatableModule","PayloadBuilder","LRUCache","MemoryArchivistConfigSchema","MemoryArchivist","AbstractArchivist","configSchemas","ArchivistConfigSchema","_bodyHashIndex","_cache","bodyHashIndex","LRUCache","max","cache","config","queries","ArchivistAllQuerySchema","ArchivistDeleteQuerySchema","ArchivistClearQuerySchema","ArchivistInsertQuerySchema","ArchivistCommitQuerySchema","allHandler","all","compact","Promise","dump","map","value","sortByStorageMeta","payload","removeStorageMeta","clearHandler","clear","emit","module","commitHandler","payloads","assertEx","settled","allSettled","Object","values","parents","commit","parent","queryPayload","schema","query","bindQuery","filter","fulfilled","result","deleteHandler","hashes","deletedHashes","hash","delete","undefined","getHandler","resolvedHash","get","Error","insertHandler","pairs","PayloadBuilder","hashPairs","insertedPayloads","insertPayloadIntoCache","index","withMeta","addStorageMeta","set","$hash","creatableModule"]}
@@ -1 +1 @@
1
- {"version":3,"file":"MemoryArchivist.d.ts","sourceRoot":"","sources":["../../src/MemoryArchivist.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAElC,OAAO,EAAa,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAIL,eAAe,EAKf,iBAAiB,EACjB,wBAAwB,EACzB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE1G,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,MAAM,MAAM,2BAA2B,GAAG,qCAAqC,CAAA;AAC/E,eAAO,MAAM,2BAA2B,EAAE,2BAAmE,CAAA;AAE7G,MAAM,MAAM,qBAAqB,GAAG,eAAe,CAAC;IAClD,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,2BAA2B,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAA;CAChE,CAAC,CAAA;AAEF,KAAK,eAAe,CAAC,CAAC,SAAS,OAAO,IAAI,CAAC,GAAG;IAC5C,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AA0BD,MAAM,MAAM,qBAAqB,CAAC,OAAO,SAAS,eAAe,CAAC,qBAAqB,CAAC,GAAG,eAAe,CAAC,qBAAqB,CAAC,IAC/H,YAAY,CAAC,OAAO,CAAC,CAAA;AACvB,qBACa,eAAe,CACxB,OAAO,SAAS,qBAAqB,CAAC,eAAe,CAAC,qBAAqB,CAAC,CAAC,GAAG,qBAAqB,EACrG,UAAU,SAAS,wBAAwB,GAAG,wBAAwB,CAExE,SAAQ,iBAAiB,CAAC,OAAO,EAAE,UAAU,CAC7C,YAAW,iBAAiB,EAAE,cAAc;IAE5C,OAAgB,aAAa,WAAuD;IAEpF,OAAO,CAAC,cAAc,CAAC,CAA0B;IACjD,OAAO,CAAC,MAAM,CAAC,CAAoD;IAEnE,IAAI,aAAa,sCAGhB;IAED,IAAI,KAAK,gEAGR;IAED,IAAI,GAAG,WAEN;IAED,IAAa,OAAO,aASnB;cAEwB,UAAU,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;cAK9C,YAAY,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;cAM9B,aAAa,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;cAiBlD,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;cAWtD,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,eAAe,EAAE,CAAC;cAarD,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAWvF,OAAO,CAAC,sBAAsB;CAM/B"}
1
+ {"version":3,"file":"MemoryArchivist.d.ts","sourceRoot":"","sources":["../../src/MemoryArchivist.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAElC,OAAO,EAAa,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAE,iBAAiB,EAAwD,MAAM,iCAAiC,CAAA;AACzH,OAAO,EAIL,eAAe,EAKf,iBAAiB,EACjB,wBAAwB,EACzB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE1G,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,MAAM,MAAM,2BAA2B,GAAG,qCAAqC,CAAA;AAC/E,eAAO,MAAM,2BAA2B,EAAE,2BAAmE,CAAA;AAE7G,MAAM,MAAM,qBAAqB,GAAG,eAAe,CAAC;IAClD,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,2BAA2B,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAA;CAChE,CAAC,CAAA;AAEF,KAAK,eAAe,CAAC,CAAC,SAAS,OAAO,IAAI,CAAC,GAAG;IAC5C,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,qBAAqB,CAAC,OAAO,SAAS,eAAe,CAAC,qBAAqB,CAAC,GAAG,eAAe,CAAC,qBAAqB,CAAC,IAC/H,YAAY,CAAC,OAAO,CAAC,CAAA;AACvB,qBACa,eAAe,CACxB,OAAO,SAAS,qBAAqB,CAAC,eAAe,CAAC,qBAAqB,CAAC,CAAC,GAAG,qBAAqB,EACrG,UAAU,SAAS,wBAAwB,GAAG,wBAAwB,CAExE,SAAQ,iBAAiB,CAAC,OAAO,EAAE,UAAU,CAC7C,YAAW,iBAAiB,EAAE,cAAc;IAE5C,OAAgB,aAAa,WAAuD;IAEpF,OAAO,CAAC,cAAc,CAAC,CAA0B;IACjD,OAAO,CAAC,MAAM,CAAC,CAAoD;IAEnE,IAAI,aAAa,sCAGhB;IAED,IAAI,KAAK,gEAGR;IAED,IAAI,GAAG,WAEN;IAED,IAAa,OAAO,aASnB;cAEwB,UAAU,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;cAK9C,YAAY,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;cAM9B,aAAa,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;cAiBlD,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;cAWtD,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,eAAe,EAAE,CAAC;cAarD,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAWvF,OAAO,CAAC,sBAAsB;CAM/B"}
@@ -1 +1 @@
1
- {"version":3,"file":"MemoryArchivist.d.ts","sourceRoot":"","sources":["../../src/MemoryArchivist.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAElC,OAAO,EAAa,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAIL,eAAe,EAKf,iBAAiB,EACjB,wBAAwB,EACzB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE1G,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,MAAM,MAAM,2BAA2B,GAAG,qCAAqC,CAAA;AAC/E,eAAO,MAAM,2BAA2B,EAAE,2BAAmE,CAAA;AAE7G,MAAM,MAAM,qBAAqB,GAAG,eAAe,CAAC;IAClD,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,2BAA2B,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAA;CAChE,CAAC,CAAA;AAEF,KAAK,eAAe,CAAC,CAAC,SAAS,OAAO,IAAI,CAAC,GAAG;IAC5C,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AA0BD,MAAM,MAAM,qBAAqB,CAAC,OAAO,SAAS,eAAe,CAAC,qBAAqB,CAAC,GAAG,eAAe,CAAC,qBAAqB,CAAC,IAC/H,YAAY,CAAC,OAAO,CAAC,CAAA;AACvB,qBACa,eAAe,CACxB,OAAO,SAAS,qBAAqB,CAAC,eAAe,CAAC,qBAAqB,CAAC,CAAC,GAAG,qBAAqB,EACrG,UAAU,SAAS,wBAAwB,GAAG,wBAAwB,CAExE,SAAQ,iBAAiB,CAAC,OAAO,EAAE,UAAU,CAC7C,YAAW,iBAAiB,EAAE,cAAc;IAE5C,OAAgB,aAAa,WAAuD;IAEpF,OAAO,CAAC,cAAc,CAAC,CAA0B;IACjD,OAAO,CAAC,MAAM,CAAC,CAAoD;IAEnE,IAAI,aAAa,sCAGhB;IAED,IAAI,KAAK,gEAGR;IAED,IAAI,GAAG,WAEN;IAED,IAAa,OAAO,aASnB;cAEwB,UAAU,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;cAK9C,YAAY,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;cAM9B,aAAa,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;cAiBlD,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;cAWtD,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,eAAe,EAAE,CAAC;cAarD,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAWvF,OAAO,CAAC,sBAAsB;CAM/B"}
1
+ {"version":3,"file":"MemoryArchivist.d.ts","sourceRoot":"","sources":["../../src/MemoryArchivist.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAElC,OAAO,EAAa,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAE,iBAAiB,EAAwD,MAAM,iCAAiC,CAAA;AACzH,OAAO,EAIL,eAAe,EAKf,iBAAiB,EACjB,wBAAwB,EACzB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE1G,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,MAAM,MAAM,2BAA2B,GAAG,qCAAqC,CAAA;AAC/E,eAAO,MAAM,2BAA2B,EAAE,2BAAmE,CAAA;AAE7G,MAAM,MAAM,qBAAqB,GAAG,eAAe,CAAC;IAClD,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,2BAA2B,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAA;CAChE,CAAC,CAAA;AAEF,KAAK,eAAe,CAAC,CAAC,SAAS,OAAO,IAAI,CAAC,GAAG;IAC5C,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,qBAAqB,CAAC,OAAO,SAAS,eAAe,CAAC,qBAAqB,CAAC,GAAG,eAAe,CAAC,qBAAqB,CAAC,IAC/H,YAAY,CAAC,OAAO,CAAC,CAAA;AACvB,qBACa,eAAe,CACxB,OAAO,SAAS,qBAAqB,CAAC,eAAe,CAAC,qBAAqB,CAAC,CAAC,GAAG,qBAAqB,EACrG,UAAU,SAAS,wBAAwB,GAAG,wBAAwB,CAExE,SAAQ,iBAAiB,CAAC,OAAO,EAAE,UAAU,CAC7C,YAAW,iBAAiB,EAAE,cAAc;IAE5C,OAAgB,aAAa,WAAuD;IAEpF,OAAO,CAAC,cAAc,CAAC,CAA0B;IACjD,OAAO,CAAC,MAAM,CAAC,CAAoD;IAEnE,IAAI,aAAa,sCAGhB;IAED,IAAI,KAAK,gEAGR;IAED,IAAI,GAAG,WAEN;IAED,IAAa,OAAO,aASnB;cAEwB,UAAU,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;cAK9C,YAAY,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;cAM9B,aAAa,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;cAiBlD,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;cAWtD,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,eAAe,EAAE,CAAC;cAarD,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAWvF,OAAO,CAAC,sBAAsB;CAM/B"}
@@ -1 +1 @@
1
- {"version":3,"file":"MemoryArchivist.d.ts","sourceRoot":"","sources":["../../src/MemoryArchivist.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAElC,OAAO,EAAa,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAIL,eAAe,EAKf,iBAAiB,EACjB,wBAAwB,EACzB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE1G,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,MAAM,MAAM,2BAA2B,GAAG,qCAAqC,CAAA;AAC/E,eAAO,MAAM,2BAA2B,EAAE,2BAAmE,CAAA;AAE7G,MAAM,MAAM,qBAAqB,GAAG,eAAe,CAAC;IAClD,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,2BAA2B,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAA;CAChE,CAAC,CAAA;AAEF,KAAK,eAAe,CAAC,CAAC,SAAS,OAAO,IAAI,CAAC,GAAG;IAC5C,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AA0BD,MAAM,MAAM,qBAAqB,CAAC,OAAO,SAAS,eAAe,CAAC,qBAAqB,CAAC,GAAG,eAAe,CAAC,qBAAqB,CAAC,IAC/H,YAAY,CAAC,OAAO,CAAC,CAAA;AACvB,qBACa,eAAe,CACxB,OAAO,SAAS,qBAAqB,CAAC,eAAe,CAAC,qBAAqB,CAAC,CAAC,GAAG,qBAAqB,EACrG,UAAU,SAAS,wBAAwB,GAAG,wBAAwB,CAExE,SAAQ,iBAAiB,CAAC,OAAO,EAAE,UAAU,CAC7C,YAAW,iBAAiB,EAAE,cAAc;IAE5C,OAAgB,aAAa,WAAuD;IAEpF,OAAO,CAAC,cAAc,CAAC,CAA0B;IACjD,OAAO,CAAC,MAAM,CAAC,CAAoD;IAEnE,IAAI,aAAa,sCAGhB;IAED,IAAI,KAAK,gEAGR;IAED,IAAI,GAAG,WAEN;IAED,IAAa,OAAO,aASnB;cAEwB,UAAU,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;cAK9C,YAAY,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;cAM9B,aAAa,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;cAiBlD,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;cAWtD,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,eAAe,EAAE,CAAC;cAarD,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAWvF,OAAO,CAAC,sBAAsB;CAM/B"}
1
+ {"version":3,"file":"MemoryArchivist.d.ts","sourceRoot":"","sources":["../../src/MemoryArchivist.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAElC,OAAO,EAAa,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAE,iBAAiB,EAAwD,MAAM,iCAAiC,CAAA;AACzH,OAAO,EAIL,eAAe,EAKf,iBAAiB,EACjB,wBAAwB,EACzB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE1G,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,MAAM,MAAM,2BAA2B,GAAG,qCAAqC,CAAA;AAC/E,eAAO,MAAM,2BAA2B,EAAE,2BAAmE,CAAA;AAE7G,MAAM,MAAM,qBAAqB,GAAG,eAAe,CAAC;IAClD,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,2BAA2B,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAA;CAChE,CAAC,CAAA;AAEF,KAAK,eAAe,CAAC,CAAC,SAAS,OAAO,IAAI,CAAC,GAAG;IAC5C,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,qBAAqB,CAAC,OAAO,SAAS,eAAe,CAAC,qBAAqB,CAAC,GAAG,eAAe,CAAC,qBAAqB,CAAC,IAC/H,YAAY,CAAC,OAAO,CAAC,CAAA;AACvB,qBACa,eAAe,CACxB,OAAO,SAAS,qBAAqB,CAAC,eAAe,CAAC,qBAAqB,CAAC,CAAC,GAAG,qBAAqB,EACrG,UAAU,SAAS,wBAAwB,GAAG,wBAAwB,CAExE,SAAQ,iBAAiB,CAAC,OAAO,EAAE,UAAU,CAC7C,YAAW,iBAAiB,EAAE,cAAc;IAE5C,OAAgB,aAAa,WAAuD;IAEpF,OAAO,CAAC,cAAc,CAAC,CAA0B;IACjD,OAAO,CAAC,MAAM,CAAC,CAAoD;IAEnE,IAAI,aAAa,sCAGhB;IAED,IAAI,KAAK,gEAGR;IAED,IAAI,GAAG,WAEN;IAED,IAAa,OAAO,aASnB;cAEwB,UAAU,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;cAK9C,YAAY,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;cAM9B,aAAa,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;cAiBlD,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;cAWtD,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,eAAe,EAAE,CAAC;cAarD,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAWvF,OAAO,CAAC,sBAAsB;CAM/B"}
@@ -52,27 +52,6 @@ function _ts_decorate(decorators, target, key, desc) {
52
52
  }
53
53
  __name(_ts_decorate, "_ts_decorate");
54
54
  var MemoryArchivistConfigSchema = "network.xyo.archivist.memory.config";
55
- var maxSequenceIndex = 10000000000n;
56
- var sequenceNumber = /* @__PURE__ */ __name((index) => {
57
- (0, import_assert.assertEx)(index < maxSequenceIndex, () => `index may not be larger than ${maxSequenceIndex}`);
58
- return BigInt(Date.now()) * maxSequenceIndex + BigInt(index);
59
- }, "sequenceNumber");
60
- var addStorageMeta = /* @__PURE__ */ __name((payload, index = 0) => {
61
- return {
62
- ...payload,
63
- _sequence: sequenceNumber(index)
64
- };
65
- }, "addStorageMeta");
66
- var sortByStorageMeta = /* @__PURE__ */ __name((payloads) => {
67
- return payloads.sort((a, b) => a._sequence < b._sequence ? -1 : a._sequence > b._sequence ? 1 : 0);
68
- }, "sortByStorageMeta");
69
- function removeStorageMeta(payload) {
70
- if (!payload)
71
- return;
72
- const { _sequence, ...noMeta } = payload;
73
- return noMeta;
74
- }
75
- __name(removeStorageMeta, "removeStorageMeta");
76
55
  var _MemoryArchivist = class _MemoryArchivist extends import_archivist_abstract.AbstractArchivist {
77
56
  _bodyHashIndex;
78
57
  _cache;
@@ -104,7 +83,7 @@ var _MemoryArchivist = class _MemoryArchivist extends import_archivist_abstract.
104
83
  }
105
84
  async allHandler() {
106
85
  const all = (0, import_lodash.compact)(await Promise.all(this.cache.dump().map((value) => value[1].value)));
107
- return sortByStorageMeta(all).map((payload) => removeStorageMeta(payload));
86
+ return (0, import_archivist_abstract.sortByStorageMeta)(all).map((payload) => (0, import_archivist_abstract.removeStorageMeta)(payload));
108
87
  }
109
88
  clearHandler() {
110
89
  this.cache.clear();
@@ -140,7 +119,7 @@ var _MemoryArchivist = class _MemoryArchivist extends import_archivist_abstract.
140
119
  if (resolvedHash !== hash && !result) {
141
120
  throw new Error("Missing referenced payload");
142
121
  }
143
- return removeStorageMeta(result);
122
+ return (0, import_archivist_abstract.removeStorageMeta)(result);
144
123
  }));
145
124
  }
146
125
  async insertHandler(payloads) {
@@ -151,7 +130,7 @@ var _MemoryArchivist = class _MemoryArchivist extends import_archivist_abstract.
151
130
  return insertedPayloads;
152
131
  }
153
132
  insertPayloadIntoCache(payload, hash, index = 0) {
154
- const withMeta = addStorageMeta(payload, index);
133
+ const withMeta = (0, import_archivist_abstract.addStorageMeta)(payload, index);
155
134
  this.cache.set(hash, withMeta);
156
135
  this.bodyHashIndex.set(withMeta.$hash, hash);
157
136
  return payload;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/MemoryArchivist.ts"],"sourcesContent":["export * from './MemoryArchivist'\n","import { assertEx } from '@xylabs/assert'\nimport { Hash } from '@xylabs/hex'\nimport { compact } from '@xylabs/lodash'\nimport { fulfilled, Promisable } from '@xylabs/promise'\nimport { AbstractArchivist } from '@xyo-network/archivist-abstract'\nimport {\n ArchivistAllQuerySchema,\n ArchivistClearQuerySchema,\n ArchivistCommitQuerySchema,\n ArchivistConfig,\n ArchivistConfigSchema,\n ArchivistDeleteQuerySchema,\n ArchivistInsertQuery,\n ArchivistInsertQuerySchema,\n ArchivistInstance,\n ArchivistModuleEventData,\n} from '@xyo-network/archivist-model'\nimport { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { AnyConfigSchema, creatableModule, ModuleInstance, ModuleParams } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, PayloadWithMeta, WithMeta } from '@xyo-network/payload-model'\nimport { LRUCache } from 'lru-cache'\n\nexport type MemoryArchivistConfigSchema = 'network.xyo.archivist.memory.config'\nexport const MemoryArchivistConfigSchema: MemoryArchivistConfigSchema = 'network.xyo.archivist.memory.config'\n\nexport type MemoryArchivistConfig = ArchivistConfig<{\n max?: number\n schema: MemoryArchivistConfigSchema | ArchivistConfig['schema']\n}>\n\ntype WithStorageMeta<T extends Payload> = T & {\n _sequence: bigint\n}\n\nconst maxSequenceIndex = 10_000_000_000n\n\nconst sequenceNumber = (index: number) => {\n assertEx(index < maxSequenceIndex, () => `index may not be larger than ${maxSequenceIndex}`)\n return BigInt(Date.now()) * maxSequenceIndex + BigInt(index)\n}\n\nconst addStorageMeta = <T extends PayloadWithMeta>(payload: T, index = 0) => {\n return { ...payload, _sequence: sequenceNumber(index) } as WithStorageMeta<T>\n}\n\nconst sortByStorageMeta = <T extends PayloadWithMeta>(payloads: WithStorageMeta<T>[]) => {\n return payloads.sort((a, b) => (a._sequence < b._sequence ? -1 : a._sequence > b._sequence ? 1 : 0))\n}\n\nfunction removeStorageMeta<T extends PayloadWithMeta>(payload: WithStorageMeta<T>): T\nfunction removeStorageMeta<T extends PayloadWithMeta>(payload?: WithStorageMeta<T>): T | undefined\nfunction removeStorageMeta<T extends PayloadWithMeta>(payload?: WithStorageMeta<T>) {\n if (!payload) return\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { _sequence, ...noMeta } = payload as WithStorageMeta<T>\n return noMeta as T\n}\n\nexport type MemoryArchivistParams<TConfig extends AnyConfigSchema<MemoryArchivistConfig> = AnyConfigSchema<MemoryArchivistConfig>> =\n ModuleParams<TConfig>\n@creatableModule()\nexport class MemoryArchivist<\n TParams extends MemoryArchivistParams<AnyConfigSchema<MemoryArchivistConfig>> = MemoryArchivistParams,\n TEventData extends ArchivistModuleEventData = ArchivistModuleEventData,\n >\n extends AbstractArchivist<TParams, TEventData>\n implements ArchivistInstance, ModuleInstance\n{\n static override configSchemas = [MemoryArchivistConfigSchema, ArchivistConfigSchema]\n\n private _bodyHashIndex?: LRUCache<string, string>\n private _cache?: LRUCache<string, WithStorageMeta<PayloadWithMeta>>\n\n get bodyHashIndex() {\n this._bodyHashIndex = this._bodyHashIndex ?? new LRUCache<string, string>({ max: this.max })\n return this._bodyHashIndex\n }\n\n get cache() {\n this._cache = this._cache ?? new LRUCache<string, WithStorageMeta<PayloadWithMeta>>({ max: this.max })\n return this._cache\n }\n\n get max() {\n return this.config?.max ?? 10_000\n }\n\n override get queries() {\n return [\n ArchivistAllQuerySchema,\n ArchivistDeleteQuerySchema,\n ArchivistClearQuerySchema,\n ArchivistInsertQuerySchema,\n ArchivistCommitQuerySchema,\n ...super.queries,\n ]\n }\n\n protected override async allHandler(): Promise<PayloadWithMeta[]> {\n const all = compact(await Promise.all(this.cache.dump().map((value) => value[1].value)))\n return sortByStorageMeta(all).map((payload) => removeStorageMeta(payload))\n }\n\n protected override clearHandler(): void | Promise<void> {\n this.cache.clear()\n this.bodyHashIndex.clear()\n return this.emit('cleared', { module: this })\n }\n\n protected override async commitHandler(): Promise<WithMeta<BoundWitness>[]> {\n const payloads = assertEx(await this.allHandler(), 'Nothing to commit')\n const settled = await Promise.allSettled(\n compact(\n Object.values((await this.parents()).commit ?? [])?.map(async (parent) => {\n const queryPayload: ArchivistInsertQuery = {\n schema: ArchivistInsertQuerySchema,\n }\n const query = await this.bindQuery(queryPayload, payloads)\n return (await parent?.query(query[0], query[1]))?.[0]\n }),\n ),\n )\n await this.clearHandler()\n return compact(settled.filter(fulfilled).map((result) => result.value))\n }\n\n protected override async deleteHandler(hashes: Hash[]): Promise<string[]> {\n const deletedHashes = compact(\n await Promise.all(\n hashes.map((hash) => {\n return this.cache.delete(hash) ? hash : undefined\n }),\n ),\n )\n return deletedHashes\n }\n\n protected override getHandler(hashes: string[]): Promisable<PayloadWithMeta[]> {\n return compact(\n hashes.map((hash) => {\n const resolvedHash = this.bodyHashIndex.get(hash) ?? hash\n const result = this.cache.get(resolvedHash)\n if (resolvedHash !== hash && !result) {\n throw new Error('Missing referenced payload')\n }\n return removeStorageMeta(result)\n }),\n )\n }\n\n protected override async insertHandler(payloads: Payload[]): Promise<PayloadWithMeta[]> {\n const pairs = await PayloadBuilder.hashPairs(payloads)\n const insertedPayloads = await Promise.all(\n pairs.map(([payload, hash]) => {\n return this.insertPayloadIntoCache(payload, hash)\n }),\n )\n\n return insertedPayloads\n }\n\n private insertPayloadIntoCache(payload: PayloadWithMeta, hash: string, index = 0): PayloadWithMeta {\n const withMeta = addStorageMeta(payload, index)\n this.cache.set(hash, withMeta)\n this.bodyHashIndex.set(withMeta.$hash, hash)\n return payload\n }\n}\n"],"mappings":"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","names":["MemoryArchivistConfigSchema","maxSequenceIndex","sequenceNumber","index","assertEx","BigInt","Date","now","addStorageMeta","payload","_sequence","sortByStorageMeta","payloads","sort","a","b","removeStorageMeta","noMeta","MemoryArchivist","AbstractArchivist","_bodyHashIndex","_cache","bodyHashIndex","LRUCache","max","cache","config","queries","ArchivistAllQuerySchema","ArchivistDeleteQuerySchema","ArchivistClearQuerySchema","ArchivistInsertQuerySchema","ArchivistCommitQuerySchema","allHandler","all","compact","Promise","dump","map","value","clearHandler","clear","emit","module","commitHandler","settled","allSettled","Object","values","parents","commit","parent","queryPayload","schema","query","bindQuery","_a","filter","fulfilled","result","deleteHandler","hashes","deletedHashes","hash","delete","undefined","getHandler","resolvedHash","get","Error","insertHandler","pairs","PayloadBuilder","hashPairs","insertedPayloads","insertPayloadIntoCache","withMeta","set","$hash","configSchemas","ArchivistConfigSchema","creatableModule"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/MemoryArchivist.ts"],"sourcesContent":["export * from './MemoryArchivist'\n","import { assertEx } from '@xylabs/assert'\nimport { Hash } from '@xylabs/hex'\nimport { compact } from '@xylabs/lodash'\nimport { fulfilled, Promisable } from '@xylabs/promise'\nimport { AbstractArchivist, addStorageMeta, removeStorageMeta, sortByStorageMeta } from '@xyo-network/archivist-abstract'\nimport {\n ArchivistAllQuerySchema,\n ArchivistClearQuerySchema,\n ArchivistCommitQuerySchema,\n ArchivistConfig,\n ArchivistConfigSchema,\n ArchivistDeleteQuerySchema,\n ArchivistInsertQuery,\n ArchivistInsertQuerySchema,\n ArchivistInstance,\n ArchivistModuleEventData,\n} from '@xyo-network/archivist-model'\nimport { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { AnyConfigSchema, creatableModule, ModuleInstance, ModuleParams } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, PayloadWithMeta, WithMeta } from '@xyo-network/payload-model'\nimport { LRUCache } from 'lru-cache'\n\nexport type MemoryArchivistConfigSchema = 'network.xyo.archivist.memory.config'\nexport const MemoryArchivistConfigSchema: MemoryArchivistConfigSchema = 'network.xyo.archivist.memory.config'\n\nexport type MemoryArchivistConfig = ArchivistConfig<{\n max?: number\n schema: MemoryArchivistConfigSchema | ArchivistConfig['schema']\n}>\n\ntype WithStorageMeta<T extends Payload> = T & {\n _sequence: bigint\n}\n\nexport type MemoryArchivistParams<TConfig extends AnyConfigSchema<MemoryArchivistConfig> = AnyConfigSchema<MemoryArchivistConfig>> =\n ModuleParams<TConfig>\n@creatableModule()\nexport class MemoryArchivist<\n TParams extends MemoryArchivistParams<AnyConfigSchema<MemoryArchivistConfig>> = MemoryArchivistParams,\n TEventData extends ArchivistModuleEventData = ArchivistModuleEventData,\n >\n extends AbstractArchivist<TParams, TEventData>\n implements ArchivistInstance, ModuleInstance\n{\n static override configSchemas = [MemoryArchivistConfigSchema, ArchivistConfigSchema]\n\n private _bodyHashIndex?: LRUCache<string, string>\n private _cache?: LRUCache<string, WithStorageMeta<PayloadWithMeta>>\n\n get bodyHashIndex() {\n this._bodyHashIndex = this._bodyHashIndex ?? new LRUCache<string, string>({ max: this.max })\n return this._bodyHashIndex\n }\n\n get cache() {\n this._cache = this._cache ?? new LRUCache<string, WithStorageMeta<PayloadWithMeta>>({ max: this.max })\n return this._cache\n }\n\n get max() {\n return this.config?.max ?? 10_000\n }\n\n override get queries() {\n return [\n ArchivistAllQuerySchema,\n ArchivistDeleteQuerySchema,\n ArchivistClearQuerySchema,\n ArchivistInsertQuerySchema,\n ArchivistCommitQuerySchema,\n ...super.queries,\n ]\n }\n\n protected override async allHandler(): Promise<PayloadWithMeta[]> {\n const all = compact(await Promise.all(this.cache.dump().map((value) => value[1].value)))\n return sortByStorageMeta(all).map((payload) => removeStorageMeta(payload))\n }\n\n protected override clearHandler(): void | Promise<void> {\n this.cache.clear()\n this.bodyHashIndex.clear()\n return this.emit('cleared', { module: this })\n }\n\n protected override async commitHandler(): Promise<WithMeta<BoundWitness>[]> {\n const payloads = assertEx(await this.allHandler(), 'Nothing to commit')\n const settled = await Promise.allSettled(\n compact(\n Object.values((await this.parents()).commit ?? [])?.map(async (parent) => {\n const queryPayload: ArchivistInsertQuery = {\n schema: ArchivistInsertQuerySchema,\n }\n const query = await this.bindQuery(queryPayload, payloads)\n return (await parent?.query(query[0], query[1]))?.[0]\n }),\n ),\n )\n await this.clearHandler()\n return compact(settled.filter(fulfilled).map((result) => result.value))\n }\n\n protected override async deleteHandler(hashes: Hash[]): Promise<string[]> {\n const deletedHashes = compact(\n await Promise.all(\n hashes.map((hash) => {\n return this.cache.delete(hash) ? hash : undefined\n }),\n ),\n )\n return deletedHashes\n }\n\n protected override getHandler(hashes: string[]): Promisable<PayloadWithMeta[]> {\n return compact(\n hashes.map((hash) => {\n const resolvedHash = this.bodyHashIndex.get(hash) ?? hash\n const result = this.cache.get(resolvedHash)\n if (resolvedHash !== hash && !result) {\n throw new Error('Missing referenced payload')\n }\n return removeStorageMeta(result)\n }),\n )\n }\n\n protected override async insertHandler(payloads: Payload[]): Promise<PayloadWithMeta[]> {\n const pairs = await PayloadBuilder.hashPairs(payloads)\n const insertedPayloads = await Promise.all(\n pairs.map(([payload, hash]) => {\n return this.insertPayloadIntoCache(payload, hash)\n }),\n )\n\n return insertedPayloads\n }\n\n private insertPayloadIntoCache(payload: PayloadWithMeta, hash: string, index = 0): PayloadWithMeta {\n const withMeta = addStorageMeta(payload, index)\n this.cache.set(hash, withMeta)\n this.bodyHashIndex.set(withMeta.$hash, hash)\n return payload\n }\n}\n"],"mappings":"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","names":["MemoryArchivistConfigSchema","MemoryArchivist","AbstractArchivist","_bodyHashIndex","_cache","bodyHashIndex","LRUCache","max","cache","config","queries","ArchivistAllQuerySchema","ArchivistDeleteQuerySchema","ArchivistClearQuerySchema","ArchivistInsertQuerySchema","ArchivistCommitQuerySchema","allHandler","all","compact","Promise","dump","map","value","sortByStorageMeta","payload","removeStorageMeta","clearHandler","clear","emit","module","commitHandler","payloads","assertEx","settled","allSettled","Object","values","parents","commit","parent","queryPayload","schema","query","bindQuery","_a","filter","fulfilled","result","deleteHandler","hashes","deletedHashes","hash","delete","undefined","getHandler","resolvedHash","get","Error","insertHandler","pairs","PayloadBuilder","hashPairs","insertedPayloads","insertPayloadIntoCache","index","withMeta","addStorageMeta","set","$hash","configSchemas","ArchivistConfigSchema","creatableModule"]}
@@ -10,7 +10,7 @@ var __publicField = (obj, key, value) => {
10
10
  import { assertEx } from "@xylabs/assert";
11
11
  import { compact } from "@xylabs/lodash";
12
12
  import { fulfilled } from "@xylabs/promise";
13
- import { AbstractArchivist } from "@xyo-network/archivist-abstract";
13
+ import { AbstractArchivist, addStorageMeta, removeStorageMeta, sortByStorageMeta } from "@xyo-network/archivist-abstract";
14
14
  import { ArchivistAllQuerySchema, ArchivistClearQuerySchema, ArchivistCommitQuerySchema, ArchivistConfigSchema, ArchivistDeleteQuerySchema, ArchivistInsertQuerySchema } from "@xyo-network/archivist-model";
15
15
  import { creatableModule } from "@xyo-network/module-model";
16
16
  import { PayloadBuilder } from "@xyo-network/payload-builder";
@@ -27,27 +27,6 @@ function _ts_decorate(decorators, target, key, desc) {
27
27
  }
28
28
  __name(_ts_decorate, "_ts_decorate");
29
29
  var MemoryArchivistConfigSchema = "network.xyo.archivist.memory.config";
30
- var maxSequenceIndex = 10000000000n;
31
- var sequenceNumber = /* @__PURE__ */ __name((index) => {
32
- assertEx(index < maxSequenceIndex, () => `index may not be larger than ${maxSequenceIndex}`);
33
- return BigInt(Date.now()) * maxSequenceIndex + BigInt(index);
34
- }, "sequenceNumber");
35
- var addStorageMeta = /* @__PURE__ */ __name((payload, index = 0) => {
36
- return {
37
- ...payload,
38
- _sequence: sequenceNumber(index)
39
- };
40
- }, "addStorageMeta");
41
- var sortByStorageMeta = /* @__PURE__ */ __name((payloads) => {
42
- return payloads.sort((a, b) => a._sequence < b._sequence ? -1 : a._sequence > b._sequence ? 1 : 0);
43
- }, "sortByStorageMeta");
44
- function removeStorageMeta(payload) {
45
- if (!payload)
46
- return;
47
- const { _sequence, ...noMeta } = payload;
48
- return noMeta;
49
- }
50
- __name(removeStorageMeta, "removeStorageMeta");
51
30
  var _MemoryArchivist = class _MemoryArchivist extends AbstractArchivist {
52
31
  _bodyHashIndex;
53
32
  _cache;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/MemoryArchivist.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { Hash } from '@xylabs/hex'\nimport { compact } from '@xylabs/lodash'\nimport { fulfilled, Promisable } from '@xylabs/promise'\nimport { AbstractArchivist } from '@xyo-network/archivist-abstract'\nimport {\n ArchivistAllQuerySchema,\n ArchivistClearQuerySchema,\n ArchivistCommitQuerySchema,\n ArchivistConfig,\n ArchivistConfigSchema,\n ArchivistDeleteQuerySchema,\n ArchivistInsertQuery,\n ArchivistInsertQuerySchema,\n ArchivistInstance,\n ArchivistModuleEventData,\n} from '@xyo-network/archivist-model'\nimport { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { AnyConfigSchema, creatableModule, ModuleInstance, ModuleParams } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, PayloadWithMeta, WithMeta } from '@xyo-network/payload-model'\nimport { LRUCache } from 'lru-cache'\n\nexport type MemoryArchivistConfigSchema = 'network.xyo.archivist.memory.config'\nexport const MemoryArchivistConfigSchema: MemoryArchivistConfigSchema = 'network.xyo.archivist.memory.config'\n\nexport type MemoryArchivistConfig = ArchivistConfig<{\n max?: number\n schema: MemoryArchivistConfigSchema | ArchivistConfig['schema']\n}>\n\ntype WithStorageMeta<T extends Payload> = T & {\n _sequence: bigint\n}\n\nconst maxSequenceIndex = 10_000_000_000n\n\nconst sequenceNumber = (index: number) => {\n assertEx(index < maxSequenceIndex, () => `index may not be larger than ${maxSequenceIndex}`)\n return BigInt(Date.now()) * maxSequenceIndex + BigInt(index)\n}\n\nconst addStorageMeta = <T extends PayloadWithMeta>(payload: T, index = 0) => {\n return { ...payload, _sequence: sequenceNumber(index) } as WithStorageMeta<T>\n}\n\nconst sortByStorageMeta = <T extends PayloadWithMeta>(payloads: WithStorageMeta<T>[]) => {\n return payloads.sort((a, b) => (a._sequence < b._sequence ? -1 : a._sequence > b._sequence ? 1 : 0))\n}\n\nfunction removeStorageMeta<T extends PayloadWithMeta>(payload: WithStorageMeta<T>): T\nfunction removeStorageMeta<T extends PayloadWithMeta>(payload?: WithStorageMeta<T>): T | undefined\nfunction removeStorageMeta<T extends PayloadWithMeta>(payload?: WithStorageMeta<T>) {\n if (!payload) return\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { _sequence, ...noMeta } = payload as WithStorageMeta<T>\n return noMeta as T\n}\n\nexport type MemoryArchivistParams<TConfig extends AnyConfigSchema<MemoryArchivistConfig> = AnyConfigSchema<MemoryArchivistConfig>> =\n ModuleParams<TConfig>\n@creatableModule()\nexport class MemoryArchivist<\n TParams extends MemoryArchivistParams<AnyConfigSchema<MemoryArchivistConfig>> = MemoryArchivistParams,\n TEventData extends ArchivistModuleEventData = ArchivistModuleEventData,\n >\n extends AbstractArchivist<TParams, TEventData>\n implements ArchivistInstance, ModuleInstance\n{\n static override configSchemas = [MemoryArchivistConfigSchema, ArchivistConfigSchema]\n\n private _bodyHashIndex?: LRUCache<string, string>\n private _cache?: LRUCache<string, WithStorageMeta<PayloadWithMeta>>\n\n get bodyHashIndex() {\n this._bodyHashIndex = this._bodyHashIndex ?? new LRUCache<string, string>({ max: this.max })\n return this._bodyHashIndex\n }\n\n get cache() {\n this._cache = this._cache ?? new LRUCache<string, WithStorageMeta<PayloadWithMeta>>({ max: this.max })\n return this._cache\n }\n\n get max() {\n return this.config?.max ?? 10_000\n }\n\n override get queries() {\n return [\n ArchivistAllQuerySchema,\n ArchivistDeleteQuerySchema,\n ArchivistClearQuerySchema,\n ArchivistInsertQuerySchema,\n ArchivistCommitQuerySchema,\n ...super.queries,\n ]\n }\n\n protected override async allHandler(): Promise<PayloadWithMeta[]> {\n const all = compact(await Promise.all(this.cache.dump().map((value) => value[1].value)))\n return sortByStorageMeta(all).map((payload) => removeStorageMeta(payload))\n }\n\n protected override clearHandler(): void | Promise<void> {\n this.cache.clear()\n this.bodyHashIndex.clear()\n return this.emit('cleared', { module: this })\n }\n\n protected override async commitHandler(): Promise<WithMeta<BoundWitness>[]> {\n const payloads = assertEx(await this.allHandler(), 'Nothing to commit')\n const settled = await Promise.allSettled(\n compact(\n Object.values((await this.parents()).commit ?? [])?.map(async (parent) => {\n const queryPayload: ArchivistInsertQuery = {\n schema: ArchivistInsertQuerySchema,\n }\n const query = await this.bindQuery(queryPayload, payloads)\n return (await parent?.query(query[0], query[1]))?.[0]\n }),\n ),\n )\n await this.clearHandler()\n return compact(settled.filter(fulfilled).map((result) => result.value))\n }\n\n protected override async deleteHandler(hashes: Hash[]): Promise<string[]> {\n const deletedHashes = compact(\n await Promise.all(\n hashes.map((hash) => {\n return this.cache.delete(hash) ? hash : undefined\n }),\n ),\n )\n return deletedHashes\n }\n\n protected override getHandler(hashes: string[]): Promisable<PayloadWithMeta[]> {\n return compact(\n hashes.map((hash) => {\n const resolvedHash = this.bodyHashIndex.get(hash) ?? hash\n const result = this.cache.get(resolvedHash)\n if (resolvedHash !== hash && !result) {\n throw new Error('Missing referenced payload')\n }\n return removeStorageMeta(result)\n }),\n )\n }\n\n protected override async insertHandler(payloads: Payload[]): Promise<PayloadWithMeta[]> {\n const pairs = await PayloadBuilder.hashPairs(payloads)\n const insertedPayloads = await Promise.all(\n pairs.map(([payload, hash]) => {\n return this.insertPayloadIntoCache(payload, hash)\n }),\n )\n\n return insertedPayloads\n }\n\n private insertPayloadIntoCache(payload: PayloadWithMeta, hash: string, index = 0): PayloadWithMeta {\n const withMeta = addStorageMeta(payload, index)\n this.cache.set(hash, withMeta)\n this.bodyHashIndex.set(withMeta.$hash, hash)\n return payload\n }\n}\n"],"mappings":"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","names":["assertEx","compact","fulfilled","AbstractArchivist","ArchivistAllQuerySchema","ArchivistClearQuerySchema","ArchivistCommitQuerySchema","ArchivistConfigSchema","ArchivistDeleteQuerySchema","ArchivistInsertQuerySchema","creatableModule","PayloadBuilder","LRUCache","MemoryArchivistConfigSchema","maxSequenceIndex","sequenceNumber","index","assertEx","BigInt","Date","now","addStorageMeta","payload","_sequence","sortByStorageMeta","payloads","sort","a","b","removeStorageMeta","noMeta","MemoryArchivist","AbstractArchivist","_bodyHashIndex","_cache","bodyHashIndex","LRUCache","max","cache","config","queries","ArchivistAllQuerySchema","ArchivistDeleteQuerySchema","ArchivistClearQuerySchema","ArchivistInsertQuerySchema","ArchivistCommitQuerySchema","allHandler","all","compact","Promise","dump","map","value","clearHandler","clear","emit","module","commitHandler","settled","allSettled","Object","values","parents","commit","parent","queryPayload","schema","query","bindQuery","_a","filter","fulfilled","result","deleteHandler","hashes","deletedHashes","hash","delete","undefined","getHandler","resolvedHash","get","Error","insertHandler","pairs","PayloadBuilder","hashPairs","insertedPayloads","insertPayloadIntoCache","withMeta","set","$hash","configSchemas","ArchivistConfigSchema","creatableModule"]}
1
+ {"version":3,"sources":["../../src/MemoryArchivist.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { Hash } from '@xylabs/hex'\nimport { compact } from '@xylabs/lodash'\nimport { fulfilled, Promisable } from '@xylabs/promise'\nimport { AbstractArchivist, addStorageMeta, removeStorageMeta, sortByStorageMeta } from '@xyo-network/archivist-abstract'\nimport {\n ArchivistAllQuerySchema,\n ArchivistClearQuerySchema,\n ArchivistCommitQuerySchema,\n ArchivistConfig,\n ArchivistConfigSchema,\n ArchivistDeleteQuerySchema,\n ArchivistInsertQuery,\n ArchivistInsertQuerySchema,\n ArchivistInstance,\n ArchivistModuleEventData,\n} from '@xyo-network/archivist-model'\nimport { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { AnyConfigSchema, creatableModule, ModuleInstance, ModuleParams } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, PayloadWithMeta, WithMeta } from '@xyo-network/payload-model'\nimport { LRUCache } from 'lru-cache'\n\nexport type MemoryArchivistConfigSchema = 'network.xyo.archivist.memory.config'\nexport const MemoryArchivistConfigSchema: MemoryArchivistConfigSchema = 'network.xyo.archivist.memory.config'\n\nexport type MemoryArchivistConfig = ArchivistConfig<{\n max?: number\n schema: MemoryArchivistConfigSchema | ArchivistConfig['schema']\n}>\n\ntype WithStorageMeta<T extends Payload> = T & {\n _sequence: bigint\n}\n\nexport type MemoryArchivistParams<TConfig extends AnyConfigSchema<MemoryArchivistConfig> = AnyConfigSchema<MemoryArchivistConfig>> =\n ModuleParams<TConfig>\n@creatableModule()\nexport class MemoryArchivist<\n TParams extends MemoryArchivistParams<AnyConfigSchema<MemoryArchivistConfig>> = MemoryArchivistParams,\n TEventData extends ArchivistModuleEventData = ArchivistModuleEventData,\n >\n extends AbstractArchivist<TParams, TEventData>\n implements ArchivistInstance, ModuleInstance\n{\n static override configSchemas = [MemoryArchivistConfigSchema, ArchivistConfigSchema]\n\n private _bodyHashIndex?: LRUCache<string, string>\n private _cache?: LRUCache<string, WithStorageMeta<PayloadWithMeta>>\n\n get bodyHashIndex() {\n this._bodyHashIndex = this._bodyHashIndex ?? new LRUCache<string, string>({ max: this.max })\n return this._bodyHashIndex\n }\n\n get cache() {\n this._cache = this._cache ?? new LRUCache<string, WithStorageMeta<PayloadWithMeta>>({ max: this.max })\n return this._cache\n }\n\n get max() {\n return this.config?.max ?? 10_000\n }\n\n override get queries() {\n return [\n ArchivistAllQuerySchema,\n ArchivistDeleteQuerySchema,\n ArchivistClearQuerySchema,\n ArchivistInsertQuerySchema,\n ArchivistCommitQuerySchema,\n ...super.queries,\n ]\n }\n\n protected override async allHandler(): Promise<PayloadWithMeta[]> {\n const all = compact(await Promise.all(this.cache.dump().map((value) => value[1].value)))\n return sortByStorageMeta(all).map((payload) => removeStorageMeta(payload))\n }\n\n protected override clearHandler(): void | Promise<void> {\n this.cache.clear()\n this.bodyHashIndex.clear()\n return this.emit('cleared', { module: this })\n }\n\n protected override async commitHandler(): Promise<WithMeta<BoundWitness>[]> {\n const payloads = assertEx(await this.allHandler(), 'Nothing to commit')\n const settled = await Promise.allSettled(\n compact(\n Object.values((await this.parents()).commit ?? [])?.map(async (parent) => {\n const queryPayload: ArchivistInsertQuery = {\n schema: ArchivistInsertQuerySchema,\n }\n const query = await this.bindQuery(queryPayload, payloads)\n return (await parent?.query(query[0], query[1]))?.[0]\n }),\n ),\n )\n await this.clearHandler()\n return compact(settled.filter(fulfilled).map((result) => result.value))\n }\n\n protected override async deleteHandler(hashes: Hash[]): Promise<string[]> {\n const deletedHashes = compact(\n await Promise.all(\n hashes.map((hash) => {\n return this.cache.delete(hash) ? hash : undefined\n }),\n ),\n )\n return deletedHashes\n }\n\n protected override getHandler(hashes: string[]): Promisable<PayloadWithMeta[]> {\n return compact(\n hashes.map((hash) => {\n const resolvedHash = this.bodyHashIndex.get(hash) ?? hash\n const result = this.cache.get(resolvedHash)\n if (resolvedHash !== hash && !result) {\n throw new Error('Missing referenced payload')\n }\n return removeStorageMeta(result)\n }),\n )\n }\n\n protected override async insertHandler(payloads: Payload[]): Promise<PayloadWithMeta[]> {\n const pairs = await PayloadBuilder.hashPairs(payloads)\n const insertedPayloads = await Promise.all(\n pairs.map(([payload, hash]) => {\n return this.insertPayloadIntoCache(payload, hash)\n }),\n )\n\n return insertedPayloads\n }\n\n private insertPayloadIntoCache(payload: PayloadWithMeta, hash: string, index = 0): PayloadWithMeta {\n const withMeta = addStorageMeta(payload, index)\n this.cache.set(hash, withMeta)\n this.bodyHashIndex.set(withMeta.$hash, hash)\n return payload\n }\n}\n"],"mappings":";;;;;;;;;AAAA,SAASA,gBAAgB;AAEzB,SAASC,eAAe;AACxB,SAASC,iBAA6B;AACtC,SAASC,mBAAmBC,gBAAgBC,mBAAmBC,yBAAyB;AACxF,SACEC,yBACAC,2BACAC,4BAEAC,uBACAC,4BAEAC,kCAGK;AAEP,SAA0BC,uBAAqD;AAC/E,SAASC,sBAAsB;AAE/B,SAASC,gBAAgB;;;;;;;;;;;;AAGlB,IAAMC,8BAA2D;AAcjE,IAAMC,mBAAN,MAAMA,yBAIHC,kBAAAA;EAKAC;EACAC;EAER,IAAIC,gBAAgB;AAClB,SAAKF,iBAAiB,KAAKA,kBAAkB,IAAIG,SAAyB;MAAEC,KAAK,KAAKA;IAAI,CAAA;AAC1F,WAAO,KAAKJ;EACd;EAEA,IAAIK,QAAQ;AACV,SAAKJ,SAAS,KAAKA,UAAU,IAAIE,SAAmD;MAAEC,KAAK,KAAKA;IAAI,CAAA;AACpG,WAAO,KAAKH;EACd;EAEA,IAAIG,MAAM;;AACR,aAAO,UAAKE,WAAL,mBAAaF,QAAO;EAC7B;EAEA,IAAaG,UAAU;AACrB,WAAO;MACLC;MACAC;MACAC;MACAC;MACAC;SACG,MAAML;;EAEb;EAEA,MAAyBM,aAAyC;AAChE,UAAMC,MAAMC,QAAQ,MAAMC,QAAQF,IAAI,KAAKT,MAAMY,KAAI,EAAGC,IAAI,CAACC,UAAUA,MAAM,CAAA,EAAGA,KAAK,CAAA,CAAA;AACrF,WAAOC,kBAAkBN,GAAAA,EAAKI,IAAI,CAACG,YAAYC,kBAAkBD,OAAAA,CAAAA;EACnE;EAEmBE,eAAqC;AACtD,SAAKlB,MAAMmB,MAAK;AAChB,SAAKtB,cAAcsB,MAAK;AACxB,WAAO,KAAKC,KAAK,WAAW;MAAEC,QAAQ;IAAK,CAAA;EAC7C;EAEA,MAAyBC,gBAAmD;;AAC1E,UAAMC,WAAWC,SAAS,MAAM,KAAKhB,WAAU,GAAI,mBAAA;AACnD,UAAMiB,UAAU,MAAMd,QAAQe,WAC5BhB,SACEiB,YAAOC,QAAQ,MAAM,KAAKC,QAAO,GAAIC,UAAU,CAAA,CAAE,MAAjDH,mBAAoDd,IAAI,OAAOkB,WAAAA;;AAC7D,YAAMC,eAAqC;QACzCC,QAAQ3B;MACV;AACA,YAAM4B,QAAQ,MAAM,KAAKC,UAAUH,cAAcT,QAAAA;AACjD,cAAQa,MAAA,OAAML,iCAAQG,MAAMA,MAAM,CAAA,GAAIA,MAAM,CAAA,QAApC,gBAAAE,IAA2C;IACrD,EAAA,CAAA;AAGJ,UAAM,KAAKlB,aAAY;AACvB,WAAOR,QAAQe,QAAQY,OAAOC,SAAAA,EAAWzB,IAAI,CAAC0B,WAAWA,OAAOzB,KAAK,CAAA;EACvE;EAEA,MAAyB0B,cAAcC,QAAmC;AACxE,UAAMC,gBAAgBhC,QACpB,MAAMC,QAAQF,IACZgC,OAAO5B,IAAI,CAAC8B,SAAAA;AACV,aAAO,KAAK3C,MAAM4C,OAAOD,IAAAA,IAAQA,OAAOE;IAC1C,CAAA,CAAA,CAAA;AAGJ,WAAOH;EACT;EAEmBI,WAAWL,QAAiD;AAC7E,WAAO/B,QACL+B,OAAO5B,IAAI,CAAC8B,SAAAA;AACV,YAAMI,eAAe,KAAKlD,cAAcmD,IAAIL,IAAAA,KAASA;AACrD,YAAMJ,SAAS,KAAKvC,MAAMgD,IAAID,YAAAA;AAC9B,UAAIA,iBAAiBJ,QAAQ,CAACJ,QAAQ;AACpC,cAAM,IAAIU,MAAM,4BAAA;MAClB;AACA,aAAOhC,kBAAkBsB,MAAAA;IAC3B,CAAA,CAAA;EAEJ;EAEA,MAAyBW,cAAc3B,UAAiD;AACtF,UAAM4B,QAAQ,MAAMC,eAAeC,UAAU9B,QAAAA;AAC7C,UAAM+B,mBAAmB,MAAM3C,QAAQF,IACrC0C,MAAMtC,IAAI,CAAC,CAACG,SAAS2B,IAAAA,MAAK;AACxB,aAAO,KAAKY,uBAAuBvC,SAAS2B,IAAAA;IAC9C,CAAA,CAAA;AAGF,WAAOW;EACT;EAEQC,uBAAuBvC,SAA0B2B,MAAca,QAAQ,GAAoB;AACjG,UAAMC,WAAWC,eAAe1C,SAASwC,KAAAA;AACzC,SAAKxD,MAAM2D,IAAIhB,MAAMc,QAAAA;AACrB,SAAK5D,cAAc8D,IAAIF,SAASG,OAAOjB,IAAAA;AACvC,WAAO3B;EACT;AACF;AAtGUtB;AAGR,cAPWD,kBAOKoE,iBAAgB;EAACrE;EAA6BsE;;AAPzD,IAAMrE,kBAAN;AAAMA,kBAAAA,aAAAA;EADZsE,gBAAAA;GACYtE,eAAAA;","names":["assertEx","compact","fulfilled","AbstractArchivist","addStorageMeta","removeStorageMeta","sortByStorageMeta","ArchivistAllQuerySchema","ArchivistClearQuerySchema","ArchivistCommitQuerySchema","ArchivistConfigSchema","ArchivistDeleteQuerySchema","ArchivistInsertQuerySchema","creatableModule","PayloadBuilder","LRUCache","MemoryArchivistConfigSchema","MemoryArchivist","AbstractArchivist","_bodyHashIndex","_cache","bodyHashIndex","LRUCache","max","cache","config","queries","ArchivistAllQuerySchema","ArchivistDeleteQuerySchema","ArchivistClearQuerySchema","ArchivistInsertQuerySchema","ArchivistCommitQuerySchema","allHandler","all","compact","Promise","dump","map","value","sortByStorageMeta","payload","removeStorageMeta","clearHandler","clear","emit","module","commitHandler","payloads","assertEx","settled","allSettled","Object","values","parents","commit","parent","queryPayload","schema","query","bindQuery","_a","filter","fulfilled","result","deleteHandler","hashes","deletedHashes","hash","delete","undefined","getHandler","resolvedHash","get","Error","insertHandler","pairs","PayloadBuilder","hashPairs","insertedPayloads","insertPayloadIntoCache","index","withMeta","addStorageMeta","set","$hash","configSchemas","ArchivistConfigSchema","creatableModule"]}
package/package.json CHANGED
@@ -14,18 +14,18 @@
14
14
  "@xylabs/hex": "^2.14.2",
15
15
  "@xylabs/lodash": "^2.14.2",
16
16
  "@xylabs/promise": "^2.14.2",
17
- "@xyo-network/archivist-abstract": "~2.90.18",
18
- "@xyo-network/archivist-model": "~2.90.18",
19
- "@xyo-network/boundwitness-model": "~2.90.18",
20
- "@xyo-network/module-model": "~2.90.18",
21
- "@xyo-network/payload-builder": "~2.90.18",
22
- "@xyo-network/payload-model": "~2.90.18",
17
+ "@xyo-network/archivist-abstract": "~2.90.20",
18
+ "@xyo-network/archivist-model": "~2.90.20",
19
+ "@xyo-network/boundwitness-model": "~2.90.20",
20
+ "@xyo-network/module-model": "~2.90.20",
21
+ "@xyo-network/payload-builder": "~2.90.20",
22
+ "@xyo-network/payload-model": "~2.90.20",
23
23
  "lru-cache": "^10.2.0"
24
24
  },
25
25
  "devDependencies": {
26
26
  "@xylabs/ts-scripts-yarn3": "^3.2.42",
27
27
  "@xylabs/tsconfig": "^3.2.42",
28
- "@xyo-network/account": "~2.90.18",
28
+ "@xyo-network/account": "~2.90.20",
29
29
  "typescript": "^5.3.3"
30
30
  },
31
31
  "description": "Primary SDK for using XYO Protocol 2.0",
@@ -67,6 +67,6 @@
67
67
  "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js.git"
68
68
  },
69
69
  "sideEffects": false,
70
- "version": "2.90.18",
70
+ "version": "2.90.20",
71
71
  "type": "module"
72
72
  }
@@ -2,7 +2,7 @@ import { assertEx } from '@xylabs/assert'
2
2
  import { Hash } from '@xylabs/hex'
3
3
  import { compact } from '@xylabs/lodash'
4
4
  import { fulfilled, Promisable } from '@xylabs/promise'
5
- import { AbstractArchivist } from '@xyo-network/archivist-abstract'
5
+ import { AbstractArchivist, addStorageMeta, removeStorageMeta, sortByStorageMeta } from '@xyo-network/archivist-abstract'
6
6
  import {
7
7
  ArchivistAllQuerySchema,
8
8
  ArchivistClearQuerySchema,
@@ -33,30 +33,6 @@ type WithStorageMeta<T extends Payload> = T & {
33
33
  _sequence: bigint
34
34
  }
35
35
 
36
- const maxSequenceIndex = 10_000_000_000n
37
-
38
- const sequenceNumber = (index: number) => {
39
- assertEx(index < maxSequenceIndex, () => `index may not be larger than ${maxSequenceIndex}`)
40
- return BigInt(Date.now()) * maxSequenceIndex + BigInt(index)
41
- }
42
-
43
- const addStorageMeta = <T extends PayloadWithMeta>(payload: T, index = 0) => {
44
- return { ...payload, _sequence: sequenceNumber(index) } as WithStorageMeta<T>
45
- }
46
-
47
- const sortByStorageMeta = <T extends PayloadWithMeta>(payloads: WithStorageMeta<T>[]) => {
48
- return payloads.sort((a, b) => (a._sequence < b._sequence ? -1 : a._sequence > b._sequence ? 1 : 0))
49
- }
50
-
51
- function removeStorageMeta<T extends PayloadWithMeta>(payload: WithStorageMeta<T>): T
52
- function removeStorageMeta<T extends PayloadWithMeta>(payload?: WithStorageMeta<T>): T | undefined
53
- function removeStorageMeta<T extends PayloadWithMeta>(payload?: WithStorageMeta<T>) {
54
- if (!payload) return
55
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
56
- const { _sequence, ...noMeta } = payload as WithStorageMeta<T>
57
- return noMeta as T
58
- }
59
-
60
36
  export type MemoryArchivistParams<TConfig extends AnyConfigSchema<MemoryArchivistConfig> = AnyConfigSchema<MemoryArchivistConfig>> =
61
37
  ModuleParams<TConfig>
62
38
  @creatableModule()