@powersync/service-core-tests 0.0.0-dev-20260225160713 → 0.0.0-dev-20260511080634
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/CHANGELOG.md +95 -3
- package/dist/test-utils/MetricsHelper.js +1 -1
- package/dist/test-utils/MetricsHelper.js.map +1 -1
- package/dist/test-utils/StorageDataHelpers.d.ts +8 -0
- package/dist/test-utils/StorageDataHelpers.js +33 -0
- package/dist/test-utils/StorageDataHelpers.js.map +1 -0
- package/dist/test-utils/general-utils.d.ts +22 -3
- package/dist/test-utils/general-utils.js +56 -3
- package/dist/test-utils/general-utils.js.map +1 -1
- package/dist/test-utils/stream_utils.js +2 -2
- package/dist/test-utils/stream_utils.js.map +1 -1
- package/dist/test-utils/test-utils-index.d.ts +1 -0
- package/dist/test-utils/test-utils-index.js +1 -0
- package/dist/test-utils/test-utils-index.js.map +1 -1
- package/dist/tests/register-compacting-tests.d.ts +1 -1
- package/dist/tests/register-compacting-tests.js +514 -587
- package/dist/tests/register-compacting-tests.js.map +1 -1
- package/dist/tests/register-data-storage-checkpoint-tests.d.ts +1 -1
- package/dist/tests/register-data-storage-checkpoint-tests.js +200 -301
- package/dist/tests/register-data-storage-checkpoint-tests.js.map +1 -1
- package/dist/tests/register-data-storage-data-tests.d.ts +2 -2
- package/dist/tests/register-data-storage-data-tests.js +1220 -1041
- package/dist/tests/register-data-storage-data-tests.js.map +1 -1
- package/dist/tests/register-data-storage-parameter-tests.d.ts +1 -1
- package/dist/tests/register-data-storage-parameter-tests.js +681 -632
- package/dist/tests/register-data-storage-parameter-tests.js.map +1 -1
- package/dist/tests/register-migration-tests.js +63 -139
- package/dist/tests/register-migration-tests.js.map +1 -1
- package/dist/tests/register-parameter-compacting-tests.d.ts +1 -1
- package/dist/tests/register-parameter-compacting-tests.js +121 -201
- package/dist/tests/register-parameter-compacting-tests.js.map +1 -1
- package/dist/tests/register-sync-tests.d.ts +2 -1
- package/dist/tests/register-sync-tests.js +974 -1136
- package/dist/tests/register-sync-tests.js.map +1 -1
- package/dist/tests/tests-index.d.ts +4 -4
- package/dist/tests/tests-index.js +4 -4
- package/dist/tests/tests-index.js.map +1 -1
- package/dist/tests/util.d.ts +5 -4
- package/dist/tests/util.js +27 -12
- package/dist/tests/util.js.map +1 -1
- package/package.json +6 -6
- package/src/test-utils/MetricsHelper.ts +1 -1
- package/src/test-utils/StorageDataHelpers.ts +44 -0
- package/src/test-utils/general-utils.ts +81 -4
- package/src/test-utils/stream_utils.ts +2 -2
- package/src/test-utils/test-utils-index.ts +1 -0
- package/src/tests/register-compacting-tests.ts +376 -322
- package/src/tests/register-data-storage-checkpoint-tests.ts +85 -53
- package/src/tests/register-data-storage-data-tests.ts +1076 -563
- package/src/tests/register-data-storage-parameter-tests.ts +631 -327
- package/src/tests/register-parameter-compacting-tests.ts +92 -96
- package/src/tests/register-sync-tests.ts +463 -379
- package/src/tests/tests-index.ts +4 -4
- package/src/tests/util.ts +46 -17
- package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,98 @@
|
|
|
1
1
|
# @powersync/service-core-tests
|
|
2
2
|
|
|
3
|
-
## 0.0.0-dev-
|
|
3
|
+
## 0.0.0-dev-20260511080634
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- cdb8993: Add `config.storage_version` configuration option.
|
|
8
|
+
- 040fffd: Improve consistency of logs and error messages
|
|
9
|
+
- Updated dependencies [f20f318]
|
|
10
|
+
- Updated dependencies [9add445]
|
|
11
|
+
- Updated dependencies [17503d1]
|
|
12
|
+
- Updated dependencies [01c29c3]
|
|
13
|
+
- Updated dependencies [cdb8993]
|
|
14
|
+
- Updated dependencies [7c7b525]
|
|
15
|
+
- Updated dependencies [824e229]
|
|
16
|
+
- Updated dependencies [040fffd]
|
|
17
|
+
- Updated dependencies [9e474d3]
|
|
18
|
+
- Updated dependencies [423822c]
|
|
19
|
+
- Updated dependencies [2b19fc3]
|
|
20
|
+
- @powersync/service-core@0.0.0-dev-20260511080634
|
|
21
|
+
- @powersync/service-sync-rules@0.0.0-dev-20260511080634
|
|
22
|
+
- @powersync/service-jsonbig@0.0.0-dev-20260511080634
|
|
23
|
+
|
|
24
|
+
## 0.15.4
|
|
25
|
+
|
|
26
|
+
### Patch Changes
|
|
27
|
+
|
|
28
|
+
- Updated dependencies [41875f7]
|
|
29
|
+
- Updated dependencies [2b72c2a]
|
|
30
|
+
- Updated dependencies [4611a49]
|
|
31
|
+
- Updated dependencies [b6a7896]
|
|
32
|
+
- Updated dependencies [2b72c2a]
|
|
33
|
+
- Updated dependencies [756746c]
|
|
34
|
+
- @powersync/service-core@1.20.5
|
|
35
|
+
- @powersync/service-sync-rules@0.35.0
|
|
36
|
+
|
|
37
|
+
## 0.15.3
|
|
38
|
+
|
|
39
|
+
### Patch Changes
|
|
40
|
+
|
|
41
|
+
- df451c6: Node 24.14.0 and other dependency upgrades.
|
|
42
|
+
- Updated dependencies [df451c6]
|
|
43
|
+
- Updated dependencies [dea1e00]
|
|
44
|
+
- Updated dependencies [ada86f2]
|
|
45
|
+
- Updated dependencies [11b4deb]
|
|
46
|
+
- @powersync/service-core@1.20.4
|
|
47
|
+
- @powersync/service-sync-rules@0.34.1
|
|
48
|
+
|
|
49
|
+
## 0.15.2
|
|
50
|
+
|
|
51
|
+
### Patch Changes
|
|
52
|
+
|
|
53
|
+
- @powersync/service-core@1.20.3
|
|
54
|
+
|
|
55
|
+
## 0.15.1
|
|
56
|
+
|
|
57
|
+
### Patch Changes
|
|
58
|
+
|
|
59
|
+
- 8d5d7ee: Added schema change detection and handling for the SQL Server adapter
|
|
60
|
+
- 4c92c24: [Internal] Add a createWriter() API to replace startBatch().
|
|
61
|
+
- Updated dependencies [224c35e]
|
|
62
|
+
- Updated dependencies [acf1486]
|
|
63
|
+
- Updated dependencies [391c5ef]
|
|
64
|
+
- Updated dependencies [7ee87d4]
|
|
65
|
+
- Updated dependencies [99de8be]
|
|
66
|
+
- Updated dependencies [9daf965]
|
|
67
|
+
- Updated dependencies [4c92c24]
|
|
68
|
+
- Updated dependencies [3d230c2]
|
|
69
|
+
- Updated dependencies [206633f]
|
|
70
|
+
- Updated dependencies [3a0627e]
|
|
71
|
+
- Updated dependencies [275fd5f]
|
|
72
|
+
- Updated dependencies [7ce1b8e]
|
|
73
|
+
- @powersync/service-sync-rules@0.34.0
|
|
74
|
+
- @powersync/service-core@1.20.2
|
|
75
|
+
|
|
76
|
+
## 0.15.0
|
|
77
|
+
|
|
78
|
+
### Minor Changes
|
|
79
|
+
|
|
80
|
+
- 8c5bb3b: [Internal] Allow using multiple BucketStorageBatch instances concurrently.
|
|
81
|
+
- c15efc7: [Internal] Track and propagate source on buckets and parameter indexes to storage APIs.
|
|
82
|
+
|
|
83
|
+
### Patch Changes
|
|
84
|
+
|
|
85
|
+
- 642cb11: [Postgres Storage] Fix concurrency issue in compacting, leading to "[PSYNC_S1101] Unexpected PUT operation".
|
|
86
|
+
- Updated dependencies [8c5bb3b]
|
|
87
|
+
- Updated dependencies [dcddcf1]
|
|
88
|
+
- Updated dependencies [c15efc7]
|
|
89
|
+
- Updated dependencies [e7152ce]
|
|
90
|
+
- Updated dependencies [e150c5c]
|
|
91
|
+
- Updated dependencies [b410924]
|
|
92
|
+
- @powersync/service-core@1.20.1
|
|
93
|
+
- @powersync/service-sync-rules@0.33.0
|
|
94
|
+
|
|
95
|
+
## 0.14.0
|
|
4
96
|
|
|
5
97
|
### Minor Changes
|
|
6
98
|
|
|
@@ -21,8 +113,8 @@
|
|
|
21
113
|
- Updated dependencies [83989b2]
|
|
22
114
|
- Updated dependencies [79a9729]
|
|
23
115
|
- Updated dependencies [5edd95f]
|
|
24
|
-
- @powersync/service-core@
|
|
25
|
-
- @powersync/service-sync-rules@0.
|
|
116
|
+
- @powersync/service-core@1.20.0
|
|
117
|
+
- @powersync/service-sync-rules@0.32.0
|
|
26
118
|
|
|
27
119
|
## 0.13.2
|
|
28
120
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { MetricsEngine, OpenTelemetryMetricsFactory } from '@powersync/service-core';
|
|
2
1
|
import { AggregationTemporality, InMemoryMetricExporter, MeterProvider, PeriodicExportingMetricReader } from '@opentelemetry/sdk-metrics';
|
|
2
|
+
import { MetricsEngine, OpenTelemetryMetricsFactory } from '@powersync/service-core';
|
|
3
3
|
export class MetricsHelper {
|
|
4
4
|
factory;
|
|
5
5
|
metricsEngine;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetricsHelper.js","sourceRoot":"","sources":["../../src/test-utils/MetricsHelper.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"MetricsHelper.js","sourceRoot":"","sources":["../../src/test-utils/MetricsHelper.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,aAAa,EACb,6BAA6B,EAC9B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,aAAa,EAAkB,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAErG,MAAM,OAAO,aAAa;IACjB,OAAO,CAAiB;IACxB,aAAa,CAAgB;IAC5B,aAAa,CAAgB;IAC7B,QAAQ,CAAyB;IACjC,YAAY,CAAgC;IAEpD;QACE,IAAI,CAAC,QAAQ,GAAG,IAAI,sBAAsB,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;QAE9E,IAAI,CAAC,YAAY,GAAG,IAAI,6BAA6B,CAAC;YACpD,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,oBAAoB,EAAE,GAAG,CAAC,2BAA2B;SACtD,CAAC,CAAC;QACH,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC;YACrC,OAAO,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC;SAC7B,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;QAC7D,IAAI,CAAC,OAAO,GAAG,IAAI,2BAA2B,CAAC,KAAK,CAAC,CAAC;QACtD,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC;YACrC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,yBAAyB,EAAE,IAAI;SAChC,CAAC,CAAC;IACL,CAAC;IAED,YAAY;QACV,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,sBAAsB,CAAC,IAAY;QACvC,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC3C,yCAAyC;QACzC,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;QACvE,MAAM,MAAM,GAAG,MAAM,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;QACxE,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CACb,sBAAsB,IAAI,cAAc,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CACnG,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC9D,OAAO,KAAK,EAAE,KAAe,CAAC;IAChC,CAAC;CACF;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,aAAa,EAAE,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { InternalOpId, OplogEntry, PersistedSyncRules, PersistedSyncRulesContent, SyncRulesBucketStorage } from '@powersync/service-core';
|
|
2
|
+
export declare class StorageDataHelpers {
|
|
3
|
+
storage: SyncRulesBucketStorage;
|
|
4
|
+
syncRules: PersistedSyncRulesContent | PersistedSyncRules;
|
|
5
|
+
constructor(storage: SyncRulesBucketStorage, syncRules: PersistedSyncRulesContent | PersistedSyncRules);
|
|
6
|
+
getBucketData(bucket: string, checkpoint: InternalOpId, start?: InternalOpId | string | undefined): Promise<OplogEntry<import("@powersync/service-core").StoredOplogData>[]>;
|
|
7
|
+
getBucketsDataBatch(buckets: Record<string, InternalOpId>, checkpoint: InternalOpId): Promise<import("@powersync/service-core").SyncBucketDataChunk[]>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { bucketRequest } from './general-utils.js';
|
|
2
|
+
import { fromAsync } from './stream_utils.js';
|
|
3
|
+
export class StorageDataHelpers {
|
|
4
|
+
storage;
|
|
5
|
+
syncRules;
|
|
6
|
+
constructor(storage, syncRules) {
|
|
7
|
+
this.storage = storage;
|
|
8
|
+
this.syncRules = syncRules;
|
|
9
|
+
}
|
|
10
|
+
async getBucketData(bucket, checkpoint, start) {
|
|
11
|
+
start ??= 0n;
|
|
12
|
+
if (typeof start == 'string') {
|
|
13
|
+
start = BigInt(start);
|
|
14
|
+
}
|
|
15
|
+
let map = [bucketRequest(this.syncRules, bucket, start)];
|
|
16
|
+
let data = [];
|
|
17
|
+
while (true) {
|
|
18
|
+
const batch = this.storage.getBucketDataBatch(checkpoint, map);
|
|
19
|
+
const batches = await fromAsync(batch);
|
|
20
|
+
data = data.concat(batches[0]?.chunkData.data ?? []);
|
|
21
|
+
if (batches.length == 0 || !batches[0].chunkData.has_more) {
|
|
22
|
+
break;
|
|
23
|
+
}
|
|
24
|
+
map = [bucketRequest(this.syncRules, bucket, BigInt(batches[0].chunkData.next_after))];
|
|
25
|
+
}
|
|
26
|
+
return data;
|
|
27
|
+
}
|
|
28
|
+
async getBucketsDataBatch(buckets, checkpoint) {
|
|
29
|
+
const map = Object.entries(buckets).map(([bucket, start]) => bucketRequest(this.syncRules, bucket, start));
|
|
30
|
+
return fromAsync(this.storage.getBucketDataBatch(checkpoint, map));
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=StorageDataHelpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StorageDataHelpers.js","sourceRoot":"","sources":["../../src/test-utils/StorageDataHelpers.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,MAAM,OAAO,kBAAkB;IAC7B,OAAO,CAAyB;IAChC,SAAS,CAAiD;IAE1D,YAAY,OAA+B,EAAE,SAAyD;QACpG,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAAc,EAAE,UAAwB,EAAE,KAAyC;QACrG,KAAK,KAAK,EAAE,CAAC;QACb,IAAI,OAAO,KAAK,IAAI,QAAQ,EAAE,CAAC;YAC7B,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;QACD,IAAI,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;QACzD,IAAI,IAAI,GAAiB,EAAE,CAAC;QAC5B,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,KAAK,GAAG,IAAI,CAAC,OAAQ,CAAC,kBAAkB,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;YAEhE,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC;YACvC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;YACrD,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;gBAC3D,MAAM;YACR,CAAC;YACD,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC1F,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,OAAqC,EAAE,UAAwB;QACvF,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;QAC3G,OAAO,SAAS,CAAC,IAAI,CAAC,OAAQ,CAAC,kBAAkB,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC;IACtE,CAAC;CACF"}
|
|
@@ -1,16 +1,31 @@
|
|
|
1
|
-
import { storage, utils } from '@powersync/service-core';
|
|
1
|
+
import { BucketDataRequest, InternalOpId, storage, utils } from '@powersync/service-core';
|
|
2
2
|
import { GetQuerierOptions, RequestParameters } from '@powersync/service-sync-rules';
|
|
3
3
|
import * as bson from 'bson';
|
|
4
4
|
export declare const ZERO_LSN = "0/0";
|
|
5
5
|
export declare const PARSE_OPTIONS: storage.ParseSyncRulesOptions;
|
|
6
|
-
export declare const BATCH_OPTIONS: storage.
|
|
7
|
-
export declare function makeTestTable(name: string, replicaIdColumns?: string[] | undefined
|
|
6
|
+
export declare const BATCH_OPTIONS: storage.CreateWriterOptions;
|
|
7
|
+
export declare function makeTestTable(name: string, replicaIdColumns?: string[] | undefined, options?: {
|
|
8
|
+
tableIdStrings: boolean;
|
|
9
|
+
}): storage.SourceTable;
|
|
10
|
+
/**
|
|
11
|
+
* With incremental reprocessing, we need actual test tables, resolved via the writer.
|
|
12
|
+
*
|
|
13
|
+
* This prepares for it.
|
|
14
|
+
*/
|
|
15
|
+
export declare function resolveTestTable(_writer: storage.BucketStorageBatch, name: string, replicaIdColumns: string[] | undefined, options: {
|
|
16
|
+
tableIdStrings: boolean;
|
|
17
|
+
}, idIndex?: number): Promise<storage.SourceTable>;
|
|
8
18
|
export declare function getBatchData(batch: utils.SyncBucketData[] | storage.SyncBucketDataChunk[] | storage.SyncBucketDataChunk): {
|
|
9
19
|
op_id: string;
|
|
10
20
|
op: "PUT" | "REMOVE" | "MOVE" | "CLEAR";
|
|
11
21
|
object_id: string | undefined;
|
|
12
22
|
checksum: number | bigint;
|
|
13
23
|
}[];
|
|
24
|
+
/**
|
|
25
|
+
* Bucket names no longer purely depend on the sync config.
|
|
26
|
+
* This converts a bucket name like "global[]" into the actual bucket name, for use in tests.
|
|
27
|
+
*/
|
|
28
|
+
export declare function bucketRequest(syncRules: storage.PersistedSyncRulesContent | storage.PersistedSyncRules, bucket: string, start?: InternalOpId | string | number): BucketDataRequest;
|
|
14
29
|
export declare function getBatchMeta(batch: utils.SyncBucketData[] | storage.SyncBucketDataChunk[] | storage.SyncBucketDataChunk): {
|
|
15
30
|
has_more: boolean;
|
|
16
31
|
after: string;
|
|
@@ -21,3 +36,7 @@ export declare function getBatchMeta(batch: utils.SyncBucketData[] | storage.Syn
|
|
|
21
36
|
*/
|
|
22
37
|
export declare function rid(id: string): bson.UUID;
|
|
23
38
|
export declare function querierOptions(globalParameters: RequestParameters): GetQuerierOptions;
|
|
39
|
+
export declare function requestParameters(jwtPayload: Record<string, any>, clientParameters?: Record<string, any>): RequestParameters;
|
|
40
|
+
export declare function removeSource<T extends {
|
|
41
|
+
source?: any;
|
|
42
|
+
}>(obj: T): Omit<T, 'source'>;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { storage, utils } from '@powersync/service-core';
|
|
1
|
+
import { JwtPayload, storage, utils } from '@powersync/service-core';
|
|
2
|
+
import { RequestParameters } from '@powersync/service-sync-rules';
|
|
2
3
|
import * as bson from 'bson';
|
|
3
4
|
export const ZERO_LSN = '0/0';
|
|
4
5
|
export const PARSE_OPTIONS = {
|
|
@@ -9,9 +10,30 @@ export const BATCH_OPTIONS = {
|
|
|
9
10
|
zeroLSN: ZERO_LSN,
|
|
10
11
|
storeCurrentData: true
|
|
11
12
|
};
|
|
12
|
-
export function makeTestTable(name, replicaIdColumns) {
|
|
13
|
+
export function makeTestTable(name, replicaIdColumns, options) {
|
|
13
14
|
const relId = utils.hashData('table', name, (replicaIdColumns ?? ['id']).join(','));
|
|
14
|
-
const id = new bson.ObjectId('6544e3899293153fa7b38331');
|
|
15
|
+
const id = options?.tableIdStrings == false ? new bson.ObjectId('6544e3899293153fa7b38331') : '6544e3899293153fa7b38331';
|
|
16
|
+
return new storage.SourceTable({
|
|
17
|
+
id: id,
|
|
18
|
+
connectionTag: storage.SourceTable.DEFAULT_TAG,
|
|
19
|
+
objectId: relId,
|
|
20
|
+
schema: 'public',
|
|
21
|
+
name: name,
|
|
22
|
+
replicaIdColumns: (replicaIdColumns ?? ['id']).map((column) => ({ name: column, type: 'VARCHAR', typeId: 25 })),
|
|
23
|
+
snapshotComplete: true
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* With incremental reprocessing, we need actual test tables, resolved via the writer.
|
|
28
|
+
*
|
|
29
|
+
* This prepares for it.
|
|
30
|
+
*/
|
|
31
|
+
export async function resolveTestTable(_writer, name, replicaIdColumns, options, idIndex = 1) {
|
|
32
|
+
const relId = utils.hashData('table', name, (replicaIdColumns ?? ['id']).join(','));
|
|
33
|
+
// Generate unique ids per test table (if idIndex is specified), without completely
|
|
34
|
+
// breaking all the existing tests.
|
|
35
|
+
const idString = '6544e3899293153fa7b383' + (30 + idIndex).toString().padStart(2, '0');
|
|
36
|
+
const id = options.tableIdStrings == false ? new bson.ObjectId(idString) : idString;
|
|
15
37
|
return new storage.SourceTable({
|
|
16
38
|
id: id,
|
|
17
39
|
connectionTag: storage.SourceTable.DEFAULT_TAG,
|
|
@@ -36,6 +58,30 @@ export function getBatchData(batch) {
|
|
|
36
58
|
};
|
|
37
59
|
});
|
|
38
60
|
}
|
|
61
|
+
function isParsedSyncRules(syncRules) {
|
|
62
|
+
return syncRules.sync_rules !== undefined;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Bucket names no longer purely depend on the sync config.
|
|
66
|
+
* This converts a bucket name like "global[]" into the actual bucket name, for use in tests.
|
|
67
|
+
*/
|
|
68
|
+
export function bucketRequest(syncRules, bucket, start) {
|
|
69
|
+
const parsed = isParsedSyncRules(syncRules) ? syncRules : syncRules.parsed(PARSE_OPTIONS);
|
|
70
|
+
const hydrationState = parsed.hydrationState;
|
|
71
|
+
const parameterStart = bucket.indexOf('[');
|
|
72
|
+
const definitionName = bucket.substring(0, parameterStart);
|
|
73
|
+
const parameters = bucket.substring(parameterStart);
|
|
74
|
+
const source = parsed.sync_rules.config.bucketDataSources.find((b) => b.uniqueName === definitionName);
|
|
75
|
+
if (source == null) {
|
|
76
|
+
throw new Error(`Failed to find global bucket ${bucket}`);
|
|
77
|
+
}
|
|
78
|
+
const bucketName = hydrationState.getBucketSourceScope(source).bucketPrefix + parameters;
|
|
79
|
+
return {
|
|
80
|
+
bucket: bucketName,
|
|
81
|
+
start: BigInt(start ?? 0n),
|
|
82
|
+
source: source
|
|
83
|
+
};
|
|
84
|
+
}
|
|
39
85
|
export function getBatchMeta(batch) {
|
|
40
86
|
const first = getFirst(batch);
|
|
41
87
|
if (first == null) {
|
|
@@ -75,4 +121,11 @@ export function querierOptions(globalParameters) {
|
|
|
75
121
|
streams: {}
|
|
76
122
|
};
|
|
77
123
|
}
|
|
124
|
+
export function requestParameters(jwtPayload, clientParameters) {
|
|
125
|
+
return new RequestParameters(new JwtPayload(jwtPayload), clientParameters ?? {});
|
|
126
|
+
}
|
|
127
|
+
export function removeSource(obj) {
|
|
128
|
+
const { source, ...rest } = obj;
|
|
129
|
+
return rest;
|
|
130
|
+
}
|
|
78
131
|
//# sourceMappingURL=general-utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"general-utils.js","sourceRoot":"","sources":["../../src/test-utils/general-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"general-utils.js","sourceRoot":"","sources":["../../src/test-utils/general-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ export function putOp(table, data) {
|
|
|
3
3
|
return {
|
|
4
4
|
op: 'PUT',
|
|
5
5
|
object_type: table,
|
|
6
|
-
object_id: data.id,
|
|
6
|
+
object_id: String(data.id), // Object ids are always converted to strings
|
|
7
7
|
data: JSONBig.stringify(data)
|
|
8
8
|
};
|
|
9
9
|
}
|
|
@@ -11,7 +11,7 @@ export function removeOp(table, id) {
|
|
|
11
11
|
return {
|
|
12
12
|
op: 'REMOVE',
|
|
13
13
|
object_type: table,
|
|
14
|
-
object_id: id
|
|
14
|
+
object_id: String(id)
|
|
15
15
|
};
|
|
16
16
|
}
|
|
17
17
|
export function compareIds(a, b) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream_utils.js","sourceRoot":"","sources":["../../src/test-utils/stream_utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAErD,MAAM,UAAU,KAAK,CAAC,KAAa,EAAE,IAAyB;IAC5D,OAAO;QACL,EAAE,EAAE,KAAK;QACT,WAAW,EAAE,KAAK;QAClB,SAAS,EAAE,IAAI,CAAC,EAAE;
|
|
1
|
+
{"version":3,"file":"stream_utils.js","sourceRoot":"","sources":["../../src/test-utils/stream_utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAErD,MAAM,UAAU,KAAK,CAAC,KAAa,EAAE,IAAyB;IAC5D,OAAO;QACL,EAAE,EAAE,KAAK;QACT,WAAW,EAAE,KAAK;QAClB,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,6CAA6C;QACzE,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC;KAC9B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAa,EAAE,EAAU;IAChD,OAAO;QACL,EAAE,EAAE,QAAQ;QACZ,WAAW,EAAE,KAAK;QAClB,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC;KACtB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,CAAmB,EAAE,CAAmB;IACjE,OAAO,CAAC,CAAC,SAAU,CAAC,aAAa,CAAC,CAAC,CAAC,SAAU,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAI,MAAsC;IAC1E,MAAM,KAAK,GAAQ,EAAE,CAAC;IACtB,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAI,MAAsC;IACvE,MAAM,KAAK,GAAQ,EAAE,CAAC;IACtB,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-utils-index.js","sourceRoot":"","sources":["../../src/test-utils/test-utils-index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"test-utils-index.js","sourceRoot":"","sources":["../../src/test-utils/test-utils-index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { storage } from '@powersync/service-core';
|
|
2
|
-
export declare function registerCompactTests(
|
|
2
|
+
export declare function registerCompactTests(config: storage.TestStorageConfig): void;
|