dexie-cloud-common 1.0.52 → 1.0.54

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.
Files changed (36) hide show
  1. package/dist/DBOperation.d.ts +3 -0
  2. package/dist/DBOperation.d.ts.map +1 -1
  3. package/dist/SyncChangeSet.d.ts +12 -0
  4. package/dist/SyncChangeSet.d.ts.map +1 -0
  5. package/dist/SyncChangeSet.js +1 -0
  6. package/dist/YMessage.d.ts +65 -0
  7. package/dist/YMessage.d.ts.map +1 -0
  8. package/dist/YMessage.js +7 -0
  9. package/dist/async-generators/asyncIterablePipeline.js +3 -18
  10. package/dist/async-generators/consumeChunkedBinaryStream.d.ts +1 -1
  11. package/dist/async-generators/consumeChunkedBinaryStream.d.ts.map +1 -1
  12. package/dist/async-generators/consumeChunkedBinaryStream.js +72 -88
  13. package/dist/async-generators/consumeChunkedBinaryStream.test.js +40 -60
  14. package/dist/async-generators/getFetchResponseBodyGenerator.d.ts +1 -1
  15. package/dist/async-generators/getFetchResponseBodyGenerator.d.ts.map +1 -1
  16. package/dist/async-generators/getFetchResponseBodyGenerator.js +14 -17
  17. package/dist/async-generators/produceChunkedBinaryStream.d.ts +1 -1
  18. package/dist/async-generators/produceChunkedBinaryStream.d.ts.map +1 -1
  19. package/dist/async-generators/produceChunkedBinaryStream.js +27 -43
  20. package/dist/change-processing/subtractChanges.js +3 -4
  21. package/dist/change-processing/toDBOperationSet.d.ts.map +1 -1
  22. package/dist/change-processing/toDBOperationSet.js +2 -6
  23. package/dist/change-processing/toSyncChangeSet.d.ts +10 -0
  24. package/dist/change-processing/toSyncChangeSet.d.ts.map +1 -0
  25. package/dist/change-processing/toSyncChangeSet.js +44 -0
  26. package/dist/decoding.d.ts +3 -0
  27. package/dist/decoding.d.ts.map +1 -0
  28. package/dist/decoding.js +70 -0
  29. package/dist/encoding.d.ts +3 -0
  30. package/dist/encoding.d.ts.map +1 -0
  31. package/dist/encoding.js +39 -0
  32. package/dist/utils.d.ts +1 -1
  33. package/dist/utils.d.ts.map +1 -1
  34. package/dist/yjs/encoding.js +1 -1
  35. package/package.json +7 -7
  36. package/tsconfig.tsbuildinfo +1 -1
@@ -33,6 +33,9 @@ export interface DBInsertOperation<PK = DBOpPrimaryKey> extends DBOperationCommo
33
33
  export interface DBUpsertOperation<PK = DBOpPrimaryKey> extends DBOperationCommon<PK> {
34
34
  type: "upsert";
35
35
  values: readonly any[];
36
+ changeSpecs?: ({
37
+ [keyPath: string]: any;
38
+ } | null)[];
36
39
  }
37
40
  export interface DBUpdateOperation<PK = DBOpPrimaryKey> extends DBOperationCommon<PK> {
38
41
  type: "update";
@@ -1 +1 @@
1
- {"version":3,"file":"DBOperation.d.ts","sourceRoot":"","sources":["../src/DBOperation.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;AAE1D,mBAAW,eAAe;IACxB,KAAK,IAAI;IACT,KAAK,IAAI;IACT,GAAG,IAAI;IACP,KAAK,IAAI;CACV;AAED;;;EAGE;AACF,UAAU,cAAc;IACtB,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC;IACpB,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC;IACpB,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,MAAM,WAAW,CAAC,EAAE,GAAC,cAAc,IACrC,iBAAiB,CAAC,EAAE,CAAC,GACrB,iBAAiB,CAAC,EAAE,CAAC,GACrB,iBAAiB,CAAC,EAAE,CAAC,GACrB,iBAAiB,CAAC,EAAE,CAAC,GACrB,iBAAiB,CAAC,EAAE,CAAC,CAAC;AAE1B,MAAM,WAAW,iBAAiB,CAAC,EAAE,GAAC,cAAc;IAClD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,IAAI,EAAE,EAAE,EAAE,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AACD,MAAM,WAAW,iBAAiB,CAAC,EAAE,GAAC,cAAc,CAAE,SAAQ,iBAAiB,CAAC,EAAE,CAAC;IACjF,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB,CAAC,EAAE,GAAC,cAAc,CAAE,SAAQ,iBAAiB,CAAC,EAAE,CAAC;IACjF,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB,CAAC,EAAE,GAAC,cAAc,CAAE,SAAQ,iBAAiB,CAAC,EAAE,CAAC;IACjF,IAAI,EAAE,QAAQ,CAAC;IACf,WAAW,EAAE;QAAE,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,EAAE,CAAC;CAC3C;AAED,MAAM,WAAW,iBAAiB,CAAC,EAAE,GAAC,cAAc,CAAE,SAAQ,iBAAiB,CAAC,EAAE,CAAC;IACjF,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE;QACR,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB,KAAK,EAAE,cAAc,CAAC;KACvB,CAAC;IACF,UAAU,EAAE;QAAE,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;CACxC;AAGD,MAAM,WAAW,iBAAiB,CAAC,EAAE,GAAC,cAAc,CAAE,SAAQ,iBAAiB,CAAC,EAAE,CAAC;IACjF,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,CAAC,EACL;QACE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB,KAAK,EAAE,cAAc,CAAC;KACvB,GACD,KAAK,CAAC;CACX"}
1
+ {"version":3,"file":"DBOperation.d.ts","sourceRoot":"","sources":["../src/DBOperation.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;AAE1D,mBAAW,eAAe;IACxB,KAAK,IAAI;IACT,KAAK,IAAI;IACT,GAAG,IAAI;IACP,KAAK,IAAI;CACV;AAED;;;EAGE;AACF,UAAU,cAAc;IACtB,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC;IACpB,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC;IACpB,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,MAAM,WAAW,CAAC,EAAE,GAAC,cAAc,IACrC,iBAAiB,CAAC,EAAE,CAAC,GACrB,iBAAiB,CAAC,EAAE,CAAC,GACrB,iBAAiB,CAAC,EAAE,CAAC,GACrB,iBAAiB,CAAC,EAAE,CAAC,GACrB,iBAAiB,CAAC,EAAE,CAAC,CAAC;AAE1B,MAAM,WAAW,iBAAiB,CAAC,EAAE,GAAC,cAAc;IAClD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,IAAI,EAAE,EAAE,EAAE,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AACD,MAAM,WAAW,iBAAiB,CAAC,EAAE,GAAC,cAAc,CAAE,SAAQ,iBAAiB,CAAC,EAAE,CAAC;IACjF,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB,CAAC,EAAE,GAAC,cAAc,CAAE,SAAQ,iBAAiB,CAAC,EAAE,CAAC;IACjF,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC;IACvB,WAAW,CAAC,EAAE,CAAC;QAAE,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,GAAG,IAAI,CAAC,EAAE,CAAC;CACrD;AAED,MAAM,WAAW,iBAAiB,CAAC,EAAE,GAAC,cAAc,CAAE,SAAQ,iBAAiB,CAAC,EAAE,CAAC;IACjF,IAAI,EAAE,QAAQ,CAAC;IACf,WAAW,EAAE;QAAE,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,EAAE,CAAC;CAC3C;AAED,MAAM,WAAW,iBAAiB,CAAC,EAAE,GAAC,cAAc,CAAE,SAAQ,iBAAiB,CAAC,EAAE,CAAC;IACjF,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE;QACR,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB,KAAK,EAAE,cAAc,CAAC;KACvB,CAAC;IACF,UAAU,EAAE;QAAE,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;CACxC;AAGD,MAAM,WAAW,iBAAiB,CAAC,EAAE,GAAC,cAAc,CAAE,SAAQ,iBAAiB,CAAC,EAAE,CAAC;IACjF,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,CAAC,EACL;QACE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB,KAAK,EAAE,cAAc,CAAC;KACvB,GACD,KAAK,CAAC;CACX"}
@@ -0,0 +1,12 @@
1
+ export type SyncChangeSet = {
2
+ [table: string]: {
3
+ upsert?: object[];
4
+ update?: {
5
+ [key: string]: {
6
+ [keyPath: string]: any;
7
+ };
8
+ };
9
+ delete?: string[];
10
+ };
11
+ };
12
+ //# sourceMappingURL=SyncChangeSet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SyncChangeSet.d.ts","sourceRoot":"","sources":["../src/SyncChangeSet.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG;IAC1B,CAAC,KAAK,EAAE,MAAM,GAAG;QACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,MAAM,CAAC,EAAE;YACP,CAAC,GAAG,EAAE,MAAM,GAAG;gBAAE,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG,CAAA;aAAE,CAAC;SAC3C,CAAC;QACF,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;CACH,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,65 @@
1
+ export type YMessage = YClientMessage | YServerMessage;
2
+ export type YClientMessage = YUpdateFromClientRequest | YStateVector | YDocumentOpen | YAwarenessUpdate | YDocumentClose;
3
+ export type YServerMessage = YUpdateFromClientAck | YUpdateFromClientReject | YUpdateFromServerMessage | YAwarenessUpdate | YInSyncMessage;
4
+ export interface YUpdateFromClientRequest {
5
+ type: 'u-c';
6
+ table: string;
7
+ prop: string;
8
+ k: any;
9
+ u: Uint8Array;
10
+ i: number;
11
+ }
12
+ export interface YDocumentOpen {
13
+ type: 'doc-open';
14
+ table: string;
15
+ prop: string;
16
+ k: any;
17
+ serverRev?: string;
18
+ sv?: Uint8Array;
19
+ }
20
+ export interface YStateVector {
21
+ type: 'sv';
22
+ table: string;
23
+ prop: string;
24
+ k: any;
25
+ sv: Uint8Array;
26
+ }
27
+ export interface YDocumentClose {
28
+ type: 'doc-close';
29
+ table: string;
30
+ prop: string;
31
+ k: any;
32
+ }
33
+ export interface YUpdateFromClientAck {
34
+ type: 'u-ack';
35
+ table: string;
36
+ prop: string;
37
+ i: number;
38
+ }
39
+ export interface YUpdateFromClientReject {
40
+ type: 'u-reject';
41
+ table: string;
42
+ prop: string;
43
+ i: number;
44
+ }
45
+ export interface YUpdateFromServerMessage {
46
+ type: 'u-s';
47
+ table: string;
48
+ prop: string;
49
+ k: any;
50
+ u: Uint8Array;
51
+ }
52
+ export interface YAwarenessUpdate {
53
+ type: 'aware';
54
+ table: string;
55
+ prop: string;
56
+ k: any;
57
+ u: Uint8Array;
58
+ }
59
+ export interface YInSyncMessage {
60
+ type: 'in-sync';
61
+ table: string;
62
+ prop: string;
63
+ k: any;
64
+ }
65
+ //# sourceMappingURL=YMessage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"YMessage.d.ts","sourceRoot":"","sources":["../src/YMessage.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,QAAQ,GAAG,cAAc,GAAG,cAAc,CAAC;AACvD,MAAM,MAAM,cAAc,GAAG,wBAAwB,GAAG,YAAY,GAAG,aAAa,GAAG,gBAAgB,GAAE,cAAc,CAAC;AACxH,MAAM,MAAM,cAAc,GAAG,oBAAoB,GAAG,uBAAuB,GAAG,wBAAwB,GAAG,gBAAgB,GAAG,cAAc,CAAC;AAE3I,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,KAAK,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,EAAE,GAAG,CAAC;IACP,CAAC,EAAE,UAAU,CAAC;IACd,CAAC,EAAE,MAAM,CAAC;CACX;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,EAAE,GAAG,CAAC;IACP,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,EAAE,CAAC,EAAE,UAAU,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,EAAE,GAAG,CAAC;IACP,EAAE,EAAE,UAAU,CAAC;CAChB;AAGD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,EAAE,GAAG,CAAC;CACR;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,EAAE,MAAM,CAAC;CACX;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,EAAE,MAAM,CAAC;CACX;AAGD,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,KAAK,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,EAAE,GAAG,CAAC;IACP,CAAC,EAAE,UAAU,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,EAAE,GAAG,CAAC;IACP,CAAC,EAAE,UAAU,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,EAAE,GAAG,CAAC;CACR"}
@@ -0,0 +1,7 @@
1
+ export {};
2
+ /*export interface YDocumentClosed { // Probably not needed. We have an awareness update for that. Just we need to identify clientID.
3
+ type: 'doc-closed';
4
+ utbl: string;
5
+ k: any;
6
+ }
7
+ */
@@ -1,25 +1,10 @@
1
- import { __asyncValues } from "tslib";
2
1
  export async function asyncIterablePipeline(source, ...stages) {
3
- var _a, e_1, _b, _c;
4
2
  // Chain generators by sending outdata from one to another
5
3
  let result = source(); // Start with the source generator
6
4
  for (let i = 0; i < stages.length; i++) {
7
5
  result = stages[i](result); // Pass on the result to next generator
8
6
  }
9
- try {
10
- // Start running the machine. If the last stage is a sink, it will consume the data and never emit anything
11
- // to us here...
12
- for (var _d = true, result_1 = __asyncValues(result), result_1_1; result_1_1 = await result_1.next(), _a = result_1_1.done, !_a; _d = true) {
13
- _c = result_1_1.value;
14
- _d = false;
15
- const chunk = _c;
16
- }
17
- }
18
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
19
- finally {
20
- try {
21
- if (!_d && !_a && (_b = result_1.return)) await _b.call(result_1);
22
- }
23
- finally { if (e_1) throw e_1.error; }
24
- }
7
+ // Start running the machine. If the last stage is a sink, it will consume the data and never emit anything
8
+ // to us here...
9
+ for await (const chunk of result) { }
25
10
  }
@@ -1,2 +1,2 @@
1
- export declare function consumeChunkedBinaryStream(source: AsyncIterable<Uint8Array>): AsyncGenerator<Uint8Array, void, unknown>;
1
+ export declare function consumeChunkedBinaryStream(source: AsyncIterable<Uint8Array>): AsyncGenerator<Uint8Array<ArrayBuffer>, void, unknown>;
2
2
  //# sourceMappingURL=consumeChunkedBinaryStream.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"consumeChunkedBinaryStream.d.ts","sourceRoot":"","sources":["../../src/async-generators/consumeChunkedBinaryStream.ts"],"names":[],"mappings":"AAAA,wBAAuB,0BAA0B,CAC/C,MAAM,EAAE,aAAa,CAAC,UAAU,CAAC,6CAwElC"}
1
+ {"version":3,"file":"consumeChunkedBinaryStream.d.ts","sourceRoot":"","sources":["../../src/async-generators/consumeChunkedBinaryStream.ts"],"names":[],"mappings":"AAAA,wBAAuB,0BAA0B,CAC/C,MAAM,EAAE,aAAa,CAAC,UAAU,CAAC,0DAwElC"}
@@ -1,94 +1,78 @@
1
- import { __asyncGenerator, __asyncValues, __await } from "tslib";
2
- export function consumeChunkedBinaryStream(source) {
3
- return __asyncGenerator(this, arguments, function* consumeChunkedBinaryStream_1() {
4
- var _a, e_1, _b, _c;
5
- let state = 0;
6
- let sizeBuf = new Uint8Array(4);
7
- let sizeBufPos = 0;
8
- let bufs = [];
9
- let len = 0;
10
- try {
11
- for (var _d = true, source_1 = __asyncValues(source), source_1_1; source_1_1 = yield __await(source_1.next()), _a = source_1_1.done, !_a; _d = true) {
12
- _c = source_1_1.value;
13
- _d = false;
14
- const chunk = _c;
15
- const dw = new DataView(chunk.buffer, chunk.byteOffset, chunk.byteLength);
16
- let pos = 0;
17
- while (pos < chunk.byteLength) {
18
- switch (state) {
19
- case 0:
20
- // Beginning of a size header
21
- if (pos + 4 > chunk.byteLength) {
22
- for (const b of chunk.slice(pos)) {
23
- if (sizeBufPos === 4)
24
- break;
25
- sizeBuf[sizeBufPos++] = b;
26
- ++pos;
27
- }
28
- if (sizeBufPos < 4) {
29
- // Need more bytes in order to read length.
30
- // Will go out from while loop as well because pos is defenitely = chunk.byteLength here.
31
- break;
32
- }
33
- }
34
- else if (sizeBufPos > 0 && sizeBufPos < 4) {
35
- for (const b of chunk.slice(pos, pos + 4 - sizeBufPos)) {
36
- sizeBuf[sizeBufPos++] = b;
37
- ++pos;
38
- }
39
- }
40
- // Intentional fall-through...
41
- case 1:
42
- len =
43
- sizeBufPos === 4
44
- ? new DataView(sizeBuf.buffer, 0, 4).getUint32(0, false)
45
- : dw.getUint32(pos, false);
46
- if (sizeBufPos)
47
- sizeBufPos = 0; // in this case pos is already forwarded
48
- else
49
- pos += 4; // else pos is not yet forwarded - that's why we do it now
50
- // Intentional fall-through...
51
- case 2:
52
- // Eat the chunk
53
- if (pos >= chunk.byteLength) {
54
- state = 2;
1
+ export async function* consumeChunkedBinaryStream(source) {
2
+ let state = 0;
3
+ let sizeBuf = new Uint8Array(4);
4
+ let sizeBufPos = 0;
5
+ let bufs = [];
6
+ let len = 0;
7
+ for await (const chunk of source) {
8
+ const dw = new DataView(chunk.buffer, chunk.byteOffset, chunk.byteLength);
9
+ let pos = 0;
10
+ while (pos < chunk.byteLength) {
11
+ switch (state) {
12
+ case 0:
13
+ // Beginning of a size header
14
+ if (pos + 4 > chunk.byteLength) {
15
+ for (const b of chunk.slice(pos)) {
16
+ if (sizeBufPos === 4)
55
17
  break;
56
- }
57
- if (pos + len > chunk.byteLength) {
58
- bufs.push(chunk.slice(pos));
59
- len -= (chunk.byteLength - pos);
60
- state = 2;
61
- pos = chunk.byteLength; // will break while loop.
62
- }
63
- else {
64
- if (bufs.length > 0) {
65
- const concats = new Uint8Array(bufs.reduce((p, c) => p + c.byteLength, len));
66
- let p = 0;
67
- for (const buf of bufs) {
68
- concats.set(buf, p);
69
- p += buf.byteLength;
70
- }
71
- concats.set(chunk.slice(pos, pos + len), p);
72
- bufs = [];
73
- yield yield __await(concats);
74
- }
75
- else {
76
- yield yield __await(chunk.slice(pos, pos + len));
77
- }
78
- pos += len;
79
- state = 0;
80
- }
18
+ sizeBuf[sizeBufPos++] = b;
19
+ ++pos;
20
+ }
21
+ if (sizeBufPos < 4) {
22
+ // Need more bytes in order to read length.
23
+ // Will go out from while loop as well because pos is defenitely = chunk.byteLength here.
81
24
  break;
25
+ }
82
26
  }
83
- }
84
- }
85
- }
86
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
87
- finally {
88
- try {
89
- if (!_d && !_a && (_b = source_1.return)) yield __await(_b.call(source_1));
27
+ else if (sizeBufPos > 0 && sizeBufPos < 4) {
28
+ for (const b of chunk.slice(pos, pos + 4 - sizeBufPos)) {
29
+ sizeBuf[sizeBufPos++] = b;
30
+ ++pos;
31
+ }
32
+ }
33
+ // Intentional fall-through...
34
+ case 1:
35
+ len =
36
+ sizeBufPos === 4
37
+ ? new DataView(sizeBuf.buffer, 0, 4).getUint32(0, false)
38
+ : dw.getUint32(pos, false);
39
+ if (sizeBufPos)
40
+ sizeBufPos = 0; // in this case pos is already forwarded
41
+ else
42
+ pos += 4; // else pos is not yet forwarded - that's why we do it now
43
+ // Intentional fall-through...
44
+ case 2:
45
+ // Eat the chunk
46
+ if (pos >= chunk.byteLength) {
47
+ state = 2;
48
+ break;
49
+ }
50
+ if (pos + len > chunk.byteLength) {
51
+ bufs.push(chunk.slice(pos));
52
+ len -= (chunk.byteLength - pos);
53
+ state = 2;
54
+ pos = chunk.byteLength; // will break while loop.
55
+ }
56
+ else {
57
+ if (bufs.length > 0) {
58
+ const concats = new Uint8Array(bufs.reduce((p, c) => p + c.byteLength, len));
59
+ let p = 0;
60
+ for (const buf of bufs) {
61
+ concats.set(buf, p);
62
+ p += buf.byteLength;
63
+ }
64
+ concats.set(chunk.slice(pos, pos + len), p);
65
+ bufs = [];
66
+ yield concats;
67
+ }
68
+ else {
69
+ yield chunk.slice(pos, pos + len);
70
+ }
71
+ pos += len;
72
+ state = 0;
73
+ }
74
+ break;
90
75
  }
91
- finally { if (e_1) throw e_1.error; }
92
76
  }
93
- });
77
+ }
94
78
  }
@@ -1,4 +1,3 @@
1
- import { __asyncGenerator, __asyncValues, __await } from "tslib";
2
1
  import { consumeChunkedBinaryStream } from './consumeChunkedBinaryStream';
3
2
  import { asyncIterablePipeline } from './asyncIterablePipeline';
4
3
  const inputData = generateInputData(256, 4);
@@ -21,68 +20,49 @@ function generateInputData(chunkSize, numChunks = 4) {
21
20
  expect(ba[7]).toBe(3);
22
21
  return ba;
23
22
  }
24
- function generateChunk(chunkSizes) {
25
- return __asyncGenerator(this, arguments, function* generateChunk_1() {
26
- var _a, e_1, _b, _c;
27
- try {
28
- for (var _d = true, chunkSizes_1 = __asyncValues(chunkSizes), chunkSizes_1_1; chunkSizes_1_1 = yield __await(chunkSizes_1.next()), _a = chunkSizes_1_1.done, !_a; _d = true) {
29
- _c = chunkSizes_1_1.value;
30
- _d = false;
31
- const chunkSize = _c;
32
- for (let i = 0; i < inputData.length; i += chunkSize) {
33
- //console.log('Yielding chunk of size ' + (''+i)+':'+(i + chunkSize));
34
- yield yield __await(inputData.slice(i, i + chunkSize));
35
- }
36
- }
23
+ async function* generateChunk(chunkSizes) {
24
+ for await (const chunkSize of chunkSizes) {
25
+ for (let i = 0; i < inputData.length; i += chunkSize) {
26
+ //console.log('Yielding chunk of size ' + (''+i)+':'+(i + chunkSize));
27
+ yield inputData.slice(i, i + chunkSize);
37
28
  }
38
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
39
- finally {
40
- try {
41
- if (!_d && !_a && (_b = chunkSizes_1.return)) yield __await(_b.call(chunkSizes_1));
42
- }
43
- finally { if (e_1) throw e_1.error; }
44
- }
45
- });
29
+ }
46
30
  }
47
- function generateChunkSizes() {
48
- return __asyncGenerator(this, arguments, function* generateChunkSizes_1() {
49
- //console.log('yield 1024');
50
- yield yield __await(1040);
51
- //console.log('yield 512');
52
- yield yield __await(520);
53
- yield yield __await(260);
54
- yield yield __await(1);
55
- yield yield __await(259);
56
- yield yield __await(258);
57
- yield yield __await(257);
58
- yield yield __await(2);
59
- yield yield __await(3);
60
- });
31
+ async function* generateChunkSizes() {
32
+ //console.log('yield 1024');
33
+ yield 1040;
34
+ //console.log('yield 512');
35
+ yield 520;
36
+ yield 260;
37
+ yield 1;
38
+ yield 259;
39
+ yield 258;
40
+ yield 257;
41
+ yield 2;
42
+ yield 3;
61
43
  }
62
44
  test('test consumeChunkedBinaryStream', async () => {
63
- await asyncIterablePipeline(generateChunkSizes, generateChunk, consumeChunkedBinaryStream, function (source) {
64
- return __asyncGenerator(this, arguments, function* () {
65
- let itRes;
66
- for (let i = 0; i < 9; ++i) {
67
- itRes = yield __await(source.next());
68
- expect(itRes.done).toBe(false);
69
- expect(itRes.value.byteLength).toBe(256);
70
- expect(itRes.value).toEqual(inputData.slice(4, 260));
71
- itRes = yield __await(source.next());
72
- expect(itRes.done).toBe(false);
73
- expect(itRes.value.byteLength).toBe(256);
74
- expect(itRes.value).toEqual(inputData.slice(4, 260));
75
- itRes = yield __await(source.next());
76
- expect(itRes.done).toBe(false);
77
- expect(itRes.value.byteLength).toBe(256);
78
- expect(itRes.value).toEqual(inputData.slice(4, 260));
79
- itRes = yield __await(source.next());
80
- expect(itRes.done).toBe(false);
81
- expect(itRes.value.byteLength).toBe(256);
82
- expect(itRes.value).toEqual(inputData.slice(4, 260));
83
- }
84
- itRes = yield __await(source.next());
85
- expect(itRes.done).toBe(true);
86
- });
45
+ await asyncIterablePipeline(generateChunkSizes, generateChunk, consumeChunkedBinaryStream, async function* (source) {
46
+ let itRes;
47
+ for (let i = 0; i < 9; ++i) {
48
+ itRes = await source.next();
49
+ expect(itRes.done).toBe(false);
50
+ expect(itRes.value.byteLength).toBe(256);
51
+ expect(itRes.value).toEqual(inputData.slice(4, 260));
52
+ itRes = await source.next();
53
+ expect(itRes.done).toBe(false);
54
+ expect(itRes.value.byteLength).toBe(256);
55
+ expect(itRes.value).toEqual(inputData.slice(4, 260));
56
+ itRes = await source.next();
57
+ expect(itRes.done).toBe(false);
58
+ expect(itRes.value.byteLength).toBe(256);
59
+ expect(itRes.value).toEqual(inputData.slice(4, 260));
60
+ itRes = await source.next();
61
+ expect(itRes.done).toBe(false);
62
+ expect(itRes.value.byteLength).toBe(256);
63
+ expect(itRes.value).toEqual(inputData.slice(4, 260));
64
+ }
65
+ itRes = await source.next();
66
+ expect(itRes.done).toBe(true);
87
67
  });
88
68
  });
@@ -1,2 +1,2 @@
1
- export declare function getFetchResponseBodyGenerator(res: Response): () => AsyncGenerator<Uint8Array, void, unknown>;
1
+ export declare function getFetchResponseBodyGenerator(res: Response): () => AsyncGenerator<Uint8Array<ArrayBuffer>, void, unknown>;
2
2
  //# sourceMappingURL=getFetchResponseBodyGenerator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getFetchResponseBodyGenerator.d.ts","sourceRoot":"","sources":["../../src/async-generators/getFetchResponseBodyGenerator.ts"],"names":[],"mappings":"AACA,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,QAAQ,mDAe1D"}
1
+ {"version":3,"file":"getFetchResponseBodyGenerator.d.ts","sourceRoot":"","sources":["../../src/async-generators/getFetchResponseBodyGenerator.ts"],"names":[],"mappings":"AACA,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,QAAQ,gEAe1D"}
@@ -1,21 +1,18 @@
1
- import { __asyncGenerator, __await } from "tslib";
2
1
  export function getFetchResponseBodyGenerator(res) {
3
- return function () {
4
- return __asyncGenerator(this, arguments, function* () {
5
- if (!res.body)
6
- throw new Error("Response body is not readable");
7
- const reader = res.body.getReader();
8
- try {
9
- while (true) {
10
- const { done, value } = yield __await(reader.read());
11
- if (done)
12
- return yield __await(void 0);
13
- yield yield __await(value);
14
- }
2
+ return async function* () {
3
+ if (!res.body)
4
+ throw new Error("Response body is not readable");
5
+ const reader = res.body.getReader();
6
+ try {
7
+ while (true) {
8
+ const { done, value } = await reader.read();
9
+ if (done)
10
+ return;
11
+ yield value;
15
12
  }
16
- finally {
17
- reader.releaseLock();
18
- }
19
- });
13
+ }
14
+ finally {
15
+ reader.releaseLock();
16
+ }
20
17
  };
21
18
  }
@@ -9,5 +9,5 @@
9
9
  *
10
10
  * The source iterable
11
11
  */
12
- export declare function produceChunkedBinaryStream(source: AsyncIterable<Uint8Array>): AsyncGenerator<Uint8Array, void, unknown>;
12
+ export declare function produceChunkedBinaryStream(source: AsyncIterable<Uint8Array>): AsyncGenerator<Uint8Array<ArrayBuffer>, void, unknown>;
13
13
  //# sourceMappingURL=produceChunkedBinaryStream.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"produceChunkedBinaryStream.d.ts","sourceRoot":"","sources":["../../src/async-generators/produceChunkedBinaryStream.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,wBAAuB,0BAA0B,CAAC,MAAM,EAAE,aAAa,CAAC,UAAU,CAAC,6CA8BlF"}
1
+ {"version":3,"file":"produceChunkedBinaryStream.d.ts","sourceRoot":"","sources":["../../src/async-generators/produceChunkedBinaryStream.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,wBAAuB,0BAA0B,CAAC,MAAM,EAAE,aAAa,CAAC,UAAU,CAAC,0DA8BlF"}
@@ -1,4 +1,3 @@
1
- import { __asyncDelegator, __asyncGenerator, __asyncValues, __await } from "tslib";
2
1
  /** Used with pipeline to preserve yielded chunks before they are send to peer.
3
2
  * Peer can then decode these chunks using consumeChunkedBinaryStream.
4
3
  *
@@ -10,48 +9,33 @@ import { __asyncDelegator, __asyncGenerator, __asyncValues, __await } from "tsli
10
9
  *
11
10
  * The source iterable
12
11
  */
13
- export function produceChunkedBinaryStream(source) {
14
- return __asyncGenerator(this, arguments, function* produceChunkedBinaryStream_1() {
15
- var _a, e_1, _b, _c;
16
- const HIGH_WATER_MARK = 65535;
17
- let len = 0;
18
- let chunks = [];
19
- function* flush() {
20
- const chunkLength = chunks.reduce((a, b) => a + b.length, 0);
21
- if (chunkLength === 0)
22
- return;
23
- const flushChunkBuffer = new ArrayBuffer(4 + chunkLength);
24
- const flushChunkArray = new Uint8Array(flushChunkBuffer);
25
- const dw = new DataView(flushChunkBuffer);
26
- dw.setUint32(0, chunkLength, false);
27
- let pos = 4;
28
- for (const chunk of chunks) {
29
- flushChunkArray.set(chunk, pos);
30
- pos += chunk.length;
31
- }
32
- len = 0;
33
- chunks = [];
34
- yield flushChunkArray;
12
+ export async function* produceChunkedBinaryStream(source) {
13
+ const HIGH_WATER_MARK = 65535;
14
+ let len = 0;
15
+ let chunks = [];
16
+ function* flush() {
17
+ const chunkLength = chunks.reduce((a, b) => a + b.length, 0);
18
+ if (chunkLength === 0)
19
+ return;
20
+ const flushChunkBuffer = new ArrayBuffer(4 + chunkLength);
21
+ const flushChunkArray = new Uint8Array(flushChunkBuffer);
22
+ const dw = new DataView(flushChunkBuffer);
23
+ dw.setUint32(0, chunkLength, false);
24
+ let pos = 4;
25
+ for (const chunk of chunks) {
26
+ flushChunkArray.set(chunk, pos);
27
+ pos += chunk.length;
35
28
  }
36
- try {
37
- for (var _d = true, source_1 = __asyncValues(source), source_1_1; source_1_1 = yield __await(source_1.next()), _a = source_1_1.done, !_a; _d = true) {
38
- _c = source_1_1.value;
39
- _d = false;
40
- const chunk = _c;
41
- chunks.push(chunk);
42
- len += chunk.length;
43
- if (len > HIGH_WATER_MARK) {
44
- yield __await(yield* __asyncDelegator(__asyncValues(flush())));
45
- }
46
- }
29
+ len = 0;
30
+ chunks = [];
31
+ yield flushChunkArray;
32
+ }
33
+ for await (const chunk of source) {
34
+ chunks.push(chunk);
35
+ len += chunk.length;
36
+ if (len > HIGH_WATER_MARK) {
37
+ yield* flush();
47
38
  }
48
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
49
- finally {
50
- try {
51
- if (!_d && !_a && (_b = source_1.return)) yield __await(_b.call(source_1));
52
- }
53
- finally { if (e_1) throw e_1.error; }
54
- }
55
- yield __await(yield* __asyncDelegator(__asyncValues(flush())));
56
- });
39
+ }
40
+ yield* flush();
57
41
  }
@@ -2,13 +2,12 @@ import { setByKeyPath } from '../utils.js';
2
2
  export function subtractChanges(target, // Server change set
3
3
  changesToSubtract // additional mutations on client during syncWithServer()
4
4
  ) {
5
- var _a, _b, _c;
6
5
  for (const [table, mutationSet] of Object.entries(changesToSubtract)) {
7
6
  for (const [key, mut] of Object.entries(mutationSet)) {
8
7
  switch (mut.type) {
9
8
  case 'ups':
10
9
  {
11
- const targetMut = (_a = target[table]) === null || _a === void 0 ? void 0 : _a[key];
10
+ const targetMut = target[table]?.[key];
12
11
  if (targetMut) {
13
12
  switch (targetMut.type) {
14
13
  case 'ups':
@@ -26,10 +25,10 @@ changesToSubtract // additional mutations on client during syncWithServer()
26
25
  }
27
26
  break;
28
27
  case 'del':
29
- (_b = target[table]) === null || _b === void 0 ? true : delete _b[key];
28
+ delete target[table]?.[key];
30
29
  break;
31
30
  case 'upd': {
32
- const targetMut = (_c = target[table]) === null || _c === void 0 ? void 0 : _c[key];
31
+ const targetMut = target[table]?.[key];
33
32
  if (targetMut) {
34
33
  switch (targetMut.type) {
35
34
  case 'ups':
@@ -1 +1 @@
1
- {"version":3,"file":"toDBOperationSet.d.ts","sourceRoot":"","sources":["../../src/change-processing/toDBOperationSet.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,EAAE,IAAI,SAAG,GAAG,eAAe,CAAC,MAAM,CAAC,CA6D1F"}
1
+ {"version":3,"file":"toDBOperationSet.d.ts","sourceRoot":"","sources":["../../src/change-processing/toDBOperationSet.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CA0DhG"}