@powersync/service-jpgwire 0.20.1 → 0.21.0

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/LICENSE CHANGED
@@ -1,12 +1,12 @@
1
- # Functional Source License, Version 1.1, Apache 2.0 Future License
1
+ # Functional Source License, Version 1.1, ALv2 Future License
2
2
 
3
3
  ## Abbreviation
4
4
 
5
- FSL-1.1-Apache-2.0
5
+ FSL-1.1-ALv2
6
6
 
7
7
  ## Notice
8
8
 
9
- Copyright 2023-2024 Journey Mobile, Inc.
9
+ Copyright 2023-2025 Journey Mobile, Inc.
10
10
 
11
11
  ## Terms and Conditions
12
12
 
package/dist/index.d.ts CHANGED
@@ -3,3 +3,4 @@ export * from './certs.js';
3
3
  export * from './util.js';
4
4
  export * from './metrics.js';
5
5
  export * from './pgwire_types.js';
6
+ export * from './structure_parser.js';
package/dist/index.js CHANGED
@@ -3,4 +3,5 @@ export * from './certs.js';
3
3
  export * from './util.js';
4
4
  export * from './metrics.js';
5
5
  export * from './pgwire_types.js';
6
+ export * from './structure_parser.js';
6
7
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { type DatabaseInputValue } from '@powersync/service-sync-rules';
1
2
  export declare enum PgTypeOid {
2
3
  TEXT = 25,
3
4
  UUID = 2950,
@@ -13,15 +14,17 @@ export declare enum PgTypeOid {
13
14
  DATE = 1082,
14
15
  TIMESTAMP = 1114,
15
16
  TIMESTAMPTZ = 1184,
17
+ TIME = 1083,
16
18
  JSON = 114,
17
19
  JSONB = 3802,
18
20
  PG_LSN = 3220
19
21
  }
22
+ export declare const ARRAY_TO_ELEM_OID: Map<number, number>;
20
23
  export declare class PgType {
21
24
  static getArrayType(typeOid: number): number | undefined;
22
- static decode(text: string, typeOid: number): any;
23
- static _elemTypeOid(arrayTypeOid: number): number | undefined;
24
- static _decodeArray(text: string, elemTypeOid: number): any;
25
+ static decode(text: string, typeOid: number): DatabaseInputValue;
26
+ static elemTypeOid(arrayTypeOid: number): number | undefined;
27
+ static _decodeArray(text: string, elemTypeOid: number): DatabaseInputValue[];
25
28
  static _decodeBytea(text: string): Uint8Array;
26
29
  static _encodeBytea(bytes: Uint8Array): string;
27
30
  }
@@ -1,6 +1,8 @@
1
1
  // Adapted from https://github.com/kagis/pgwire/blob/0dc927f9f8990a903f238737326e53ba1c8d094f/mod.js#L2218
2
2
  import { JsonContainer } from '@powersync/service-jsonbig';
3
+ import { TimeValue } from '@powersync/service-sync-rules';
3
4
  import { dateToSqlite, lsnMakeComparable, timestampToSqlite, timestamptzToSqlite } from './util.js';
5
+ import { StructureParser } from './structure_parser.js';
4
6
  export var PgTypeOid;
5
7
  (function (PgTypeOid) {
6
8
  PgTypeOid[PgTypeOid["TEXT"] = 25] = "TEXT";
@@ -17,13 +19,14 @@ export var PgTypeOid;
17
19
  PgTypeOid[PgTypeOid["DATE"] = 1082] = "DATE";
18
20
  PgTypeOid[PgTypeOid["TIMESTAMP"] = 1114] = "TIMESTAMP";
19
21
  PgTypeOid[PgTypeOid["TIMESTAMPTZ"] = 1184] = "TIMESTAMPTZ";
22
+ PgTypeOid[PgTypeOid["TIME"] = 1083] = "TIME";
20
23
  PgTypeOid[PgTypeOid["JSON"] = 114] = "JSON";
21
24
  PgTypeOid[PgTypeOid["JSONB"] = 3802] = "JSONB";
22
25
  PgTypeOid[PgTypeOid["PG_LSN"] = 3220] = "PG_LSN";
23
26
  })(PgTypeOid || (PgTypeOid = {}));
24
27
  // Generate using:
25
28
  // select '[' || typarray || ', ' || oid || '], // ' || typname from pg_catalog.pg_type WHERE typarray != 0;
26
- const ARRAY_TO_ELEM_OID = new Map([
29
+ export const ARRAY_TO_ELEM_OID = new Map([
27
30
  [1000, 16], // bool
28
31
  [1001, 17], // bytea
29
32
  [1002, 18], // char
@@ -125,6 +128,8 @@ export class PgType {
125
128
  return timestampToSqlite(text);
126
129
  case PgTypeOid.TIMESTAMPTZ:
127
130
  return timestamptzToSqlite(text);
131
+ case PgTypeOid.TIME:
132
+ return TimeValue.parse(text);
128
133
  case PgTypeOid.JSON:
129
134
  case PgTypeOid.JSONB:
130
135
  // Don't parse the contents
@@ -132,56 +137,19 @@ export class PgType {
132
137
  case PgTypeOid.PG_LSN:
133
138
  return lsnMakeComparable(text);
134
139
  }
135
- const elemTypeid = this._elemTypeOid(typeOid);
140
+ const elemTypeid = this.elemTypeOid(typeOid);
136
141
  if (elemTypeid != null) {
137
142
  return this._decodeArray(text, elemTypeid);
138
143
  }
139
144
  return text; // unknown type
140
145
  }
141
- static _elemTypeOid(arrayTypeOid) {
146
+ static elemTypeOid(arrayTypeOid) {
142
147
  // select 'case ' || typarray || ': return ' || oid || '; // ' || typname from pg_catalog.pg_type WHERE typarray != 0;
143
148
  return ARRAY_TO_ELEM_OID.get(arrayTypeOid);
144
149
  }
145
150
  static _decodeArray(text, elemTypeOid) {
146
151
  text = text.replace(/^\[.+=/, ''); // skip dimensions
147
- let result;
148
- for (let i = 0, inQuotes = false, elStart = 0, stack = []; i < text.length; i++) {
149
- const ch = text.charCodeAt(i);
150
- if (ch == 0x5c /*\*/) {
151
- i++; // escape
152
- }
153
- else if (ch == 0x22 /*"*/) {
154
- inQuotes = !inQuotes;
155
- }
156
- else if (inQuotes) {
157
- }
158
- else if (ch == 0x7b /*{*/) {
159
- // continue
160
- stack.unshift([]), (elStart = i + 1);
161
- }
162
- else if (ch == 0x7d /*}*/ || ch == 0x2c /*,*/) {
163
- // TODO configurable delimiter
164
- // TODO ensure .slice is cheap enough to do it unconditionally
165
- const escaped = text.slice(elStart, i); // TODO trim ' \t\n\r\v\f'
166
- if (result) {
167
- stack[0].push(result);
168
- }
169
- else if (/^NULL$/i.test(escaped)) {
170
- stack[0].push(null);
171
- }
172
- else if (escaped.length) {
173
- const unescaped = escaped.replace(/^"|"$|(?<!\\)\\/g, '');
174
- // TODO accept decodeFn as argument,
175
- // extract parseArray logic out of decoder,
176
- // do benchmark of static vs dynamic dispatch
177
- const decoded = this.decode(unescaped, elemTypeOid);
178
- stack[0].push(decoded);
179
- }
180
- result = ch == 0x7d /*}*/ && stack.shift();
181
- elStart = i + 1; // TODO dry
182
- }
183
- }
184
- return result;
152
+ return new StructureParser(text).parseArray((raw) => PgType.decode(raw, elemTypeOid));
185
153
  }
186
154
  static _decodeBytea(text) {
187
155
  // https://www.postgresql.org/docs/9.6/datatype-binary.html#AEN5830
@@ -1 +1 @@
1
- {"version":3,"file":"pgwire_types.js","sourceRoot":"","sources":["../src/pgwire_types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pgwire_types.js","sourceRoot":"","sources":["../src/pgwire_types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Utility to parse encoded structural values, such as arrays, composite types, ranges and multiranges.
3
+ */
4
+ export declare class StructureParser {
5
+ readonly source: string;
6
+ private offset;
7
+ constructor(source: string);
8
+ private currentCharCode;
9
+ private get isAtEnd();
10
+ private checkNotAtEnd;
11
+ private error;
12
+ private check;
13
+ private peek;
14
+ private advance;
15
+ private consume;
16
+ private maybeConsume;
17
+ /**
18
+ * Assuming that the current position contains a opening double quote for an escaped string, parses the value until
19
+ * the closing quote.
20
+ *
21
+ * The returned value applies escape characters, so `"foo\"bar"` would return the string `foo"bar"`.
22
+ */
23
+ private quotedString;
24
+ unquotedString(endedBy: number[], illegal: number[]): string;
25
+ checkAtEnd(): void;
26
+ parseArray<T>(parseElement: (value: string) => T, delimiter?: number): ElementOrArray<T>[];
27
+ private parseArrayInner;
28
+ parseComposite(onElement: (value: string | null) => void): void;
29
+ private parseRangeInner;
30
+ parseRange<T>(parseInner: (value: string) => T): Range<T>;
31
+ parseMultiRange<T>(parseInner: (value: string) => T): Range<T>[];
32
+ }
33
+ export type Range<T> = {
34
+ lower: T | null;
35
+ upper: T | null;
36
+ lower_exclusive: boolean;
37
+ upper_exclusive: boolean;
38
+ } | 'empty';
39
+ export type ElementOrArray<T> = null | T | ElementOrArray<T>[];
40
+ export declare const CHAR_CODE_COMMA = 44;
41
+ export declare const CHAR_CODE_SEMICOLON = 59;
@@ -0,0 +1,255 @@
1
+ /**
2
+ * Utility to parse encoded structural values, such as arrays, composite types, ranges and multiranges.
3
+ */
4
+ export class StructureParser {
5
+ source;
6
+ offset;
7
+ constructor(source) {
8
+ this.source = source;
9
+ this.offset = 0;
10
+ }
11
+ currentCharCode() {
12
+ return this.source.charCodeAt(this.offset);
13
+ }
14
+ get isAtEnd() {
15
+ return this.offset == this.source.length;
16
+ }
17
+ checkNotAtEnd() {
18
+ if (this.isAtEnd) {
19
+ this.error('Unexpected end of input');
20
+ }
21
+ }
22
+ error(msg) {
23
+ throw new Error(`Error decoding Postgres sequence at position ${this.offset}: ${msg}`);
24
+ }
25
+ check(expected) {
26
+ if (this.currentCharCode() != expected) {
27
+ this.error(`Expected ${String.fromCharCode(expected)}, got ${String.fromCharCode(this.currentCharCode())}`);
28
+ }
29
+ }
30
+ peek() {
31
+ this.checkNotAtEnd();
32
+ return this.source.charCodeAt(this.offset + 1);
33
+ }
34
+ advance() {
35
+ this.checkNotAtEnd();
36
+ this.offset++;
37
+ }
38
+ consume(expected) {
39
+ this.check(expected);
40
+ this.advance();
41
+ }
42
+ maybeConsume(expected) {
43
+ if (this.currentCharCode() == expected) {
44
+ this.advance();
45
+ return true;
46
+ }
47
+ else {
48
+ return false;
49
+ }
50
+ }
51
+ /**
52
+ * Assuming that the current position contains a opening double quote for an escaped string, parses the value until
53
+ * the closing quote.
54
+ *
55
+ * The returned value applies escape characters, so `"foo\"bar"` would return the string `foo"bar"`.
56
+ */
57
+ quotedString(allowEscapingWithDoubleDoubleQuote = false) {
58
+ this.consume(CHAR_CODE_DOUBLE_QUOTE);
59
+ const start = this.offset;
60
+ const charCodes = [];
61
+ let previousWasBackslash = false;
62
+ while (true) {
63
+ const char = this.currentCharCode();
64
+ if (previousWasBackslash) {
65
+ if (char != CHAR_CODE_DOUBLE_QUOTE && char != CHAR_CODE_BACKSLASH) {
66
+ this.error('Expected escaped double quote or escaped backslash');
67
+ }
68
+ charCodes.push(char);
69
+ previousWasBackslash = false;
70
+ }
71
+ else if (char == CHAR_CODE_DOUBLE_QUOTE) {
72
+ if (this.offset != start && allowEscapingWithDoubleDoubleQuote) {
73
+ // If the next character is also a double quote, that escapes a single double quote
74
+ if (this.offset < this.source.length - 1 && this.peek() == CHAR_CODE_DOUBLE_QUOTE) {
75
+ this.offset += 2;
76
+ charCodes.push(CHAR_CODE_DOUBLE_QUOTE);
77
+ continue;
78
+ }
79
+ }
80
+ break; // End of string.
81
+ }
82
+ else if (char == CHAR_CODE_BACKSLASH) {
83
+ previousWasBackslash = true;
84
+ }
85
+ else {
86
+ charCodes.push(char);
87
+ }
88
+ this.advance();
89
+ }
90
+ this.consume(CHAR_CODE_DOUBLE_QUOTE);
91
+ return String.fromCharCode(...charCodes);
92
+ }
93
+ unquotedString(endedBy, illegal) {
94
+ const start = this.offset;
95
+ this.advance();
96
+ let next = this.currentCharCode();
97
+ while (endedBy.indexOf(next) == -1) {
98
+ if (illegal.indexOf(next) != -1) {
99
+ this.error('illegal char, should require escaping');
100
+ }
101
+ this.advance();
102
+ next = this.currentCharCode();
103
+ }
104
+ return this.source.substring(start, this.offset);
105
+ }
106
+ checkAtEnd() {
107
+ if (this.offset < this.source.length) {
108
+ this.error('Unexpected trailing text');
109
+ }
110
+ }
111
+ // https://www.postgresql.org/docs/current/arrays.html#ARRAYS-IO
112
+ parseArray(parseElement, delimiter = CHAR_CODE_COMMA) {
113
+ const array = this.parseArrayInner(delimiter, parseElement);
114
+ this.checkAtEnd();
115
+ return array;
116
+ }
117
+ // Recursively parses a (potentially multi-dimensional) array.
118
+ parseArrayInner(delimiter, parseElement) {
119
+ this.consume(CHAR_CODE_LEFT_BRACE);
120
+ if (this.maybeConsume(CHAR_CODE_RIGHT_BRACE)) {
121
+ return []; // Empty array ({})
122
+ }
123
+ const elements = [];
124
+ do {
125
+ // Parse a value in the array. This can either be an escaped string, an unescaped string, or a nested array.
126
+ const currentChar = this.currentCharCode();
127
+ if (currentChar == CHAR_CODE_LEFT_BRACE) {
128
+ // Nested array
129
+ elements.push(this.parseArrayInner(delimiter, parseElement));
130
+ }
131
+ else if (currentChar == CHAR_CODE_DOUBLE_QUOTE) {
132
+ elements.push(parseElement(this.quotedString()));
133
+ }
134
+ else {
135
+ const value = this.unquotedString([delimiter, CHAR_CODE_RIGHT_BRACE], [CHAR_CODE_DOUBLE_QUOTE, CHAR_CODE_LEFT_BRACE]);
136
+ elements.push(value == 'NULL' ? null : parseElement(value));
137
+ }
138
+ } while (this.maybeConsume(delimiter));
139
+ this.consume(CHAR_CODE_RIGHT_BRACE);
140
+ return elements;
141
+ }
142
+ // https://www.postgresql.org/docs/current/rowtypes.html#ROWTYPES-IO-SYNTAX
143
+ parseComposite(onElement) {
144
+ this.consume(CHAR_CODE_LEFT_PAREN);
145
+ do {
146
+ // Parse a composite value. This can either be an escaped string, an unescaped string, or an empty string.
147
+ const currentChar = this.currentCharCode();
148
+ if (currentChar == CHAR_CODE_COMMA) {
149
+ // Empty value. The comma is consumed by the while() below.
150
+ onElement(null);
151
+ }
152
+ else if (currentChar == CHAR_CODE_RIGHT_PAREN) {
153
+ // Empty value before end. The right parent is consumed by the line after the loop.
154
+ onElement(null);
155
+ }
156
+ else if (currentChar == CHAR_CODE_DOUBLE_QUOTE) {
157
+ onElement(this.quotedString(true));
158
+ }
159
+ else {
160
+ const value = this.unquotedString([CHAR_CODE_COMMA, CHAR_CODE_RIGHT_PAREN], [CHAR_CODE_DOUBLE_QUOTE, CHAR_CODE_LEFT_PAREN]);
161
+ onElement(value);
162
+ }
163
+ } while (this.maybeConsume(CHAR_CODE_COMMA));
164
+ this.consume(CHAR_CODE_RIGHT_PAREN);
165
+ this.checkAtEnd();
166
+ }
167
+ // https://www.postgresql.org/docs/current/rangetypes.html#RANGETYPES-IO
168
+ parseRangeInner(parseInner) {
169
+ const empty = 'empty';
170
+ // Parse [ or ( to start the range
171
+ let lowerBoundExclusive;
172
+ switch (this.currentCharCode()) {
173
+ case CHAR_CODE_LEFT_PAREN:
174
+ lowerBoundExclusive = true;
175
+ this.advance();
176
+ break;
177
+ case CHAR_CODE_LEFT_BRACKET:
178
+ lowerBoundExclusive = false;
179
+ this.advance();
180
+ break;
181
+ case empty.charCodeAt(0):
182
+ // Consume the string "empty"
183
+ for (let i = 0; i < empty.length; i++) {
184
+ this.consume(empty.charCodeAt(i));
185
+ }
186
+ return empty;
187
+ default:
188
+ this.error('Expected [, ( or string empty');
189
+ }
190
+ // Parse value until comma (which may be empty)
191
+ let lower = null;
192
+ if (this.currentCharCode() == CHAR_CODE_DOUBLE_QUOTE) {
193
+ lower = parseInner(this.quotedString());
194
+ }
195
+ else if (this.currentCharCode() != CHAR_CODE_COMMA) {
196
+ lower = parseInner(this.unquotedString([CHAR_CODE_COMMA], []));
197
+ }
198
+ this.consume(CHAR_CODE_COMMA);
199
+ let upper = null;
200
+ if (this.currentCharCode() == CHAR_CODE_DOUBLE_QUOTE) {
201
+ upper = parseInner(this.quotedString());
202
+ }
203
+ else if (this.currentCharCode() != CHAR_CODE_RIGHT_PAREN && this.currentCharCode() != CHAR_CODE_RIGHT_BRACKET) {
204
+ upper = parseInner(this.unquotedString([CHAR_CODE_RIGHT_PAREN, CHAR_CODE_RIGHT_BRACKET], []));
205
+ }
206
+ let upperBoundExclusive;
207
+ switch (this.currentCharCode()) {
208
+ case CHAR_CODE_RIGHT_PAREN:
209
+ upperBoundExclusive = true;
210
+ this.advance();
211
+ break;
212
+ case CHAR_CODE_RIGHT_BRACKET:
213
+ upperBoundExclusive = false;
214
+ this.advance();
215
+ break;
216
+ default:
217
+ this.error('Expected ] or )');
218
+ }
219
+ return {
220
+ lower: lower,
221
+ upper: upper,
222
+ lower_exclusive: lowerBoundExclusive,
223
+ upper_exclusive: upperBoundExclusive
224
+ };
225
+ }
226
+ parseRange(parseInner) {
227
+ const range = this.parseRangeInner(parseInner);
228
+ this.checkAtEnd();
229
+ return range;
230
+ }
231
+ parseMultiRange(parseInner) {
232
+ this.consume(CHAR_CODE_LEFT_BRACE);
233
+ if (this.maybeConsume(CHAR_CODE_RIGHT_BRACE)) {
234
+ return [];
235
+ }
236
+ const values = [];
237
+ do {
238
+ values.push(this.parseRangeInner(parseInner));
239
+ } while (this.maybeConsume(CHAR_CODE_COMMA));
240
+ this.consume(CHAR_CODE_RIGHT_BRACE);
241
+ this.checkAtEnd();
242
+ return values;
243
+ }
244
+ }
245
+ const CHAR_CODE_DOUBLE_QUOTE = 0x22;
246
+ const CHAR_CODE_BACKSLASH = 0x5c;
247
+ export const CHAR_CODE_COMMA = 0x2c;
248
+ export const CHAR_CODE_SEMICOLON = 0x3b;
249
+ const CHAR_CODE_LEFT_BRACE = 0x7b;
250
+ const CHAR_CODE_RIGHT_BRACE = 0x7d;
251
+ const CHAR_CODE_LEFT_PAREN = 0x28;
252
+ const CHAR_CODE_RIGHT_PAREN = 0x29;
253
+ const CHAR_CODE_LEFT_BRACKET = 0x5b;
254
+ const CHAR_CODE_RIGHT_BRACKET = 0x5d;
255
+ //# sourceMappingURL=structure_parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structure_parser.js","sourceRoot":"","sources":["../src/structure_parser.ts"],"names":[],"mappings":"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"}
package/dist/util.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import * as net from 'node:net';
2
2
  import * as tls from 'node:tls';
3
3
  import * as pgwire from './pgwire.js';
4
+ import { DateTimeValue } from '@powersync/service-sync-rules';
4
5
  export interface NormalizedConnectionConfig {
5
6
  id: string;
6
7
  tag: string;
@@ -66,7 +67,7 @@ export declare function lsnMakeComparable(text: string): string;
66
67
  *
67
68
  * We have specific exceptions for -infinity and infinity.
68
69
  */
69
- export declare function timestamptzToSqlite(source?: string): string | null;
70
+ export declare function timestamptzToSqlite(source?: string): DateTimeValue | null;
70
71
  /**
71
72
  * For timestamp without timezone, we keep it mostly as-is.
72
73
  *
@@ -74,7 +75,7 @@ export declare function timestamptzToSqlite(source?: string): string | null;
74
75
  *
75
76
  * https://www.postgresql.org/docs/current/datatype-datetime.html#DATATYPE-DATETIME-SPECIAL-VALUES
76
77
  */
77
- export declare function timestampToSqlite(source?: string): string | null;
78
+ export declare function timestampToSqlite(source?: string): DateTimeValue | null;
78
79
  /**
79
80
  * For date, we keep it mostly as-is.
80
81
  *
package/dist/util.js CHANGED
@@ -2,6 +2,7 @@ import * as datefns from 'date-fns';
2
2
  import { DEFAULT_CERTS } from './certs.js';
3
3
  import * as pgwire from './pgwire.js';
4
4
  import { PgType } from './pgwire_types.js';
5
+ import { DateTimeValue } from '@powersync/service-sync-rules';
5
6
  export function clientTlsOptions(options) {
6
7
  if (options.client_certificate && options.client_private_key) {
7
8
  return {
@@ -139,6 +140,7 @@ export function lsnMakeComparable(text) {
139
140
  const [h, l] = text.split('/');
140
141
  return h.padStart(8, '0') + '/' + l.padStart(8, '0');
141
142
  }
143
+ const timeRegex = /^([\d\-]+) ([\d:]+)(\.\d+)?([+-][\d:]+)?$/;
142
144
  /**
143
145
  * Convert a postgres timestamptz to a SQLite-compatible/normalized timestamp.
144
146
  *
@@ -155,13 +157,13 @@ export function timestamptzToSqlite(source) {
155
157
  return null;
156
158
  }
157
159
  // Make compatible with SQLite
158
- const match = /^([\d\-]+) ([\d:]+)(\.\d+)?([+-][\d:]+)$/.exec(source);
160
+ const match = timeRegex.exec(source);
159
161
  if (match == null) {
160
162
  if (source == 'infinity') {
161
- return '9999-12-31 23:59:59Z';
163
+ return new DateTimeValue('9999-12-31T23:59:59Z');
162
164
  }
163
165
  else if (source == '-infinity') {
164
- return '0000-01-01 00:00:00Z';
166
+ return new DateTimeValue('0000-01-01T00:00:00Z');
165
167
  }
166
168
  else {
167
169
  return null;
@@ -176,8 +178,14 @@ export function timestamptzToSqlite(source) {
176
178
  if (isNaN(parsed.getTime())) {
177
179
  return null;
178
180
  }
179
- const text = parsed.toISOString().replace('T', ' ').replace('.000', '').replace('Z', '');
180
- return `${text}${precision ?? ''}Z`;
181
+ const baseValue = parsed.toISOString().replace('.000', '').replace('Z', '');
182
+ // In the new format, we always use ISO 8601. Since Postgres drops zeroes from the fractional seconds, we also pad
183
+ // that back to the highest theoretical precision (microseconds). This ensures that sorting returned values as text
184
+ // returns them in order of the time value they represent.
185
+ //
186
+ // In the old format, we keep the sub-second precision only if it's not `.000`.
187
+ const missingPrecision = precision?.padEnd(7, '0') ?? '.000000';
188
+ return new DateTimeValue(`${baseValue}${missingPrecision}Z`, `${baseValue.replace('T', ' ')}${precision ?? ''}Z`);
181
189
  }
182
190
  /**
183
191
  * For timestamp without timezone, we keep it mostly as-is.
@@ -190,15 +198,21 @@ export function timestampToSqlite(source) {
190
198
  if (source == null) {
191
199
  return null;
192
200
  }
193
- if (source == 'infinity') {
194
- return '9999-12-31 23:59:59';
195
- }
196
- else if (source == '-infinity') {
197
- return '0000-01-01 00:00:00';
198
- }
199
- else {
200
- return source;
201
+ const match = timeRegex.exec(source);
202
+ if (match == null) {
203
+ if (source == 'infinity') {
204
+ return new DateTimeValue('9999-12-31T23:59:59');
205
+ }
206
+ else if (source == '-infinity') {
207
+ return new DateTimeValue('0000-01-01T00:00:00');
208
+ }
209
+ else {
210
+ return null;
211
+ }
201
212
  }
213
+ const [_, date, time, precision, __] = match;
214
+ const missingPrecision = precision?.padEnd(7, '0') ?? '.000000';
215
+ return new DateTimeValue(`${date}T${time}${missingPrecision}`, source);
202
216
  }
203
217
  /**
204
218
  * For date, we keep it mostly as-is.
package/dist/util.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -5,9 +5,9 @@
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
8
- "version": "0.20.1",
8
+ "version": "0.21.0",
9
9
  "main": "dist/index.js",
10
- "license": "FSL-1.1-Apache-2.0",
10
+ "license": "FSL-1.1-ALv2",
11
11
  "files": [
12
12
  "dist/**/*",
13
13
  "ca/*.pem"
@@ -16,10 +16,14 @@
16
16
  "dependencies": {
17
17
  "date-fns": "^4.1.0",
18
18
  "pgwire": "github:kagis/pgwire#f1cb95f9a0f42a612bb5a6b67bb2eb793fc5fc87",
19
- "@powersync/service-jsonbig": "^0.17.10"
19
+ "vitest": "^3.0.5",
20
+ "@powersync/service-jsonbig": "^0.17.11",
21
+ "@powersync/service-sync-rules": "^0.29.1"
20
22
  },
21
23
  "scripts": {
22
24
  "clean": "rm -r ./dist && tsc -b --clean",
23
- "build": "tsc -b"
25
+ "build": "tsc -b",
26
+ "build:tests": "tsc -b test/tsconfig.json",
27
+ "test": "vitest"
24
28
  }
25
29
  }