@powersync/service-core 0.0.0-dev-20260225093637 → 0.0.0-dev-20260225160713
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/CHANGELOG.md +8 -7
- package/dist/entry/commands/config-command.js +1 -1
- package/dist/entry/commands/config-command.js.map +1 -1
- package/dist/routes/endpoints/admin.js +2 -1
- package/dist/routes/endpoints/admin.js.map +1 -1
- package/dist/storage/BucketStorageFactory.d.ts +22 -8
- package/dist/storage/BucketStorageFactory.js +14 -2
- package/dist/storage/BucketStorageFactory.js.map +1 -1
- package/dist/storage/PersistedSyncRulesContent.d.ts +3 -1
- package/dist/storage/PersistedSyncRulesContent.js +29 -6
- package/dist/storage/PersistedSyncRulesContent.js.map +1 -1
- package/dist/util/env.js +1 -1
- package/package.json +5 -5
- package/src/entry/commands/config-command.ts +1 -1
- package/src/routes/endpoints/admin.ts +2 -1
- package/src/storage/BucketStorageFactory.ts +47 -4
- package/src/storage/PersistedSyncRulesContent.ts +39 -6
- package/src/util/env.ts +1 -1
- package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
# @powersync/service-core
|
|
2
2
|
|
|
3
|
-
## 0.0.0-dev-
|
|
3
|
+
## 0.0.0-dev-20260225160713
|
|
4
4
|
|
|
5
5
|
### Minor Changes
|
|
6
6
|
|
|
7
7
|
- 0998251: For errors related to a sync configuration, report a source offset.
|
|
8
8
|
- 8a4c34e: Refactor `BucketStorageFactory` and `PersistedSyncRulesContent` to be abstract classes instead of interfaces.
|
|
9
|
-
-
|
|
9
|
+
- c683322: Renamed `sync_rules` to `sync_config` in the PowerSync service configuration. The old `sync_rules` field is deprecated but still supported for backwards compatibility.
|
|
10
10
|
- 8bd83e8: Introduce storage versions.
|
|
11
|
+
- 83989b2: Store compiled sync plans in bucket storage.
|
|
11
12
|
|
|
12
13
|
### Patch Changes
|
|
13
14
|
|
|
@@ -24,14 +25,14 @@
|
|
|
24
25
|
- Updated dependencies [1c45667]
|
|
25
26
|
- Updated dependencies [8785a3f]
|
|
26
27
|
- Updated dependencies [d7ff4ad]
|
|
27
|
-
- Updated dependencies [
|
|
28
|
+
- Updated dependencies [c683322]
|
|
28
29
|
- Updated dependencies [8bd83e8]
|
|
29
30
|
- Updated dependencies [79a9729]
|
|
30
31
|
- Updated dependencies [5edd95f]
|
|
31
|
-
- @powersync/service-types@0.0.0-dev-
|
|
32
|
-
- @powersync/service-sync-rules@0.0.0-dev-
|
|
33
|
-
- @powersync/lib-services-framework@0.0.0-dev-
|
|
34
|
-
- @powersync/service-rsocket-router@0.0.0-dev-
|
|
32
|
+
- @powersync/service-types@0.0.0-dev-20260225160713
|
|
33
|
+
- @powersync/service-sync-rules@0.0.0-dev-20260225160713
|
|
34
|
+
- @powersync/lib-services-framework@0.0.0-dev-20260225160713
|
|
35
|
+
- @powersync/service-rsocket-router@0.0.0-dev-20260225160713
|
|
35
36
|
|
|
36
37
|
## 1.19.2
|
|
37
38
|
|
|
@@ -6,7 +6,7 @@ export function wrapConfigCommand(command) {
|
|
|
6
6
|
return command
|
|
7
7
|
.option(`-c, --config-path [path]`, 'Path (inside container) to YAML config file. Defaults to process.env.POWERSYNC_CONFIG_PATH', util.env.POWERSYNC_CONFIG_PATH)
|
|
8
8
|
.option(`-c64, --config-base64 [base64]`, 'Base64 encoded YAML or JSON config file. Defaults to process.env.POWERSYNC_CONFIG_B64', util.env.POWERSYNC_CONFIG_B64)
|
|
9
|
-
.option(`-sync64, --sync-base64 [base64]`, 'Base64 encoded YAML Sync
|
|
9
|
+
.option(`-sync64, --sync-base64 [base64]`, 'Base64 encoded YAML Sync Config. Defaults to process.env.POWERSYNC_SYNC_CONFIG_B64 or process.env.POWERSYNC_SYNC_RULES_B64 for backwards compatility.', util.env.POWERSYNC_SYNC_CONFIG_B64 || util.env.POWERSYNC_SYNC_RULES_B64);
|
|
10
10
|
}
|
|
11
11
|
/**
|
|
12
12
|
* Extracts runner configuration params from Command options.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-command.js","sourceRoot":"","sources":["../../../src/entry/commands/config-command.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,IAAI,MAAM,0BAA0B,CAAC;AAEjD;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAgB;IAChD,OAAO,OAAO;SACX,MAAM,CACL,0BAA0B,EAC1B,4FAA4F,EAC5F,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAC/B;SACA,MAAM,CACL,gCAAgC,EAChC,uFAAuF,EACvF,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAC9B;SACA,MAAM,CACL,iCAAiC,EACjC,
|
|
1
|
+
{"version":3,"file":"config-command.js","sourceRoot":"","sources":["../../../src/entry/commands/config-command.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,IAAI,MAAM,0BAA0B,CAAC;AAEjD;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAgB;IAChD,OAAO,OAAO;SACX,MAAM,CACL,0BAA0B,EAC1B,4FAA4F,EAC5F,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAC/B;SACA,MAAM,CACL,gCAAgC,EAChC,uFAAuF,EACvF,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAC9B;SACA,MAAM,CACL,iCAAiC,EACjC,uJAAuJ,EACvJ,IAAI,CAAC,GAAG,CAAC,yBAAyB,IAAI,IAAI,CAAC,GAAG,CAAC,wBAAwB,CACxE,CAAC;AACN,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAY;IAC/C,OAAO;QACL,WAAW,EAAE,OAAO,CAAC,UAAU;QAC/B,aAAa,EAAE,OAAO,CAAC,YAAY;QACnC,kBAAkB,EAAE,OAAO,CAAC,UAAU;KACvC,CAAC;AACJ,CAAC"}
|
|
@@ -165,7 +165,8 @@ export const validate = routeDefinition({
|
|
|
165
165
|
active: false,
|
|
166
166
|
last_checkpoint_lsn: '',
|
|
167
167
|
storageVersion: storage.LEGACY_STORAGE_VERSION,
|
|
168
|
-
sync_rules_content: content
|
|
168
|
+
sync_rules_content: content,
|
|
169
|
+
compiled_plan: null
|
|
169
170
|
});
|
|
170
171
|
const connectionStatus = await apiHandler.getConnectionStatus();
|
|
171
172
|
if (!connectionStatus) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin.js","sourceRoot":"","sources":["../../../src/routes/endpoints/admin.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"admin.js","sourceRoot":"","sources":["../../../src/routes/endpoints/admin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AACtF,OAAO,EAAgB,YAAY,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AACzF,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,KAAK,GAAG,MAAM,wBAAwB,CAAC;AAC9C,OAAO,KAAK,OAAO,MAAM,gCAAgC,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,eAAe,CAAC;IACxC,IAAI,EAAE,2BAA2B;IACjC,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI;IAC9B,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,MAAM,CAAC,sBAAsB,CAAC,eAAe,CAAC,iBAAiB,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;IACtG,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACzB,MAAM,EACJ,MAAM,EAAE,EACN,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EACrB,EACF,GAAG,OAAO,CAAC;QAEZ,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;QAEzE,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,eAAe,EAAE,CAAC;QACxD,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC;YAC5B,OAAO,eAAe,CAAC,kBAAkB,CAAC,MAAM,CAAC;gBAC/C,OAAO,EAAE;oBACP,OAAO,EAAE,EAAE;oBACX,IAAI,EAAE,EAAE;iBACT;gBACD,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,6BAA6B;aACrC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,eAAe,CAAC,kBAAkB,CAAC,MAAM,CAAC,MAAM,UAAU,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;IAC/F,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG,eAAe,CAAC;IACzC,IAAI,EAAE,2BAA2B;IACjC,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI;IAC9B,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,MAAM,CAAC,sBAAsB,CAAC,eAAe,CAAC,kBAAkB,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;IACvG,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACzB,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;QAC5B,MAAM,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC;QACpC,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,kBAAkB,IAAI,KAAK,CAAC;QAEnE,MAAM,UAAU,GAAG,eAAe,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;QAEzD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,mBAAmB,EAAE,CAAC;QACtD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,eAAe,CAAC,mBAAmB,CAAC,MAAM,CAAC;gBAChD,WAAW,EAAE,EAAE;aAChB,CAAC,CAAC;QACL,CAAC;QAED,MAAM,EACJ,aAAa,EAAE,EAAE,mBAAmB,EAAE,EACvC,GAAG,eAAe,CAAC;QACpB,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,yBAAyB,EAAE,CAAC;QACrE,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC,uBAAuB,EAAE,CAAC;QAEjE,MAAM,aAAa,GAAG,MAAM,GAAG,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,UAAU,EAAE,MAAM,EAAE;YAC1F,eAAe;YACf,gBAAgB,EAAE,MAAM,CAAC,SAAS;YAClC,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,UAAU,EAAE,IAAI,EAAE;YACtF,eAAe;YACf,gBAAgB,EAAE,MAAM,CAAC,SAAS;YAClC,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC;QAEH,OAAO,eAAe,CAAC,mBAAmB,CAAC,MAAM,CAAC;YAChD,WAAW,EAAE;gBACX;oBACE,GAAG,MAAM;oBACT,6BAA6B;oBAC7B,YAAY,EAAE,MAAM,CAAC,GAAG;iBACzB;aACF;YACD,iBAAiB,EAAE,aAAa;YAChC,oBAAoB,EAAE,WAAW;SAClC,CAAC,CAAC;IACL,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,SAAS,GAAG,eAAe,CAAC;IACvC,IAAI,EAAE,sBAAsB;IAC5B,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI;IAC9B,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,MAAM,CAAC,sBAAsB,CAAC,eAAe,CAAC,gBAAgB,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;IACrG,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACzB,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;QAEzE,OAAO,eAAe,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC,CAAC;IAC9F,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,SAAS,GAAG,eAAe,CAAC;IACvC,IAAI,EAAE,yBAAyB;IAC/B,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI;IAC9B,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,MAAM,CAAC,sBAAsB,CAAC,eAAe,CAAC,gBAAgB,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;IACrG,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACzB,MAAM,EACJ,OAAO,EAAE,EAAE,eAAe,EAAE,EAC7B,GAAG,OAAO,CAAC;QACZ,MAAM,EACJ,aAAa,EAAE,EAAE,mBAAmB,EAAE,EACvC,GAAG,eAAe,CAAC;QACpB,MAAM,UAAU,GAAG,eAAe,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;QACzD,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC,gBAAgB,CAAC,UAAU,CAAC,wBAAwB,EAAE,CAAC,CAAC;QAC/F,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACnE,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,kBAAkB,CAAC,UAAU,CAAC,wBAAwB,EAAE,CAAC,CAAC;QACnG,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YACnB,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC;gBAC5B,MAAM,EAAE,GAAG;gBACX,IAAI,EAAE,SAAS,CAAC,WAAW;gBAC3B,WAAW,EAAE,sBAAsB;aACpC,CAAC,CAAC;QACL,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,mBAAmB,CAAC,eAAe,CACzD,OAAO,CAAC,uBAAuB,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE;YAChE,yFAAyF;YACzF,4DAA4D;YAC5D,QAAQ,EAAE,IAAI;SACf,CAAC,CACH,CAAC;QAEF,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,eAAe,EAAE,CAAC;QAEtD,OAAO,eAAe,CAAC,iBAAiB,CAAC,MAAM,CAAC;YAC9C,WAAW,EAAE;gBACX;oBACE,kDAAkD;oBAClD,GAAG,EAAE,UAAU,CAAC,GAAG;oBACnB,EAAE,EAAE,UAAU,CAAC,EAAE;oBACjB,SAAS,EAAE,SAAS,CAAC,SAAS;iBAC/B;aACF;SACF,CAAC,CAAC;IACL,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,iCAAkC,SAAQ,OAAO,CAAC,yBAAyB;IAE5D;IACA;IAFnB,YACmB,UAAwB,EACxB,MAAoB,EACrC,IAA2C;QAE3C,KAAK,CAAC,IAAI,CAAC,CAAC;QAJK,eAAU,GAAV,UAAU,CAAc;QACxB,WAAM,GAAN,MAAM,CAAc;IAIvC,CAAC;IAED,YAAY,GAAmC,IAAI,CAAC;IAEpD,KAAK,CAAC,IAAI;QACR,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,CAAC,OAAsC;QAC3C,OAAO;YACL,GAAG,IAAI;YACP,UAAU,EAAE,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE;gBACzD,GAAG,IAAI,CAAC,UAAU,CAAC,wBAAwB,EAAE;gBAC7C,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB,CAAC;YACF,iBAAiB;gBACf,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,cAAc,EAAE,uBAAuB,EAAE,CAAC,CAAC;YACrF,CAAC;SACF,CAAC;IACJ,CAAC;CACF;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,eAAe,CAAC;IACtC,IAAI,EAAE,wBAAwB;IAC9B,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI;IAC9B,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,MAAM,CAAC,sBAAsB,CAAC,eAAe,CAAC,eAAe,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;IACpG,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACzB,MAAM,EACJ,OAAO,EAAE,EAAE,eAAe,EAAE,EAC7B,GAAG,OAAO,CAAC;QACZ,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC;QAC1C,MAAM,UAAU,GAAG,eAAe,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;QAEzD,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;QAC9D,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAExD,MAAM,UAAU,GAAG,IAAI,iCAAiC,CAAC,UAAU,EAAE,MAAM,EAAE;YAC3E,eAAe;YACf,EAAE,EAAE,CAAC;YACL,SAAS,EAAE,EAAE;YACb,MAAM,EAAE,KAAK;YACb,mBAAmB,EAAE,EAAE;YACvB,cAAc,EAAE,OAAO,CAAC,sBAAsB;YAC9C,kBAAkB,EAAE,OAAO;YAC3B,aAAa,EAAE,IAAI;SACpB,CAAC,CAAC;QAEH,MAAM,gBAAgB,GAAG,MAAM,UAAU,CAAC,mBAAmB,EAAE,CAAC;QAChE,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,OAAO,eAAe,CAAC,gBAAgB,CAAC,MAAM,CAAC;gBAC7C,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,0BAA0B,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;gBAC/F,WAAW,EAAE,EAAE;aAChB,CAAC,CAAC;QACL,CAAC;QAED,MAAM,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,kBAAkB,CAC1C,eAAe,CAAC,aAAa,CAAC,mBAAmB,EACjD,UAAU,EACV,UAAU,EACV;YACE,eAAe,EAAE,KAAK;YACtB,gBAAgB,EAAE,gBAAgB,CAAC,SAAS;YAC5C,WAAW,EAAE,KAAK;SACnB,CACF,CAAE,CAAC;QAEJ,IAAI,gBAAgB,IAAI,IAAI,EAAE,CAAC;YAC7B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,0BAA0B,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAC5G,CAAC;QAED,OAAO,eAAe,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACzD,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC"}
|
|
@@ -4,7 +4,7 @@ import { ReplicationEventPayload } from './ReplicationEventPayload.js';
|
|
|
4
4
|
import { ReplicationLock } from './ReplicationLock.js';
|
|
5
5
|
import { SyncRulesBucketStorage } from './SyncRulesBucketStorage.js';
|
|
6
6
|
import { ReportStorage } from './ReportStorage.js';
|
|
7
|
-
import { SyncConfig } from '@powersync/service-sync-rules';
|
|
7
|
+
import { SerializedCompatibilityContext, SyncConfig } from '@powersync/service-sync-rules';
|
|
8
8
|
/**
|
|
9
9
|
* Represents a configured storage provider.
|
|
10
10
|
*
|
|
@@ -106,20 +106,34 @@ export interface StorageMetrics {
|
|
|
106
106
|
export interface UpdateSyncRulesOptions {
|
|
107
107
|
config: {
|
|
108
108
|
yaml: string;
|
|
109
|
+
/**
|
|
110
|
+
* The serialized sync plan for the sync configuration, or `null` for configurations not using the sync stream
|
|
111
|
+
* compiler.
|
|
112
|
+
*/
|
|
113
|
+
plan: SerializedSyncPlan | null;
|
|
109
114
|
};
|
|
110
115
|
lock?: boolean;
|
|
111
116
|
storageVersion?: number;
|
|
112
117
|
}
|
|
118
|
+
export interface SerializedSyncPlan {
|
|
119
|
+
/**
|
|
120
|
+
* The serialized plan, from {@link serializeSyncPlan}.
|
|
121
|
+
*/
|
|
122
|
+
plan: unknown;
|
|
123
|
+
compatibility: SerializedCompatibilityContext;
|
|
124
|
+
/**
|
|
125
|
+
* Event descriptors are not currently represented in the sync plan because they don't use the sync streams compiler
|
|
126
|
+
* yet.
|
|
127
|
+
*
|
|
128
|
+
* We might revisit that in the future, but for now we store SQL text of their definitions here to be able to restore
|
|
129
|
+
* them.
|
|
130
|
+
*/
|
|
131
|
+
eventDescriptors: Record<string, string[]>;
|
|
132
|
+
}
|
|
113
133
|
export declare function updateSyncRulesFromYaml(content: string, options?: Omit<UpdateSyncRulesOptions, 'config'> & {
|
|
114
134
|
validate?: boolean;
|
|
115
135
|
}): UpdateSyncRulesOptions;
|
|
116
|
-
export declare function updateSyncRulesFromConfig(parsed: SyncConfig, options?: Omit<UpdateSyncRulesOptions, 'config'>):
|
|
117
|
-
lock?: boolean;
|
|
118
|
-
storageVersion?: number;
|
|
119
|
-
config: {
|
|
120
|
-
yaml: string;
|
|
121
|
-
};
|
|
122
|
-
};
|
|
136
|
+
export declare function updateSyncRulesFromConfig(parsed: SyncConfig, options?: Omit<UpdateSyncRulesOptions, 'config'>): UpdateSyncRulesOptions;
|
|
123
137
|
export interface GetIntanceOptions {
|
|
124
138
|
/**
|
|
125
139
|
* Set to true to skip trigger any events for creating the instance.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BaseObserver, logger } from '@powersync/lib-services-framework';
|
|
2
|
-
import { SqlSyncRules } from '@powersync/service-sync-rules';
|
|
2
|
+
import { PrecompiledSyncConfig, serializeSyncPlan, SqlSyncRules } from '@powersync/service-sync-rules';
|
|
3
3
|
/**
|
|
4
4
|
* Represents a configured storage provider.
|
|
5
5
|
*
|
|
@@ -54,6 +54,18 @@ export function updateSyncRulesFromYaml(content, options) {
|
|
|
54
54
|
return updateSyncRulesFromConfig(config, options);
|
|
55
55
|
}
|
|
56
56
|
export function updateSyncRulesFromConfig(parsed, options) {
|
|
57
|
-
|
|
57
|
+
let plan = null;
|
|
58
|
+
if (parsed instanceof PrecompiledSyncConfig) {
|
|
59
|
+
const eventDescriptors = {};
|
|
60
|
+
for (const event of parsed.eventDescriptors) {
|
|
61
|
+
eventDescriptors[event.name] = event.sourceQueries.map((q) => q.sql);
|
|
62
|
+
}
|
|
63
|
+
plan = {
|
|
64
|
+
compatibility: parsed.compatibility.serialize(),
|
|
65
|
+
plan: serializeSyncPlan(parsed.plan),
|
|
66
|
+
eventDescriptors
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
return { config: { yaml: parsed.content, plan }, ...options };
|
|
58
70
|
}
|
|
59
71
|
//# sourceMappingURL=BucketStorageFactory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BucketStorageFactory.js","sourceRoot":"","sources":["../../src/storage/BucketStorageFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAMzE,OAAO,
|
|
1
|
+
{"version":3,"file":"BucketStorageFactory.js","sourceRoot":"","sources":["../../src/storage/BucketStorageFactory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { HydratedSyncRules, SyncConfigWithErrors } from '@powersync/service-sync-rules';
|
|
2
2
|
import { ReplicationLock } from './ReplicationLock.js';
|
|
3
3
|
import { StorageVersionConfig } from './StorageVersionConfig.js';
|
|
4
|
-
import { UpdateSyncRulesOptions } from './BucketStorageFactory.js';
|
|
4
|
+
import { SerializedSyncPlan, UpdateSyncRulesOptions } from './BucketStorageFactory.js';
|
|
5
5
|
export interface ParseSyncRulesOptions {
|
|
6
6
|
defaultSchema: string;
|
|
7
7
|
}
|
|
8
8
|
export interface PersistedSyncRulesContentData {
|
|
9
9
|
readonly id: number;
|
|
10
10
|
readonly sync_rules_content: string;
|
|
11
|
+
readonly compiled_plan: SerializedSyncPlan | null;
|
|
11
12
|
readonly slot_name: string;
|
|
12
13
|
/**
|
|
13
14
|
* True if this is the "active" copy of the sync rules.
|
|
@@ -23,6 +24,7 @@ export interface PersistedSyncRulesContentData {
|
|
|
23
24
|
export declare abstract class PersistedSyncRulesContent implements PersistedSyncRulesContentData {
|
|
24
25
|
readonly id: number;
|
|
25
26
|
readonly sync_rules_content: string;
|
|
27
|
+
readonly compiled_plan: SerializedSyncPlan | null;
|
|
26
28
|
readonly slot_name: string;
|
|
27
29
|
readonly active: boolean;
|
|
28
30
|
readonly storageVersion: number;
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { CompatibilityOption, DEFAULT_HYDRATION_STATE, SqlSyncRules, versionedHydrationState } from '@powersync/service-sync-rules';
|
|
1
|
+
import { CompatibilityContext, CompatibilityOption, DEFAULT_HYDRATION_STATE, deserializeSyncPlan, javaScriptExpressionEngine, PrecompiledSyncConfig, SqlEventDescriptor, SqlSyncRules, versionedHydrationState } from '@powersync/service-sync-rules';
|
|
2
2
|
import { STORAGE_VERSION_CONFIG } from './StorageVersionConfig.js';
|
|
3
3
|
import { ErrorCode, ServiceError } from '@powersync/lib-services-framework';
|
|
4
4
|
export class PersistedSyncRulesContent {
|
|
5
5
|
id;
|
|
6
6
|
sync_rules_content;
|
|
7
|
+
compiled_plan;
|
|
7
8
|
slot_name;
|
|
8
9
|
active;
|
|
9
10
|
storageVersion;
|
|
@@ -29,10 +30,32 @@ export class PersistedSyncRulesContent {
|
|
|
29
30
|
}
|
|
30
31
|
parsed(options) {
|
|
31
32
|
let hydrationState;
|
|
32
|
-
|
|
33
|
+
// Do we have a compiled sync plan? If so, restore from there instead of parsing everything again.
|
|
34
|
+
let config;
|
|
35
|
+
if (this.compiled_plan != null) {
|
|
36
|
+
const plan = deserializeSyncPlan(this.compiled_plan.plan);
|
|
37
|
+
const compatibility = CompatibilityContext.deserialize(this.compiled_plan.compatibility);
|
|
38
|
+
const eventDefinitions = [];
|
|
39
|
+
for (const [name, queries] of Object.entries(this.compiled_plan.eventDescriptors)) {
|
|
40
|
+
const descriptor = new SqlEventDescriptor(name, compatibility);
|
|
41
|
+
for (const query of queries) {
|
|
42
|
+
descriptor.addSourceQuery(query, options);
|
|
43
|
+
}
|
|
44
|
+
eventDefinitions.push(descriptor);
|
|
45
|
+
}
|
|
46
|
+
const precompiled = new PrecompiledSyncConfig(plan, compatibility, eventDefinitions, {
|
|
47
|
+
defaultSchema: options.defaultSchema,
|
|
48
|
+
engine: javaScriptExpressionEngine(compatibility),
|
|
49
|
+
sourceText: this.sync_rules_content
|
|
50
|
+
});
|
|
51
|
+
config = { config: precompiled, errors: [] };
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
config = SqlSyncRules.fromYaml(this.sync_rules_content, options);
|
|
55
|
+
}
|
|
33
56
|
const storageConfig = this.getStorageConfig();
|
|
34
57
|
if (storageConfig.versionedBuckets ||
|
|
35
|
-
|
|
58
|
+
config.config.compatibility.isEnabled(CompatibilityOption.versionedBucketIds)) {
|
|
36
59
|
hydrationState = versionedHydrationState(this.id);
|
|
37
60
|
}
|
|
38
61
|
else {
|
|
@@ -41,15 +64,15 @@ export class PersistedSyncRulesContent {
|
|
|
41
64
|
return {
|
|
42
65
|
id: this.id,
|
|
43
66
|
slot_name: this.slot_name,
|
|
44
|
-
sync_rules:
|
|
67
|
+
sync_rules: config,
|
|
45
68
|
hydratedSyncRules: () => {
|
|
46
|
-
return
|
|
69
|
+
return config.config.hydrate({ hydrationState });
|
|
47
70
|
}
|
|
48
71
|
};
|
|
49
72
|
}
|
|
50
73
|
asUpdateOptions(options) {
|
|
51
74
|
return {
|
|
52
|
-
config: { yaml: this.sync_rules_content },
|
|
75
|
+
config: { yaml: this.sync_rules_content, plan: this.compiled_plan },
|
|
53
76
|
...options
|
|
54
77
|
};
|
|
55
78
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PersistedSyncRulesContent.js","sourceRoot":"","sources":["../../src/storage/PersistedSyncRulesContent.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,uBAAuB,
|
|
1
|
+
{"version":3,"file":"PersistedSyncRulesContent.js","sourceRoot":"","sources":["../../src/storage/PersistedSyncRulesContent.ts"],"names":[],"mappings":"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"}
|
package/dist/util/env.js
CHANGED
|
@@ -15,7 +15,7 @@ export const env = utils.collectEnvironmentVariables({
|
|
|
15
15
|
*/
|
|
16
16
|
POWERSYNC_SYNC_RULES_B64: utils.type.string.optional(),
|
|
17
17
|
/**
|
|
18
|
-
* Base64 encoded contents of sync
|
|
18
|
+
* Base64 encoded contents of sync config YAML
|
|
19
19
|
*/
|
|
20
20
|
POWERSYNC_SYNC_CONFIG_B64: utils.type.string.optional(),
|
|
21
21
|
/**
|
package/package.json
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
7
7
|
},
|
|
8
|
-
"version": "0.0.0-dev-
|
|
8
|
+
"version": "0.0.0-dev-20260225160713",
|
|
9
9
|
"main": "dist/index.js",
|
|
10
10
|
"license": "FSL-1.1-ALv2",
|
|
11
11
|
"type": "module",
|
|
@@ -33,11 +33,11 @@
|
|
|
33
33
|
"uuid": "^11.1.0",
|
|
34
34
|
"winston": "^3.13.0",
|
|
35
35
|
"yaml": "^2.3.2",
|
|
36
|
-
"@powersync/lib-services-framework": "0.0.0-dev-
|
|
36
|
+
"@powersync/lib-services-framework": "0.0.0-dev-20260225160713",
|
|
37
37
|
"@powersync/service-jsonbig": "0.17.12",
|
|
38
|
-
"@powersync/service-
|
|
39
|
-
"@powersync/service-
|
|
40
|
-
"@powersync/service-
|
|
38
|
+
"@powersync/service-sync-rules": "0.0.0-dev-20260225160713",
|
|
39
|
+
"@powersync/service-types": "0.0.0-dev-20260225160713",
|
|
40
|
+
"@powersync/service-rsocket-router": "0.0.0-dev-20260225160713"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"@types/async": "^3.2.24",
|
|
@@ -19,7 +19,7 @@ export function wrapConfigCommand(command: Command) {
|
|
|
19
19
|
)
|
|
20
20
|
.option(
|
|
21
21
|
`-sync64, --sync-base64 [base64]`,
|
|
22
|
-
'Base64 encoded YAML Sync
|
|
22
|
+
'Base64 encoded YAML Sync Config. Defaults to process.env.POWERSYNC_SYNC_CONFIG_B64 or process.env.POWERSYNC_SYNC_RULES_B64 for backwards compatility.',
|
|
23
23
|
util.env.POWERSYNC_SYNC_CONFIG_B64 || util.env.POWERSYNC_SYNC_RULES_B64
|
|
24
24
|
);
|
|
25
25
|
}
|
|
@@ -205,7 +205,8 @@ export const validate = routeDefinition({
|
|
|
205
205
|
active: false,
|
|
206
206
|
last_checkpoint_lsn: '',
|
|
207
207
|
storageVersion: storage.LEGACY_STORAGE_VERSION,
|
|
208
|
-
sync_rules_content: content
|
|
208
|
+
sync_rules_content: content,
|
|
209
|
+
compiled_plan: null
|
|
209
210
|
});
|
|
210
211
|
|
|
211
212
|
const connectionStatus = await apiHandler.getConnectionStatus();
|
|
@@ -4,7 +4,13 @@ import { ReplicationEventPayload } from './ReplicationEventPayload.js';
|
|
|
4
4
|
import { ReplicationLock } from './ReplicationLock.js';
|
|
5
5
|
import { SyncRulesBucketStorage } from './SyncRulesBucketStorage.js';
|
|
6
6
|
import { ReportStorage } from './ReportStorage.js';
|
|
7
|
-
import {
|
|
7
|
+
import {
|
|
8
|
+
PrecompiledSyncConfig,
|
|
9
|
+
SerializedCompatibilityContext,
|
|
10
|
+
serializeSyncPlan,
|
|
11
|
+
SqlSyncRules,
|
|
12
|
+
SyncConfig
|
|
13
|
+
} from '@powersync/service-sync-rules';
|
|
8
14
|
|
|
9
15
|
/**
|
|
10
16
|
* Represents a configured storage provider.
|
|
@@ -148,12 +154,32 @@ export interface StorageMetrics {
|
|
|
148
154
|
export interface UpdateSyncRulesOptions {
|
|
149
155
|
config: {
|
|
150
156
|
yaml: string;
|
|
151
|
-
|
|
157
|
+
/**
|
|
158
|
+
* The serialized sync plan for the sync configuration, or `null` for configurations not using the sync stream
|
|
159
|
+
* compiler.
|
|
160
|
+
*/
|
|
161
|
+
plan: SerializedSyncPlan | null;
|
|
152
162
|
};
|
|
153
163
|
lock?: boolean;
|
|
154
164
|
storageVersion?: number;
|
|
155
165
|
}
|
|
156
166
|
|
|
167
|
+
export interface SerializedSyncPlan {
|
|
168
|
+
/**
|
|
169
|
+
* The serialized plan, from {@link serializeSyncPlan}.
|
|
170
|
+
*/
|
|
171
|
+
plan: unknown;
|
|
172
|
+
compatibility: SerializedCompatibilityContext;
|
|
173
|
+
/**
|
|
174
|
+
* Event descriptors are not currently represented in the sync plan because they don't use the sync streams compiler
|
|
175
|
+
* yet.
|
|
176
|
+
*
|
|
177
|
+
* We might revisit that in the future, but for now we store SQL text of their definitions here to be able to restore
|
|
178
|
+
* them.
|
|
179
|
+
*/
|
|
180
|
+
eventDescriptors: Record<string, string[]>;
|
|
181
|
+
}
|
|
182
|
+
|
|
157
183
|
export function updateSyncRulesFromYaml(
|
|
158
184
|
content: string,
|
|
159
185
|
options?: Omit<UpdateSyncRulesOptions, 'config'> & { validate?: boolean }
|
|
@@ -168,8 +194,25 @@ export function updateSyncRulesFromYaml(
|
|
|
168
194
|
return updateSyncRulesFromConfig(config, options);
|
|
169
195
|
}
|
|
170
196
|
|
|
171
|
-
export function updateSyncRulesFromConfig(
|
|
172
|
-
|
|
197
|
+
export function updateSyncRulesFromConfig(
|
|
198
|
+
parsed: SyncConfig,
|
|
199
|
+
options?: Omit<UpdateSyncRulesOptions, 'config'>
|
|
200
|
+
): UpdateSyncRulesOptions {
|
|
201
|
+
let plan: SerializedSyncPlan | null = null;
|
|
202
|
+
if (parsed instanceof PrecompiledSyncConfig) {
|
|
203
|
+
const eventDescriptors: Record<string, string[]> = {};
|
|
204
|
+
for (const event of parsed.eventDescriptors) {
|
|
205
|
+
eventDescriptors[event.name] = event.sourceQueries.map((q) => q.sql);
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
plan = {
|
|
209
|
+
compatibility: parsed.compatibility.serialize(),
|
|
210
|
+
plan: serializeSyncPlan(parsed.plan),
|
|
211
|
+
eventDescriptors
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
return { config: { yaml: parsed.content, plan }, ...options };
|
|
173
216
|
}
|
|
174
217
|
|
|
175
218
|
export interface GetIntanceOptions {
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
|
+
CompatibilityContext,
|
|
2
3
|
CompatibilityOption,
|
|
3
4
|
DEFAULT_HYDRATION_STATE,
|
|
5
|
+
deserializeSyncPlan,
|
|
4
6
|
HydratedSyncRules,
|
|
5
7
|
HydrationState,
|
|
8
|
+
javaScriptExpressionEngine,
|
|
9
|
+
PrecompiledSyncConfig,
|
|
10
|
+
SqlEventDescriptor,
|
|
6
11
|
SqlSyncRules,
|
|
7
12
|
SyncConfigWithErrors,
|
|
8
13
|
versionedHydrationState
|
|
@@ -10,7 +15,7 @@ import {
|
|
|
10
15
|
import { ReplicationLock } from './ReplicationLock.js';
|
|
11
16
|
import { STORAGE_VERSION_CONFIG, StorageVersionConfig } from './StorageVersionConfig.js';
|
|
12
17
|
import { ErrorCode, ServiceError } from '@powersync/lib-services-framework';
|
|
13
|
-
import { UpdateSyncRulesOptions } from './BucketStorageFactory.js';
|
|
18
|
+
import { SerializedSyncPlan, UpdateSyncRulesOptions } from './BucketStorageFactory.js';
|
|
14
19
|
|
|
15
20
|
export interface ParseSyncRulesOptions {
|
|
16
21
|
defaultSchema: string;
|
|
@@ -19,6 +24,7 @@ export interface ParseSyncRulesOptions {
|
|
|
19
24
|
export interface PersistedSyncRulesContentData {
|
|
20
25
|
readonly id: number;
|
|
21
26
|
readonly sync_rules_content: string;
|
|
27
|
+
readonly compiled_plan: SerializedSyncPlan | null;
|
|
22
28
|
readonly slot_name: string;
|
|
23
29
|
/**
|
|
24
30
|
* True if this is the "active" copy of the sync rules.
|
|
@@ -37,6 +43,7 @@ export interface PersistedSyncRulesContentData {
|
|
|
37
43
|
export abstract class PersistedSyncRulesContent implements PersistedSyncRulesContentData {
|
|
38
44
|
readonly id!: number;
|
|
39
45
|
readonly sync_rules_content!: string;
|
|
46
|
+
readonly compiled_plan!: SerializedSyncPlan | null;
|
|
40
47
|
readonly slot_name!: string;
|
|
41
48
|
readonly active!: boolean;
|
|
42
49
|
readonly storageVersion!: number;
|
|
@@ -72,11 +79,37 @@ export abstract class PersistedSyncRulesContent implements PersistedSyncRulesCon
|
|
|
72
79
|
|
|
73
80
|
parsed(options: ParseSyncRulesOptions): PersistedSyncRules {
|
|
74
81
|
let hydrationState: HydrationState;
|
|
75
|
-
|
|
82
|
+
|
|
83
|
+
// Do we have a compiled sync plan? If so, restore from there instead of parsing everything again.
|
|
84
|
+
let config: SyncConfigWithErrors;
|
|
85
|
+
if (this.compiled_plan != null) {
|
|
86
|
+
const plan = deserializeSyncPlan(this.compiled_plan.plan);
|
|
87
|
+
const compatibility = CompatibilityContext.deserialize(this.compiled_plan.compatibility);
|
|
88
|
+
const eventDefinitions: SqlEventDescriptor[] = [];
|
|
89
|
+
for (const [name, queries] of Object.entries(this.compiled_plan.eventDescriptors)) {
|
|
90
|
+
const descriptor = new SqlEventDescriptor(name, compatibility);
|
|
91
|
+
for (const query of queries) {
|
|
92
|
+
descriptor.addSourceQuery(query, options);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
eventDefinitions.push(descriptor);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
const precompiled = new PrecompiledSyncConfig(plan, compatibility, eventDefinitions, {
|
|
99
|
+
defaultSchema: options.defaultSchema,
|
|
100
|
+
engine: javaScriptExpressionEngine(compatibility),
|
|
101
|
+
sourceText: this.sync_rules_content
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
config = { config: precompiled, errors: [] };
|
|
105
|
+
} else {
|
|
106
|
+
config = SqlSyncRules.fromYaml(this.sync_rules_content, options);
|
|
107
|
+
}
|
|
108
|
+
|
|
76
109
|
const storageConfig = this.getStorageConfig();
|
|
77
110
|
if (
|
|
78
111
|
storageConfig.versionedBuckets ||
|
|
79
|
-
|
|
112
|
+
config.config.compatibility.isEnabled(CompatibilityOption.versionedBucketIds)
|
|
80
113
|
) {
|
|
81
114
|
hydrationState = versionedHydrationState(this.id);
|
|
82
115
|
} else {
|
|
@@ -86,16 +119,16 @@ export abstract class PersistedSyncRulesContent implements PersistedSyncRulesCon
|
|
|
86
119
|
return {
|
|
87
120
|
id: this.id,
|
|
88
121
|
slot_name: this.slot_name,
|
|
89
|
-
sync_rules:
|
|
122
|
+
sync_rules: config,
|
|
90
123
|
hydratedSyncRules: () => {
|
|
91
|
-
return
|
|
124
|
+
return config.config.hydrate({ hydrationState });
|
|
92
125
|
}
|
|
93
126
|
};
|
|
94
127
|
}
|
|
95
128
|
|
|
96
129
|
asUpdateOptions(options?: Omit<UpdateSyncRulesOptions, 'config'>): UpdateSyncRulesOptions {
|
|
97
130
|
return {
|
|
98
|
-
config: { yaml: this.sync_rules_content },
|
|
131
|
+
config: { yaml: this.sync_rules_content, plan: this.compiled_plan },
|
|
99
132
|
...options
|
|
100
133
|
};
|
|
101
134
|
}
|
package/src/util/env.ts
CHANGED
|
@@ -17,7 +17,7 @@ export const env = utils.collectEnvironmentVariables({
|
|
|
17
17
|
*/
|
|
18
18
|
POWERSYNC_SYNC_RULES_B64: utils.type.string.optional(),
|
|
19
19
|
/**
|
|
20
|
-
* Base64 encoded contents of sync
|
|
20
|
+
* Base64 encoded contents of sync config YAML
|
|
21
21
|
*/
|
|
22
22
|
POWERSYNC_SYNC_CONFIG_B64: utils.type.string.optional(),
|
|
23
23
|
/**
|