@powersync/service-sync-rules 0.31.0 → 0.32.0

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 (87) hide show
  1. package/dist/SqlSyncRules.d.ts +0 -7
  2. package/dist/SqlSyncRules.js +0 -1
  3. package/dist/SqlSyncRules.js.map +1 -1
  4. package/dist/SyncConfig.d.ts +5 -2
  5. package/dist/SyncConfig.js +6 -9
  6. package/dist/SyncConfig.js.map +1 -1
  7. package/dist/compatibility.d.ts +2 -1
  8. package/dist/compatibility.js +1 -0
  9. package/dist/compatibility.js.map +1 -1
  10. package/dist/compiler/bucket_resolver.d.ts +3 -3
  11. package/dist/compiler/bucket_resolver.js.map +1 -1
  12. package/dist/compiler/compiler.d.ts +4 -1
  13. package/dist/compiler/compiler.js +15 -2
  14. package/dist/compiler/compiler.js.map +1 -1
  15. package/dist/compiler/detect_dangerous_parameters.d.ts +10 -0
  16. package/dist/compiler/detect_dangerous_parameters.js +84 -0
  17. package/dist/compiler/detect_dangerous_parameters.js.map +1 -0
  18. package/dist/compiler/expression.d.ts +15 -3
  19. package/dist/compiler/expression.js +3 -2
  20. package/dist/compiler/expression.js.map +1 -1
  21. package/dist/compiler/filter.js +4 -2
  22. package/dist/compiler/filter.js.map +1 -1
  23. package/dist/compiler/filter_simplifier.js +5 -2
  24. package/dist/compiler/filter_simplifier.js.map +1 -1
  25. package/dist/compiler/ir_to_sync_plan.d.ts +8 -0
  26. package/dist/compiler/ir_to_sync_plan.js +64 -12
  27. package/dist/compiler/ir_to_sync_plan.js.map +1 -1
  28. package/dist/compiler/parser.js +44 -12
  29. package/dist/compiler/parser.js.map +1 -1
  30. package/dist/compiler/querier_graph.d.ts +2 -1
  31. package/dist/compiler/querier_graph.js +88 -26
  32. package/dist/compiler/querier_graph.js.map +1 -1
  33. package/dist/compiler/rows.d.ts +32 -3
  34. package/dist/compiler/rows.js +59 -2
  35. package/dist/compiler/rows.js.map +1 -1
  36. package/dist/compiler/scope.d.ts +4 -1
  37. package/dist/compiler/scope.js +13 -2
  38. package/dist/compiler/scope.js.map +1 -1
  39. package/dist/compiler/sqlite.d.ts +3 -11
  40. package/dist/compiler/sqlite.js +115 -79
  41. package/dist/compiler/sqlite.js.map +1 -1
  42. package/dist/compiler/table.d.ts +24 -7
  43. package/dist/compiler/table.js +58 -2
  44. package/dist/compiler/table.js.map +1 -1
  45. package/dist/from_yaml.d.ts +0 -4
  46. package/dist/from_yaml.js +18 -10
  47. package/dist/from_yaml.js.map +1 -1
  48. package/dist/index.d.ts +1 -1
  49. package/dist/index.js +1 -1
  50. package/dist/index.js.map +1 -1
  51. package/dist/json_schema.js +1 -4
  52. package/dist/json_schema.js.map +1 -1
  53. package/dist/schema-generators/DartSchemaGenerator.d.ts +0 -9
  54. package/dist/schema-generators/DartSchemaGenerator.js +0 -55
  55. package/dist/schema-generators/DartSchemaGenerator.js.map +1 -1
  56. package/dist/schema-generators/DotNetSchemaGenerator.js +21 -28
  57. package/dist/schema-generators/DotNetSchemaGenerator.js.map +1 -1
  58. package/dist/schema-generators/generators.d.ts +1 -2
  59. package/dist/schema-generators/generators.js +1 -2
  60. package/dist/schema-generators/generators.js.map +1 -1
  61. package/dist/sync_plan/engine/javascript.js +13 -2
  62. package/dist/sync_plan/engine/javascript.js.map +1 -1
  63. package/dist/sync_plan/engine/scalar_expression_engine.d.ts +4 -2
  64. package/dist/sync_plan/engine/scalar_expression_engine.js +18 -0
  65. package/dist/sync_plan/engine/scalar_expression_engine.js.map +1 -1
  66. package/dist/sync_plan/engine/sqlite.js +2 -1
  67. package/dist/sync_plan/engine/sqlite.js.map +1 -1
  68. package/dist/sync_plan/evaluator/bucket_data_source.js +8 -6
  69. package/dist/sync_plan/evaluator/bucket_data_source.js.map +1 -1
  70. package/dist/sync_plan/evaluator/bucket_source.js +1 -1
  71. package/dist/sync_plan/evaluator/bucket_source.js.map +1 -1
  72. package/dist/sync_plan/evaluator/index.d.ts +3 -1
  73. package/dist/sync_plan/evaluator/index.js +3 -1
  74. package/dist/sync_plan/evaluator/index.js.map +1 -1
  75. package/dist/sync_plan/evaluator/parameter_evaluator.js +22 -2
  76. package/dist/sync_plan/evaluator/parameter_evaluator.js.map +1 -1
  77. package/dist/sync_plan/evaluator/parameter_index_lookup_creator.js +7 -6
  78. package/dist/sync_plan/evaluator/parameter_index_lookup_creator.js.map +1 -1
  79. package/dist/sync_plan/evaluator/table_processor_to_sql.d.ts +20 -0
  80. package/dist/sync_plan/evaluator/table_processor_to_sql.js +28 -0
  81. package/dist/sync_plan/evaluator/table_processor_to_sql.js.map +1 -0
  82. package/dist/sync_plan/plan.d.ts +51 -9
  83. package/dist/sync_plan/serialize.d.ts +24 -10
  84. package/dist/sync_plan/serialize.js +75 -15
  85. package/dist/sync_plan/serialize.js.map +1 -1
  86. package/package.json +2 -1
  87. package/schema/sync_rules.json +1 -4
@@ -1 +1 @@
1
- {"version":3,"file":"querier_graph.js","sourceRoot":"","sources":["../../src/compiler/querier_graph.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAE3B,0BAA0B,EAC1B,0BAA0B,EAC1B,eAAe,EAEf,qBAAqB,EACrB,aAAa,EACb,cAAc,EACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAiB,YAAY,EAAE,iBAAiB,EAAE,aAAa,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACxH,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAgD,MAAM,YAAY,CAAC;AAEnG,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAI/D;;GAEG;AACH,MAAM,OAAO,mBAAmB;IAKnB;IACA;IALM,SAAS,GAAqB,EAAE,CAAC;IACzC,OAAO,CAAgB;IAEhC,YACW,QAA6B,EAC7B,OAAsB;QADtB,aAAQ,GAAR,QAAQ,CAAqB;QAC7B,YAAO,GAAP,OAAO,CAAe;QAE/B,IAAI,CAAC,OAAO,GAAG,IAAI,aAAa,EAAE,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,KAAwB,EAAE,MAA4B;QAC5D,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACxC,MAAM,QAAQ,GAAG,IAAI,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,mBAAmB,EAAE,CAAC;YAC5F,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED;;;;;;;;;;;;;OAaG;IACK,YAAY;QAClB,MAAM,SAAS,GAAG,IAAI,OAAO,CAAiB;YAC5C,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC;YAChD,IAAI,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,sBAAsB,CAAC,MAAM,CAAC;SAC9D,CAAC,CAAC;QAEH,KAAK,MAAM,cAAc,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAC5C,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,SAAS,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;YACpE,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,KAAK,MAAM,YAAY,IAAI,cAAc,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;oBACpE,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;gBACvD,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC;IACxB,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,kBAAkB;IAcH;IACA;IACA;IAfnB,mDAAmD;IAClC,cAAc,GAAe,EAAE,CAAC;IAChC,cAAc,GAAG,IAAI,GAAG,EAA2C,CAAC;IAErF;;;;OAIG;IACc,YAAY,GAAsB,EAAE,CAAC;IAC9C,YAAY,GAAiB,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAErD,YACmB,OAA4B,EAC5B,KAAwB,EACxB,MAA4B,EAC7C,SAAc;QAHG,YAAO,GAAP,OAAO,CAAqB;QAC5B,UAAK,GAAL,KAAK,CAAmB;QACxB,WAAM,GAAN,MAAM,CAAsB;QAG7C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC;IAED,mBAAmB;QACjB,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC5D,MAAM,CAAC,UAAU,EAAE,eAAe,CAAC,GAAG,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAChE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,qBAAqB,CAClE,IAAI,YAAY,CAAC;YACf,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa;YACjC,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW;YACvC,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,WAAW,EAAE,UAAU;SACxB,CAAC,CACH,CAAC;QACF,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAE9B,oHAAoH;QACpH,qDAAqD;QACrD,MAAM,iBAAiB,GAAwB,EAAE,CAAC;QAClD,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YAC5C,IAAI,SAAS,YAAY,0BAA0B,EAAE,CAAC;gBACpD,IAAI,SAAS,CAAC,SAAS,IAAI,IAAI,EAAE,CAAC;oBAChC,IAAI,CAAC,MAAM,CAAC,MAAM,CAChB,uFAAuF,EACvF,SAAS,CAAC,UAAU,CAAC,QAAQ,CAC9B,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,iBAAiB,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC;gBAC3D,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,mDAAmD,EAAE,SAAS,CAAC,QAAS,CAAC,CAAC;YAC/F,CAAC;QACH,CAAC;QAED,OAAO,IAAI,cAAc,CACvB,IAAI,CAAC,OAAO,CAAC,OAAO,EACpB,iBAAiB,EACjB,IAAI,CAAC,uBAAuB,EAAE,EAC9B,IAAI,aAAa,CAAC,SAAS,EAAE,eAAe,CAAC,EAC7C,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CACpD,CAAC;IACJ,CAAC;IAEO,SAAS;QACf,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC;QACrC,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QAC1D,OAAO,UAAU,CAAC;IACpB,CAAC;IAEO,QAAQ,CAAC,KAAmB;QAClC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC5B,CAAC;IAEO,kBAAkB,CAAC,SAAkC;QAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAClD,MAAM,CAAC,aAAa,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,iBAAiB,EAAE,CAAC;QAEtE,OAAO,IAAI,sBAAsB,CAAC;YAChC,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,SAAS;YAClB,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,aAAa,EAAE,aAAa;YAC5B,MAAM,EAAE,eAAe;SACxB,CAAC,CAAC;IACL,CAAC;IAEO,wBAAwB,CAAC,SAAsC;QACrE,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAClD,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YAChC,8GAA8G;YAC9G,kCAAkC;YAClC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,gDAAgD,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAChG,CAAC;QAED,OAAO,IAAI,sBAAsB,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpG,CAAC;IAEO,sBAAsB,CAAC,SAA0B;QACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACpD,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;YACrB,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,mHAAmH;QACnH,sDAAsD;QACtD,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAEpC,MAAM,QAAQ,GACZ,SAAS,YAAY,uBAAuB;YAC1C,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC;YACpC,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;QAE/C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC7C,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC1B,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,MAAuB;QAC9C,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;QAClF,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/B,MAAM,KAAK,GAAG,IAAI,iBAAiB,EAAE,CAAC;QAEtC,KAAK,MAAM,UAAU,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;YAClD,IAAI,UAAU,YAAY,0BAA0B,EAAE,CAAC;gBACrD,IAAI,UAAU,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;oBACpC,0GAA0G;oBAC1G,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC;oBAClD,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC;gBAC3C,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,wBAAwB;gBACxB,MAAM,WAAW,GAAG,CAAC,OAAmC,EAAE,QAAoC,EAAE,EAAE;oBAChG,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC;oBACzC,MAAM,GAAG,GAAG,IAAI,YAAY,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;oBACzD,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;oBAE1D,IAAI,QAAQ,CAAC,SAAS,IAAI,IAAI,EAAE,CAAC;wBAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;wBAC/D,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;wBAC5D,MAAM,KAAK,GAAG,IAAI,0BAA0B,CAAC,KAAK,CAAC,CAAC;wBACpD,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBAC9B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACrB,CAAC;yBAAM,CAAC;wBACN,4FAA4F;wBAC5F,MAAM,CAAC,IAAI,CAAC,IAAI,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC;oBACnD,CAAC;gBACH,CAAC,CAAC;gBAEF,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;oBACzC,WAAW,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;gBACjD,CAAC;qBAAM,IAAI,UAAU,CAAC,KAAK,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;oBACjD,WAAW,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;gBACjD,CAAC;qBAAM,CAAC;oBACN,0BAA0B;oBAC1B,SAAS;gBACX,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;QACvC,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC1D,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;;;;OASG;IACK,sBAAsB;QAC5B,KAAK,MAAM,UAAU,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;YAClD,IAAI,UAAU,YAAY,YAAY,EAAE,CAAC;gBACvC,MAAM,OAAO,GAAG,CAAC,UAAsC,EAAE,KAAiC,EAAE,EAAE;oBAC5F,IAAI,KAAK,CAAC,SAAS,IAAI,IAAI,EAAE,CAAC;wBAC5B,gGAAgG;wBAChG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;oBAC/C,CAAC;gBACH,CAAC,CAAC;gBAEF,IAAI,UAAU,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;oBACxC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;gBAC7C,CAAC;qBAAM,IAAI,UAAU,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC;oBAChD,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;gBAC7C,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAEO,uBAAuB,CAAC,OAAiB;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACnD,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACvC,CAAC;IAEO,uBAAuB;QAC7B,MAAM,OAAO,GAAwB,EAAE,CAAC;QACxC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACxD,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,sBAAsB,CAAC,KAAmB,EAAE,MAA2B;QAC7E,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;YACzB,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACpD,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAsB,EAAE,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAErB,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBACnC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;gBACzB,IAAI,gBAAiC,CAAC;gBAEtC,IAAI,IAAI,CAAC,IAAI,IAAI,OAAO,EAAE,CAAC;oBACzB,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,uBAAuB,CACxE,IAAI,WAAW,CAAC;wBACd,eAAe,EAAE,IAAI,CAAC,OAAO;wBAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;wBACrB,WAAW,EAAE,IAAI,CAAC,aAAa;wBAC/B,MAAM,EAAE,MAAM,CAAC,WAAW;qBAC3B,CAAC,CACH,CAAC;oBACF,gBAAgB,GAAG,IAAI,eAAe,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;gBACrE,CAAC;qBAAM,CAAC;oBACN,gBAAgB,GAAG,IAAI,2BAA2B,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;gBACvG,CAAC;gBAED,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBAC/B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;oBACtC,KAAK,CAAC,MAAM,GAAG,gBAAgB,CAAC;gBAClC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAED,MAAM,iBAAiB;IACZ,OAAO,GAAoB,EAAE,CAAC;IAC9B,SAAS,GAAG,IAAI,OAAO,CAAiC,uBAAuB,CAAC,CAAC;IAE1F,iBAAiB;QACf,MAAM,OAAO,GAAqC,EAAE,CAAC;QACrD,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YACnD,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBACvB,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACjC,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,0BAA0B,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;QAED,kHAAkH;QAClH,kHAAkH;QAClH,gEAAgE;QAChE,8EAA8E;QAC9E,OAAO,CAAC,IAAI,CACV,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACP,YAAY,CAAC,QAAQ,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAC9G,CAAC;QAEF,MAAM,IAAI,GAAmB,EAAE,CAAC;QAChC,MAAM,MAAM,GAAqB,EAAE,CAAC;QACpC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;YACnC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;QACD,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACxB,CAAC;CACF;AAED,MAAM,sBAAsB;IAIL;IAHZ,WAAW,GAAoB,EAAE,CAAC;IAClC,UAAU,GAAiC,EAAE,CAAC;IAEvD,YAAqB,IAA2D;QAA3D,SAAI,GAAJ,IAAI,CAAuD;IAAG,CAAC;IAEpF,SAAS,CAAC,KAAoB;QAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACrC,IAAI,QAAQ,CAAC,2BAA2B,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChD,OAAO,CAAC,CAAC;YACX,CAAC;QACH,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;QACtC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAoBD,MAAM,aAAa;IACjB,OAAO,CAAS;IAEhB;QACE,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;IACnB,CAAC;IAED,GAAG,CAAC,MAAc;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC7B,OAAO,GAAG,MAAM,IAAI,KAAK,EAAE,CAAC;IAC9B,CAAC;CACF"}
1
+ {"version":3,"file":"querier_graph.js","sourceRoot":"","sources":["../../src/compiler/querier_graph.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAE3B,0BAA0B,EAC1B,0BAA0B,EAC1B,eAAe,EAEf,qBAAqB,EACrB,aAAa,EACb,cAAc,EACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAiB,YAAY,EAAE,iBAAiB,EAAE,aAAa,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACxH,OAAO,EAGL,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,0CAA0C,EAC1C,uBAAuB,EACxB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAmB,MAAM,YAAY,CAAC;AAE5F,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAG/D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C;;GAEG;AACH,MAAM,OAAO,mBAAmB;IAKnB;IACA;IALM,SAAS,GAAqB,EAAE,CAAC;IACzC,OAAO,CAAgB;IAEhC,YACW,QAA6B,EAC7B,OAAsB;QADtB,aAAQ,GAAR,QAAQ,CAAqB;QAC7B,YAAO,GAAP,OAAO,CAAe;QAE/B,IAAI,CAAC,OAAO,GAAG,IAAI,aAAa,EAAE,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,KAAwB,EAAE,MAA4B;QAC5D,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACxC,MAAM,QAAQ,GAAG,IAAI,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,mBAAmB,EAAE,CAAC;YAC5F,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;QAChD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;;;;;;;;;OAaG;IACK,YAAY;QAClB,MAAM,SAAS,GAAG,IAAI,OAAO,CAAiB;YAC5C,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC;YAChD,IAAI,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,sBAAsB,CAAC,MAAM,CAAC;SAC9D,CAAC,CAAC;QAEH,KAAK,MAAM,cAAc,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAC5C,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,SAAS,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;YACpE,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,KAAK,MAAM,YAAY,IAAI,cAAc,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;oBACpE,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;gBACvD,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC;IACxB,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,kBAAkB;IAcH;IACA;IACA;IAfnB,mDAAmD;IAClC,cAAc,GAAe,EAAE,CAAC;IAChC,cAAc,GAAG,IAAI,GAAG,EAA2C,CAAC;IAErF;;;;OAIG;IACc,YAAY,GAAsB,EAAE,CAAC;IAC9C,YAAY,GAAiB,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAErD,YACmB,OAA4B,EAC5B,KAAwB,EACxB,MAA4B,EAC7C,SAAc;QAHG,YAAO,GAAP,OAAO,CAAqB;QAC5B,UAAK,GAAL,KAAK,CAAmB;QACxB,WAAM,GAAN,MAAM,CAAsB;QAG7C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC;IAED,mBAAmB;QACjB,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC5D,MAAM,CAAC,UAAU,EAAE,eAAe,CAAC,GAAG,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAEhE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,qBAAqB,CAClE,IAAI,YAAY,CAAC;YACf,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa;YACjC,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW;YACvC,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,WAAW,EAAE,UAAU;YACvB,cAAc,EAAE,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;SACnD,CAAC,CACH,CAAC;QACF,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAE9B,oHAAoH;QACpH,qDAAqD;QACrD,MAAM,iBAAiB,GAAwB,EAAE,CAAC;QAClD,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YAC5C,IAAI,SAAS,YAAY,0BAA0B,EAAE,CAAC;gBACpD,IAAI,SAAS,CAAC,SAAS,IAAI,IAAI,EAAE,CAAC;oBAChC,IAAI,CAAC,MAAM,CAAC,MAAM,CAChB,uFAAuF,EACvF,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CACvC,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,iBAAiB,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC;gBAC3D,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,mDAAmD,EAAE,SAAS,CAAC,QAAS,CAAC,CAAC;YAC/F,CAAC;QACH,CAAC;QAED,OAAO,IAAI,cAAc,CACvB,IAAI,CAAC,OAAO,CAAC,OAAO,EACpB,iBAAiB,EACjB,IAAI,CAAC,uBAAuB,EAAE,EAC9B,IAAI,aAAa,CAAC,SAAS,EAAE,eAAe,CAAC,EAC7C,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CACpD,CAAC;IACJ,CAAC;IAEO,SAAS;QACf,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC;QACrC,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QAC1D,OAAO,UAAU,CAAC;IACpB,CAAC;IAEO,QAAQ,CAAC,KAAmB;QAClC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC5B,CAAC;IAEO,kBAAkB,CAAC,SAAkC;QAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAElD,OAAO,IAAI,sBAAsB,CAAC;YAChC,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,SAAS;YACjB,SAAS,EAAE,QAAQ;SACpB,CAAC,CAAC;IACL,CAAC;IAEO,wBAAwB,CAAC,SAA+B;QAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAClD,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YAChC,2GAA2G;YAC3G,+CAA+C;YAC/C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,gDAAgD,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAChG,CAAC;QAED,OAAO,IAAI,sBAAsB,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5G,CAAC;IAEO,sBAAsB,CAAC,SAA0B;QACvD,IAAI,SAAS,YAAY,oBAAoB,IAAI,SAAS,CAAC,cAAc,IAAI,IAAI,EAAE,CAAC;YAClF,iGAAiG;YACjG,OAAO,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QAC/D,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACpD,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;YACrB,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,mHAAmH;QACnH,sDAAsD;QACtD,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAEpC,MAAM,QAAQ,GACZ,SAAS,YAAY,uBAAuB;YAC1C,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC;YACpC,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;QAE/C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC7C,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC1B,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,MAAuB;QAC9C,IAAI,MAAM,CAAC,gBAAgB,KAAK,MAAM,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CACb,uGAAuG,CACxG,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;QAClF,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/B,MAAM,KAAK,GAAG,IAAI,iBAAiB,EAAE,CAAC;QAEtC,KAAK,MAAM,UAAU,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;YAClD,IAAI,UAAU,YAAY,0BAA0B,EAAE,CAAC;gBACrD,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,EAAE,gBAAgB,CAAC;gBAEzD,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;oBACzB,0GAA0G;oBAC1G,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC;oBAClD,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC;oBAEzC,4GAA4G;oBAC5G,4DAA4D;oBAC5D,KAAK,MAAM,aAAa,IAAI,UAAU,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;wBAChE,IAAI,aAAa,YAAY,WAAW,IAAI,aAAa,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;4BAC/E,0GAA0G;4BAC1G,yCAAyC;4BACzC,MAAM,EAAE,GAAG,aAAa,CAAC,SAAS,CAAC;4BACnC,IAAI,CAAC,CAAC,EAAE,YAAY,oBAAoB,CAAC,IAAI,EAAE,CAAC,cAAc,KAAK,MAAM,EAAE,CAAC;gCAC1E,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;4BACzE,CAAC;4BAED,KAAK,CAAC,2BAA2B,CAAC,EAAE,CAAC,CAAC;wBACxC,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,wBAAwB;gBACxB,MAAM,WAAW,GAAG,CAAC,GAAiB,EAAE,QAAoC,EAAE,EAAE;oBAC9E,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC;oBACzC,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;oBAE1D,IAAI,QAAQ,CAAC,SAAS,IAAI,IAAI,EAAE,CAAC;wBAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;wBAC/D,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;wBAC5D,MAAM,KAAK,GAAG,IAAI,0BAA0B,CAAC,KAAK,CAAC,CAAC;wBACpD,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBAC9B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACrB,CAAC;yBAAM,CAAC;wBACN,4FAA4F;wBAC5F,MAAM,CAAC,IAAI,CAAC,IAAI,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC;oBACnD,CAAC;gBACH,CAAC,CAAC;gBAEF,MAAM,iBAAiB,GAAG,CAAC,OAAmC,EAAE,QAAoC,EAAE,EAAE;oBACtG,MAAM,GAAG,GAAG,IAAI,kBAAkB,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;oBAC/D,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;gBAC7B,CAAC,CAAC;gBAEF,MAAM,sBAAsB,GAAG,CAC7B,WAAiC,EACjC,iBAAgC,EAChC,QAAoC,EACpC,EAAE;oBACF,MAAM,gBAAgB,GAAG,KAAK,CAAC,2BAA2B,CAAC,WAAW,CAAC,CAAC;oBACxE,MAAM,GAAG,GAAG,IAAI,uBAAuB,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,CAAC;oBAC7E,OAAO,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;gBACpC,CAAC,CAAC;gBAEF,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;gBAC7C,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC;gBAE/C,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;oBAC1B,iBAAiB,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;gBACvD,CAAC;qBAAM,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;oBAClC,iBAAiB,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;gBACvD,CAAC;qBAAM,IAAI,UAAU,YAAY,oBAAoB,IAAI,UAAU,CAAC,cAAc,IAAI,MAAM,EAAE,CAAC;oBAC7F,sBAAsB,CAAC,UAAU,EAAE,IAAI,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;gBAC3F,CAAC;qBAAM,IAAI,WAAW,YAAY,oBAAoB,IAAI,WAAW,CAAC,cAAc,IAAI,MAAM,EAAE,CAAC;oBAC/F,sBAAsB,CAAC,WAAW,EAAE,IAAI,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;gBAC5F,CAAC;qBAAM,CAAC;oBACN,0BAA0B;oBAC1B,SAAS;gBACX,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;QACvC,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC1D,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;;;;OASG;IACK,sBAAsB;QAC5B,KAAK,MAAM,UAAU,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;YAClD,IAAI,UAAU,YAAY,YAAY,EAAE,CAAC;gBACvC,MAAM,OAAO,GAAG,CAAC,UAAsC,EAAE,KAAiC,EAAE,EAAE;oBAC5F,IAAI,KAAK,CAAC,SAAS,IAAI,IAAI,EAAE,CAAC;wBAC5B,gGAAgG;wBAChG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;oBAC/C,CAAC;gBACH,CAAC,CAAC;gBAEF,IAAI,UAAU,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;oBACxC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;gBAC7C,CAAC;qBAAM,IAAI,UAAU,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC;oBAChD,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;gBAC7C,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAEO,uBAAuB,CAAC,OAAiB;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACnD,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACvC,CAAC;IAEO,uBAAuB;QAC7B,MAAM,OAAO,GAAwB,EAAE,CAAC;QACxC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACxD,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,sBAAsB,CAAC,KAAmB,EAAE,MAA2B;QAC7E,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;YACzB,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACpD,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAsB,EAAE,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAErB,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBACnC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;gBACzB,IAAI,gBAAiC,CAAC;gBAEtC,IAAI,IAAI,CAAC,IAAI,IAAI,OAAO,EAAE,CAAC;oBACzB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;oBACjC,MAAM,CAAC,aAAa,EAAE,eAAe,CAAC,GAAG,SAAS,CAAC,iBAAiB,EAAE,CAAC;oBACvE,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,uBAAuB,CACxE,IAAI,WAAW,CAAC;wBACd,eAAe,EAAE,IAAI,CAAC,MAAM;wBAC5B,OAAO,EAAE,SAAS,CAAC,OAAO;wBAC1B,WAAW,EAAE,aAAa;wBAC1B,MAAM,EAAE,MAAM,CAAC,WAAW;wBAC1B,cAAc,EAAE,CAAC,GAAG,SAAS,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;qBACvD,CAAC,CACH,CAAC;oBACF,gBAAgB,GAAG,IAAI,eAAe,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;gBACzE,CAAC;qBAAM,CAAC;oBACN,gBAAgB,GAAG,IAAI,2BAA2B,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;gBACpG,CAAC;gBAED,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBAC/B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;oBACtC,KAAK,CAAC,MAAM,GAAG,gBAAgB,CAAC;gBAClC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAED,MAAM,iBAAiB;IACZ,OAAO,GAAoB,EAAE,CAAC;IAC9B,SAAS,GAAG,IAAI,OAAO,CAAiC,uBAAuB,CAAC,CAAC;IACjF,cAAc,GAAG,IAAI,GAAG,EAA+D,CAAC;IAEjG,2BAA2B,CAAC,MAA4B;QACtD,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACpC,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,MAAM,eAAe,GAAG,IAAI,0CAA0C,CACpE,MAAM,EACN,MAAM,CAAC,uBAAuB,EAC9B,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC,CACnD,CAAC;YACF,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;YACjD,OAAO,eAAe,CAAC;QACzB,CAAC;IACH,CAAC;IAED,iBAAiB;QACf,MAAM,OAAO,GAAqC,EAAE,CAAC;QACrD,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YACnD,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBACvB,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACjC,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,0BAA0B,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;QAED,kHAAkH;QAClH,kHAAkH;QAClH,gEAAgE;QAChE,8EAA8E;QAC9E,OAAO,CAAC,IAAI,CACV,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACP,YAAY,CAAC,QAAQ,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAC9G,CAAC;QAEF,MAAM,IAAI,GAAmB,EAAE,CAAC;QAChC,MAAM,MAAM,GAAqB,EAAE,CAAC;QACpC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;YACnC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;QACD,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACxB,CAAC;CACF;AAED,MAAM,sBAAsB;IAIL;IAHZ,WAAW,GAAoB,EAAE,CAAC;IAClC,UAAU,GAAiC,EAAE,CAAC;IAEvD,YAAqB,IAA2D;QAA3D,SAAI,GAAJ,IAAI,CAAuD;IAAG,CAAC;IAEpF,SAAS,CAAC,KAAoB;QAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACrC,IAAI,QAAQ,CAAC,2BAA2B,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChD,OAAO,CAAC,CAAC;YACX,CAAC;QACH,CAAC;QAED,IAAI,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACxC,IAAI,KAAK,CAAC,SAAS,YAAY,oBAAoB,IAAI,KAAK,CAAC,SAAS,CAAC,cAAc,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC1G,4GAA4G;gBAC5G,cAAc;gBACb,IAAI,CAAC,IAA2B,CAAC,SAAS,CAAC,2BAA2B,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAC3F,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;YACjE,CAAC;QACH,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;QACtC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAkBD,MAAM,aAAa;IACjB,OAAO,CAAS;IAEhB;QACE,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;IACnB,CAAC;IAED,GAAG,CAAC,MAAc;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC7B,OAAO,GAAG,MAAM,IAAI,KAAK,EAAE,CAAC;IAC9B,CAAC;CACF"}
@@ -1,20 +1,34 @@
1
1
  import { StableHasher } from './equality.js';
2
2
  import { EqualsIgnoringResultSet } from './compatibility.js';
3
3
  import { RowExpression } from './filter.js';
4
- import { PhysicalSourceResultSet } from './table.js';
4
+ import { PhysicalSourceResultSet, TableValuedResultSet } from './table.js';
5
5
  import { ImplicitSchemaTablePattern } from '../TablePattern.js';
6
6
  /**
7
7
  * A key describing how buckets or parameter lookups are parameterized.
8
8
  *
9
9
  * When constructing buckets, a value needs to be passed for each such key.
10
- * WHen invoking parameter lookups, values need to be passed as inputs.
10
+ * When invoking parameter lookups, values need to be passed as inputs.
11
11
  */
12
- export declare class PartitionKey implements EqualsIgnoringResultSet {
12
+ export declare abstract class PartitionKey implements EqualsIgnoringResultSet {
13
+ abstract equalsAssumingSameResultSet(other: EqualsIgnoringResultSet): boolean;
14
+ abstract assumingSameResultSetEqualityHashCode(hasher: StableHasher): void;
15
+ }
16
+ export declare class ScalarPartitionKey extends PartitionKey {
13
17
  readonly expression: RowExpression;
14
18
  constructor(expression: RowExpression);
15
19
  equalsAssumingSameResultSet(other: EqualsIgnoringResultSet): boolean;
16
20
  assumingSameResultSetEqualityHashCode(hasher: StableHasher): void;
17
21
  }
22
+ /**
23
+ * A partition key derived from the output of a table-valued function added to a {@link SourceRowProcessor}.
24
+ */
25
+ export declare class TableValuedPartitionKey extends PartitionKey {
26
+ readonly fromFunction: SourceRowProcessorAddedTableValuedFunction;
27
+ readonly output: RowExpression;
28
+ constructor(fromFunction: SourceRowProcessorAddedTableValuedFunction, output: RowExpression);
29
+ equalsAssumingSameResultSet(other: EqualsIgnoringResultSet): boolean;
30
+ assumingSameResultSetEqualityHashCode(hasher: StableHasher): void;
31
+ }
18
32
  /**
19
33
  * Something that processes source rows during replication.
20
34
  *
@@ -26,6 +40,7 @@ interface SourceProcessorOptions {
26
40
  readonly syntacticSource: PhysicalSourceResultSet;
27
41
  readonly filters: RowExpression[];
28
42
  readonly partitionBy: PartitionKey[];
43
+ readonly addedFunctions: SourceRowProcessorAddedTableValuedFunction[];
29
44
  }
30
45
  declare abstract class BaseSourceRowProcessor {
31
46
  /**
@@ -39,6 +54,7 @@ declare abstract class BaseSourceRowProcessor {
39
54
  */
40
55
  readonly filters: RowExpression[];
41
56
  readonly partitionBy: PartitionKey[];
57
+ readonly addedFunctions: SourceRowProcessorAddedTableValuedFunction[];
42
58
  constructor(options: SourceProcessorOptions);
43
59
  /**
44
60
  * A hash code for the equivalence relation formed by {@link behavesIdenticalTo}.
@@ -96,6 +112,19 @@ export declare class PointLookup extends BaseSourceRowProcessor {
96
112
  buildBehaviorHashCode(hasher: StableHasher): void;
97
113
  behavesIdenticalTo(other: PointLookup): boolean;
98
114
  }
115
+ /**
116
+ * A table-valued function attached to a source processor.
117
+ *
118
+ * When processing source rows, all attached table-valued functions are expanded as well.
119
+ */
120
+ export declare class SourceRowProcessorAddedTableValuedFunction implements EqualsIgnoringResultSet {
121
+ readonly syntacticSource: TableValuedResultSet;
122
+ readonly functionName: string;
123
+ readonly inputs: RowExpression[];
124
+ constructor(syntacticSource: TableValuedResultSet, functionName: string, inputs: RowExpression[]);
125
+ equalsAssumingSameResultSet(other: EqualsIgnoringResultSet): boolean;
126
+ assumingSameResultSetEqualityHashCode(hasher: StableHasher): void;
127
+ }
99
128
  export type ColumnSource = StarColumnSource | ExpressionColumnSource;
100
129
  export declare class StarColumnSource implements EqualsIgnoringResultSet {
101
130
  private constructor();
@@ -4,21 +4,47 @@ import { equalsIgnoringResultSetList, equalsIgnoringResultSetUnordered } from '.
4
4
  * A key describing how buckets or parameter lookups are parameterized.
5
5
  *
6
6
  * When constructing buckets, a value needs to be passed for each such key.
7
- * WHen invoking parameter lookups, values need to be passed as inputs.
7
+ * When invoking parameter lookups, values need to be passed as inputs.
8
8
  */
9
9
  export class PartitionKey {
10
+ }
11
+ export class ScalarPartitionKey extends PartitionKey {
10
12
  expression;
11
13
  constructor(expression) {
14
+ super();
12
15
  this.expression = expression;
13
16
  }
14
17
  equalsAssumingSameResultSet(other) {
15
- return (other instanceof PartitionKey &&
18
+ return (other instanceof ScalarPartitionKey &&
16
19
  other.expression.expression.equalsAssumingSameResultSet(this.expression.expression));
17
20
  }
18
21
  assumingSameResultSetEqualityHashCode(hasher) {
19
22
  this.expression.expression.assumingSameResultSetEqualityHashCode(hasher);
20
23
  }
21
24
  }
25
+ /**
26
+ * A partition key derived from the output of a table-valued function added to a {@link SourceRowProcessor}.
27
+ */
28
+ export class TableValuedPartitionKey extends PartitionKey {
29
+ fromFunction;
30
+ output;
31
+ constructor(fromFunction, output) {
32
+ super();
33
+ this.fromFunction = fromFunction;
34
+ this.output = output;
35
+ }
36
+ equalsAssumingSameResultSet(other) {
37
+ if (!(other instanceof TableValuedPartitionKey)) {
38
+ return false;
39
+ }
40
+ return (other.fromFunction.equalsAssumingSameResultSet(this.fromFunction) &&
41
+ other.output.equalsAssumingSameResultSet(this.output));
42
+ }
43
+ assumingSameResultSetEqualityHashCode(hasher) {
44
+ this.fromFunction.assumingSameResultSetEqualityHashCode(hasher);
45
+ this.output.assumingSameResultSetEqualityHashCode(hasher);
46
+ }
47
+ }
22
48
  class BaseSourceRowProcessor {
23
49
  /**
24
50
  * The table names being matched, along with an AST reference describing its syntactic source.
@@ -31,10 +57,12 @@ class BaseSourceRowProcessor {
31
57
  */
32
58
  filters;
33
59
  partitionBy;
60
+ addedFunctions;
34
61
  constructor(options) {
35
62
  this.syntacticSource = options.syntacticSource;
36
63
  this.filters = options.filters;
37
64
  this.partitionBy = options.partitionBy;
65
+ this.addedFunctions = options.addedFunctions;
38
66
  }
39
67
  get behaviorHashCode() {
40
68
  const hasher = new StableHasher();
@@ -51,6 +79,7 @@ class BaseSourceRowProcessor {
51
79
  hasher.add(this.tablePattern);
52
80
  equalsIgnoringResultSetUnordered.hash(hasher, this.filters.map((f) => f.expression));
53
81
  equalsIgnoringResultSetList.hash(hasher, this.partitionBy);
82
+ equalsIgnoringResultSetUnordered.hash(hasher, this.addedFunctions);
54
83
  }
55
84
  baseMatchesOther(other) {
56
85
  if (!other.tablePattern.equals(this.tablePattern)) {
@@ -62,6 +91,9 @@ class BaseSourceRowProcessor {
62
91
  if (!equalsIgnoringResultSetUnordered.equals(other.filters, this.filters)) {
63
92
  return false;
64
93
  }
94
+ if (!equalsIgnoringResultSetUnordered.equals(other.addedFunctions, this.addedFunctions)) {
95
+ return false;
96
+ }
65
97
  return true;
66
98
  }
67
99
  }
@@ -128,6 +160,31 @@ export class PointLookup extends BaseSourceRowProcessor {
128
160
  return this.baseMatchesOther(other) && equalsIgnoringResultSetList.equals(other.result, this.result);
129
161
  }
130
162
  }
163
+ /**
164
+ * A table-valued function attached to a source processor.
165
+ *
166
+ * When processing source rows, all attached table-valued functions are expanded as well.
167
+ */
168
+ export class SourceRowProcessorAddedTableValuedFunction {
169
+ syntacticSource;
170
+ functionName;
171
+ inputs;
172
+ constructor(syntacticSource, functionName, inputs) {
173
+ this.syntacticSource = syntacticSource;
174
+ this.functionName = functionName;
175
+ this.inputs = inputs;
176
+ }
177
+ equalsAssumingSameResultSet(other) {
178
+ if (!(other instanceof SourceRowProcessorAddedTableValuedFunction)) {
179
+ return false;
180
+ }
181
+ return other.functionName == this.functionName && equalsIgnoringResultSetList.equals(other.inputs, this.inputs);
182
+ }
183
+ assumingSameResultSetEqualityHashCode(hasher) {
184
+ hasher.addString(this.functionName);
185
+ equalsIgnoringResultSetList.hash(hasher, this.inputs);
186
+ }
187
+ }
131
188
  export class StarColumnSource {
132
189
  constructor() { }
133
190
  equalsAssumingSameResultSet(other) {
@@ -1 +1 @@
1
- {"version":3,"file":"rows.js","sourceRoot":"","sources":["../../src/compiler/rows.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rows.js","sourceRoot":"","sources":["../../src/compiler/rows.ts"],"names":[],"mappings":"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"}
@@ -14,7 +14,10 @@ export declare class SqlScope {
14
14
  parent?: SqlScope;
15
15
  });
16
16
  get rootScope(): SqlScope;
17
- get resultSets(): SyntacticResultSetSource[];
17
+ /**
18
+ * The default result set that unqualified references resolve to.
19
+ */
20
+ get defaultResultSet(): SyntacticResultSetSource | null;
18
21
  registerResultSet(errors: ParsingErrorListener, name: string, source: SyntacticResultSetSource): void;
19
22
  resolveResultSetForReference(name: string): SyntacticResultSetSource | undefined;
20
23
  registerCommonTableExpression(name: string, subquery: PreparedSubquery): void;
@@ -17,8 +17,19 @@ export class SqlScope {
17
17
  }
18
18
  return maybeRoot;
19
19
  }
20
- get resultSets() {
21
- return [...this.nameToResultSet.values()];
20
+ /**
21
+ * The default result set that unqualified references resolve to.
22
+ */
23
+ get defaultResultSet() {
24
+ if (this.nameToResultSet.size == 0) {
25
+ return this.parent?.defaultResultSet ?? null;
26
+ }
27
+ else if (this.nameToResultSet.size == 1) {
28
+ return this.nameToResultSet.values().next().value;
29
+ }
30
+ else {
31
+ return null;
32
+ }
22
33
  }
23
34
  registerResultSet(errors, name, source) {
24
35
  const lower = name.toLowerCase();
@@ -1 +1 @@
1
- {"version":3,"file":"scope.js","sourceRoot":"","sources":["../../src/compiler/scope.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,MAAM,OAAO,QAAQ;IACV,MAAM,CAAY;IACV,eAAe,GAAG,IAAI,GAAG,EAAoC,CAAC;IAC9D,sBAAsB,GAAG,IAAI,GAAG,EAA4B,CAAC;IAE9E,YAAY,OAA8B;QACxC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC/B,CAAC;IAED,IAAI,SAAS;QACX,IAAI,SAAS,GAAa,IAAI,CAAC;QAC/B,OAAO,SAAS,CAAC,MAAM,EAAE,CAAC;YACxB,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC;QAC/B,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,iBAAiB,CAAC,MAA4B,EAAE,IAAY,EAAE,MAAgC;QAC5F,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACpC,MAAM,CAAC,MAAM,CAAC,mBAAmB,IAAI,0BAA0B,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YAChF,OAAO;QACT,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,4BAA4B,CAAC,IAAY;QACvC,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,4BAA4B,CAAC,IAAI,CAAC,CAAC;IACzG,CAAC;IAED,6BAA6B,CAAC,IAAY,EAAE,QAA0B;QACpE,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,QAAQ,CAAC,CAAC;IAChE,CAAC;IAED,4BAA4B,CAAC,IAAY;QACvC,MAAM,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QACxE,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,4BAA4B,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7E,CAAC;CACF"}
1
+ {"version":3,"file":"scope.js","sourceRoot":"","sources":["../../src/compiler/scope.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,MAAM,OAAO,QAAQ;IACV,MAAM,CAAY;IACV,eAAe,GAAG,IAAI,GAAG,EAAoC,CAAC;IAC9D,sBAAsB,GAAG,IAAI,GAAG,EAA4B,CAAC;IAE9E,YAAY,OAA8B;QACxC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC/B,CAAC;IAED,IAAI,SAAS;QACX,IAAI,SAAS,GAAa,IAAI,CAAC;QAC/B,OAAO,SAAS,CAAC,MAAM,EAAE,CAAC;YACxB,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC;QAC/B,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,IAAI,gBAAgB;QAClB,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,MAAM,EAAE,gBAAgB,IAAI,IAAI,CAAC;QAC/C,CAAC;aAAM,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC;YAC1C,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAM,CAAC;QACrD,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,iBAAiB,CAAC,MAA4B,EAAE,IAAY,EAAE,MAAgC;QAC5F,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACpC,MAAM,CAAC,MAAM,CAAC,mBAAmB,IAAI,0BAA0B,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YAChF,OAAO;QACT,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,4BAA4B,CAAC,IAAY;QACvC,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,4BAA4B,CAAC,IAAI,CAAC,CAAC;IACzG,CAAC;IAED,6BAA6B,CAAC,IAAY,EAAE,QAA0B;QACpE,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,QAAQ,CAAC,CAAC;IAChE,CAAC;IAED,4BAA4B,CAAC,IAAY;QACvC,MAAM,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QACxE,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,4BAA4B,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7E,CAAC;CACF"}
@@ -61,17 +61,9 @@ export declare class PostgresToSqlite {
61
61
  private translateNodeWithLocation;
62
62
  private translateToNode;
63
63
  private invalidExpression;
64
- private translateInExpression;
64
+ private translateInOrOverlapOperator;
65
65
  private desugarInValues;
66
- private desugarInSubquery;
67
- /**
68
- * Desugar `$left IN $right`, where `$right` is a scalar expression. This is not valid SQL, but in PowerSync we
69
- * interpret that as `left IN (SELECT value FROM json_each(right))`.
70
- */
71
- private desugarInScalar;
72
- /**
73
- * Desugar `$left IN cteName` to `$left IN (SELECT cteName.onlyColumn FROM cteName)`.
74
- */
75
- private desugarInCte;
66
+ private negate;
76
67
  private translateRequestParameter;
68
+ private sourceLocation;
77
69
  }
@@ -17,7 +17,7 @@ export class PostgresToSqlite {
17
17
  }
18
18
  translateNodeWithLocation(expr) {
19
19
  const translated = this.translateToNode(expr);
20
- this.options.locations.sourceForNode.set(translated, expr);
20
+ this.options.locations.sourceForNode.set(translated, this.sourceLocation(expr));
21
21
  return translated;
22
22
  }
23
23
  translateToNode(expr) {
@@ -146,7 +146,10 @@ export class PostgresToSqlite {
146
146
  }
147
147
  case 'binary': {
148
148
  if (expr.op === 'IN' || expr.op === 'NOT IN') {
149
- return this.translateInExpression(expr);
149
+ return this.translateInOrOverlapOperator(expr, 'in', expr.op === 'NOT IN');
150
+ }
151
+ if (expr.op === '&&') {
152
+ return this.translateInOrOverlapOperator(expr, 'overlap', false);
150
153
  }
151
154
  const left = this.translateNodeWithLocation(expr.left);
152
155
  const right = this.translateNodeWithLocation(expr.right);
@@ -157,18 +160,12 @@ export class PostgresToSqlite {
157
160
  return { type: 'function', function: 'like', parameters: [left, right] };
158
161
  }
159
162
  else if (expr.op === 'NOT LIKE') {
160
- return {
161
- type: 'unary',
162
- operator: 'not',
163
- operand: { type: 'function', function: 'like', parameters: [left, right] }
164
- };
163
+ this.options.errors.report('LIKE expressions are not currently supported.', expr);
164
+ return this.negate(expr, { type: 'function', function: 'like', parameters: [left, right] });
165
165
  }
166
166
  else if (expr.op === '!=') {
167
- return {
168
- type: 'unary',
169
- operator: 'not',
170
- operand: { type: 'binary', left, right, operator: '=' }
171
- };
167
+ const equals = { type: 'binary', left, right, operator: '=' };
168
+ return this.negate(expr, equals);
172
169
  }
173
170
  const supported = supportedBinaryOperators[expr.op];
174
171
  if (supported == null) {
@@ -187,7 +184,7 @@ export class PostgresToSqlite {
187
184
  case '+':
188
185
  return { type: 'unary', operator: expr.op, operand: this.translateNodeWithLocation(expr.operand) };
189
186
  case 'NOT':
190
- return { type: 'unary', operator: 'not', operand: this.translateNodeWithLocation(expr.operand) };
187
+ return this.negate(expr, this.translateToNode(expr.operand));
191
188
  case 'IS NOT NULL':
192
189
  not = true;
193
190
  case 'IS NULL': // fallthrough
@@ -210,7 +207,12 @@ export class PostgresToSqlite {
210
207
  operator: 'is',
211
208
  right: rightHandSideOfIs
212
209
  };
213
- return not ? { type: 'unary', operator: 'not', operand: mappedIs } : mappedIs;
210
+ if (not) {
211
+ return this.negate(expr, mappedIs);
212
+ }
213
+ else {
214
+ return mappedIs;
215
+ }
214
216
  }
215
217
  case 'cast': {
216
218
  const to = expr.to?.name?.toLowerCase();
@@ -228,7 +230,7 @@ export class PostgresToSqlite {
228
230
  low: this.translateNodeWithLocation(expr.lo),
229
231
  high: this.translateNodeWithLocation(expr.hi)
230
232
  };
231
- return expr.op === 'BETWEEN' ? between : { type: 'unary', operator: 'not', operand: between };
233
+ return expr.op === 'NOT BETWEEN' ? this.negate(expr, between) : between;
232
234
  }
233
235
  case 'case': {
234
236
  return {
@@ -269,83 +271,114 @@ export class PostgresToSqlite {
269
271
  this.options.errors.report(message, source);
270
272
  return { type: 'lit_null' };
271
273
  }
272
- translateInExpression(expr) {
273
- const negated = expr.op === 'NOT IN';
274
- const right = expr.right;
275
- if (right.type == 'select') {
276
- return this.desugarInSubquery(negated, expr, right);
277
- }
278
- else if (right.type == 'array') {
279
- return this.desugarInValues(negated, expr.left, right.expressions);
280
- }
281
- else if (right.type == 'call' && right.function.name.toLowerCase() == 'row') {
282
- return this.desugarInValues(negated, expr.left, right.args);
274
+ translateInOrOverlapOperator(original, type, negated) {
275
+ let translatedLeft;
276
+ let translatedRight;
277
+ let additionalFilters = [];
278
+ const expand = (expr, acceptScalarArray) => {
279
+ if (expr.type === 'select') {
280
+ const resolved = this.options.joinSubqueryExpression(expr);
281
+ if (resolved == null) {
282
+ // An error would have been logged.
283
+ const bogusValue = { type: 'lit_null' };
284
+ this.options.locations.sourceForNode.set(bogusValue, this.sourceLocation(expr));
285
+ return { expr: bogusValue, isScalar: false };
286
+ }
287
+ additionalFilters.push(...resolved.filters);
288
+ return { expr: resolved.output, isScalar: false };
289
+ }
290
+ else {
291
+ if (expr.type == 'ref' && expr.table == null) {
292
+ // This might be a reference to a common table expression, e.g. in WHERE x IN $cte.
293
+ const cte = this.options.scope.resolveCommonTableExpression(expr.name);
294
+ if (cte) {
295
+ // Translate $cte to (SELECT $onlyColumn FROM $cte)
296
+ const columns = Object.keys(cte.resultColumns);
297
+ if (columns.length != 1) {
298
+ const bogus = this.invalidExpression(expr, 'Common-table expression must return a single column');
299
+ this.options.locations.sourceForNode.set(bogus, this.sourceLocation(expr));
300
+ return { expr: bogus, isScalar: false };
301
+ }
302
+ return expand({
303
+ type: 'select',
304
+ columns: [
305
+ { expr: { type: 'ref', name: columns[0], table: { name: expr.name }, _location: expr._location } }
306
+ ],
307
+ from: [{ type: 'table', name: { name: expr.name } }]
308
+ }, false);
309
+ }
310
+ }
311
+ // This is a scalar expression. Is this acceptable?
312
+ if (acceptScalarArray) {
313
+ return { expr: this.translateNodeWithLocation(expr), isScalar: true };
314
+ }
315
+ else {
316
+ // No, then translate `x IN a` to `x IN (SELECT value FROM json_each(a))`.
317
+ const name = this.options.generateTableAlias();
318
+ return expand({
319
+ type: 'select',
320
+ columns: [{ expr: { type: 'ref', name: 'value', table: { name }, _location: expr._location } }],
321
+ from: [{ type: 'call', function: { name: 'json_each' }, args: [expr], alias: { name } }]
322
+ }, false);
323
+ }
324
+ }
325
+ };
326
+ if (type === 'overlap') {
327
+ translatedLeft = expand(original.left, false).expr;
283
328
  }
284
329
  else {
285
- if (right.type == 'ref' && right.table == null) {
286
- const cte = this.options.scope.resolveCommonTableExpression(right.name);
287
- if (cte) {
288
- // Something of the form x IN $cte.
289
- return this.desugarInCte(negated, expr, right.name, cte);
290
- }
330
+ // For IN expressions, the left side is always a scalar.
331
+ translatedLeft = this.translateNodeWithLocation(original.left);
332
+ // Additionally, we support IN ARRAY[...] and IN ROW(...) expressions which are always scalar.
333
+ // TODO: We might be able to simplify expressions by translating them into json_array() invocations in expand()?
334
+ if (original.right.type == 'array') {
335
+ return this.desugarInValues(negated, original, translatedLeft, original.right.expressions);
336
+ }
337
+ else if (original.right.type == 'call' && original.right.function.name.toLowerCase() == 'row') {
338
+ return this.desugarInValues(negated, original, translatedLeft, original.right.args);
291
339
  }
292
- return this.desugarInScalar(negated, expr, right);
293
340
  }
294
- }
295
- desugarInValues(negated, left, right) {
296
- const scalarIn = {
297
- type: 'scalar_in',
298
- target: this.translateNodeWithLocation(left),
299
- in: right.map((e) => this.translateNodeWithLocation(e))
300
- };
301
- return negated ? { type: 'unary', operator: 'not', operand: scalarIn } : scalarIn;
302
- }
303
- desugarInSubquery(negated, binary, right) {
304
- const left = binary.left;
305
- const resolved = this.options.joinSubqueryExpression(right);
306
- if (resolved == null) {
307
- // An error would have been logged.
308
- return { type: 'lit_null' };
341
+ // Generally, we try to transform `x IN y` operators to `SELECT ... FROM x, y WHERE x = y.value`. This doesn't work
342
+ // for `NOT IN` operators though. We don't support the general case of `NOT IN` operators, but we want to be able to
343
+ // support `NOT IN` for scalar expression on the right-hand side. We use the scalar `json_contains` function
344
+ // available when evaluating sync plans for that. This is also how the `IN` operator is implemented with the old
345
+ // system before sync plans, we use it as a fallback for NOT IN here.
346
+ const translateRightResult = expand(original.right, type == 'in' && negated);
347
+ if (translateRightResult.isScalar) {
348
+ return this.negate(original, {
349
+ type: 'function',
350
+ function: 'ps_json_contains',
351
+ parameters: [translatedLeft, translateRightResult.expr]
352
+ });
353
+ }
354
+ else {
355
+ translatedRight = translateRightResult.expr;
309
356
  }
310
357
  let replacement = {
311
358
  type: 'binary',
312
359
  operator: '=',
313
- left: this.translateNodeWithLocation(left),
314
- right: resolved.output
360
+ left: translatedLeft,
361
+ right: translatedRight
315
362
  };
316
- this.options.locations.sourceForNode.set(replacement, binary);
317
- replacement = resolved.filters.reduce((left, right) => ({ type: 'binary', operator: 'and', left, right }), replacement);
363
+ this.options.locations.sourceForNode.set(replacement, this.sourceLocation(original));
364
+ replacement = additionalFilters.reduce((left, right) => ({ type: 'binary', operator: 'and', left, right }), replacement);
318
365
  if (negated) {
319
- replacement = { type: 'unary', operator: 'not', operand: replacement };
366
+ replacement = this.negate(original, replacement);
320
367
  }
321
368
  return replacement;
322
369
  }
323
- /**
324
- * Desugar `$left IN $right`, where `$right` is a scalar expression. This is not valid SQL, but in PowerSync we
325
- * interpret that as `left IN (SELECT value FROM json_each(right))`.
326
- */
327
- desugarInScalar(negated, binary, right) {
328
- const name = this.options.generateTableAlias();
329
- return this.desugarInSubquery(negated, binary, {
330
- type: 'select',
331
- columns: [{ expr: { type: 'ref', name: 'value', table: { name } } }],
332
- from: [{ type: 'call', function: { name: 'json_each' }, args: [right], alias: { name } }]
333
- });
370
+ desugarInValues(negated, source, left, right) {
371
+ const scalarIn = {
372
+ type: 'scalar_in',
373
+ target: left,
374
+ in: right.map((e) => this.translateNodeWithLocation(e))
375
+ };
376
+ return negated ? this.negate(source, scalarIn) : scalarIn;
334
377
  }
335
- /**
336
- * Desugar `$left IN cteName` to `$left IN (SELECT cteName.onlyColumn FROM cteName)`.
337
- */
338
- desugarInCte(negated, binary, cteName, cte) {
339
- const columns = Object.keys(cte.resultColumns);
340
- if (columns.length != 1) {
341
- return this.invalidExpression(binary.right, 'Common-table expression must return a single column');
342
- }
343
- const name = columns[0];
344
- return this.desugarInSubquery(negated, binary, {
345
- type: 'select',
346
- columns: [{ expr: { type: 'ref', name, table: { name: cteName } } }],
347
- from: [{ type: 'table', name: { name: cteName } }]
348
- });
378
+ /// Generates a `NOT` wrapper around the `inner` expression, using `source` as a syntactic location.
379
+ negate(source, inner) {
380
+ this.options.locations.sourceForNode.set(inner, this.sourceLocation(source));
381
+ return { type: 'unary', operator: 'not', operand: inner };
349
382
  }
350
383
  translateRequestParameter(source, expr) {
351
384
  const parameter = new ConnectionParameter(expr, source);
@@ -353,7 +386,7 @@ export class PostgresToSqlite {
353
386
  type: 'data',
354
387
  source: parameter
355
388
  };
356
- this.options.locations.sourceForNode.set(replacement, expr.function);
389
+ this.options.locations.sourceForNode.set(replacement, this.sourceLocation(expr.function));
357
390
  switch (expr.function.name.toLowerCase()) {
358
391
  case 'parameters':
359
392
  return replacement;
@@ -385,6 +418,9 @@ export class PostgresToSqlite {
385
418
  return this.invalidExpression(expr.function, 'Unknown request function');
386
419
  }
387
420
  }
421
+ sourceLocation(location) {
422
+ return { location, errors: this.options.errors };
423
+ }
388
424
  }
389
425
  const supportedBinaryOperators = {
390
426
  OR: 'or',