@openrewrite/rewrite 8.78.4 → 8.78.6

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.
@@ -15,6 +15,8 @@ export declare class ReferenceMap {
15
15
  clear(): void;
16
16
  deleteByRefId(refId: number): void;
17
17
  set(ref: Reference, refId: number): void;
18
+ snapshot(): number;
19
+ rollbackTo(savedRefCount: number): void;
18
20
  }
19
21
  export {};
20
22
  //# sourceMappingURL=reference.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"reference.d.ts","sourceRoot":"","sources":["../src/reference.ts"],"names":[],"mappings":"AAeA,QAAA,MAAM,aAAa,eAA8C,CAAC;AAElE,MAAM,WAAW,SAAS;IACtB,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC;CACzB;AAED,wBAAgB,KAAK,CAAC,CAAC,SAAS,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,SAAS,SAAS,GAAG,SAAS,GAAG,CAAC,GAAG,SAAS,CAiBvG;AAED,wBAAgB,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,SAAS,CAEhD;AAED,qBAAa,YAAY;IACrB,OAAO,CAAC,IAAI,CAAoC;IAChD,OAAO,CAAC,QAAQ,CAAgC;IAChD,OAAO,CAAC,QAAQ,CAAK;IAErB,GAAG,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO;IAI5B,GAAG,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS;IAIvC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAIhD,MAAM,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM;IAO9B,KAAK;IAML,aAAa,CAAC,KAAK,EAAE,MAAM;IAQ3B,GAAG,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM;CAIpC"}
1
+ {"version":3,"file":"reference.d.ts","sourceRoot":"","sources":["../src/reference.ts"],"names":[],"mappings":"AAeA,QAAA,MAAM,aAAa,eAA8C,CAAC;AAElE,MAAM,WAAW,SAAS;IACtB,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC;CACzB;AAED,wBAAgB,KAAK,CAAC,CAAC,SAAS,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,SAAS,SAAS,GAAG,SAAS,GAAG,CAAC,GAAG,SAAS,CAiBvG;AAED,wBAAgB,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,SAAS,CAEhD;AAED,qBAAa,YAAY;IACrB,OAAO,CAAC,IAAI,CAAoC;IAChD,OAAO,CAAC,QAAQ,CAAgC;IAChD,OAAO,CAAC,QAAQ,CAAK;IAErB,GAAG,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO;IAI5B,GAAG,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS;IAIvC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAIhD,MAAM,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM;IAO9B,KAAK;IAML,aAAa,CAAC,KAAK,EAAE,MAAM;IAQ3B,GAAG,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM;IAKjC,QAAQ,IAAI,MAAM;IAIlB,UAAU,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;CAU1C"}
package/dist/reference.js CHANGED
@@ -79,6 +79,19 @@ class ReferenceMap {
79
79
  this.refs.set(ref, refId);
80
80
  this.refsById.set(refId, ref);
81
81
  }
82
+ snapshot() {
83
+ return this.refCount;
84
+ }
85
+ rollbackTo(savedRefCount) {
86
+ for (let i = savedRefCount; i < this.refCount; i++) {
87
+ const obj = this.refsById.get(i);
88
+ if (obj) {
89
+ this.refs.delete(obj);
90
+ this.refsById.delete(i);
91
+ }
92
+ }
93
+ this.refCount = savedRefCount;
94
+ }
82
95
  }
83
96
  exports.ReferenceMap = ReferenceMap;
84
97
  //# sourceMappingURL=reference.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"reference.js","sourceRoot":"","sources":["../src/reference.ts"],"names":[],"mappings":";;;AAqBA,sBAiBC;AAED,sBAEC;AA1CD;;;;;;;;;;;;;;GAcG;AACH,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;AAMlE,SAAgB,KAAK,CAA2B,GAAM;IAClD,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACpB,OAAO,SAAgB,CAAC;IAC5B,CAAC;SAAM,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACpB,OAAO,GAAU,CAAC;IACtB,CAAC;IACD,IAAI,CAAC;QACD,2EAA2E;QAC3E,8CAA8C;QAC7C,GAAW,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC;QACnC,OAAO,GAAU,CAAC;IACtB,CAAC;IAAC,WAAM,CAAC;QACL,qEAAqE;QACrE,MAAM,MAAM,qBAAO,GAAU,CAAC,CAAC;QAC/B,MAAM,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC;QAC7B,OAAO,MAAM,CAAC;IAClB,CAAC;AACL,CAAC;AAED,SAAgB,KAAK,CAAC,GAAQ;IAC1B,OAAO,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC;AAC5E,CAAC;AAED,MAAa,YAAY;IAAzB;QACY,SAAI,GAAG,IAAI,OAAO,EAAqB,CAAC;QACxC,aAAQ,GAAG,IAAI,GAAG,EAAqB,CAAC;QACxC,aAAQ,GAAG,CAAC,CAAC;IAuCzB,CAAC;IArCG,GAAG,CAAC,GAAc;QACd,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,GAAG,CAAC,GAAc;QACd,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,UAAU,CAAC,KAAa;QACpB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED,MAAM,CAAC,GAAc;QACjB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC5B,OAAO,GAAG,CAAC;IACf,CAAC;IAED,KAAK;QACD,IAAI,CAAC,IAAI,GAAG,IAAI,OAAO,EAAqB,CAAC;QAC7C,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,EAAqB,CAAC;QAC7C,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;IACtB,CAAC;IAED,aAAa,CAAC,KAAa;QACvB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,GAAG,EAAE,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACtB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACL,CAAC;IAED,GAAG,CAAC,GAAc,EAAE,KAAa;QAC7B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC1B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAClC,CAAC;CACJ;AA1CD,oCA0CC"}
1
+ {"version":3,"file":"reference.js","sourceRoot":"","sources":["../src/reference.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- 8.78.4
1
+ 8.78.6
@@ -1 +1 @@
1
- {"version":3,"file":"get-object.d.ts","sourceRoot":"","sources":["../../../src/rpc/request/get-object.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAE3C,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAG7C,qBAAa,SAAS;IACN,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;gBADf,EAAE,EAAE,MAAM,EACV,cAAc,CAAC,EAAE,MAAM,YAAA;IAGpD,MAAM,CAAC,MAAM,CACT,UAAU,EAAE,GAAG,CAAC,iBAAiB,EACjC,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,EAC/B,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,GAAG,CAAC,CAAC,EACzD,SAAS,EAAE,YAAY,EACvB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,OAAO,EACpB,UAAU,CAAC,EAAE,MAAM,GACpB,IAAI;CAmDV"}
1
+ {"version":3,"file":"get-object.d.ts","sourceRoot":"","sources":["../../../src/rpc/request/get-object.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAE3C,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAG7C,qBAAa,SAAS;IACN,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;gBADf,EAAE,EAAE,MAAM,EACV,cAAc,CAAC,EAAE,MAAM,YAAA;IAGpD,MAAM,CAAC,MAAM,CACT,UAAU,EAAE,GAAG,CAAC,iBAAiB,EACjC,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,EAC/B,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,GAAG,CAAC,CAAC,EACzD,SAAS,EAAE,YAAY,EACvB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,OAAO,EACpB,UAAU,CAAC,EAAE,MAAM,GACpB,IAAI;CA4DV"}
@@ -79,10 +79,21 @@ class GetObject {
79
79
  if (!allData) {
80
80
  const after = obj;
81
81
  const before = remoteObjects.get(objId);
82
- allData = await new queue_1.RpcSendQueue(localRefs, request.sourceFileType, trace())
83
- .generate(after, before);
84
- pendingData.set(objId, allData);
85
- remoteObjects.set(objId, after);
82
+ // Snapshot ref count so we can roll back on failure.
83
+ // Ref IDs are assigned sequentially, so any ref >= savedRefCount
84
+ // was added during this exchange.
85
+ const savedRefCount = localRefs.snapshot();
86
+ try {
87
+ allData = await new queue_1.RpcSendQueue(localRefs, request.sourceFileType, trace())
88
+ .generate(after, before);
89
+ pendingData.set(objId, allData);
90
+ remoteObjects.set(objId, after);
91
+ }
92
+ catch (e) {
93
+ remoteObjects.delete(objId);
94
+ localRefs.rollbackTo(savedRefCount);
95
+ throw e;
96
+ }
86
97
  }
87
98
  const batch = allData.splice(0, batchSize);
88
99
  // If we've sent all data, remove from pending
@@ -1 +1 @@
1
- {"version":3,"file":"get-object.js","sourceRoot":"","sources":["../../../src/rpc/request/get-object.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;GAcG;AACH,yDAA2C;AAC3C,oCAAqE;AAErE,uCAAyD;AAEzD,MAAa,SAAS;IAClB,YAA6B,EAAU,EACV,cAAuB;QADvB,OAAE,GAAF,EAAE,CAAQ;QACV,mBAAc,GAAd,cAAc,CAAS;IACpD,CAAC;IAED,MAAM,CAAC,MAAM,CACT,UAAiC,EACjC,aAA+B,EAC/B,YAAyD,EACzD,SAAuB,EACvB,SAAiB,EACjB,KAAoB,EACpB,UAAmB;QAEnB,MAAM,WAAW,GAAG,IAAI,GAAG,EAA2B,CAAC;QAEvD,UAAU,CAAC,SAAS,CAChB,IAAI,GAAG,CAAC,WAAW,CAAwB,WAAW,CAAC,EACvD,IAAA,qBAAW,EACP,WAAW,EACX,UAAU,EACV,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,EAAC,OAAO,EAAC,EAAE;YACzB,MAAM,KAAK,GAAG,OAAO,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3B,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC;gBACpB,OAAO;oBACH,EAAC,KAAK,EAAE,sBAAc,CAAC,MAAM,EAAC;oBAC9B,EAAC,KAAK,EAAE,sBAAc,CAAC,aAAa,EAAC;iBACxC,CAAC;YACN,CAAC;YAED,MAAM,iBAAiB,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC;YACnD,IAAI,OAAO,iBAAiB,KAAK,UAAU,EAAE,CAAC;gBAC1C,MAAM,GAAG,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,CAAC;gBAC3C,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YACjC,CAAC;YAED,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACpC,OAAO,CAAC,MAAM,GAAG,IAAA,2BAAiB,EAAC,GAAG,CAAC,CAAC;YAExC,IAAI,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACrC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACX,MAAM,KAAK,GAAG,GAAG,CAAC;gBAClB,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAExC,OAAO,GAAG,MAAM,IAAI,oBAAY,CAAC,SAAS,EAAE,OAAO,CAAC,cAAc,EAAE,KAAK,EAAE,CAAC;qBACvE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;gBAC7B,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBAEhC,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACpC,CAAC;YAED,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;YAE3C,8CAA8C;YAC9C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC9B,CAAC;YAED,OAAO,KAAK,CAAC;QACjB,CAAC,CACJ,CACJ,CAAC;IACN,CAAC;CACJ;AAhED,8BAgEC"}
1
+ {"version":3,"file":"get-object.js","sourceRoot":"","sources":["../../../src/rpc/request/get-object.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;GAcG;AACH,yDAA2C;AAC3C,oCAAqE;AAErE,uCAAyD;AAEzD,MAAa,SAAS;IAClB,YAA6B,EAAU,EACV,cAAuB;QADvB,OAAE,GAAF,EAAE,CAAQ;QACV,mBAAc,GAAd,cAAc,CAAS;IACpD,CAAC;IAED,MAAM,CAAC,MAAM,CACT,UAAiC,EACjC,aAA+B,EAC/B,YAAyD,EACzD,SAAuB,EACvB,SAAiB,EACjB,KAAoB,EACpB,UAAmB;QAEnB,MAAM,WAAW,GAAG,IAAI,GAAG,EAA2B,CAAC;QAEvD,UAAU,CAAC,SAAS,CAChB,IAAI,GAAG,CAAC,WAAW,CAAwB,WAAW,CAAC,EACvD,IAAA,qBAAW,EACP,WAAW,EACX,UAAU,EACV,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,EAAC,OAAO,EAAC,EAAE;YACzB,MAAM,KAAK,GAAG,OAAO,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3B,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC;gBACpB,OAAO;oBACH,EAAC,KAAK,EAAE,sBAAc,CAAC,MAAM,EAAC;oBAC9B,EAAC,KAAK,EAAE,sBAAc,CAAC,aAAa,EAAC;iBACxC,CAAC;YACN,CAAC;YAED,MAAM,iBAAiB,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC;YACnD,IAAI,OAAO,iBAAiB,KAAK,UAAU,EAAE,CAAC;gBAC1C,MAAM,GAAG,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,CAAC;gBAC3C,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YACjC,CAAC;YAED,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACpC,OAAO,CAAC,MAAM,GAAG,IAAA,2BAAiB,EAAC,GAAG,CAAC,CAAC;YAExC,IAAI,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACrC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACX,MAAM,KAAK,GAAG,GAAG,CAAC;gBAClB,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAExC,qDAAqD;gBACrD,iEAAiE;gBACjE,kCAAkC;gBAClC,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC;gBAC3C,IAAI,CAAC;oBACD,OAAO,GAAG,MAAM,IAAI,oBAAY,CAAC,SAAS,EAAE,OAAO,CAAC,cAAc,EAAE,KAAK,EAAE,CAAC;yBACvE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;oBAC7B,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;oBAChC,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBACpC,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACT,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC5B,SAAS,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;oBACpC,MAAM,CAAC,CAAC;gBACZ,CAAC;YACL,CAAC;YAED,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;YAE3C,8CAA8C;YAC9C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC9B,CAAC;YAED,OAAO,KAAK,CAAC;QACjB,CAAC,CACJ,CACJ,CAAC;IACN,CAAC;CACJ;AAzED,8BAyEC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openrewrite/rewrite",
3
- "version": "8.78.4",
3
+ "version": "8.78.6",
4
4
  "license": "Moderne Source Available License",
5
5
  "description": "OpenRewrite JavaScript.",
6
6
  "repository": {
package/src/reference.ts CHANGED
@@ -84,4 +84,19 @@ export class ReferenceMap {
84
84
  this.refs.set(ref, refId);
85
85
  this.refsById.set(refId, ref);
86
86
  }
87
- }
87
+
88
+ snapshot(): number {
89
+ return this.refCount;
90
+ }
91
+
92
+ rollbackTo(savedRefCount: number): void {
93
+ for (let i = savedRefCount; i < this.refCount; i++) {
94
+ const obj = this.refsById.get(i);
95
+ if (obj) {
96
+ this.refs.delete(obj);
97
+ this.refsById.delete(i);
98
+ }
99
+ }
100
+ this.refCount = savedRefCount;
101
+ }
102
+ }
@@ -63,11 +63,20 @@ export class GetObject {
63
63
  const after = obj;
64
64
  const before = remoteObjects.get(objId);
65
65
 
66
- allData = await new RpcSendQueue(localRefs, request.sourceFileType, trace())
67
- .generate(after, before);
68
- pendingData.set(objId, allData);
69
-
70
- remoteObjects.set(objId, after);
66
+ // Snapshot ref count so we can roll back on failure.
67
+ // Ref IDs are assigned sequentially, so any ref >= savedRefCount
68
+ // was added during this exchange.
69
+ const savedRefCount = localRefs.snapshot();
70
+ try {
71
+ allData = await new RpcSendQueue(localRefs, request.sourceFileType, trace())
72
+ .generate(after, before);
73
+ pendingData.set(objId, allData);
74
+ remoteObjects.set(objId, after);
75
+ } catch (e) {
76
+ remoteObjects.delete(objId);
77
+ localRefs.rollbackTo(savedRefCount);
78
+ throw e;
79
+ }
71
80
  }
72
81
 
73
82
  const batch = allData.splice(0, batchSize);