@powersync/lib-services-framework 0.9.3 → 0.9.5

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.
@@ -9,6 +9,9 @@ export interface LookupOptions {
9
9
  *
10
10
  * If one of the hostnames is an IP, this synchronously validates it.
11
11
  *
12
+ * Each entry must be a normalized hostname (no port, no IPv6 brackets); pass
13
+ * socket-address inputs through {@link hostnameFromSocketAddress} first.
14
+ *
12
15
  * @returns a function to use as the `lookup` option in `net.connect`.
13
16
  */
14
17
  export declare function makeMultiHostnameLookupFunction(hostnames: string[], lookupOptions: LookupOptions): net.LookupFunction | undefined;
@@ -17,6 +20,9 @@ export declare function makeMultiHostnameLookupFunction(hostnames: string[], loo
17
20
  *
18
21
  * If hostname is an IP, this synchronously validates it.
19
22
  *
23
+ * `hostname` must be normalized (no port, no IPv6 brackets); pass socket-address
24
+ * inputs through {@link hostnameFromSocketAddress} first.
25
+ *
20
26
  * @returns a function to use as the `lookup` option in `net.connect`.
21
27
  */
22
28
  export declare function makeHostnameLookupFunction(hostname: string, lookupOptions: LookupOptions): net.LookupFunction | undefined;
@@ -31,14 +37,20 @@ export declare function makeHostnameLookupFunction(hostname: string, lookupOptio
31
37
  */
32
38
  export declare function makeLookupFunction(lookupOptions: LookupOptions): net.LookupFunction | undefined;
33
39
  /**
34
- * Validate IPs synchronously.
35
- *
36
- * If the hostname is not an ip, this does nothing.
40
+ * Validate IPs synchronously. If the hostname is not an IP, this does nothing.
37
41
  *
38
- * @param hostname IP or DNS name
39
- * @param options
42
+ * `hostname` must be normalized (no port, no IPv6 brackets); pass socket-address
43
+ * inputs through {@link hostnameFromSocketAddress} first, otherwise `[::1]` or
44
+ * `host:port` will fail `ip.isValid` and silently fall through to the DNS path.
40
45
  */
41
46
  export declare function validateIpHostname(hostname: string, options: LookupOptions): void;
47
+ /**
48
+ * Normalize a socket address (`host[:port]`, with IPv6 hosts optionally bracketed)
49
+ * to a bare hostname. Used for `URL.host`/`URL.hostname` and
50
+ * `mongodb-connection-string-url`'s `uri.hosts` entries. Non-IP input is returned
51
+ * unchanged (downstream falls through to the DNS path).
52
+ */
53
+ export declare function hostnameFromSocketAddress(socketAddress: string): string;
42
54
  /**
43
55
  * Resolve IP, and check that it is in an allowed range.
44
56
  */
package/dist/ip/lookup.js CHANGED
@@ -7,10 +7,12 @@ import * as net from 'node:net';
7
7
  *
8
8
  * If one of the hostnames is an IP, this synchronously validates it.
9
9
  *
10
+ * Each entry must be a normalized hostname (no port, no IPv6 brackets); pass
11
+ * socket-address inputs through {@link hostnameFromSocketAddress} first.
12
+ *
10
13
  * @returns a function to use as the `lookup` option in `net.connect`.
11
14
  */
12
15
  export function makeMultiHostnameLookupFunction(hostnames, lookupOptions) {
13
- // If any of the hostnames are IPs, validate them synchronously
14
16
  for (let host of hostnames) {
15
17
  validateIpHostname(host, lookupOptions);
16
18
  }
@@ -21,6 +23,9 @@ export function makeMultiHostnameLookupFunction(hostnames, lookupOptions) {
21
23
  *
22
24
  * If hostname is an IP, this synchronously validates it.
23
25
  *
26
+ * `hostname` must be normalized (no port, no IPv6 brackets); pass socket-address
27
+ * inputs through {@link hostnameFromSocketAddress} first.
28
+ *
24
29
  * @returns a function to use as the `lookup` option in `net.connect`.
25
30
  */
26
31
  export function makeHostnameLookupFunction(hostname, lookupOptions) {
@@ -57,12 +62,11 @@ export function makeLookupFunction(lookupOptions) {
57
62
  };
58
63
  }
59
64
  /**
60
- * Validate IPs synchronously.
65
+ * Validate IPs synchronously. If the hostname is not an IP, this does nothing.
61
66
  *
62
- * If the hostname is not an ip, this does nothing.
63
- *
64
- * @param hostname IP or DNS name
65
- * @param options
67
+ * `hostname` must be normalized (no port, no IPv6 brackets); pass socket-address
68
+ * inputs through {@link hostnameFromSocketAddress} first, otherwise `[::1]` or
69
+ * `host:port` will fail `ip.isValid` and silently fall through to the DNS path.
66
70
  */
67
71
  export function validateIpHostname(hostname, options) {
68
72
  const { reject_ip_ranges: reject_ranges } = options;
@@ -70,8 +74,7 @@ export function validateIpHostname(hostname, options) {
70
74
  // Treat as a DNS name.
71
75
  return;
72
76
  }
73
- const ipaddr = hostname;
74
- const parsed = ip.parse(ipaddr);
77
+ const parsed = ip.parse(hostname);
75
78
  const rejectLocal = reject_ranges.includes('local');
76
79
  const rejectSubnets = reject_ranges.filter((range) => range != 'local');
77
80
  const reject = { blocked: (rejectSubnets ?? []).map((r) => ip.parseCIDR(r)) };
@@ -80,7 +83,7 @@ export function validateIpHostname(hostname, options) {
80
83
  }
81
84
  if (ip.subnetMatch(parsed, reject) == 'blocked') {
82
85
  // Ranges explicitly blocked, e.g. private IPv6 ranges
83
- throw new ServiceError(ErrorCode.PSYNC_S2203, `IPs in this range are not supported: ${ipaddr}`);
86
+ throw new ServiceError(ErrorCode.PSYNC_S2203, `IPs in this range are not supported: ${hostname}`);
84
87
  }
85
88
  if (!rejectLocal) {
86
89
  return;
@@ -95,8 +98,21 @@ export function validateIpHostname(hostname, options) {
95
98
  }
96
99
  else {
97
100
  // Do not connect to any reserved IPs, including loopback and private ranges
98
- throw new ServiceError(ErrorCode.PSYNC_S2203, `IPs in this range are not supported: ${ipaddr}`);
101
+ throw new ServiceError(ErrorCode.PSYNC_S2203, `IPs in this range are not supported: ${hostname}`);
102
+ }
103
+ }
104
+ /**
105
+ * Normalize a socket address (`host[:port]`, with IPv6 hosts optionally bracketed)
106
+ * to a bare hostname. Used for `URL.host`/`URL.hostname` and
107
+ * `mongodb-connection-string-url`'s `uri.hosts` entries. Non-IP input is returned
108
+ * unchanged (downstream falls through to the DNS path).
109
+ */
110
+ export function hostnameFromSocketAddress(socketAddress) {
111
+ const parsed = net.SocketAddress.parse(socketAddress);
112
+ if (parsed != null) {
113
+ return parsed.address;
99
114
  }
115
+ return socketAddress;
100
116
  }
101
117
  /**
102
118
  * Resolve IP, and check that it is in an allowed range.
@@ -1 +1 @@
1
- {"version":3,"file":"lookup.js","sourceRoot":"","sources":["../../src/ip/lookup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lookup.js","sourceRoot":"","sources":["../../src/ip/lookup.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ export const BufferNodeType = {
3
3
  keyword: 'nodeType',
4
4
  metaSchema: {
5
5
  type: 'string',
6
- enum: ['buffer', 'date']
6
+ enum: ['bigint', 'buffer', 'date']
7
7
  },
8
8
  error: {
9
9
  message: ({ schemaCode }) => {
@@ -12,6 +12,9 @@ export const BufferNodeType = {
12
12
  },
13
13
  code(context) {
14
14
  switch (context.schema) {
15
+ case 'bigint': {
16
+ return context.fail(ajv._ `typeof ${context.data} != 'bigint'`);
17
+ }
15
18
  case 'buffer': {
16
19
  return context.fail(ajv._ `!Buffer.isBuffer(${context.data})`);
17
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"keywords.js","sourceRoot":"","sources":["../../../src/schema/json-schema/keywords.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAE3B,MAAM,CAAC,MAAM,cAAc,GAA0B;IACnD,OAAO,EAAE,UAAU;IACnB,UAAU,EAAE;QACV,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC;KACzB;IACD,KAAK,EAAE;QACL,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE;YAC1B,OAAO,GAAG,CAAC,GAAG,CAAA,eAAe,UAAU,EAAE,CAAC;QAC5C,CAAC;KACF;IACD,IAAI,CAAC,OAAO;QACV,QAAQ,OAAO,CAAC,MAAM,EAAE,CAAC;YACvB,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA,oBAAoB,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;YAChE,CAAC;YACD,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA,KAAK,OAAO,CAAC,IAAI,mBAAmB,CAAC,CAAC;YACjE,CAAC;YACD,OAAO,CAAC,CAAC,CAAC;gBACR,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA,MAAM,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;IACH,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"keywords.js","sourceRoot":"","sources":["../../../src/schema/json-schema/keywords.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAE3B,MAAM,CAAC,MAAM,cAAc,GAA0B;IACnD,OAAO,EAAE,UAAU;IACnB,UAAU,EAAE;QACV,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC;KACnC;IACD,KAAK,EAAE;QACL,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE;YAC1B,OAAO,GAAG,CAAC,GAAG,CAAA,eAAe,UAAU,EAAE,CAAC;QAC5C,CAAC;KACF;IACD,IAAI,CAAC,OAAO;QACV,QAAQ,OAAO,CAAC,MAAM,EAAE,CAAC;YACvB,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA,UAAU,OAAO,CAAC,IAAI,cAAc,CAAC,CAAC;YACjE,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA,oBAAoB,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;YAChE,CAAC;YACD,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA,KAAK,OAAO,CAAC,IAAI,mBAAmB,CAAC,CAAC;YACjE,CAAC;YACD,OAAO,CAAC,CAAC,CAAC;gBACR,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA,MAAM,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;IACH,CAAC;CACF,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@powersync/lib-services-framework",
3
3
  "repository": "https://github.com/powersync-ja/powersync-service",
4
- "version": "0.9.3",
4
+ "version": "0.9.5",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
7
7
  "types": "dist/index.d.ts",
@@ -14,23 +14,23 @@
14
14
  },
15
15
  "keywords": [],
16
16
  "dependencies": {
17
- "ajv": "^8.12.0",
17
+ "ajv": "^8.18.0",
18
18
  "better-ajv-errors": "^2.0.3",
19
19
  "bson": "^6.10.4",
20
20
  "dotenv": "^16.4.5",
21
21
  "ipaddr.js": "^2.1.0",
22
- "lodash": "^4.17.21",
22
+ "lodash": "^4.18.1",
23
23
  "safe-stable-stringify": "^2.5.0",
24
24
  "ts-codec": "^1.3.0",
25
- "uuid": "^11.1.0",
25
+ "uuid": "^14.0.0",
26
26
  "winston": "^3.13.0",
27
27
  "zod": "^3.23.8",
28
- "@powersync/service-errors": "0.4.2",
29
- "@powersync/service-sync-rules": "0.35.0"
28
+ "@powersync/service-errors": "0.4.3",
29
+ "@powersync/service-sync-rules": "0.37.0"
30
30
  },
31
31
  "devDependencies": {
32
32
  "@types/lodash": "^4.17.5",
33
- "vitest": "^4.1.0"
33
+ "vitest": "^4.1.5"
34
34
  },
35
35
  "scripts": {
36
36
  "clean": "rm -r ./dist && tsc -b --clean",