@powersync/service-module-mysql 0.0.0-dev-20241101083236 → 0.0.0-dev-20241111122558

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.
Files changed (42) hide show
  1. package/CHANGELOG.md +11 -8
  2. package/dev/config/sync_rules.yaml +2 -4
  3. package/dist/api/MySQLRouteAPIAdapter.js +9 -8
  4. package/dist/api/MySQLRouteAPIAdapter.js.map +1 -1
  5. package/dist/common/ReplicatedGTID.js +1 -1
  6. package/dist/common/check-source-configuration.d.ts +0 -1
  7. package/dist/common/check-source-configuration.js +6 -8
  8. package/dist/common/check-source-configuration.js.map +1 -1
  9. package/dist/common/get-replication-columns.js +1 -1
  10. package/dist/common/mysql-to-sqlite.d.ts +17 -1
  11. package/dist/common/mysql-to-sqlite.js +133 -8
  12. package/dist/common/mysql-to-sqlite.js.map +1 -1
  13. package/dist/common/read-executed-gtid.js +4 -10
  14. package/dist/common/read-executed-gtid.js.map +1 -1
  15. package/dist/replication/BinLogStream.js +25 -21
  16. package/dist/replication/BinLogStream.js.map +1 -1
  17. package/dist/replication/MySQLConnectionManager.d.ts +2 -2
  18. package/dist/replication/MySQLConnectionManager.js +1 -1
  19. package/dist/utils/mysql-utils.d.ts +30 -0
  20. package/dist/utils/mysql-utils.js +70 -0
  21. package/dist/utils/mysql-utils.js.map +1 -0
  22. package/package.json +7 -6
  23. package/src/api/MySQLRouteAPIAdapter.ts +11 -9
  24. package/src/common/ReplicatedGTID.ts +1 -1
  25. package/src/common/check-source-configuration.ts +9 -10
  26. package/src/common/get-replication-columns.ts +1 -1
  27. package/src/common/mysql-to-sqlite.ts +147 -8
  28. package/src/common/read-executed-gtid.ts +5 -12
  29. package/src/replication/BinLogStream.ts +29 -21
  30. package/src/replication/MySQLConnectionManager.ts +3 -3
  31. package/src/utils/{mysql_utils.ts → mysql-utils.ts} +36 -5
  32. package/test/src/BinLogStream.test.ts +306 -0
  33. package/test/src/BinlogStreamUtils.ts +157 -0
  34. package/test/src/env.ts +1 -1
  35. package/test/src/mysql-to-sqlite.test.ts +322 -0
  36. package/test/src/mysql-utils.test.ts +17 -0
  37. package/test/src/util.ts +11 -17
  38. package/test/tsconfig.json +1 -1
  39. package/tsconfig.tsbuildinfo +1 -1
  40. package/dist/utils/mysql_utils.d.ts +0 -17
  41. package/dist/utils/mysql_utils.js +0 -43
  42. package/dist/utils/mysql_utils.js.map +0 -1
@@ -1,17 +0,0 @@
1
- import mysql from 'mysql2';
2
- import mysqlPromise from 'mysql2/promise';
3
- import * as types from '../types/types.js';
4
- export declare const MySQLTypesMap: {
5
- [key: number]: string;
6
- };
7
- export type RetriedQueryOptions = {
8
- connection: mysqlPromise.Connection;
9
- query: string;
10
- params?: any[];
11
- retries?: number;
12
- };
13
- /**
14
- * Retry a simple query - up to 2 attempts total.
15
- */
16
- export declare function retriedQuery(options: RetriedQueryOptions): Promise<[mysql.RowDataPacket[], mysql.FieldPacket[]]>;
17
- export declare function createPool(config: types.NormalizedMySQLConnectionConfig, options?: mysql.PoolOptions): mysql.Pool;
@@ -1,43 +0,0 @@
1
- import { logger } from '@powersync/lib-services-framework';
2
- import mysql from 'mysql2';
3
- export const MySQLTypesMap = {};
4
- for (const [name, code] of Object.entries(mysql.Types)) {
5
- MySQLTypesMap[code] = name;
6
- }
7
- /**
8
- * Retry a simple query - up to 2 attempts total.
9
- */
10
- export async function retriedQuery(options) {
11
- const { connection, query, params = [], retries = 2 } = options;
12
- for (let tries = retries;; tries--) {
13
- try {
14
- logger.debug(`Executing query: ${query}`);
15
- return connection.query(query, params);
16
- }
17
- catch (e) {
18
- if (tries == 1) {
19
- throw e;
20
- }
21
- logger.warn('Query error, retrying', e);
22
- }
23
- }
24
- }
25
- export function createPool(config, options) {
26
- const sslOptions = {
27
- ca: config.cacert,
28
- key: config.client_private_key,
29
- cert: config.client_certificate
30
- };
31
- const hasSSLOptions = Object.values(sslOptions).some((v) => !!v);
32
- return mysql.createPool({
33
- host: config.hostname,
34
- user: config.username,
35
- password: config.password,
36
- database: config.database,
37
- ssl: hasSSLOptions ? sslOptions : undefined,
38
- supportBigNumbers: true,
39
- timezone: 'Z', // Ensure no auto timezone manipulation of the dates occur
40
- ...(options || {})
41
- });
42
- }
43
- //# sourceMappingURL=mysql_utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mysql_utils.js","sourceRoot":"","sources":["../../src/utils/mysql_utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAC3D,OAAO,KAAK,MAAM,QAAQ,CAAC;AAI3B,MAAM,CAAC,MAAM,aAAa,GAA8B,EAAE,CAAC;AAC3D,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;IACvD,aAAa,CAAC,IAAc,CAAC,GAAG,IAAI,CAAC;AACvC,CAAC;AASD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAA4B;IAC7D,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,EAAE,EAAE,OAAO,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC;IAChE,KAAK,IAAI,KAAK,GAAG,OAAO,GAAI,KAAK,EAAE,EAAE,CAAC;QACpC,IAAI,CAAC;YACH,MAAM,CAAC,KAAK,CAAC,oBAAoB,KAAK,EAAE,CAAC,CAAC;YAC1C,OAAO,UAAU,CAAC,KAAK,CAA+B,KAAK,EAAE,MAAM,CAAC,CAAC;QACvE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;gBACf,MAAM,CAAC,CAAC;YACV,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAA6C,EAAE,OAA2B;IACnG,MAAM,UAAU,GAAG;QACjB,EAAE,EAAE,MAAM,CAAC,MAAM;QACjB,GAAG,EAAE,MAAM,CAAC,kBAAkB;QAC9B,IAAI,EAAE,MAAM,CAAC,kBAAkB;KAChC,CAAC;IACF,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjE,OAAO,KAAK,CAAC,UAAU,CAAC;QACtB,IAAI,EAAE,MAAM,CAAC,QAAQ;QACrB,IAAI,EAAE,MAAM,CAAC,QAAQ;QACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;QAC3C,iBAAiB,EAAE,IAAI;QACvB,QAAQ,EAAE,GAAG,EAAE,0DAA0D;QACzE,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;KACnB,CAAC,CAAC;AACL,CAAC"}