@contember/binding-common 2.1.0-alpha.9 → 2.1.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/development/index.cjs +43 -43
- package/dist/development/index.js +16 -16
- package/dist/development/src/BindingError.cjs.map +1 -1
- package/dist/development/src/BindingError.js.map +1 -1
- package/dist/development/src/DataBindingExtendAborted.cjs +1 -1
- package/dist/development/src/DataBindingExtendAborted.cjs.map +1 -1
- package/dist/development/src/DataBindingExtendAborted.js +1 -1
- package/dist/development/src/DataBindingExtendAborted.js.map +1 -1
- package/dist/development/src/LocalizedBindingError.cjs.map +1 -1
- package/dist/development/src/LocalizedBindingError.js.map +1 -1
- package/dist/development/src/RuntimeId.cjs.map +1 -1
- package/dist/development/src/RuntimeId.js.map +1 -1
- package/dist/development/src/environment/Environment.cjs +4 -2
- package/dist/development/src/environment/Environment.cjs.map +1 -1
- package/dist/development/src/environment/Environment.js +4 -2
- package/dist/development/src/environment/Environment.js.map +1 -1
- package/dist/development/src/environment/TreeNodeEnvironmentFactory.cjs.map +1 -1
- package/dist/development/src/environment/TreeNodeEnvironmentFactory.js.map +1 -1
- package/dist/development/src/environment/VariableFieldValue.cjs.map +1 -1
- package/dist/development/src/environment/VariableFieldValue.js.map +1 -1
- package/dist/development/src/environment/VariableInputTransformer.cjs.map +1 -1
- package/dist/development/src/environment/VariableInputTransformer.js.map +1 -1
- package/dist/development/src/markers/EntityFieldMarkersContainer.cjs.map +1 -1
- package/dist/development/src/markers/EntityFieldMarkersContainer.js.map +1 -1
- package/dist/development/src/markers/EntityFieldsWithHoistablesMarker.cjs.map +1 -1
- package/dist/development/src/markers/EntityFieldsWithHoistablesMarker.js.map +1 -1
- package/dist/development/src/markers/EntityListSubTreeMarker.cjs.map +1 -1
- package/dist/development/src/markers/EntityListSubTreeMarker.js.map +1 -1
- package/dist/development/src/markers/EntitySubTreeMarker.cjs.map +1 -1
- package/dist/development/src/markers/EntitySubTreeMarker.js.map +1 -1
- package/dist/development/src/markers/FieldMarker.cjs.map +1 -1
- package/dist/development/src/markers/FieldMarker.js.map +1 -1
- package/dist/development/src/markers/HasManyRelationMarker.cjs.map +1 -1
- package/dist/development/src/markers/HasManyRelationMarker.js.map +1 -1
- package/dist/development/src/markers/HasOneRelationMarker.cjs.map +1 -1
- package/dist/development/src/markers/HasOneRelationMarker.js.map +1 -1
- package/dist/development/src/markers/MarkerComparator.cjs +1 -1
- package/dist/development/src/markers/MarkerComparator.cjs.map +1 -1
- package/dist/development/src/markers/MarkerComparator.js +1 -1
- package/dist/development/src/markers/MarkerComparator.js.map +1 -1
- package/dist/development/src/markers/MarkerMerger.cjs.map +1 -1
- package/dist/development/src/markers/MarkerMerger.js.map +1 -1
- package/dist/development/src/markers/MarkerTreeRoot.cjs.map +1 -1
- package/dist/development/src/markers/MarkerTreeRoot.js.map +1 -1
- package/dist/development/src/markers/PlaceholderGenerator.cjs.map +1 -1
- package/dist/development/src/markers/PlaceholderGenerator.js.map +1 -1
- package/dist/development/src/markers/PlaceholderParametersGenerator.cjs.map +1 -1
- package/dist/development/src/markers/PlaceholderParametersGenerator.js.map +1 -1
- package/dist/development/src/queryLanguage/CacheStore.cjs.map +1 -1
- package/dist/development/src/queryLanguage/CacheStore.js.map +1 -1
- package/dist/development/src/queryLanguage/MarkerFactory.cjs.map +1 -1
- package/dist/development/src/queryLanguage/MarkerFactory.js.map +1 -1
- package/dist/development/src/queryLanguage/Parser.cjs +4 -12
- package/dist/development/src/queryLanguage/Parser.cjs.map +1 -1
- package/dist/development/src/queryLanguage/Parser.js +5 -13
- package/dist/development/src/queryLanguage/Parser.js.map +1 -1
- package/dist/development/src/queryLanguage/QueryLanguage.cjs +1 -1
- package/dist/development/src/queryLanguage/QueryLanguage.cjs.map +1 -1
- package/dist/development/src/queryLanguage/QueryLanguage.js +1 -1
- package/dist/development/src/queryLanguage/QueryLanguage.js.map +1 -1
- package/dist/development/src/queryLanguage/tokenList.cjs.map +1 -1
- package/dist/development/src/queryLanguage/tokenList.js.map +1 -1
- package/dist/development/src/schema/Schema.cjs.map +1 -1
- package/dist/development/src/schema/Schema.js.map +1 -1
- package/dist/development/src/schema/SchemaLoader.cjs.map +1 -1
- package/dist/development/src/schema/SchemaLoader.js.map +1 -1
- package/dist/development/src/schema/SchemaPreprocessor.cjs.map +1 -1
- package/dist/development/src/schema/SchemaPreprocessor.js.map +1 -1
- package/dist/development/src/treeParameters/EventListenersStore.cjs.map +1 -1
- package/dist/development/src/treeParameters/EventListenersStore.js.map +1 -1
- package/dist/development/src/treeParameters/TreeParameterMerger.cjs +3 -1
- package/dist/development/src/treeParameters/TreeParameterMerger.cjs.map +1 -1
- package/dist/development/src/treeParameters/TreeParameterMerger.js +3 -1
- package/dist/development/src/treeParameters/TreeParameterMerger.js.map +1 -1
- package/dist/development/src/treeParameters/helpers/wrapFilterInHasOnes.cjs.map +1 -1
- package/dist/development/src/treeParameters/helpers/wrapFilterInHasOnes.js.map +1 -1
- package/dist/development/src/types/EntityAccessor.cjs.map +1 -1
- package/dist/development/src/types/EntityAccessor.js.map +1 -1
- package/dist/development/src/types/EntityListAccessor.cjs.map +1 -1
- package/dist/development/src/types/EntityListAccessor.js.map +1 -1
- package/dist/development/src/types/ErrorAccessor.cjs.map +1 -1
- package/dist/development/src/types/ErrorAccessor.js.map +1 -1
- package/dist/development/src/types/FieldAccessor.cjs.map +1 -1
- package/dist/development/src/types/FieldAccessor.js.map +1 -1
- package/dist/development/src/types/PersistResult.cjs.map +1 -1
- package/dist/development/src/types/PersistResult.js.map +1 -1
- package/dist/development/src/types/TreeRootAccessor.cjs.map +1 -1
- package/dist/development/src/types/TreeRootAccessor.js.map +1 -1
- package/dist/development/src/utils/Hashing.cjs.map +1 -1
- package/dist/development/src/utils/Hashing.js.map +1 -1
- package/dist/development/src/utils/TreeNodeUtils.cjs +1 -1
- package/dist/development/src/utils/TreeNodeUtils.cjs.map +1 -1
- package/dist/development/src/utils/TreeNodeUtils.js +1 -1
- package/dist/development/src/utils/TreeNodeUtils.js.map +1 -1
- package/dist/development/src/utils/assertNever.cjs.map +1 -1
- package/dist/development/src/utils/assertNever.js.map +1 -1
- package/dist/development/src/utils/createQueryBuilder.cjs +25 -21
- package/dist/development/src/utils/createQueryBuilder.cjs.map +1 -1
- package/dist/development/src/utils/createQueryBuilder.js +25 -21
- package/dist/development/src/utils/createQueryBuilder.js.map +1 -1
- package/dist/development/src/utils/generateEnumerabilityPreventingEntropy.cjs.map +1 -1
- package/dist/development/src/utils/generateEnumerabilityPreventingEntropy.js.map +1 -1
- package/dist/development/src/utils/whereToFilter.cjs.map +1 -1
- package/dist/development/src/utils/whereToFilter.js.map +1 -1
- package/dist/production/index.cjs +43 -43
- package/dist/production/index.js +16 -16
- package/dist/production/src/BindingError.cjs.map +1 -1
- package/dist/production/src/BindingError.js.map +1 -1
- package/dist/production/src/DataBindingExtendAborted.cjs +1 -1
- package/dist/production/src/DataBindingExtendAborted.cjs.map +1 -1
- package/dist/production/src/DataBindingExtendAborted.js +1 -1
- package/dist/production/src/DataBindingExtendAborted.js.map +1 -1
- package/dist/production/src/LocalizedBindingError.cjs.map +1 -1
- package/dist/production/src/LocalizedBindingError.js.map +1 -1
- package/dist/production/src/RuntimeId.cjs.map +1 -1
- package/dist/production/src/RuntimeId.js.map +1 -1
- package/dist/production/src/environment/Environment.cjs +4 -2
- package/dist/production/src/environment/Environment.cjs.map +1 -1
- package/dist/production/src/environment/Environment.js +4 -2
- package/dist/production/src/environment/Environment.js.map +1 -1
- package/dist/production/src/environment/TreeNodeEnvironmentFactory.cjs.map +1 -1
- package/dist/production/src/environment/TreeNodeEnvironmentFactory.js.map +1 -1
- package/dist/production/src/environment/VariableFieldValue.cjs.map +1 -1
- package/dist/production/src/environment/VariableFieldValue.js.map +1 -1
- package/dist/production/src/environment/VariableInputTransformer.cjs.map +1 -1
- package/dist/production/src/environment/VariableInputTransformer.js.map +1 -1
- package/dist/production/src/markers/EntityFieldMarkersContainer.cjs.map +1 -1
- package/dist/production/src/markers/EntityFieldMarkersContainer.js.map +1 -1
- package/dist/production/src/markers/EntityFieldsWithHoistablesMarker.cjs.map +1 -1
- package/dist/production/src/markers/EntityFieldsWithHoistablesMarker.js.map +1 -1
- package/dist/production/src/markers/EntityListSubTreeMarker.cjs.map +1 -1
- package/dist/production/src/markers/EntityListSubTreeMarker.js.map +1 -1
- package/dist/production/src/markers/EntitySubTreeMarker.cjs.map +1 -1
- package/dist/production/src/markers/EntitySubTreeMarker.js.map +1 -1
- package/dist/production/src/markers/FieldMarker.cjs.map +1 -1
- package/dist/production/src/markers/FieldMarker.js.map +1 -1
- package/dist/production/src/markers/HasManyRelationMarker.cjs.map +1 -1
- package/dist/production/src/markers/HasManyRelationMarker.js.map +1 -1
- package/dist/production/src/markers/HasOneRelationMarker.cjs.map +1 -1
- package/dist/production/src/markers/HasOneRelationMarker.js.map +1 -1
- package/dist/production/src/markers/MarkerComparator.cjs +1 -1
- package/dist/production/src/markers/MarkerComparator.cjs.map +1 -1
- package/dist/production/src/markers/MarkerComparator.js +1 -1
- package/dist/production/src/markers/MarkerComparator.js.map +1 -1
- package/dist/production/src/markers/MarkerMerger.cjs.map +1 -1
- package/dist/production/src/markers/MarkerMerger.js.map +1 -1
- package/dist/production/src/markers/MarkerTreeRoot.cjs.map +1 -1
- package/dist/production/src/markers/MarkerTreeRoot.js.map +1 -1
- package/dist/production/src/markers/PlaceholderGenerator.cjs.map +1 -1
- package/dist/production/src/markers/PlaceholderGenerator.js.map +1 -1
- package/dist/production/src/markers/PlaceholderParametersGenerator.cjs.map +1 -1
- package/dist/production/src/markers/PlaceholderParametersGenerator.js.map +1 -1
- package/dist/production/src/queryLanguage/CacheStore.cjs.map +1 -1
- package/dist/production/src/queryLanguage/CacheStore.js.map +1 -1
- package/dist/production/src/queryLanguage/MarkerFactory.cjs.map +1 -1
- package/dist/production/src/queryLanguage/MarkerFactory.js.map +1 -1
- package/dist/production/src/queryLanguage/Parser.cjs +4 -12
- package/dist/production/src/queryLanguage/Parser.cjs.map +1 -1
- package/dist/production/src/queryLanguage/Parser.js +5 -13
- package/dist/production/src/queryLanguage/Parser.js.map +1 -1
- package/dist/production/src/queryLanguage/QueryLanguage.cjs +1 -1
- package/dist/production/src/queryLanguage/QueryLanguage.cjs.map +1 -1
- package/dist/production/src/queryLanguage/QueryLanguage.js +1 -1
- package/dist/production/src/queryLanguage/QueryLanguage.js.map +1 -1
- package/dist/production/src/queryLanguage/tokenList.cjs.map +1 -1
- package/dist/production/src/queryLanguage/tokenList.js.map +1 -1
- package/dist/production/src/schema/Schema.cjs.map +1 -1
- package/dist/production/src/schema/Schema.js.map +1 -1
- package/dist/production/src/schema/SchemaLoader.cjs.map +1 -1
- package/dist/production/src/schema/SchemaLoader.js.map +1 -1
- package/dist/production/src/schema/SchemaPreprocessor.cjs.map +1 -1
- package/dist/production/src/schema/SchemaPreprocessor.js.map +1 -1
- package/dist/production/src/treeParameters/EventListenersStore.cjs.map +1 -1
- package/dist/production/src/treeParameters/EventListenersStore.js.map +1 -1
- package/dist/production/src/treeParameters/TreeParameterMerger.cjs +3 -1
- package/dist/production/src/treeParameters/TreeParameterMerger.cjs.map +1 -1
- package/dist/production/src/treeParameters/TreeParameterMerger.js +3 -1
- package/dist/production/src/treeParameters/TreeParameterMerger.js.map +1 -1
- package/dist/production/src/treeParameters/helpers/wrapFilterInHasOnes.cjs.map +1 -1
- package/dist/production/src/treeParameters/helpers/wrapFilterInHasOnes.js.map +1 -1
- package/dist/production/src/types/EntityAccessor.cjs.map +1 -1
- package/dist/production/src/types/EntityAccessor.js.map +1 -1
- package/dist/production/src/types/EntityListAccessor.cjs.map +1 -1
- package/dist/production/src/types/EntityListAccessor.js.map +1 -1
- package/dist/production/src/types/ErrorAccessor.cjs.map +1 -1
- package/dist/production/src/types/ErrorAccessor.js.map +1 -1
- package/dist/production/src/types/FieldAccessor.cjs.map +1 -1
- package/dist/production/src/types/FieldAccessor.js.map +1 -1
- package/dist/production/src/types/PersistResult.cjs.map +1 -1
- package/dist/production/src/types/PersistResult.js.map +1 -1
- package/dist/production/src/types/TreeRootAccessor.cjs.map +1 -1
- package/dist/production/src/types/TreeRootAccessor.js.map +1 -1
- package/dist/production/src/utils/Hashing.cjs.map +1 -1
- package/dist/production/src/utils/Hashing.js.map +1 -1
- package/dist/production/src/utils/TreeNodeUtils.cjs +1 -1
- package/dist/production/src/utils/TreeNodeUtils.cjs.map +1 -1
- package/dist/production/src/utils/TreeNodeUtils.js +1 -1
- package/dist/production/src/utils/TreeNodeUtils.js.map +1 -1
- package/dist/production/src/utils/assertNever.cjs.map +1 -1
- package/dist/production/src/utils/assertNever.js.map +1 -1
- package/dist/production/src/utils/createQueryBuilder.cjs +25 -21
- package/dist/production/src/utils/createQueryBuilder.cjs.map +1 -1
- package/dist/production/src/utils/createQueryBuilder.js +25 -21
- package/dist/production/src/utils/createQueryBuilder.js.map +1 -1
- package/dist/production/src/utils/generateEnumerabilityPreventingEntropy.cjs.map +1 -1
- package/dist/production/src/utils/generateEnumerabilityPreventingEntropy.js.map +1 -1
- package/dist/production/src/utils/whereToFilter.cjs.map +1 -1
- package/dist/production/src/utils/whereToFilter.js.map +1 -1
- package/dist/types/LocalizedBindingError.d.ts.map +1 -1
- package/dist/types/environment/Environment.d.ts.map +1 -1
- package/dist/types/environment/TreeNodeEnvironmentFactory.d.ts.map +1 -1
- package/dist/types/markers/PlaceholderParametersGenerator.d.ts.map +1 -1
- package/dist/types/queryLanguage/MarkerFactory.d.ts.map +1 -1
- package/dist/types/queryLanguage/Parser.d.ts.map +1 -1
- package/dist/types/queryLanguage/ParserResults.d.ts.map +1 -1
- package/dist/types/queryLanguage/QueryLanguage.d.ts +1 -1
- package/dist/types/queryLanguage/QueryLanguage.d.ts.map +1 -1
- package/dist/types/schema/Schema.d.ts.map +1 -1
- package/dist/types/schema/SchemaLoader.d.ts.map +1 -1
- package/dist/types/treeParameters/EventListenersStore.d.ts.map +1 -1
- package/dist/types/treeParameters/Normalized.d.ts.map +1 -1
- package/dist/types/treeParameters/Sugared.d.ts.map +1 -1
- package/dist/types/treeParameters/TreeParameterMerger.d.ts.map +1 -1
- package/dist/types/treeParameters/index.d.ts.map +1 -1
- package/dist/types/treeParameters/primitives/SetOnCreate.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/dist/types/types/EntityAccessor.d.ts.map +1 -1
- package/dist/types/types/EntityListAccessor.d.ts +1 -1
- package/dist/types/types/EntityListAccessor.d.ts.map +1 -1
- package/dist/types/types/ErrorAccessor.d.ts.map +1 -1
- package/dist/types/types/FieldAccessor.d.ts +1 -1
- package/dist/types/types/FieldAccessor.d.ts.map +1 -1
- package/dist/types/types/GetEntityListSubTree.d.ts.map +1 -1
- package/dist/types/types/GetEntitySubTree.d.ts.map +1 -1
- package/dist/types/types/PersistErrorOptions.d.ts.map +1 -1
- package/dist/types/types/PersistResult.d.ts.map +1 -1
- package/dist/types/utils/TreeNodeUtils.d.ts.map +1 -1
- package/dist/types/utils/createQueryBuilder.d.ts.map +1 -1
- package/package.json +14 -9
- package/src/LocalizedBindingError.ts +1 -7
- package/src/environment/Environment.ts +5 -5
- package/src/environment/TreeNodeEnvironmentFactory.ts +1 -5
- package/src/markers/MarkerComparator.ts +7 -7
- package/src/markers/MarkerMerger.ts +2 -2
- package/src/markers/PlaceholderParametersGenerator.ts +0 -2
- package/src/queryLanguage/CacheStore.ts +3 -3
- package/src/queryLanguage/MarkerFactory.ts +6 -19
- package/src/queryLanguage/Parser.ts +16 -24
- package/src/queryLanguage/ParserResults.ts +2 -7
- package/src/queryLanguage/QueryLanguage.ts +33 -44
- package/src/schema/Schema.ts +0 -1
- package/src/schema/SchemaLoader.ts +37 -39
- package/src/treeParameters/EventListenersStore.ts +0 -1
- package/src/treeParameters/Normalized.ts +0 -2
- package/src/treeParameters/Sugared.ts +15 -27
- package/src/treeParameters/TreeParameterMerger.ts +13 -9
- package/src/treeParameters/index.ts +0 -1
- package/src/treeParameters/primitives/SetOnCreate.ts +0 -2
- package/src/types/EntityAccessor.ts +1 -1
- package/src/types/EntityListAccessor.ts +1 -1
- package/src/types/ErrorAccessor.ts +8 -5
- package/src/types/FieldAccessor.ts +1 -2
- package/src/types/GetEntityListSubTree.ts +1 -6
- package/src/types/GetEntitySubTree.ts +1 -6
- package/src/types/PersistErrorOptions.ts +0 -1
- package/src/types/PersistResult.ts +1 -1
- package/src/utils/TreeNodeUtils.ts +16 -8
- package/src/utils/createQueryBuilder.ts +26 -22
- package/tests/cases/unit/queryLanguage/filter.spec.tsx +1 -2
- package/tests/cases/unit/queryLanguage/general.spec.tsx +1 -1
- package/tests/cases/unit/queryLanguage/orderBy.spec.tsx +1 -1
- package/tests/cases/unit/queryLanguage/qualifiedEntityList.spec.tsx +1 -1
- package/tests/cases/unit/queryLanguage/qualifiedFieldList.spec.tsx +1 -1
- package/tests/cases/unit/queryLanguage/relativeEntityList.spec.tsx +1 -1
- package/tests/cases/unit/queryLanguage/singleRelativeField.spec.tsx +1 -1
- package/tests/cases/unit/queryLanguage/taggedMap.spec.tsx +1 -2
- package/tests/cases/unit/whereToFilter.ts +1 -1
|
@@ -77,7 +77,6 @@ export interface SugaredRelativeEntityList extends UnsugarableEntityListEventLis
|
|
|
77
77
|
withMeta?: FieldMeta
|
|
78
78
|
}
|
|
79
79
|
|
|
80
|
-
|
|
81
80
|
export interface SugaredRelativeSingleEntity extends UnsugarableSingleEntityEventListeners {
|
|
82
81
|
// E.g. localesByLocale(locale.slug = en)
|
|
83
82
|
field:
|
|
@@ -91,7 +90,6 @@ export interface SugaredRelativeSingleEntity extends UnsugarableSingleEntityEven
|
|
|
91
90
|
withMeta?: FieldMeta
|
|
92
91
|
}
|
|
93
92
|
|
|
94
|
-
|
|
95
93
|
export interface SugaredRelativeSingleField extends UnsugarableFieldEventListeners {
|
|
96
94
|
/** E.g. authors(id = 123).person.name */
|
|
97
95
|
field:
|
|
@@ -127,7 +125,6 @@ export interface SugaredQualifiedFieldList extends UnsugarableFieldEventListener
|
|
|
127
125
|
isNonbearing?: boolean
|
|
128
126
|
}
|
|
129
127
|
|
|
130
|
-
|
|
131
128
|
export interface SugaredUnconstrainedQualifiedEntityList extends UnsugarableEntityListEventListeners {
|
|
132
129
|
entities:
|
|
133
130
|
| string
|
|
@@ -145,7 +142,6 @@ export interface SugaredUnconstrainedQualifiedEntityList extends UnsugarableEnti
|
|
|
145
142
|
setOnCreate?: SugaredSetOnCreate
|
|
146
143
|
}
|
|
147
144
|
|
|
148
|
-
|
|
149
145
|
export interface SugaredUnconstrainedQualifiedSingleEntity extends UnsugarableSingleEntityEventListeners {
|
|
150
146
|
// E.g. Author.son.sisters(name = 'Jane')
|
|
151
147
|
entity:
|
|
@@ -163,13 +159,11 @@ export interface SugaredUnconstrainedQualifiedSingleEntity extends UnsugarableSi
|
|
|
163
159
|
setOnCreate?: SugaredSetOnCreate
|
|
164
160
|
}
|
|
165
161
|
|
|
166
|
-
|
|
167
162
|
export interface SugarableHasManyRelation {
|
|
168
163
|
filter?: SugaredFilter
|
|
169
164
|
field: FieldName
|
|
170
165
|
}
|
|
171
166
|
|
|
172
|
-
|
|
173
167
|
export interface SugarableHasOneRelation {
|
|
174
168
|
field: FieldName
|
|
175
169
|
reducedBy?: SugaredUniqueWhere
|
|
@@ -190,8 +184,6 @@ export type UnsugarableEntityListEventListeners = {
|
|
|
190
184
|
onChildUpdate?: EntityAccessor.UpdateListener | Set<EntityAccessor.UpdateListener>
|
|
191
185
|
}
|
|
192
186
|
|
|
193
|
-
|
|
194
|
-
|
|
195
187
|
export type UnsugarableSingleEntityEventListeners = {
|
|
196
188
|
onBeforePersist?: EntityAccessor.BeforePersistHandler | Set<EntityAccessor.BeforePersistHandler>
|
|
197
189
|
onBeforeUpdate?: EntityAccessor.BatchUpdatesHandler | Set<EntityAccessor.BatchUpdatesHandler>
|
|
@@ -200,7 +192,7 @@ export type UnsugarableSingleEntityEventListeners = {
|
|
|
200
192
|
onUpdate?: EntityAccessor.UpdateListener | Set<EntityAccessor.UpdateListener>
|
|
201
193
|
onInitialize?: EntityAccessor.BatchUpdatesHandler | Set<EntityAccessor.BatchUpdatesHandler>
|
|
202
194
|
onConnectionUpdate?: {
|
|
203
|
-
[fieldName: string]:
|
|
195
|
+
[fieldName: string]: EntityAccessor.UpdateListener | Set<EntityAccessor.UpdateListener>
|
|
204
196
|
}
|
|
205
197
|
}
|
|
206
198
|
|
|
@@ -212,21 +204,17 @@ export type UnsugarableFieldEventListeners<Persisted extends FieldValue = FieldV
|
|
|
212
204
|
|
|
213
205
|
// --- type checks
|
|
214
206
|
|
|
215
|
-
const checkEntityListEvents:
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
const checkSingleEntityEvents:
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
? `on${Capitalize<keyof FieldAccessor.FieldEventListenerMap>}` extends keyof UnsugarableFieldEventListeners
|
|
230
|
-
? true
|
|
231
|
-
: false
|
|
232
|
-
: false = true
|
|
207
|
+
const checkEntityListEvents: keyof UnsugarableEntityListEventListeners extends
|
|
208
|
+
`on${Capitalize<keyof (EntityListAccessor.EntityListEventListenerMap & EntityListAccessor.ChildEventListenerMap)>}`
|
|
209
|
+
? `on${Capitalize<keyof (EntityListAccessor.EntityListEventListenerMap & EntityListAccessor.ChildEventListenerMap)>}` extends
|
|
210
|
+
keyof UnsugarableEntityListEventListeners ? true
|
|
211
|
+
: false
|
|
212
|
+
: false = true
|
|
213
|
+
const checkSingleEntityEvents: keyof UnsugarableSingleEntityEventListeners extends `on${Capitalize<keyof EntityAccessor.EntityEventListenerMap>}`
|
|
214
|
+
? `on${Capitalize<keyof EntityAccessor.EntityEventListenerMap>}` extends keyof UnsugarableSingleEntityEventListeners ? true
|
|
215
|
+
: false
|
|
216
|
+
: false = true
|
|
217
|
+
const checkFieldEvents: keyof UnsugarableFieldEventListeners extends `on${Capitalize<keyof FieldAccessor.FieldEventListenerMap>}`
|
|
218
|
+
? `on${Capitalize<keyof FieldAccessor.FieldEventListenerMap>}` extends keyof UnsugarableFieldEventListeners ? true
|
|
219
|
+
: false
|
|
220
|
+
: false = true
|
|
@@ -47,8 +47,8 @@ export class TreeParameterMerger {
|
|
|
47
47
|
): HasManyRelation {
|
|
48
48
|
if (original.initialEntityCount !== fresh.initialEntityCount) {
|
|
49
49
|
throw new BindingError(
|
|
50
|
-
`Detected hasMany relations on the same field '${original.field}' with different preferred initial `
|
|
51
|
-
`entity counts: '${original.initialEntityCount}' and '${fresh.initialEntityCount}' respectively.`,
|
|
50
|
+
`Detected hasMany relations on the same field '${original.field}' with different preferred initial `
|
|
51
|
+
+ `entity counts: '${original.initialEntityCount}' and '${fresh.initialEntityCount}' respectively.`,
|
|
52
52
|
)
|
|
53
53
|
}
|
|
54
54
|
return {
|
|
@@ -122,8 +122,8 @@ export class TreeParameterMerger {
|
|
|
122
122
|
): QualifiedEntityList | UnconstrainedQualifiedEntityList {
|
|
123
123
|
if (original.initialEntityCount !== fresh.initialEntityCount) {
|
|
124
124
|
throw new BindingError(
|
|
125
|
-
`Detected sub trees of the same entity '${original.entityName}' with different preferred initial `
|
|
126
|
-
`entity counts: '${original.initialEntityCount}' and '${fresh.initialEntityCount}' respectively.`,
|
|
125
|
+
`Detected sub trees of the same entity '${original.entityName}' with different preferred initial `
|
|
126
|
+
+ `entity counts: '${original.initialEntityCount}' and '${fresh.initialEntityCount}' respectively.`,
|
|
127
127
|
)
|
|
128
128
|
}
|
|
129
129
|
|
|
@@ -171,9 +171,16 @@ export class TreeParameterMerger {
|
|
|
171
171
|
}
|
|
172
172
|
}
|
|
173
173
|
|
|
174
|
-
public static mergeSingleField(
|
|
174
|
+
public static mergeSingleField(
|
|
175
|
+
original: Omit<RelativeSingleField, 'hasOneRelationPath'>,
|
|
176
|
+
fresh: Omit<RelativeSingleField, 'hasOneRelationPath'>,
|
|
177
|
+
): Omit<RelativeSingleField, 'hasOneRelationPath'> {
|
|
175
178
|
if (original.defaultValue !== undefined && fresh.defaultValue !== undefined && original.defaultValue !== fresh.defaultValue) {
|
|
176
|
-
throw new BindingError(
|
|
179
|
+
throw new BindingError(
|
|
180
|
+
`MarkerTreeGenerator merging: multiple fields "${original.field}" with different defaultValue found: ${
|
|
181
|
+
JSON.stringify([original.defaultValue, fresh.defaultValue])
|
|
182
|
+
}, `,
|
|
183
|
+
)
|
|
177
184
|
}
|
|
178
185
|
return {
|
|
179
186
|
field: original.field,
|
|
@@ -184,7 +191,6 @@ export class TreeParameterMerger {
|
|
|
184
191
|
}
|
|
185
192
|
}
|
|
186
193
|
|
|
187
|
-
|
|
188
194
|
public static mergeSetOnCreate(original: SetOnCreate, fresh: SetOnCreate): SetOnCreate {
|
|
189
195
|
if (original === undefined && fresh === undefined) {
|
|
190
196
|
return undefined
|
|
@@ -272,7 +278,6 @@ export class TreeParameterMerger {
|
|
|
272
278
|
}
|
|
273
279
|
}
|
|
274
280
|
|
|
275
|
-
|
|
276
281
|
private static mergeEventStore<Events extends GenericEventsMap>(
|
|
277
282
|
original: EventListenersStore<Events> | undefined,
|
|
278
283
|
fresh: EventListenersStore<Events> | undefined,
|
|
@@ -339,7 +344,6 @@ export class TreeParameterMerger {
|
|
|
339
344
|
return this.mergeSets(original, fresh)
|
|
340
345
|
}
|
|
341
346
|
|
|
342
|
-
|
|
343
347
|
private static mergeFieldMeta(
|
|
344
348
|
original: FieldMeta,
|
|
345
349
|
fresh: FieldMeta,
|
|
@@ -2,7 +2,5 @@ import type { SugaredUniqueWhere, UniqueWhere } from './UniqueWhere'
|
|
|
2
2
|
|
|
3
3
|
export type SetOnCreate = UniqueWhere | undefined
|
|
4
4
|
|
|
5
|
-
|
|
6
5
|
// TODO maybe make an entirely new grammar that doesn't require parentheses.
|
|
7
6
|
export type SugaredSetOnCreate = SugaredUniqueWhere | SugaredUniqueWhere[] | Exclude<SetOnCreate, undefined>
|
|
8
|
-
|
|
@@ -30,11 +30,14 @@ namespace ErrorAccessor {
|
|
|
30
30
|
|
|
31
31
|
export type WellKnownErrorCode = 'fieldRequired'
|
|
32
32
|
|
|
33
|
-
export const normalizeError = (error: Error | string): Error =>
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
33
|
+
export const normalizeError = (error: Error | string): Error =>
|
|
34
|
+
typeof error === 'string'
|
|
35
|
+
? {
|
|
36
|
+
type: 'validation',
|
|
37
|
+
message: error,
|
|
38
|
+
code: undefined,
|
|
39
|
+
}
|
|
40
|
+
: error
|
|
38
41
|
}
|
|
39
42
|
export { ErrorAccessor }
|
|
40
43
|
|
|
@@ -5,7 +5,6 @@ import { ErrorAccessor } from './ErrorAccessor'
|
|
|
5
5
|
import type { SchemaColumn } from '../schema'
|
|
6
6
|
import { EntityAccessor } from './EntityAccessor'
|
|
7
7
|
|
|
8
|
-
|
|
9
8
|
export const isFieldAccessor = (accessor: unknown): accessor is FieldAccessor =>
|
|
10
9
|
accessor !== null && typeof accessor === 'object' && '__type' in accessor && accessor.__type === 'FieldAccessor'
|
|
11
10
|
|
|
@@ -71,4 +70,4 @@ namespace FieldAccessor {
|
|
|
71
70
|
) => () => void
|
|
72
71
|
}
|
|
73
72
|
|
|
74
|
-
export {
|
|
73
|
+
export type { FieldAccessor }
|
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
import type { Environment } from '../environment'
|
|
2
|
-
import type {
|
|
3
|
-
Alias,
|
|
4
|
-
SugaredQualifiedEntityList,
|
|
5
|
-
SugaredUnconstrainedQualifiedEntityList,
|
|
6
|
-
TreeRootId,
|
|
7
|
-
} from '../treeParameters'
|
|
2
|
+
import type { Alias, SugaredQualifiedEntityList, SugaredUnconstrainedQualifiedEntityList, TreeRootId } from '../treeParameters'
|
|
8
3
|
import type { EntityListAccessor } from './EntityListAccessor'
|
|
9
4
|
|
|
10
5
|
export type GetEntityListSubTree = (
|
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
import type { Environment } from '../environment'
|
|
2
|
-
import type {
|
|
3
|
-
Alias,
|
|
4
|
-
SugaredQualifiedSingleEntity,
|
|
5
|
-
SugaredUnconstrainedQualifiedSingleEntity,
|
|
6
|
-
TreeRootId,
|
|
7
|
-
} from '../treeParameters'
|
|
2
|
+
import type { Alias, SugaredQualifiedSingleEntity, SugaredUnconstrainedQualifiedSingleEntity, TreeRootId } from '../treeParameters'
|
|
8
3
|
import type { EntityAccessor } from './EntityAccessor'
|
|
9
4
|
|
|
10
5
|
export type GetEntitySubTree = (
|
|
@@ -25,7 +25,7 @@ export interface InvalidResponseResult {
|
|
|
25
25
|
|
|
26
26
|
export type SuccessfulPersistResult = NothingToPersistPersistResult | JustSuccessPersistResult
|
|
27
27
|
|
|
28
|
-
export type ErrorPersistResult = InvalidInputPersistResult
|
|
28
|
+
export type ErrorPersistResult = InvalidInputPersistResult | InvalidResponseResult
|
|
29
29
|
|
|
30
30
|
export const isErrorPersistResult = (result: unknown): result is ErrorPersistResult => {
|
|
31
31
|
return typeof result === 'object' && result !== null && 'type' in result && (result.type === 'invalidInput' || result.type === 'invalidResponse')
|
|
@@ -4,7 +4,6 @@ import { BindingError } from '../BindingError'
|
|
|
4
4
|
import levenshtein from 'js-levenshtein'
|
|
5
5
|
|
|
6
6
|
export class TreeNodeUtils {
|
|
7
|
-
|
|
8
7
|
public static resolveEntity(schema: Schema, entityName: string, type: 'entity' | 'entity list'): SchemaEntity {
|
|
9
8
|
const entity = schema.getEntityOrUndefined(entityName)
|
|
10
9
|
if (!entity) {
|
|
@@ -22,12 +21,16 @@ export class TreeNodeUtils {
|
|
|
22
21
|
return this.resolveRelation(environment, field, 'a has-one relation', ['ManyHasOne', 'OneHasOne'])
|
|
23
22
|
}
|
|
24
23
|
|
|
25
|
-
|
|
26
24
|
public static resolveHasManyRelation(environment: Environment, field: string): SchemaRelation {
|
|
27
25
|
return this.resolveRelation(environment, field, 'a has-many relation', ['ManyHasMany', 'OneHasMany'])
|
|
28
26
|
}
|
|
29
27
|
|
|
30
|
-
private static resolveRelation(
|
|
28
|
+
private static resolveRelation(
|
|
29
|
+
environment: Environment,
|
|
30
|
+
field: string,
|
|
31
|
+
relationDescription: string,
|
|
32
|
+
expectedRelationType: BaseRelation['type'][],
|
|
33
|
+
): SchemaRelation {
|
|
31
34
|
return this.resolveField(environment, field, (field): field is SchemaRelation => {
|
|
32
35
|
return field.__typename === '_Relation' && expectedRelationType.includes(field.type)
|
|
33
36
|
}, relationDescription)
|
|
@@ -39,7 +42,12 @@ export class TreeNodeUtils {
|
|
|
39
42
|
// TODO run custom validators
|
|
40
43
|
}
|
|
41
44
|
|
|
42
|
-
private static resolveField<T extends SchemaField>(
|
|
45
|
+
private static resolveField<T extends SchemaField>(
|
|
46
|
+
environment: Environment,
|
|
47
|
+
fieldName: string,
|
|
48
|
+
matcher: (field: SchemaField) => field is T,
|
|
49
|
+
expectedDescription: string,
|
|
50
|
+
): T {
|
|
43
51
|
const treeLocation = environment.getSubTreeNode()
|
|
44
52
|
const entity = treeLocation.entity
|
|
45
53
|
const field = entity.fields.get(fieldName)
|
|
@@ -56,8 +64,8 @@ export class TreeNodeUtils {
|
|
|
56
64
|
if (!matcher(field)) {
|
|
57
65
|
const actual = field.__typename === '_Column' ? 'an ordinary field' : `a ${field.type} relation`
|
|
58
66
|
throw new BindingError(
|
|
59
|
-
`Invalid field: the name '${field.name}' on ${this.describeLocation(environment)} `
|
|
60
|
-
|
|
67
|
+
`Invalid field: the name '${field.name}' on ${this.describeLocation(environment)} `
|
|
68
|
+
+ `refers to ${actual} but is being used as a ${expectedDescription}.`,
|
|
61
69
|
)
|
|
62
70
|
}
|
|
63
71
|
return field
|
|
@@ -66,7 +74,7 @@ export class TreeNodeUtils {
|
|
|
66
74
|
public static describeLocation(environment: Environment): string {
|
|
67
75
|
const path = []
|
|
68
76
|
const loc = environment.getSubTreeNode()
|
|
69
|
-
for (let env = environment
|
|
77
|
+
for (let env = environment;; env = env.getParent()) {
|
|
70
78
|
const node = env.getSubTreeNode()
|
|
71
79
|
if (node.type === 'subtree-entity' || node.type === 'subtree-entity-list') {
|
|
72
80
|
return `entity '${loc.entity.name}' in path '${[node.entity.name, ...path.reverse()].join('.')}'`
|
|
@@ -76,7 +84,7 @@ export class TreeNodeUtils {
|
|
|
76
84
|
}
|
|
77
85
|
|
|
78
86
|
public static recommendAlternative(original: string, possibleAlternatives: Iterable<string>): string | undefined {
|
|
79
|
-
let bestAlternative: string | undefined
|
|
87
|
+
let bestAlternative: string | undefined
|
|
80
88
|
let bestAlternativeDistance = Number.MAX_SAFE_INTEGER
|
|
81
89
|
|
|
82
90
|
for (const alternative of possibleAlternatives) {
|
|
@@ -3,28 +3,32 @@ import { Schema, SchemaRelation } from '../schema'
|
|
|
3
3
|
|
|
4
4
|
export const createQueryBuilder = (schema: Schema) => {
|
|
5
5
|
const schemaNames: SchemaNames = {
|
|
6
|
-
entities: Object.fromEntries(
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
it.
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
6
|
+
entities: Object.fromEntries(
|
|
7
|
+
schema.getEntityNames().map((it): [string, SchemaEntityNames<string>] => {
|
|
8
|
+
const entity = schema.getEntity(it)
|
|
9
|
+
return [it, {
|
|
10
|
+
name: it,
|
|
11
|
+
scalars: Array.from(entity.fields.values()).filter(it => it.__typename === '_Column').map(it => it.name),
|
|
12
|
+
fields: Object.fromEntries(
|
|
13
|
+
Array.from(entity.fields.values()).map(it => {
|
|
14
|
+
if (it.__typename === '_Column') {
|
|
15
|
+
return [it.name, { type: 'column' }]
|
|
16
|
+
}
|
|
17
|
+
if (it.__typename === '_Relation') {
|
|
18
|
+
return [
|
|
19
|
+
it.name,
|
|
20
|
+
{
|
|
21
|
+
type: it.type === 'ManyHasMany' || it.type === 'OneHasMany' ? 'many' : 'one',
|
|
22
|
+
entity: (it as SchemaRelation).targetEntity,
|
|
23
|
+
},
|
|
24
|
+
]
|
|
25
|
+
}
|
|
26
|
+
throw new Error()
|
|
27
|
+
}),
|
|
28
|
+
),
|
|
29
|
+
}]
|
|
30
|
+
}),
|
|
31
|
+
),
|
|
28
32
|
enums: Object.fromEntries(schema.getEnumNames().map(it => [it, schema.getEnumValues(it)])),
|
|
29
33
|
}
|
|
30
34
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { expect, it
|
|
1
|
+
import { describe, expect, it } from 'bun:test'
|
|
2
2
|
import { Environment } from '../../../../src/environment'
|
|
3
3
|
import { Parser } from '../../../../src/queryLanguage'
|
|
4
4
|
|
|
@@ -77,7 +77,6 @@ describe('filter QueryLanguage parser', () => {
|
|
|
77
77
|
})
|
|
78
78
|
})
|
|
79
79
|
|
|
80
|
-
|
|
81
80
|
it('should parse conditions with quantifiers', () => {
|
|
82
81
|
expect(parse(`[tags:all[isPublished = true]]`)).toEqual({
|
|
83
82
|
not: {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { expect, it
|
|
1
|
+
import { describe, expect, it } from 'bun:test'
|
|
2
2
|
import { Environment } from '../../../../src/environment'
|
|
3
3
|
import { Parser } from '../../../../src/queryLanguage'
|
|
4
4
|
import type { ParsedRelativeEntityList } from '../../../../src/queryLanguage/ParserResults'
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { expect, it
|
|
1
|
+
import { describe, expect, it } from 'bun:test'
|
|
2
2
|
import { Environment } from '../../../../src/environment'
|
|
3
3
|
import { Parser } from '../../../../src/queryLanguage'
|
|
4
4
|
import type { ParsedTaggedMap } from '../../../../src/queryLanguage/ParserResults'
|
|
@@ -20,7 +20,6 @@ describe('tagged map QueryLanguage parser', () => {
|
|
|
20
20
|
},
|
|
21
21
|
},
|
|
22
22
|
],
|
|
23
|
-
|
|
24
23
|
})
|
|
25
24
|
})
|
|
26
25
|
|