Skip to content

Commit 7f9bb19

Browse files
authored
Merge pull request #195 from powersync-ja/feat/es2024
Upgrade typescript and target ES version
2 parents e26e434 + 9a9e668 commit 7f9bb19

File tree

13 files changed

+147
-71
lines changed

13 files changed

+147
-71
lines changed

.changeset/twenty-jeans-marry.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
'@powersync/service-module-postgres-storage': minor
3+
'@powersync/service-core': minor
4+
---
5+
6+
Target Node.JS version 22, ES2024

.nvmrc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
v20.12.2
1+
v22.13.1

modules/module-postgres-storage/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,6 @@
4545
},
4646
"devDependencies": {
4747
"@types/uuid": "^9.0.4",
48-
"typescript": "^5.2.2"
48+
"typescript": "^5.7.3"
4949
}
5050
}

modules/module-postgres-storage/src/storage/batch/PostgresBucketBatch.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -640,8 +640,8 @@ export class PostgresBucketBatch
640640

641641
let existingBuckets: CurrentBucket[] = [];
642642
let newBuckets: CurrentBucket[] = [];
643-
let existingLookups: Buffer[] = [];
644-
let newLookups: Buffer[] = [];
643+
let existingLookups: Buffer<ArrayBuffer>[] = [];
644+
let newLookups: Buffer<ArrayBuffer>[] = [];
645645

646646
if (this.options.skip_existing_rows) {
647647
if (record.tag == storage.SaveOperationTag.INSERT) {
@@ -695,7 +695,7 @@ export class PostgresBucketBatch
695695
}
696696
}
697697

698-
let afterData: Buffer | undefined;
698+
let afterData: Buffer<ArrayBuffer> | undefined;
699699
if (afterId != null && !this.options.store_current_data) {
700700
afterData = storage.serializeBson({});
701701
} else if (afterId != null) {

modules/module-postgres-storage/tsconfig.json

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@
55
"declarationDir": "dist/@types",
66
"tsBuildInfoFile": "dist/.tsbuildinfo",
77
"rootDir": "src",
8-
"target": "ES2022",
9-
"lib": ["ES2022", "esnext.disposable"],
108
"skipLibCheck": true
119
},
1210
"include": ["src"],

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
},
2323
"devDependencies": {
2424
"@changesets/cli": "^2.27.8",
25-
"@types/node": "^22.5.5",
25+
"@types/node": "^22.13.1",
2626
"async": "^3.2.4",
2727
"bson": "^6.8.0",
2828
"concurrently": "^8.2.2",
@@ -36,7 +36,7 @@
3636
"semver": "^7.5.4",
3737
"tsc-watch": "^6.2.0",
3838
"ts-node-dev": "^2.0.0",
39-
"typescript": "^5.6.2",
39+
"typescript": "^5.7.3",
4040
"vite-tsconfig-paths": "^4.3.2",
4141
"vitest": "^2.1.1",
4242
"ws": "^8.2.3"

packages/service-core-tests/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,6 @@
2323
"vitest": "^2.1.1"
2424
},
2525
"devDependencies": {
26-
"typescript": "^5.6.2"
26+
"typescript": "^5.7.3"
2727
}
2828
}

packages/service-core/src/storage/bson.ts

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ import * as bson from 'bson';
33
import { SqliteJsonValue } from '@powersync/service-sync-rules';
44
import { ReplicaId } from './BucketStorage.js';
55

6+
type NodeBuffer = Buffer<ArrayBuffer>;
7+
68
export const BSON_DESERIALIZE_OPTIONS: bson.DeserializeOptions = {
79
// use bigint instead of Long
810
useBigInt64: true
@@ -12,15 +14,15 @@ export const BSON_DESERIALIZE_OPTIONS: bson.DeserializeOptions = {
1214
* Lookup serialization must be number-agnostic. I.e. normalize numbers, instead of preserving numbers.
1315
* @param lookup
1416
*/
15-
export const serializeLookupBuffer = (lookup: SqliteJsonValue[]): Buffer => {
17+
export const serializeLookupBuffer = (lookup: SqliteJsonValue[]): NodeBuffer => {
1618
const normalized = lookup.map((value) => {
1719
if (typeof value == 'number' && Number.isInteger(value)) {
1820
return BigInt(value);
1921
} else {
2022
return value;
2123
}
2224
});
23-
return bson.serialize({ l: normalized }) as Buffer;
25+
return bson.serialize({ l: normalized }) as NodeBuffer;
2426
};
2527

2628
export const serializeLookup = (lookup: SqliteJsonValue[]) => {
@@ -40,8 +42,8 @@ export const isUUID = (value: any): value is bson.UUID => {
4042
return uuid._bsontype == 'Binary' && uuid.sub_type == bson.Binary.SUBTYPE_UUID;
4143
};
4244

43-
export const serializeReplicaId = (id: ReplicaId): Buffer => {
44-
return bson.serialize({ id }) as Buffer;
45+
export const serializeReplicaId = (id: ReplicaId): NodeBuffer => {
46+
return bson.serialize({ id }) as NodeBuffer;
4547
};
4648

4749
export const deserializeReplicaId = (id: Buffer): ReplicaId => {
@@ -53,8 +55,8 @@ export const deserializeBson = (buffer: Buffer) => {
5355
return bson.deserialize(buffer, BSON_DESERIALIZE_OPTIONS);
5456
};
5557

56-
export const serializeBson = (document: any): Buffer => {
57-
return bson.serialize(document) as Buffer;
58+
export const serializeBson = (document: any): NodeBuffer => {
59+
return bson.serialize(document) as NodeBuffer;
5860
};
5961

6062
/**
@@ -73,6 +75,6 @@ export const replicaIdEquals = (a: ReplicaId, b: ReplicaId) => {
7375
return false;
7476
} else {
7577
// There are many possible primitive values, this covers them all
76-
return serializeReplicaId(a).equals(serializeReplicaId(b) as ArrayBuffer as Uint8Array);
78+
return serializeReplicaId(a).equals(serializeReplicaId(b));
7779
}
7880
};

packages/service-core/src/util/memory-tracking.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ export function trackMemoryUsage() {
2525
for (let key of Object.keys(bufferMemory)) {
2626
const typedKey = key as keyof typeof bufferMemory;
2727
const originalFunction = Buffer[typedKey] as (...args: any[]) => Buffer;
28-
Buffer[typedKey] = function (...args: any[]) {
29-
const buffer = originalFunction.apply(this, args);
28+
Buffer[typedKey] = function <TArrayBuffer extends ArrayBufferLike = ArrayBufferLike>(...args: any[]) {
29+
const buffer = originalFunction.apply(this, args) as Buffer<TArrayBuffer>;
3030
bufferMemory[typedKey] += buffer.byteLength;
3131
bufferRegistry.register(buffer, [typedKey, buffer.byteLength]);
3232
return buffer;

0 commit comments

Comments
 (0)