@powersync/service-module-postgres-storage 0.1.0 → 0.1.1

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.
@@ -45,7 +45,8 @@ export declare const PostgresStorageConfig: t.Intersection<t.Codec<{
45
45
  cacert?: string | undefined;
46
46
  client_certificate?: string | undefined;
47
47
  client_private_key?: string | undefined;
48
- demo_database?: boolean | undefined;
48
+ tls_servername?: string | undefined;
49
+ reject_ip_ranges?: string[] | undefined;
49
50
  slot_name_prefix?: string | undefined;
50
51
  }, {
51
52
  type: string;
@@ -63,7 +64,8 @@ export declare const PostgresStorageConfig: t.Intersection<t.Codec<{
63
64
  cacert?: string | undefined;
64
65
  client_certificate?: string | undefined;
65
66
  client_private_key?: string | undefined;
66
- demo_database?: boolean | undefined;
67
+ tls_servername?: string | undefined;
68
+ reject_ip_ranges?: string[] | undefined;
67
69
  slot_name_prefix?: string | undefined;
68
70
  }, string, t.CodecProps>, t.ObjectCodec<{
69
71
  /**
@@ -1,9 +1,10 @@
1
1
  import * as lib_postgres from '@powersync/lib-service-postgres';
2
2
  import { isPostgresStorageConfig, normalizePostgresStorageConfig, PostgresStorageConfig } from '../types/types.js';
3
3
  import { STORAGE_SCHEMA_NAME } from '../utils/db.js';
4
+ import { ServiceAssertionError } from '@powersync/lib-services-framework';
4
5
  export const openMigrationDB = (config) => {
5
6
  if (!isPostgresStorageConfig(config)) {
6
- throw new Error(`Input storage configuration is not for Postgres`);
7
+ throw new ServiceAssertionError(`Input storage configuration is not for Postgres`);
7
8
  }
8
9
  return new lib_postgres.DatabaseClient({
9
10
  config: normalizePostgresStorageConfig(PostgresStorageConfig.decode(config)),
@@ -1 +1 @@
1
- {"version":3,"file":"migration-utils.js","sourceRoot":"","sources":["../../src/migrations/migration-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,iCAAiC,CAAC;AAEhE,OAAO,EAAE,uBAAuB,EAAE,8BAA8B,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AACnH,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAErD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,MAAoC,EAAE,EAAE;IACtE,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,IAAI,YAAY,CAAC,cAAc,CAAC;QACrC,MAAM,EAAE,8BAA8B,CAAC,qBAAqB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5E,MAAM,EAAE,mBAAmB;KAC5B,CAAC,CAAC;AACL,CAAC,CAAC"}
1
+ {"version":3,"file":"migration-utils.js","sourceRoot":"","sources":["../../src/migrations/migration-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,iCAAiC,CAAC;AAEhE,OAAO,EAAE,uBAAuB,EAAE,8BAA8B,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AACnH,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAE1E,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,MAAoC,EAAE,EAAE;IACtE,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,qBAAqB,CAAC,iDAAiD,CAAC,CAAC;IACrF,CAAC;IACD,OAAO,IAAI,YAAY,CAAC,cAAc,CAAC;QACrC,MAAM,EAAE,8BAA8B,CAAC,qBAAqB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5E,MAAM,EAAE,mBAAmB;KAC5B,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { logger } from '@powersync/lib-services-framework';
1
+ import { logger, ReplicationAssertionError } from '@powersync/lib-services-framework';
2
2
  import { utils } from '@powersync/service-core';
3
3
  import { BIGINT_MAX } from '../types/codecs.js';
4
4
  import { models } from '../types/types.js';
@@ -248,7 +248,7 @@ export class PostgresCompactor {
248
248
  }
249
249
  }
250
250
  else {
251
- throw new Error(`Unexpected ${op.op} operation at ${this.group_id}:${bucket}:${op.op_id}`);
251
+ throw new ReplicationAssertionError(`Unexpected ${op.op} operation at ${this.group_id}:${bucket}:${op.op_id}`);
252
252
  }
253
253
  }
254
254
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PostgresCompactor.js","sourceRoot":"","sources":["../../src/storage/PostgresCompactor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAC3D,OAAO,EAAW,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAGzD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAqC5D,MAAM,yBAAyB,GAAG,IAAI,CAAC;AACvC,MAAM,wBAAwB,GAAG,IAAI,CAAC;AACtC,MAAM,8BAA8B,GAAG,MAAM,CAAC;AAE9C,2CAA2C;AAC3C,MAAM,uBAAuB,GAAG,EAAE,CAAC;AAEnC,MAAM,OAAO,iBAAiB;IAWlB;IACA;IAXF,OAAO,GAAuB,EAAE,CAAC;IAEjC,YAAY,CAAS;IACrB,cAAc,CAAS;IACvB,mBAAmB,CAAS;IAC5B,eAAe,CAAS;IACxB,OAAO,CAAqB;IAC5B,OAAO,CAAuB;IAEtC,YACU,EAA+B,EAC/B,QAAgB,EACxB,OAAgC;QAFxB,OAAE,GAAF,EAAE,CAA6B;QAC/B,aAAQ,GAAR,QAAQ,CAAQ;QAGxB,IAAI,CAAC,YAAY,GAAG,CAAC,OAAO,EAAE,aAAa,IAAI,uBAAuB,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;QACtF,IAAI,CAAC,cAAc,GAAG,OAAO,EAAE,cAAc,IAAI,wBAAwB,CAAC;QAC1E,IAAI,CAAC,mBAAmB,GAAG,OAAO,EAAE,mBAAmB,IAAI,8BAA8B,CAAC;QAC1F,IAAI,CAAC,eAAe,GAAG,OAAO,EAAE,eAAe,IAAI,yBAAyB,CAAC;QAC7E,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,OAAO,CAAC;QAChC,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,cAAc,CAAC;IACzC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,OAAO;QACX,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,KAAK,IAAI,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBAChC,wDAAwD;gBACxD,yCAAyC;gBACzC,0DAA0D;gBAC1D,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,MAA0B;QAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QAEvC,IAAI,YAAY,GAA8B,IAAI,CAAC;QAEnD,IAAI,WAAW,GAAkB,IAAI,CAAC;QACtC,IAAI,WAAW,GAAkB,IAAI,CAAC;QAEtC,IAAI,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,oBAAoB;YACpB,WAAW,GAAG,MAAM,CAAC;YACrB,WAAW,GAAG,MAAM,CAAC;QACvB,CAAC;aAAM,IAAI,MAAM,EAAE,CAAC;YAClB,yBAAyB;YACzB,WAAW,GAAG,GAAG,MAAM,GAAG,CAAC;YAC3B,WAAW,GAAG,GAAG,MAAM,SAAS,CAAC;QACnC,CAAC;QAED,IAAI,cAAc,GAAG,UAAU,CAAC;QAEhC,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAA;;;;;;;;;;;;uBAYd,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE;0CACnB,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE;wBACzD,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE;;;;;YAKnD,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,mBAAmB,EAAE;OACtD;iBACE,OAAO,CACN,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAC9G;iBACA,IAAI,EAAE,CAAC;YAEV,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBACtB,wBAAwB;gBACxB,MAAM;YACR,CAAC;YAED,oCAAoC;YACpC,cAAc,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;YAE/C,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;gBACxB,IAAI,YAAY,IAAI,IAAI,IAAI,GAAG,CAAC,WAAW,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;oBACnE,IAAI,YAAY,IAAI,IAAI,IAAI,YAAY,CAAC,UAAU,IAAI,IAAI,IAAI,YAAY,CAAC,WAAW,IAAI,CAAC,EAAE,CAAC;wBAC7F,0CAA0C;wBAC1C,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;wBACnB,MAAM,CAAC,IAAI,CACT,sBAAsB,IAAI,CAAC,QAAQ,IAAI,YAAY,CAAC,MAAM,IAAI,YAAY,CAAC,UAAU,cAAc,YAAY,CAAC,WAAW,aAAa,CACzI,CAAC;wBAEF,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;wBACnC,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,CAAC;wBACxC,qCAAqC;wBACrC,YAAY,GAAG,IAAI,CAAC;wBACpB,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;oBAC1C,CAAC;oBACD,YAAY,GAAG;wBACb,MAAM,EAAE,GAAG,CAAC,WAAW;wBACvB,IAAI,EAAE,IAAI,GAAG,EAAE;wBACf,YAAY,EAAE,CAAC;wBACf,UAAU,EAAE,IAAI;wBAChB,WAAW,EAAE,CAAC;qBACf,CAAC;gBACJ,CAAC;gBAED,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,IAAI,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;oBACrD,SAAS;gBACX,CAAC;gBAED,IAAI,eAAe,GAAG,GAAG,CAAC,EAAE,IAAI,KAAK,CAAC;gBAEtC,IAAI,GAAG,CAAC,EAAE,IAAI,QAAQ,IAAI,GAAG,CAAC,EAAE,IAAI,KAAK,EAAE,CAAC;oBAC1C,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,MAAM,IAAI,eAAe,CAAC,GAAG,CAAC,YAAa,EAAE,GAAG,CAAC,UAAW,CAAC,EAAE,CAAC;oBACrG,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;oBAC3D,IAAI,QAAQ,EAAE,CAAC;wBACb,8CAA8C;wBAC9C,eAAe,GAAG,KAAK,CAAC;wBAExB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAA;;;;8BAIH,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE;;;;;;;6BAOlC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE;oCAC/B,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,CAAC,WAAW,EAAE;8BACjD,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE;aACnD,CAAC,CAAC;oBACL,CAAC;yBAAM,CAAC;wBACN,IAAI,YAAY,CAAC,YAAY,IAAI,YAAY,EAAE,CAAC;4BAC9C,wBAAwB;4BACxB,6CAA6C;wBAC/C,CAAC;6BAAM,CAAC;4BACN,4DAA4D;4BAC5D,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;4BACrD,6BAA6B;4BAC7B,oBAAoB;4BACpB,sBAAsB;4BACtB,6BAA6B;4BAC7B,YAAY,CAAC,YAAY,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC;wBAChD,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,IAAI,eAAe,EAAE,CAAC;oBACpB,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC;oBAC/B,YAAY,CAAC,WAAW,GAAG,CAAC,CAAC;gBAC/B,CAAC;qBAAM,IAAI,GAAG,CAAC,EAAE,IAAI,OAAO,EAAE,CAAC;oBAC7B,IAAI,YAAY,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC;wBACpC,YAAY,CAAC,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC;oBACtC,CAAC;oBACD,YAAY,CAAC,WAAW,IAAI,CAAC,CAAC;gBAChC,CAAC;gBAED,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;oBAC/C,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;gBACrB,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACnB,YAAY,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QAC3B,IAAI,YAAY,EAAE,UAAU,IAAI,IAAI,IAAI,YAAY,EAAE,WAAW,GAAG,CAAC,EAAE,CAAC;YACtE,MAAM,CAAC,IAAI,CACT,sBAAsB,IAAI,CAAC,QAAQ,IAAI,YAAY,CAAC,MAAM,IAAI,YAAY,CAAC,UAAU,cAAc,YAAY,CAAC,WAAW,aAAa,CACzI,CAAC;YACF,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;YACnC,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,CAAC;YACxC,qCAAqC;YACrC,YAAY,GAAG,IAAI,CAAC;YACpB,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,KAAK;QACjB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,OAAO,CAAC,MAAM,MAAM,CAAC,CAAC;YACrD,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;YACrC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QACpB,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,WAAW,CAAC,MAAc,EAAE,EAAU;QAClD;;;WAGG;QACH,IAAI,IAAI,GAAG,KAAK,CAAC;QACjB,OAAO,CAAC,IAAI,EAAE,CAAC;YACb,MAAM,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;gBACxC;;;mBAGG;gBACH,MAAM,EAAE,CAAC,GAAG,CAAA,mDAAmD,CAAC,OAAO,EAAE,CAAC;gBAE1E,IAAI,CAAC;oBACH,IAAI,QAAQ,GAAG,CAAC,CAAC;oBACjB,IAAI,QAAQ,GAAkB,IAAI,CAAC;oBACnC,IAAI,QAAQ,GAAkB,IAAI,CAAC;oBACnC,IAAI,OAAO,GAAG,KAAK,CAAC;oBAEpB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC;oBAC9G,IAAI,KAAK,EAAE,MAAM,UAAU,IAAI,EAAE,CAAC,UAAU,CAA0B,GAAG,CAAA;;;;;;;;;;;2BAWxD,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE;kCAC/B,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE;6BACvC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;;;;gBAIxC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE;WAClD,CAAC,EAAE,CAAC;wBACH,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC1D,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;4BAC5B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;gCACpF,QAAQ,GAAG,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;gCAC7D,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC;gCACpB,IAAI,EAAE,CAAC,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;oCACjC,OAAO,GAAG,IAAI,CAAC;gCACjB,CAAC;gCACD,IAAI,EAAE,CAAC,SAAS,IAAI,IAAI,EAAE,CAAC;oCACzB,IAAI,QAAQ,IAAI,IAAI,IAAI,EAAE,CAAC,SAAS,GAAG,QAAQ,EAAE,CAAC;wCAChD,QAAQ,GAAG,EAAE,CAAC,SAAS,CAAC;oCAC1B,CAAC;gCACH,CAAC;4BACH,CAAC;iCAAM,CAAC;gCACN,MAAM,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC,EAAE,iBAAiB,IAAI,CAAC,QAAQ,IAAI,MAAM,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;4BAC7F,CAAC;wBACH,CAAC;oBACH,CAAC;oBAED,IAAI,CAAC,OAAO,EAAE,CAAC;wBACb,MAAM,EAAE,CAAC,GAAG,CAAA,QAAQ,CAAC,OAAO,EAAE,CAAC;wBAC/B,IAAI,GAAG,IAAI,CAAC;wBACZ,OAAO;oBACT,CAAC;oBAED,MAAM,CAAC,IAAI,CAAC,qBAAqB,QAAQ,EAAE,CAAC,CAAC;oBAE7C,MAAM,EAAE,CAAC,GAAG,CAAA;;;2BAGK,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE;kCAC/B,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE;6BACvC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE;WACnD,CAAC,OAAO,EAAE,CAAC;oBAEZ,MAAM,EAAE,CAAC,GAAG,CAAA;;;;;;;;;;;;kBAYJ,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE;kBACtC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE;kBAClC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE;kBACjC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE;kBAC/C,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE;kBACjC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE;;WAExC,CAAC,OAAO,EAAE,CAAC;oBAEZ,MAAM,EAAE,CAAC,GAAG,CAAA,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACjC,CAAC;gBAAC,OAAO,EAAE,EAAE,CAAC;oBACZ,MAAM,EAAE,CAAC,GAAG,CAAA,UAAU,CAAC,OAAO,EAAE,CAAC;oBACjC,MAAM,EAAE,CAAC;gBACX,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"PostgresCompactor.js","sourceRoot":"","sources":["../../src/storage/PostgresCompactor.ts"],"names":[],"mappings":"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"}
@@ -50,7 +50,7 @@ var __disposeResources = (this && this.__disposeResources) || (function (Suppres
50
50
  var e = new Error(message);
51
51
  return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
52
52
  });
53
- import { DisposableObserver } from '@powersync/lib-services-framework';
53
+ import { DisposableObserver, ReplicationAssertionError } from '@powersync/lib-services-framework';
54
54
  import { storage, utils } from '@powersync/service-core';
55
55
  import { JSONBig } from '@powersync/service-jsonbig';
56
56
  import * as uuid from 'uuid';
@@ -107,12 +107,12 @@ export class PostgresSyncRulesStorage extends DisposableObserver {
107
107
  }
108
108
  async reportError(e) {
109
109
  const message = String(e.message ?? 'Replication failure');
110
- await this.db.sql `
111
- UPDATE sync_rules
112
- SET
113
- last_fatal_error = ${{ type: 'varchar', value: message }}
114
- WHERE
115
- id = ${{ type: 'int4', value: this.group_id }};
110
+ await this.db.sql `
111
+ UPDATE sync_rules
112
+ SET
113
+ last_fatal_error = ${{ type: 'varchar', value: message }}
114
+ WHERE
115
+ id = ${{ type: 'int4', value: this.group_id }};
116
116
  `.execute();
117
117
  }
118
118
  compact(options) {
@@ -140,14 +140,14 @@ export class PostgresSyncRulesStorage extends DisposableObserver {
140
140
  return this.writeCheckpointAPI.createManagedWriteCheckpoint(checkpoint);
141
141
  }
142
142
  async getCheckpoint() {
143
- const checkpointRow = await this.db.sql `
144
- SELECT
145
- last_checkpoint,
146
- last_checkpoint_lsn
147
- FROM
148
- sync_rules
149
- WHERE
150
- id = ${{ type: 'int4', value: this.group_id }}
143
+ const checkpointRow = await this.db.sql `
144
+ SELECT
145
+ last_checkpoint,
146
+ last_checkpoint_lsn
147
+ FROM
148
+ sync_rules
149
+ WHERE
150
+ id = ${{ type: 'int4', value: this.group_id }}
151
151
  `
152
152
  .decoded(pick(models.SyncRules, ['last_checkpoint', 'last_checkpoint_lsn']))
153
153
  .first();
@@ -166,46 +166,46 @@ export class PostgresSyncRulesStorage extends DisposableObserver {
166
166
  type_oid: typeof column.typeId !== 'undefined' ? Number(column.typeId) : column.typeId
167
167
  }));
168
168
  return this.db.transaction(async (db) => {
169
- let sourceTableRow = await db.sql `
170
- SELECT
171
- *
172
- FROM
173
- source_tables
174
- WHERE
175
- group_id = ${{ type: 'int4', value: group_id }}
176
- AND connection_id = ${{ type: 'int4', value: connection_id }}
177
- AND relation_id = ${{ type: 'jsonb', value: { object_id: objectId } }}
178
- AND schema_name = ${{ type: 'varchar', value: schema }}
179
- AND table_name = ${{ type: 'varchar', value: table }}
180
- AND replica_id_columns = ${{ type: 'jsonb', value: columns }}
169
+ let sourceTableRow = await db.sql `
170
+ SELECT
171
+ *
172
+ FROM
173
+ source_tables
174
+ WHERE
175
+ group_id = ${{ type: 'int4', value: group_id }}
176
+ AND connection_id = ${{ type: 'int4', value: connection_id }}
177
+ AND relation_id = ${{ type: 'jsonb', value: { object_id: objectId } }}
178
+ AND schema_name = ${{ type: 'varchar', value: schema }}
179
+ AND table_name = ${{ type: 'varchar', value: table }}
180
+ AND replica_id_columns = ${{ type: 'jsonb', value: columns }}
181
181
  `
182
182
  .decoded(models.SourceTable)
183
183
  .first();
184
184
  if (sourceTableRow == null) {
185
- const row = await db.sql `
186
- INSERT INTO
187
- source_tables (
188
- id,
189
- group_id,
190
- connection_id,
191
- relation_id,
192
- schema_name,
193
- table_name,
194
- replica_id_columns
195
- )
196
- VALUES
197
- (
198
- ${{ type: 'varchar', value: uuid.v4() }},
199
- ${{ type: 'int4', value: group_id }},
200
- ${{ type: 'int4', value: connection_id }},
201
- --- The objectId can be string | number, we store it as jsonb value
202
- ${{ type: 'jsonb', value: { object_id: objectId } }},
203
- ${{ type: 'varchar', value: schema }},
204
- ${{ type: 'varchar', value: table }},
205
- ${{ type: 'jsonb', value: columns }}
206
- )
207
- RETURNING
208
- *
185
+ const row = await db.sql `
186
+ INSERT INTO
187
+ source_tables (
188
+ id,
189
+ group_id,
190
+ connection_id,
191
+ relation_id,
192
+ schema_name,
193
+ table_name,
194
+ replica_id_columns
195
+ )
196
+ VALUES
197
+ (
198
+ ${{ type: 'varchar', value: uuid.v4() }},
199
+ ${{ type: 'int4', value: group_id }},
200
+ ${{ type: 'int4', value: connection_id }},
201
+ --- The objectId can be string | number, we store it as jsonb value
202
+ ${{ type: 'jsonb', value: { object_id: objectId } }},
203
+ ${{ type: 'varchar', value: schema }},
204
+ ${{ type: 'varchar', value: table }},
205
+ ${{ type: 'jsonb', value: columns }}
206
+ )
207
+ RETURNING
208
+ *
209
209
  `
210
210
  .decoded(models.SourceTable)
211
211
  .first();
@@ -215,22 +215,22 @@ export class PostgresSyncRulesStorage extends DisposableObserver {
215
215
  sourceTable.syncEvent = options.sync_rules.tableTriggersEvent(sourceTable);
216
216
  sourceTable.syncData = options.sync_rules.tableSyncsData(sourceTable);
217
217
  sourceTable.syncParameters = options.sync_rules.tableSyncsParameters(sourceTable);
218
- const truncatedTables = await db.sql `
219
- SELECT
220
- *
221
- FROM
222
- source_tables
223
- WHERE
224
- group_id = ${{ type: 'int4', value: group_id }}
225
- AND connection_id = ${{ type: 'int4', value: connection_id }}
226
- AND id != ${{ type: 'varchar', value: sourceTableRow.id }}
227
- AND (
228
- relation_id = ${{ type: 'jsonb', value: { object_id: objectId } }}
229
- OR (
230
- schema_name = ${{ type: 'varchar', value: schema }}
231
- AND table_name = ${{ type: 'varchar', value: table }}
232
- )
233
- )
218
+ const truncatedTables = await db.sql `
219
+ SELECT
220
+ *
221
+ FROM
222
+ source_tables
223
+ WHERE
224
+ group_id = ${{ type: 'int4', value: group_id }}
225
+ AND connection_id = ${{ type: 'int4', value: connection_id }}
226
+ AND id != ${{ type: 'varchar', value: sourceTableRow.id }}
227
+ AND (
228
+ relation_id = ${{ type: 'jsonb', value: { object_id: objectId } }}
229
+ OR (
230
+ schema_name = ${{ type: 'varchar', value: schema }}
231
+ AND table_name = ${{ type: 'varchar', value: table }}
232
+ )
233
+ )
234
234
  `
235
235
  .decoded(models.SourceTable)
236
236
  .rows();
@@ -247,15 +247,15 @@ export class PostgresSyncRulesStorage extends DisposableObserver {
247
247
  async startBatch(options, callback) {
248
248
  const env_1 = { stack: [], error: void 0, hasError: false };
249
249
  try {
250
- const syncRules = await this.db.sql `
251
- SELECT
252
- last_checkpoint_lsn,
253
- no_checkpoint_before,
254
- keepalive_op
255
- FROM
256
- sync_rules
257
- WHERE
258
- id = ${{ type: 'int4', value: this.group_id }}
250
+ const syncRules = await this.db.sql `
251
+ SELECT
252
+ last_checkpoint_lsn,
253
+ no_checkpoint_before,
254
+ keepalive_op
255
+ FROM
256
+ sync_rules
257
+ WHERE
258
+ id = ${{ type: 'int4', value: this.group_id }}
259
259
  `
260
260
  .decoded(pick(models.SyncRules, ['last_checkpoint_lsn', 'no_checkpoint_before', 'keepalive_op']))
261
261
  .first();
@@ -293,32 +293,32 @@ export class PostgresSyncRulesStorage extends DisposableObserver {
293
293
  }
294
294
  }
295
295
  async getParameterSets(checkpoint, lookups) {
296
- const rows = await this.db.sql `
297
- SELECT DISTINCT
298
- ON (lookup, source_table, source_key) lookup,
299
- source_table,
300
- source_key,
301
- id,
302
- bucket_parameters
303
- FROM
304
- bucket_parameters
305
- WHERE
306
- group_id = ${{ type: 'int4', value: this.group_id }}
307
- AND lookup = ANY (
308
- SELECT
309
- decode((FILTER ->> 0)::text, 'hex') -- Decode the hex string to bytea
310
- FROM
296
+ const rows = await this.db.sql `
297
+ SELECT DISTINCT
298
+ ON (lookup, source_table, source_key) lookup,
299
+ source_table,
300
+ source_key,
301
+ id,
302
+ bucket_parameters
303
+ FROM
304
+ bucket_parameters
305
+ WHERE
306
+ group_id = ${{ type: 'int4', value: this.group_id }}
307
+ AND lookup = ANY (
308
+ SELECT
309
+ decode((FILTER ->> 0)::text, 'hex') -- Decode the hex string to bytea
310
+ FROM
311
311
  jsonb_array_elements(${{
312
312
  type: 'jsonb',
313
313
  value: lookups.map((l) => storage.serializeLookupBuffer(l).toString('hex'))
314
- }}) AS FILTER
315
- )
316
- AND id <= ${{ type: 'int8', value: BigInt(checkpoint) }}
317
- ORDER BY
318
- lookup,
319
- source_table,
320
- source_key,
321
- id DESC
314
+ }}) AS FILTER
315
+ )
316
+ AND id <= ${{ type: 'int8', value: BigInt(checkpoint) }}
317
+ ORDER BY
318
+ lookup,
319
+ source_table,
320
+ source_key,
321
+ id DESC
322
322
  `
323
323
  .decoded(pick(models.BucketParameters, ['bucket_parameters']))
324
324
  .rows();
@@ -375,21 +375,21 @@ export class PostgresSyncRulesStorage extends DisposableObserver {
375
375
  * 1 million rows were only synced before a 5 minute timeout.
376
376
  */
377
377
  for await (const rows of this.db.streamRows({
378
- statement: `
379
- SELECT
380
- *
381
- FROM
382
- bucket_data
383
- WHERE
384
- group_id = $1
385
- and op_id <= $2
386
- and (
387
- ${filters.map((f, index) => `(bucket_name = $${index * 2 + 4} and op_id > $${index * 2 + 5})`).join(' OR ')}
388
- )
389
- ORDER BY
390
- bucket_name ASC,
391
- op_id ASC
392
- LIMIT
378
+ statement: `
379
+ SELECT
380
+ *
381
+ FROM
382
+ bucket_data
383
+ WHERE
384
+ group_id = $1
385
+ and op_id <= $2
386
+ and (
387
+ ${filters.map((f, index) => `(bucket_name = $${index * 2 + 4} and op_id > $${index * 2 + 5})`).join(' OR ')}
388
+ )
389
+ ORDER BY
390
+ bucket_name ASC,
391
+ op_id ASC
392
+ LIMIT
393
393
  $3;`,
394
394
  params: [
395
395
  { type: 'int4', value: this.group_id },
@@ -428,7 +428,7 @@ export class PostgresSyncRulesStorage extends DisposableObserver {
428
428
  }
429
429
  start ??= dataBuckets.get(bucket_name);
430
430
  if (start == null) {
431
- throw new Error(`data for unexpected bucket: ${bucket_name}`);
431
+ throw new ReplicationAssertionError(`data for unexpected bucket: ${bucket_name}`);
432
432
  }
433
433
  currentBatch = {
434
434
  bucket: bucket_name,
@@ -471,25 +471,25 @@ export class PostgresSyncRulesStorage extends DisposableObserver {
471
471
  if (!options || options?.clearStorage) {
472
472
  await this.clear();
473
473
  }
474
- await this.db.sql `
475
- UPDATE sync_rules
476
- SET
477
- state = ${{ type: 'varchar', value: storage.SyncRuleState.TERMINATED }},
478
- snapshot_done = ${{ type: 'bool', value: false }}
479
- WHERE
480
- id = ${{ type: 'int4', value: this.group_id }}
474
+ await this.db.sql `
475
+ UPDATE sync_rules
476
+ SET
477
+ state = ${{ type: 'varchar', value: storage.SyncRuleState.TERMINATED }},
478
+ snapshot_done = ${{ type: 'bool', value: false }}
479
+ WHERE
480
+ id = ${{ type: 'int4', value: this.group_id }}
481
481
  `.execute();
482
482
  }
483
483
  async getStatus() {
484
- const syncRulesRow = await this.db.sql `
485
- SELECT
486
- snapshot_done,
487
- last_checkpoint_lsn,
488
- state
489
- FROM
490
- sync_rules
491
- WHERE
492
- id = ${{ type: 'int4', value: this.group_id }}
484
+ const syncRulesRow = await this.db.sql `
485
+ SELECT
486
+ snapshot_done,
487
+ last_checkpoint_lsn,
488
+ state
489
+ FROM
490
+ sync_rules
491
+ WHERE
492
+ id = ${{ type: 'int4', value: this.group_id }}
493
493
  `
494
494
  .decoded(pick(models.SyncRules, ['snapshot_done', 'last_checkpoint_lsn', 'state']))
495
495
  .first();
@@ -503,65 +503,65 @@ export class PostgresSyncRulesStorage extends DisposableObserver {
503
503
  };
504
504
  }
505
505
  async clear() {
506
- await this.db.sql `
507
- UPDATE sync_rules
508
- SET
509
- snapshot_done = FALSE,
510
- last_checkpoint_lsn = NULL,
511
- last_checkpoint = NULL,
512
- no_checkpoint_before = NULL
513
- WHERE
514
- id = ${{ type: 'int4', value: this.group_id }}
506
+ await this.db.sql `
507
+ UPDATE sync_rules
508
+ SET
509
+ snapshot_done = FALSE,
510
+ last_checkpoint_lsn = NULL,
511
+ last_checkpoint = NULL,
512
+ no_checkpoint_before = NULL
513
+ WHERE
514
+ id = ${{ type: 'int4', value: this.group_id }}
515
515
  `.execute();
516
- await this.db.sql `
517
- DELETE FROM bucket_data
518
- WHERE
519
- group_id = ${{ type: 'int4', value: this.group_id }}
516
+ await this.db.sql `
517
+ DELETE FROM bucket_data
518
+ WHERE
519
+ group_id = ${{ type: 'int4', value: this.group_id }}
520
520
  `.execute();
521
- await this.db.sql `
522
- DELETE FROM bucket_parameters
523
- WHERE
524
- group_id = ${{ type: 'int4', value: this.group_id }}
521
+ await this.db.sql `
522
+ DELETE FROM bucket_parameters
523
+ WHERE
524
+ group_id = ${{ type: 'int4', value: this.group_id }}
525
525
  `.execute();
526
- await this.db.sql `
527
- DELETE FROM current_data
528
- WHERE
529
- group_id = ${{ type: 'int4', value: this.group_id }}
526
+ await this.db.sql `
527
+ DELETE FROM current_data
528
+ WHERE
529
+ group_id = ${{ type: 'int4', value: this.group_id }}
530
530
  `.execute();
531
- await this.db.sql `
532
- DELETE FROM source_tables
533
- WHERE
534
- group_id = ${{ type: 'int4', value: this.group_id }}
531
+ await this.db.sql `
532
+ DELETE FROM source_tables
533
+ WHERE
534
+ group_id = ${{ type: 'int4', value: this.group_id }}
535
535
  `.execute();
536
536
  }
537
537
  async autoActivate() {
538
538
  await this.db.transaction(async (db) => {
539
- const syncRulesRow = await db.sql `
540
- SELECT
541
- state
542
- FROM
543
- sync_rules
544
- WHERE
545
- id = ${{ type: 'int4', value: this.group_id }}
539
+ const syncRulesRow = await db.sql `
540
+ SELECT
541
+ state
542
+ FROM
543
+ sync_rules
544
+ WHERE
545
+ id = ${{ type: 'int4', value: this.group_id }}
546
546
  `
547
547
  .decoded(pick(models.SyncRules, ['state']))
548
548
  .first();
549
549
  if (syncRulesRow && syncRulesRow.state == storage.SyncRuleState.PROCESSING) {
550
- await db.sql `
551
- UPDATE sync_rules
552
- SET
553
- state = ${{ type: 'varchar', value: storage.SyncRuleState.ACTIVE }}
554
- WHERE
555
- id = ${{ type: 'int4', value: this.group_id }}
550
+ await db.sql `
551
+ UPDATE sync_rules
552
+ SET
553
+ state = ${{ type: 'varchar', value: storage.SyncRuleState.ACTIVE }}
554
+ WHERE
555
+ id = ${{ type: 'int4', value: this.group_id }}
556
556
  `.execute();
557
557
  }
558
- await db.sql `
559
- UPDATE sync_rules
560
- SET
561
- state = ${{ type: 'varchar', value: storage.SyncRuleState.STOP }}
562
- WHERE
563
- state = ${{ type: 'varchar', value: storage.SyncRuleState.ACTIVE }}
564
- AND id != ${{ type: 'int4', value: this.group_id }}
558
+ await db.sql `
559
+ UPDATE sync_rules
560
+ SET
561
+ state = ${{ type: 'varchar', value: storage.SyncRuleState.STOP }}
562
+ WHERE
563
+ state = ${{ type: 'varchar', value: storage.SyncRuleState.ACTIVE }}
564
+ AND id != ${{ type: 'int4', value: this.group_id }}
565
565
  `.execute();
566
566
  });
567
567
  }
@@ -573,35 +573,35 @@ export class PostgresSyncRulesStorage extends DisposableObserver {
573
573
  ...b,
574
574
  start: b.start ?? 0
575
575
  }));
576
- const results = await this.db.sql `
577
- WITH
578
- filter_data AS (
579
- SELECT
580
- FILTER ->> 'bucket' AS bucket_name,
581
- (FILTER ->> 'start')::BIGINT AS start_op_id,
582
- (FILTER ->> 'end')::BIGINT AS end_op_id
583
- FROM
584
- jsonb_array_elements(${{ type: 'jsonb', value: rangedBatch }}::jsonb) AS FILTER
585
- )
586
- SELECT
587
- b.bucket_name AS bucket,
588
- SUM(b.checksum) AS checksum_total,
589
- COUNT(*) AS total,
590
- MAX(
591
- CASE
592
- WHEN b.op = 'CLEAR' THEN 1
593
- ELSE 0
594
- END
595
- ) AS has_clear_op
596
- FROM
597
- bucket_data b
598
- JOIN filter_data f ON b.bucket_name = f.bucket_name
599
- AND b.op_id > f.start_op_id
600
- AND b.op_id <= f.end_op_id
601
- WHERE
602
- b.group_id = ${{ type: 'int4', value: this.group_id }}
603
- GROUP BY
604
- b.bucket_name;
576
+ const results = await this.db.sql `
577
+ WITH
578
+ filter_data AS (
579
+ SELECT
580
+ FILTER ->> 'bucket' AS bucket_name,
581
+ (FILTER ->> 'start')::BIGINT AS start_op_id,
582
+ (FILTER ->> 'end')::BIGINT AS end_op_id
583
+ FROM
584
+ jsonb_array_elements(${{ type: 'jsonb', value: rangedBatch }}::jsonb) AS FILTER
585
+ )
586
+ SELECT
587
+ b.bucket_name AS bucket,
588
+ SUM(b.checksum) AS checksum_total,
589
+ COUNT(*) AS total,
590
+ MAX(
591
+ CASE
592
+ WHEN b.op = 'CLEAR' THEN 1
593
+ ELSE 0
594
+ END
595
+ ) AS has_clear_op
596
+ FROM
597
+ bucket_data b
598
+ JOIN filter_data f ON b.bucket_name = f.bucket_name
599
+ AND b.op_id > f.start_op_id
600
+ AND b.op_id <= f.end_op_id
601
+ WHERE
602
+ b.group_id = ${{ type: 'int4', value: this.group_id }}
603
+ GROUP BY
604
+ b.bucket_name;
605
605
  `.rows();
606
606
  return new Map(results.map((doc) => {
607
607
  return [