@contember/binding-common 2.0.0-alpha.19 → 2.0.0-alpha.21

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 (107) hide show
  1. package/dist/development/index.cjs +2 -0
  2. package/dist/development/index.cjs.map +1 -1
  3. package/dist/development/index.js +2 -0
  4. package/dist/development/index.js.map +1 -1
  5. package/dist/development/src/environment/Environment.cjs.map +1 -1
  6. package/dist/development/src/environment/Environment.js.map +1 -1
  7. package/dist/development/src/environment/TreeNodeEnvironmentFactory.cjs +3 -3
  8. package/dist/development/src/environment/TreeNodeEnvironmentFactory.cjs.map +1 -1
  9. package/dist/development/src/environment/TreeNodeEnvironmentFactory.js +2 -2
  10. package/dist/development/src/environment/TreeNodeEnvironmentFactory.js.map +1 -1
  11. package/dist/development/src/queryLanguage/MarkerFactory.cjs +1 -1
  12. package/dist/development/src/queryLanguage/MarkerFactory.cjs.map +1 -1
  13. package/dist/development/src/queryLanguage/MarkerFactory.js +1 -1
  14. package/dist/development/src/queryLanguage/MarkerFactory.js.map +1 -1
  15. package/dist/development/src/queryLanguage/Parser.cjs +4 -6
  16. package/dist/development/src/queryLanguage/Parser.cjs.map +1 -1
  17. package/dist/development/src/queryLanguage/Parser.js +4 -6
  18. package/dist/development/src/queryLanguage/Parser.js.map +1 -1
  19. package/dist/development/src/queryLanguage/QueryLanguage.cjs +1 -11
  20. package/dist/development/src/queryLanguage/QueryLanguage.cjs.map +1 -1
  21. package/dist/development/src/queryLanguage/QueryLanguage.js +1 -11
  22. package/dist/development/src/queryLanguage/QueryLanguage.js.map +1 -1
  23. package/dist/development/src/treeParameters/TreeParameterMerger.cjs +1 -15
  24. package/dist/development/src/treeParameters/TreeParameterMerger.cjs.map +1 -1
  25. package/dist/development/src/treeParameters/TreeParameterMerger.js +1 -15
  26. package/dist/development/src/treeParameters/TreeParameterMerger.js.map +1 -1
  27. package/dist/development/src/treeParameters/helpers/wrapFilterInHasOnes.cjs +2 -2
  28. package/dist/development/src/treeParameters/helpers/wrapFilterInHasOnes.cjs.map +1 -1
  29. package/dist/development/src/treeParameters/helpers/wrapFilterInHasOnes.js +1 -1
  30. package/dist/development/src/treeParameters/helpers/wrapFilterInHasOnes.js.map +1 -1
  31. package/dist/development/src/utils/whereToFilter.cjs +16 -0
  32. package/dist/development/src/utils/whereToFilter.cjs.map +1 -0
  33. package/dist/development/src/utils/whereToFilter.js +16 -0
  34. package/dist/development/src/utils/whereToFilter.js.map +1 -0
  35. package/dist/production/index.cjs +2 -0
  36. package/dist/production/index.cjs.map +1 -1
  37. package/dist/production/index.js +2 -0
  38. package/dist/production/index.js.map +1 -1
  39. package/dist/production/src/environment/Environment.cjs.map +1 -1
  40. package/dist/production/src/environment/Environment.js.map +1 -1
  41. package/dist/production/src/environment/TreeNodeEnvironmentFactory.cjs +3 -3
  42. package/dist/production/src/environment/TreeNodeEnvironmentFactory.cjs.map +1 -1
  43. package/dist/production/src/environment/TreeNodeEnvironmentFactory.js +2 -2
  44. package/dist/production/src/environment/TreeNodeEnvironmentFactory.js.map +1 -1
  45. package/dist/production/src/queryLanguage/MarkerFactory.cjs +1 -1
  46. package/dist/production/src/queryLanguage/MarkerFactory.cjs.map +1 -1
  47. package/dist/production/src/queryLanguage/MarkerFactory.js +1 -1
  48. package/dist/production/src/queryLanguage/MarkerFactory.js.map +1 -1
  49. package/dist/production/src/queryLanguage/Parser.cjs +4 -6
  50. package/dist/production/src/queryLanguage/Parser.cjs.map +1 -1
  51. package/dist/production/src/queryLanguage/Parser.js +4 -6
  52. package/dist/production/src/queryLanguage/Parser.js.map +1 -1
  53. package/dist/production/src/queryLanguage/QueryLanguage.cjs +1 -8
  54. package/dist/production/src/queryLanguage/QueryLanguage.cjs.map +1 -1
  55. package/dist/production/src/queryLanguage/QueryLanguage.js +1 -8
  56. package/dist/production/src/queryLanguage/QueryLanguage.js.map +1 -1
  57. package/dist/production/src/treeParameters/TreeParameterMerger.cjs +1 -15
  58. package/dist/production/src/treeParameters/TreeParameterMerger.cjs.map +1 -1
  59. package/dist/production/src/treeParameters/TreeParameterMerger.js +1 -15
  60. package/dist/production/src/treeParameters/TreeParameterMerger.js.map +1 -1
  61. package/dist/production/src/treeParameters/helpers/wrapFilterInHasOnes.cjs +2 -2
  62. package/dist/production/src/treeParameters/helpers/wrapFilterInHasOnes.cjs.map +1 -1
  63. package/dist/production/src/treeParameters/helpers/wrapFilterInHasOnes.js +1 -1
  64. package/dist/production/src/treeParameters/helpers/wrapFilterInHasOnes.js.map +1 -1
  65. package/dist/production/src/utils/whereToFilter.cjs +16 -0
  66. package/dist/production/src/utils/whereToFilter.cjs.map +1 -0
  67. package/dist/production/src/utils/whereToFilter.js +16 -0
  68. package/dist/production/src/utils/whereToFilter.js.map +1 -0
  69. package/dist/types/environment/Environment.d.ts +1 -2
  70. package/dist/types/environment/Environment.d.ts.map +1 -1
  71. package/dist/types/index.d.ts +1 -0
  72. package/dist/types/index.d.ts.map +1 -1
  73. package/dist/types/queryLanguage/Parser.d.ts +2 -2
  74. package/dist/types/queryLanguage/Parser.d.ts.map +1 -1
  75. package/dist/types/queryLanguage/QueryLanguage.d.ts +1 -3
  76. package/dist/types/queryLanguage/QueryLanguage.d.ts.map +1 -1
  77. package/dist/types/treeParameters/TreeParameterMerger.d.ts.map +1 -1
  78. package/dist/types/treeParameters/helpers/wrapFilterInHasOnes.d.ts.map +1 -1
  79. package/dist/types/treeParameters/primitives/Filter.d.ts +2 -2
  80. package/dist/types/treeParameters/primitives/Filter.d.ts.map +1 -1
  81. package/dist/types/treeParameters/primitives/OrderBy.d.ts +2 -2
  82. package/dist/types/treeParameters/primitives/OrderBy.d.ts.map +1 -1
  83. package/dist/types/treeParameters/primitives/UniqueWhere.d.ts +2 -2
  84. package/dist/types/treeParameters/primitives/UniqueWhere.d.ts.map +1 -1
  85. package/dist/types/tsconfig.tsbuildinfo +1 -1
  86. package/dist/types/types/BindingOperations.d.ts +0 -2
  87. package/dist/types/types/BindingOperations.d.ts.map +1 -1
  88. package/dist/types/utils/whereToFilter.d.ts +3 -0
  89. package/dist/types/utils/whereToFilter.d.ts.map +1 -0
  90. package/package.json +4 -4
  91. package/src/environment/Environment.ts +1 -2
  92. package/src/environment/TreeNodeEnvironmentFactory.ts +2 -2
  93. package/src/index.ts +1 -0
  94. package/src/queryLanguage/MarkerFactory.ts +1 -1
  95. package/src/queryLanguage/Parser.ts +8 -10
  96. package/src/queryLanguage/QueryLanguage.ts +0 -12
  97. package/src/treeParameters/TreeParameterMerger.ts +2 -17
  98. package/src/treeParameters/helpers/wrapFilterInHasOnes.ts +1 -1
  99. package/src/treeParameters/primitives/Filter.ts +2 -2
  100. package/src/treeParameters/primitives/OrderBy.ts +2 -2
  101. package/src/treeParameters/primitives/UniqueWhere.ts +2 -2
  102. package/src/types/BindingOperations.ts +0 -3
  103. package/src/utils/whereToFilter.ts +18 -0
  104. package/tests/cases/unit/queryLanguage/general.spec.tsx +2 -3
  105. package/tests/cases/unit/queryLanguage/orderBy.spec.tsx +0 -1
  106. package/tests/cases/unit/queryLanguage/singleRelativeField.spec.tsx +0 -1
  107. package/tests/cases/unit/whereToFilter.ts +24 -0
@@ -11,7 +11,7 @@ import { HasOneRelationMarker } from "../markers/HasOneRelationMarker.js";
11
11
  import { HasManyRelationMarker } from "../markers/HasManyRelationMarker.js";
12
12
  class MarkerFactory {
13
13
  static createEntitySubTreeMarker(entity, fields, environment) {
14
- const qualifiedSingleEntity = QueryLanguage.desugarQualifiedSingleEntity(entity, environment, { missingSetOnCreate: "fillAndWarn" });
14
+ const qualifiedSingleEntity = QueryLanguage.desugarQualifiedSingleEntity(entity, environment);
15
15
  return this.createSubTreeMarker(qualifiedSingleEntity, "eventListeners", EntitySubTreeMarker, fields, environment);
16
16
  }
17
17
  static createUnconstrainedEntitySubTreeMarker(entity, fields, environment) {
@@ -1 +1 @@
1
- {"version":3,"file":"MarkerFactory.js","sources":["../../../../../packages/binding-common/src/queryLanguage/MarkerFactory.ts"],"sourcesContent":["import type { Environment } from '../environment'\nimport {\n\tEntityFieldMarker,\n\tEntityFieldMarkersContainer,\n\tEntityFieldsWithHoistablesMarker,\n\tEntityListSubTreeMarker,\n\tEntitySubTreeMarker,\n\tFieldMarker,\n\tHasManyRelationMarker,\n\tHasOneRelationMarker,\n} from '../markers'\nimport { MarkerMerger } from '../markers/MarkerMerger'\nimport type {\n\tEntityEventListenerStore,\n\tHasManyRelation,\n\tHasOneRelation,\n\tQualifiedSingleEntity,\n\tRelativeSingleField,\n\tSugaredParentEntityParameters,\n\tSugaredQualifiedEntityList,\n\tSugaredQualifiedSingleEntity,\n\tSugaredRelativeEntityList,\n\tSugaredRelativeSingleEntity,\n\tSugaredRelativeSingleField,\n\tSugaredUnconstrainedQualifiedEntityList,\n\tSugaredUnconstrainedQualifiedSingleEntity,\n} from '../treeParameters'\nimport { TreeParameterMerger } from '../treeParameters/TreeParameterMerger'\nimport { assertNever } from '../utils/assertNever'\nimport { QueryLanguage } from './QueryLanguage'\n\nexport class MarkerFactory {\n\n\tpublic static createEntitySubTreeMarker(\n\t\tentity: SugaredQualifiedSingleEntity,\n\t\tfields: EntityFieldMarkersContainer | EntityFieldsWithHoistablesMarker,\n\t\tenvironment: Environment,\n\t): EntityFieldsWithHoistablesMarker {\n\n\t\tconst qualifiedSingleEntity: QualifiedSingleEntity = QueryLanguage.desugarQualifiedSingleEntity(entity, environment, { missingSetOnCreate: 'fillAndWarn' })\n\n\t\treturn this.createSubTreeMarker(qualifiedSingleEntity, 'eventListeners', EntitySubTreeMarker, fields, environment)\n\t}\n\n\tpublic static createUnconstrainedEntitySubTreeMarker(\n\t\tentity: SugaredUnconstrainedQualifiedSingleEntity,\n\t\tfields: EntityFieldMarkersContainer | EntityFieldsWithHoistablesMarker,\n\t\tenvironment: Environment,\n\t): EntityFieldsWithHoistablesMarker {\n\n\t\treturn this.createSubTreeMarker(\n\t\t\tQueryLanguage.desugarUnconstrainedQualifiedSingleEntity(entity, environment),\n\t\t\t'eventListeners',\n\t\t\tEntitySubTreeMarker,\n\t\t\tfields,\n\t\t\tenvironment,\n\t\t)\n\t}\n\n\tpublic static createEntityListSubTreeMarker(\n\t\tentityList: SugaredQualifiedEntityList,\n\t\tfields: EntityFieldMarkersContainer | EntityFieldsWithHoistablesMarker,\n\t\tenvironment: Environment,\n\t): EntityFieldsWithHoistablesMarker {\n\n\t\treturn this.createSubTreeMarker(\n\t\t\tQueryLanguage.desugarQualifiedEntityList(entityList, environment),\n\t\t\t'childEventListeners',\n\t\t\tEntityListSubTreeMarker,\n\t\t\tfields,\n\t\t\tenvironment,\n\t\t)\n\t}\n\n\tpublic static createUnconstrainedEntityListSubTreeMarker(\n\t\tentityList: SugaredUnconstrainedQualifiedEntityList,\n\t\tfields: EntityFieldMarkersContainer | EntityFieldsWithHoistablesMarker,\n\t\tenvironment: Environment,\n\t): EntityFieldsWithHoistablesMarker {\n\n\t\treturn this.createSubTreeMarker(\n\t\t\tQueryLanguage.desugarUnconstrainedQualifiedEntityList(entityList, environment),\n\t\t\t'childEventListeners',\n\t\t\tEntityListSubTreeMarker,\n\t\t\tfields,\n\t\t\tenvironment,\n\t\t)\n\t}\n\n\tpublic static createParentEntityMarker(\n\t\tparentEntity: SugaredParentEntityParameters,\n\t\tfields: EntityFieldMarkersContainer | EntityFieldsWithHoistablesMarker,\n\t\tenvironment: Environment,\n\t): EntityFieldsWithHoistablesMarker {\n\n\t\tconst desugared = QueryLanguage.desugarParentEntityParameters(parentEntity, environment)\n\n\t\tif (fields instanceof EntityFieldMarkersContainer) {\n\t\t\treturn new EntityFieldsWithHoistablesMarker(fields, undefined, desugared)\n\t\t}\n\n\t\treturn new EntityFieldsWithHoistablesMarker(\n\t\t\tfields.fields,\n\t\t\tfields.subTrees,\n\t\t\tTreeParameterMerger.mergeParentEntityParameters(fields.parentReference, desugared),\n\t\t)\n\t}\n\n\tpublic static createEntityFieldsWithHoistablesMarker(\n\t\tfields: EntityFieldMarkersContainer | EntityFieldsWithHoistablesMarker,\n\t\tenvironment: Environment,\n\t): EntityFieldsWithHoistablesMarker {\n\n\t\tif (fields instanceof EntityFieldMarkersContainer) {\n\t\t\treturn new EntityFieldsWithHoistablesMarker(fields, undefined, undefined)\n\t\t}\n\n\t\treturn new EntityFieldsWithHoistablesMarker(fields.fields, fields.subTrees, undefined)\n\t}\n\n\tpublic static createRelativeSingleEntityFields(\n\t\tfield: SugaredRelativeSingleEntity,\n\t\tenvironment: Environment,\n\t\tfields: EntityFieldsWithHoistablesMarker | EntityFieldMarkersContainer,\n\t): EntityFieldsWithHoistablesMarker | EntityFieldMarkersContainer {\n\n\t\tconst relativeSingleEntity = QueryLanguage.desugarRelativeSingleEntity(field, environment)\n\n\t\tif (fields instanceof EntityFieldMarkersContainer) {\n\t\t\treturn this.wrapRelativeEntityFieldMarkers(relativeSingleEntity.hasOneRelationPath, environment, fields)\n\t\t}\n\n\t\trelativeSingleEntity.hasOneRelationPath[relativeSingleEntity.hasOneRelationPath.length - 1] =\n\t\t\tTreeParameterMerger.mergeInParentEntity(\n\t\t\t\trelativeSingleEntity.hasOneRelationPath[relativeSingleEntity.hasOneRelationPath.length - 1],\n\t\t\t\t'eventListeners',\n\t\t\t\tfields.parentReference,\n\t\t\t)\n\n\t\treturn new EntityFieldsWithHoistablesMarker(\n\t\t\tthis.wrapRelativeEntityFieldMarkers(relativeSingleEntity.hasOneRelationPath, environment, fields.fields),\n\t\t\tfields.subTrees,\n\t\t\tundefined,\n\t\t)\n\t}\n\n\tpublic static createRelativeEntityListFields(\n\t\tfield: SugaredRelativeEntityList,\n\t\tenvironment: Environment,\n\t\tfields: EntityFieldsWithHoistablesMarker | EntityFieldMarkersContainer,\n\t): EntityFieldsWithHoistablesMarker | EntityFieldMarkersContainer {\n\n\t\tconst relativeEntityList = QueryLanguage.desugarRelativeEntityList(field, environment)\n\n\t\tif (fields instanceof EntityFieldMarkersContainer) {\n\t\t\tconst hasManyRelationMarker = this.createHasManyRelationMarker(\n\t\t\t\trelativeEntityList.hasManyRelation,\n\t\t\t\tenvironment,\n\t\t\t\tfields,\n\t\t\t)\n\t\t\treturn this.wrapRelativeEntityFieldMarkers(\n\t\t\t\trelativeEntityList.hasOneRelationPath,\n\t\t\t\tenvironment.getParent(),\n\t\t\t\tthis.createEntityFieldMarkersContainer(hasManyRelationMarker),\n\t\t\t)\n\t\t}\n\n\t\trelativeEntityList.hasManyRelation = TreeParameterMerger.mergeInParentEntity(\n\t\t\trelativeEntityList.hasManyRelation,\n\t\t\t'childEventListeners',\n\t\t\tfields.parentReference,\n\t\t)\n\n\t\tconst hasManyRelationMarker = this.createHasManyRelationMarker(\n\t\t\trelativeEntityList.hasManyRelation,\n\t\t\tenvironment,\n\t\t\tfields.fields,\n\t\t)\n\n\t\treturn new EntityFieldsWithHoistablesMarker(\n\t\t\tthis.wrapRelativeEntityFieldMarkers(\n\t\t\t\trelativeEntityList.hasOneRelationPath,\n\t\t\t\tenvironment.getParent(),\n\t\t\t\tthis.createEntityFieldMarkersContainer(hasManyRelationMarker),\n\t\t\t),\n\t\t\tfields.subTrees,\n\t\t\tundefined,\n\t\t)\n\t}\n\n\tpublic static createFieldMarker(field: SugaredRelativeSingleField, environment: Environment): EntityFieldMarkersContainer {\n\n\t\treturn this.wrapRelativeSingleField(\n\t\t\tfield,\n\t\t\tenvironment,\n\t\t\trelativeSingleField => new FieldMarker(relativeSingleField),\n\t\t)\n\t}\n\n\tprivate static wrapRelativeSingleField(\n\t\tfield: SugaredRelativeSingleField,\n\t\tenvironment: Environment,\n\t\tgetMarker: (relativeSingleField: RelativeSingleField) => EntityFieldMarker,\n\t): EntityFieldMarkersContainer {\n\n\t\tconst relativeSingleField = QueryLanguage.desugarRelativeSingleField(field, environment)\n\n\t\treturn this.wrapRelativeEntityFieldMarkers(\n\t\t\trelativeSingleField.hasOneRelationPath,\n\t\t\tenvironment.getParent(),\n\t\t\tthis.createEntityFieldMarkersContainer(getMarker(relativeSingleField)),\n\t\t)\n\t}\n\n\tprivate static wrapRelativeEntityFieldMarkers(\n\t\thasOneRelationPath: HasOneRelation[],\n\t\tenvironment: Environment,\n\t\tfields: EntityFieldMarkersContainer,\n\t): EntityFieldMarkersContainer {\n\n\t\tfor (let i = hasOneRelationPath.length - 1; i >= 0; i--) {\n\t\t\tconst marker = this.createHasOneRelationMarker(hasOneRelationPath[i], environment, fields)\n\t\t\tenvironment = environment.getParent()\n\t\t\tfields = this.createEntityFieldMarkersContainer(marker)\n\t\t}\n\n\t\treturn fields\n\t}\n\n\tpublic static createEntityFieldMarkersContainer(marker: EntityFieldMarker | undefined): EntityFieldMarkersContainer {\n\t\tif (marker instanceof FieldMarker) {\n\t\t\treturn new EntityFieldMarkersContainer(\n\t\t\t\t!marker.isNonbearing,\n\t\t\t\tnew Map([[marker.placeholderName, marker]]),\n\t\t\t\tnew Map([[marker.fieldName, marker.placeholderName]]),\n\t\t\t)\n\t\t} else if (marker instanceof HasOneRelationMarker || marker instanceof HasManyRelationMarker) {\n\t\t\treturn new EntityFieldMarkersContainer(\n\t\t\t\t!marker.parameters.isNonbearing,\n\t\t\t\tnew Map([[marker.placeholderName, marker]]),\n\t\t\t\tnew Map([[marker.parameters.field, marker.placeholderName]]),\n\t\t\t)\n\t\t} else if (marker === undefined) {\n\t\t\treturn new EntityFieldMarkersContainer(false, new Map(), new Map())\n\t\t} else {\n\t\t\treturn assertNever(marker)\n\t\t}\n\t}\n\n\tprivate static createHasOneRelationMarker(\n\t\thasOneRelation: HasOneRelation,\n\t\tenvironment: Environment,\n\t\tfields: EntityFieldMarkersContainer,\n\t): HasOneRelationMarker {\n\t\treturn new HasOneRelationMarker(\n\t\t\t{\n\t\t\t\t...hasOneRelation,\n\t\t\t\tsetOnCreate: hasOneRelation.reducedBy\n\t\t\t\t\t? TreeParameterMerger.mergeSetOnCreate(hasOneRelation.setOnCreate || {}, hasOneRelation.reducedBy)\n\t\t\t\t\t: hasOneRelation.setOnCreate,\n\t\t\t},\n\t\t\tMarkerMerger.mergeInSystemFields(fields),\n\t\t\tenvironment,\n\t\t)\n\t}\n\n\tprivate static createHasManyRelationMarker(\n\t\thasManyRelation: HasManyRelation,\n\t\tenvironment: Environment,\n\t\tfields: EntityFieldMarkersContainer,\n\t) {\n\t\treturn new HasManyRelationMarker(hasManyRelation, MarkerMerger.mergeInSystemFields(fields), environment)\n\t}\n\n\tprivate static createSubTreeMarker<\n\t\tParams extends Record<'hasOneRelationPath', HasOneRelation[]> & Record<Key, EntityEventListenerStore | undefined>,\n\t\tKey extends keyof Params,\n\t>(\n\t\tqualifiedParams: Params,\n\t\tkey: Key,\n\t\tMarker: new (params: Params, fields: EntityFieldMarkersContainer, env: Environment) =>\n\t\t\t| EntitySubTreeMarker\n\t\t\t| EntityListSubTreeMarker,\n\t\tfields: EntityFieldMarkersContainer | EntityFieldsWithHoistablesMarker,\n\t\tenvironment: Environment,\n\t): EntityFieldsWithHoistablesMarker {\n\t\tlet entityFields: EntityFieldMarkersContainer | undefined\n\n\t\tif (fields instanceof EntityFieldsWithHoistablesMarker) {\n\t\t\t// TODO this is wrong with respect to hasOneRelationPath\n\t\t\tqualifiedParams = TreeParameterMerger.mergeInParentEntity(qualifiedParams, key, fields.parentReference)\n\t\t\tentityFields = fields.fields\n\t\t} else {\n\t\t\tentityFields = fields\n\t\t}\n\n\t\tconst subTree = new Marker(\n\t\t\tqualifiedParams,\n\t\t\tthis.wrapRelativeEntityFieldMarkers(\n\t\t\t\tqualifiedParams.hasOneRelationPath,\n\t\t\t\tenvironment,\n\t\t\t\tMarkerMerger.mergeInSystemFields(entityFields),\n\t\t\t),\n\t\t\tenvironment,\n\t\t)\n\t\tif (fields instanceof EntityFieldsWithHoistablesMarker) {\n\t\t\treturn new EntityFieldsWithHoistablesMarker(\n\t\t\t\tthis.createEntityFieldMarkersContainer(undefined),\n\t\t\t\tMarkerMerger.mergeSubTreeMarkers(fields.subTrees, new Map([[subTree.placeholderName, subTree]])),\n\t\t\t\tundefined,\n\t\t\t)\n\t\t}\n\t\treturn new EntityFieldsWithHoistablesMarker(\n\t\t\tthis.createEntityFieldMarkersContainer(undefined),\n\t\t\tnew Map([[subTree.placeholderName, subTree]]),\n\t\t\tundefined,\n\t\t)\n\t}\n}\n"],"names":["hasManyRelationMarker"],"mappings":"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"}
1
+ {"version":3,"file":"MarkerFactory.js","sources":["../../../../../packages/binding-common/src/queryLanguage/MarkerFactory.ts"],"sourcesContent":["import type { Environment } from '../environment'\nimport {\n\tEntityFieldMarker,\n\tEntityFieldMarkersContainer,\n\tEntityFieldsWithHoistablesMarker,\n\tEntityListSubTreeMarker,\n\tEntitySubTreeMarker,\n\tFieldMarker,\n\tHasManyRelationMarker,\n\tHasOneRelationMarker,\n} from '../markers'\nimport { MarkerMerger } from '../markers/MarkerMerger'\nimport type {\n\tEntityEventListenerStore,\n\tHasManyRelation,\n\tHasOneRelation,\n\tQualifiedSingleEntity,\n\tRelativeSingleField,\n\tSugaredParentEntityParameters,\n\tSugaredQualifiedEntityList,\n\tSugaredQualifiedSingleEntity,\n\tSugaredRelativeEntityList,\n\tSugaredRelativeSingleEntity,\n\tSugaredRelativeSingleField,\n\tSugaredUnconstrainedQualifiedEntityList,\n\tSugaredUnconstrainedQualifiedSingleEntity,\n} from '../treeParameters'\nimport { TreeParameterMerger } from '../treeParameters/TreeParameterMerger'\nimport { assertNever } from '../utils/assertNever'\nimport { QueryLanguage } from './QueryLanguage'\n\nexport class MarkerFactory {\n\n\tpublic static createEntitySubTreeMarker(\n\t\tentity: SugaredQualifiedSingleEntity,\n\t\tfields: EntityFieldMarkersContainer | EntityFieldsWithHoistablesMarker,\n\t\tenvironment: Environment,\n\t): EntityFieldsWithHoistablesMarker {\n\n\t\tconst qualifiedSingleEntity: QualifiedSingleEntity = QueryLanguage.desugarQualifiedSingleEntity(entity, environment)\n\n\t\treturn this.createSubTreeMarker(qualifiedSingleEntity, 'eventListeners', EntitySubTreeMarker, fields, environment)\n\t}\n\n\tpublic static createUnconstrainedEntitySubTreeMarker(\n\t\tentity: SugaredUnconstrainedQualifiedSingleEntity,\n\t\tfields: EntityFieldMarkersContainer | EntityFieldsWithHoistablesMarker,\n\t\tenvironment: Environment,\n\t): EntityFieldsWithHoistablesMarker {\n\n\t\treturn this.createSubTreeMarker(\n\t\t\tQueryLanguage.desugarUnconstrainedQualifiedSingleEntity(entity, environment),\n\t\t\t'eventListeners',\n\t\t\tEntitySubTreeMarker,\n\t\t\tfields,\n\t\t\tenvironment,\n\t\t)\n\t}\n\n\tpublic static createEntityListSubTreeMarker(\n\t\tentityList: SugaredQualifiedEntityList,\n\t\tfields: EntityFieldMarkersContainer | EntityFieldsWithHoistablesMarker,\n\t\tenvironment: Environment,\n\t): EntityFieldsWithHoistablesMarker {\n\n\t\treturn this.createSubTreeMarker(\n\t\t\tQueryLanguage.desugarQualifiedEntityList(entityList, environment),\n\t\t\t'childEventListeners',\n\t\t\tEntityListSubTreeMarker,\n\t\t\tfields,\n\t\t\tenvironment,\n\t\t)\n\t}\n\n\tpublic static createUnconstrainedEntityListSubTreeMarker(\n\t\tentityList: SugaredUnconstrainedQualifiedEntityList,\n\t\tfields: EntityFieldMarkersContainer | EntityFieldsWithHoistablesMarker,\n\t\tenvironment: Environment,\n\t): EntityFieldsWithHoistablesMarker {\n\n\t\treturn this.createSubTreeMarker(\n\t\t\tQueryLanguage.desugarUnconstrainedQualifiedEntityList(entityList, environment),\n\t\t\t'childEventListeners',\n\t\t\tEntityListSubTreeMarker,\n\t\t\tfields,\n\t\t\tenvironment,\n\t\t)\n\t}\n\n\tpublic static createParentEntityMarker(\n\t\tparentEntity: SugaredParentEntityParameters,\n\t\tfields: EntityFieldMarkersContainer | EntityFieldsWithHoistablesMarker,\n\t\tenvironment: Environment,\n\t): EntityFieldsWithHoistablesMarker {\n\n\t\tconst desugared = QueryLanguage.desugarParentEntityParameters(parentEntity, environment)\n\n\t\tif (fields instanceof EntityFieldMarkersContainer) {\n\t\t\treturn new EntityFieldsWithHoistablesMarker(fields, undefined, desugared)\n\t\t}\n\n\t\treturn new EntityFieldsWithHoistablesMarker(\n\t\t\tfields.fields,\n\t\t\tfields.subTrees,\n\t\t\tTreeParameterMerger.mergeParentEntityParameters(fields.parentReference, desugared),\n\t\t)\n\t}\n\n\tpublic static createEntityFieldsWithHoistablesMarker(\n\t\tfields: EntityFieldMarkersContainer | EntityFieldsWithHoistablesMarker,\n\t\tenvironment: Environment,\n\t): EntityFieldsWithHoistablesMarker {\n\n\t\tif (fields instanceof EntityFieldMarkersContainer) {\n\t\t\treturn new EntityFieldsWithHoistablesMarker(fields, undefined, undefined)\n\t\t}\n\n\t\treturn new EntityFieldsWithHoistablesMarker(fields.fields, fields.subTrees, undefined)\n\t}\n\n\tpublic static createRelativeSingleEntityFields(\n\t\tfield: SugaredRelativeSingleEntity,\n\t\tenvironment: Environment,\n\t\tfields: EntityFieldsWithHoistablesMarker | EntityFieldMarkersContainer,\n\t): EntityFieldsWithHoistablesMarker | EntityFieldMarkersContainer {\n\n\t\tconst relativeSingleEntity = QueryLanguage.desugarRelativeSingleEntity(field, environment)\n\n\t\tif (fields instanceof EntityFieldMarkersContainer) {\n\t\t\treturn this.wrapRelativeEntityFieldMarkers(relativeSingleEntity.hasOneRelationPath, environment, fields)\n\t\t}\n\n\t\trelativeSingleEntity.hasOneRelationPath[relativeSingleEntity.hasOneRelationPath.length - 1] =\n\t\t\tTreeParameterMerger.mergeInParentEntity(\n\t\t\t\trelativeSingleEntity.hasOneRelationPath[relativeSingleEntity.hasOneRelationPath.length - 1],\n\t\t\t\t'eventListeners',\n\t\t\t\tfields.parentReference,\n\t\t\t)\n\n\t\treturn new EntityFieldsWithHoistablesMarker(\n\t\t\tthis.wrapRelativeEntityFieldMarkers(relativeSingleEntity.hasOneRelationPath, environment, fields.fields),\n\t\t\tfields.subTrees,\n\t\t\tundefined,\n\t\t)\n\t}\n\n\tpublic static createRelativeEntityListFields(\n\t\tfield: SugaredRelativeEntityList,\n\t\tenvironment: Environment,\n\t\tfields: EntityFieldsWithHoistablesMarker | EntityFieldMarkersContainer,\n\t): EntityFieldsWithHoistablesMarker | EntityFieldMarkersContainer {\n\n\t\tconst relativeEntityList = QueryLanguage.desugarRelativeEntityList(field, environment)\n\n\t\tif (fields instanceof EntityFieldMarkersContainer) {\n\t\t\tconst hasManyRelationMarker = this.createHasManyRelationMarker(\n\t\t\t\trelativeEntityList.hasManyRelation,\n\t\t\t\tenvironment,\n\t\t\t\tfields,\n\t\t\t)\n\t\t\treturn this.wrapRelativeEntityFieldMarkers(\n\t\t\t\trelativeEntityList.hasOneRelationPath,\n\t\t\t\tenvironment.getParent(),\n\t\t\t\tthis.createEntityFieldMarkersContainer(hasManyRelationMarker),\n\t\t\t)\n\t\t}\n\n\t\trelativeEntityList.hasManyRelation = TreeParameterMerger.mergeInParentEntity(\n\t\t\trelativeEntityList.hasManyRelation,\n\t\t\t'childEventListeners',\n\t\t\tfields.parentReference,\n\t\t)\n\n\t\tconst hasManyRelationMarker = this.createHasManyRelationMarker(\n\t\t\trelativeEntityList.hasManyRelation,\n\t\t\tenvironment,\n\t\t\tfields.fields,\n\t\t)\n\n\t\treturn new EntityFieldsWithHoistablesMarker(\n\t\t\tthis.wrapRelativeEntityFieldMarkers(\n\t\t\t\trelativeEntityList.hasOneRelationPath,\n\t\t\t\tenvironment.getParent(),\n\t\t\t\tthis.createEntityFieldMarkersContainer(hasManyRelationMarker),\n\t\t\t),\n\t\t\tfields.subTrees,\n\t\t\tundefined,\n\t\t)\n\t}\n\n\tpublic static createFieldMarker(field: SugaredRelativeSingleField, environment: Environment): EntityFieldMarkersContainer {\n\n\t\treturn this.wrapRelativeSingleField(\n\t\t\tfield,\n\t\t\tenvironment,\n\t\t\trelativeSingleField => new FieldMarker(relativeSingleField),\n\t\t)\n\t}\n\n\tprivate static wrapRelativeSingleField(\n\t\tfield: SugaredRelativeSingleField,\n\t\tenvironment: Environment,\n\t\tgetMarker: (relativeSingleField: RelativeSingleField) => EntityFieldMarker,\n\t): EntityFieldMarkersContainer {\n\n\t\tconst relativeSingleField = QueryLanguage.desugarRelativeSingleField(field, environment)\n\n\t\treturn this.wrapRelativeEntityFieldMarkers(\n\t\t\trelativeSingleField.hasOneRelationPath,\n\t\t\tenvironment.getParent(),\n\t\t\tthis.createEntityFieldMarkersContainer(getMarker(relativeSingleField)),\n\t\t)\n\t}\n\n\tprivate static wrapRelativeEntityFieldMarkers(\n\t\thasOneRelationPath: HasOneRelation[],\n\t\tenvironment: Environment,\n\t\tfields: EntityFieldMarkersContainer,\n\t): EntityFieldMarkersContainer {\n\n\t\tfor (let i = hasOneRelationPath.length - 1; i >= 0; i--) {\n\t\t\tconst marker = this.createHasOneRelationMarker(hasOneRelationPath[i], environment, fields)\n\t\t\tenvironment = environment.getParent()\n\t\t\tfields = this.createEntityFieldMarkersContainer(marker)\n\t\t}\n\n\t\treturn fields\n\t}\n\n\tpublic static createEntityFieldMarkersContainer(marker: EntityFieldMarker | undefined): EntityFieldMarkersContainer {\n\t\tif (marker instanceof FieldMarker) {\n\t\t\treturn new EntityFieldMarkersContainer(\n\t\t\t\t!marker.isNonbearing,\n\t\t\t\tnew Map([[marker.placeholderName, marker]]),\n\t\t\t\tnew Map([[marker.fieldName, marker.placeholderName]]),\n\t\t\t)\n\t\t} else if (marker instanceof HasOneRelationMarker || marker instanceof HasManyRelationMarker) {\n\t\t\treturn new EntityFieldMarkersContainer(\n\t\t\t\t!marker.parameters.isNonbearing,\n\t\t\t\tnew Map([[marker.placeholderName, marker]]),\n\t\t\t\tnew Map([[marker.parameters.field, marker.placeholderName]]),\n\t\t\t)\n\t\t} else if (marker === undefined) {\n\t\t\treturn new EntityFieldMarkersContainer(false, new Map(), new Map())\n\t\t} else {\n\t\t\treturn assertNever(marker)\n\t\t}\n\t}\n\n\tprivate static createHasOneRelationMarker(\n\t\thasOneRelation: HasOneRelation,\n\t\tenvironment: Environment,\n\t\tfields: EntityFieldMarkersContainer,\n\t): HasOneRelationMarker {\n\t\treturn new HasOneRelationMarker(\n\t\t\t{\n\t\t\t\t...hasOneRelation,\n\t\t\t\tsetOnCreate: hasOneRelation.reducedBy\n\t\t\t\t\t? TreeParameterMerger.mergeSetOnCreate(hasOneRelation.setOnCreate || {}, hasOneRelation.reducedBy)\n\t\t\t\t\t: hasOneRelation.setOnCreate,\n\t\t\t},\n\t\t\tMarkerMerger.mergeInSystemFields(fields),\n\t\t\tenvironment,\n\t\t)\n\t}\n\n\tprivate static createHasManyRelationMarker(\n\t\thasManyRelation: HasManyRelation,\n\t\tenvironment: Environment,\n\t\tfields: EntityFieldMarkersContainer,\n\t) {\n\t\treturn new HasManyRelationMarker(hasManyRelation, MarkerMerger.mergeInSystemFields(fields), environment)\n\t}\n\n\tprivate static createSubTreeMarker<\n\t\tParams extends Record<'hasOneRelationPath', HasOneRelation[]> & Record<Key, EntityEventListenerStore | undefined>,\n\t\tKey extends keyof Params,\n\t>(\n\t\tqualifiedParams: Params,\n\t\tkey: Key,\n\t\tMarker: new (params: Params, fields: EntityFieldMarkersContainer, env: Environment) =>\n\t\t\t| EntitySubTreeMarker\n\t\t\t| EntityListSubTreeMarker,\n\t\tfields: EntityFieldMarkersContainer | EntityFieldsWithHoistablesMarker,\n\t\tenvironment: Environment,\n\t): EntityFieldsWithHoistablesMarker {\n\t\tlet entityFields: EntityFieldMarkersContainer | undefined\n\n\t\tif (fields instanceof EntityFieldsWithHoistablesMarker) {\n\t\t\t// TODO this is wrong with respect to hasOneRelationPath\n\t\t\tqualifiedParams = TreeParameterMerger.mergeInParentEntity(qualifiedParams, key, fields.parentReference)\n\t\t\tentityFields = fields.fields\n\t\t} else {\n\t\t\tentityFields = fields\n\t\t}\n\n\t\tconst subTree = new Marker(\n\t\t\tqualifiedParams,\n\t\t\tthis.wrapRelativeEntityFieldMarkers(\n\t\t\t\tqualifiedParams.hasOneRelationPath,\n\t\t\t\tenvironment,\n\t\t\t\tMarkerMerger.mergeInSystemFields(entityFields),\n\t\t\t),\n\t\t\tenvironment,\n\t\t)\n\t\tif (fields instanceof EntityFieldsWithHoistablesMarker) {\n\t\t\treturn new EntityFieldsWithHoistablesMarker(\n\t\t\t\tthis.createEntityFieldMarkersContainer(undefined),\n\t\t\t\tMarkerMerger.mergeSubTreeMarkers(fields.subTrees, new Map([[subTree.placeholderName, subTree]])),\n\t\t\t\tundefined,\n\t\t\t)\n\t\t}\n\t\treturn new EntityFieldsWithHoistablesMarker(\n\t\t\tthis.createEntityFieldMarkersContainer(undefined),\n\t\t\tnew Map([[subTree.placeholderName, subTree]]),\n\t\t\tundefined,\n\t\t)\n\t}\n}\n"],"names":["hasManyRelationMarker"],"mappings":"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"}
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const client = require("@contember/client");
4
3
  const chevrotain = require("chevrotain");
5
4
  const CacheStore = require("./CacheStore.cjs");
6
5
  const QueryLanguageError = require("./QueryLanguageError.cjs");
@@ -235,7 +234,7 @@ const _Parser = class _Parser2 extends chevrotain.EmbeddedActionsParser {
235
234
  ALT: () => {
236
235
  const variable = this.SUBRULE(this.variable);
237
236
  return this.ACTION(() => {
238
- if (typeof variable !== "object" || variable instanceof client.GraphQlBuilder.GraphQlLiteral) {
237
+ if (typeof variable !== "object") {
239
238
  throw new QueryLanguageError.QueryLanguageError(`Invalid filter value '${JSON.stringify(variable)}'`);
240
239
  }
241
240
  return variable;
@@ -413,7 +412,7 @@ const _Parser = class _Parser2 extends chevrotain.EmbeddedActionsParser {
413
412
  } else {
414
413
  if (nestedField in nestedWhere) {
415
414
  const existingWhere = nestedWhere[nestedField];
416
- if (typeof existingWhere === "object" && !(existingWhere instanceof client.GraphQlBuilder.GraphQlLiteral)) {
415
+ if (typeof existingWhere === "object") {
417
416
  nestedWhere = existingWhere;
418
417
  } else {
419
418
  throw new QueryLanguageError.QueryLanguageError(
@@ -545,7 +544,7 @@ const _Parser = class _Parser2 extends chevrotain.EmbeddedActionsParser {
545
544
  ALT: () => {
546
545
  const variableValue = this.SUBRULE(this.variable);
547
546
  return this.ACTION(() => {
548
- if (typeof variableValue === "string" || typeof variableValue === "number" || variableValue instanceof client.GraphQlBuilder.GraphQlLiteral) {
547
+ if (typeof variableValue === "string" || typeof variableValue === "number") {
549
548
  return variableValue;
550
549
  }
551
550
  throw new QueryLanguageError.QueryLanguageError(
@@ -621,8 +620,7 @@ const _Parser = class _Parser2 extends chevrotain.EmbeddedActionsParser {
621
620
  return _Parser2.environment.getSubTree().filter;
622
621
  }
623
622
  if (_Parser2.environment.hasVariable(variableName)) {
624
- const value = _Parser2.environment.getVariable(variableName);
625
- return value instanceof client.GraphQlBuilder.GraphQlLiteral ? value.value : value;
623
+ return _Parser2.environment.getVariable(variableName);
626
624
  }
627
625
  if (_Parser2.environment.hasParameter(variableName)) {
628
626
  return _Parser2.environment.getParameter(variableName);
@@ -1 +1 @@
1
- {"version":3,"file":"Parser.cjs","sources":["../../../../../packages/binding-common/src/queryLanguage/Parser.ts"],"sourcesContent":["import { GraphQlBuilder, Input, Writable } from '@contember/client'\nimport { EmbeddedActionsParser, Lexer } from 'chevrotain'\nimport { Environment } from '../environment'\nimport type { EntityName, FieldName, Filter, OrderBy, UniqueWhere } from '../treeParameters'\nimport type {\n\tParsedHasManyRelation,\n\tParsedHasOneRelation,\n\tParsedQualifiedEntityList,\n\tParsedQualifiedFieldList,\n\tParsedQualifiedSingleEntity,\n\tParsedRelativeEntityList,\n\tParsedRelativeSingleEntity,\n\tParsedRelativeSingleField,\n\tParsedTaggedMap,\n\tParsedTaggedMapEntry,\n\tParsedTaggedMapLiteralValue,\n\tParsedTaggedMapVariableValue,\n\tParsedUnconstrainedQualifiedEntityList,\n\tParsedUnconstrainedQualifiedSingleEntity,\n} from './ParserResults'\nimport { CacheStore } from './CacheStore'\nimport { QueryLanguageError } from './QueryLanguageError'\nimport { tokenList, TokenRegExps, tokens } from './tokenList'\nimport { BindingError } from '../BindingError'\n\n/**\n * TODO:\n * \t- double quoted strings\n * \t- collections (objects & lists)\n * \t- collection operators (e.g. 'in', 'notIn', etc.)\n * \t- filtering toOne\n */\nclass Parser extends EmbeddedActionsParser {\n\tprivate static rawInput: string = ''\n\tprivate static lexer = new Lexer(tokenList)\n\tprivate static parser = new Parser()\n\tprivate static environment: Environment = Environment.create()\n\tprivate static cacheStore: CacheStore = new CacheStore()\n\n\tprivate qualifiedEntityList = this.RULE<ParsedQualifiedEntityList>('qualifiedEntityList', () => {\n\t\tconst entityName = this.SUBRULE(this.entityIdentifier)\n\t\tconst filter = this.OPTION(() => this.SUBRULE(this.nonUniqueWhere))\n\n\t\tconst relativeSingleEntity = this.OPTION1(() => {\n\t\t\tthis.CONSUME(tokens.Dot)\n\t\t\treturn this.SUBRULE(this.relativeSingleEntity)\n\t\t})\n\t\tconst hasOneRelationPath = this.ACTION(() =>\n\t\t\trelativeSingleEntity === undefined ? [] : relativeSingleEntity.hasOneRelationPath,\n\t\t)\n\n\t\treturn {\n\t\t\tentityName,\n\t\t\tfilter,\n\t\t\thasOneRelationPath,\n\t\t}\n\t})\n\n\tprivate qualifiedFieldList = this.RULE<ParsedQualifiedFieldList>('qualifiedFieldList', () => {\n\t\tconst entityName = this.SUBRULE(this.entityIdentifier)\n\t\tconst filter = this.OPTION(() => this.SUBRULE(this.nonUniqueWhere))\n\n\t\tthis.CONSUME(tokens.Dot)\n\n\t\tconst { hasOneRelationPath, field } = this.SUBRULE(this.relativeSingleField)\n\n\t\treturn {\n\t\t\tentityName,\n\t\t\tfield,\n\t\t\tfilter,\n\t\t\thasOneRelationPath,\n\t\t}\n\t})\n\n\tprivate qualifiedSingleEntity = this.RULE<ParsedQualifiedSingleEntity>('qualifiedSingleEntity', () => {\n\t\tconst entityName = this.SUBRULE(this.entityIdentifier)\n\n\t\t// TODO this will probably go away once we support singleton entities\n\t\tconst where = this.SUBRULE(this.uniqueWhere)\n\t\tconst filter = this.OPTION(() => this.SUBRULE(this.nonUniqueWhere))\n\t\tconst relativeSingleEntity = this.OPTION1(() => {\n\t\t\tthis.CONSUME(tokens.Dot)\n\t\t\treturn this.SUBRULE(this.relativeSingleEntity)\n\t\t})\n\n\t\tconst hasOneRelationPath = this.ACTION(() =>\n\t\t\trelativeSingleEntity === undefined ? [] : relativeSingleEntity.hasOneRelationPath,\n\t\t)\n\n\t\treturn {\n\t\t\tentityName,\n\t\t\twhere,\n\t\t\thasOneRelationPath,\n\t\t\tfilter,\n\t\t}\n\t})\n\n\tprivate unconstrainedQualifiedEntityList = this.RULE<ParsedUnconstrainedQualifiedEntityList>(\n\t\t'unconstrainedQualifiedEntityList',\n\t\t() => {\n\t\t\tconst entityName = this.SUBRULE(this.entityIdentifier)\n\t\t\tconst relativeSingleEntity = this.OPTION(() => {\n\t\t\t\tthis.CONSUME(tokens.Dot)\n\t\t\t\treturn this.SUBRULE(this.relativeSingleEntity)\n\t\t\t})\n\n\t\t\tconst hasOneRelationPath = this.ACTION(() =>\n\t\t\t\trelativeSingleEntity === undefined ? [] : relativeSingleEntity.hasOneRelationPath,\n\t\t\t)\n\n\t\t\treturn {\n\t\t\t\tentityName,\n\t\t\t\thasOneRelationPath,\n\t\t\t}\n\t\t},\n\t)\n\n\tprivate unconstrainedQualifiedSingleEntity = this.RULE<ParsedUnconstrainedQualifiedSingleEntity>(\n\t\t'unconstrainedQualifiedSingleEntity',\n\t\t() => {\n\t\t\tconst entityName = this.SUBRULE(this.entityIdentifier)\n\t\t\tconst relativeSingleEntity = this.OPTION1(() => {\n\t\t\t\tthis.CONSUME(tokens.Dot)\n\t\t\t\treturn this.SUBRULE(this.relativeSingleEntity)\n\t\t\t})\n\n\t\t\tconst hasOneRelationPath = this.ACTION(() =>\n\t\t\t\trelativeSingleEntity === undefined ? [] : relativeSingleEntity.hasOneRelationPath,\n\t\t\t)\n\n\t\t\treturn {\n\t\t\t\tentityName,\n\t\t\t\thasOneRelationPath,\n\t\t\t}\n\t\t},\n\t)\n\n\tprivate relativeSingleField = this.RULE<ParsedRelativeSingleField>('relativeSingleField', () => {\n\t\tlet { hasOneRelationPath } = this.SUBRULE(this.relativeSingleEntity)\n\n\t\tconst last = this.ACTION(() => hasOneRelationPath.pop()!)\n\n\t\tthis.ACTION(() => {\n\t\t\tif (last.reducedBy !== undefined || last.filter !== undefined) {\n\t\t\t\tthrow new QueryLanguageError(\n\t\t\t\t\t`Cannot parse '${Parser.rawInput}': the last field '${last.field}' is being reduced or filtered, which, grammatically, makes it a relation but a single field is expected.`,\n\t\t\t\t)\n\t\t\t}\n\t\t})\n\n\t\tconst field = this.ACTION(() => last.field)\n\n\t\treturn {\n\t\t\thasOneRelationPath,\n\t\t\tfield,\n\t\t}\n\t})\n\n\tprivate relativeSingleEntity = this.RULE<ParsedRelativeSingleEntity>('relativeSingleEntity', () => {\n\t\tconst hasOneRelationPath: ParsedHasOneRelation[] = []\n\n\t\tthis.AT_LEAST_ONE_SEP({\n\t\t\tSEP: tokens.Dot,\n\t\t\tDEF: () => {\n\t\t\t\thasOneRelationPath.push(this.SUBRULE(this.hasOneRelation))\n\t\t\t},\n\t\t})\n\n\t\treturn {\n\t\t\thasOneRelationPath,\n\t\t}\n\t})\n\n\tprivate relativeEntityList = this.RULE<ParsedRelativeEntityList>('relativeEntityList', () => {\n\t\tlet { hasOneRelationPath } = this.SUBRULE(this.relativeSingleEntity)\n\n\t\tconst last = this.ACTION(() => hasOneRelationPath.pop()!)\n\n\t\tthis.ACTION(() => {\n\t\t\tif (last.reducedBy !== undefined) {\n\t\t\t\tthrow new QueryLanguageError(\n\t\t\t\t\t`Cannot parse '${Parser.rawInput}': the last field '${last.field}' is being reduced, which, grammatically, makes it a has-one relation but a has-many relation is expected.`,\n\t\t\t\t)\n\t\t\t}\n\t\t})\n\n\t\tconst hasManyRelation = this.ACTION(\n\t\t\t(): ParsedHasManyRelation => ({\n\t\t\t\tfield: last.field,\n\t\t\t\tfilter: last.filter,\n\t\t\t}),\n\t\t)\n\n\t\treturn {\n\t\t\thasOneRelationPath,\n\t\t\thasManyRelation,\n\t\t}\n\t})\n\n\tprivate hasOneRelation = this.RULE<ParsedHasOneRelation>('hasOneRelation', () => {\n\t\tconst fieldName = this.SUBRULE(this.fieldName)\n\t\tconst reducedBy = this.OPTION(() => this.SUBRULE(this.uniqueWhere))\n\t\tconst filter = this.OPTION1(() => this.SUBRULE(this.nonUniqueWhere))\n\t\tconst hasOneRelation: ParsedHasOneRelation = {\n\t\t\tfield: fieldName,\n\t\t\tfilter,\n\t\t\treducedBy,\n\t\t}\n\n\t\treturn hasOneRelation\n\t})\n\n\tprivate nonUniqueWhere: () => Filter = this.RULE('nonUniqueWhere', () => {\n\t\tconst cnfWhere: Filter[] = []\n\n\t\tthis.AT_LEAST_ONE(() => {\n\t\t\tthis.CONSUME(tokens.LeftBracket)\n\n\t\t\tcnfWhere.push(this.SUBRULE(this.disjunction))\n\n\t\t\tthis.CONSUME(tokens.RightBracket)\n\t\t})\n\t\tif (cnfWhere.length === 1) {\n\t\t\treturn cnfWhere[0]\n\t\t}\n\t\treturn {\n\t\t\tand: cnfWhere,\n\t\t}\n\t})\n\n\tprivate disjunction: () => Filter = this.RULE('disjunction', () => {\n\t\tconst conjunctions: Filter[] = []\n\n\t\tthis.AT_LEAST_ONE_SEP({\n\t\t\tSEP: tokens.Or,\n\t\t\tDEF: () => {\n\t\t\t\tconjunctions.push(this.SUBRULE(this.conjunction))\n\t\t\t},\n\t\t})\n\t\tif (conjunctions.length === 1) {\n\t\t\treturn conjunctions[0]\n\t\t}\n\t\treturn {\n\t\t\tor: conjunctions,\n\t\t}\n\t})\n\n\tprivate conjunction: () => Filter = this.RULE('conjunction', () => {\n\t\tconst negations: Filter[] = []\n\n\t\tthis.AT_LEAST_ONE_SEP({\n\t\t\tSEP: tokens.And,\n\t\t\tDEF: () => {\n\t\t\t\tnegations.push(this.SUBRULE(this.negation))\n\t\t\t},\n\t\t})\n\t\tif (negations.length === 1) {\n\t\t\treturn negations[0]\n\t\t}\n\t\treturn {\n\t\t\tand: negations,\n\t\t}\n\t})\n\n\t// TODO this is to naïve and needs rewriting\n\tprivate negation: () => Filter = this.RULE('negation', () => {\n\t\treturn this.OR([\n\t\t\t{\n\t\t\t\tALT: () => {\n\t\t\t\t\tthis.CONSUME(tokens.Not)\n\t\t\t\t\treturn {\n\t\t\t\t\t\tnot: this.SUBRULE(this.filterGroup),\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tALT: () => {\n\t\t\t\t\treturn this.SUBRULE1(this.filterGroup)\n\t\t\t\t},\n\t\t\t},\n\t\t])\n\t})\n\n\tprivate filterGroup: () => Filter = this.RULE('filterGroup', () => {\n\t\treturn this.OR([\n\t\t\t{\n\t\t\t\tALT: () => {\n\t\t\t\t\tthis.CONSUME(tokens.LeftParenthesis)\n\t\t\t\t\tconst subFilter = this.SUBRULE(this.disjunction)\n\t\t\t\t\tthis.CONSUME1(tokens.RightParenthesis)\n\t\t\t\t\treturn subFilter\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tALT: () => this.SUBRULE1(this.filterAtom),\n\t\t\t},\n\t\t])\n\t})\n\n\tprivate filterAtom: () => Filter = this.RULE('filterAtom', () => {\n\t\treturn this.OR([\n\t\t\t{\n\t\t\t\tALT: () => {\n\t\t\t\t\tconst variable = this.SUBRULE(this.variable)\n\t\t\t\t\treturn this.ACTION(() => {\n\t\t\t\t\t\tif (typeof variable !== 'object' || variable instanceof GraphQlBuilder.GraphQlLiteral) {\n\t\t\t\t\t\t\tthrow new QueryLanguageError(`Invalid filter value '${JSON.stringify(variable)}'`)\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn variable\n\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tALT: () => this.SUBRULE1(this.fieldWhere),\n\t\t\t},\n\t\t])\n\t})\n\n\tprivate fieldWhere: () => Parser.AST.FieldWhere = this.RULE('fieldWhere', () => {\n\t\tconst fields: { name: FieldName; modifier?: string }[] = []\n\n\t\tthis.AT_LEAST_ONE_SEP({\n\t\t\tSEP: tokens.Dot,\n\t\t\tDEF: () => {\n\t\t\t\tfields.push(this.SUBRULE(this.fieldIdentifierWithOptionalModifier))\n\t\t\t},\n\t\t})\n\n\t\tconst createFieldWhere = (value: Parser.AST.Condition | Parser.AST.FieldWhere): Parser.AST.FieldWhere => {\n\t\t\treturn this.ACTION(() => {\n\t\t\t\tlet val = value\n\t\t\t\tfor (let i = fields.length - 1; i >= 0; i--) {\n\t\t\t\t\tconst field = fields[i]\n\t\t\t\t\tif (field.modifier === 'none') {\n\t\t\t\t\t\tval = {\n\t\t\t\t\t\t\tnot: {\n\t\t\t\t\t\t\t\t[field.name]: val,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (field.modifier === 'all') {\n\t\t\t\t\t\tval = {\n\t\t\t\t\t\t\tnot: {\n\t\t\t\t\t\t\t\t[field.name]: { not: val },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (!field.modifier || field.modifier === 'some') {\n\t\t\t\t\t\tval = {\n\t\t\t\t\t\t\t[field.name]: val,\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow new QueryLanguageError(`Unknown modifier '${field.modifier}', expected 'none', 'some' or 'all'`)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn val as Parser.AST.FieldWhere\n\t\t\t})\n\t\t}\n\n\n\t\treturn this.OR([\n\t\t\t{\n\t\t\t\tALT: () => {\n\t\t\t\t\tconst condition = this.SUBRULE(this.condition)\n\t\t\t\t\treturn createFieldWhere(condition)\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tALT: () => {\n\t\t\t\t\tconst subWhere = this.SUBRULE(this.nonUniqueWhere)\n\t\t\t\t\treturn createFieldWhere(subWhere)\n\t\t\t\t},\n\t\t\t},\n\t\t])\n\t})\n\n\tprivate condition: () => Parser.AST.Condition = this.RULE('condition', () => {\n\t\tconst operator = this.SUBRULE(this.conditionOperator)\n\t\tconst columnValue = this.SUBRULE(this.columnValue)\n\t\tconst condition: Writable<Parser.AST.Condition> = {}\n\n\t\treturn this.ACTION(() => {\n\t\t\tif (columnValue === null) {\n\t\t\t\tif (operator === 'eq') {\n\t\t\t\t\tcondition.null = true\n\t\t\t\t} else if (operator === 'notEq') {\n\t\t\t\t\tcondition.null = false\n\t\t\t\t} else {\n\t\t\t\t\tthrow new QueryLanguageError(`The null keyword as a right hand operand can only be tested for (in)equality.`)\n\t\t\t\t}\n\t\t\t\treturn condition\n\t\t\t}\n\t\t\tcondition[operator] = columnValue\n\n\t\t\treturn condition\n\t\t})\n\t})\n\n\tprivate conditionOperator: () => Parser.AST.ConditionOperator = this.RULE<Parser.AST.ConditionOperator>(\n\t\t'conditionOperator',\n\t\t() => {\n\t\t\treturn this.OR([\n\t\t\t\t{\n\t\t\t\t\tALT: () => {\n\t\t\t\t\t\tthis.CONSUME(tokens.Equals)\n\t\t\t\t\t\treturn 'eq'\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tALT: () => {\n\t\t\t\t\t\tthis.CONSUME(tokens.NotEquals)\n\t\t\t\t\t\treturn 'notEq'\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tALT: () => {\n\t\t\t\t\t\tthis.CONSUME(tokens.LowerThan)\n\t\t\t\t\t\treturn 'lt'\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tALT: () => {\n\t\t\t\t\t\tthis.CONSUME(tokens.LowerEqual)\n\t\t\t\t\t\treturn 'lte'\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tALT: () => {\n\t\t\t\t\t\tthis.CONSUME(tokens.GreaterThan)\n\t\t\t\t\t\treturn 'gt'\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tALT: () => {\n\t\t\t\t\t\tthis.CONSUME(tokens.GreaterEqual)\n\t\t\t\t\t\treturn 'gte'\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t])\n\t\t},\n\t)\n\n\tprivate columnValue: () => Parser.AST.ColumnValue = this.RULE<Parser.AST.ColumnValue>('columnValue', () => {\n\t\treturn this.OR([\n\t\t\t{\n\t\t\t\tALT: () => {\n\t\t\t\t\tthis.CONSUME(tokens.Null)\n\t\t\t\t\treturn null\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tALT: () => {\n\t\t\t\t\tthis.CONSUME(tokens.True)\n\t\t\t\t\treturn true\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tALT: () => {\n\t\t\t\t\tthis.CONSUME(tokens.False)\n\t\t\t\t\treturn false\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tALT: () => this.SUBRULE(this.primaryValue),\n\t\t\t},\n\t\t])\n\t})\n\n\tprivate uniqueWhere = this.RULE('uniqueWhere', () => {\n\t\tconst where: Writable<UniqueWhere> = {}\n\n\t\tthis.CONSUME(tokens.LeftParenthesis)\n\t\tthis.AT_LEAST_ONE_SEP({\n\t\t\tSEP: tokens.Comma,\n\t\t\tDEF: () => {\n\t\t\t\tconst nestedFields: string[] = []\n\t\t\t\tthis.AT_LEAST_ONE_SEP1({\n\t\t\t\t\tSEP: tokens.Dot,\n\t\t\t\t\tDEF: () => {\n\t\t\t\t\t\tnestedFields.push(this.SUBRULE(this.fieldIdentifier))\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tthis.CONSUME(tokens.Equals)\n\t\t\t\tconst primaryValue = this.SUBRULE<Input.PrimaryValue<GraphQlBuilder.GraphQlLiteral>>(this.primaryValue)\n\n\t\t\t\tthis.ACTION(() => {\n\t\t\t\t\tlet nestedWhere = where\n\t\t\t\t\tfor (let i = 0, len = nestedFields.length; i < len; i++) {\n\t\t\t\t\t\tconst nestedField = nestedFields[i]\n\n\t\t\t\t\t\tconst isLast = len - 1 === i\n\n\t\t\t\t\t\tif (isLast) {\n\t\t\t\t\t\t\tif (nestedField in nestedWhere) {\n\t\t\t\t\t\t\t\tthrow new QueryLanguageError(`Duplicate '${nestedFields.slice(0, i + 1).join('.')}' field`)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tnestedWhere[nestedField] = primaryValue\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (nestedField in nestedWhere) {\n\t\t\t\t\t\t\t\tconst existingWhere = nestedWhere[nestedField]\n\n\t\t\t\t\t\t\t\tif (typeof existingWhere === 'object' && !(existingWhere instanceof GraphQlBuilder.GraphQlLiteral)) {\n\t\t\t\t\t\t\t\t\tnestedWhere = existingWhere\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tthrow new QueryLanguageError(\n\t\t\t\t\t\t\t\t\t\t`Malformed expression: cannot simultaneously treat the '${nestedFields\n\t\t\t\t\t\t\t\t\t\t\t.slice(0, i + 1)\n\t\t\t\t\t\t\t\t\t\t\t.join('.')}' ` + `field as a scalar as well as a relation.`,\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst newWhere = {}\n\t\t\t\t\t\t\t\tnestedWhere[nestedField] = newWhere\n\t\t\t\t\t\t\t\tnestedWhere = newWhere\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t},\n\t\t})\n\t\tthis.CONSUME(tokens.RightParenthesis)\n\n\t\treturn where\n\t})\n\n\tprivate orderBy: () => Input.OrderBy<`${Input.OrderDirection}`>[] = this.RULE<\n\t\tInput.OrderBy<`${Input.OrderDirection}`>[]\n\t>('orderBy', () => {\n\t\tconst order: Input.OrderBy<`${Input.OrderDirection}`>[] = []\n\n\t\tthis.AT_LEAST_ONE_SEP({\n\t\t\tSEP: tokens.Comma,\n\t\t\tDEF: () => {\n\t\t\t\tconst fieldNames: FieldName[] = []\n\t\t\t\tthis.AT_LEAST_ONE_SEP1({\n\t\t\t\t\tSEP: tokens.Dot,\n\t\t\t\t\tDEF: () => {\n\t\t\t\t\t\tfieldNames.push(this.SUBRULE(this.fieldIdentifier))\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tconst literal = this.OPTION(() => this.SUBRULE1(this.identifier))\n\n\t\t\t\tthis.ACTION(() => {\n\t\t\t\t\tlet orderDirection: `${Input.OrderDirection}`\n\t\t\t\t\tif (literal) {\n\t\t\t\t\t\tif (literal !== 'asc' && literal !== 'desc' && literal !== 'ascNullsFirst' && literal !== 'descNullsLast') {\n\t\t\t\t\t\t\tthrow new QueryLanguageError(`The only valid order directions are 'asc', 'desc', 'ascNullsFirst' and 'descNullsLast'.`)\n\t\t\t\t\t\t}\n\t\t\t\t\t\torderDirection = literal\n\t\t\t\t\t} else {\n\t\t\t\t\t\torderDirection = 'asc'\n\t\t\t\t\t}\n\t\t\t\t\tlet orderBy: Input.FieldOrderBy<`${Input.OrderDirection}`> = orderDirection\n\n\t\t\t\t\tfor (let i = fieldNames.length - 1; i >= 0; i--) {\n\t\t\t\t\t\torderBy = { [fieldNames[i]]: orderBy }\n\t\t\t\t\t}\n\t\t\t\t\torder.push(orderBy as Input.OrderBy<`${Input.OrderDirection}`>)\n\t\t\t\t})\n\t\t\t},\n\t\t})\n\n\t\treturn order\n\t})\n\n\tprivate taggedMap: () => ParsedTaggedMap = this.RULE<ParsedTaggedMap>('taggedMap', () => {\n\t\tconst name = this.SUBRULE(this.pageName)\n\t\treturn {\n\t\t\tname,\n\t\t\tentries: this.OPTION(() => this.SUBRULE(this.taggedMapEntries)) ?? [],\n\t\t}\n\t})\n\n\tprivate taggedMapEntries: () => ParsedTaggedMapEntry[] = this.RULE<ParsedTaggedMapEntry[]>('taggedMapEntries', () => {\n\t\tthis.CONSUME(tokens.LeftParenthesis)\n\t\tconst entries: ParsedTaggedMapEntry[] = []\n\t\tthis.AT_LEAST_ONE_SEP({\n\t\t\tSEP: tokens.Comma,\n\t\t\tDEF: () => entries.push(this.SUBRULE(this.taggedMapEntry)),\n\t\t})\n\t\tthis.CONSUME(tokens.RightParenthesis)\n\n\t\treturn entries\n\t})\n\n\tprivate taggedMapEntry: () => ParsedTaggedMapEntry = this.RULE<ParsedTaggedMapEntry>('taggedMapEntry', () => {\n\t\tconst variableName = this.CONSUME(tokens.Identifier).image\n\t\tthis.CONSUME1(tokens.Colon)\n\t\tconst value = this.OR([\n\t\t\t{\n\t\t\t\tALT: () => this.SUBRULE(this.taggedMapLiteralValue),\n\t\t\t},\n\t\t\t{\n\t\t\t\tALT: () => this.SUBRULE(this.taggedMapVariableValue),\n\t\t\t},\n\t\t])\n\n\t\treturn {\n\t\t\tkey: variableName,\n\t\t\tvalue,\n\t\t}\n\t})\n\n\tprivate taggedMapLiteralValue: () => ParsedTaggedMapLiteralValue = this.RULE<ParsedTaggedMapLiteralValue>('taggedMapLiteralValue', () => {\n\t\tconst value = this.OR([\n\t\t\t{\n\t\t\t\tALT: () => this.SUBRULE(this.string),\n\t\t\t},\n\t\t\t{\n\t\t\t\tALT: () => this.SUBRULE(this.number),\n\t\t\t},\n\t\t])\n\n\t\treturn {\n\t\t\ttype: 'literal',\n\t\t\tvalue,\n\t\t}\n\t})\n\n\tprivate taggedMapVariableValue: () => ParsedTaggedMapVariableValue = this.RULE<ParsedTaggedMapVariableValue>('taggedMapVariableValue', () => {\n\t\tconst start = this.CONSUME(tokens.DollarSign)\n\t\tthis.SUBRULE(this.relativeSingleField)\n\t\tconst end = this.LA(0)\n\t\tconst field = this.input.slice(this.input.indexOf(start) + 1, this.input.indexOf(end) + 1).map(it => it.image).join('')\n\n\t\treturn {\n\t\t\ttype: 'variable',\n\t\t\tvalue: field,\n\t\t}\n\t})\n\n\n\tprivate fieldName: () => FieldName = this.RULE<FieldName>('fieldName', () => {\n\t\treturn this.OR([\n\t\t\t{\n\t\t\t\tALT: () => this.SUBRULE(this.fieldIdentifier),\n\t\t\t},\n\t\t])\n\t})\n\n\tprivate primaryValue = this.RULE<Input.PrimaryValue<GraphQlBuilder.GraphQlLiteral>>('primaryValue', () => {\n\t\treturn this.OR([\n\t\t\t{\n\t\t\t\tALT: () => this.SUBRULE(this.string),\n\t\t\t},\n\t\t\t{\n\t\t\t\tALT: () => this.SUBRULE(this.number),\n\t\t\t},\n\t\t\t{\n\t\t\t\tALT: () => this.SUBRULE(this.identifier),\n\t\t\t},\n\t\t\t{\n\t\t\t\tALT: () => {\n\t\t\t\t\tconst variableValue = this.SUBRULE(this.variable)\n\t\t\t\t\treturn this.ACTION(() => {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\ttypeof variableValue === 'string' ||\n\t\t\t\t\t\t\ttypeof variableValue === 'number' ||\n\t\t\t\t\t\t\tvariableValue instanceof GraphQlBuilder.GraphQlLiteral\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn variableValue\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthrow new QueryLanguageError(\n\t\t\t\t\t\t\t`A variable can resolve to a literal, string or a number, not ${typeof variableValue}`,\n\t\t\t\t\t\t)\n\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t},\n\t\t])\n\t})\n\n\tprivate fieldIdentifierWithOptionalModifier: () => { name: FieldName; modifier?: string } = this.RULE('fieldIdentifierWithOptionalModifier', () => {\n\t\tconst fieldIdentifier = this.SUBRULE1(this.fieldIdentifier)\n\t\tconst modifier = this.OPTION(() => {\n\t\t\tthis.CONSUME(tokens.Colon)\n\t\t\treturn this.SUBRULE(this.identifier)\n\t\t})\n\t\treturn { name: fieldIdentifier, modifier }\n\t})\n\n\tprivate fieldIdentifier: () => FieldName = this.RULE('fieldIdentifier', () => {\n\t\treturn this.SUBRULE(this.identifier)\n\t\t// return this.OR([\n\t\t// \t{\n\t\t// \t\tALT: () => this.SUBRULE(this.identifier),\n\t\t// \t},\n\t\t// \t{\n\t\t// \t\tALT: () => {\n\t\t// \t\t\tconst variable = this.SUBRULE(this.variable)\n\t\t// \t\t\treturn this.ACTION(() => {\n\t\t// \t\t\t\tif (!(typeof variable === 'string') || !TokenRegExps.identifier.test(variable)) {\n\t\t// \t\t\t\t\tthrow new QueryLanguageError(`The value \\$${variable} is not a valid field identifier.`)\n\t\t// \t\t\t\t}\n\t\t// \t\t\t\treturn variable\n\t\t// \t\t\t})\n\t\t// \t\t},\n\t\t// \t},\n\t\t// ])\n\t})\n\n\tprivate identifier: () => string = this.RULE('identifier', () => {\n\t\treturn this.OR([\n\t\t\t{\n\t\t\t\tALT: () => this.CONSUME(tokens.Identifier).image,\n\t\t\t},\n\t\t\t{\n\t\t\t\t// TODO this is a temporary hack to allow for literals that start with an uppercase letter… 🙈\n\t\t\t\tALT: () => this.CONSUME(tokens.EntityIdentifier).image,\n\t\t\t},\n\t\t])\n\t})\n\n\tprivate pageName: () => string = this.RULE('pageName', () => {\n\t\tconst parts: string[] = []\n\n\t\tthis.AT_LEAST_ONE_SEP({\n\t\t\tSEP: tokens.Slash,\n\t\t\tDEF: () => parts.push(this.CONSUME(tokens.Identifier).image),\n\t\t})\n\n\t\treturn parts.join('/')\n\t})\n\n\tprivate entityIdentifier: () => EntityName = this.RULE('entityIdentifier', () => {\n\t\treturn this.OR([\n\t\t\t{\n\t\t\t\tALT: () => this.CONSUME(tokens.EntityIdentifier).image,\n\t\t\t},\n\t\t\t{\n\t\t\t\tALT: () => {\n\t\t\t\t\tconst variable = this.SUBRULE(this.variable)\n\t\t\t\t\treturn this.ACTION(() => {\n\t\t\t\t\t\tif (!(typeof variable === 'string') || !TokenRegExps.entityIdentifier.test(variable)) {\n\t\t\t\t\t\t\tthrow new QueryLanguageError(`The value of the variable \\$${variable} is not a valid entity identifier.`)\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn variable\n\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t},\n\t\t])\n\t})\n\n\tprivate string = this.RULE('string', () => {\n\t\tconst image = this.CONSUME(tokens.StringLiteral).image\n\t\treturn image\n\t\t\t.substring(1, image.length - 1)\n\t\t\t.replace(\"\\\\'\", \"'\")\n\t\t\t.replace(`\\\\\"`, `\"`)\n\t\t\t.replace('\\\\b', '\\b')\n\t\t\t.replace('\\\\f', '\\f')\n\t\t\t.replace('\\\\n', '\\n')\n\t\t\t.replace('\\\\r', '\\r')\n\t\t\t.replace('\\\\t', '\\t')\n\t\t\t.replace('\\\\v', '\\v')\n\t})\n\n\tprivate number = this.RULE('number', () => {\n\t\treturn parseFloat(this.CONSUME(tokens.NumberLiteral).image)\n\t})\n\n\tprivate variable = this.RULE<Environment.ResolvedValue>('variable', () => {\n\t\tthis.CONSUME(tokens.DollarSign)\n\t\tconst variableName = this.CONSUME(tokens.Identifier).image\n\n\t\treturn this.ACTION(() => {\n\t\t\tif (import.meta.env.DEV && variableName === 'rootWhereAsFilter') {\n\t\t\t\tconsole.warn('$rootWhereAsFilter is deprecated, use $rootFilter')\n\t\t\t}\n\t\t\tswitch (variableName) {\n\t\t\t\tcase 'rootWhereAsFilter':\n\t\t\t\tcase 'rootFilter':\n\t\t\t\t\treturn Parser.environment.getSubTree().filter\n\t\t\t}\n\n\t\t\tif (Parser.environment.hasVariable(variableName)) {\n\t\t\t\tconst value = Parser.environment.getVariable(variableName)\n\t\t\t\treturn value instanceof GraphQlBuilder.GraphQlLiteral ? value.value : value\n\t\t\t}\n\t\t\tif (Parser.environment.hasParameter(variableName)) {\n\t\t\t\treturn Parser.environment.getParameter(variableName)\n\t\t\t}\n\t\t\tif (Parser.environment.hasDimension(variableName)) {\n\t\t\t\tconst dimensionValue = Parser.environment.getDimension(variableName)\n\t\t\t\tif (dimensionValue.length > 1) {\n\t\t\t\t\tthrow new BindingError(\n\t\t\t\t\t\t`The variable \\$${variableName} resolved to a dimension which exists but contains ${dimensionValue.length} values. It has to contain exactly one. ` +\n\t\t\t\t\t\t`Perhaps you forgot to set the 'maxItems' prop of your DimensionsSwitcher?`,\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\treturn dimensionValue[0]\n\t\t\t}\n\n\t\t\tthrow new QueryLanguageError(`Undefined variable \\$${variableName}.`)\n\t\t})\n\t})\n\n\tprivate constructor() {\n\t\tsuper(tokenList, { outputCst: false, maxLookahead: 1 })\n\t\tthis.performSelfAnalysis()\n\t}\n\n\tpublic static parseQueryLanguageExpression<E extends Parser.EntryPoint>(\n\t\tinput: string,\n\t\tentry: E,\n\t\tenvironment: Environment,\n\t): Parser.ParserResult[E] {\n\t\tconst cached = this.cacheStore.get(environment, entry, input)\n\n\t\tif (cached !== undefined) {\n\t\t\treturn cached\n\t\t}\n\n\t\tconst lexingResult = Parser.lexer.tokenize((Parser.rawInput = input))\n\n\t\tif (lexingResult.errors.length !== 0) {\n\t\t\tthrow new QueryLanguageError(\n\t\t\t\t`Failed to tokenize '${input}'.\\n\\n${lexingResult.errors.map(i => i.message).join('\\n')}`,\n\t\t\t)\n\t\t}\n\n\t\tParser.environment = environment\n\t\tParser.parser.input = lexingResult.tokens\n\n\t\tlet expression: Parser.ParserResult[keyof Parser.ParserResult]\n\n\t\tswitch (entry) {\n\t\t\tcase 'relativeSingleField':\n\t\t\t\texpression = Parser.parser.relativeSingleField()\n\t\t\t\tbreak\n\t\t\tcase 'relativeSingleEntity':\n\t\t\t\texpression = Parser.parser.relativeSingleEntity()\n\t\t\t\tbreak\n\t\t\tcase 'relativeEntityList':\n\t\t\t\texpression = Parser.parser.relativeEntityList()\n\t\t\t\tbreak\n\t\t\tcase 'qualifiedEntityList':\n\t\t\t\texpression = Parser.parser.qualifiedEntityList()\n\t\t\t\tbreak\n\t\t\tcase 'qualifiedFieldList':\n\t\t\t\texpression = Parser.parser.qualifiedFieldList()\n\t\t\t\tbreak\n\t\t\tcase 'qualifiedSingleEntity':\n\t\t\t\texpression = Parser.parser.qualifiedSingleEntity()\n\t\t\t\tbreak\n\t\t\tcase 'unconstrainedQualifiedEntityList':\n\t\t\t\texpression = Parser.parser.unconstrainedQualifiedEntityList()\n\t\t\t\tbreak\n\t\t\tcase 'unconstrainedQualifiedSingleEntity':\n\t\t\t\texpression = Parser.parser.unconstrainedQualifiedSingleEntity()\n\t\t\t\tbreak\n\t\t\tcase 'uniqueWhere':\n\t\t\t\texpression = Parser.parser.uniqueWhere()\n\t\t\t\tbreak\n\t\t\tcase 'filter':\n\t\t\t\texpression = Parser.parser.nonUniqueWhere()\n\t\t\t\tbreak\n\t\t\tcase 'orderBy':\n\t\t\t\texpression = Parser.parser.orderBy()\n\t\t\t\tbreak\n\t\t\tcase 'taggedMap':\n\t\t\t\texpression = Parser.parser.taggedMap()\n\t\t\t\tbreak\n\t\t\tcase 'columnValue':\n\t\t\t\texpression = Parser.parser.columnValue()\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tthrow new QueryLanguageError(`Not implemented entry point '${entry}'`)\n\t\t}\n\n\t\tif (Parser.parser.errors.length !== 0) {\n\t\t\tthrow new QueryLanguageError(\n\t\t\t\t`Failed to parse '${input}'.\\n\\n${Parser.parser.errors.map(i => i.message).join('\\n')}`,\n\t\t\t)\n\t\t}\n\n\t\tthis.cacheStore.set(environment, entry, input, expression as Parser.ParserResult[E])\n\n\t\treturn expression as Parser.ParserResult[E]\n\t}\n}\n\nnamespace Parser {\n\texport namespace AST {\n\t\texport type FieldWhere = Input.FieldWhere<Condition>\n\n\t\texport type ColumnValue = Input.ColumnValue<GraphQlBuilder.GraphQlLiteral>\n\n\t\texport type Condition = Input.Condition<ColumnValue>\n\n\t\texport type ConditionOperator = keyof Pick<Condition, 'eq' | 'notEq' | 'lt' | 'lte' | 'gt' | 'gte'>\n\t}\n\n\texport interface ParserResult {\n\t\tqualifiedEntityList: ParsedQualifiedEntityList // E.g. Author[age < 123].son.sisters(name = 'Jane')\n\t\tqualifiedFieldList: ParsedQualifiedFieldList // E.g. Author[age < 123].son.sister.name\n\t\tqualifiedSingleEntity: ParsedQualifiedSingleEntity // E.g. Author(id = 123).son.sister\n\t\tunconstrainedQualifiedEntityList: ParsedUnconstrainedQualifiedEntityList // E.g. Author.son.sister\n\t\tunconstrainedQualifiedSingleEntity: ParsedUnconstrainedQualifiedSingleEntity // E.g. Author.son.sister\n\t\trelativeSingleField: ParsedRelativeSingleField // E.g. authors(id = 123).person.name\n\t\trelativeSingleEntity: ParsedRelativeSingleEntity // E.g. localesByLocale(locale.slug = en)\n\t\trelativeEntityList: ParsedRelativeEntityList // E.g. genres(slug = 'sciFi').authors[age < 123]\n\t\tuniqueWhere: UniqueWhere // E.g. (author.mother.id = 123)\n\t\tfilter: Filter // E.g. [author.son.age < 123]\n\t\torderBy: OrderBy // E.g. items.order asc, items.content.name asc\n\t\ttaggedMap: ParsedTaggedMap // E.g editUser(id: $entity.id, foo: 'bar')\n\t\tcolumnValue: AST.ColumnValue\n\t}\n\n\texport type EntryPoint = keyof ParserResult\n}\n\nexport { Parser }\n"],"names":["_Parser","EmbeddedActionsParser","tokenList","tokens","QueryLanguageError","GraphQlBuilder","TokenRegExps","BindingError","Lexer","Environment","CacheStore"],"mappings":"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"}
1
+ {"version":3,"file":"Parser.cjs","sources":["../../../../../packages/binding-common/src/queryLanguage/Parser.ts"],"sourcesContent":["import { Input, Writable } from '@contember/client'\nimport { EmbeddedActionsParser, Lexer } from 'chevrotain'\nimport { Environment } from '../environment'\nimport type { EntityName, FieldName, Filter, OrderBy, UniqueWhere } from '../treeParameters'\nimport type {\n\tParsedHasManyRelation,\n\tParsedHasOneRelation,\n\tParsedQualifiedEntityList,\n\tParsedQualifiedFieldList,\n\tParsedQualifiedSingleEntity,\n\tParsedRelativeEntityList,\n\tParsedRelativeSingleEntity,\n\tParsedRelativeSingleField,\n\tParsedTaggedMap,\n\tParsedTaggedMapEntry,\n\tParsedTaggedMapLiteralValue,\n\tParsedTaggedMapVariableValue,\n\tParsedUnconstrainedQualifiedEntityList,\n\tParsedUnconstrainedQualifiedSingleEntity,\n} from './ParserResults'\nimport { CacheStore } from './CacheStore'\nimport { QueryLanguageError } from './QueryLanguageError'\nimport { tokenList, TokenRegExps, tokens } from './tokenList'\nimport { BindingError } from '../BindingError'\n\n/**\n * TODO:\n * \t- double quoted strings\n * \t- collections (objects & lists)\n * \t- collection operators (e.g. 'in', 'notIn', etc.)\n * \t- filtering toOne\n */\nclass Parser extends EmbeddedActionsParser {\n\tprivate static rawInput: string = ''\n\tprivate static lexer = new Lexer(tokenList)\n\tprivate static parser = new Parser()\n\tprivate static environment: Environment = Environment.create()\n\tprivate static cacheStore: CacheStore = new CacheStore()\n\n\tprivate qualifiedEntityList = this.RULE<ParsedQualifiedEntityList>('qualifiedEntityList', () => {\n\t\tconst entityName = this.SUBRULE(this.entityIdentifier)\n\t\tconst filter = this.OPTION(() => this.SUBRULE(this.nonUniqueWhere))\n\n\t\tconst relativeSingleEntity = this.OPTION1(() => {\n\t\t\tthis.CONSUME(tokens.Dot)\n\t\t\treturn this.SUBRULE(this.relativeSingleEntity)\n\t\t})\n\t\tconst hasOneRelationPath = this.ACTION(() =>\n\t\t\trelativeSingleEntity === undefined ? [] : relativeSingleEntity.hasOneRelationPath,\n\t\t)\n\n\t\treturn {\n\t\t\tentityName,\n\t\t\tfilter,\n\t\t\thasOneRelationPath,\n\t\t}\n\t})\n\n\tprivate qualifiedFieldList = this.RULE<ParsedQualifiedFieldList>('qualifiedFieldList', () => {\n\t\tconst entityName = this.SUBRULE(this.entityIdentifier)\n\t\tconst filter = this.OPTION(() => this.SUBRULE(this.nonUniqueWhere))\n\n\t\tthis.CONSUME(tokens.Dot)\n\n\t\tconst { hasOneRelationPath, field } = this.SUBRULE(this.relativeSingleField)\n\n\t\treturn {\n\t\t\tentityName,\n\t\t\tfield,\n\t\t\tfilter,\n\t\t\thasOneRelationPath,\n\t\t}\n\t})\n\n\tprivate qualifiedSingleEntity = this.RULE<ParsedQualifiedSingleEntity>('qualifiedSingleEntity', () => {\n\t\tconst entityName = this.SUBRULE(this.entityIdentifier)\n\n\t\t// TODO this will probably go away once we support singleton entities\n\t\tconst where = this.SUBRULE(this.uniqueWhere)\n\t\tconst filter = this.OPTION(() => this.SUBRULE(this.nonUniqueWhere))\n\t\tconst relativeSingleEntity = this.OPTION1(() => {\n\t\t\tthis.CONSUME(tokens.Dot)\n\t\t\treturn this.SUBRULE(this.relativeSingleEntity)\n\t\t})\n\n\t\tconst hasOneRelationPath = this.ACTION(() =>\n\t\t\trelativeSingleEntity === undefined ? [] : relativeSingleEntity.hasOneRelationPath,\n\t\t)\n\n\t\treturn {\n\t\t\tentityName,\n\t\t\twhere,\n\t\t\thasOneRelationPath,\n\t\t\tfilter,\n\t\t}\n\t})\n\n\tprivate unconstrainedQualifiedEntityList = this.RULE<ParsedUnconstrainedQualifiedEntityList>(\n\t\t'unconstrainedQualifiedEntityList',\n\t\t() => {\n\t\t\tconst entityName = this.SUBRULE(this.entityIdentifier)\n\t\t\tconst relativeSingleEntity = this.OPTION(() => {\n\t\t\t\tthis.CONSUME(tokens.Dot)\n\t\t\t\treturn this.SUBRULE(this.relativeSingleEntity)\n\t\t\t})\n\n\t\t\tconst hasOneRelationPath = this.ACTION(() =>\n\t\t\t\trelativeSingleEntity === undefined ? [] : relativeSingleEntity.hasOneRelationPath,\n\t\t\t)\n\n\t\t\treturn {\n\t\t\t\tentityName,\n\t\t\t\thasOneRelationPath,\n\t\t\t}\n\t\t},\n\t)\n\n\tprivate unconstrainedQualifiedSingleEntity = this.RULE<ParsedUnconstrainedQualifiedSingleEntity>(\n\t\t'unconstrainedQualifiedSingleEntity',\n\t\t() => {\n\t\t\tconst entityName = this.SUBRULE(this.entityIdentifier)\n\t\t\tconst relativeSingleEntity = this.OPTION1(() => {\n\t\t\t\tthis.CONSUME(tokens.Dot)\n\t\t\t\treturn this.SUBRULE(this.relativeSingleEntity)\n\t\t\t})\n\n\t\t\tconst hasOneRelationPath = this.ACTION(() =>\n\t\t\t\trelativeSingleEntity === undefined ? [] : relativeSingleEntity.hasOneRelationPath,\n\t\t\t)\n\n\t\t\treturn {\n\t\t\t\tentityName,\n\t\t\t\thasOneRelationPath,\n\t\t\t}\n\t\t},\n\t)\n\n\tprivate relativeSingleField = this.RULE<ParsedRelativeSingleField>('relativeSingleField', () => {\n\t\tlet { hasOneRelationPath } = this.SUBRULE(this.relativeSingleEntity)\n\n\t\tconst last = this.ACTION(() => hasOneRelationPath.pop()!)\n\n\t\tthis.ACTION(() => {\n\t\t\tif (last.reducedBy !== undefined || last.filter !== undefined) {\n\t\t\t\tthrow new QueryLanguageError(\n\t\t\t\t\t`Cannot parse '${Parser.rawInput}': the last field '${last.field}' is being reduced or filtered, which, grammatically, makes it a relation but a single field is expected.`,\n\t\t\t\t)\n\t\t\t}\n\t\t})\n\n\t\tconst field = this.ACTION(() => last.field)\n\n\t\treturn {\n\t\t\thasOneRelationPath,\n\t\t\tfield,\n\t\t}\n\t})\n\n\tprivate relativeSingleEntity = this.RULE<ParsedRelativeSingleEntity>('relativeSingleEntity', () => {\n\t\tconst hasOneRelationPath: ParsedHasOneRelation[] = []\n\n\t\tthis.AT_LEAST_ONE_SEP({\n\t\t\tSEP: tokens.Dot,\n\t\t\tDEF: () => {\n\t\t\t\thasOneRelationPath.push(this.SUBRULE(this.hasOneRelation))\n\t\t\t},\n\t\t})\n\n\t\treturn {\n\t\t\thasOneRelationPath,\n\t\t}\n\t})\n\n\tprivate relativeEntityList = this.RULE<ParsedRelativeEntityList>('relativeEntityList', () => {\n\t\tlet { hasOneRelationPath } = this.SUBRULE(this.relativeSingleEntity)\n\n\t\tconst last = this.ACTION(() => hasOneRelationPath.pop()!)\n\n\t\tthis.ACTION(() => {\n\t\t\tif (last.reducedBy !== undefined) {\n\t\t\t\tthrow new QueryLanguageError(\n\t\t\t\t\t`Cannot parse '${Parser.rawInput}': the last field '${last.field}' is being reduced, which, grammatically, makes it a has-one relation but a has-many relation is expected.`,\n\t\t\t\t)\n\t\t\t}\n\t\t})\n\n\t\tconst hasManyRelation = this.ACTION(\n\t\t\t(): ParsedHasManyRelation => ({\n\t\t\t\tfield: last.field,\n\t\t\t\tfilter: last.filter,\n\t\t\t}),\n\t\t)\n\n\t\treturn {\n\t\t\thasOneRelationPath,\n\t\t\thasManyRelation,\n\t\t}\n\t})\n\n\tprivate hasOneRelation = this.RULE<ParsedHasOneRelation>('hasOneRelation', () => {\n\t\tconst fieldName = this.SUBRULE(this.fieldName)\n\t\tconst reducedBy = this.OPTION(() => this.SUBRULE(this.uniqueWhere))\n\t\tconst filter = this.OPTION1(() => this.SUBRULE(this.nonUniqueWhere))\n\t\tconst hasOneRelation: ParsedHasOneRelation = {\n\t\t\tfield: fieldName,\n\t\t\tfilter,\n\t\t\treducedBy,\n\t\t}\n\n\t\treturn hasOneRelation\n\t})\n\n\tprivate nonUniqueWhere: () => Filter = this.RULE('nonUniqueWhere', () => {\n\t\tconst cnfWhere: Filter[] = []\n\n\t\tthis.AT_LEAST_ONE(() => {\n\t\t\tthis.CONSUME(tokens.LeftBracket)\n\n\t\t\tcnfWhere.push(this.SUBRULE(this.disjunction))\n\n\t\t\tthis.CONSUME(tokens.RightBracket)\n\t\t})\n\t\tif (cnfWhere.length === 1) {\n\t\t\treturn cnfWhere[0]\n\t\t}\n\t\treturn {\n\t\t\tand: cnfWhere,\n\t\t}\n\t})\n\n\tprivate disjunction: () => Filter = this.RULE('disjunction', () => {\n\t\tconst conjunctions: Filter[] = []\n\n\t\tthis.AT_LEAST_ONE_SEP({\n\t\t\tSEP: tokens.Or,\n\t\t\tDEF: () => {\n\t\t\t\tconjunctions.push(this.SUBRULE(this.conjunction))\n\t\t\t},\n\t\t})\n\t\tif (conjunctions.length === 1) {\n\t\t\treturn conjunctions[0]\n\t\t}\n\t\treturn {\n\t\t\tor: conjunctions,\n\t\t}\n\t})\n\n\tprivate conjunction: () => Filter = this.RULE('conjunction', () => {\n\t\tconst negations: Filter[] = []\n\n\t\tthis.AT_LEAST_ONE_SEP({\n\t\t\tSEP: tokens.And,\n\t\t\tDEF: () => {\n\t\t\t\tnegations.push(this.SUBRULE(this.negation))\n\t\t\t},\n\t\t})\n\t\tif (negations.length === 1) {\n\t\t\treturn negations[0]\n\t\t}\n\t\treturn {\n\t\t\tand: negations,\n\t\t}\n\t})\n\n\t// TODO this is to naïve and needs rewriting\n\tprivate negation: () => Filter = this.RULE('negation', () => {\n\t\treturn this.OR([\n\t\t\t{\n\t\t\t\tALT: () => {\n\t\t\t\t\tthis.CONSUME(tokens.Not)\n\t\t\t\t\treturn {\n\t\t\t\t\t\tnot: this.SUBRULE(this.filterGroup),\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tALT: () => {\n\t\t\t\t\treturn this.SUBRULE1(this.filterGroup)\n\t\t\t\t},\n\t\t\t},\n\t\t])\n\t})\n\n\tprivate filterGroup: () => Filter = this.RULE('filterGroup', () => {\n\t\treturn this.OR([\n\t\t\t{\n\t\t\t\tALT: () => {\n\t\t\t\t\tthis.CONSUME(tokens.LeftParenthesis)\n\t\t\t\t\tconst subFilter = this.SUBRULE(this.disjunction)\n\t\t\t\t\tthis.CONSUME1(tokens.RightParenthesis)\n\t\t\t\t\treturn subFilter\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tALT: () => this.SUBRULE1(this.filterAtom),\n\t\t\t},\n\t\t])\n\t})\n\n\tprivate filterAtom: () => Filter = this.RULE('filterAtom', () => {\n\t\treturn this.OR([\n\t\t\t{\n\t\t\t\tALT: () => {\n\t\t\t\t\tconst variable = this.SUBRULE(this.variable)\n\t\t\t\t\treturn this.ACTION(() => {\n\t\t\t\t\t\tif (typeof variable !== 'object') {\n\t\t\t\t\t\t\tthrow new QueryLanguageError(`Invalid filter value '${JSON.stringify(variable)}'`)\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn variable\n\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tALT: () => this.SUBRULE1(this.fieldWhere),\n\t\t\t},\n\t\t])\n\t})\n\n\tprivate fieldWhere: () => Parser.AST.FieldWhere = this.RULE('fieldWhere', () => {\n\t\tconst fields: { name: FieldName; modifier?: string }[] = []\n\n\t\tthis.AT_LEAST_ONE_SEP({\n\t\t\tSEP: tokens.Dot,\n\t\t\tDEF: () => {\n\t\t\t\tfields.push(this.SUBRULE(this.fieldIdentifierWithOptionalModifier))\n\t\t\t},\n\t\t})\n\n\t\tconst createFieldWhere = (value: Parser.AST.Condition | Parser.AST.FieldWhere): Parser.AST.FieldWhere => {\n\t\t\treturn this.ACTION(() => {\n\t\t\t\tlet val = value\n\t\t\t\tfor (let i = fields.length - 1; i >= 0; i--) {\n\t\t\t\t\tconst field = fields[i]\n\t\t\t\t\tif (field.modifier === 'none') {\n\t\t\t\t\t\tval = {\n\t\t\t\t\t\t\tnot: {\n\t\t\t\t\t\t\t\t[field.name]: val,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (field.modifier === 'all') {\n\t\t\t\t\t\tval = {\n\t\t\t\t\t\t\tnot: {\n\t\t\t\t\t\t\t\t[field.name]: { not: val },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (!field.modifier || field.modifier === 'some') {\n\t\t\t\t\t\tval = {\n\t\t\t\t\t\t\t[field.name]: val,\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow new QueryLanguageError(`Unknown modifier '${field.modifier}', expected 'none', 'some' or 'all'`)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn val as Parser.AST.FieldWhere\n\t\t\t})\n\t\t}\n\n\n\t\treturn this.OR([\n\t\t\t{\n\t\t\t\tALT: () => {\n\t\t\t\t\tconst condition = this.SUBRULE(this.condition)\n\t\t\t\t\treturn createFieldWhere(condition)\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tALT: () => {\n\t\t\t\t\tconst subWhere = this.SUBRULE(this.nonUniqueWhere)\n\t\t\t\t\treturn createFieldWhere(subWhere)\n\t\t\t\t},\n\t\t\t},\n\t\t])\n\t})\n\n\tprivate condition: () => Parser.AST.Condition = this.RULE('condition', () => {\n\t\tconst operator = this.SUBRULE(this.conditionOperator)\n\t\tconst columnValue = this.SUBRULE(this.columnValue)\n\t\tconst condition: Writable<Parser.AST.Condition> = {}\n\n\t\treturn this.ACTION(() => {\n\t\t\tif (columnValue === null) {\n\t\t\t\tif (operator === 'eq') {\n\t\t\t\t\tcondition.null = true\n\t\t\t\t} else if (operator === 'notEq') {\n\t\t\t\t\tcondition.null = false\n\t\t\t\t} else {\n\t\t\t\t\tthrow new QueryLanguageError(`The null keyword as a right hand operand can only be tested for (in)equality.`)\n\t\t\t\t}\n\t\t\t\treturn condition\n\t\t\t}\n\t\t\tcondition[operator] = columnValue\n\n\t\t\treturn condition\n\t\t})\n\t})\n\n\tprivate conditionOperator: () => Parser.AST.ConditionOperator = this.RULE<Parser.AST.ConditionOperator>(\n\t\t'conditionOperator',\n\t\t() => {\n\t\t\treturn this.OR([\n\t\t\t\t{\n\t\t\t\t\tALT: () => {\n\t\t\t\t\t\tthis.CONSUME(tokens.Equals)\n\t\t\t\t\t\treturn 'eq'\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tALT: () => {\n\t\t\t\t\t\tthis.CONSUME(tokens.NotEquals)\n\t\t\t\t\t\treturn 'notEq'\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tALT: () => {\n\t\t\t\t\t\tthis.CONSUME(tokens.LowerThan)\n\t\t\t\t\t\treturn 'lt'\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tALT: () => {\n\t\t\t\t\t\tthis.CONSUME(tokens.LowerEqual)\n\t\t\t\t\t\treturn 'lte'\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tALT: () => {\n\t\t\t\t\t\tthis.CONSUME(tokens.GreaterThan)\n\t\t\t\t\t\treturn 'gt'\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tALT: () => {\n\t\t\t\t\t\tthis.CONSUME(tokens.GreaterEqual)\n\t\t\t\t\t\treturn 'gte'\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t])\n\t\t},\n\t)\n\n\tprivate columnValue: () => Parser.AST.ColumnValue = this.RULE<Parser.AST.ColumnValue>('columnValue', () => {\n\t\treturn this.OR([\n\t\t\t{\n\t\t\t\tALT: () => {\n\t\t\t\t\tthis.CONSUME(tokens.Null)\n\t\t\t\t\treturn null\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tALT: () => {\n\t\t\t\t\tthis.CONSUME(tokens.True)\n\t\t\t\t\treturn true\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tALT: () => {\n\t\t\t\t\tthis.CONSUME(tokens.False)\n\t\t\t\t\treturn false\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tALT: () => this.SUBRULE(this.primaryValue),\n\t\t\t},\n\t\t])\n\t})\n\n\tprivate uniqueWhere = this.RULE('uniqueWhere', () => {\n\t\tconst where: Writable<UniqueWhere> = {}\n\n\t\tthis.CONSUME(tokens.LeftParenthesis)\n\t\tthis.AT_LEAST_ONE_SEP({\n\t\t\tSEP: tokens.Comma,\n\t\t\tDEF: () => {\n\t\t\t\tconst nestedFields: string[] = []\n\t\t\t\tthis.AT_LEAST_ONE_SEP1({\n\t\t\t\t\tSEP: tokens.Dot,\n\t\t\t\t\tDEF: () => {\n\t\t\t\t\t\tnestedFields.push(this.SUBRULE(this.fieldIdentifier))\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tthis.CONSUME(tokens.Equals)\n\t\t\t\tconst primaryValue = this.SUBRULE<Input.PrimaryValue>(this.primaryValue)\n\n\t\t\t\tthis.ACTION(() => {\n\t\t\t\t\tlet nestedWhere = where\n\t\t\t\t\tfor (let i = 0, len = nestedFields.length; i < len; i++) {\n\t\t\t\t\t\tconst nestedField = nestedFields[i]\n\n\t\t\t\t\t\tconst isLast = len - 1 === i\n\n\t\t\t\t\t\tif (isLast) {\n\t\t\t\t\t\t\tif (nestedField in nestedWhere) {\n\t\t\t\t\t\t\t\tthrow new QueryLanguageError(`Duplicate '${nestedFields.slice(0, i + 1).join('.')}' field`)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tnestedWhere[nestedField] = primaryValue\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (nestedField in nestedWhere) {\n\t\t\t\t\t\t\t\tconst existingWhere = nestedWhere[nestedField]\n\n\t\t\t\t\t\t\t\tif (typeof existingWhere === 'object') {\n\t\t\t\t\t\t\t\t\tnestedWhere = existingWhere\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tthrow new QueryLanguageError(\n\t\t\t\t\t\t\t\t\t\t`Malformed expression: cannot simultaneously treat the '${nestedFields\n\t\t\t\t\t\t\t\t\t\t\t.slice(0, i + 1)\n\t\t\t\t\t\t\t\t\t\t\t.join('.')}' ` + `field as a scalar as well as a relation.`,\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst newWhere = {}\n\t\t\t\t\t\t\t\tnestedWhere[nestedField] = newWhere\n\t\t\t\t\t\t\t\tnestedWhere = newWhere\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t},\n\t\t})\n\t\tthis.CONSUME(tokens.RightParenthesis)\n\n\t\treturn where\n\t})\n\n\tprivate orderBy: () => Input.OrderBy<`${Input.OrderDirection}`>[] = this.RULE<\n\t\tInput.OrderBy<`${Input.OrderDirection}`>[]\n\t>('orderBy', () => {\n\t\tconst order: Input.OrderBy<`${Input.OrderDirection}`>[] = []\n\n\t\tthis.AT_LEAST_ONE_SEP({\n\t\t\tSEP: tokens.Comma,\n\t\t\tDEF: () => {\n\t\t\t\tconst fieldNames: FieldName[] = []\n\t\t\t\tthis.AT_LEAST_ONE_SEP1({\n\t\t\t\t\tSEP: tokens.Dot,\n\t\t\t\t\tDEF: () => {\n\t\t\t\t\t\tfieldNames.push(this.SUBRULE(this.fieldIdentifier))\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tconst literal = this.OPTION(() => this.SUBRULE1(this.identifier))\n\n\t\t\t\tthis.ACTION(() => {\n\t\t\t\t\tlet orderDirection: `${Input.OrderDirection}`\n\t\t\t\t\tif (literal) {\n\t\t\t\t\t\tif (literal !== 'asc' && literal !== 'desc' && literal !== 'ascNullsFirst' && literal !== 'descNullsLast') {\n\t\t\t\t\t\t\tthrow new QueryLanguageError(`The only valid order directions are 'asc', 'desc', 'ascNullsFirst' and 'descNullsLast'.`)\n\t\t\t\t\t\t}\n\t\t\t\t\t\torderDirection = literal\n\t\t\t\t\t} else {\n\t\t\t\t\t\torderDirection = 'asc'\n\t\t\t\t\t}\n\t\t\t\t\tlet orderBy: Input.FieldOrderBy<`${Input.OrderDirection}`> = orderDirection\n\n\t\t\t\t\tfor (let i = fieldNames.length - 1; i >= 0; i--) {\n\t\t\t\t\t\torderBy = { [fieldNames[i]]: orderBy }\n\t\t\t\t\t}\n\t\t\t\t\torder.push(orderBy as Input.OrderBy<`${Input.OrderDirection}`>)\n\t\t\t\t})\n\t\t\t},\n\t\t})\n\n\t\treturn order\n\t})\n\n\tprivate taggedMap: () => ParsedTaggedMap = this.RULE<ParsedTaggedMap>('taggedMap', () => {\n\t\tconst name = this.SUBRULE(this.pageName)\n\t\treturn {\n\t\t\tname,\n\t\t\tentries: this.OPTION(() => this.SUBRULE(this.taggedMapEntries)) ?? [],\n\t\t}\n\t})\n\n\tprivate taggedMapEntries: () => ParsedTaggedMapEntry[] = this.RULE<ParsedTaggedMapEntry[]>('taggedMapEntries', () => {\n\t\tthis.CONSUME(tokens.LeftParenthesis)\n\t\tconst entries: ParsedTaggedMapEntry[] = []\n\t\tthis.AT_LEAST_ONE_SEP({\n\t\t\tSEP: tokens.Comma,\n\t\t\tDEF: () => entries.push(this.SUBRULE(this.taggedMapEntry)),\n\t\t})\n\t\tthis.CONSUME(tokens.RightParenthesis)\n\n\t\treturn entries\n\t})\n\n\tprivate taggedMapEntry: () => ParsedTaggedMapEntry = this.RULE<ParsedTaggedMapEntry>('taggedMapEntry', () => {\n\t\tconst variableName = this.CONSUME(tokens.Identifier).image\n\t\tthis.CONSUME1(tokens.Colon)\n\t\tconst value = this.OR([\n\t\t\t{\n\t\t\t\tALT: () => this.SUBRULE(this.taggedMapLiteralValue),\n\t\t\t},\n\t\t\t{\n\t\t\t\tALT: () => this.SUBRULE(this.taggedMapVariableValue),\n\t\t\t},\n\t\t])\n\n\t\treturn {\n\t\t\tkey: variableName,\n\t\t\tvalue,\n\t\t}\n\t})\n\n\tprivate taggedMapLiteralValue: () => ParsedTaggedMapLiteralValue = this.RULE<ParsedTaggedMapLiteralValue>('taggedMapLiteralValue', () => {\n\t\tconst value = this.OR([\n\t\t\t{\n\t\t\t\tALT: () => this.SUBRULE(this.string),\n\t\t\t},\n\t\t\t{\n\t\t\t\tALT: () => this.SUBRULE(this.number),\n\t\t\t},\n\t\t])\n\n\t\treturn {\n\t\t\ttype: 'literal',\n\t\t\tvalue,\n\t\t}\n\t})\n\n\tprivate taggedMapVariableValue: () => ParsedTaggedMapVariableValue = this.RULE<ParsedTaggedMapVariableValue>('taggedMapVariableValue', () => {\n\t\tconst start = this.CONSUME(tokens.DollarSign)\n\t\tthis.SUBRULE(this.relativeSingleField)\n\t\tconst end = this.LA(0)\n\t\tconst field = this.input.slice(this.input.indexOf(start) + 1, this.input.indexOf(end) + 1).map(it => it.image).join('')\n\n\t\treturn {\n\t\t\ttype: 'variable',\n\t\t\tvalue: field,\n\t\t}\n\t})\n\n\n\tprivate fieldName: () => FieldName = this.RULE<FieldName>('fieldName', () => {\n\t\treturn this.OR([\n\t\t\t{\n\t\t\t\tALT: () => this.SUBRULE(this.fieldIdentifier),\n\t\t\t},\n\t\t])\n\t})\n\n\tprivate primaryValue = this.RULE<Input.PrimaryValue>('primaryValue', () => {\n\t\treturn this.OR([\n\t\t\t{\n\t\t\t\tALT: () => this.SUBRULE(this.string),\n\t\t\t},\n\t\t\t{\n\t\t\t\tALT: () => this.SUBRULE(this.number),\n\t\t\t},\n\t\t\t{\n\t\t\t\tALT: () => this.SUBRULE(this.identifier),\n\t\t\t},\n\t\t\t{\n\t\t\t\tALT: () => {\n\t\t\t\t\tconst variableValue = this.SUBRULE(this.variable)\n\t\t\t\t\treturn this.ACTION(() => {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\ttypeof variableValue === 'string' ||\n\t\t\t\t\t\t\ttypeof variableValue === 'number'\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn variableValue\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthrow new QueryLanguageError(\n\t\t\t\t\t\t\t`A variable can resolve to a literal, string or a number, not ${typeof variableValue}`,\n\t\t\t\t\t\t)\n\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t},\n\t\t])\n\t})\n\n\tprivate fieldIdentifierWithOptionalModifier: () => { name: FieldName; modifier?: string } = this.RULE('fieldIdentifierWithOptionalModifier', () => {\n\t\tconst fieldIdentifier = this.SUBRULE1(this.fieldIdentifier)\n\t\tconst modifier = this.OPTION(() => {\n\t\t\tthis.CONSUME(tokens.Colon)\n\t\t\treturn this.SUBRULE(this.identifier)\n\t\t})\n\t\treturn { name: fieldIdentifier, modifier }\n\t})\n\n\tprivate fieldIdentifier: () => FieldName = this.RULE('fieldIdentifier', () => {\n\t\treturn this.SUBRULE(this.identifier)\n\t\t// return this.OR([\n\t\t// \t{\n\t\t// \t\tALT: () => this.SUBRULE(this.identifier),\n\t\t// \t},\n\t\t// \t{\n\t\t// \t\tALT: () => {\n\t\t// \t\t\tconst variable = this.SUBRULE(this.variable)\n\t\t// \t\t\treturn this.ACTION(() => {\n\t\t// \t\t\t\tif (!(typeof variable === 'string') || !TokenRegExps.identifier.test(variable)) {\n\t\t// \t\t\t\t\tthrow new QueryLanguageError(`The value \\$${variable} is not a valid field identifier.`)\n\t\t// \t\t\t\t}\n\t\t// \t\t\t\treturn variable\n\t\t// \t\t\t})\n\t\t// \t\t},\n\t\t// \t},\n\t\t// ])\n\t})\n\n\tprivate identifier: () => string = this.RULE('identifier', () => {\n\t\treturn this.OR([\n\t\t\t{\n\t\t\t\tALT: () => this.CONSUME(tokens.Identifier).image,\n\t\t\t},\n\t\t\t{\n\t\t\t\t// TODO this is a temporary hack to allow for literals that start with an uppercase letter… 🙈\n\t\t\t\tALT: () => this.CONSUME(tokens.EntityIdentifier).image,\n\t\t\t},\n\t\t])\n\t})\n\n\tprivate pageName: () => string = this.RULE('pageName', () => {\n\t\tconst parts: string[] = []\n\n\t\tthis.AT_LEAST_ONE_SEP({\n\t\t\tSEP: tokens.Slash,\n\t\t\tDEF: () => parts.push(this.CONSUME(tokens.Identifier).image),\n\t\t})\n\n\t\treturn parts.join('/')\n\t})\n\n\tprivate entityIdentifier: () => EntityName = this.RULE('entityIdentifier', () => {\n\t\treturn this.OR([\n\t\t\t{\n\t\t\t\tALT: () => this.CONSUME(tokens.EntityIdentifier).image,\n\t\t\t},\n\t\t\t{\n\t\t\t\tALT: () => {\n\t\t\t\t\tconst variable = this.SUBRULE(this.variable)\n\t\t\t\t\treturn this.ACTION(() => {\n\t\t\t\t\t\tif (!(typeof variable === 'string') || !TokenRegExps.entityIdentifier.test(variable)) {\n\t\t\t\t\t\t\tthrow new QueryLanguageError(`The value of the variable \\$${variable} is not a valid entity identifier.`)\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn variable\n\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t},\n\t\t])\n\t})\n\n\tprivate string = this.RULE('string', () => {\n\t\tconst image = this.CONSUME(tokens.StringLiteral).image\n\t\treturn image\n\t\t\t.substring(1, image.length - 1)\n\t\t\t.replace(\"\\\\'\", \"'\")\n\t\t\t.replace(`\\\\\"`, `\"`)\n\t\t\t.replace('\\\\b', '\\b')\n\t\t\t.replace('\\\\f', '\\f')\n\t\t\t.replace('\\\\n', '\\n')\n\t\t\t.replace('\\\\r', '\\r')\n\t\t\t.replace('\\\\t', '\\t')\n\t\t\t.replace('\\\\v', '\\v')\n\t})\n\n\tprivate number = this.RULE('number', () => {\n\t\treturn parseFloat(this.CONSUME(tokens.NumberLiteral).image)\n\t})\n\n\tprivate variable = this.RULE<Environment.ResolvedValue>('variable', () => {\n\t\tthis.CONSUME(tokens.DollarSign)\n\t\tconst variableName = this.CONSUME(tokens.Identifier).image\n\n\t\treturn this.ACTION(() => {\n\t\t\tif (import.meta.env.DEV && variableName === 'rootWhereAsFilter') {\n\t\t\t\tconsole.warn('$rootWhereAsFilter is deprecated, use $rootFilter')\n\t\t\t}\n\t\t\tswitch (variableName) {\n\t\t\t\tcase 'rootWhereAsFilter':\n\t\t\t\tcase 'rootFilter':\n\t\t\t\t\treturn Parser.environment.getSubTree().filter\n\t\t\t}\n\n\t\t\tif (Parser.environment.hasVariable(variableName)) {\n\t\t\t\treturn Parser.environment.getVariable(variableName)\n\t\t\t}\n\t\t\tif (Parser.environment.hasParameter(variableName)) {\n\t\t\t\treturn Parser.environment.getParameter(variableName)\n\t\t\t}\n\t\t\tif (Parser.environment.hasDimension(variableName)) {\n\t\t\t\tconst dimensionValue = Parser.environment.getDimension(variableName)\n\t\t\t\tif (dimensionValue.length > 1) {\n\t\t\t\t\tthrow new BindingError(\n\t\t\t\t\t\t`The variable \\$${variableName} resolved to a dimension which exists but contains ${dimensionValue.length} values. It has to contain exactly one. ` +\n\t\t\t\t\t\t`Perhaps you forgot to set the 'maxItems' prop of your DimensionsSwitcher?`,\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\treturn dimensionValue[0]\n\t\t\t}\n\n\t\t\tthrow new QueryLanguageError(`Undefined variable \\$${variableName}.`)\n\t\t})\n\t})\n\n\tprivate constructor() {\n\t\tsuper(tokenList, { outputCst: false, maxLookahead: 1 })\n\t\tthis.performSelfAnalysis()\n\t}\n\n\tpublic static parseQueryLanguageExpression<E extends Parser.EntryPoint>(\n\t\tinput: string,\n\t\tentry: E,\n\t\tenvironment: Environment,\n\t): Parser.ParserResult[E] {\n\t\tconst cached = this.cacheStore.get(environment, entry, input)\n\n\t\tif (cached !== undefined) {\n\t\t\treturn cached\n\t\t}\n\n\t\tconst lexingResult = Parser.lexer.tokenize((Parser.rawInput = input))\n\n\t\tif (lexingResult.errors.length !== 0) {\n\t\t\tthrow new QueryLanguageError(\n\t\t\t\t`Failed to tokenize '${input}'.\\n\\n${lexingResult.errors.map(i => i.message).join('\\n')}`,\n\t\t\t)\n\t\t}\n\n\t\tParser.environment = environment\n\t\tParser.parser.input = lexingResult.tokens\n\n\t\tlet expression: Parser.ParserResult[keyof Parser.ParserResult]\n\n\t\tswitch (entry) {\n\t\t\tcase 'relativeSingleField':\n\t\t\t\texpression = Parser.parser.relativeSingleField()\n\t\t\t\tbreak\n\t\t\tcase 'relativeSingleEntity':\n\t\t\t\texpression = Parser.parser.relativeSingleEntity()\n\t\t\t\tbreak\n\t\t\tcase 'relativeEntityList':\n\t\t\t\texpression = Parser.parser.relativeEntityList()\n\t\t\t\tbreak\n\t\t\tcase 'qualifiedEntityList':\n\t\t\t\texpression = Parser.parser.qualifiedEntityList()\n\t\t\t\tbreak\n\t\t\tcase 'qualifiedFieldList':\n\t\t\t\texpression = Parser.parser.qualifiedFieldList()\n\t\t\t\tbreak\n\t\t\tcase 'qualifiedSingleEntity':\n\t\t\t\texpression = Parser.parser.qualifiedSingleEntity()\n\t\t\t\tbreak\n\t\t\tcase 'unconstrainedQualifiedEntityList':\n\t\t\t\texpression = Parser.parser.unconstrainedQualifiedEntityList()\n\t\t\t\tbreak\n\t\t\tcase 'unconstrainedQualifiedSingleEntity':\n\t\t\t\texpression = Parser.parser.unconstrainedQualifiedSingleEntity()\n\t\t\t\tbreak\n\t\t\tcase 'uniqueWhere':\n\t\t\t\texpression = Parser.parser.uniqueWhere()\n\t\t\t\tbreak\n\t\t\tcase 'filter':\n\t\t\t\texpression = Parser.parser.nonUniqueWhere()\n\t\t\t\tbreak\n\t\t\tcase 'orderBy':\n\t\t\t\texpression = Parser.parser.orderBy()\n\t\t\t\tbreak\n\t\t\tcase 'taggedMap':\n\t\t\t\texpression = Parser.parser.taggedMap()\n\t\t\t\tbreak\n\t\t\tcase 'columnValue':\n\t\t\t\texpression = Parser.parser.columnValue()\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tthrow new QueryLanguageError(`Not implemented entry point '${entry}'`)\n\t\t}\n\n\t\tif (Parser.parser.errors.length !== 0) {\n\t\t\tthrow new QueryLanguageError(\n\t\t\t\t`Failed to parse '${input}'.\\n\\n${Parser.parser.errors.map(i => i.message).join('\\n')}`,\n\t\t\t)\n\t\t}\n\n\t\tthis.cacheStore.set(environment, entry, input, expression as Parser.ParserResult[E])\n\n\t\treturn expression as Parser.ParserResult[E]\n\t}\n}\n\nnamespace Parser {\n\texport namespace AST {\n\t\texport type FieldWhere = Input.FieldWhere<Condition>\n\n\t\texport type ColumnValue = Input.ColumnValue\n\n\t\texport type Condition = Input.Condition<ColumnValue>\n\n\t\texport type ConditionOperator = keyof Pick<Condition, 'eq' | 'notEq' | 'lt' | 'lte' | 'gt' | 'gte'>\n\t}\n\n\texport interface ParserResult {\n\t\tqualifiedEntityList: ParsedQualifiedEntityList // E.g. Author[age < 123].son.sisters(name = 'Jane')\n\t\tqualifiedFieldList: ParsedQualifiedFieldList // E.g. Author[age < 123].son.sister.name\n\t\tqualifiedSingleEntity: ParsedQualifiedSingleEntity // E.g. Author(id = 123).son.sister\n\t\tunconstrainedQualifiedEntityList: ParsedUnconstrainedQualifiedEntityList // E.g. Author.son.sister\n\t\tunconstrainedQualifiedSingleEntity: ParsedUnconstrainedQualifiedSingleEntity // E.g. Author.son.sister\n\t\trelativeSingleField: ParsedRelativeSingleField // E.g. authors(id = 123).person.name\n\t\trelativeSingleEntity: ParsedRelativeSingleEntity // E.g. localesByLocale(locale.slug = en)\n\t\trelativeEntityList: ParsedRelativeEntityList // E.g. genres(slug = 'sciFi').authors[age < 123]\n\t\tuniqueWhere: UniqueWhere // E.g. (author.mother.id = 123)\n\t\tfilter: Filter // E.g. [author.son.age < 123]\n\t\torderBy: OrderBy // E.g. items.order asc, items.content.name asc\n\t\ttaggedMap: ParsedTaggedMap // E.g editUser(id: $entity.id, foo: 'bar')\n\t\tcolumnValue: AST.ColumnValue\n\t}\n\n\texport type EntryPoint = keyof ParserResult\n}\n\nexport { Parser }\n"],"names":["_Parser","EmbeddedActionsParser","tokenList","tokens","QueryLanguageError","TokenRegExps","BindingError","Lexer","Environment","CacheStore"],"mappings":";;;;;;;;;;;AAgCA,MAAM,UAAN,MAAMA,iBAAeC,iCAAsB;AAAA,EAyvBlC,cAAc;AACrB,UAAMC,qBAAW,EAAE,WAAW,OAAO,cAAc,GAAG;AAnvBvD,kBAAA,MAAQ,uBAAsB,KAAK,KAAgC,uBAAuB,MAAM;AAC/F,YAAM,aAAa,KAAK,QAAQ,KAAK,gBAAgB;AAC/C,YAAA,SAAS,KAAK,OAAO,MAAM,KAAK,QAAQ,KAAK,cAAc,CAAC;AAE5D,YAAA,uBAAuB,KAAK,QAAQ,MAAM;AAC1C,aAAA,QAAQC,iBAAO,GAAG;AAChB,eAAA,KAAK,QAAQ,KAAK,oBAAoB;AAAA,MAAA,CAC7C;AACD,YAAM,qBAAqB,KAAK;AAAA,QAAO,MACtC,yBAAyB,SAAY,KAAK,qBAAqB;AAAA,MAAA;AAGzD,aAAA;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IAED,CAAA,CAAA;AAED,kBAAA,MAAQ,sBAAqB,KAAK,KAA+B,sBAAsB,MAAM;AAC5F,YAAM,aAAa,KAAK,QAAQ,KAAK,gBAAgB;AAC/C,YAAA,SAAS,KAAK,OAAO,MAAM,KAAK,QAAQ,KAAK,cAAc,CAAC;AAE7D,WAAA,QAAQA,iBAAO,GAAG;AAEvB,YAAM,EAAE,oBAAoB,UAAU,KAAK,QAAQ,KAAK,mBAAmB;AAEpE,aAAA;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IAED,CAAA,CAAA;AAED,kBAAA,MAAQ,yBAAwB,KAAK,KAAkC,yBAAyB,MAAM;AACrG,YAAM,aAAa,KAAK,QAAQ,KAAK,gBAAgB;AAGrD,YAAM,QAAQ,KAAK,QAAQ,KAAK,WAAW;AACrC,YAAA,SAAS,KAAK,OAAO,MAAM,KAAK,QAAQ,KAAK,cAAc,CAAC;AAC5D,YAAA,uBAAuB,KAAK,QAAQ,MAAM;AAC1C,aAAA,QAAQA,iBAAO,GAAG;AAChB,eAAA,KAAK,QAAQ,KAAK,oBAAoB;AAAA,MAAA,CAC7C;AAED,YAAM,qBAAqB,KAAK;AAAA,QAAO,MACtC,yBAAyB,SAAY,KAAK,qBAAqB;AAAA,MAAA;AAGzD,aAAA;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IAED,CAAA,CAAA;AAED,kBAAA,MAAQ,oCAAmC,KAAK;AAAA,MAC/C;AAAA,MACA,MAAM;AACL,cAAM,aAAa,KAAK,QAAQ,KAAK,gBAAgB;AAC/C,cAAA,uBAAuB,KAAK,OAAO,MAAM;AACzC,eAAA,QAAQA,iBAAO,GAAG;AAChB,iBAAA,KAAK,QAAQ,KAAK,oBAAoB;AAAA,QAAA,CAC7C;AAED,cAAM,qBAAqB,KAAK;AAAA,UAAO,MACtC,yBAAyB,SAAY,KAAK,qBAAqB;AAAA,QAAA;AAGzD,eAAA;AAAA,UACN;AAAA,UACA;AAAA,QAAA;AAAA,MAEF;AAAA,IAAA,CACD;AAEA,kBAAA,MAAQ,sCAAqC,KAAK;AAAA,MACjD;AAAA,MACA,MAAM;AACL,cAAM,aAAa,KAAK,QAAQ,KAAK,gBAAgB;AAC/C,cAAA,uBAAuB,KAAK,QAAQ,MAAM;AAC1C,eAAA,QAAQA,iBAAO,GAAG;AAChB,iBAAA,KAAK,QAAQ,KAAK,oBAAoB;AAAA,QAAA,CAC7C;AAED,cAAM,qBAAqB,KAAK;AAAA,UAAO,MACtC,yBAAyB,SAAY,KAAK,qBAAqB;AAAA,QAAA;AAGzD,eAAA;AAAA,UACN;AAAA,UACA;AAAA,QAAA;AAAA,MAEF;AAAA,IAAA,CACD;AAEA,kBAAA,MAAQ,uBAAsB,KAAK,KAAgC,uBAAuB,MAAM;AAC/F,UAAI,EAAE,mBAAmB,IAAI,KAAK,QAAQ,KAAK,oBAAoB;AAEnE,YAAM,OAAO,KAAK,OAAO,MAAM,mBAAmB,KAAM;AAExD,WAAK,OAAO,MAAM;AACjB,YAAI,KAAK,cAAc,UAAa,KAAK,WAAW,QAAW;AAC9D,gBAAM,IAAIC,mBAAA;AAAA,YACT,iBAAiBJ,SAAO,QAAQ,sBAAsB,KAAK,KAAK;AAAA,UAAA;AAAA,QAElE;AAAA,MAAA,CACA;AAED,YAAM,QAAQ,KAAK,OAAO,MAAM,KAAK,KAAK;AAEnC,aAAA;AAAA,QACN;AAAA,QACA;AAAA,MAAA;AAAA,IAED,CAAA,CAAA;AAED,kBAAA,MAAQ,wBAAuB,KAAK,KAAiC,wBAAwB,MAAM;AAClG,YAAM,qBAA6C,CAAA;AAEnD,WAAK,iBAAiB;AAAA,QACrB,KAAKG,UAAO,OAAA;AAAA,QACZ,KAAK,MAAM;AACV,6BAAmB,KAAK,KAAK,QAAQ,KAAK,cAAc,CAAC;AAAA,QAC1D;AAAA,MAAA,CACA;AAEM,aAAA;AAAA,QACN;AAAA,MAAA;AAAA,IAED,CAAA,CAAA;AAED,kBAAA,MAAQ,sBAAqB,KAAK,KAA+B,sBAAsB,MAAM;AAC5F,UAAI,EAAE,mBAAmB,IAAI,KAAK,QAAQ,KAAK,oBAAoB;AAEnE,YAAM,OAAO,KAAK,OAAO,MAAM,mBAAmB,KAAM;AAExD,WAAK,OAAO,MAAM;AACb,YAAA,KAAK,cAAc,QAAW;AACjC,gBAAM,IAAIC,mBAAA;AAAA,YACT,iBAAiBJ,SAAO,QAAQ,sBAAsB,KAAK,KAAK;AAAA,UAAA;AAAA,QAElE;AAAA,MAAA,CACA;AAED,YAAM,kBAAkB,KAAK;AAAA,QAC5B,OAA8B;AAAA,UAC7B,OAAO,KAAK;AAAA,UACZ,QAAQ,KAAK;AAAA,QAAA;AAAA,MACd;AAGM,aAAA;AAAA,QACN;AAAA,QACA;AAAA,MAAA;AAAA,IAED,CAAA,CAAA;AAED,kBAAA,MAAQ,kBAAiB,KAAK,KAA2B,kBAAkB,MAAM;AAChF,YAAM,YAAY,KAAK,QAAQ,KAAK,SAAS;AACvC,YAAA,YAAY,KAAK,OAAO,MAAM,KAAK,QAAQ,KAAK,WAAW,CAAC;AAC5D,YAAA,SAAS,KAAK,QAAQ,MAAM,KAAK,QAAQ,KAAK,cAAc,CAAC;AACnE,YAAM,iBAAuC;AAAA,QAC5C,OAAO;AAAA,QACP;AAAA,QACA;AAAA,MAAA;AAGM,aAAA;AAAA,IACP,CAAA,CAAA;AAED,kBAAA,MAAQ,kBAA+B,KAAK,KAAK,kBAAkB,MAAM;AACxE,YAAM,WAAqB,CAAA;AAE3B,WAAK,aAAa,MAAM;AAClB,aAAA,QAAQG,iBAAO,WAAW;AAE/B,iBAAS,KAAK,KAAK,QAAQ,KAAK,WAAW,CAAC;AAEvC,aAAA,QAAQA,iBAAO,YAAY;AAAA,MAAA,CAChC;AACG,UAAA,SAAS,WAAW,GAAG;AAC1B,eAAO,SAAS,CAAC;AAAA,MAClB;AACO,aAAA;AAAA,QACN,KAAK;AAAA,MAAA;AAAA,IAEN,CAAA,CAAA;AAED,kBAAA,MAAQ,eAA4B,KAAK,KAAK,eAAe,MAAM;AAClE,YAAM,eAAyB,CAAA;AAE/B,WAAK,iBAAiB;AAAA,QACrB,KAAKA,UAAO,OAAA;AAAA,QACZ,KAAK,MAAM;AACV,uBAAa,KAAK,KAAK,QAAQ,KAAK,WAAW,CAAC;AAAA,QACjD;AAAA,MAAA,CACA;AACG,UAAA,aAAa,WAAW,GAAG;AAC9B,eAAO,aAAa,CAAC;AAAA,MACtB;AACO,aAAA;AAAA,QACN,IAAI;AAAA,MAAA;AAAA,IAEL,CAAA,CAAA;AAED,kBAAA,MAAQ,eAA4B,KAAK,KAAK,eAAe,MAAM;AAClE,YAAM,YAAsB,CAAA;AAE5B,WAAK,iBAAiB;AAAA,QACrB,KAAKA,UAAO,OAAA;AAAA,QACZ,KAAK,MAAM;AACV,oBAAU,KAAK,KAAK,QAAQ,KAAK,QAAQ,CAAC;AAAA,QAC3C;AAAA,MAAA,CACA;AACG,UAAA,UAAU,WAAW,GAAG;AAC3B,eAAO,UAAU,CAAC;AAAA,MACnB;AACO,aAAA;AAAA,QACN,KAAK;AAAA,MAAA;AAAA,IAEN,CAAA,CAAA;AAGD,kBAAA,MAAQ,YAAyB,KAAK,KAAK,YAAY,MAAM;AAC5D,aAAO,KAAK,GAAG;AAAA,QACd;AAAA,UACC,KAAK,MAAM;AACL,iBAAA,QAAQA,iBAAO,GAAG;AAChB,mBAAA;AAAA,cACN,KAAK,KAAK,QAAQ,KAAK,WAAW;AAAA,YAAA;AAAA,UAEpC;AAAA,QACD;AAAA,QACA;AAAA,UACC,KAAK,MAAM;AACH,mBAAA,KAAK,SAAS,KAAK,WAAW;AAAA,UACtC;AAAA,QACD;AAAA,MAAA,CACA;AAAA,IACD,CAAA,CAAA;AAED,kBAAA,MAAQ,eAA4B,KAAK,KAAK,eAAe,MAAM;AAClE,aAAO,KAAK,GAAG;AAAA,QACd;AAAA,UACC,KAAK,MAAM;AACL,iBAAA,QAAQA,iBAAO,eAAe;AACnC,kBAAM,YAAY,KAAK,QAAQ,KAAK,WAAW;AAC1C,iBAAA,SAASA,iBAAO,gBAAgB;AAC9B,mBAAA;AAAA,UACR;AAAA,QACD;AAAA,QACA;AAAA,UACC,KAAK,MAAM,KAAK,SAAS,KAAK,UAAU;AAAA,QACzC;AAAA,MAAA,CACA;AAAA,IACD,CAAA,CAAA;AAED,kBAAA,MAAQ,cAA2B,KAAK,KAAK,cAAc,MAAM;AAChE,aAAO,KAAK,GAAG;AAAA,QACd;AAAA,UACC,KAAK,MAAM;AACV,kBAAM,WAAW,KAAK,QAAQ,KAAK,QAAQ;AACpC,mBAAA,KAAK,OAAO,MAAM;AACpB,kBAAA,OAAO,aAAa,UAAU;AACjC,sBAAM,IAAIC,mBAAAA,mBAAmB,yBAAyB,KAAK,UAAU,QAAQ,CAAC,GAAG;AAAA,cAClF;AACO,qBAAA;AAAA,YAAA,CACP;AAAA,UACF;AAAA,QACD;AAAA,QACA;AAAA,UACC,KAAK,MAAM,KAAK,SAAS,KAAK,UAAU;AAAA,QACzC;AAAA,MAAA,CACA;AAAA,IACD,CAAA,CAAA;AAED,kBAAA,MAAQ,cAA0C,KAAK,KAAK,cAAc,MAAM;AAC/E,YAAM,SAAmD,CAAA;AAEzD,WAAK,iBAAiB;AAAA,QACrB,KAAKD,UAAO,OAAA;AAAA,QACZ,KAAK,MAAM;AACV,iBAAO,KAAK,KAAK,QAAQ,KAAK,mCAAmC,CAAC;AAAA,QACnE;AAAA,MAAA,CACA;AAEK,YAAA,mBAAmB,CAAC,UAA+E;AACjG,eAAA,KAAK,OAAO,MAAM;AACxB,cAAI,MAAM;AACV,mBAAS,IAAI,OAAO,SAAS,GAAG,KAAK,GAAG,KAAK;AACtC,kBAAA,QAAQ,OAAO,CAAC;AAClB,gBAAA,MAAM,aAAa,QAAQ;AACxB,oBAAA;AAAA,gBACL,KAAK;AAAA,kBACJ,CAAC,MAAM,IAAI,GAAG;AAAA,gBACf;AAAA,cAAA;AAAA,YACD,WACU,MAAM,aAAa,OAAO;AAC9B,oBAAA;AAAA,gBACL,KAAK;AAAA,kBACJ,CAAC,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI;AAAA,gBAC1B;AAAA,cAAA;AAAA,YACD,WACU,CAAC,MAAM,YAAY,MAAM,aAAa,QAAQ;AAClD,oBAAA;AAAA,gBACL,CAAC,MAAM,IAAI,GAAG;AAAA,cAAA;AAAA,YACf,OACM;AACN,oBAAM,IAAIC,mBAAA,mBAAmB,qBAAqB,MAAM,QAAQ,qCAAqC;AAAA,YACtG;AAAA,UACD;AACO,iBAAA;AAAA,QAAA,CACP;AAAA,MAAA;AAIF,aAAO,KAAK,GAAG;AAAA,QACd;AAAA,UACC,KAAK,MAAM;AACV,kBAAM,YAAY,KAAK,QAAQ,KAAK,SAAS;AAC7C,mBAAO,iBAAiB,SAAS;AAAA,UAClC;AAAA,QACD;AAAA,QACA;AAAA,UACC,KAAK,MAAM;AACV,kBAAM,WAAW,KAAK,QAAQ,KAAK,cAAc;AACjD,mBAAO,iBAAiB,QAAQ;AAAA,UACjC;AAAA,QACD;AAAA,MAAA,CACA;AAAA,IACD,CAAA,CAAA;AAED,kBAAA,MAAQ,aAAwC,KAAK,KAAK,aAAa,MAAM;AAC5E,YAAM,WAAW,KAAK,QAAQ,KAAK,iBAAiB;AACpD,YAAM,cAAc,KAAK,QAAQ,KAAK,WAAW;AACjD,YAAM,YAA4C,CAAA;AAE3C,aAAA,KAAK,OAAO,MAAM;AACxB,YAAI,gBAAgB,MAAM;AACzB,cAAI,aAAa,MAAM;AACtB,sBAAU,OAAO;AAAA,UAAA,WACP,aAAa,SAAS;AAChC,sBAAU,OAAO;AAAA,UAAA,OACX;AACA,kBAAA,IAAIA,sCAAmB,+EAA+E;AAAA,UAC7G;AACO,iBAAA;AAAA,QACR;AACA,kBAAU,QAAQ,IAAI;AAEf,eAAA;AAAA,MAAA,CACP;AAAA,IACD,CAAA,CAAA;AAED,kBAAA,MAAQ,qBAAwD,KAAK;AAAA,MACpE;AAAA,MACA,MAAM;AACL,eAAO,KAAK,GAAG;AAAA,UACd;AAAA,YACC,KAAK,MAAM;AACL,mBAAA,QAAQD,iBAAO,MAAM;AACnB,qBAAA;AAAA,YACR;AAAA,UACD;AAAA,UACA;AAAA,YACC,KAAK,MAAM;AACL,mBAAA,QAAQA,iBAAO,SAAS;AACtB,qBAAA;AAAA,YACR;AAAA,UACD;AAAA,UACA;AAAA,YACC,KAAK,MAAM;AACL,mBAAA,QAAQA,iBAAO,SAAS;AACtB,qBAAA;AAAA,YACR;AAAA,UACD;AAAA,UACA;AAAA,YACC,KAAK,MAAM;AACL,mBAAA,QAAQA,iBAAO,UAAU;AACvB,qBAAA;AAAA,YACR;AAAA,UACD;AAAA,UACA;AAAA,YACC,KAAK,MAAM;AACL,mBAAA,QAAQA,iBAAO,WAAW;AACxB,qBAAA;AAAA,YACR;AAAA,UACD;AAAA,UACA;AAAA,YACC,KAAK,MAAM;AACL,mBAAA,QAAQA,iBAAO,YAAY;AACzB,qBAAA;AAAA,YACR;AAAA,UACD;AAAA,QAAA,CACA;AAAA,MACF;AAAA,IAAA,CACD;AAEA,kBAAA,MAAQ,eAA4C,KAAK,KAA6B,eAAe,MAAM;AAC1G,aAAO,KAAK,GAAG;AAAA,QACd;AAAA,UACC,KAAK,MAAM;AACL,iBAAA,QAAQA,iBAAO,IAAI;AACjB,mBAAA;AAAA,UACR;AAAA,QACD;AAAA,QACA;AAAA,UACC,KAAK,MAAM;AACL,iBAAA,QAAQA,iBAAO,IAAI;AACjB,mBAAA;AAAA,UACR;AAAA,QACD;AAAA,QACA;AAAA,UACC,KAAK,MAAM;AACL,iBAAA,QAAQA,iBAAO,KAAK;AAClB,mBAAA;AAAA,UACR;AAAA,QACD;AAAA,QACA;AAAA,UACC,KAAK,MAAM,KAAK,QAAQ,KAAK,YAAY;AAAA,QAC1C;AAAA,MAAA,CACA;AAAA,IACD,CAAA,CAAA;AAED,kBAAA,MAAQ,eAAc,KAAK,KAAK,eAAe,MAAM;AACpD,YAAM,QAA+B,CAAA;AAEhC,WAAA,QAAQA,iBAAO,eAAe;AACnC,WAAK,iBAAiB;AAAA,QACrB,KAAKA,UAAO,OAAA;AAAA,QACZ,KAAK,MAAM;AACV,gBAAM,eAAyB,CAAA;AAC/B,eAAK,kBAAkB;AAAA,YACtB,KAAKA,UAAO,OAAA;AAAA,YACZ,KAAK,MAAM;AACV,2BAAa,KAAK,KAAK,QAAQ,KAAK,eAAe,CAAC;AAAA,YACrD;AAAA,UAAA,CACA;AACI,eAAA,QAAQA,iBAAO,MAAM;AAC1B,gBAAM,eAAe,KAAK,QAA4B,KAAK,YAAY;AAEvE,eAAK,OAAO,MAAM;AACjB,gBAAI,cAAc;AAClB,qBAAS,IAAI,GAAG,MAAM,aAAa,QAAQ,IAAI,KAAK,KAAK;AAClD,oBAAA,cAAc,aAAa,CAAC;AAE5B,oBAAA,SAAS,MAAM,MAAM;AAE3B,kBAAI,QAAQ;AACX,oBAAI,eAAe,aAAa;AAC/B,wBAAM,IAAIC,mBAAAA,mBAAmB,cAAc,aAAa,MAAM,GAAG,IAAI,CAAC,EAAE,KAAK,GAAG,CAAC,SAAS;AAAA,gBAC3F;AAEA,4BAAY,WAAW,IAAI;AAAA,cAAA,OACrB;AACN,oBAAI,eAAe,aAAa;AACzB,wBAAA,gBAAgB,YAAY,WAAW;AAEzC,sBAAA,OAAO,kBAAkB,UAAU;AACxB,kCAAA;AAAA,kBAAA,OACR;AACN,0BAAM,IAAIA,mBAAA;AAAA,sBACT,0DAA0D,aACxD,MAAM,GAAG,IAAI,CAAC,EACd,KAAK,GAAG,CAAC;AAAA,oBAAA;AAAA,kBAEb;AAAA,gBAAA,OACM;AACN,wBAAM,WAAW,CAAA;AACjB,8BAAY,WAAW,IAAI;AACb,gCAAA;AAAA,gBACf;AAAA,cACD;AAAA,YACD;AAAA,UAAA,CACA;AAAA,QACF;AAAA,MAAA,CACA;AACI,WAAA,QAAQD,iBAAO,gBAAgB;AAE7B,aAAA;AAAA,IACP,CAAA,CAAA;AAED,kBAAA,MAAQ,WAA4D,KAAK,KAEvE,WAAW,MAAM;AAClB,YAAM,QAAoD,CAAA;AAE1D,WAAK,iBAAiB;AAAA,QACrB,KAAKA,UAAO,OAAA;AAAA,QACZ,KAAK,MAAM;AACV,gBAAM,aAA0B,CAAA;AAChC,eAAK,kBAAkB;AAAA,YACtB,KAAKA,UAAO,OAAA;AAAA,YACZ,KAAK,MAAM;AACV,yBAAW,KAAK,KAAK,QAAQ,KAAK,eAAe,CAAC;AAAA,YACnD;AAAA,UAAA,CACA;AACK,gBAAA,UAAU,KAAK,OAAO,MAAM,KAAK,SAAS,KAAK,UAAU,CAAC;AAEhE,eAAK,OAAO,MAAM;AACb,gBAAA;AACJ,gBAAI,SAAS;AACZ,kBAAI,YAAY,SAAS,YAAY,UAAU,YAAY,mBAAmB,YAAY,iBAAiB;AACpG,sBAAA,IAAIC,sCAAmB,yFAAyF;AAAA,cACvH;AACiB,+BAAA;AAAA,YAAA,OACX;AACW,+BAAA;AAAA,YAClB;AACA,gBAAI,UAAyD;AAE7D,qBAAS,IAAI,WAAW,SAAS,GAAG,KAAK,GAAG,KAAK;AAChD,wBAAU,EAAE,CAAC,WAAW,CAAC,CAAC,GAAG,QAAQ;AAAA,YACtC;AACA,kBAAM,KAAK,OAAmD;AAAA,UAAA,CAC9D;AAAA,QACF;AAAA,MAAA,CACA;AAEM,aAAA;AAAA,IACP,CAAA,CAAA;AAED,kBAAA,MAAQ,aAAmC,KAAK,KAAsB,aAAa,MAAM;AACxF,YAAM,OAAO,KAAK,QAAQ,KAAK,QAAQ;AAChC,aAAA;AAAA,QACN;AAAA,QACA,SAAS,KAAK,OAAO,MAAM,KAAK,QAAQ,KAAK,gBAAgB,CAAC,KAAK,CAAC;AAAA,MAAA;AAAA,IAErE,CAAA,CAAA;AAED,kBAAA,MAAQ,oBAAiD,KAAK,KAA6B,oBAAoB,MAAM;AAC/G,WAAA,QAAQD,iBAAO,eAAe;AACnC,YAAM,UAAkC,CAAA;AACxC,WAAK,iBAAiB;AAAA,QACrB,KAAKA,UAAO,OAAA;AAAA,QACZ,KAAK,MAAM,QAAQ,KAAK,KAAK,QAAQ,KAAK,cAAc,CAAC;AAAA,MAAA,CACzD;AACI,WAAA,QAAQA,iBAAO,gBAAgB;AAE7B,aAAA;AAAA,IACP,CAAA,CAAA;AAED,kBAAA,MAAQ,kBAA6C,KAAK,KAA2B,kBAAkB,MAAM;AAC5G,YAAM,eAAe,KAAK,QAAQA,UAAAA,OAAO,UAAU,EAAE;AAChD,WAAA,SAASA,iBAAO,KAAK;AACpB,YAAA,QAAQ,KAAK,GAAG;AAAA,QACrB;AAAA,UACC,KAAK,MAAM,KAAK,QAAQ,KAAK,qBAAqB;AAAA,QACnD;AAAA,QACA;AAAA,UACC,KAAK,MAAM,KAAK,QAAQ,KAAK,sBAAsB;AAAA,QACpD;AAAA,MAAA,CACA;AAEM,aAAA;AAAA,QACN,KAAK;AAAA,QACL;AAAA,MAAA;AAAA,IAED,CAAA,CAAA;AAED,kBAAA,MAAQ,yBAA2D,KAAK,KAAkC,yBAAyB,MAAM;AAClI,YAAA,QAAQ,KAAK,GAAG;AAAA,QACrB;AAAA,UACC,KAAK,MAAM,KAAK,QAAQ,KAAK,MAAM;AAAA,QACpC;AAAA,QACA;AAAA,UACC,KAAK,MAAM,KAAK,QAAQ,KAAK,MAAM;AAAA,QACpC;AAAA,MAAA,CACA;AAEM,aAAA;AAAA,QACN,MAAM;AAAA,QACN;AAAA,MAAA;AAAA,IAED,CAAA,CAAA;AAED,kBAAA,MAAQ,0BAA6D,KAAK,KAAmC,0BAA0B,MAAM;AAC5I,YAAM,QAAQ,KAAK,QAAQA,UAAA,OAAO,UAAU;AACvC,WAAA,QAAQ,KAAK,mBAAmB;AAC/B,YAAA,MAAM,KAAK,GAAG,CAAC;AACf,YAAA,QAAQ,KAAK,MAAM,MAAM,KAAK,MAAM,QAAQ,KAAK,IAAI,GAAG,KAAK,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,IAAI,QAAM,GAAG,KAAK,EAAE,KAAK,EAAE;AAE/G,aAAA;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,MAAA;AAAA,IAER,CAAA,CAAA;AAGD,kBAAA,MAAQ,aAA6B,KAAK,KAAgB,aAAa,MAAM;AAC5E,aAAO,KAAK,GAAG;AAAA,QACd;AAAA,UACC,KAAK,MAAM,KAAK,QAAQ,KAAK,eAAe;AAAA,QAC7C;AAAA,MAAA,CACA;AAAA,IACD,CAAA,CAAA;AAED,kBAAA,MAAQ,gBAAe,KAAK,KAAyB,gBAAgB,MAAM;AAC1E,aAAO,KAAK,GAAG;AAAA,QACd;AAAA,UACC,KAAK,MAAM,KAAK,QAAQ,KAAK,MAAM;AAAA,QACpC;AAAA,QACA;AAAA,UACC,KAAK,MAAM,KAAK,QAAQ,KAAK,MAAM;AAAA,QACpC;AAAA,QACA;AAAA,UACC,KAAK,MAAM,KAAK,QAAQ,KAAK,UAAU;AAAA,QACxC;AAAA,QACA;AAAA,UACC,KAAK,MAAM;AACV,kBAAM,gBAAgB,KAAK,QAAQ,KAAK,QAAQ;AACzC,mBAAA,KAAK,OAAO,MAAM;AACxB,kBACC,OAAO,kBAAkB,YACzB,OAAO,kBAAkB,UACxB;AACM,uBAAA;AAAA,cACR;AACA,oBAAM,IAAIC,mBAAA;AAAA,gBACT,gEAAgE,OAAO,aAAa;AAAA,cAAA;AAAA,YACrF,CACA;AAAA,UACF;AAAA,QACD;AAAA,MAAA,CACA;AAAA,IACD,CAAA,CAAA;AAED,kBAAA,MAAQ,uCAAoF,KAAK,KAAK,uCAAuC,MAAM;AAClJ,YAAM,kBAAkB,KAAK,SAAS,KAAK,eAAe;AACpD,YAAA,WAAW,KAAK,OAAO,MAAM;AAC7B,aAAA,QAAQD,iBAAO,KAAK;AAClB,eAAA,KAAK,QAAQ,KAAK,UAAU;AAAA,MAAA,CACnC;AACM,aAAA,EAAE,MAAM,iBAAiB;IAChC,CAAA,CAAA;AAED,kBAAA,MAAQ,mBAAmC,KAAK,KAAK,mBAAmB,MAAM;AACtE,aAAA,KAAK,QAAQ,KAAK,UAAU;AAAA,IAiBnC,CAAA,CAAA;AAED,kBAAA,MAAQ,cAA2B,KAAK,KAAK,cAAc,MAAM;AAChE,aAAO,KAAK,GAAG;AAAA,QACd;AAAA,UACC,KAAK,MAAM,KAAK,QAAQA,UAAAA,OAAO,UAAU,EAAE;AAAA,QAC5C;AAAA,QACA;AAAA;AAAA,UAEC,KAAK,MAAM,KAAK,QAAQA,UAAAA,OAAO,gBAAgB,EAAE;AAAA,QAClD;AAAA,MAAA,CACA;AAAA,IACD,CAAA,CAAA;AAED,kBAAA,MAAQ,YAAyB,KAAK,KAAK,YAAY,MAAM;AAC5D,YAAM,QAAkB,CAAA;AAExB,WAAK,iBAAiB;AAAA,QACrB,KAAKA,UAAO,OAAA;AAAA,QACZ,KAAK,MAAM,MAAM,KAAK,KAAK,QAAQA,UAAA,OAAO,UAAU,EAAE,KAAK;AAAA,MAAA,CAC3D;AAEM,aAAA,MAAM,KAAK,GAAG;AAAA,IACrB,CAAA,CAAA;AAED,kBAAA,MAAQ,oBAAqC,KAAK,KAAK,oBAAoB,MAAM;AAChF,aAAO,KAAK,GAAG;AAAA,QACd;AAAA,UACC,KAAK,MAAM,KAAK,QAAQA,UAAAA,OAAO,gBAAgB,EAAE;AAAA,QAClD;AAAA,QACA;AAAA,UACC,KAAK,MAAM;AACV,kBAAM,WAAW,KAAK,QAAQ,KAAK,QAAQ;AACpC,mBAAA,KAAK,OAAO,MAAM;AACpB,kBAAA,EAAE,OAAO,aAAa,aAAa,CAACE,UAAAA,aAAa,iBAAiB,KAAK,QAAQ,GAAG;AACrF,sBAAM,IAAID,mBAAA,mBAAmB,8BAA+B,QAAQ,oCAAoC;AAAA,cACzG;AACO,qBAAA;AAAA,YAAA,CACP;AAAA,UACF;AAAA,QACD;AAAA,MAAA,CACA;AAAA,IACD,CAAA,CAAA;AAED,kBAAA,MAAQ,UAAS,KAAK,KAAK,UAAU,MAAM;AAC1C,YAAM,QAAQ,KAAK,QAAQD,UAAAA,OAAO,aAAa,EAAE;AACjD,aAAO,MACL,UAAU,GAAG,MAAM,SAAS,CAAC,EAC7B,QAAQ,OAAO,GAAG,EAClB,QAAQ,OAAO,GAAG,EAClB,QAAQ,OAAO,IAAI,EACnB,QAAQ,OAAO,IAAI,EACnB,QAAQ,OAAO,IAAI,EACnB,QAAQ,OAAO,IAAI,EACnB,QAAQ,OAAO,GAAI,EACnB,QAAQ,OAAO,IAAI;AAAA,IACrB,CAAA,CAAA;AAED,kBAAA,MAAQ,UAAS,KAAK,KAAK,UAAU,MAAM;AAC1C,aAAO,WAAW,KAAK,QAAQA,UAAO,OAAA,aAAa,EAAE,KAAK;AAAA,IAC1D,CAAA,CAAA;AAED,kBAAA,MAAQ,YAAW,KAAK,KAAgC,YAAY,MAAM;AACpE,WAAA,QAAQA,iBAAO,UAAU;AAC9B,YAAM,eAAe,KAAK,QAAQA,UAAAA,OAAO,UAAU,EAAE;AAE9C,aAAA,KAAK,OAAO,MAAM;AAIxB,gBAAQ,cAAc;AAAA,UACrB,KAAK;AAAA,UACL,KAAK;AACGH,mBAAAA,SAAO,YAAY,WAAA,EAAa;AAAA,QACzC;AAEA,YAAIA,SAAO,YAAY,YAAY,YAAY,GAAG;AAC1CA,iBAAAA,SAAO,YAAY,YAAY,YAAY;AAAA,QACnD;AACA,YAAIA,SAAO,YAAY,aAAa,YAAY,GAAG;AAC3CA,iBAAAA,SAAO,YAAY,aAAa,YAAY;AAAA,QACpD;AACA,YAAIA,SAAO,YAAY,aAAa,YAAY,GAAG;AAClD,gBAAM,iBAAiBA,SAAO,YAAY,aAAa,YAAY;AAC/D,cAAA,eAAe,SAAS,GAAG;AAC9B,kBAAM,IAAIM,aAAA;AAAA,cACT,iBAAkB,YAAY,sDAAsD,eAAe,MAAM;AAAA,YAAA;AAAA,UAG3G;AACA,iBAAO,eAAe,CAAC;AAAA,QACxB;AAEA,cAAM,IAAIF,mBAAA,mBAAmB,uBAAwB,YAAY,GAAG;AAAA,MAAA,CACpE;AAAA,IACD,CAAA,CAAA;AAIA,SAAK,oBAAoB;AAAA,EAC1B;AAAA,EAEA,OAAc,6BACb,OACA,OACA,aACyB;AACzB,UAAM,SAAS,KAAK,WAAW,IAAI,aAAa,OAAO,KAAK;AAE5D,QAAI,WAAW,QAAW;AAClB,aAAA;AAAA,IACR;AAEA,UAAM,eAAeJ,SAAO,MAAM,SAAUA,SAAO,WAAW,KAAM;AAEhE,QAAA,aAAa,OAAO,WAAW,GAAG;AACrC,YAAM,IAAII,mBAAA;AAAA,QACT,uBAAuB,KAAK;AAAA;AAAA,EAAS,aAAa,OAAO,IAAI,CAAA,MAAK,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;AAAA,MAAA;AAAA,IAEzF;AAEAJ,aAAO,cAAc;AACdA,aAAA,OAAO,QAAQ,aAAa;AAE/B,QAAA;AAEJ,YAAQ,OAAO;AAAA,MACd,KAAK;AACSA,qBAAAA,SAAO,OAAO;AAC3B;AAAA,MACD,KAAK;AACSA,qBAAAA,SAAO,OAAO;AAC3B;AAAA,MACD,KAAK;AACSA,qBAAAA,SAAO,OAAO;AAC3B;AAAA,MACD,KAAK;AACSA,qBAAAA,SAAO,OAAO;AAC3B;AAAA,MACD,KAAK;AACSA,qBAAAA,SAAO,OAAO;AAC3B;AAAA,MACD,KAAK;AACSA,qBAAAA,SAAO,OAAO;AAC3B;AAAA,MACD,KAAK;AACSA,qBAAAA,SAAO,OAAO;AAC3B;AAAA,MACD,KAAK;AACSA,qBAAAA,SAAO,OAAO;AAC3B;AAAA,MACD,KAAK;AACSA,qBAAAA,SAAO,OAAO;AAC3B;AAAA,MACD,KAAK;AACSA,qBAAAA,SAAO,OAAO;AAC3B;AAAA,MACD,KAAK;AACSA,qBAAAA,SAAO,OAAO;AAC3B;AAAA,MACD,KAAK;AACSA,qBAAAA,SAAO,OAAO;AAC3B;AAAA,MACD,KAAK;AACSA,qBAAAA,SAAO,OAAO;AAC3B;AAAA,MACD;AACC,cAAM,IAAII,mBAAA,mBAAmB,gCAAgC,KAAK,GAAG;AAAA,IACvE;AAEA,QAAIJ,SAAO,OAAO,OAAO,WAAW,GAAG;AACtC,YAAM,IAAII,mBAAA;AAAA,QACT,oBAAoB,KAAK;AAAA;AAAA,EAASJ,SAAO,OAAO,OAAO,IAAI,CAAA,MAAK,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;AAAA,MAAA;AAAA,IAEvF;AAEA,SAAK,WAAW,IAAI,aAAa,OAAO,OAAO,UAAoC;AAE5E,WAAA;AAAA,EACR;AACD;AA30BC,cADK,SACU,YAAmB,EAAA;AAClC,cAFK,SAEU,SAAQ,IAAIO,WAAAA,MAAML,UAAAA,SAAS,CAAA;AAC1C,cAHK,SAGU,UAAS,IAAI,QAAO,CAAA;AACnC,cAJK,SAIU,eAA2BM,wBAAY,OAAO,CAAA;AAC7D,cALK,SAKU,cAAyB,IAAIC,WAAAA,WAAW,CAAA;AALxD,IAAM,SAAN;;"}
@@ -1,4 +1,3 @@
1
- import { GraphQlBuilder } from "@contember/client";
2
1
  import { Lexer, EmbeddedActionsParser } from "chevrotain";
3
2
  import { CacheStore } from "./CacheStore.js";
4
3
  import { QueryLanguageError } from "./QueryLanguageError.js";
@@ -233,7 +232,7 @@ const _Parser = class _Parser2 extends EmbeddedActionsParser {
233
232
  ALT: () => {
234
233
  const variable = this.SUBRULE(this.variable);
235
234
  return this.ACTION(() => {
236
- if (typeof variable !== "object" || variable instanceof GraphQlBuilder.GraphQlLiteral) {
235
+ if (typeof variable !== "object") {
237
236
  throw new QueryLanguageError(`Invalid filter value '${JSON.stringify(variable)}'`);
238
237
  }
239
238
  return variable;
@@ -411,7 +410,7 @@ const _Parser = class _Parser2 extends EmbeddedActionsParser {
411
410
  } else {
412
411
  if (nestedField in nestedWhere) {
413
412
  const existingWhere = nestedWhere[nestedField];
414
- if (typeof existingWhere === "object" && !(existingWhere instanceof GraphQlBuilder.GraphQlLiteral)) {
413
+ if (typeof existingWhere === "object") {
415
414
  nestedWhere = existingWhere;
416
415
  } else {
417
416
  throw new QueryLanguageError(
@@ -543,7 +542,7 @@ const _Parser = class _Parser2 extends EmbeddedActionsParser {
543
542
  ALT: () => {
544
543
  const variableValue = this.SUBRULE(this.variable);
545
544
  return this.ACTION(() => {
546
- if (typeof variableValue === "string" || typeof variableValue === "number" || variableValue instanceof GraphQlBuilder.GraphQlLiteral) {
545
+ if (typeof variableValue === "string" || typeof variableValue === "number") {
547
546
  return variableValue;
548
547
  }
549
548
  throw new QueryLanguageError(
@@ -619,8 +618,7 @@ const _Parser = class _Parser2 extends EmbeddedActionsParser {
619
618
  return _Parser2.environment.getSubTree().filter;
620
619
  }
621
620
  if (_Parser2.environment.hasVariable(variableName)) {
622
- const value = _Parser2.environment.getVariable(variableName);
623
- return value instanceof GraphQlBuilder.GraphQlLiteral ? value.value : value;
621
+ return _Parser2.environment.getVariable(variableName);
624
622
  }
625
623
  if (_Parser2.environment.hasParameter(variableName)) {
626
624
  return _Parser2.environment.getParameter(variableName);