@powersync/service-sync-rules 0.0.0-dev-20250317122913 → 0.0.0-dev-20250730114043

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 (81) hide show
  1. package/dist/BaseSqlDataQuery.d.ts +53 -12
  2. package/dist/BaseSqlDataQuery.js +49 -9
  3. package/dist/BaseSqlDataQuery.js.map +1 -1
  4. package/dist/BucketDescription.d.ts +1 -1
  5. package/dist/BucketDescription.js +1 -1
  6. package/dist/BucketDescription.js.map +1 -1
  7. package/dist/SourceTableInterface.d.ts +1 -1
  8. package/dist/SqlBucketDescriptor.d.ts +6 -6
  9. package/dist/SqlBucketDescriptor.js +24 -28
  10. package/dist/SqlBucketDescriptor.js.map +1 -1
  11. package/dist/SqlDataQuery.d.ts +14 -3
  12. package/dist/SqlDataQuery.js +41 -27
  13. package/dist/SqlDataQuery.js.map +1 -1
  14. package/dist/SqlParameterQuery.d.ts +82 -26
  15. package/dist/SqlParameterQuery.js +135 -77
  16. package/dist/SqlParameterQuery.js.map +1 -1
  17. package/dist/SqlSyncRules.d.ts +3 -5
  18. package/dist/SqlSyncRules.js +20 -23
  19. package/dist/SqlSyncRules.js.map +1 -1
  20. package/dist/StaticSchema.js +2 -2
  21. package/dist/StaticSchema.js.map +1 -1
  22. package/dist/StaticSqlParameterQuery.d.ts +50 -15
  23. package/dist/StaticSqlParameterQuery.js +74 -36
  24. package/dist/StaticSqlParameterQuery.js.map +1 -1
  25. package/dist/TablePattern.js +2 -2
  26. package/dist/TablePattern.js.map +1 -1
  27. package/dist/TableValuedFunctionSqlParameterQuery.d.ts +70 -17
  28. package/dist/TableValuedFunctionSqlParameterQuery.js +98 -43
  29. package/dist/TableValuedFunctionSqlParameterQuery.js.map +1 -1
  30. package/dist/events/SqlEventDescriptor.d.ts +2 -4
  31. package/dist/events/SqlEventDescriptor.js +8 -11
  32. package/dist/events/SqlEventDescriptor.js.map +1 -1
  33. package/dist/events/SqlEventSourceQuery.d.ts +2 -2
  34. package/dist/events/SqlEventSourceQuery.js +24 -17
  35. package/dist/events/SqlEventSourceQuery.js.map +1 -1
  36. package/dist/index.d.ts +2 -6
  37. package/dist/index.js +2 -6
  38. package/dist/index.js.map +1 -1
  39. package/dist/request_functions.js +3 -3
  40. package/dist/request_functions.js.map +1 -1
  41. package/dist/{DartSchemaGenerator.d.ts → schema-generators/DartSchemaGenerator.d.ts} +2 -2
  42. package/dist/{DartSchemaGenerator.js → schema-generators/DartSchemaGenerator.js} +4 -19
  43. package/dist/schema-generators/DartSchemaGenerator.js.map +1 -0
  44. package/dist/schema-generators/DotNetSchemaGenerator.d.ts +13 -0
  45. package/dist/schema-generators/DotNetSchemaGenerator.js +67 -0
  46. package/dist/schema-generators/DotNetSchemaGenerator.js.map +1 -0
  47. package/dist/{JsLegacySchemaGenerator.d.ts → schema-generators/JsLegacySchemaGenerator.d.ts} +2 -2
  48. package/dist/{JsLegacySchemaGenerator.js → schema-generators/JsLegacySchemaGenerator.js} +1 -1
  49. package/dist/schema-generators/JsLegacySchemaGenerator.js.map +1 -0
  50. package/dist/schema-generators/KotlinSchemaGenerator.d.ts +12 -0
  51. package/dist/schema-generators/KotlinSchemaGenerator.js +46 -0
  52. package/dist/schema-generators/KotlinSchemaGenerator.js.map +1 -0
  53. package/dist/{SchemaGenerator.d.ts → schema-generators/SchemaGenerator.d.ts} +8 -3
  54. package/dist/schema-generators/SchemaGenerator.js +45 -0
  55. package/dist/schema-generators/SchemaGenerator.js.map +1 -0
  56. package/dist/schema-generators/SwiftSchemaGenerator.d.ts +12 -0
  57. package/dist/schema-generators/SwiftSchemaGenerator.js +44 -0
  58. package/dist/schema-generators/SwiftSchemaGenerator.js.map +1 -0
  59. package/dist/{TsSchemaGenerator.d.ts → schema-generators/TsSchemaGenerator.d.ts} +2 -2
  60. package/dist/{TsSchemaGenerator.js → schema-generators/TsSchemaGenerator.js} +1 -1
  61. package/dist/schema-generators/TsSchemaGenerator.js.map +1 -0
  62. package/dist/{generators.d.ts → schema-generators/generators.d.ts} +9 -3
  63. package/dist/schema-generators/generators.js +17 -0
  64. package/dist/schema-generators/generators.js.map +1 -0
  65. package/dist/schema-generators/schema-generators.d.ts +8 -0
  66. package/dist/schema-generators/schema-generators.js +9 -0
  67. package/dist/schema-generators/schema-generators.js.map +1 -0
  68. package/dist/sql_filters.d.ts +12 -12
  69. package/dist/sql_filters.js +24 -24
  70. package/dist/sql_filters.js.map +1 -1
  71. package/dist/types.d.ts +10 -12
  72. package/dist/types.js +14 -14
  73. package/dist/types.js.map +1 -1
  74. package/package.json +4 -5
  75. package/dist/DartSchemaGenerator.js.map +0 -1
  76. package/dist/JsLegacySchemaGenerator.js.map +0 -1
  77. package/dist/SchemaGenerator.js +0 -25
  78. package/dist/SchemaGenerator.js.map +0 -1
  79. package/dist/TsSchemaGenerator.js.map +0 -1
  80. package/dist/generators.js +0 -11
  81. package/dist/generators.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DartSchemaGenerator.js","sourceRoot":"","sources":["../../src/schema-generators/DartSchemaGenerator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { SqlSyncRules } from '../SqlSyncRules.js';
2
+ import { SourceSchema } from '../types.js';
3
+ import { GenerateSchemaOptions, SchemaGenerator } from './SchemaGenerator.js';
4
+ export declare class DotNetSchemaGenerator extends SchemaGenerator {
5
+ readonly key = "dotnet";
6
+ readonly label = ".Net";
7
+ readonly mediaType = "text/x-csharp";
8
+ readonly fileName = "Schema.cs";
9
+ generate(source: SqlSyncRules, schema: SourceSchema, options?: GenerateSchemaOptions): string;
10
+ private toUpperCaseFirstLetter;
11
+ private generateTable;
12
+ private generateColumn;
13
+ }
@@ -0,0 +1,67 @@
1
+ import { TYPE_INTEGER, TYPE_REAL, TYPE_TEXT } from '../ExpressionType.js';
2
+ import { SchemaGenerator } from './SchemaGenerator.js';
3
+ export class DotNetSchemaGenerator extends SchemaGenerator {
4
+ key = 'dotnet';
5
+ label = '.Net';
6
+ mediaType = 'text/x-csharp';
7
+ fileName = 'Schema.cs';
8
+ generate(source, schema, options) {
9
+ const tables = super.getAllTables(source, schema);
10
+ return `using PowerSync.Common.DB.Schema;
11
+
12
+ class AppSchema
13
+ {
14
+ ${tables.map((table) => this.generateTable(table.name, table.columns, options)).join('\n\n ')}
15
+
16
+ public static Schema PowerSyncSchema = new Schema(new Dictionary<string, Table>
17
+ {
18
+ ${tables.map((table) => `{"${table.name}", ${this.toUpperCaseFirstLetter(table.name)}}`).join(',\n ')}
19
+ });
20
+ }`;
21
+ }
22
+ toUpperCaseFirstLetter(str) {
23
+ return str.charAt(0).toUpperCase() + str.slice(1);
24
+ }
25
+ generateTable(name, columns, options) {
26
+ const generated = columns.map((c, i) => {
27
+ const last = i === columns.length - 1;
28
+ const base = this.generateColumn(c);
29
+ let withFormatting;
30
+ if (last) {
31
+ withFormatting = ` ${base}`;
32
+ }
33
+ else {
34
+ withFormatting = ` ${base},`;
35
+ }
36
+ if (options?.includeTypeComments && c.originalType != null) {
37
+ return `${withFormatting} // ${c.originalType}`;
38
+ }
39
+ else {
40
+ return withFormatting;
41
+ }
42
+ });
43
+ return `public static Table ${this.toUpperCaseFirstLetter(name)} = new Table(new Dictionary<string, ColumnType>
44
+ {
45
+ ${generated.join('\n ')}
46
+ });`;
47
+ }
48
+ generateColumn(column) {
49
+ return `{ "${column.name}", ${cSharpColumnType(column)} }`;
50
+ }
51
+ }
52
+ const cSharpColumnType = (def) => {
53
+ const t = def.type;
54
+ if (t.typeFlags & TYPE_TEXT) {
55
+ return 'ColumnType.TEXT';
56
+ }
57
+ else if (t.typeFlags & TYPE_REAL) {
58
+ return 'ColumnType.REAL';
59
+ }
60
+ else if (t.typeFlags & TYPE_INTEGER) {
61
+ return 'ColumnType.INTEGER';
62
+ }
63
+ else {
64
+ return 'ColumnType.TEXT';
65
+ }
66
+ };
67
+ //# sourceMappingURL=DotNetSchemaGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DotNetSchemaGenerator.js","sourceRoot":"","sources":["../../src/schema-generators/DotNetSchemaGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAG5F,OAAO,EAAyB,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE9E,MAAM,OAAO,qBAAsB,SAAQ,eAAe;IAC/C,GAAG,GAAG,QAAQ,CAAC;IACf,KAAK,GAAG,MAAM,CAAC;IACf,SAAS,GAAG,eAAe,CAAC;IAC5B,QAAQ,GAAG,WAAW,CAAC;IAEhC,QAAQ,CAAC,MAAoB,EAAE,MAAoB,EAAE,OAA+B;QAClF,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAElD,OAAO;;;;IAIP,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;;;;MAI1F,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,IAAI,MAAM,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;;EAE1G,CAAC;IACD,CAAC;IAEO,sBAAsB,CAAC,GAAW;QACxC,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC;IAEO,aAAa,CAAC,IAAY,EAAE,OAA2B,EAAE,OAA+B;QAC9F,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACrC,MAAM,IAAI,GAAG,CAAC,KAAK,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;YACtC,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YACpC,IAAI,cAAsB,CAAC;YAC3B,IAAI,IAAI,EAAE,CAAC;gBACT,cAAc,GAAG,OAAO,IAAI,EAAE,CAAC;YACjC,CAAC;iBAAM,CAAC;gBACN,cAAc,GAAG,OAAO,IAAI,GAAG,CAAC;YAClC,CAAC;YAED,IAAI,OAAO,EAAE,mBAAmB,IAAI,CAAC,CAAC,YAAY,IAAI,IAAI,EAAE,CAAC;gBAC3D,OAAO,GAAG,cAAc,OAAO,CAAC,CAAC,YAAY,EAAE,CAAC;YAClD,CAAC;iBAAM,CAAC;gBACN,OAAO,cAAc,CAAC;YACxB,CAAC;QACH,CAAC,CAAC,CAAC;QACH,OAAO,uBAAuB,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;;IAE/D,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;MACpB,CAAC;IACL,CAAC;IAEO,cAAc,CAAC,MAAwB;QAC7C,OAAO,MAAM,MAAM,CAAC,IAAI,MAAM,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC;IAC7D,CAAC;CACF;AAED,MAAM,gBAAgB,GAAG,CAAC,GAAqB,EAAU,EAAE;IACzD,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC;IACnB,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,EAAE,CAAC;QAC5B,OAAO,iBAAiB,CAAC;IAC3B,CAAC;SAAM,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,EAAE,CAAC;QACnC,OAAO,iBAAiB,CAAC;IAC3B,CAAC;SAAM,IAAI,CAAC,CAAC,SAAS,GAAG,YAAY,EAAE,CAAC;QACtC,OAAO,oBAAoB,CAAC;IAC9B,CAAC;SAAM,CAAC;QACN,OAAO,iBAAiB,CAAC;IAC3B,CAAC;AACH,CAAC,CAAC"}
@@ -1,6 +1,6 @@
1
+ import { SqlSyncRules } from '../SqlSyncRules.js';
2
+ import { SourceSchema } from '../types.js';
1
3
  import { SchemaGenerator } from './SchemaGenerator.js';
2
- import { SqlSyncRules } from './SqlSyncRules.js';
3
- import { SourceSchema } from './types.js';
4
4
  export declare class JsLegacySchemaGenerator extends SchemaGenerator {
5
5
  readonly key = "jsLegacy";
6
6
  readonly label = "JavaScript (legacy syntax)";
@@ -1,4 +1,4 @@
1
- import { TYPE_INTEGER, TYPE_REAL, TYPE_TEXT } from './ExpressionType.js';
1
+ import { TYPE_INTEGER, TYPE_REAL, TYPE_TEXT } from '../ExpressionType.js';
2
2
  import { SchemaGenerator } from './SchemaGenerator.js';
3
3
  export class JsLegacySchemaGenerator extends SchemaGenerator {
4
4
  key = 'jsLegacy';
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsLegacySchemaGenerator.js","sourceRoot":"","sources":["../../src/schema-generators/JsLegacySchemaGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAG5F,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,MAAM,OAAO,uBAAwB,SAAQ,eAAe;IACjD,GAAG,GAAG,UAAU,CAAC;IACjB,KAAK,GAAG,4BAA4B,CAAC;IACrC,SAAS,GAAG,iBAAiB,CAAC;IAC9B,QAAQ,GAAG,WAAW,CAAC;IAEhC,QAAQ,CAAC,MAAoB,EAAE,MAAoB;QACjD,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAElD,OAAO;IACP,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;;CAErF,CAAC;IACA,CAAC;IAEO,aAAa,CAAC,IAAY,EAAE,OAA2B;QAC7D,OAAO;aACE,IAAI;;QAET,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;;KAE/D,CAAC;IACJ,CAAC;IAEO,cAAc,CAAC,MAAwB;QAC7C,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,EAAE,CAAC;YAC5B,OAAO,uBAAuB,MAAM,CAAC,IAAI,6BAA6B,CAAC;QACzE,CAAC;aAAM,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,EAAE,CAAC;YACnC,OAAO,uBAAuB,MAAM,CAAC,IAAI,6BAA6B,CAAC;QACzE,CAAC;aAAM,IAAI,CAAC,CAAC,SAAS,GAAG,YAAY,EAAE,CAAC;YACtC,OAAO,uBAAuB,MAAM,CAAC,IAAI,gCAAgC,CAAC;QAC5E,CAAC;aAAM,CAAC;YACN,OAAO,uBAAuB,MAAM,CAAC,IAAI,6BAA6B,CAAC;QACzE,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,12 @@
1
+ import { SqlSyncRules } from '../SqlSyncRules.js';
2
+ import { SourceSchema } from '../types.js';
3
+ import { GenerateSchemaOptions, SchemaGenerator } from './SchemaGenerator.js';
4
+ export declare class KotlinSchemaGenerator extends SchemaGenerator {
5
+ readonly key = "kotlin";
6
+ readonly label = "Kotlin";
7
+ readonly mediaType = "text/x-kotlin";
8
+ readonly fileName = "schema.kt";
9
+ generate(source: SqlSyncRules, schema: SourceSchema, options?: GenerateSchemaOptions): string;
10
+ private generateTable;
11
+ private generateColumn;
12
+ }
@@ -0,0 +1,46 @@
1
+ import { SchemaGenerator } from './SchemaGenerator.js';
2
+ export class KotlinSchemaGenerator extends SchemaGenerator {
3
+ key = 'kotlin';
4
+ label = 'Kotlin';
5
+ mediaType = 'text/x-kotlin';
6
+ fileName = 'schema.kt';
7
+ generate(source, schema, options) {
8
+ const tables = super.getAllTables(source, schema);
9
+ return `import com.powersync.db.schema.Column
10
+ import com.powersync.db.schema.Schema
11
+ import com.powersync.db.schema.Table
12
+
13
+ val schema = Schema(
14
+ ${tables.map((table) => this.generateTable(table.name, table.columns, options)).join(',\n ')}
15
+ )`;
16
+ }
17
+ generateTable(name, columns, options) {
18
+ const generated = columns.map((c, i) => {
19
+ const last = i === columns.length - 1;
20
+ const base = this.generateColumn(c);
21
+ let withFormatting;
22
+ if (last) {
23
+ withFormatting = ` ${base}`;
24
+ }
25
+ else {
26
+ withFormatting = ` ${base},`;
27
+ }
28
+ if (options?.includeTypeComments && c.originalType != null) {
29
+ return `${withFormatting} // ${c.originalType}`;
30
+ }
31
+ else {
32
+ return withFormatting;
33
+ }
34
+ });
35
+ return `Table(
36
+ name = "${name}",
37
+ columns = listOf(
38
+ ${generated.join('\n')}
39
+ )
40
+ )`;
41
+ }
42
+ generateColumn(column) {
43
+ return `Column.${this.columnType(column)}("${column.name}")`;
44
+ }
45
+ }
46
+ //# sourceMappingURL=KotlinSchemaGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KotlinSchemaGenerator.js","sourceRoot":"","sources":["../../src/schema-generators/KotlinSchemaGenerator.ts"],"names":[],"mappings":"AAGA,OAAO,EAAyB,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE9E,MAAM,OAAO,qBAAsB,SAAQ,eAAe;IAC/C,GAAG,GAAG,QAAQ,CAAC;IACf,KAAK,GAAG,QAAQ,CAAC;IACjB,SAAS,GAAG,eAAe,CAAC;IAC5B,QAAQ,GAAG,WAAW,CAAC;IAEhC,QAAQ,CAAC,MAAoB,EAAE,MAAoB,EAAE,OAA+B;QAClF,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAElD,OAAO;;;;;IAKP,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;EAC7F,CAAC;IACD,CAAC;IAEO,aAAa,CAAC,IAAY,EAAE,OAA2B,EAAE,OAA+B;QAC9F,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACrC,MAAM,IAAI,GAAG,CAAC,KAAK,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;YACtC,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YACpC,IAAI,cAAsB,CAAC;YAC3B,IAAI,IAAI,EAAE,CAAC;gBACT,cAAc,GAAG,WAAW,IAAI,EAAE,CAAC;YACrC,CAAC;iBAAM,CAAC;gBACN,cAAc,GAAG,WAAW,IAAI,GAAG,CAAC;YACtC,CAAC;YAED,IAAI,OAAO,EAAE,mBAAmB,IAAI,CAAC,CAAC,YAAY,IAAI,IAAI,EAAE,CAAC;gBAC3D,OAAO,GAAG,cAAc,OAAO,CAAC,CAAC,YAAY,EAAE,CAAC;YAClD,CAAC;iBAAM,CAAC;gBACN,OAAO,cAAc,CAAC;YACxB,CAAC;QACH,CAAC,CAAC,CAAC;QACH,OAAO;cACG,IAAI;;EAEhB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;;IAElB,CAAC;IACH,CAAC;IAEO,cAAc,CAAC,MAAwB;QAC7C,OAAO,UAAU,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC;IAC/D,CAAC;CACF"}
@@ -1,6 +1,6 @@
1
- import { ColumnDefinition } from './ExpressionType.js';
2
- import { SqlSyncRules } from './SqlSyncRules.js';
3
- import { SourceSchema } from './types.js';
1
+ import { ColumnDefinition } from '../ExpressionType.js';
2
+ import { SqlSyncRules } from '../SqlSyncRules.js';
3
+ import { SourceSchema } from '../types.js';
4
4
  export interface GenerateSchemaOptions {
5
5
  includeTypeComments?: boolean;
6
6
  }
@@ -14,4 +14,9 @@ export declare abstract class SchemaGenerator {
14
14
  abstract readonly mediaType: string;
15
15
  abstract readonly fileName: string;
16
16
  abstract generate(source: SqlSyncRules, schema: SourceSchema, options?: GenerateSchemaOptions): string;
17
+ /**
18
+ * @param def The column definition to generate the type for.
19
+ * @returns The SDK column type for the given column definition.
20
+ */
21
+ columnType(def: ColumnDefinition): string;
17
22
  }
@@ -0,0 +1,45 @@
1
+ import { TYPE_INTEGER, TYPE_REAL, TYPE_TEXT } from '../ExpressionType.js';
2
+ export class SchemaGenerator {
3
+ getAllTables(source, schema) {
4
+ let tables = {};
5
+ for (let descriptor of source.bucketDescriptors) {
6
+ for (let query of descriptor.dataQueries) {
7
+ const outTables = query.getColumnOutputs(schema);
8
+ for (let table of outTables) {
9
+ tables[table.name] ??= {};
10
+ for (let column of table.columns) {
11
+ if (column.name != 'id') {
12
+ tables[table.name][column.name] ??= column;
13
+ }
14
+ }
15
+ }
16
+ }
17
+ }
18
+ return Object.entries(tables).map(([name, columns]) => {
19
+ return {
20
+ name: name,
21
+ columns: Object.values(columns)
22
+ };
23
+ });
24
+ }
25
+ /**
26
+ * @param def The column definition to generate the type for.
27
+ * @returns The SDK column type for the given column definition.
28
+ */
29
+ columnType(def) {
30
+ const { type } = def;
31
+ if (type.typeFlags & TYPE_TEXT) {
32
+ return 'text';
33
+ }
34
+ else if (type.typeFlags & TYPE_REAL) {
35
+ return 'real';
36
+ }
37
+ else if (type.typeFlags & TYPE_INTEGER) {
38
+ return 'integer';
39
+ }
40
+ else {
41
+ return 'text';
42
+ }
43
+ }
44
+ }
45
+ //# sourceMappingURL=SchemaGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaGenerator.js","sourceRoot":"","sources":["../../src/schema-generators/SchemaGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAQ5F,MAAM,OAAgB,eAAe;IACzB,YAAY,CAAC,MAAoB,EAAE,MAAoB;QAC/D,IAAI,MAAM,GAAqD,EAAE,CAAC;QAElE,KAAK,IAAI,UAAU,IAAI,MAAM,CAAC,iBAAiB,EAAE,CAAC;YAChD,KAAK,IAAI,KAAK,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC;gBACzC,MAAM,SAAS,GAAG,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;gBACjD,KAAK,IAAI,KAAK,IAAI,SAAS,EAAE,CAAC;oBAC5B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;oBAC1B,KAAK,IAAI,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;wBACjC,IAAI,MAAM,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;4BACxB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC;wBAC7C,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE;YACpD,OAAO;gBACL,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;aAChC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IASD;;;OAGG;IACH,UAAU,CAAC,GAAqB;QAC9B,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;QACrB,IAAI,IAAI,CAAC,SAAS,GAAG,SAAS,EAAE,CAAC;YAC/B,OAAO,MAAM,CAAC;QAChB,CAAC;aAAM,IAAI,IAAI,CAAC,SAAS,GAAG,SAAS,EAAE,CAAC;YACtC,OAAO,MAAM,CAAC;QAChB,CAAC;aAAM,IAAI,IAAI,CAAC,SAAS,GAAG,YAAY,EAAE,CAAC;YACzC,OAAO,SAAS,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,12 @@
1
+ import { SqlSyncRules } from '../SqlSyncRules.js';
2
+ import { SourceSchema } from '../types.js';
3
+ import { GenerateSchemaOptions, SchemaGenerator } from './SchemaGenerator.js';
4
+ export declare class SwiftSchemaGenerator extends SchemaGenerator {
5
+ readonly key = "swift";
6
+ readonly label = "Swift";
7
+ readonly mediaType = "text/x-swift";
8
+ readonly fileName = "schema.swift";
9
+ generate(source: SqlSyncRules, schema: SourceSchema, options?: GenerateSchemaOptions): string;
10
+ private generateTable;
11
+ private generateColumn;
12
+ }
@@ -0,0 +1,44 @@
1
+ import { SchemaGenerator } from './SchemaGenerator.js';
2
+ export class SwiftSchemaGenerator extends SchemaGenerator {
3
+ key = 'swift';
4
+ label = 'Swift';
5
+ mediaType = 'text/x-swift';
6
+ fileName = 'schema.swift';
7
+ generate(source, schema, options) {
8
+ const tables = super.getAllTables(source, schema);
9
+ return `import PowerSync
10
+
11
+ let schema = Schema(
12
+ ${tables.map((table) => this.generateTable(table.name, table.columns, options)).join(',\n ')}
13
+ )`;
14
+ }
15
+ generateTable(name, columns, options) {
16
+ const generated = columns.map((c, i) => {
17
+ const last = i === columns.length - 1;
18
+ const base = this.generateColumn(c);
19
+ let withFormatting;
20
+ if (last) {
21
+ withFormatting = ` ${base}`;
22
+ }
23
+ else {
24
+ withFormatting = ` ${base},`;
25
+ }
26
+ if (options?.includeTypeComments && c.originalType != null) {
27
+ return `${withFormatting} // ${c.originalType}`;
28
+ }
29
+ else {
30
+ return withFormatting;
31
+ }
32
+ });
33
+ return `Table(
34
+ name: "${name}",
35
+ columns: [
36
+ ${generated.join('\n')}
37
+ ]
38
+ )`;
39
+ }
40
+ generateColumn(column) {
41
+ return `.${this.columnType(column)}("${column.name}")`;
42
+ }
43
+ }
44
+ //# sourceMappingURL=SwiftSchemaGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SwiftSchemaGenerator.js","sourceRoot":"","sources":["../../src/schema-generators/SwiftSchemaGenerator.ts"],"names":[],"mappings":"AAGA,OAAO,EAAyB,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE9E,MAAM,OAAO,oBAAqB,SAAQ,eAAe;IAC9C,GAAG,GAAG,OAAO,CAAC;IACd,KAAK,GAAG,OAAO,CAAC;IAChB,SAAS,GAAG,cAAc,CAAC;IAC3B,QAAQ,GAAG,cAAc,CAAC;IAEnC,QAAQ,CAAC,MAAoB,EAAE,MAAoB,EAAE,OAA+B;QAClF,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAElD,OAAO;;;IAGP,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;EAC7F,CAAC;IACD,CAAC;IAEO,aAAa,CAAC,IAAY,EAAE,OAA2B,EAAE,OAA+B;QAC9F,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACrC,MAAM,IAAI,GAAG,CAAC,KAAK,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;YACtC,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YACpC,IAAI,cAAsB,CAAC;YAC3B,IAAI,IAAI,EAAE,CAAC;gBACT,cAAc,GAAG,WAAW,IAAI,EAAE,CAAC;YACrC,CAAC;iBAAM,CAAC;gBACN,cAAc,GAAG,WAAW,IAAI,GAAG,CAAC;YACtC,CAAC;YAED,IAAI,OAAO,EAAE,mBAAmB,IAAI,CAAC,CAAC,YAAY,IAAI,IAAI,EAAE,CAAC;gBAC3D,OAAO,GAAG,cAAc,OAAO,CAAC,CAAC,YAAY,EAAE,CAAC;YAClD,CAAC;iBAAM,CAAC;gBACN,OAAO,cAAc,CAAC;YACxB,CAAC;QACH,CAAC,CAAC,CAAC;QACH,OAAO;aACE,IAAI;;EAEf,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;;IAElB,CAAC;IACH,CAAC;IAEO,cAAc,CAAC,MAAwB;QAC7C,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC;IACzD,CAAC;CACF"}
@@ -1,6 +1,6 @@
1
+ import { SqlSyncRules } from '../SqlSyncRules.js';
2
+ import { SourceSchema } from '../types.js';
1
3
  import { GenerateSchemaOptions, SchemaGenerator } from './SchemaGenerator.js';
2
- import { SqlSyncRules } from './SqlSyncRules.js';
3
- import { SourceSchema } from './types.js';
4
4
  export interface TsSchemaGeneratorOptions {
5
5
  language?: TsSchemaLanguage;
6
6
  imports?: TsSchemaImports;
@@ -1,4 +1,4 @@
1
- import { TYPE_INTEGER, TYPE_REAL, TYPE_TEXT } from './ExpressionType.js';
1
+ import { TYPE_INTEGER, TYPE_REAL, TYPE_TEXT } from '../ExpressionType.js';
2
2
  import { SchemaGenerator } from './SchemaGenerator.js';
3
3
  export var TsSchemaLanguage;
4
4
  (function (TsSchemaLanguage) {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TsSchemaGenerator.js","sourceRoot":"","sources":["../../src/schema-generators/TsSchemaGenerator.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,16 @@
1
1
  import { DartFlutterFlowSchemaGenerator, DartSchemaGenerator } from './DartSchemaGenerator.js';
2
+ import { DotNetSchemaGenerator } from './DotNetSchemaGenerator.js';
2
3
  import { JsLegacySchemaGenerator } from './JsLegacySchemaGenerator.js';
4
+ import { KotlinSchemaGenerator } from './KotlinSchemaGenerator.js';
5
+ import { SwiftSchemaGenerator } from './SwiftSchemaGenerator.js';
3
6
  import { TsSchemaGenerator } from './TsSchemaGenerator.js';
4
7
  export declare const schemaGenerators: {
5
- ts: TsSchemaGenerator;
6
- js: TsSchemaGenerator;
7
- jsLegacy: JsLegacySchemaGenerator;
8
8
  dart: DartSchemaGenerator;
9
+ dotNet: DotNetSchemaGenerator;
9
10
  flutterFlow: DartFlutterFlowSchemaGenerator;
11
+ js: TsSchemaGenerator;
12
+ jsLegacy: JsLegacySchemaGenerator;
13
+ kotlin: KotlinSchemaGenerator;
14
+ swift: SwiftSchemaGenerator;
15
+ ts: TsSchemaGenerator;
10
16
  };
@@ -0,0 +1,17 @@
1
+ import { DartFlutterFlowSchemaGenerator, DartSchemaGenerator } from './DartSchemaGenerator.js';
2
+ import { DotNetSchemaGenerator } from './DotNetSchemaGenerator.js';
3
+ import { JsLegacySchemaGenerator } from './JsLegacySchemaGenerator.js';
4
+ import { KotlinSchemaGenerator } from './KotlinSchemaGenerator.js';
5
+ import { SwiftSchemaGenerator } from './SwiftSchemaGenerator.js';
6
+ import { TsSchemaGenerator, TsSchemaLanguage } from './TsSchemaGenerator.js';
7
+ export const schemaGenerators = {
8
+ dart: new DartSchemaGenerator(),
9
+ dotNet: new DotNetSchemaGenerator(),
10
+ flutterFlow: new DartFlutterFlowSchemaGenerator(),
11
+ js: new TsSchemaGenerator({ language: TsSchemaLanguage.js }),
12
+ jsLegacy: new JsLegacySchemaGenerator(),
13
+ kotlin: new KotlinSchemaGenerator(),
14
+ swift: new SwiftSchemaGenerator(),
15
+ ts: new TsSchemaGenerator()
16
+ };
17
+ //# sourceMappingURL=generators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generators.js","sourceRoot":"","sources":["../../src/schema-generators/generators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/F,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE7E,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,IAAI,EAAE,IAAI,mBAAmB,EAAE;IAC/B,MAAM,EAAE,IAAI,qBAAqB,EAAE;IACnC,WAAW,EAAE,IAAI,8BAA8B,EAAE;IACjD,EAAE,EAAE,IAAI,iBAAiB,CAAC,EAAE,QAAQ,EAAE,gBAAgB,CAAC,EAAE,EAAE,CAAC;IAC5D,QAAQ,EAAE,IAAI,uBAAuB,EAAE;IACvC,MAAM,EAAE,IAAI,qBAAqB,EAAE;IACnC,KAAK,EAAE,IAAI,oBAAoB,EAAE;IACjC,EAAE,EAAE,IAAI,iBAAiB,EAAE;CAC5B,CAAC"}
@@ -0,0 +1,8 @@
1
+ export * from './DartSchemaGenerator.js';
2
+ export * from './DotNetSchemaGenerator.js';
3
+ export * from './generators.js';
4
+ export * from './JsLegacySchemaGenerator.js';
5
+ export * from './KotlinSchemaGenerator.js';
6
+ export * from './SchemaGenerator.js';
7
+ export * from './SwiftSchemaGenerator.js';
8
+ export * from './TsSchemaGenerator.js';
@@ -0,0 +1,9 @@
1
+ export * from './DartSchemaGenerator.js';
2
+ export * from './DotNetSchemaGenerator.js';
3
+ export * from './generators.js';
4
+ export * from './JsLegacySchemaGenerator.js';
5
+ export * from './KotlinSchemaGenerator.js';
6
+ export * from './SchemaGenerator.js';
7
+ export * from './SwiftSchemaGenerator.js';
8
+ export * from './TsSchemaGenerator.js';
9
+ //# sourceMappingURL=schema-generators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-generators.js","sourceRoot":"","sources":["../../src/schema-generators/schema-generators.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iBAAiB,CAAC;AAChC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC"}
@@ -1,9 +1,9 @@
1
1
  import { Expr, ExprRef, Name, NodeLocation, QName, QNameAliased, SelectedColumn } from 'pgsql-ast-parser';
2
2
  import { nil } from 'pgsql-ast-parser/src/utils.js';
3
+ import { BucketPriority } from './BucketDescription.js';
3
4
  import { SqlRuleError } from './errors.js';
4
5
  import { SqlFunction } from './sql_functions.js';
5
6
  import { ClauseError, CompiledClause, ParameterMatchClause, ParameterValueClause, QuerySchema, RowValueClause, StaticValueClause, TrueIfParametersMatch } from './types.js';
6
- import { BucketPriority } from './BucketDescription.js';
7
7
  export declare const MATCH_CONST_FALSE: TrueIfParametersMatch;
8
8
  export declare const MATCH_CONST_TRUE: TrueIfParametersMatch;
9
9
  export interface SqlToolsOptions {
@@ -20,13 +20,13 @@ export interface SqlToolsOptions {
20
20
  * "bucket" (bucket parameters for data query)
21
21
  * "token_parameters" (token parameters for parameter query)
22
22
  */
23
- parameter_tables?: string[];
23
+ parameterTables?: string[];
24
24
  /**
25
25
  * Set of tables used in QueryParameters.
26
26
  *
27
27
  * If not specified, defaults to [table].
28
28
  */
29
- value_tables?: string[];
29
+ valueTables?: string[];
30
30
  /**
31
31
  * For debugging / error messages.
32
32
  */
@@ -36,28 +36,28 @@ export interface SqlToolsOptions {
36
36
  *
37
37
  * Only one parameter may be expanded.
38
38
  */
39
- supports_expanding_parameters?: boolean;
39
+ supportsExpandingParameters?: boolean;
40
40
  /**
41
41
  * true if expressions on parameters are supported, e.g. upper(token_parameters.user_id)
42
42
  */
43
- supports_parameter_expressions?: boolean;
43
+ supportsParameterExpressions?: boolean;
44
44
  /**
45
45
  * Schema for validations.
46
46
  */
47
47
  schema?: QuerySchema;
48
48
  }
49
49
  export declare class SqlTools {
50
- default_table?: string;
51
- value_tables: string[];
50
+ readonly defaultTable?: string;
51
+ readonly valueTables: string[];
52
52
  /**
53
53
  * ['bucket'] for data queries
54
54
  * ['token_parameters', 'user_parameters'] for parameter queries
55
55
  */
56
- parameter_tables: string[];
57
- sql: string;
58
- errors: SqlRuleError[];
59
- supports_expanding_parameters: boolean;
60
- supports_parameter_expressions: boolean;
56
+ readonly parameterTables: string[];
57
+ readonly sql: string;
58
+ readonly errors: SqlRuleError[];
59
+ readonly supportsExpandingParameters: boolean;
60
+ readonly supportsParameterExpressions: boolean;
61
61
  schema?: QuerySchema;
62
62
  constructor(options: SqlToolsOptions);
63
63
  error(message: string, expr: NodeLocation | Expr | undefined): ClauseError;
@@ -1,44 +1,44 @@
1
1
  import { JSONBig } from '@powersync/service-jsonbig';
2
+ import { isValidPriority } from './BucketDescription.js';
2
3
  import { ExpressionType } from './ExpressionType.js';
3
4
  import { SqlRuleError } from './errors.js';
4
5
  import { REQUEST_FUNCTIONS } from './request_functions.js';
5
6
  import { BASIC_OPERATORS, OPERATOR_IN, OPERATOR_IS_NOT_NULL, OPERATOR_IS_NULL, OPERATOR_JSON_EXTRACT_JSON, OPERATOR_JSON_EXTRACT_SQL, OPERATOR_NOT, SQL_FUNCTIONS, castOperator, getOperatorFunction, sqliteTypeOf } from './sql_functions.js';
6
7
  import { SQLITE_FALSE, SQLITE_TRUE, andFilters, compileStaticOperator, isClauseError, isParameterMatchClause, isParameterValueClause, isRowValueClause, isStaticValueClause, orFilters, toBooleanParameterSetClause } from './sql_support.js';
7
8
  import { isJsonValue } from './utils.js';
8
- import { isValidPriority } from './BucketDescription.js';
9
9
  export const MATCH_CONST_FALSE = [];
10
10
  export const MATCH_CONST_TRUE = [{}];
11
11
  Object.freeze(MATCH_CONST_TRUE);
12
12
  Object.freeze(MATCH_CONST_FALSE);
13
13
  export class SqlTools {
14
- default_table;
15
- value_tables;
14
+ defaultTable;
15
+ valueTables;
16
16
  /**
17
17
  * ['bucket'] for data queries
18
18
  * ['token_parameters', 'user_parameters'] for parameter queries
19
19
  */
20
- parameter_tables;
20
+ parameterTables;
21
21
  sql;
22
22
  errors = [];
23
- supports_expanding_parameters;
24
- supports_parameter_expressions;
23
+ supportsExpandingParameters;
24
+ supportsParameterExpressions;
25
25
  schema;
26
26
  constructor(options) {
27
- this.default_table = options.table;
27
+ this.defaultTable = options.table;
28
28
  this.schema = options.schema;
29
- if (options.value_tables) {
30
- this.value_tables = options.value_tables;
29
+ if (options.valueTables) {
30
+ this.valueTables = options.valueTables;
31
31
  }
32
- else if (this.default_table) {
33
- this.value_tables = [this.default_table];
32
+ else if (this.defaultTable) {
33
+ this.valueTables = [this.defaultTable];
34
34
  }
35
35
  else {
36
- this.value_tables = [];
36
+ this.valueTables = [];
37
37
  }
38
- this.parameter_tables = options.parameter_tables ?? [];
38
+ this.parameterTables = options.parameterTables ?? [];
39
39
  this.sql = options.sql;
40
- this.supports_expanding_parameters = options.supports_expanding_parameters ?? false;
41
- this.supports_parameter_expressions = options.supports_parameter_expressions ?? false;
40
+ this.supportsExpandingParameters = options.supportsExpandingParameters ?? false;
41
+ this.supportsParameterExpressions = options.supportsParameterExpressions ?? false;
42
42
  }
43
43
  error(message, expr) {
44
44
  this.errors.push(new SqlRuleError(message, this.sql, expr));
@@ -146,7 +146,7 @@ export class SqlTools {
146
146
  // 4. parameter value, parameter value
147
147
  let staticFilter1;
148
148
  let otherFilter1;
149
- if (this.supports_parameter_expressions &&
149
+ if (this.supportsParameterExpressions &&
150
150
  isParameterValueClause(leftFilter) &&
151
151
  isParameterValueClause(rightFilter)) {
152
152
  // 4. parameterValue, parameterValue
@@ -247,7 +247,7 @@ export class SqlTools {
247
247
  usesUnauthenticatedRequestParameters: leftFilter.usesUnauthenticatedRequestParameters
248
248
  };
249
249
  }
250
- else if (this.supports_expanding_parameters &&
250
+ else if (this.supportsExpandingParameters &&
251
251
  isRowValueClause(leftFilter) &&
252
252
  isParameterValueClause(rightFilter)) {
253
253
  // table.some_value IN token_parameters.some_array
@@ -325,7 +325,7 @@ export class SqlTools {
325
325
  }
326
326
  else if (schema == 'request') {
327
327
  // Special function
328
- if (!this.supports_parameter_expressions) {
328
+ if (!this.supportsParameterExpressions) {
329
329
  return this.error(`${schema} schema is not available in data queries`, expr);
330
330
  }
331
331
  if (expr.args.length > 0) {
@@ -410,8 +410,8 @@ export class SqlTools {
410
410
  if (expr.type != 'ref') {
411
411
  return false;
412
412
  }
413
- const tableName = expr.table?.name ?? this.default_table;
414
- return this.parameter_tables.includes(tableName ?? '');
413
+ const tableName = expr.table?.name ?? this.defaultTable;
414
+ return this.parameterTables.includes(tableName ?? '');
415
415
  }
416
416
  /**
417
417
  * Check if an expression is a value_tables reference.
@@ -489,7 +489,7 @@ export class SqlTools {
489
489
  }
490
490
  }
491
491
  getParameterRefClause(expr) {
492
- const table = (expr.table?.name ?? this.default_table);
492
+ const table = (expr.table?.name ?? this.defaultTable);
493
493
  const column = expr.name;
494
494
  return {
495
495
  key: `${table}.${column}`,
@@ -512,8 +512,8 @@ export class SqlTools {
512
512
  if (this.refHasSchema(ref)) {
513
513
  throw new SqlRuleError(`Specifying schema in column references is not supported`, this.sql, ref);
514
514
  }
515
- const tableName = ref.table?.name ?? this.default_table;
516
- if (this.value_tables.includes(tableName ?? '')) {
515
+ const tableName = ref.table?.name ?? this.defaultTable;
516
+ if (this.valueTables.includes(tableName ?? '')) {
517
517
  return tableName;
518
518
  }
519
519
  else if (ref.table?.name == null) {
@@ -611,7 +611,7 @@ export class SqlTools {
611
611
  // argsType unchanged
612
612
  }
613
613
  else if (isParameterValueClause(clause)) {
614
- if (!this.supports_parameter_expressions) {
614
+ if (!this.supportsParameterExpressions) {
615
615
  if (fnImpl.debugName == 'operatorIN') {
616
616
  // Special-case error message to be more descriptive
617
617
  return { error: `Cannot use bucket parameters on the right side of IN operators`, errorExpr: debugArg };