@powersync/service-sync-rules 0.0.0-dev-20260225160713 → 0.0.0-dev-20260511080634
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/README.md +3 -3
- package/dist/BaseSqlDataQuery.d.ts +1 -1
- package/dist/BaseSqlDataQuery.js +2 -1
- package/dist/BaseSqlDataQuery.js.map +1 -1
- package/dist/BucketDescription.d.ts +23 -3
- package/dist/BucketDescription.js +12 -0
- package/dist/BucketDescription.js.map +1 -1
- package/dist/BucketParameterQuerier.d.ts +18 -1
- package/dist/BucketParameterQuerier.js +39 -3
- package/dist/BucketParameterQuerier.js.map +1 -1
- package/dist/BucketSource.d.ts +2 -2
- package/dist/BucketSource.js +5 -4
- package/dist/BucketSource.js.map +1 -1
- package/dist/HydratedSyncRules.d.ts +2 -2
- package/dist/HydratedSyncRules.js +1 -1
- package/dist/HydratedSyncRules.js.map +1 -1
- package/dist/HydrationState.d.ts +13 -5
- package/dist/HydrationState.js +7 -5
- package/dist/HydrationState.js.map +1 -1
- package/dist/SqlDataQuery.d.ts +1 -1
- package/dist/SqlParameterQuery.js +10 -13
- package/dist/SqlParameterQuery.js.map +1 -1
- package/dist/SqlSyncRules.d.ts +9 -2
- package/dist/SqlSyncRules.js +1 -1
- package/dist/SqlSyncRules.js.map +1 -1
- package/dist/StaticSqlParameterQuery.js +5 -12
- package/dist/StaticSqlParameterQuery.js.map +1 -1
- package/dist/StorageVersion.d.ts +27 -0
- package/dist/StorageVersion.js +17 -0
- package/dist/StorageVersion.js.map +1 -0
- package/dist/SyncConfig.d.ts +9 -3
- package/dist/SyncConfig.js +9 -3
- package/dist/SyncConfig.js.map +1 -1
- package/dist/TableValuedFunctionSqlParameterQuery.js +3 -10
- package/dist/TableValuedFunctionSqlParameterQuery.js.map +1 -1
- package/dist/TableValuedFunctions.js +1 -0
- package/dist/TableValuedFunctions.js.map +1 -1
- package/dist/cast.d.ts +9 -0
- package/dist/cast.js +131 -0
- package/dist/cast.js.map +1 -0
- package/dist/compiler/bucket_resolver.d.ts +3 -1
- package/dist/compiler/bucket_resolver.js +18 -1
- package/dist/compiler/bucket_resolver.js.map +1 -1
- package/dist/compiler/compiler.d.ts +3 -3
- package/dist/compiler/compiler.js +3 -3
- package/dist/compiler/compiler.js.map +1 -1
- package/dist/compiler/equality.d.ts +1 -1
- package/dist/compiler/equality.js.map +1 -1
- package/dist/compiler/expression.d.ts +4 -4
- package/dist/compiler/expression.js +2 -2
- package/dist/compiler/expression.js.map +1 -1
- package/dist/compiler/filter.d.ts +2 -2
- package/dist/compiler/filter.js +4 -2
- package/dist/compiler/filter.js.map +1 -1
- package/dist/compiler/filter_simplifier.d.ts +2 -2
- package/dist/compiler/filter_simplifier.js +2 -2
- package/dist/compiler/filter_simplifier.js.map +1 -1
- package/dist/compiler/ir_to_sync_plan.d.ts +4 -2
- package/dist/compiler/ir_to_sync_plan.js +17 -10
- package/dist/compiler/ir_to_sync_plan.js.map +1 -1
- package/dist/compiler/parser.d.ts +7 -6
- package/dist/compiler/parser.js +56 -17
- package/dist/compiler/parser.js.map +1 -1
- package/dist/compiler/querier_graph.d.ts +2 -1
- package/dist/compiler/querier_graph.js +46 -12
- package/dist/compiler/querier_graph.js.map +1 -1
- package/dist/compiler/rows.d.ts +3 -4
- package/dist/compiler/rows.js +3 -8
- package/dist/compiler/rows.js.map +1 -1
- package/dist/compiler/scope.d.ts +1 -1
- package/dist/compiler/sqlite.d.ts +2 -2
- package/dist/compiler/sqlite.js +37 -16
- package/dist/compiler/sqlite.js.map +1 -1
- package/dist/compiler/table.d.ts +43 -2
- package/dist/compiler/table.js +129 -9
- package/dist/compiler/table.js.map +1 -1
- package/dist/events/SqlEventDescriptor.d.ts +1 -1
- package/dist/events/SqlEventDescriptor.js +1 -1
- package/dist/events/SqlEventDescriptor.js.map +1 -1
- package/dist/events/SqlEventSourceQuery.d.ts +1 -1
- package/dist/events/SqlEventSourceQuery.js.map +1 -1
- package/dist/from_yaml.d.ts +1 -1
- package/dist/from_yaml.js +118 -42
- package/dist/from_yaml.js.map +1 -1
- package/dist/index.d.ts +9 -7
- package/dist/index.js +9 -7
- package/dist/index.js.map +1 -1
- package/dist/json_schema.js +16 -0
- package/dist/json_schema.js.map +1 -1
- package/dist/schema-generators/DartSchemaGenerator.d.ts +1 -0
- package/dist/schema-generators/DartSchemaGenerator.js +36 -2
- package/dist/schema-generators/DartSchemaGenerator.js.map +1 -1
- package/dist/schema-generators/DotNetSchemaGenerator.d.ts +12 -1
- package/dist/schema-generators/DotNetSchemaGenerator.js +104 -3
- package/dist/schema-generators/DotNetSchemaGenerator.js.map +1 -1
- package/dist/schema-generators/JsLegacySchemaGenerator.js.map +1 -1
- package/dist/schema-generators/KotlinSchemaGenerator.d.ts +3 -0
- package/dist/schema-generators/KotlinSchemaGenerator.js +68 -5
- package/dist/schema-generators/KotlinSchemaGenerator.js.map +1 -1
- package/dist/schema-generators/RoomSchemaGenerator.js +3 -19
- package/dist/schema-generators/RoomSchemaGenerator.js.map +1 -1
- package/dist/schema-generators/SchemaGenerator.d.ts +7 -1
- package/dist/schema-generators/SchemaGenerator.js +35 -0
- package/dist/schema-generators/SchemaGenerator.js.map +1 -1
- package/dist/schema-generators/SwiftSchemaGenerator.d.ts +3 -0
- package/dist/schema-generators/SwiftSchemaGenerator.js +66 -2
- package/dist/schema-generators/SwiftSchemaGenerator.js.map +1 -1
- package/dist/schema-generators/TsSchemaGenerator.d.ts +2 -0
- package/dist/schema-generators/TsSchemaGenerator.js +45 -8
- package/dist/schema-generators/TsSchemaGenerator.js.map +1 -1
- package/dist/schema-generators/generators.d.ts +2 -1
- package/dist/schema-generators/generators.js +2 -1
- package/dist/schema-generators/generators.js.map +1 -1
- package/dist/schema-generators/schema-generators.js.map +1 -1
- package/dist/sql_filters.d.ts +1 -1
- package/dist/sql_filters.js +1 -1
- package/dist/sql_filters.js.map +1 -1
- package/dist/sql_functions.d.ts +2 -6
- package/dist/sql_functions.js +33 -116
- package/dist/sql_functions.js.map +1 -1
- package/dist/streams/filter.d.ts +2 -4
- package/dist/streams/filter.js +2 -1
- package/dist/streams/filter.js.map +1 -1
- package/dist/streams/from_sql.js +8 -8
- package/dist/streams/from_sql.js.map +1 -1
- package/dist/streams/stream.d.ts +2 -2
- package/dist/streams/variant.d.ts +2 -3
- package/dist/streams/variant.js +11 -14
- package/dist/streams/variant.js.map +1 -1
- package/dist/sync_plan/engine/javascript.js +14 -3
- package/dist/sync_plan/engine/javascript.js.map +1 -1
- package/dist/sync_plan/engine/sqlite.js +2 -1
- package/dist/sync_plan/engine/sqlite.js.map +1 -1
- package/dist/sync_plan/evaluator/bucket_data_source.js +4 -3
- package/dist/sync_plan/evaluator/bucket_data_source.js.map +1 -1
- package/dist/sync_plan/evaluator/bucket_source.d.ts +1 -1
- package/dist/sync_plan/evaluator/bucket_source.js +32 -37
- package/dist/sync_plan/evaluator/bucket_source.js.map +1 -1
- package/dist/sync_plan/evaluator/index.d.ts +8 -2
- package/dist/sync_plan/evaluator/index.js +9 -2
- package/dist/sync_plan/evaluator/index.js.map +1 -1
- package/dist/sync_plan/evaluator/parameter_evaluator.d.ts +9 -13
- package/dist/sync_plan/evaluator/parameter_evaluator.js +61 -60
- package/dist/sync_plan/evaluator/parameter_evaluator.js.map +1 -1
- package/dist/sync_plan/evaluator/parameter_index_lookup_creator.d.ts +4 -5
- package/dist/sync_plan/evaluator/parameter_index_lookup_creator.js +36 -6
- package/dist/sync_plan/evaluator/parameter_index_lookup_creator.js.map +1 -1
- package/dist/sync_plan/evaluator/table_processor_to_sql.js +0 -9
- package/dist/sync_plan/evaluator/table_processor_to_sql.js.map +1 -1
- package/dist/sync_plan/expression.js +40 -40
- package/dist/sync_plan/expression.js.map +1 -1
- package/dist/sync_plan/expression_visitor.d.ts +4 -1
- package/dist/sync_plan/expression_visitor.js +21 -12
- package/dist/sync_plan/expression_visitor.js.map +1 -1
- package/dist/sync_plan/plan.d.ts +2 -3
- package/dist/sync_plan/schema_inference.d.ts +6 -2
- package/dist/sync_plan/schema_inference.js +104 -3
- package/dist/sync_plan/schema_inference.js.map +1 -1
- package/dist/sync_plan/serialize.d.ts +1 -1
- package/dist/types/custom_sqlite_value.d.ts +1 -1
- package/dist/types/custom_sqlite_value.js +1 -1
- package/dist/types.d.ts +4 -1
- package/dist/types.js +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils.d.ts +27 -5
- package/dist/utils.js +56 -18
- package/dist/utils.js.map +1 -1
- package/dist/validators.js.map +1 -1
- package/dist/yaml_scalar_map.d.ts +19 -0
- package/dist/yaml_scalar_map.js +339 -0
- package/dist/yaml_scalar_map.js.map +1 -0
- package/package.json +9 -7
- package/schema/sync_rules.json +18 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"variant.js","sourceRoot":"","sources":["../../src/streams/variant.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"variant.js","sourceRoot":"","sources":["../../src/streams/variant.ts"],"names":[],"mappings":"AAIA,OAAO,EAKL,cAAc,EAEf,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAGtF,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,OAAO,aAAa;IACxB,EAAE,CAAS;IACX,UAAU,CAAoB;IAC9B,UAAU,CAAsB;IAEhC;;;;OAIG;IACH,oBAAoB,CAAiC;IAErD;;;;;OAKG;IACH,cAAc,CAAkB;IAEhC,YAAY,EAAU;QACpB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;QAC/B,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;IAC3B,CAAC;IAED,mBAAmB,CAAC,UAAkB;QACpC,OAAO,GAAG,UAAU,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;IACpC,CAAC;IAED,mBAAmB;QACjB,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC/E,CAAC;IAED;;OAEG;IACH,sBAAsB,CAAC,OAAiB;QACtC,OAAO,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC,CAAC;IACpG,CAAC;IAED;;;;OAIG;IACH,oBAAoB,CAAC,OAAiB;QACpC,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACnD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBACzB,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;QAED,gHAAgH;QAChH,0DAA0D;QAC1D,MAAM,uBAAuB,GAAwB,EAAE,CAAC;QACxD,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACxC,MAAM,QAAQ,GAAG,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAC9C,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBACzB,+GAA+G;gBAC/G,+DAA+D;gBAC/D,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,uBAAuB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzC,CAAC;QAED,8FAA8F;QAC9F,0BAA0B;QAC1B,OAAO,IAAI,CAAC,yCAAyC,CAAC,uBAAuB,CAAC,CAAC;IACjF,CAAC;IAED;;;;;;OAMG;IACK,yCAAyC,CAAC,cAAmC;QACnF,OAAO,CAAC,GAAG,gBAAgB,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,CACL,MAAkB,EAClB,YAAoC,EACpC,MAAyB,EACzB,WAA4B,EAC5B,kBAAsC;QAEtC,MAAM,MAAM,GAA0B,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAElH,MAAM,aAAa,GAAG,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC;QAC/D,IAAI,aAAa,IAAI,IAAI,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;QAOD,MAAM,qBAAqB,GAA4B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,SAAS,CAAC,CAAC;QAC9G,MAAM,iBAAiB,GAA+B,EAAE,CAAC;QACzD,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAA8C,CAAC;QAEhF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChD,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;YAEhC,IAAI,MAAM,CAAC,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,IAAI,IAAI,SAAS,EAAE,CAAC;gBACpD,iBAAiB,CAAC,IAAI,CAAC;oBACrB,KAAK,EAAE,CAAC;oBACR,QAAQ,EAAE,MAAM,CAAC,QAAQ;iBAC1B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACvC,MAAM,cAAc,GAAG,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACxD,IAAI,cAAc,IAAI,IAAI,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;YAC7D,CAAC;YACD,iBAAiB,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,aAAa,GAAqB,EAAE,CAAC;QAC3C,IAAI,iBAAiB,CAAC,MAAM,IAAI,CAAC,IAAI,qBAAqB,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACvE,sFAAsF;YACtF,MAAM,cAAc,GAAG,IAAI,CAAC,yCAAyC,CAAC,aAAoC,CAAC,CAAC;YAC5G,KAAK,MAAM,aAAa,IAAI,cAAc,EAAE,CAAC;gBAC3C,aAAa,CAAC,IAAI,CAChB,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,CAAC,CAC/F,CAAC;YACJ,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC;QACrB,OAAO;YACL,aAAa,EAAE,aAAa;YAC5B,iBAAiB,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC;YAC9C,KAAK,CAAC,8BAA8B,CAAC,MAAM;gBACzC,sBAAsB;gBACtB,MAAM,eAAe,GAAG,IAAI,GAAG,EAAwC,CAAC;gBACxE,KAAK,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,iBAAiB,CAAC,OAAO,EAAE,EAAE,CAAC;oBAC9D,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,gBAAgB,CACxC,OAAO,EACP,WAAW,OAAO,CAAC,EAAE,0BAA0B,MAAM,CAAC,IAAI,EAAE,CAC7D,CAAC;oBACF,kGAAkG;oBAClG,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;oBACzC,eAAe,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBACxC,CAAC;gBAED,sEAAsE;gBACtE,KAAK,MAAM,MAAM,IAAI,qBAAqB,EAAE,CAAC;oBAC3C,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAE,CAAC,EAAE,CAAC;wBACnE,OAAO,EAAE,CAAC;oBACZ,CAAC;gBACH,CAAC;gBAED,MAAM,yBAAyB,GAA4C,EAAE,CAAC;gBAC9E,KAAK,MAAM,SAAS,IAAI,aAAa,EAAE,CAAC;oBACtC,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;wBAC7B,6BAA6B;wBAC7B,yBAAyB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAC5C,CAAC;yBAAM,CAAC;wBACN,yCAAyC;wBACzC,yBAAyB,CAAC,IAAI,CAAC,CAAC,SAA4B,CAAC,CAAC,CAAC;oBACjE,CAAC;gBACH,CAAC;gBAED,KAAK,MAAM,MAAM,IAAI,iBAAiB,EAAE,CAAC;oBACvC,yBAAyB,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAE,CAAC;gBAClF,CAAC;gBAED,MAAM,OAAO,GAAG,OAAO,CAAC,yCAAyC,CAC/D,yBAAgD,CACjD,CAAC;gBAEF,OAAO,OAAO,CAAC,OAAO,CACpB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,CAAC,CAAC,CAC1G,CAAC;YACJ,CAAC;SACF,CAAC;IACJ,CAAC;IAED,wBAAwB,CAAC,MAAyB;QAChD,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YAC3B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,IAAI,CAAC,yCAAyC;QACnD,qGAAqG;QACrG,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAwB,CAChE,CAAC;IACJ,CAAC;IAED,mBAAmB;QACjB,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACtC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI;aACpB,CAAC,CAAC;YACH,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACtC,KAAK,EAAE,CAAC,CAAC,cAAc;aACxB,CAAC,CAAC;YACH,sBAAsB,EAAE,IAAI,CAAC,oBAAoB,CAAC,MAAM;YACxD,eAAe,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;SACxD,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACK,2BAA2B,CAAC,MAAyB;QAC3D,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACzC,IAAI,MAAM,CAAC,IAAI,IAAI,QAAQ,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBACvD,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,MAAM,aAAa,GAA4C,EAAE,CAAC;QAClE,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACxC,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;YAChC,IAAI,MAAM,CAAC,IAAI,IAAI,QAAQ,EAAE,CAAC;gBAC5B,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;gBAC/D,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;oBACvB,6GAA6G;oBAC7G,oDAAoD;oBACpD,OAAO,IAAI,CAAC;gBACd,CAAC;gBAED,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC7B,CAAC;iBAAM,CAAC;gBACN,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QAED,OAAO,aAAa,CAAC;IACvB,CAAC;IAED;;;;;;;OAOG;IACK,yBAAyB,CAAC,aAAgC;QAChE,IAAI,aAAa,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YACnD,MAAM,KAAK,CAAC,+CAA+C,CAAC,CAAC;QAC/D,CAAC;QAED,OAAO,uBAAuB,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IAC1D,CAAC;IAEO,aAAa,CACnB,MAAkB,EAClB,aAAgC,EAChC,MAA6B,EAC7B,WAA4B,EAC5B,gBAAmD;QAEnD,MAAM,UAAU,GAAG,iBAAiB,CAClC,WAAW,EACX,IAAI,CAAC,yBAAyB,CAAC,aAAa,CAAC,EAC7C,gBAAgB,IAAI,MAAM,CAAC,QAAQ,CACpC,CAAC;QACF,OAAO,cAAc,CAAC,UAAU,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,iBAAiB,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC9F,CAAC;IAED,4BAA4B,CAC1B,MAA0B,EAC1B,MAAkB,EAClB,iBAAmC;QAEnC,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;QAC7C,MAAM,WAAW,GAAG,cAAc,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;QAE3E,MAAM,kBAAkB,GAAuB,IAAI,GAAG,CACpD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC,CAAC,CAC5E,CAAC;QAEF,OAAO;YACL,2BAA2B,EAAE,CAAC,MAAuB,EAAE,OAA0B,EAAQ,EAAE;gBACzF,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBAEzD,IAAI,CAAC,MAAM,CAAC,qBAAqB,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;oBAC3D,sFAAsF;oBACtF,OAAO;gBACT,CAAC;gBAED,IAAI,8BAA8B,GAAG,KAAK,CAAC;gBAC3C,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;oBACzC,IAAI,kBAAkB,GAAG,OAAO,CAAC,gBAAgB,CAAC;oBAClD,IAAI,YAAY,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC;wBACpC,kBAAkB,GAAG,kBAAkB,CAAC,yBAAyB,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;oBAC7F,CAAC;yBAAM,CAAC;wBACN,8BAA8B,GAAG,IAAI,CAAC;oBACxC,CAAC;oBAED,IAAI,CAAC,uBAAuB,CAC1B,MAAM,EACN,MAAM,EACN,YAAY,EACZ,kBAAkB,EAClB,WAAW,EACX,kBAAkB,CACnB,CAAC;gBACJ,CAAC;gBAED,+GAA+G;gBAC/G,kDAAkD;gBAClD,IAAI,MAAM,CAAC,qBAAqB,IAAI,CAAC,8BAA8B,EAAE,CAAC;oBACpE,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,gBAAgB,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC;gBAChH,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;IAEO,uBAAuB,CAC7B,MAAkB,EAClB,MAAuB,EACvB,YAAoC,EACpC,MAAyB,EACzB,WAA4B,EAC5B,kBAAsC;QAEtC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC;YAC5F,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;gBACjB,UAAU,EAAE,MAAM,CAAC,IAAI;gBACvB,OAAO,EAAE,gCAAgC,CAAC,CAAC,OAAO,EAAE;gBACpD,YAAY,EAAE,YAAY,IAAI,SAAS;aACxC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { compare, generateSqlFunctions, SQLITE_FALSE, SQLITE_TRUE, sqliteBool, sqliteNot } from '../../index.js';
|
|
2
|
-
import {
|
|
1
|
+
import { cast, compare, ExpressionType, generateSqlFunctions, SQLITE_FALSE, SQLITE_TRUE, sqliteBool, sqliteNot } from '../../index.js';
|
|
2
|
+
import { evaluateOperator } from '../../sql_functions.js';
|
|
3
3
|
import { cartesianProduct } from '../../streams/utils.js';
|
|
4
4
|
import { generateTableValuedFunctions } from '../../TableValuedFunctions.js';
|
|
5
5
|
import { visitExpr } from '../expression_visitor.js';
|
|
@@ -10,7 +10,18 @@ export function javaScriptExpressionEngine(compatibility) {
|
|
|
10
10
|
const tableValued = generateTableValuedFunctions(compatibility);
|
|
11
11
|
const regularFunctions = generateSqlFunctions(compatibility);
|
|
12
12
|
const compiler = new ExpressionToJavaScriptFunction({
|
|
13
|
-
named:
|
|
13
|
+
named: {
|
|
14
|
+
...regularFunctions.named,
|
|
15
|
+
ps_json_contains: {
|
|
16
|
+
debugName: 'ps_json_contains',
|
|
17
|
+
call: function (...args) {
|
|
18
|
+
return evaluateOperator('IN', args[0], args[1]);
|
|
19
|
+
},
|
|
20
|
+
getReturnType: function (args) {
|
|
21
|
+
return ExpressionType.INTEGER;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
},
|
|
14
25
|
jsonExtractJson: regularFunctions.operatorJsonExtractJson,
|
|
15
26
|
jsonExtractSql: regularFunctions.operatorJsonExtractSql
|
|
16
27
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"javascript.js","sourceRoot":"","sources":["../../../src/sync_plan/engine/javascript.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EAEP,oBAAoB,EACpB,YAAY,EACZ,WAAW,EACX,UAAU,EACV,SAAS,EACV,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"javascript.js","sourceRoot":"","sources":["../../../src/sync_plan/engine/javascript.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CompatibilityOption } from '../../compatibility.js';
|
|
2
|
-
import { generateSqlFunctions } from '../../index.js';
|
|
2
|
+
import { evaluateOperator, generateSqlFunctions } from '../../index.js';
|
|
3
3
|
import { scalarStatementToSql } from './scalar_expression_engine.js';
|
|
4
4
|
/**
|
|
5
5
|
* Creates a {@link ScalarExpressionEngine} backed by an in-memory SQLite database using `node:sqlite` APIs.
|
|
@@ -26,6 +26,7 @@ export function nodeSqliteExpressionEngine(module, compatibility) {
|
|
|
26
26
|
registerPowerSyncFunction('st_astext');
|
|
27
27
|
registerPowerSyncFunction('st_x');
|
|
28
28
|
registerPowerSyncFunction('st_y');
|
|
29
|
+
db.function('ps_json_contains', { useBigIntArguments: true, deterministic: true }, (a, b) => evaluateOperator('IN', a, b));
|
|
29
30
|
if (!compatibility.isEnabled(CompatibilityOption.fixedJsonExtract)) {
|
|
30
31
|
// For backwards compatibility, use the old JSON operators which parse the path argument differently.
|
|
31
32
|
db.function('->', { useBigIntArguments: true, varargs: true, deterministic: true }, (...args) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../../src/sync_plan/engine/sqlite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../../src/sync_plan/engine/sqlite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AACnF,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAExE,OAAO,EAAqD,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAExH;;;;;;;;GAQG;AACH,MAAM,UAAU,0BAA0B,CACxC,MAAoC,EACpC,aAAmC;IAEnC,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAS,CAAC,CAAC;IACjH,MAAM,SAAS,GAAG,oBAAoB,CAAC,aAAa,CAAC,CAAC;IAEtD,SAAS,yBAAyB,CAAC,IAAY;QAC7C,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAE,CAAC;QAEpC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE;YAC9F,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;IACL,CAAC;IAED,4DAA4D;IAC5D,yBAAyB,CAAC,WAAW,CAAC,CAAC;IACvC,yBAAyB,CAAC,UAAU,CAAC,CAAC;IAEtC,yBAAyB,CAAC,cAAc,CAAC,CAAC;IAC1C,yBAAyB,CAAC,WAAW,CAAC,CAAC;IACvC,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAClC,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAElC,EAAE,CAAC,QAAQ,CAAC,kBAAkB,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAC1F,gBAAgB,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAC7B,CAAC;IAEF,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACnE,qGAAqG;QACrG,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE;YAC9F,OAAO,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE;YAC/F,OAAO,SAAS,CAAC,sBAAsB,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,gBAAgB,CAAC,KAAK;YACpB,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC;YACrD,OAAO;gBACL,QAAQ,CAAC,MAAM;oBACb,wFAAwF;oBACxF,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAA+B,CAAC;gBAC3D,CAAC;aACF,CAAC;QACJ,CAAC;QACD,KAAK;YACH,EAAE,CAAC,KAAK,EAAE,CAAC;QACb,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { idFromData } from '../../cast.js';
|
|
2
|
+
import { filterJsonRow, isJsonValue, isValidParameterValue, JSONBucketNameSerialize } from '../../utils.js';
|
|
3
3
|
import { scalarStatementToSql } from '../engine/scalar_expression_engine.js';
|
|
4
|
-
import {
|
|
4
|
+
import { ExpressionToSqlite } from '../expression_to_sql.js';
|
|
5
5
|
import { SyncPlanSchemaAnalyzer } from '../schema_inference.js';
|
|
6
|
+
import { TableProcessorToSqlHelper } from './table_processor_to_sql.js';
|
|
6
7
|
export class PreparedStreamBucketDataSource {
|
|
7
8
|
source;
|
|
8
9
|
sourceTables = new Set();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bucket_data_source.js","sourceRoot":"","sources":["../../../src/sync_plan/evaluator/bucket_data_source.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bucket_data_source.js","sourceRoot":"","sources":["../../../src/sync_plan/evaluator/bucket_data_source.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { BucketDataSource, BucketSource, BucketSourceType, CreateSourceParams, HydratedBucketSource, ParameterIndexLookupCreator } from '../../BucketSource.js';
|
|
2
|
-
import { StreamEvaluationContext } from './index.js';
|
|
3
2
|
import * as plan from '../plan.js';
|
|
3
|
+
import { StreamEvaluationContext } from './index.js';
|
|
4
4
|
export interface StreamInput extends StreamEvaluationContext {
|
|
5
5
|
preparedBuckets: Map<plan.StreamBucketDataSource, BucketDataSource>;
|
|
6
6
|
preparedLookups: Map<plan.StreamParameterIndexLookupCreator, ParameterIndexLookupCreator>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { BucketSourceType } from '../../BucketSource.js';
|
|
2
|
+
import { bucketDescription, JSONBucketNameSerialize, resolvedBucket } from '../../utils.js';
|
|
2
3
|
import { mapExternalDataToInstantiation } from '../engine/scalar_expression_engine.js';
|
|
3
4
|
import { parametersForRequest, RequestParameterEvaluators } from './parameter_evaluator.js';
|
|
4
|
-
import { buildBucketName, JSONBucketNameSerialize } from '../../utils.js';
|
|
5
5
|
export class StreamBucketSource {
|
|
6
6
|
stream;
|
|
7
7
|
input;
|
|
@@ -71,7 +71,7 @@ class PreparedQuerier {
|
|
|
71
71
|
this.stream = stream;
|
|
72
72
|
this.dataSource = options.preparedBuckets.get(querier.bucket);
|
|
73
73
|
this.matchesParameters = PreparedQuerier.prepareFilters(options.engine, querier.requestFilters);
|
|
74
|
-
this.lookupStages = RequestParameterEvaluators.prepare(querier.lookupStages, querier.sourceInstantiation, options);
|
|
74
|
+
this.lookupStages = RequestParameterEvaluators.prepare(stream, querier.lookupStages, querier.sourceInstantiation, options);
|
|
75
75
|
}
|
|
76
76
|
querierForSubscription(hydration, result, params, subscription) {
|
|
77
77
|
const reason = subscription != null ? { subscription: subscription.opaque_id } : 'default';
|
|
@@ -80,46 +80,41 @@ class PreparedQuerier {
|
|
|
80
80
|
return;
|
|
81
81
|
}
|
|
82
82
|
const subscriptionEvaluators = this.lookupStages.clone();
|
|
83
|
-
subscriptionEvaluators.partiallyInstantiate({ request: params });
|
|
84
|
-
if (subscriptionEvaluators.isDefinitelyUninstantiable()) {
|
|
85
|
-
return;
|
|
86
|
-
}
|
|
83
|
+
const partialInstantiationResult = subscriptionEvaluators.partiallyInstantiate({ request: params });
|
|
87
84
|
const bucketScope = hydration.hydrationState.getBucketSourceScope(this.dataSource);
|
|
88
85
|
const parametersToBucket = (instantiation) => {
|
|
89
|
-
|
|
86
|
+
const desc = bucketDescription(bucketScope, JSONBucketNameSerialize.stringify(instantiation), subscription?.priorityOverride ?? this.stream.priority);
|
|
87
|
+
return resolvedBucket(desc, {
|
|
90
88
|
definition: this.stream.name,
|
|
91
|
-
inclusion_reasons: [reason]
|
|
92
|
-
bucket: buildBucketName(bucketScope, JSONBucketNameSerialize.stringify(instantiation)),
|
|
93
|
-
priority: this.stream.priority
|
|
94
|
-
};
|
|
95
|
-
};
|
|
96
|
-
// Do we need parameter lookups to resolve parameters?
|
|
97
|
-
const staticInstantiation = subscriptionEvaluators.extractFullInstantiation();
|
|
98
|
-
if (staticInstantiation) {
|
|
99
|
-
// We don't! Return static querier.
|
|
100
|
-
result.queriers.push({
|
|
101
|
-
staticBuckets: staticInstantiation.map(parametersToBucket),
|
|
102
|
-
hasDynamicBuckets: false,
|
|
103
|
-
async queryDynamicBucketDescriptions() {
|
|
104
|
-
return [];
|
|
105
|
-
}
|
|
106
|
-
});
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
result.queriers.push({
|
|
110
|
-
staticBuckets: [],
|
|
111
|
-
hasDynamicBuckets: true,
|
|
112
|
-
async queryDynamicBucketDescriptions(source) {
|
|
113
|
-
const evaluators = subscriptionEvaluators.clone();
|
|
114
|
-
const instantiation = await evaluators.instantiate({
|
|
115
|
-
hydrationState: hydration.hydrationState,
|
|
116
|
-
source,
|
|
117
|
-
request: params
|
|
118
|
-
});
|
|
119
|
-
return [...instantiation].map(parametersToBucket);
|
|
120
|
-
}
|
|
89
|
+
inclusion_reasons: [reason]
|
|
121
90
|
});
|
|
91
|
+
};
|
|
92
|
+
if (partialInstantiationResult != null) {
|
|
93
|
+
// This partial instantiation is enough to resolve parameters.
|
|
94
|
+
if (partialInstantiationResult.length != 0) {
|
|
95
|
+
result.queriers.push({
|
|
96
|
+
staticBuckets: partialInstantiationResult.map(parametersToBucket),
|
|
97
|
+
hasDynamicBuckets: false,
|
|
98
|
+
async queryDynamicBucketDescriptions() {
|
|
99
|
+
return [];
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
return;
|
|
122
104
|
}
|
|
105
|
+
result.queriers.push({
|
|
106
|
+
staticBuckets: [],
|
|
107
|
+
hasDynamicBuckets: true,
|
|
108
|
+
async queryDynamicBucketDescriptions(source) {
|
|
109
|
+
const evaluators = subscriptionEvaluators.clone();
|
|
110
|
+
const instantiation = await evaluators.instantiate({
|
|
111
|
+
hydrationState: hydration.hydrationState,
|
|
112
|
+
source,
|
|
113
|
+
request: params
|
|
114
|
+
});
|
|
115
|
+
return [...instantiation].map(parametersToBucket);
|
|
116
|
+
}
|
|
117
|
+
});
|
|
123
118
|
}
|
|
124
119
|
catch (e) {
|
|
125
120
|
result.errors.push({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bucket_source.js","sourceRoot":"","sources":["../../../src/sync_plan/evaluator/bucket_source.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bucket_source.js","sourceRoot":"","sources":["../../../src/sync_plan/evaluator/bucket_source.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import * as plan from '../plan.js';
|
|
2
|
-
import { ScalarExpressionEngine } from '../engine/scalar_expression_engine.js';
|
|
3
1
|
import { SyncConfig } from '../../SyncConfig.js';
|
|
4
2
|
import { CompatibilityContext } from '../../compatibility.js';
|
|
5
3
|
import { SqlEventDescriptor } from '../../index.js';
|
|
4
|
+
import { ScalarExpressionEngine } from '../engine/scalar_expression_engine.js';
|
|
5
|
+
import * as plan from '../plan.js';
|
|
6
6
|
export interface StreamEvaluationContext {
|
|
7
7
|
defaultSchema: string;
|
|
8
8
|
engine: ScalarExpressionEngine;
|
|
@@ -15,5 +15,11 @@ export interface StreamEvaluationContext {
|
|
|
15
15
|
}
|
|
16
16
|
export declare class PrecompiledSyncConfig extends SyncConfig {
|
|
17
17
|
readonly plan: plan.SyncPlan;
|
|
18
|
+
/**
|
|
19
|
+
* The default schema for this sync config.
|
|
20
|
+
*
|
|
21
|
+
* This is independent of the loaded {@link plan} (the same sync plan can be loaded with different default schemas).
|
|
22
|
+
*/
|
|
23
|
+
readonly defaultSchema: string;
|
|
18
24
|
constructor(plan: plan.SyncPlan, compatibility: CompatibilityContext, eventDefinitions: SqlEventDescriptor[], context: StreamEvaluationContext);
|
|
19
25
|
}
|
|
@@ -1,14 +1,21 @@
|
|
|
1
|
+
import { SyncConfig } from '../../SyncConfig.js';
|
|
1
2
|
import { PreparedStreamBucketDataSource } from './bucket_data_source.js';
|
|
2
|
-
import { PreparedParameterIndexLookupCreator } from './parameter_index_lookup_creator.js';
|
|
3
3
|
import { StreamBucketSource } from './bucket_source.js';
|
|
4
|
-
import {
|
|
4
|
+
import { PreparedParameterIndexLookupCreator } from './parameter_index_lookup_creator.js';
|
|
5
5
|
export class PrecompiledSyncConfig extends SyncConfig {
|
|
6
6
|
plan;
|
|
7
|
+
/**
|
|
8
|
+
* The default schema for this sync config.
|
|
9
|
+
*
|
|
10
|
+
* This is independent of the loaded {@link plan} (the same sync plan can be loaded with different default schemas).
|
|
11
|
+
*/
|
|
12
|
+
defaultSchema;
|
|
7
13
|
constructor(plan, compatibility, eventDefinitions, context) {
|
|
8
14
|
super(context.sourceText);
|
|
9
15
|
this.plan = plan;
|
|
10
16
|
this.compatibility = compatibility;
|
|
11
17
|
this.eventDescriptors = eventDefinitions;
|
|
18
|
+
this.defaultSchema = context.defaultSchema;
|
|
12
19
|
const preparedBuckets = new Map();
|
|
13
20
|
const preparedLookups = new Map();
|
|
14
21
|
for (const bucket of plan.buckets) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/sync_plan/evaluator/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/sync_plan/evaluator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAKjD,OAAO,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAe,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,mCAAmC,EAAE,MAAM,qCAAqC,CAAC;AAc1F,MAAM,OAAO,qBAAsB,SAAQ,UAAU;IASxC;IARX;;;;OAIG;IACM,aAAa,CAAS;IAE/B,YACW,IAAmB,EAC5B,aAAmC,EACnC,gBAAsC,EACtC,OAAgC;QAEhC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QALjB,SAAI,GAAJ,IAAI,CAAe;QAM5B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;QAE3C,MAAM,eAAe,GAAG,IAAI,GAAG,EAA+D,CAAC;QAC/F,MAAM,eAAe,GAAG,IAAI,GAAG,EAA+E,CAAC;QAE/G,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,MAAM,QAAQ,GAAG,IAAI,8BAA8B,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACrE,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YACtC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;QAED,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC9C,MAAM,QAAQ,GAAG,IAAI,mCAAmC,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAC7E,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YACzC,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnD,CAAC;QAED,MAAM,WAAW,GAAgB;YAC/B,GAAG,OAAO;YACV,eAAe;YACf,eAAe;SAChB,CAAC;QACF,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;CACF"}
|
|
@@ -43,6 +43,7 @@ import { StreamInput } from './bucket_source.js';
|
|
|
43
43
|
* queriers by indicating that no lookups will be used.
|
|
44
44
|
*/
|
|
45
45
|
export declare class RequestParameterEvaluators {
|
|
46
|
+
readonly stream: plan.StreamOptions;
|
|
46
47
|
/**
|
|
47
48
|
* Pending lookup stages, or their cached outputs.
|
|
48
49
|
*/
|
|
@@ -66,33 +67,28 @@ export declare class RequestParameterEvaluators {
|
|
|
66
67
|
/**
|
|
67
68
|
* Evaluates those lookups and parameter values that be evaluated without looking up parameter indexes.
|
|
68
69
|
*
|
|
69
|
-
*
|
|
70
|
-
*
|
|
70
|
+
* If this partial instantiation happens to be a total one (i.e. there are no remaining dynamic lookups that could
|
|
71
|
+
* affect resolved parameters), returns all instantiations as an array.
|
|
72
|
+
*
|
|
73
|
+
* If dynamic lookups are required to resolve parameters, returns `undefined`.
|
|
71
74
|
*/
|
|
72
|
-
partiallyInstantiate(input: PartialInstantiationInput):
|
|
75
|
+
partiallyInstantiate(input: PartialInstantiationInput): SqliteParameterValue[][] | undefined;
|
|
73
76
|
/**
|
|
74
77
|
* Resolves and caches all lookup stages and parameter values.
|
|
75
78
|
*
|
|
76
79
|
* Because this needs to lookup parameter indexes, it is asynchronous.
|
|
77
80
|
*/
|
|
78
|
-
instantiate(input: InstantiationInput): Promise<
|
|
79
|
-
/**
|
|
80
|
-
* Whether these evaluators are known to not result in any buckets, for instance because parameters are instanted to
|
|
81
|
-
* `NULL` values that aren't equal to anything.
|
|
82
|
-
*
|
|
83
|
-
* This is fairly efficient to compute and can be used to short-circuit further evaluation.
|
|
84
|
-
*/
|
|
85
|
-
isDefinitelyUninstantiable(): boolean;
|
|
86
|
-
extractFullInstantiation(): SqliteParameterValue[][] | undefined;
|
|
81
|
+
instantiate(input: InstantiationInput): Promise<SqliteParameterValue[][]>;
|
|
87
82
|
/**
|
|
88
83
|
* Prepares evaluators for a description of parameter values obtained from a compiled querier in the sync plan.
|
|
89
84
|
*
|
|
85
|
+
* @param stream Used to show the name of the stream for debugging purposes.
|
|
90
86
|
* @param lookupStages The {@link plan.StreamQuerier.lookupStages} of the querier to compile.
|
|
91
87
|
* @param values The {@link plan.StreamQuerier.sourceInstantiation} of the querier to compile.
|
|
92
88
|
* @param input Access to bucket and parameter sources generated for buckets and parameter lookups referenced by the
|
|
93
89
|
* querier.
|
|
94
90
|
*/
|
|
95
|
-
static prepare(lookupStages: plan.ExpandingLookup[][], values: plan.ParameterValue[], input: StreamInput): RequestParameterEvaluators;
|
|
91
|
+
static prepare(stream: plan.StreamOptions, lookupStages: plan.ExpandingLookup[][], values: plan.ParameterValue[], input: StreamInput): RequestParameterEvaluators;
|
|
96
92
|
}
|
|
97
93
|
export type PreparedExpandingLookup = {
|
|
98
94
|
type: 'parameter';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { ScopedParameterLookup, UnscopedParameterLookup } from '../../BucketParameterQuerier.js';
|
|
2
2
|
import { cartesianProduct } from '../../streams/utils.js';
|
|
3
3
|
import { isValidParameterValue } from '../../utils.js';
|
|
4
|
-
import { MapSourceVisitor, visitExpr } from '../expression_visitor.js';
|
|
5
4
|
import { mapExternalDataToInstantiation } from '../engine/scalar_expression_engine.js';
|
|
5
|
+
import { MapSourceVisitor, visitExpr } from '../expression_visitor.js';
|
|
6
6
|
/**
|
|
7
7
|
* Finds bucket parameters for a given request or subscription.
|
|
8
8
|
*
|
|
@@ -42,9 +42,10 @@ import { mapExternalDataToInstantiation } from '../engine/scalar_expression_engi
|
|
|
42
42
|
* queriers by indicating that no lookups will be used.
|
|
43
43
|
*/
|
|
44
44
|
export class RequestParameterEvaluators {
|
|
45
|
+
stream;
|
|
45
46
|
lookupStages;
|
|
46
47
|
parameterValues;
|
|
47
|
-
constructor(
|
|
48
|
+
constructor(stream,
|
|
48
49
|
/**
|
|
49
50
|
* Pending lookup stages, or their cached outputs.
|
|
50
51
|
*/
|
|
@@ -53,6 +54,7 @@ export class RequestParameterEvaluators {
|
|
|
53
54
|
* Pending parameter values, or their cached outputs.
|
|
54
55
|
*/
|
|
55
56
|
parameterValues) {
|
|
57
|
+
this.stream = stream;
|
|
56
58
|
this.lookupStages = lookupStages;
|
|
57
59
|
this.parameterValues = parameterValues;
|
|
58
60
|
}
|
|
@@ -87,20 +89,22 @@ export class RequestParameterEvaluators {
|
|
|
87
89
|
return lookup;
|
|
88
90
|
}
|
|
89
91
|
}
|
|
90
|
-
return new RequestParameterEvaluators(this.lookupStages.map((stage) => stage.map(cloneLookup)), this.parameterValues.map(cloneValue));
|
|
92
|
+
return new RequestParameterEvaluators(this.stream, this.lookupStages.map((stage) => stage.map(cloneLookup)), this.parameterValues.map(cloneValue));
|
|
91
93
|
}
|
|
92
94
|
/**
|
|
93
95
|
* Evaluates those lookups and parameter values that be evaluated without looking up parameter indexes.
|
|
94
96
|
*
|
|
95
|
-
*
|
|
96
|
-
*
|
|
97
|
+
* If this partial instantiation happens to be a total one (i.e. there are no remaining dynamic lookups that could
|
|
98
|
+
* affect resolved parameters), returns all instantiations as an array.
|
|
99
|
+
*
|
|
100
|
+
* If dynamic lookups are required to resolve parameters, returns `undefined`.
|
|
97
101
|
*/
|
|
98
102
|
partiallyInstantiate(input) {
|
|
99
103
|
const helper = new PartialInstantiator(input, this);
|
|
100
104
|
this.lookupStages.forEach((stage, stageIndex) => {
|
|
101
105
|
stage.forEach((_, indexInStage) => helper.expandingLookupSync(stageIndex, indexInStage));
|
|
102
106
|
});
|
|
103
|
-
|
|
107
|
+
return helper.tryResolveInstantiation(this.parameterValues);
|
|
104
108
|
}
|
|
105
109
|
/**
|
|
106
110
|
* Resolves and caches all lookup stages and parameter values.
|
|
@@ -115,57 +119,18 @@ export class RequestParameterEvaluators {
|
|
|
115
119
|
}
|
|
116
120
|
// At this point, all lookups have been resolved and we can synchronously evaluate parameters which might depend on
|
|
117
121
|
// those lookups.
|
|
118
|
-
return helper.
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
* Whether these evaluators are known to not result in any buckets, for instance because parameters are instanted to
|
|
122
|
-
* `NULL` values that aren't equal to anything.
|
|
123
|
-
*
|
|
124
|
-
* This is fairly efficient to compute and can be used to short-circuit further evaluation.
|
|
125
|
-
*/
|
|
126
|
-
isDefinitelyUninstantiable() {
|
|
127
|
-
for (const parameter of this.parameterValues) {
|
|
128
|
-
if (parameter.type != 'cached') {
|
|
129
|
-
return false; // Unknown
|
|
130
|
-
}
|
|
131
|
-
if (parameter.values.length === 0) {
|
|
132
|
-
// Missing parameter.
|
|
133
|
-
return true;
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
return false;
|
|
137
|
-
}
|
|
138
|
-
extractFullInstantiation() {
|
|
139
|
-
// All lookup stages need to be resolved, even if they're not used in a parameter. The reason is that queries like
|
|
140
|
-
// `WHERE 'static_value' IN (SELECT name FROM users WHERE id = auth.user_id())` are implemented as lookup stages,
|
|
141
|
-
// so we can't ignore them.
|
|
142
|
-
for (const stage of this.lookupStages) {
|
|
143
|
-
for (const element of stage) {
|
|
144
|
-
if (element.type !== 'cached') {
|
|
145
|
-
return undefined;
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
// Outer array represents parameters, inner array represents values for a given parameter.
|
|
150
|
-
const parameters = [];
|
|
151
|
-
for (const parameter of this.parameterValues) {
|
|
152
|
-
if (parameter.type !== 'cached') {
|
|
153
|
-
return undefined;
|
|
154
|
-
}
|
|
155
|
-
parameters.push(parameter.values);
|
|
156
|
-
}
|
|
157
|
-
// Transform to array of complete instantiations.
|
|
158
|
-
return [...cartesianProduct(...parameters)];
|
|
122
|
+
return helper.resolveInstantiation(this.parameterValues);
|
|
159
123
|
}
|
|
160
124
|
/**
|
|
161
125
|
* Prepares evaluators for a description of parameter values obtained from a compiled querier in the sync plan.
|
|
162
126
|
*
|
|
127
|
+
* @param stream Used to show the name of the stream for debugging purposes.
|
|
163
128
|
* @param lookupStages The {@link plan.StreamQuerier.lookupStages} of the querier to compile.
|
|
164
129
|
* @param values The {@link plan.StreamQuerier.sourceInstantiation} of the querier to compile.
|
|
165
130
|
* @param input Access to bucket and parameter sources generated for buckets and parameter lookups referenced by the
|
|
166
131
|
* querier.
|
|
167
132
|
*/
|
|
168
|
-
static prepare(lookupStages, values, input) {
|
|
133
|
+
static prepare(stream, lookupStages, values, input) {
|
|
169
134
|
const mappedStages = [];
|
|
170
135
|
const lookupToStage = new Map();
|
|
171
136
|
function mapParameterValue(value) {
|
|
@@ -233,7 +198,7 @@ export class RequestParameterEvaluators {
|
|
|
233
198
|
}
|
|
234
199
|
}
|
|
235
200
|
}
|
|
236
|
-
return new RequestParameterEvaluators(mappedStages, mapParameterValues(values));
|
|
201
|
+
return new RequestParameterEvaluators(stream, mappedStages, mapParameterValues(values));
|
|
237
202
|
}
|
|
238
203
|
}
|
|
239
204
|
class PartialInstantiator {
|
|
@@ -243,6 +208,45 @@ class PartialInstantiator {
|
|
|
243
208
|
this.input = input;
|
|
244
209
|
this.evaluators = evaluators;
|
|
245
210
|
}
|
|
211
|
+
tryResolveInstantiation(params) {
|
|
212
|
+
const stages = this.evaluators.lookupStages;
|
|
213
|
+
let hasUninstantiatedStage = false;
|
|
214
|
+
for (let stageIndex = 0; stageIndex < stages.length; stageIndex++) {
|
|
215
|
+
const stage = stages[stageIndex];
|
|
216
|
+
for (let indexInStage = 0; indexInStage < stage.length; indexInStage++) {
|
|
217
|
+
const resolvedValues = this.expandingLookupSync(stageIndex, indexInStage);
|
|
218
|
+
if (resolvedValues == null) {
|
|
219
|
+
// Requires an asynchronous lookup to instantiate.
|
|
220
|
+
hasUninstantiatedStage = true;
|
|
221
|
+
continue;
|
|
222
|
+
}
|
|
223
|
+
if (resolvedValues.length == 0) {
|
|
224
|
+
// Empty lookup stages make the entire graph uninstantiable, even if they're not used as a parameter. The
|
|
225
|
+
// reason for that is that queries like `WHERE 'static_value' IN (SELECT name FROM users WHERE id = auth.user_id())`
|
|
226
|
+
// are implemented as lookup stages, so we can't ignore them.
|
|
227
|
+
// Note that there is no construct like `OR` in a querier lookup (those always get compiled into separate
|
|
228
|
+
// queries), so any stage being empty guarantees that everything is uninstantiable.
|
|
229
|
+
return [];
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
if (hasUninstantiatedStage) {
|
|
234
|
+
return undefined;
|
|
235
|
+
}
|
|
236
|
+
// If we got to this point, all stages have been resolved. So we can resolve parameters without further async work.
|
|
237
|
+
return [...this.resolveInputs(params)];
|
|
238
|
+
}
|
|
239
|
+
*resolveInputs(params) {
|
|
240
|
+
const parameterValues = params.map((_, index) => {
|
|
241
|
+
const cached = this.parameterSync(params, index);
|
|
242
|
+
if (cached == null) {
|
|
243
|
+
// This method is only called for inputs from an earlier stage, which should have been resolved at this point.
|
|
244
|
+
throw new Error('Should have been able to resolve parameter from earlier stage synchronously.');
|
|
245
|
+
}
|
|
246
|
+
return cached;
|
|
247
|
+
});
|
|
248
|
+
yield* cartesianProduct(...parameterValues);
|
|
249
|
+
}
|
|
246
250
|
/**
|
|
247
251
|
* If possible, evaluates an element in an array of parameter values and replaces the parameter with a marker
|
|
248
252
|
* indicating it as cached.
|
|
@@ -309,22 +313,19 @@ class PartialInstantiator {
|
|
|
309
313
|
}
|
|
310
314
|
}
|
|
311
315
|
class FullInstantiator extends PartialInstantiator {
|
|
312
|
-
|
|
313
|
-
const
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
}
|
|
319
|
-
return cached;
|
|
320
|
-
});
|
|
321
|
-
yield* cartesianProduct(...parameterValues);
|
|
316
|
+
resolveInstantiation(params) {
|
|
317
|
+
const resolved = this.tryResolveInstantiation(params);
|
|
318
|
+
if (resolved == null) {
|
|
319
|
+
throw new Error('internal error: Should have been able to resolve instantiation after instantiating stages.');
|
|
320
|
+
}
|
|
321
|
+
return resolved;
|
|
322
322
|
}
|
|
323
323
|
async expandingLookup(stage, index) {
|
|
324
324
|
const lookup = this.evaluators.lookupStages[stage][index];
|
|
325
325
|
if (lookup.type == 'parameter') {
|
|
326
326
|
const scope = this.input.hydrationState.getParameterIndexLookupScope(lookup.lookup);
|
|
327
|
-
const
|
|
327
|
+
const resolvedLookup = lookup.lookup;
|
|
328
|
+
const outputs = await this.input.source.getParameterSets([...this.resolveInputs(lookup.instantiation)].map((instantiation) => ScopedParameterLookup.normalized(scope, UnscopedParameterLookup.normalized(instantiation))), `Stream ${this.evaluators.stream.name} evaluating parameter on ${resolvedLookup.sourceTable.name}`);
|
|
328
329
|
// Stream parameters generate an output row like {0: <expr>, 1: <expr>, ...}.
|
|
329
330
|
const values = outputs.map((row) => {
|
|
330
331
|
const length = Object.entries(row).length;
|