@powersync/service-jpgwire 0.20.2 → 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/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"}
@@ -19,11 +19,12 @@ export declare enum PgTypeOid {
19
19
  JSONB = 3802,
20
20
  PG_LSN = 3220
21
21
  }
22
+ export declare const ARRAY_TO_ELEM_OID: Map<number, number>;
22
23
  export declare class PgType {
23
24
  static getArrayType(typeOid: number): number | undefined;
24
25
  static decode(text: string, typeOid: number): DatabaseInputValue;
25
- static _elemTypeOid(arrayTypeOid: number): number | undefined;
26
- static _decodeArray(text: string, elemTypeOid: number): any;
26
+ static elemTypeOid(arrayTypeOid: number): number | undefined;
27
+ static _decodeArray(text: string, elemTypeOid: number): DatabaseInputValue[];
27
28
  static _decodeBytea(text: string): Uint8Array;
28
29
  static _encodeBytea(bytes: Uint8Array): string;
29
30
  }
@@ -2,6 +2,7 @@
2
2
  import { JsonContainer } from '@powersync/service-jsonbig';
3
3
  import { TimeValue } from '@powersync/service-sync-rules';
4
4
  import { dateToSqlite, lsnMakeComparable, timestampToSqlite, timestamptzToSqlite } from './util.js';
5
+ import { StructureParser } from './structure_parser.js';
5
6
  export var PgTypeOid;
6
7
  (function (PgTypeOid) {
7
8
  PgTypeOid[PgTypeOid["TEXT"] = 25] = "TEXT";
@@ -25,7 +26,7 @@ export var PgTypeOid;
25
26
  })(PgTypeOid || (PgTypeOid = {}));
26
27
  // Generate using:
27
28
  // select '[' || typarray || ', ' || oid || '], // ' || typname from pg_catalog.pg_type WHERE typarray != 0;
28
- const ARRAY_TO_ELEM_OID = new Map([
29
+ export const ARRAY_TO_ELEM_OID = new Map([
29
30
  [1000, 16], // bool
30
31
  [1001, 17], // bytea
31
32
  [1002, 18], // char
@@ -136,56 +137,19 @@ export class PgType {
136
137
  case PgTypeOid.PG_LSN:
137
138
  return lsnMakeComparable(text);
138
139
  }
139
- const elemTypeid = this._elemTypeOid(typeOid);
140
+ const elemTypeid = this.elemTypeOid(typeOid);
140
141
  if (elemTypeid != null) {
141
142
  return this._decodeArray(text, elemTypeid);
142
143
  }
143
144
  return text; // unknown type
144
145
  }
145
- static _elemTypeOid(arrayTypeOid) {
146
+ static elemTypeOid(arrayTypeOid) {
146
147
  // select 'case ' || typarray || ': return ' || oid || '; // ' || typname from pg_catalog.pg_type WHERE typarray != 0;
147
148
  return ARRAY_TO_ELEM_OID.get(arrayTypeOid);
148
149
  }
149
150
  static _decodeArray(text, elemTypeOid) {
150
151
  text = text.replace(/^\[.+=/, ''); // skip dimensions
151
- let result;
152
- for (let i = 0, inQuotes = false, elStart = 0, stack = []; i < text.length; i++) {
153
- const ch = text.charCodeAt(i);
154
- if (ch == 0x5c /*\*/) {
155
- i++; // escape
156
- }
157
- else if (ch == 0x22 /*"*/) {
158
- inQuotes = !inQuotes;
159
- }
160
- else if (inQuotes) {
161
- }
162
- else if (ch == 0x7b /*{*/) {
163
- // continue
164
- stack.unshift([]), (elStart = i + 1);
165
- }
166
- else if (ch == 0x7d /*}*/ || ch == 0x2c /*,*/) {
167
- // TODO configurable delimiter
168
- // TODO ensure .slice is cheap enough to do it unconditionally
169
- const escaped = text.slice(elStart, i); // TODO trim ' \t\n\r\v\f'
170
- if (result) {
171
- stack[0].push(result);
172
- }
173
- else if (/^NULL$/i.test(escaped)) {
174
- stack[0].push(null);
175
- }
176
- else if (escaped.length) {
177
- const unescaped = escaped.replace(/^"|"$|(?<!\\)\\/g, '');
178
- // TODO accept decodeFn as argument,
179
- // extract parseArray logic out of decoder,
180
- // do benchmark of static vs dynamic dispatch
181
- const decoded = this.decode(unescaped, elemTypeOid);
182
- stack[0].push(decoded);
183
- }
184
- result = ch == 0x7d /*}*/ && stack.shift();
185
- elStart = i + 1; // TODO dry
186
- }
187
- }
188
- return result;
152
+ return new StructureParser(text).parseArray((raw) => PgType.decode(raw, elemTypeOid));
189
153
  }
190
154
  static _decodeBytea(text) {
191
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/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
8
- "version": "0.20.2",
8
+ "version": "0.21.0",
9
9
  "main": "dist/index.js",
10
10
  "license": "FSL-1.1-ALv2",
11
11
  "files": [
@@ -16,11 +16,14 @@
16
16
  "dependencies": {
17
17
  "date-fns": "^4.1.0",
18
18
  "pgwire": "github:kagis/pgwire#f1cb95f9a0f42a612bb5a6b67bb2eb793fc5fc87",
19
+ "vitest": "^3.0.5",
19
20
  "@powersync/service-jsonbig": "^0.17.11",
20
- "@powersync/service-sync-rules": "^0.29.0"
21
+ "@powersync/service-sync-rules": "^0.29.1"
21
22
  },
22
23
  "scripts": {
23
24
  "clean": "rm -r ./dist && tsc -b --clean",
24
- "build": "tsc -b"
25
+ "build": "tsc -b",
26
+ "build:tests": "tsc -b test/tsconfig.json",
27
+ "test": "vitest"
25
28
  }
26
29
  }