@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
@@ -1,4 +1,4 @@
1
- import { GraphQlBuilder, Input, Writable } from '@contember/client'
1
+ import { Input, Writable } from '@contember/client'
2
2
  import { EmbeddedActionsParser, Lexer } from 'chevrotain'
3
3
  import { Environment } from '../environment'
4
4
  import type { EntityName, FieldName, Filter, OrderBy, UniqueWhere } from '../treeParameters'
@@ -303,7 +303,7 @@ class Parser extends EmbeddedActionsParser {
303
303
  ALT: () => {
304
304
  const variable = this.SUBRULE(this.variable)
305
305
  return this.ACTION(() => {
306
- if (typeof variable !== 'object' || variable instanceof GraphQlBuilder.GraphQlLiteral) {
306
+ if (typeof variable !== 'object') {
307
307
  throw new QueryLanguageError(`Invalid filter value '${JSON.stringify(variable)}'`)
308
308
  }
309
309
  return variable
@@ -479,7 +479,7 @@ class Parser extends EmbeddedActionsParser {
479
479
  },
480
480
  })
481
481
  this.CONSUME(tokens.Equals)
482
- const primaryValue = this.SUBRULE<Input.PrimaryValue<GraphQlBuilder.GraphQlLiteral>>(this.primaryValue)
482
+ const primaryValue = this.SUBRULE<Input.PrimaryValue>(this.primaryValue)
483
483
 
484
484
  this.ACTION(() => {
485
485
  let nestedWhere = where
@@ -498,7 +498,7 @@ class Parser extends EmbeddedActionsParser {
498
498
  if (nestedField in nestedWhere) {
499
499
  const existingWhere = nestedWhere[nestedField]
500
500
 
501
- if (typeof existingWhere === 'object' && !(existingWhere instanceof GraphQlBuilder.GraphQlLiteral)) {
501
+ if (typeof existingWhere === 'object') {
502
502
  nestedWhere = existingWhere
503
503
  } else {
504
504
  throw new QueryLanguageError(
@@ -637,7 +637,7 @@ class Parser extends EmbeddedActionsParser {
637
637
  ])
638
638
  })
639
639
 
640
- private primaryValue = this.RULE<Input.PrimaryValue<GraphQlBuilder.GraphQlLiteral>>('primaryValue', () => {
640
+ private primaryValue = this.RULE<Input.PrimaryValue>('primaryValue', () => {
641
641
  return this.OR([
642
642
  {
643
643
  ALT: () => this.SUBRULE(this.string),
@@ -654,8 +654,7 @@ class Parser extends EmbeddedActionsParser {
654
654
  return this.ACTION(() => {
655
655
  if (
656
656
  typeof variableValue === 'string' ||
657
- typeof variableValue === 'number' ||
658
- variableValue instanceof GraphQlBuilder.GraphQlLiteral
657
+ typeof variableValue === 'number'
659
658
  ) {
660
659
  return variableValue
661
660
  }
@@ -772,8 +771,7 @@ class Parser extends EmbeddedActionsParser {
772
771
  }
773
772
 
774
773
  if (Parser.environment.hasVariable(variableName)) {
775
- const value = Parser.environment.getVariable(variableName)
776
- return value instanceof GraphQlBuilder.GraphQlLiteral ? value.value : value
774
+ return Parser.environment.getVariable(variableName)
777
775
  }
778
776
  if (Parser.environment.hasParameter(variableName)) {
779
777
  return Parser.environment.getParameter(variableName)
@@ -882,7 +880,7 @@ namespace Parser {
882
880
  export namespace AST {
883
881
  export type FieldWhere = Input.FieldWhere<Condition>
884
882
 
885
- export type ColumnValue = Input.ColumnValue<GraphQlBuilder.GraphQlLiteral>
883
+ export type ColumnValue = Input.ColumnValue
886
884
 
887
885
  export type Condition = Input.Condition<ColumnValue>
888
886
 
@@ -43,7 +43,6 @@ import {
43
43
  UnsugarableSingleEntityEventListeners,
44
44
  } from '../treeParameters'
45
45
  import { Parser } from './Parser'
46
- import { GraphQlLiteral } from '@contember/client'
47
46
  import { ParsedHasManyRelation, ParsedHasOneRelation } from './ParserResults'
48
47
  import { TokenRegExps } from './tokenList'
49
48
  import { TreeParameterMerger } from '../treeParameters/TreeParameterMerger'
@@ -544,7 +543,6 @@ export class QueryLanguage {
544
543
  public static desugarQualifiedSingleEntity(
545
544
  { entity, ...unsugarableSingleEntity }: SugaredQualifiedSingleEntity,
546
545
  environment: Environment,
547
- options: { missingSetOnCreate?: 'fill' | 'fillAndWarn' } = {},
548
546
  ): QualifiedSingleEntity {
549
547
  let entityName: EntityName
550
548
  let where: UniqueWhere
@@ -582,16 +580,6 @@ export class QueryLanguage {
582
580
  ? this.desugarSetOnCreate(unsugarableSingleEntity.setOnCreate, environment)
583
581
  : undefined
584
582
 
585
- // todo: remove deprecated code
586
- if (!setOnCreate && options.missingSetOnCreate) {
587
- const whereValues = Object.values(where)
588
- if (whereValues.length === 1 && whereValues[0] instanceof GraphQlLiteral) {
589
- setOnCreate = where
590
- if (import.meta.env.DEV && options.missingSetOnCreate === 'fillAndWarn') {
591
- console.warn('Automatic creation of singleton entities in EditPage is deprecated. Please use setOnCreate prop.')
592
- }
593
- }
594
- }
595
583
 
596
584
  const isNonbearing: boolean =
597
585
  unsugarableSingleEntity.isNonbearing !== undefined
@@ -1,4 +1,4 @@
1
- import { GraphQlBuilder, Writable } from '@contember/client'
1
+ import { Writable } from '@contember/client'
2
2
  import type {
3
3
  Alias,
4
4
  EntityEventListenerStore,
@@ -197,23 +197,8 @@ export class TreeParameterMerger {
197
197
  if (field in originalCopy) {
198
198
  const fromOriginal = originalCopy[field]
199
199
  const fromFresh = fresh[field]
200
-
201
- if (fromOriginal instanceof GraphQlBuilder.GraphQlLiteral) {
202
- if (fromFresh instanceof GraphQlBuilder.GraphQlLiteral) {
203
- if (fromOriginal.value === fromFresh.value) {
204
- // Good, do nothing.
205
- continue
206
- } else {
207
- throw new BindingError() // TODO msg
208
- }
209
- } else {
210
- throw new BindingError() // TODO msg
211
- }
212
- }
213
200
  if (typeof fromOriginal === 'object') {
214
- if (fromFresh instanceof GraphQlBuilder.GraphQlLiteral) {
215
- throw new BindingError() // TODO msg
216
- } else if (typeof fromFresh === 'object') {
201
+ if (typeof fromFresh === 'object') {
217
202
  const merged = this.mergeSetOnCreate(fromOriginal, fromFresh)
218
203
  if (merged !== undefined) {
219
204
  originalCopy[field] = merged
@@ -1,5 +1,5 @@
1
- import { whereToFilter } from '@contember/client'
2
1
  import type { Filter, HasOneRelation } from '../../treeParameters'
2
+ import { whereToFilter } from '../../utils/whereToFilter'
3
3
 
4
4
  export const wrapFilterInHasOnes = (path: HasOneRelation[], filter: Filter): Filter => {
5
5
  for (let i = path.length - 1; i >= 0; i--) {
@@ -1,6 +1,6 @@
1
- import type { GraphQlLiteral, Input } from '@contember/client'
1
+ import type { Input } from '@contember/client'
2
2
 
3
- export type Filter<T = GraphQlLiteral> = Input.Where<Input.Condition<Input.ColumnValue<T>>>
3
+ export type Filter<T = never> = Input.Where<Input.Condition<Input.ColumnValue<T>>>
4
4
 
5
5
  // E.g. [author.son.age < 123]
6
6
  // It is *always* enclosed within square brackets.
@@ -1,6 +1,6 @@
1
- import type { CrudQueryBuilder, Input } from '@contember/client'
1
+ import type { Input } from '@contember/client'
2
2
 
3
- export type OrderBy = Input.OrderBy<CrudQueryBuilder.OrderDirection>[]
3
+ export type OrderBy = Input.OrderBy<`${Input.OrderDirection}`>[]
4
4
 
5
5
  // E.g. items.order asc, items.content.name asc
6
6
  export type SugaredOrderBy = OrderBy | string
@@ -1,6 +1,6 @@
1
- import type { GraphQlBuilder, Input } from '@contember/client'
1
+ import type { Input } from '@contember/client'
2
2
 
3
- export type UniqueWhere<T = GraphQlBuilder.GraphQlLiteral> = Input.UniqueWhere<T>
3
+ export type UniqueWhere<T = never> = Input.UniqueWhere<T>
4
4
 
5
5
  // E.g. (author.mother.id = 123)
6
6
  // It is *always* enclosed within parentheses
@@ -1,4 +1,3 @@
1
- import type { TreeFilter } from '@contember/client'
2
1
  import type { AsyncBatchUpdatesOptions } from './AsyncBatchUpdatesOptions'
3
2
  import type { BatchUpdatesOptions } from './BatchUpdatesOptions'
4
3
  import type { ExtendTree } from './ExtendTree'
@@ -16,8 +15,6 @@ export type BatchDeferredUpdates = (performUpdates: (bindingOperations: BatchUpd
16
15
 
17
16
  export interface BindingOperations<Node> extends AsyncBatchUpdatesOptions {
18
17
  // addEventListener: ...
19
- getTreeFilters: () => TreeFilter[]
20
-
21
18
  extendTree: ExtendTree<Node>
22
19
  fetchData: FetchData<Node>
23
20
  batchDeferredUpdates: BatchDeferredUpdates
@@ -0,0 +1,18 @@
1
+ import type { Input, Writable } from '@contember/client'
2
+
3
+ export const whereToFilter = (
4
+ by: Input.UniqueWhere,
5
+ ): Input.Where<Input.Condition<Input.ColumnValue>> => {
6
+ const where: Writable<Input.Where<Input.Condition<Input.ColumnValue>>> = {}
7
+ for (const key in by) {
8
+ const value = by[key]
9
+
10
+ if (typeof value === 'string' || typeof value === 'number') {
11
+ where[key] = { eq: value }
12
+ } else {
13
+ where[key] = whereToFilter(value)
14
+ }
15
+ }
16
+
17
+ return where
18
+ }
@@ -1,5 +1,4 @@
1
1
  import { expect, it, describe } from 'vitest'
2
- import { GraphQlBuilder } from '@contember/client'
3
2
  import { Environment } from '../../../../src/environment'
4
3
  import { Parser } from '../../../../src/queryLanguage'
5
4
 
@@ -26,8 +25,8 @@ describe('query language parser', () => {
26
25
  ab: 456,
27
26
  a: 123,
28
27
  x: 'x',
29
- lit: new GraphQlBuilder.GraphQlLiteral('lit'),
30
- literal: new GraphQlBuilder.GraphQlLiteral('literal'),
28
+ lit: 'lit',
29
+ literal: 'literal',
31
30
  })
32
31
  expect(
33
32
  Parser.parseQueryLanguageExpression(
@@ -1,5 +1,4 @@
1
1
  import { expect, it, describe } from 'vitest'
2
- import { GraphQlBuilder } from '@contember/client'
3
2
  import { Environment } from '../../../../src/environment'
4
3
  import { Parser } from '../../../../src/queryLanguage'
5
4
 
@@ -1,5 +1,4 @@
1
1
  import { expect, it, describe } from 'vitest'
2
- import { GraphQlLiteral } from '@contember/client'
3
2
  import { Environment } from '../../../../src/environment'
4
3
  import { Parser } from '../../../../src/queryLanguage'
5
4
 
@@ -0,0 +1,24 @@
1
+ import { expect, it, describe } from 'vitest'
2
+ import { whereToFilter } from '../../../src'
3
+
4
+ describe('whereToFilter', () => {
5
+ it('complex by', () => {
6
+ expect(
7
+ whereToFilter({
8
+ foo: {
9
+ bar: {
10
+ baz: '123',
11
+ xyz: 456,
12
+ },
13
+ },
14
+ }),
15
+ ).toEqual({
16
+ foo: {
17
+ bar: {
18
+ baz: { eq: '123' },
19
+ xyz: { eq: 456 },
20
+ },
21
+ },
22
+ })
23
+ })
24
+ })