@powersync/service-sync-rules 0.0.0-dev-20251015143910 → 0.0.0-dev-20251128080741

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 (56) hide show
  1. package/dist/BaseSqlDataQuery.d.ts +3 -3
  2. package/dist/BaseSqlDataQuery.js +6 -6
  3. package/dist/BaseSqlDataQuery.js.map +1 -1
  4. package/dist/SqlBucketDescriptor.js +2 -2
  5. package/dist/SqlBucketDescriptor.js.map +1 -1
  6. package/dist/SqlDataQuery.js +6 -6
  7. package/dist/SqlDataQuery.js.map +1 -1
  8. package/dist/SqlParameterQuery.d.ts +5 -4
  9. package/dist/SqlParameterQuery.js +20 -15
  10. package/dist/SqlParameterQuery.js.map +1 -1
  11. package/dist/StaticSqlParameterQuery.js +11 -9
  12. package/dist/StaticSqlParameterQuery.js.map +1 -1
  13. package/dist/TableQuerySchema.d.ts +6 -1
  14. package/dist/TableQuerySchema.js +6 -2
  15. package/dist/TableQuerySchema.js.map +1 -1
  16. package/dist/TableValuedFunctionSqlParameterQuery.d.ts +4 -2
  17. package/dist/TableValuedFunctionSqlParameterQuery.js +26 -15
  18. package/dist/TableValuedFunctionSqlParameterQuery.js.map +1 -1
  19. package/dist/events/SqlEventSourceQuery.js +5 -5
  20. package/dist/events/SqlEventSourceQuery.js.map +1 -1
  21. package/dist/request_functions.d.ts +19 -7
  22. package/dist/request_functions.js +8 -10
  23. package/dist/request_functions.js.map +1 -1
  24. package/dist/schema-generators/RoomSchemaGenerator.d.ts +13 -0
  25. package/dist/schema-generators/RoomSchemaGenerator.js +53 -0
  26. package/dist/schema-generators/RoomSchemaGenerator.js.map +1 -0
  27. package/dist/schema-generators/SchemaGenerator.d.ts +1 -1
  28. package/dist/schema-generators/SqlSchemaGenerator.d.ts +15 -0
  29. package/dist/schema-generators/SqlSchemaGenerator.js +31 -0
  30. package/dist/schema-generators/SqlSchemaGenerator.js.map +1 -0
  31. package/dist/schema-generators/schema-generators.d.ts +4 -0
  32. package/dist/schema-generators/schema-generators.js +4 -0
  33. package/dist/schema-generators/schema-generators.js.map +1 -1
  34. package/dist/sql_filters.d.ts +42 -13
  35. package/dist/sql_filters.js +64 -32
  36. package/dist/sql_filters.js.map +1 -1
  37. package/dist/sql_support.js +13 -14
  38. package/dist/sql_support.js.map +1 -1
  39. package/dist/streams/from_sql.js +80 -27
  40. package/dist/streams/from_sql.js.map +1 -1
  41. package/dist/streams/functions.js +2 -4
  42. package/dist/streams/functions.js.map +1 -1
  43. package/dist/streams/stream.js +2 -2
  44. package/dist/streams/stream.js.map +1 -1
  45. package/dist/streams/variant.js +2 -1
  46. package/dist/streams/variant.js.map +1 -1
  47. package/dist/types.d.ts +28 -13
  48. package/dist/types.js +3 -0
  49. package/dist/types.js.map +1 -1
  50. package/dist/utils.d.ts +1 -1
  51. package/dist/utils.js +1 -1
  52. package/dist/utils.js.map +1 -1
  53. package/dist/validators.d.ts +14 -0
  54. package/dist/validators.js +63 -0
  55. package/dist/validators.js.map +1 -0
  56. package/package.json +2 -2
@@ -0,0 +1,63 @@
1
+ import { isRequestFunctionCall } from './request_functions.js';
2
+ import { isParameterMatchClause } from './sql_support.js';
3
+ import { isLegacyParameterFromTableClause } from './types.js';
4
+ /**
5
+ * Detects the use of request parameters in a compiled clause.
6
+ */
7
+ export class DetectRequestParameters {
8
+ /** request.user_id(), request.jwt(), token_parameters.* */
9
+ usesAuthenticatedRequestParameters = false;
10
+ /** request.parameters(), user_parameters.* */
11
+ usesUnauthenticatedRequestParameters = false;
12
+ /** subscription.parameters(), subscription.parameters('a') */
13
+ usesStreamParameters = false;
14
+ accept(clause) {
15
+ if (clause == null) {
16
+ return null;
17
+ }
18
+ if (isRequestFunctionCall(clause)) {
19
+ const f = clause.function;
20
+ this.usesAuthenticatedRequestParameters ||= f.parameterUsage == 'authenticated';
21
+ this.usesUnauthenticatedRequestParameters ||=
22
+ f.parameterUsage == 'unauthenticated' || f.parameterUsage == 'subscription';
23
+ this.usesStreamParameters ||= f.parameterUsage == 'subscription';
24
+ }
25
+ else if (isLegacyParameterFromTableClause(clause)) {
26
+ const table = clause.table;
27
+ if (table == 'token_parameters') {
28
+ this.usesAuthenticatedRequestParameters = true;
29
+ }
30
+ else if (table == 'user_parameters') {
31
+ this.usesUnauthenticatedRequestParameters = true;
32
+ }
33
+ }
34
+ else if (isParameterMatchClause(clause) && clause.specialType == 'or') {
35
+ // We only treat this clause as using authenticated request parameters if all subclauses use authenticated request
36
+ // parameters.
37
+ const leftVisitor = new DetectRequestParameters();
38
+ const rightVisitor = new DetectRequestParameters();
39
+ let isFirstChild = true;
40
+ clause.visitChildren((v) => {
41
+ if (isFirstChild) {
42
+ leftVisitor.accept(v);
43
+ }
44
+ else {
45
+ rightVisitor.accept(v);
46
+ }
47
+ });
48
+ this.usesAuthenticatedRequestParameters =
49
+ leftVisitor.usesAuthenticatedRequestParameters && rightVisitor.usesAuthenticatedRequestParameters;
50
+ // For unauthenticated parameters, it's enough if either side reads unauthenticated data.
51
+ this.usesUnauthenticatedRequestParameters ||= leftVisitor.usesUnauthenticatedRequestParameters;
52
+ this.usesUnauthenticatedRequestParameters ||= rightVisitor.usesUnauthenticatedRequestParameters;
53
+ return;
54
+ }
55
+ clause.visitChildren?.((c) => this.accept(c));
56
+ }
57
+ acceptAll(clauses) {
58
+ for (const clause of clauses) {
59
+ this.accept(clause);
60
+ }
61
+ }
62
+ }
63
+ //# sourceMappingURL=validators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validators.js","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAkB,gCAAgC,EAAwB,MAAM,YAAY,CAAC;AAEpG;;GAEG;AACH,MAAM,OAAO,uBAAuB;IAClC,2DAA2D;IAC3D,kCAAkC,GAAY,KAAK,CAAC;IACpD,8CAA8C;IAC9C,oCAAoC,GAAY,KAAK,CAAC;IACtD,+DAA+D;IAC/D,oBAAoB,GAAY,KAAK,CAAC;IAEtC,MAAM,CAAC,MAAuB;QAC5B,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,qBAAqB,CAAC,MAAM,CAAC,EAAE,CAAC;YAClC,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC;YAE1B,IAAI,CAAC,kCAAkC,KAAK,CAAC,CAAC,cAAc,IAAI,eAAe,CAAC;YAChF,IAAI,CAAC,oCAAoC;gBACvC,CAAC,CAAC,cAAc,IAAI,iBAAiB,IAAI,CAAC,CAAC,cAAc,IAAI,cAAc,CAAC;YAC9E,IAAI,CAAC,oBAAoB,KAAK,CAAC,CAAC,cAAc,IAAI,cAAc,CAAC;QACnE,CAAC;aAAM,IAAI,gCAAgC,CAAC,MAAM,CAAC,EAAE,CAAC;YACpD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;YAC3B,IAAI,KAAK,IAAI,kBAAkB,EAAE,CAAC;gBAChC,IAAI,CAAC,kCAAkC,GAAG,IAAI,CAAC;YACjD,CAAC;iBAAM,IAAI,KAAK,IAAI,iBAAiB,EAAE,CAAC;gBACtC,IAAI,CAAC,oCAAoC,GAAG,IAAI,CAAC;YACnD,CAAC;QACH,CAAC;aAAM,IAAI,sBAAsB,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,WAAW,IAAI,IAAI,EAAE,CAAC;YACxE,kHAAkH;YAClH,cAAc;YACd,MAAM,WAAW,GAAG,IAAI,uBAAuB,EAAE,CAAC;YAClD,MAAM,YAAY,GAAG,IAAI,uBAAuB,EAAE,CAAC;YAEnD,IAAI,YAAY,GAAG,IAAI,CAAC;YACxB,MAAM,CAAC,aAAc,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC1B,IAAI,YAAY,EAAE,CAAC;oBACjB,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACxB,CAAC;qBAAM,CAAC;oBACN,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACzB,CAAC;YACH,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,kCAAkC;gBACrC,WAAW,CAAC,kCAAkC,IAAI,YAAY,CAAC,kCAAkC,CAAC;YAEpG,yFAAyF;YACzF,IAAI,CAAC,oCAAoC,KAAK,WAAW,CAAC,oCAAoC,CAAC;YAC/F,IAAI,CAAC,oCAAoC,KAAK,YAAY,CAAC,oCAAoC,CAAC;YAChG,OAAO;QACT,CAAC;QAED,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,SAAS,CAAC,OAAiC;QACzC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;CACF"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@powersync/service-sync-rules",
3
3
  "repository": "https://github.com/powersync-ja/powersync-service",
4
- "version": "0.0.0-dev-20251015143910",
4
+ "version": "0.0.0-dev-20251128080741",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "license": "FSL-1.1-ALv2",
@@ -19,7 +19,7 @@
19
19
  "pgsql-ast-parser": "^11.1.0",
20
20
  "uuid": "^11.1.0",
21
21
  "yaml": "^2.3.1",
22
- "@powersync/service-jsonbig": "^0.17.11"
22
+ "@powersync/service-jsonbig": "^0.17.12"
23
23
  },
24
24
  "devDependencies": {
25
25
  "@types/node": "^22.16.2",