@subsquid/batch-processor 0.2.0-portal-api.19316d → 0.2.0-portal-api.d5861e

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.
package/lib/run.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,QAAQ,EAMX,MAAM,YAAY,CAAA;AACnB,OAAO,EACH,UAAU,EAEV,QAAQ,EAIX,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EAAC,KAAK,eAAe,EAAmB,MAAM,qBAAqB,CAAA;AAG1E,OAAO,EAAC,gBAAgB,EAAgB,MAAM,yCAAyC,CAAA;AAGvF,OAAO,EAAC,gBAAgB,EAAC,CAAA;AACzB,YAAY,EAAC,eAAe,EAAC,MAAM,qBAAqB,CAAA;AAIxD,MAAM,WAAW,kBAAkB,CAAC,KAAK,EAAE,KAAK;IAC5C;;OAEG;IACH,KAAK,EAAE,KAAK,CAAA;IACZ;;OAEG;IACH,MAAM,EAAE,KAAK,EAAE,CAAA;IACf;;OAEG;IACH,MAAM,EAAE,OAAO,CAAA;IACf;;OAEG;IACH,SAAS,EAAE,eAAe,CAAA;CAC7B;AAGD,MAAM,WAAW,SAAS;IACtB,MAAM,EAAE,QAAQ,CAAA;CACnB;AAGD,MAAM,WAAW,UAAU;IACvB,UAAU,CAAC,EAAE,gBAAgB,CAAA;CAChC;AAGD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,GAAG,CAAC,KAAK,SAAS,SAAS,EAAE,KAAK,EAC9C,GAAG,EAAE,UAAU,CAAC,KAAK,CAAC,EACtB,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG;IAAC,iBAAiB,EAAE,IAAI,CAAA;CAAC,EAC/C,WAAW,EAAE,CAAC,GAAG,EAAE,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,EACrE,IAAI,CAAC,EAAE,UAAU,GAClB,IAAI,CAAA;AACP,wBAAgB,GAAG,CAAC,KAAK,SAAS,SAAS,EAAE,KAAK,EAC9C,GAAG,EAAE,UAAU,CAAC,KAAK,CAAC,EACtB,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,EACnB,WAAW,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,WAAW,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,EACxF,IAAI,CAAC,EAAE,UAAU,GAClB,IAAI,CAAA;AAgWP,qBAAa,uBAAwB,SAAQ,KAAK;IAC9C,QAAQ,CAAC,yBAAyB,QAAO;IACzC,QAAQ,CAAC,IAAI,6BAA4B;CAC5C;AAED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,uBAAuB,CAEtF"}
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,QAAQ,EAMX,MAAM,YAAY,CAAA;AACnB,OAAO,EACH,UAAU,EAEV,QAAQ,EAIX,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EAAC,KAAK,eAAe,EAAmB,MAAM,qBAAqB,CAAA;AAG1E,OAAO,EAAC,gBAAgB,EAAgB,MAAM,yCAAyC,CAAA;AAGvF,OAAO,EAAC,gBAAgB,EAAC,CAAA;AACzB,YAAY,EAAC,eAAe,EAAC,MAAM,qBAAqB,CAAA;AAIxD,MAAM,WAAW,kBAAkB,CAAC,KAAK,EAAE,KAAK;IAC5C;;OAEG;IACH,KAAK,EAAE,KAAK,CAAA;IACZ;;OAEG;IACH,MAAM,EAAE,KAAK,EAAE,CAAA;IACf;;OAEG;IACH,MAAM,EAAE,OAAO,CAAA;IACf;;OAEG;IACH,SAAS,EAAE,eAAe,CAAA;CAC7B;AAGD,MAAM,WAAW,SAAS;IACtB,MAAM,EAAE,QAAQ,CAAA;CACnB;AAGD,MAAM,WAAW,UAAU;IACvB,UAAU,CAAC,EAAE,gBAAgB,CAAA;CAChC;AAGD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,GAAG,CAAC,KAAK,SAAS,SAAS,EAAE,KAAK,EAC9C,GAAG,EAAE,UAAU,CAAC,KAAK,CAAC,EACtB,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG;IAAC,iBAAiB,EAAE,IAAI,CAAA;CAAC,EAC/C,WAAW,EAAE,CAAC,GAAG,EAAE,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,EACrE,IAAI,CAAC,EAAE,UAAU,GAClB,IAAI,CAAA;AACP,wBAAgB,GAAG,CAAC,KAAK,SAAS,SAAS,EAAE,KAAK,EAC9C,GAAG,EAAE,UAAU,CAAC,KAAK,CAAC,EACtB,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,EACnB,WAAW,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,WAAW,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,EACxF,IAAI,CAAC,EAAE,UAAU,GAClB,IAAI,CAAA;AAsWP,qBAAa,uBAAwB,SAAQ,KAAK;IAC9C,QAAQ,CAAC,yBAAyB,QAAO;IACzC,QAAQ,CAAC,IAAI,6BAA4B;CAC5C;AAED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,uBAAuB,CAEtF"}
package/lib/run.js CHANGED
@@ -64,6 +64,9 @@ class ProcessorState {
64
64
  prune(blockNumber) {
65
65
  this.templates.prune(blockNumber);
66
66
  }
67
+ commitTemplates() {
68
+ this.templates.commit();
69
+ }
67
70
  async transact(range, fn) {
68
71
  return this.templates.transact(range, fn);
69
72
  }
@@ -183,6 +186,7 @@ class Processor {
183
186
  return;
184
187
  return map(store, sliceBlocks, isOnTop);
185
188
  });
189
+ this.state.commitTemplates();
186
190
  let newFinalizedHead = finalizedHead ?? this.state.finalizedHead;
187
191
  if (newFinalizedHead) {
188
192
  this.state.prune(newFinalizedHead.number);
@@ -208,6 +212,7 @@ class Processor {
208
212
  nextHead: toHashAndHeight(nextHead),
209
213
  isOnTop,
210
214
  }, (store) => map(store, blocks, isOnTop));
215
+ this.state.commitTemplates();
211
216
  this.state.prune(nextHead.number);
212
217
  this.state.finalizedHead = nextHead;
213
218
  this.state.unfinalizedHeads = [];
package/lib/run.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":";;;;;;AAqFA,kBAWC;AA+VD,8DAEC;AAjcD,6CAA6C;AAC7C,2DAA8E;AAS9E,mFAO4C;AAC5C,2DAA0E;AAE1E,oDAA2B;AAC3B,2FAAuF;AAG/E,iGAHA,gDAAgB,OAGA;AAFxB,iCAAgD;AAKhD,MAAM,GAAG,GAAG,IAAA,qBAAY,EAAC,qBAAqB,CAAC,CAAA;AA0D/C,SAAgB,GAAG,CACf,GAAsB,EACtB,EAAmB,EACnB,WAAqE,EACrE,IAAiB;IAEjB,IAAA,0BAAU,EAAC,GAAG,EAAE;QACR,OAAO,IAAI,SAAS,CAAC,GAAG,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,CAAA;IAC9D,CAAC,EAAE,GAAG,CAAC,EAAE;QACD,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACtB,CAAC,CAAC,CAAA;AACN,CAAC;AASD,MAAM,cAAc;IAApB;QACI,kBAAa,GAAyB,SAAS,CAAA;QAC/C,qBAAgB,GAAe,EAAE,CAAA;QACzB,cAAS,GAAG,IAAI,oCAAgB,EAAE,CAAA;IAqD9C,CAAC;IAnDG,IAAI,IAAI;QACJ,OAAO,IAAA,yBAAS,EAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC,aAAa,CAAA;IACjE,CAAC;IAED,GAAG,CAAC,GAAW;QACX,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAClC,CAAC;IAED,IAAI,CAAC,KAAyB;QAC1B,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAA;QACxC,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,IAAI,EAAE,CAAA;QAEpD,IAAI,iBAAiB,GAAG,KAAK,CAAC,gBAAgB;YAC1C,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC;aACnC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,SAAU,EAAC,CAAC,CAAC,CAAA;QAEnE,IAAI,KAAK,CAAC,SAAS,EAAE,MAAM,IAAI,iBAAiB,EAAE,MAAM,EAAE,CAAC;YACvD,GAAG,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAA;YACvC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,EAAE,iBAAiB,CAAC,CAAA;QACjE,CAAC;IACL,CAAC;IAED,UAAU,CAAC,cAA0B;QACjC,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAA;QACvG,IAAI,aAAa,GAAG,iBAAiB,CAAC,KAAK,EAAE,cAAc,CAAC,CAAA;QAC5D,IAAI,aAAa,KAAK,CAAC,CAAC,EAAE,CAAC;YACvB,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI;gBAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;YACzE,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAA;YAC1B,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;QACjC,CAAC;aAAM,CAAC;YACJ,IAAI,YAAY,GAAG,KAAK,CAAC,aAAa,CAAC,CAAA;YACvC,GAAG,CAAC,IAAI,CAAC,sCAAsC,IAAA,iBAAU,EAAC,YAAY,CAAC,EAAE,CAAC,CAAA;YAC1E,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,GAAG,CAAC,CAAC,CAAA;YACzD,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;QAClD,CAAC;IACL,CAAC;IAED,KAAK,CAAC,WAAmB;QACrB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;IACrC,CAAC;IAED,eAAe;QACX,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAA;IAC3B,CAAC;IAED,KAAK,CAAC,QAAQ,CACV,KAAkB,EAClB,EAAiD;QAEjD,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IAC7C,CAAC;CACJ;AAED,MAAM,SAAS;IAMX,YACY,GAAkB,EAClB,EAAe,EACf,OAAyD,EAChD,IAAiB;QAH1B,QAAG,GAAH,GAAG,CAAe;QAClB,OAAE,GAAF,EAAE,CAAa;QACf,YAAO,GAAP,OAAO,CAAkD;QAChD,SAAI,GAAJ,IAAI,CAAa;QAP9B,kBAAa,GAAG,KAAK,CAAA;QACrB,UAAK,GAAG,IAAI,cAAc,EAAE,CAAA;QAQhC,IAAI,CAAC,OAAO,GAAG,IAAI,6CAAa,CAC5B,GAAG,CAAC,qBAAqB,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAC9F,CAAA;IACL,CAAC;IAED,KAAK,CAAC,GAAG;QACL,IAAI,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,iBAAiB;YACnC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;YACjC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC9C,IAAI,WAAW,GAAG,IAAI,yBAAS,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC,EAAE,KAAM,CAAC,CAAA;QAEtF,IAAI,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAA;QACrC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAA;QAE9C,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAA;QAC1B,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;YACf,GAAG,CAAC,IAAI,CAAC,4BAA4B,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;QACvD,CAAC;QACD,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,CAAC,EAAE,MAAM,WAAW,CAAC,GAAG,EAAE,CAAC,CAAA;QAEnE,IAAI,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,iBAAiB;YACrC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;YACnC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAEhD,OAAO,IAAI,EAAE,CAAC;YACV,IAAI,CAAC;gBACD,IAAI,KAAK,EAAE,IAAI,IAAI,IAAI,SAAS,CAAC;oBAC7B,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;oBACzC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI;oBACjC,gBAAgB,EAAE,IAAI,CAAC,KAAK;iBAC/B,CAAC,EAAE,CAAC;oBACD,MAAM,IAAI,CAAC,YAAY,CACnB,IAAI,EACJ,MAAM,WAAW,CAAC,GAAG,EAAE,EACvB,KAAK,EAAE,KAAQ,EAAE,WAAgB,EAAE,OAAgB,EAAE,EAAE;wBACnD,IAAI,UAAU,GAAG,EAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,IAAA,oBAAI,EAAC,WAAW,CAAC,CAAC,MAAM,CAAC,MAAM,EAAC,CAAA;wBAE1F,MAAM,EAAC,IAAI,EAAE,YAAY,EAAE,OAAO,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAC3D,UAAU,EACV,KAAK,EAAE,SAAS,EAAE,EAAE;4BAChB,MAAM,IAAI,CAAC,OAAO,CAAC,EAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAC,CAAC,CAAA;wBAChF,CAAC,CACJ,CAAA;wBAED,IAAI,OAAO,EAAE,CAAC;4BACV,MAAM,IAAI,uBAAuB,EAAE,CAAA;wBACvC,CAAC;wBAED,OAAO,EAAC,SAAS,EAAE,YAAY,EAAC,CAAA;oBACxC,CAAC,CAAC,CAAA;gBACN,CAAC;gBACD,MAAK;YACT,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACT,IAAI,yBAAyB,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC/B,GAAG,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAA;oBAC1E,SAAQ;gBACZ,CAAC;gBAED,IAAI,CAAC,IAAA,2CAAe,EAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,iBAAiB;oBAAE,MAAM,CAAC,CAAA;gBAC9D,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAA;YAC3C,CAAC;QACL,CAAC;QAED,IAAI,CAAC,iBAAiB,EAAE,CAAA;IAC5B,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,KAAa,EAAE,WAAmB;QACxD,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;QAC9C,IAAI,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,CAAA;QAE/E,IAAI,gBAA8C,CAAA;QAClD,IAAI,IAAI,CAAC,IAAI,EAAE,UAAU,IAAI,IAAI,EAAE,CAAC;YAChC,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAA;QAC3C,CAAC;aAAM,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;YACtB,gBAAgB,GAAG,IAAI,gDAAgB,EAAE,CAAA;YACzC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAClC,CAAC;QACD,IAAI,gBAAgB,IAAI,IAAI;YAAE,OAAM;QAEpC,gBAAgB,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC/C,IAAI,SAAS,GAAG,MAAM,gBAAgB,CAAC,KAAK,EAAE,CAAA;QAC9C,GAAG,CAAC,IAAI,CAAC,yCAAyC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAA;IACvE,CAAC;IAEO,qBAAqB,CAAC,WAAmB,EAAE,aAAqB,EAAE,IAAa;QACnF,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;QACxC,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAA;QACjD,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;IACrC,CAAC;IAEO,KAAK,CAAC,YAAY,CACtB,IAAmB,EACnB,WAAmB,EACnB,GAAwF;QAExF,IAAI,EAAC,MAAM,EAAE,aAAa,EAAE,iBAAiB,EAAC,GAAG,IAAI,CAAA;QAErD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAM;QAE/B,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAA;QAE9B,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACzD,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;QAC7C,CAAC;QAED,IACI,iBAAiB,IAAI,IAAI;YACzB,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,IAAI;YAChC,iBAAiB,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,EAC7D,CAAC;YACC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAA;QAChD,CAAC;QAED,IAAI,gBAAgB,GAChB,iBAAiB,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,iBAAkB,CAAC,MAAM,CAAC,CAAA;QAExG,IAAI,QAAQ,GAAG,IAAA,oBAAI,EAAC,MAAM,CAAC,CAAC,MAAM,CAAA;QAClC,IAAI,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,WAAW,CAAA;QAE5C,IAAI,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAA;QAE9C,IAAI,IAAI,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAAC;YAC5B,IAAI,YAAkC,CAAA;YACtC,IAAI,gBAAgB,GAAG,CAAC,EAAE,CAAC;gBACvB,YAAY,GAAG,IAAA,oBAAI,EAAC,MAAM,CAAC,CAAC,MAAM,CAAA;YACtC,CAAC;iBAAM,CAAC;gBACJ,YAAY,GAAG,iBAAiB,IAAI,MAAM,CAAC,gBAAgB,GAAG,CAAC,CAAC,EAAE,MAAM,CAAA;YAC5E,CAAC;YACD,IAAI,aAAa,GAAG,WAAW,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;YACvE,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,CACtB;gBACI,aAAa,EAAE,eAAe,CAAC,aAAa,CAAC;gBAC7C,QAAQ,EAAE,eAAe,CAAC,QAAQ,CAAC;gBACnC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;aAC1D,EACD,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;gBACxB,IAAI,WAAW,GAAG,KAAK,KAAK,CAAC,IAAI,GAAG,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;gBAC1F,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAM;gBACpC,OAAO,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,CAAA;YAC3C,CAAC,CACJ,CAAA;YACD,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAA;YAE5B,IAAI,gBAAgB,GAAG,aAAa,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAA;YAChE,IAAI,gBAAgB,EAAE,CAAC;gBACnB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAA;YAC7C,CAAC;YACD,IAAI,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAA;YAClD,IAAI,gBAAgB,EAAE,CAAC;gBACnB,IAAI,GAAG,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,gBAAiB,CAAC,MAAM,CAAC,CAAA;gBAChF,gBAAgB,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACjE,CAAC;YACD,IAAI,gBAAgB,IAAI,CAAC,EAAE,CAAC;gBACxB,gBAAgB,GAAG;oBACf,GAAG,gBAAgB;oBACnB,GAAG,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,EAAC,CAAC,CAAC;iBACjG,CAAA;YACL,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,gBAAgB,CAAA;YAC3C,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,gBAAgB,CAAA;QAClD,CAAC;aAAM,CAAC;YACJ,IAAA,gBAAM,EAAC,gBAAgB,GAAG,CAAC,EAAE,8CAA8C,CAAC,CAAA;YAE5E,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAClB;gBACI,QAAQ,EAAE,eAAe,CAAC,QAAQ,CAAC;gBACnC,QAAQ,EAAE,eAAe,CAAC,QAAQ,CAAC;gBACnC,OAAO;aACV,EACD,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CACzC,CAAA;YACD,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAA;YAE5B,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;YACjC,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,QAAQ,CAAA;YACnC,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,EAAE,CAAA;QACpC,CAAC;QAED,IAAI,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAA;QAE5C,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;QACxE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,IAAA,oBAAa,EAAC,MAAM,CAAC,EAAE,gBAAgB,EAAE,cAAc,CAAC,CAAA;QAElG,IAAI,CAAC,YAAY,EAAE,CAAA;IACvB,CAAC;IAEO,YAAY;QAChB,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,EAAE,CAAC;YACjC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,CAAA;YACtC,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC,GAAG,EAAE;gBACrC,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAA;gBAClC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;oBACrB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAA;oBAC1B,IAAI,CAAC,YAAY,EAAE,CAAA;gBACvB,CAAC;YACL,CAAC,EAAE,IAAK,CAAC,CAAA;QACb,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,aAAa,GAAG,IAAI,CAAA;QAC7B,CAAC;IACL,CAAC;IAEO,iBAAiB;QACrB,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,EAAE,CAAC;YACjC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;QACxC,CAAC;QACD,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAA;YAC1B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,CAAA;QAC1C,CAAC;IACL,CAAC;CACJ;AAED,SAAS,iBAAiB,CAAC,YAAwB,EAAE,SAAqB;IACtE,IAAI,YAAY,GAAG,CAAC,CAAA;IACpB,IAAI,SAAS,GAAG,CAAC,CAAA;IACjB,IAAI,eAAe,GAAG,CAAC,CAAC,CAAA;IAExB,OAAO,YAAY,GAAG,YAAY,CAAC,MAAM,IAAI,SAAS,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;QACxE,MAAM,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC,CAAA;QAC/C,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,CAAA;QAEtC,IAAI,YAAY,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;YACzC,SAAS,EAAE,CAAA;YACX,SAAQ;QACZ,CAAC;QAED,IAAI,YAAY,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;YACzC,YAAY,EAAE,CAAA;YACd,SAAQ;QACZ,CAAC;QAED,IAAI,YAAY,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;YACvC,OAAO,eAAe,CAAA;QAC1B,CAAC;QAED,eAAe,GAAG,YAAY,CAAA;QAC9B,YAAY,EAAE,CAAA;QACd,SAAS,EAAE,CAAA;IACf,CAAC;IAED,OAAO,eAAe,CAAA;AAC1B,CAAC;AAED,SAAS,eAAe,CAAC,GAAyB;IAC9C,IAAI,GAAG,IAAI,IAAI;QAAE,OAAO,EAAC,MAAM,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAC,CAAA;IAChD,OAAO,EAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAC,CAAA;AAC/C,CAAC;AAED,SAAS,UAAU,CAAC,EAAiB;IACjC,OAAO,EAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAC,CAAA;AAC7C,CAAC;AAED,SAAS,oBAAoB,CAAC,OAA8C;IACxE,IAAI,GAAG,GAAG,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAA;IACpD,OAAO;QACH,aAAa,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC;QACnE,gBAAgB,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAC,CAAC,CAAC;QAC7E,SAAS,EAAE,OAAO,CAAC,SAAS;KAC/B,CAAA;AACL,CAAC;AAED,SAAS,WAAW,CAAC,CAAuB,EAAE,CAAuB;IACjE,IAAI,CAAC,IAAI,IAAI;QAAE,OAAO,CAAC,CAAA;IACvB,IAAI,CAAC,IAAI,IAAI;QAAE,OAAO,CAAC,CAAA;IACvB,OAAO,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACvC,CAAC;AAED,MAAa,uBAAwB,SAAQ,KAAK;IAAlD;;QACa,8BAAyB,GAAG,IAAI,CAAA;QAChC,SAAI,GAAG,yBAAyB,CAAA;IAC7C,CAAC;CAAA;AAHD,0DAGC;AAED,SAAgB,yBAAyB,CAAC,GAAY;IAClD,OAAO,GAAG,YAAY,uBAAuB,CAAA;AACjD,CAAC"}
@@ -11,6 +11,7 @@ export declare class TemplateRegistry implements ITemplateRegistry {
11
11
  private baseMutations;
12
12
  private undoLog;
13
13
  private pendingTemplates;
14
+ private committedIndex;
14
15
  /**
15
16
  * Rebuild state from finalized mutations and optionally replay hot block
16
17
  * mutations to reconstruct the undo log.
@@ -22,6 +23,7 @@ export declare class TemplateRegistry implements ITemplateRegistry {
22
23
  blockNumber: number;
23
24
  templates: TemplateMutation[];
24
25
  }[]): void;
26
+ commit(): void;
25
27
  get(key: string): TemplateValue[];
26
28
  has(key: string, value: string, block: number): boolean;
27
29
  apply(mutation: TemplateMutation): boolean;
@@ -31,6 +33,8 @@ export declare class TemplateRegistry implements ITemplateRegistry {
31
33
  }>;
32
34
  rollbackTo(blockNumber: number): void;
33
35
  prune(blockNumber: number): void;
36
+ private getUncommittedMutationsInRange;
37
+ private mergeData;
34
38
  private applyToState;
35
39
  private rebuild;
36
40
  }
@@ -1 +1 @@
1
- {"version":3,"file":"template-registry.d.ts","sourceRoot":"","sources":["../src/template-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,gBAAgB,IAAI,iBAAiB,EAAE,aAAa,EAAC,MAAM,qCAAqC,CAAA;AAC7G,OAAO,KAAK,EAAC,WAAW,EAAQ,MAAM,+BAA+B,CAAA;AACrE,OAAO,EAAC,gBAAgB,EAAC,MAAM,YAAY,CAAA;AAE3C,MAAM,WAAW,eAAe;IAC5B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1D,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7D,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAA;CAChE;AAgCD,qBAAa,gBAAiB,YAAW,iBAAiB;IACtD,OAAO,CAAC,KAAK,CAA0C;IACvD,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,OAAO,CAAkE;IACjF,OAAO,CAAC,gBAAgB,CAAyB;IAEjD;;;;;;OAMG;IACH,IAAI,CACA,SAAS,EAAE,gBAAgB,EAAE,EAC7B,SAAS,CAAC,EAAE;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,gBAAgB,EAAE,CAAA;KAAC,EAAE,GACnE,IAAI;IAOP,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,EAAE;IAYjC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IAavD,KAAK,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO;IAQpC,QAAQ,CACV,KAAK,EAAE,WAAW,EAClB,EAAE,EAAE,CAAC,SAAS,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,GAClD,OAAO,CAAC;QAAC,IAAI,EAAE,gBAAgB,EAAE,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAC,CAAC;IAiBxD,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAQrC,KAAK,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAQhC,OAAO,CAAC,YAAY;IAqCpB,OAAO,CAAC,OAAO;CAelB"}
1
+ {"version":3,"file":"template-registry.d.ts","sourceRoot":"","sources":["../src/template-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,gBAAgB,IAAI,iBAAiB,EAAE,aAAa,EAAC,MAAM,qCAAqC,CAAA;AAC7G,OAAO,KAAK,EAAC,WAAW,EAAQ,MAAM,+BAA+B,CAAA;AACrE,OAAO,EAAC,gBAAgB,EAAC,MAAM,YAAY,CAAA;AAE3C,MAAM,WAAW,eAAe;IAC5B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1D,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7D,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAA;CAChE;AAgCD,qBAAa,gBAAiB,YAAW,iBAAiB;IACtD,OAAO,CAAC,KAAK,CAA0C;IACvD,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,OAAO,CAAkE;IACjF,OAAO,CAAC,gBAAgB,CAAyB;IACjD,OAAO,CAAC,cAAc,CAAY;IAElC;;;;;;OAMG;IACH,IAAI,CACA,SAAS,EAAE,gBAAgB,EAAE,EAC7B,SAAS,CAAC,EAAE;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,gBAAgB,EAAE,CAAA;KAAC,EAAE,GACnE,IAAI;IAQP,MAAM,IAAI,IAAI;IAId,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,EAAE;IAYjC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IAavD,KAAK,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO;IAQpC,QAAQ,CACV,KAAK,EAAE,WAAW,EAClB,EAAE,EAAE,CAAC,SAAS,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,GAClD,OAAO,CAAC;QAAC,IAAI,EAAE,gBAAgB,EAAE,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAC,CAAC;IAqBxD,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IASrC,KAAK,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAShC,OAAO,CAAC,8BAA8B;IAYtC,OAAO,CAAC,SAAS;IAmBjB,OAAO,CAAC,YAAY;IAqCpB,OAAO,CAAC,OAAO;CAelB"}
@@ -31,6 +31,7 @@ class TemplateRegistry {
31
31
  this.baseMutations = [];
32
32
  this.undoLog = [];
33
33
  this.pendingTemplates = [];
34
+ this.committedIndex = 0;
34
35
  }
35
36
  /**
36
37
  * Rebuild state from finalized mutations and optionally replay hot block
@@ -42,9 +43,13 @@ class TemplateRegistry {
42
43
  init(mutations, hotBlocks) {
43
44
  this.baseMutations = mutations;
44
45
  this.undoLog = hotBlocks ?? [];
46
+ this.committedIndex = this.undoLog.length;
45
47
  this.pendingTemplates = [];
46
48
  this.rebuild();
47
49
  }
50
+ commit() {
51
+ this.committedIndex = this.undoLog.length;
52
+ }
48
53
  get(key) {
49
54
  let m = this.byKey.get(key);
50
55
  if (m == null)
@@ -79,6 +84,7 @@ class TemplateRegistry {
79
84
  return changed;
80
85
  }
81
86
  async transact(range, fn) {
87
+ let previousUncommitted = this.getUncommittedMutationsInRange(range);
82
88
  let templates = new HandlerTemplates(range, this);
83
89
  try {
84
90
  await fn(templates);
@@ -93,13 +99,15 @@ class TemplateRegistry {
93
99
  this.undoLog.push({ blockNumber: range.to, templates: this.pendingTemplates });
94
100
  }
95
101
  this.pendingTemplates = [];
96
- return { data: templates.data, changed };
102
+ let data = this.mergeData(templates.data, previousUncommitted);
103
+ return { data, changed };
97
104
  }
98
105
  rollbackTo(blockNumber) {
99
106
  let splitIdx = upperBound(this.undoLog, blockNumber);
100
107
  if (splitIdx >= this.undoLog.length)
101
108
  return;
102
109
  this.undoLog.length = splitIdx;
110
+ this.committedIndex = Math.min(this.committedIndex, splitIdx);
103
111
  this.pendingTemplates = [];
104
112
  this.rebuild();
105
113
  }
@@ -109,6 +117,31 @@ class TemplateRegistry {
109
117
  this.baseMutations.push(...this.undoLog[i].templates);
110
118
  }
111
119
  this.undoLog = this.undoLog.slice(splitIdx);
120
+ this.committedIndex = Math.max(0, this.committedIndex - splitIdx);
121
+ }
122
+ getUncommittedMutationsInRange(range) {
123
+ let result = [];
124
+ for (let i = this.committedIndex; i < this.undoLog.length; i++) {
125
+ for (let m of this.undoLog[i].templates) {
126
+ if (m.blockNumber >= range.from && m.blockNumber <= range.to) {
127
+ result.push(m);
128
+ }
129
+ }
130
+ }
131
+ return result;
132
+ }
133
+ mergeData(handlerData, previousUncommitted) {
134
+ if (previousUncommitted.length === 0)
135
+ return handlerData;
136
+ let result = [...previousUncommitted];
137
+ for (let m of handlerData) {
138
+ let isDuplicate = previousUncommitted.some(p => p.type === m.type && p.key === m.key &&
139
+ p.value === m.value && p.blockNumber === m.blockNumber);
140
+ if (!isDuplicate) {
141
+ result.push(m);
142
+ }
143
+ }
144
+ return result;
112
145
  }
113
146
  applyToState({ type, key, value, blockNumber }) {
114
147
  if (type === 'add') {
@@ -1 +1 @@
1
- {"version":3,"file":"template-registry.js","sourceRoot":"","sources":["../src/template-registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"template-registry.js","sourceRoot":"","sources":["../src/template-registry.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@subsquid/batch-processor",
3
- "version": "0.2.0-portal-api.19316d",
3
+ "version": "0.2.0-portal-api.d5861e",
4
4
  "description": "ETL processor",
5
5
  "license": "GPL-3.0-or-later",
6
6
  "repository": "git@github.com:subsquid/squid-sdk.git",
@@ -20,7 +20,7 @@
20
20
  "@subsquid/util-internal-counters": "^1.3.2",
21
21
  "@subsquid/util-internal-prometheus-server": "^1.3.0",
22
22
  "@subsquid/util-internal-range": "^0.3.0",
23
- "@subsquid/util-internal-data-source": "0.0.1-portal-api.19316d"
23
+ "@subsquid/util-internal-data-source": "0.0.1-portal-api.d5861e"
24
24
  },
25
25
  "devDependencies": {
26
26
  "@types/mocha": "^10.0.7",
package/src/run.ts CHANGED
@@ -149,6 +149,10 @@ class ProcessorState implements ITemplateRegistry {
149
149
  this.templates.prune(blockNumber)
150
150
  }
151
151
 
152
+ commitTemplates(): void {
153
+ this.templates.commit()
154
+ }
155
+
152
156
  async transact(
153
157
  range: FiniteRange,
154
158
  fn: (templates: TemplateManager) => Promise<void>,
@@ -310,6 +314,7 @@ class Processor<B extends BlockBase, S> {
310
314
  return map(store, sliceBlocks, isOnTop)
311
315
  }
312
316
  )
317
+ this.state.commitTemplates()
313
318
 
314
319
  let newFinalizedHead = finalizedHead ?? this.state.finalizedHead
315
320
  if (newFinalizedHead) {
@@ -339,6 +344,7 @@ class Processor<B extends BlockBase, S> {
339
344
  },
340
345
  (store) => map(store, blocks, isOnTop)
341
346
  )
347
+ this.state.commitTemplates()
342
348
 
343
349
  this.state.prune(nextHead.number)
344
350
  this.state.finalizedHead = nextHead
@@ -170,6 +170,7 @@ describe('TemplateRegistry', function () {
170
170
  await reg.transact(range, async (t) => {
171
171
  t.add('log', '0xabc', 100)
172
172
  })
173
+ reg.commit()
173
174
  let result = await reg.transact(range, async () => {})
174
175
  assert.strictEqual(result.changed, false)
175
176
  assert.deepStrictEqual(result.data, [])
@@ -648,4 +649,183 @@ describe('TemplateRegistry', function () {
648
649
  ])
649
650
  })
650
651
  })
652
+
653
+ describe('two-pass retry (uncommitted mutations)', function () {
654
+ it('returns uncommitted mutations when handler produces no new changes', async function () {
655
+ let reg = new TemplateRegistry()
656
+ let range = {from: 0, to: 200}
657
+
658
+ let r1 = await reg.transact(range, async (t) => {
659
+ t.add('log', '0xabc', 100)
660
+ })
661
+ assert.strictEqual(r1.changed, true)
662
+
663
+ let r2 = await reg.transact(range, async () => {})
664
+ assert.strictEqual(r2.changed, false)
665
+ assert.deepStrictEqual(r2.data, [
666
+ {type: 'add', key: 'log', value: '0xabc', blockNumber: 100},
667
+ ])
668
+ })
669
+
670
+ it('returns uncommitted mutations when handler skips add due to has() guard', async function () {
671
+ let reg = new TemplateRegistry()
672
+ let range = {from: 0, to: 200}
673
+
674
+ await reg.transact(range, async (t) => {
675
+ t.add('factory', '0xabc', 100)
676
+ })
677
+
678
+ let r2 = await reg.transact(range, async (t) => {
679
+ if (!t.has('factory', '0xabc', 100)) {
680
+ t.add('factory', '0xabc', 100)
681
+ }
682
+ })
683
+ assert.strictEqual(r2.changed, false)
684
+ assert.deepStrictEqual(r2.data, [
685
+ {type: 'add', key: 'factory', value: '0xabc', blockNumber: 100},
686
+ ])
687
+ })
688
+
689
+ it('merges uncommitted mutations with new handler mutations', async function () {
690
+ let reg = new TemplateRegistry()
691
+ let range = {from: 0, to: 300}
692
+
693
+ await reg.transact(range, async (t) => {
694
+ t.add('factory', '0xabc', 100)
695
+ })
696
+
697
+ let r2 = await reg.transact(range, async (t) => {
698
+ if (!t.has('factory', '0xabc', 100)) {
699
+ t.add('factory', '0xabc', 100)
700
+ }
701
+ t.add('pool', '0xdef', 200)
702
+ })
703
+ assert.strictEqual(r2.changed, true)
704
+ assert.deepStrictEqual(r2.data, [
705
+ {type: 'add', key: 'factory', value: '0xabc', blockNumber: 100},
706
+ {type: 'add', key: 'pool', value: '0xdef', blockNumber: 200},
707
+ ])
708
+ })
709
+
710
+ it('handles three-pass retry with cascading template discovery', async function () {
711
+ let reg = new TemplateRegistry()
712
+ let range = {from: 0, to: 300}
713
+
714
+ await reg.transact(range, async (t) => {
715
+ t.add('factory', '0xabc', 100)
716
+ })
717
+
718
+ await reg.transact(range, async (t) => {
719
+ if (!t.has('factory', '0xabc', 100)) {
720
+ t.add('factory', '0xabc', 100)
721
+ }
722
+ t.add('pool', '0xdef', 200)
723
+ })
724
+
725
+ let r3 = await reg.transact(range, async (t) => {
726
+ if (!t.has('factory', '0xabc', 100)) {
727
+ t.add('factory', '0xabc', 100)
728
+ }
729
+ if (!t.has('pool', '0xdef', 200)) {
730
+ t.add('pool', '0xdef', 200)
731
+ }
732
+ })
733
+ assert.strictEqual(r3.changed, false)
734
+ assert.deepStrictEqual(r3.data, [
735
+ {type: 'add', key: 'factory', value: '0xabc', blockNumber: 100},
736
+ {type: 'add', key: 'pool', value: '0xdef', blockNumber: 200},
737
+ ])
738
+ })
739
+
740
+ it('commit() clears uncommitted status', async function () {
741
+ let reg = new TemplateRegistry()
742
+ let range = {from: 0, to: 200}
743
+
744
+ await reg.transact(range, async (t) => {
745
+ t.add('log', '0xabc', 100)
746
+ })
747
+ reg.commit()
748
+
749
+ let r2 = await reg.transact(range, async () => {})
750
+ assert.strictEqual(r2.changed, false)
751
+ assert.deepStrictEqual(r2.data, [])
752
+ })
753
+
754
+ it('uncommitted mutations are filtered by range', async function () {
755
+ let reg = new TemplateRegistry()
756
+
757
+ await reg.transact({from: 0, to: 200}, async (t) => {
758
+ t.add('factory', '0xabc', 100)
759
+ t.add('pool', '0xdef', 200)
760
+ })
761
+
762
+ let r2 = await reg.transact({from: 0, to: 150}, async () => {})
763
+ assert.strictEqual(r2.changed, false)
764
+ assert.deepStrictEqual(r2.data, [
765
+ {type: 'add', key: 'factory', value: '0xabc', blockNumber: 100},
766
+ ])
767
+ })
768
+
769
+ it('uncommitted mutations survive rollbackTo within committed range', async function () {
770
+ let reg = new TemplateRegistry()
771
+
772
+ await reg.transact({from: 0, to: 100}, async (t) => {
773
+ t.add('log', '0xabc', 50)
774
+ })
775
+ reg.commit()
776
+
777
+ await reg.transact({from: 101, to: 200}, async (t) => {
778
+ t.add('log', '0xdef', 150)
779
+ })
780
+
781
+ reg.rollbackTo(100)
782
+
783
+ let result = await reg.transact({from: 101, to: 200}, async (t) => {
784
+ t.add('log', '0xdef', 150)
785
+ })
786
+ assert.strictEqual(result.changed, true)
787
+ assert.deepStrictEqual(values(reg, 'log'), [
788
+ {value: '0xabc', from: 50, to: undefined},
789
+ {value: '0xdef', from: 150, to: undefined},
790
+ ])
791
+ })
792
+
793
+ it('prune adjusts committedIndex correctly', async function () {
794
+ let reg = new TemplateRegistry()
795
+
796
+ await reg.transact({from: 0, to: 100}, async (t) => {
797
+ t.add('log', '0xabc', 50)
798
+ })
799
+ reg.commit()
800
+
801
+ await reg.transact({from: 101, to: 200}, async (t) => {
802
+ t.add('log', '0xdef', 150)
803
+ })
804
+
805
+ reg.prune(100)
806
+
807
+ let r = await reg.transact({from: 101, to: 200}, async () => {})
808
+ assert.strictEqual(r.changed, false)
809
+ assert.deepStrictEqual(r.data, [
810
+ {type: 'add', key: 'log', value: '0xdef', blockNumber: 150},
811
+ ])
812
+ })
813
+
814
+ it('deduplicates handler data against uncommitted mutations', async function () {
815
+ let reg = new TemplateRegistry()
816
+ let range = {from: 0, to: 200}
817
+
818
+ await reg.transact(range, async (t) => {
819
+ t.add('log', '0xabc', 100)
820
+ })
821
+
822
+ let r2 = await reg.transact(range, async (t) => {
823
+ t.add('log', '0xabc', 100)
824
+ })
825
+ assert.strictEqual(r2.changed, false)
826
+ assert.deepStrictEqual(r2.data, [
827
+ {type: 'add', key: 'log', value: '0xabc', blockNumber: 100},
828
+ ])
829
+ })
830
+ })
651
831
  })
@@ -43,6 +43,7 @@ export class TemplateRegistry implements ITemplateRegistry {
43
43
  private baseMutations: TemplateMutation[] = []
44
44
  private undoLog: Array<{blockNumber: number, templates: TemplateMutation[]}> = []
45
45
  private pendingTemplates: TemplateMutation[] = []
46
+ private committedIndex: number = 0
46
47
 
47
48
  /**
48
49
  * Rebuild state from finalized mutations and optionally replay hot block
@@ -57,10 +58,15 @@ export class TemplateRegistry implements ITemplateRegistry {
57
58
  ): void {
58
59
  this.baseMutations = mutations
59
60
  this.undoLog = hotBlocks ?? []
61
+ this.committedIndex = this.undoLog.length
60
62
  this.pendingTemplates = []
61
63
  this.rebuild()
62
64
  }
63
65
 
66
+ commit(): void {
67
+ this.committedIndex = this.undoLog.length
68
+ }
69
+
64
70
  get(key: string): TemplateValue[] {
65
71
  let m = this.byKey.get(key)
66
72
  if (m == null) return []
@@ -98,6 +104,8 @@ export class TemplateRegistry implements ITemplateRegistry {
98
104
  range: FiniteRange,
99
105
  fn: (templates: TemplateManager) => Promise<void>,
100
106
  ): Promise<{data: TemplateMutation[]; changed: boolean}> {
107
+ let previousUncommitted = this.getUncommittedMutationsInRange(range)
108
+
101
109
  let templates = new HandlerTemplates(range, this)
102
110
  try {
103
111
  await fn(templates)
@@ -111,13 +119,16 @@ export class TemplateRegistry implements ITemplateRegistry {
111
119
  this.undoLog.push({blockNumber: range.to, templates: this.pendingTemplates})
112
120
  }
113
121
  this.pendingTemplates = []
114
- return {data: templates.data, changed}
122
+
123
+ let data = this.mergeData(templates.data, previousUncommitted)
124
+ return {data, changed}
115
125
  }
116
126
 
117
127
  rollbackTo(blockNumber: number): void {
118
128
  let splitIdx = upperBound(this.undoLog, blockNumber)
119
129
  if (splitIdx >= this.undoLog.length) return
120
130
  this.undoLog.length = splitIdx
131
+ this.committedIndex = Math.min(this.committedIndex, splitIdx)
121
132
  this.pendingTemplates = []
122
133
  this.rebuild()
123
134
  }
@@ -128,6 +139,38 @@ export class TemplateRegistry implements ITemplateRegistry {
128
139
  this.baseMutations.push(...this.undoLog[i].templates)
129
140
  }
130
141
  this.undoLog = this.undoLog.slice(splitIdx)
142
+ this.committedIndex = Math.max(0, this.committedIndex - splitIdx)
143
+ }
144
+
145
+ private getUncommittedMutationsInRange(range: FiniteRange): TemplateMutation[] {
146
+ let result: TemplateMutation[] = []
147
+ for (let i = this.committedIndex; i < this.undoLog.length; i++) {
148
+ for (let m of this.undoLog[i].templates) {
149
+ if (m.blockNumber >= range.from && m.blockNumber <= range.to) {
150
+ result.push(m)
151
+ }
152
+ }
153
+ }
154
+ return result
155
+ }
156
+
157
+ private mergeData(
158
+ handlerData: TemplateMutation[],
159
+ previousUncommitted: TemplateMutation[]
160
+ ): TemplateMutation[] {
161
+ if (previousUncommitted.length === 0) return handlerData
162
+
163
+ let result = [...previousUncommitted]
164
+ for (let m of handlerData) {
165
+ let isDuplicate = previousUncommitted.some(p =>
166
+ p.type === m.type && p.key === m.key &&
167
+ p.value === m.value && p.blockNumber === m.blockNumber
168
+ )
169
+ if (!isDuplicate) {
170
+ result.push(m)
171
+ }
172
+ }
173
+ return result
131
174
  }
132
175
 
133
176
  private applyToState({type, key, value, blockNumber}: TemplateMutation): boolean {