@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TreeParameterMerger.js","sources":["../../../../../packages/binding-common/src/treeParameters/TreeParameterMerger.ts"],"sourcesContent":["import { Writable } from '@contember/client'\nimport type {\n\tAlias,\n\tEntityEventListenerStore,\n\tEventListenersStore,\n\tExpectedQualifiedEntityMutation,\n\tExpectedRelationMutation,\n\tFieldMeta,\n\tGenericEventsMap,\n\tHasManyRelation,\n\tHasOneRelation,\n\tParentEntityParameters,\n\tQualifiedEntityList,\n\tQualifiedSingleEntity,\n\tRelativeSingleField,\n\tSetOnCreate,\n\tUnconstrainedQualifiedEntityList,\n\tUnconstrainedQualifiedSingleEntity,\n\tUniqueWhere,\n} from '../treeParameters'\nimport { BindingError } from '../BindingError'\n\nexport class TreeParameterMerger {\n\tpublic static mergeHasOneRelationsWithSamePlaceholders(\n\t\toriginal: HasOneRelation,\n\t\tfresh: HasOneRelation,\n\t): HasOneRelation {\n\t\treturn {\n\t\t\t// Encoded within the placeholder\n\t\t\tfield: original.field,\n\t\t\tfilter: original.filter,\n\t\t\treducedBy: original.reducedBy,\n\n\t\t\t// Not encoded within the placeholder\n\t\t\texpectedMutation: this.mergeExpectedRelationMutation(original.expectedMutation, fresh.expectedMutation),\n\t\t\tsetOnCreate: this.mergeSetOnCreate(original.setOnCreate, fresh.setOnCreate),\n\t\t\tisNonbearing: original.isNonbearing && fresh.isNonbearing,\n\t\t\tmeta: this.mergeFieldMeta(original.meta, fresh.meta),\n\t\t\t// forceCreation: original.forceCreation || fresh.forceCreation,\n\t\t\teventListeners: this.mergeEventStore(original.eventListeners, fresh.eventListeners),\n\t\t}\n\t}\n\n\tpublic static mergeHasManyRelationsWithSamePlaceholders(\n\t\toriginal: HasManyRelation,\n\t\tfresh: HasManyRelation,\n\t): HasManyRelation {\n\t\tif (original.initialEntityCount !== fresh.initialEntityCount) {\n\t\t\tthrow new BindingError(\n\t\t\t\t`Detected hasMany relations on the same field '${original.field}' with different preferred initial ` +\n\t\t\t\t\t`entity counts: '${original.initialEntityCount}' and '${fresh.initialEntityCount}' respectively.`,\n\t\t\t)\n\t\t}\n\t\treturn {\n\t\t\t// Encoded within the placeholder\n\t\t\tfield: original.field,\n\t\t\tfilter: original.filter,\n\t\t\torderBy: original.orderBy,\n\t\t\toffset: original.offset,\n\t\t\tlimit: original.limit,\n\n\t\t\t// Not encoded within the placeholder\n\t\t\texpectedMutation: this.mergeExpectedRelationMutation(original.expectedMutation, fresh.expectedMutation),\n\t\t\tsetOnCreate: this.mergeSetOnCreate(original.setOnCreate, fresh.setOnCreate),\n\t\t\tmeta: this.mergeFieldMeta(original.meta, fresh.meta),\n\t\t\t// forceCreation: original.forceCreation || fresh.forceCreation,\n\t\t\tisNonbearing: original.isNonbearing && fresh.isNonbearing,\n\t\t\tinitialEntityCount: original.initialEntityCount, // Handled above\n\t\t\tchildEventListeners: this.mergeEventStore(\n\t\t\t\toriginal.childEventListeners,\n\t\t\t\tfresh.childEventListeners,\n\t\t\t),\n\t\t\teventListeners: this.mergeEventStore(original.eventListeners, fresh.eventListeners),\n\t\t}\n\t}\n\n\tpublic static mergeEntitySubTreeParametersWithSamePlaceholders(\n\t\toriginal: QualifiedSingleEntity | UnconstrainedQualifiedSingleEntity,\n\t\tfresh: QualifiedSingleEntity | UnconstrainedQualifiedSingleEntity,\n\t): QualifiedSingleEntity | UnconstrainedQualifiedSingleEntity {\n\t\tif (original.isCreating) {\n\t\t\tif (!fresh.isCreating) {\n\t\t\t\tthrow new BindingError()\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t// Encoded within the placeholder\n\t\t\t\tisCreating: original.isCreating,\n\t\t\t\tisUnpersisted: original.isUnpersisted && fresh.isUnpersisted,\n\t\t\t\tentityName: original.entityName,\n\n\t\t\t\t// Not encoded within the placeholder\n\t\t\t\talias: this.mergeSubTreeAliases(original.alias, fresh.alias),\n\t\t\t\tsetOnCreate: this.mergeSetOnCreate(original.setOnCreate, fresh.setOnCreate),\n\t\t\t\t// forceCreation: original.value.forceCreation || fresh.value.forceCreation,\n\t\t\t\texpectedMutation: this.mergeExpectedQualifiedEntityMutation(original.expectedMutation, fresh.expectedMutation),\n\t\t\t\tisNonbearing: original.isNonbearing && fresh.isNonbearing,\n\t\t\t\thasOneRelationPath: original.hasOneRelationPath, // TODO this is completely wrong.\n\t\t\t\teventListeners: this.mergeEventStore(original.eventListeners, fresh.eventListeners),\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\t// Encoded within the placeholder\n\t\t\tisCreating: original.isCreating,\n\t\t\twhere: original.where,\n\t\t\tentityName: original.entityName,\n\t\t\tfilter: original.filter,\n\n\t\t\t// Not encoded within the placeholder\n\t\t\talias: this.mergeSubTreeAliases(original.alias, fresh.alias),\n\t\t\tsetOnCreate: this.mergeSetOnCreate(original.setOnCreate, fresh.setOnCreate),\n\t\t\t// forceCreation: original.value.forceCreation || fresh.value.forceCreation,\n\t\t\texpectedMutation: this.mergeExpectedQualifiedEntityMutation(original.expectedMutation, fresh.expectedMutation),\n\t\t\tisNonbearing: original.isNonbearing && fresh.isNonbearing,\n\t\t\thasOneRelationPath: original.hasOneRelationPath, // TODO this is completely wrong.\n\t\t\teventListeners: this.mergeEventStore(original.eventListeners, fresh.eventListeners),\n\t\t}\n\t}\n\n\tpublic static mergeEntityListSubTreeParametersWithSamePlaceholders(\n\t\toriginal: QualifiedEntityList | UnconstrainedQualifiedEntityList,\n\t\tfresh: QualifiedEntityList | UnconstrainedQualifiedEntityList,\n\t): QualifiedEntityList | UnconstrainedQualifiedEntityList {\n\t\tif (original.initialEntityCount !== fresh.initialEntityCount) {\n\t\t\tthrow new BindingError(\n\t\t\t\t`Detected sub trees of the same entity '${original.entityName}' with different preferred initial ` +\n\t\t\t\t\t`entity counts: '${original.initialEntityCount}' and '${fresh.initialEntityCount}' respectively.`,\n\t\t\t)\n\t\t}\n\n\t\tif (original.isCreating) {\n\t\t\tif (!fresh.isCreating) {\n\t\t\t\tthrow new BindingError()\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t// Encoded within the placeholder\n\t\t\t\tisCreating: original.isCreating,\n\t\t\t\tisUnpersisted: original.isUnpersisted && fresh.isUnpersisted,\n\t\t\t\tentityName: original.entityName,\n\n\t\t\t\t// Not encoded within the placeholder\n\t\t\t\talias: this.mergeSubTreeAliases(original.alias, fresh.alias),\n\t\t\t\tsetOnCreate: this.mergeSetOnCreate(original.setOnCreate, fresh.setOnCreate),\n\t\t\t\t// forceCreation: original.value.forceCreation || fresh.value.forceCreation,\n\t\t\t\texpectedMutation: this.mergeExpectedQualifiedEntityMutation(original.expectedMutation, fresh.expectedMutation),\n\t\t\t\tisNonbearing: original.isNonbearing && fresh.isNonbearing,\n\t\t\t\thasOneRelationPath: original.hasOneRelationPath, // TODO this is completely wrong.\n\t\t\t\tchildEventListeners: this.mergeEventStore(original.childEventListeners, fresh.childEventListeners),\n\t\t\t\teventListeners: this.mergeEventStore(original.eventListeners, fresh.eventListeners),\n\t\t\t\tinitialEntityCount: original.initialEntityCount, // Handled above\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\t// Encoded within the placeholder\n\t\t\tisCreating: original.isCreating,\n\t\t\tentityName: original.entityName,\n\t\t\tfilter: original.filter,\n\t\t\torderBy: original.orderBy,\n\t\t\toffset: original.offset,\n\t\t\tlimit: original.limit,\n\n\t\t\t// Not encoded within the placeholder\n\t\t\talias: this.mergeSubTreeAliases(original.alias, fresh.alias),\n\t\t\tsetOnCreate: this.mergeSetOnCreate(original.setOnCreate, fresh.setOnCreate),\n\t\t\t// forceCreation: original.value.forceCreation || fresh.value.forceCreation,\n\t\t\texpectedMutation: this.mergeExpectedQualifiedEntityMutation(original.expectedMutation, fresh.expectedMutation),\n\t\t\tisNonbearing: original.isNonbearing && fresh.isNonbearing,\n\t\t\thasOneRelationPath: original.hasOneRelationPath, // TODO this is completely wrong.\n\t\t\tchildEventListeners: this.mergeEventStore(original.childEventListeners, fresh.childEventListeners),\n\t\t\teventListeners: this.mergeEventStore(original.eventListeners, fresh.eventListeners),\n\t\t\tinitialEntityCount: original.initialEntityCount, // Handled above\n\t\t}\n\t}\n\n\tpublic static mergeSingleField(original: Omit<RelativeSingleField, 'hasOneRelationPath'>, fresh: Omit<RelativeSingleField, 'hasOneRelationPath'>): Omit<RelativeSingleField, 'hasOneRelationPath'> {\n\t\tif (original.defaultValue !== undefined && fresh.defaultValue !== undefined && original.defaultValue !== fresh.defaultValue) {\n\t\t\tthrow new BindingError(`MarkerTreeGenerator merging: multiple fields \"${original.field}\" with different defaultValue found: ${JSON.stringify([original.defaultValue, fresh.defaultValue])}, `)\n\t\t}\n\t\treturn {\n\t\t\tfield: original.field,\n\t\t\tisNonbearing: original.isNonbearing && fresh.isNonbearing,\n\t\t\tdefaultValue: original.defaultValue ?? fresh.defaultValue,\n\t\t\tmeta: this.mergeFieldMeta(original.meta, fresh.meta),\n\t\t\teventListeners: this.mergeEventStore(original.eventListeners, fresh.eventListeners),\n\t\t}\n\t}\n\n\n\tpublic static mergeSetOnCreate(original: SetOnCreate, fresh: SetOnCreate): SetOnCreate {\n\t\tif (original === undefined && fresh === undefined) {\n\t\t\treturn undefined\n\t\t}\n\t\tif (original === undefined) {\n\t\t\treturn fresh\n\t\t}\n\t\tif (fresh === undefined) {\n\t\t\treturn original\n\t\t}\n\t\tconst originalCopy: Writable<UniqueWhere> = { ...original }\n\n\t\tfor (const field in fresh) {\n\t\t\tif (field in originalCopy) {\n\t\t\t\tconst fromOriginal = originalCopy[field]\n\t\t\t\tconst fromFresh = fresh[field]\n\t\t\t\tif (typeof fromOriginal === 'object') {\n\t\t\t\t\tif (typeof fromFresh === 'object') {\n\t\t\t\t\t\tconst merged = this.mergeSetOnCreate(fromOriginal, fromFresh)\n\t\t\t\t\t\tif (merged !== undefined) {\n\t\t\t\t\t\t\toriginalCopy[field] = merged\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow new BindingError() // TODO msg\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (typeof fromFresh === 'string' || typeof fromFresh === 'number') {\n\t\t\t\t\tif (fromOriginal === fromFresh) {\n\t\t\t\t\t\t// Good, do nothing.\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow new BindingError() // TODO msg\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthrow new BindingError() // TODO msg\n\t\t\t} else {\n\t\t\t\toriginalCopy[field] = fresh[field]\n\t\t\t}\n\t\t}\n\n\t\treturn originalCopy\n\t}\n\n\tprivate static mergeSets<T>(original: Set<T>, fresh: Set<T>): Set<T> {\n\t\tconst combinedSet = new Set(original)\n\t\tfor (const item of fresh) {\n\t\t\tcombinedSet.add(item)\n\t\t}\n\t\treturn combinedSet\n\t}\n\n\tpublic static mergeParentEntityParameters(\n\t\toriginal: ParentEntityParameters | undefined,\n\t\tfresh: ParentEntityParameters | undefined,\n\t): ParentEntityParameters | undefined {\n\t\tif (original === fresh) {\n\t\t\treturn original\n\t\t}\n\t\tif (original === undefined) {\n\t\t\treturn fresh\n\t\t}\n\t\tif (fresh === undefined) {\n\t\t\treturn original\n\t\t}\n\t\treturn {\n\t\t\teventListeners: TreeParameterMerger.mergeEventStore(\n\t\t\t\toriginal.eventListeners,\n\t\t\t\tfresh.eventListeners,\n\t\t\t),\n\t\t}\n\t}\n\n\tpublic static mergeInParentEntity<\n\t\tOriginal extends Record<Key, EntityEventListenerStore | undefined>,\n\t\tKey extends keyof Original,\n\t>(original: Original, key: Key, parentEntity: ParentEntityParameters | undefined): Original {\n\t\tif (!parentEntity) {\n\t\t\treturn original\n\t\t}\n\n\t\treturn {\n\t\t\t...original,\n\t\t\t[key]: TreeParameterMerger.mergeEventStore(original[key], parentEntity.eventListeners),\n\t\t}\n\t}\n\n\n\tprivate static mergeEventStore<Events extends GenericEventsMap>(\n\t\toriginal: EventListenersStore<Events> | undefined,\n\t\tfresh: EventListenersStore<Events> | undefined,\n\t): EventListenersStore<Events> | undefined {\n\t\tif (original === undefined) {\n\t\t\tif (fresh === undefined) {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\treturn fresh\n\t\t}\n\n\t\tif (fresh === undefined) {\n\t\t\treturn original\n\t\t}\n\n\t\tconst store = original.clone()\n\t\tstore.append(fresh)\n\n\t\treturn store\n\t}\n\n\tprivate static mergeExpectedRelationMutation(\n\t\toriginal: ExpectedRelationMutation,\n\t\tfresh: ExpectedRelationMutation,\n\t): ExpectedRelationMutation {\n\t\tif (original === fresh) {\n\t\t\treturn original\n\t\t}\n\t\tif (original === 'none') {\n\t\t\treturn fresh\n\t\t}\n\t\tif (fresh === 'none') {\n\t\t\treturn original\n\t\t}\n\t\treturn 'anyMutation'\n\t}\n\n\tprivate static mergeExpectedQualifiedEntityMutation(\n\t\toriginal: ExpectedQualifiedEntityMutation,\n\t\tfresh: ExpectedQualifiedEntityMutation,\n\t): ExpectedQualifiedEntityMutation {\n\t\tif (original === fresh) {\n\t\t\treturn original\n\t\t}\n\t\tif (original === 'none') {\n\t\t\treturn fresh\n\t\t}\n\t\tif (fresh === 'none') {\n\t\t\treturn original\n\t\t}\n\t\treturn 'anyMutation'\n\t}\n\n\tprivate static mergeSubTreeAliases(\n\t\toriginal: Set<Alias> | undefined,\n\t\tfresh: Set<Alias> | undefined,\n\t): Set<Alias> | undefined {\n\t\tif (original === undefined) {\n\t\t\treturn fresh\n\t\t}\n\t\tif (fresh === undefined) {\n\t\t\treturn original\n\t\t}\n\t\treturn this.mergeSets(original, fresh)\n\t}\n\n\n\tprivate static mergeFieldMeta(\n\t\toriginal: FieldMeta,\n\t\tfresh: FieldMeta,\n\t): FieldMeta {\n\t\treturn [...original, ...fresh].filter((key, index, array) => array.indexOf(key) === index)\n\t}\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TreeParameterMerger.js","sources":["../../../../../packages/binding-common/src/treeParameters/TreeParameterMerger.ts"],"sourcesContent":["import { Writable } from '@contember/client'\nimport type {\n\tAlias,\n\tEntityEventListenerStore,\n\tEventListenersStore,\n\tExpectedQualifiedEntityMutation,\n\tExpectedRelationMutation,\n\tFieldMeta,\n\tGenericEventsMap,\n\tHasManyRelation,\n\tHasOneRelation,\n\tParentEntityParameters,\n\tQualifiedEntityList,\n\tQualifiedSingleEntity,\n\tRelativeSingleField,\n\tSetOnCreate,\n\tUnconstrainedQualifiedEntityList,\n\tUnconstrainedQualifiedSingleEntity,\n\tUniqueWhere,\n} from '../treeParameters'\nimport { BindingError } from '../BindingError'\n\nexport class TreeParameterMerger {\n\tpublic static mergeHasOneRelationsWithSamePlaceholders(\n\t\toriginal: HasOneRelation,\n\t\tfresh: HasOneRelation,\n\t): HasOneRelation {\n\t\treturn {\n\t\t\t// Encoded within the placeholder\n\t\t\tfield: original.field,\n\t\t\tfilter: original.filter,\n\t\t\treducedBy: original.reducedBy,\n\n\t\t\t// Not encoded within the placeholder\n\t\t\texpectedMutation: this.mergeExpectedRelationMutation(original.expectedMutation, fresh.expectedMutation),\n\t\t\tsetOnCreate: this.mergeSetOnCreate(original.setOnCreate, fresh.setOnCreate),\n\t\t\tisNonbearing: original.isNonbearing && fresh.isNonbearing,\n\t\t\tmeta: this.mergeFieldMeta(original.meta, fresh.meta),\n\t\t\t// forceCreation: original.forceCreation || fresh.forceCreation,\n\t\t\teventListeners: this.mergeEventStore(original.eventListeners, fresh.eventListeners),\n\t\t}\n\t}\n\n\tpublic static mergeHasManyRelationsWithSamePlaceholders(\n\t\toriginal: HasManyRelation,\n\t\tfresh: HasManyRelation,\n\t): HasManyRelation {\n\t\tif (original.initialEntityCount !== fresh.initialEntityCount) {\n\t\t\tthrow new BindingError(\n\t\t\t\t`Detected hasMany relations on the same field '${original.field}' with different preferred initial `\n\t\t\t\t\t+ `entity counts: '${original.initialEntityCount}' and '${fresh.initialEntityCount}' respectively.`,\n\t\t\t)\n\t\t}\n\t\treturn {\n\t\t\t// Encoded within the placeholder\n\t\t\tfield: original.field,\n\t\t\tfilter: original.filter,\n\t\t\torderBy: original.orderBy,\n\t\t\toffset: original.offset,\n\t\t\tlimit: original.limit,\n\n\t\t\t// Not encoded within the placeholder\n\t\t\texpectedMutation: this.mergeExpectedRelationMutation(original.expectedMutation, fresh.expectedMutation),\n\t\t\tsetOnCreate: this.mergeSetOnCreate(original.setOnCreate, fresh.setOnCreate),\n\t\t\tmeta: this.mergeFieldMeta(original.meta, fresh.meta),\n\t\t\t// forceCreation: original.forceCreation || fresh.forceCreation,\n\t\t\tisNonbearing: original.isNonbearing && fresh.isNonbearing,\n\t\t\tinitialEntityCount: original.initialEntityCount, // Handled above\n\t\t\tchildEventListeners: this.mergeEventStore(\n\t\t\t\toriginal.childEventListeners,\n\t\t\t\tfresh.childEventListeners,\n\t\t\t),\n\t\t\teventListeners: this.mergeEventStore(original.eventListeners, fresh.eventListeners),\n\t\t}\n\t}\n\n\tpublic static mergeEntitySubTreeParametersWithSamePlaceholders(\n\t\toriginal: QualifiedSingleEntity | UnconstrainedQualifiedSingleEntity,\n\t\tfresh: QualifiedSingleEntity | UnconstrainedQualifiedSingleEntity,\n\t): QualifiedSingleEntity | UnconstrainedQualifiedSingleEntity {\n\t\tif (original.isCreating) {\n\t\t\tif (!fresh.isCreating) {\n\t\t\t\tthrow new BindingError()\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t// Encoded within the placeholder\n\t\t\t\tisCreating: original.isCreating,\n\t\t\t\tisUnpersisted: original.isUnpersisted && fresh.isUnpersisted,\n\t\t\t\tentityName: original.entityName,\n\n\t\t\t\t// Not encoded within the placeholder\n\t\t\t\talias: this.mergeSubTreeAliases(original.alias, fresh.alias),\n\t\t\t\tsetOnCreate: this.mergeSetOnCreate(original.setOnCreate, fresh.setOnCreate),\n\t\t\t\t// forceCreation: original.value.forceCreation || fresh.value.forceCreation,\n\t\t\t\texpectedMutation: this.mergeExpectedQualifiedEntityMutation(original.expectedMutation, fresh.expectedMutation),\n\t\t\t\tisNonbearing: original.isNonbearing && fresh.isNonbearing,\n\t\t\t\thasOneRelationPath: original.hasOneRelationPath, // TODO this is completely wrong.\n\t\t\t\teventListeners: this.mergeEventStore(original.eventListeners, fresh.eventListeners),\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\t// Encoded within the placeholder\n\t\t\tisCreating: original.isCreating,\n\t\t\twhere: original.where,\n\t\t\tentityName: original.entityName,\n\t\t\tfilter: original.filter,\n\n\t\t\t// Not encoded within the placeholder\n\t\t\talias: this.mergeSubTreeAliases(original.alias, fresh.alias),\n\t\t\tsetOnCreate: this.mergeSetOnCreate(original.setOnCreate, fresh.setOnCreate),\n\t\t\t// forceCreation: original.value.forceCreation || fresh.value.forceCreation,\n\t\t\texpectedMutation: this.mergeExpectedQualifiedEntityMutation(original.expectedMutation, fresh.expectedMutation),\n\t\t\tisNonbearing: original.isNonbearing && fresh.isNonbearing,\n\t\t\thasOneRelationPath: original.hasOneRelationPath, // TODO this is completely wrong.\n\t\t\teventListeners: this.mergeEventStore(original.eventListeners, fresh.eventListeners),\n\t\t}\n\t}\n\n\tpublic static mergeEntityListSubTreeParametersWithSamePlaceholders(\n\t\toriginal: QualifiedEntityList | UnconstrainedQualifiedEntityList,\n\t\tfresh: QualifiedEntityList | UnconstrainedQualifiedEntityList,\n\t): QualifiedEntityList | UnconstrainedQualifiedEntityList {\n\t\tif (original.initialEntityCount !== fresh.initialEntityCount) {\n\t\t\tthrow new BindingError(\n\t\t\t\t`Detected sub trees of the same entity '${original.entityName}' with different preferred initial `\n\t\t\t\t\t+ `entity counts: '${original.initialEntityCount}' and '${fresh.initialEntityCount}' respectively.`,\n\t\t\t)\n\t\t}\n\n\t\tif (original.isCreating) {\n\t\t\tif (!fresh.isCreating) {\n\t\t\t\tthrow new BindingError()\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t// Encoded within the placeholder\n\t\t\t\tisCreating: original.isCreating,\n\t\t\t\tisUnpersisted: original.isUnpersisted && fresh.isUnpersisted,\n\t\t\t\tentityName: original.entityName,\n\n\t\t\t\t// Not encoded within the placeholder\n\t\t\t\talias: this.mergeSubTreeAliases(original.alias, fresh.alias),\n\t\t\t\tsetOnCreate: this.mergeSetOnCreate(original.setOnCreate, fresh.setOnCreate),\n\t\t\t\t// forceCreation: original.value.forceCreation || fresh.value.forceCreation,\n\t\t\t\texpectedMutation: this.mergeExpectedQualifiedEntityMutation(original.expectedMutation, fresh.expectedMutation),\n\t\t\t\tisNonbearing: original.isNonbearing && fresh.isNonbearing,\n\t\t\t\thasOneRelationPath: original.hasOneRelationPath, // TODO this is completely wrong.\n\t\t\t\tchildEventListeners: this.mergeEventStore(original.childEventListeners, fresh.childEventListeners),\n\t\t\t\teventListeners: this.mergeEventStore(original.eventListeners, fresh.eventListeners),\n\t\t\t\tinitialEntityCount: original.initialEntityCount, // Handled above\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\t// Encoded within the placeholder\n\t\t\tisCreating: original.isCreating,\n\t\t\tentityName: original.entityName,\n\t\t\tfilter: original.filter,\n\t\t\torderBy: original.orderBy,\n\t\t\toffset: original.offset,\n\t\t\tlimit: original.limit,\n\n\t\t\t// Not encoded within the placeholder\n\t\t\talias: this.mergeSubTreeAliases(original.alias, fresh.alias),\n\t\t\tsetOnCreate: this.mergeSetOnCreate(original.setOnCreate, fresh.setOnCreate),\n\t\t\t// forceCreation: original.value.forceCreation || fresh.value.forceCreation,\n\t\t\texpectedMutation: this.mergeExpectedQualifiedEntityMutation(original.expectedMutation, fresh.expectedMutation),\n\t\t\tisNonbearing: original.isNonbearing && fresh.isNonbearing,\n\t\t\thasOneRelationPath: original.hasOneRelationPath, // TODO this is completely wrong.\n\t\t\tchildEventListeners: this.mergeEventStore(original.childEventListeners, fresh.childEventListeners),\n\t\t\teventListeners: this.mergeEventStore(original.eventListeners, fresh.eventListeners),\n\t\t\tinitialEntityCount: original.initialEntityCount, // Handled above\n\t\t}\n\t}\n\n\tpublic static mergeSingleField(\n\t\toriginal: Omit<RelativeSingleField, 'hasOneRelationPath'>,\n\t\tfresh: Omit<RelativeSingleField, 'hasOneRelationPath'>,\n\t): Omit<RelativeSingleField, 'hasOneRelationPath'> {\n\t\tif (original.defaultValue !== undefined && fresh.defaultValue !== undefined && original.defaultValue !== fresh.defaultValue) {\n\t\t\tthrow new BindingError(\n\t\t\t\t`MarkerTreeGenerator merging: multiple fields \"${original.field}\" with different defaultValue found: ${\n\t\t\t\t\tJSON.stringify([original.defaultValue, fresh.defaultValue])\n\t\t\t\t}, `,\n\t\t\t)\n\t\t}\n\t\treturn {\n\t\t\tfield: original.field,\n\t\t\tisNonbearing: original.isNonbearing && fresh.isNonbearing,\n\t\t\tdefaultValue: original.defaultValue ?? fresh.defaultValue,\n\t\t\tmeta: this.mergeFieldMeta(original.meta, fresh.meta),\n\t\t\teventListeners: this.mergeEventStore(original.eventListeners, fresh.eventListeners),\n\t\t}\n\t}\n\n\tpublic static mergeSetOnCreate(original: SetOnCreate, fresh: SetOnCreate): SetOnCreate {\n\t\tif (original === undefined && fresh === undefined) {\n\t\t\treturn undefined\n\t\t}\n\t\tif (original === undefined) {\n\t\t\treturn fresh\n\t\t}\n\t\tif (fresh === undefined) {\n\t\t\treturn original\n\t\t}\n\t\tconst originalCopy: Writable<UniqueWhere> = { ...original }\n\n\t\tfor (const field in fresh) {\n\t\t\tif (field in originalCopy) {\n\t\t\t\tconst fromOriginal = originalCopy[field]\n\t\t\t\tconst fromFresh = fresh[field]\n\t\t\t\tif (typeof fromOriginal === 'object') {\n\t\t\t\t\tif (typeof fromFresh === 'object') {\n\t\t\t\t\t\tconst merged = this.mergeSetOnCreate(fromOriginal, fromFresh)\n\t\t\t\t\t\tif (merged !== undefined) {\n\t\t\t\t\t\t\toriginalCopy[field] = merged\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow new BindingError() // TODO msg\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (typeof fromFresh === 'string' || typeof fromFresh === 'number') {\n\t\t\t\t\tif (fromOriginal === fromFresh) {\n\t\t\t\t\t\t// Good, do nothing.\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow new BindingError() // TODO msg\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthrow new BindingError() // TODO msg\n\t\t\t} else {\n\t\t\t\toriginalCopy[field] = fresh[field]\n\t\t\t}\n\t\t}\n\n\t\treturn originalCopy\n\t}\n\n\tprivate static mergeSets<T>(original: Set<T>, fresh: Set<T>): Set<T> {\n\t\tconst combinedSet = new Set(original)\n\t\tfor (const item of fresh) {\n\t\t\tcombinedSet.add(item)\n\t\t}\n\t\treturn combinedSet\n\t}\n\n\tpublic static mergeParentEntityParameters(\n\t\toriginal: ParentEntityParameters | undefined,\n\t\tfresh: ParentEntityParameters | undefined,\n\t): ParentEntityParameters | undefined {\n\t\tif (original === fresh) {\n\t\t\treturn original\n\t\t}\n\t\tif (original === undefined) {\n\t\t\treturn fresh\n\t\t}\n\t\tif (fresh === undefined) {\n\t\t\treturn original\n\t\t}\n\t\treturn {\n\t\t\teventListeners: TreeParameterMerger.mergeEventStore(\n\t\t\t\toriginal.eventListeners,\n\t\t\t\tfresh.eventListeners,\n\t\t\t),\n\t\t}\n\t}\n\n\tpublic static mergeInParentEntity<\n\t\tOriginal extends Record<Key, EntityEventListenerStore | undefined>,\n\t\tKey extends keyof Original,\n\t>(original: Original, key: Key, parentEntity: ParentEntityParameters | undefined): Original {\n\t\tif (!parentEntity) {\n\t\t\treturn original\n\t\t}\n\n\t\treturn {\n\t\t\t...original,\n\t\t\t[key]: TreeParameterMerger.mergeEventStore(original[key], parentEntity.eventListeners),\n\t\t}\n\t}\n\n\tprivate static mergeEventStore<Events extends GenericEventsMap>(\n\t\toriginal: EventListenersStore<Events> | undefined,\n\t\tfresh: EventListenersStore<Events> | undefined,\n\t): EventListenersStore<Events> | undefined {\n\t\tif (original === undefined) {\n\t\t\tif (fresh === undefined) {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\treturn fresh\n\t\t}\n\n\t\tif (fresh === undefined) {\n\t\t\treturn original\n\t\t}\n\n\t\tconst store = original.clone()\n\t\tstore.append(fresh)\n\n\t\treturn store\n\t}\n\n\tprivate static mergeExpectedRelationMutation(\n\t\toriginal: ExpectedRelationMutation,\n\t\tfresh: ExpectedRelationMutation,\n\t): ExpectedRelationMutation {\n\t\tif (original === fresh) {\n\t\t\treturn original\n\t\t}\n\t\tif (original === 'none') {\n\t\t\treturn fresh\n\t\t}\n\t\tif (fresh === 'none') {\n\t\t\treturn original\n\t\t}\n\t\treturn 'anyMutation'\n\t}\n\n\tprivate static mergeExpectedQualifiedEntityMutation(\n\t\toriginal: ExpectedQualifiedEntityMutation,\n\t\tfresh: ExpectedQualifiedEntityMutation,\n\t): ExpectedQualifiedEntityMutation {\n\t\tif (original === fresh) {\n\t\t\treturn original\n\t\t}\n\t\tif (original === 'none') {\n\t\t\treturn fresh\n\t\t}\n\t\tif (fresh === 'none') {\n\t\t\treturn original\n\t\t}\n\t\treturn 'anyMutation'\n\t}\n\n\tprivate static mergeSubTreeAliases(\n\t\toriginal: Set<Alias> | undefined,\n\t\tfresh: Set<Alias> | undefined,\n\t): Set<Alias> | undefined {\n\t\tif (original === undefined) {\n\t\t\treturn fresh\n\t\t}\n\t\tif (fresh === undefined) {\n\t\t\treturn original\n\t\t}\n\t\treturn this.mergeSets(original, fresh)\n\t}\n\n\tprivate static mergeFieldMeta(\n\t\toriginal: FieldMeta,\n\t\tfresh: FieldMeta,\n\t): FieldMeta {\n\t\treturn [...original, ...fresh].filter((key, index, array) => array.indexOf(key) === index)\n\t}\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wrapFilterInHasOnes.cjs","sources":["../../../../../../packages/binding-common/src/treeParameters/helpers/wrapFilterInHasOnes.ts"],"sourcesContent":["import type { Filter, HasOneRelation } from '../../treeParameters'\nimport { whereToFilter } from '../../utils/whereToFilter'\n\nexport const wrapFilterInHasOnes = (path: HasOneRelation[], filter: Filter): Filter => {\n\tfor (let i = path.length - 1; i >= 0; i--) {\n\t\tconst current = path[i]\n\n\t\tif (current.reducedBy === undefined) {\n\t\t\tfilter = {\n\t\t\t\t[current.field]: filter,\n\t\t\t}\n\t\t} else {\n\t\t\tfilter = {\n\t\t\t\t[current.field]: {\n\t\t\t\t\tand: [filter, whereToFilter(current.reducedBy)],\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\t}\n\treturn filter\n}\n"],"names":["whereToFilter"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"wrapFilterInHasOnes.cjs","sources":["../../../../../../packages/binding-common/src/treeParameters/helpers/wrapFilterInHasOnes.ts"],"sourcesContent":["import type { Filter, HasOneRelation } from '../../treeParameters'\nimport { whereToFilter } from '../../utils/whereToFilter'\n\nexport const wrapFilterInHasOnes = (path: HasOneRelation[], filter: Filter): Filter => {\n\tfor (let i = path.length - 1; i >= 0; i--) {\n\t\tconst current = path[i]\n\n\t\tif (current.reducedBy === undefined) {\n\t\t\tfilter = {\n\t\t\t\t[current.field]: filter,\n\t\t\t}\n\t\t} else {\n\t\t\tfilter = {\n\t\t\t\t[current.field]: {\n\t\t\t\t\tand: [filter, whereToFilter(current.reducedBy)],\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\t}\n\treturn filter\n}\n"],"names":["whereToFilter"],"mappings":";;;AAGO,MAAM,sBAAsB,CAAC,MAAwB,WAA2B;AACtF,WAAS,IAAI,KAAK,SAAS,GAAG,KAAK,GAAG,KAAK;AAC1C,UAAM,UAAU,KAAK,CAAC;AAEtB,QAAI,QAAQ,cAAc,QAAW;AACpC,eAAS;AAAA,QACR,CAAC,QAAQ,KAAK,GAAG;AAAA,MAAA;AAAA,IAEnB,OAAO;AACN,eAAS;AAAA,QACR,CAAC,QAAQ,KAAK,GAAG;AAAA,UAChB,KAAK,CAAC,QAAQA,4BAAc,QAAQ,SAAS,CAAC;AAAA,QAAA;AAAA,MAC/C;AAAA,IAEF;AAAA,EACD;AACA,SAAO;AACR;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wrapFilterInHasOnes.js","sources":["../../../../../../packages/binding-common/src/treeParameters/helpers/wrapFilterInHasOnes.ts"],"sourcesContent":["import type { Filter, HasOneRelation } from '../../treeParameters'\nimport { whereToFilter } from '../../utils/whereToFilter'\n\nexport const wrapFilterInHasOnes = (path: HasOneRelation[], filter: Filter): Filter => {\n\tfor (let i = path.length - 1; i >= 0; i--) {\n\t\tconst current = path[i]\n\n\t\tif (current.reducedBy === undefined) {\n\t\t\tfilter = {\n\t\t\t\t[current.field]: filter,\n\t\t\t}\n\t\t} else {\n\t\t\tfilter = {\n\t\t\t\t[current.field]: {\n\t\t\t\t\tand: [filter, whereToFilter(current.reducedBy)],\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\t}\n\treturn filter\n}\n"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"wrapFilterInHasOnes.js","sources":["../../../../../../packages/binding-common/src/treeParameters/helpers/wrapFilterInHasOnes.ts"],"sourcesContent":["import type { Filter, HasOneRelation } from '../../treeParameters'\nimport { whereToFilter } from '../../utils/whereToFilter'\n\nexport const wrapFilterInHasOnes = (path: HasOneRelation[], filter: Filter): Filter => {\n\tfor (let i = path.length - 1; i >= 0; i--) {\n\t\tconst current = path[i]\n\n\t\tif (current.reducedBy === undefined) {\n\t\t\tfilter = {\n\t\t\t\t[current.field]: filter,\n\t\t\t}\n\t\t} else {\n\t\t\tfilter = {\n\t\t\t\t[current.field]: {\n\t\t\t\t\tand: [filter, whereToFilter(current.reducedBy)],\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\t}\n\treturn filter\n}\n"],"names":[],"mappings":";AAGO,MAAM,sBAAsB,CAAC,MAAwB,WAA2B;AACtF,WAAS,IAAI,KAAK,SAAS,GAAG,KAAK,GAAG,KAAK;AAC1C,UAAM,UAAU,KAAK,CAAC;AAEtB,QAAI,QAAQ,cAAc,QAAW;AACpC,eAAS;AAAA,QACR,CAAC,QAAQ,KAAK,GAAG;AAAA,MAAA;AAAA,IAEnB,OAAO;AACN,eAAS;AAAA,QACR,CAAC,QAAQ,KAAK,GAAG;AAAA,UAChB,KAAK,CAAC,QAAQ,cAAc,QAAQ,SAAS,CAAC;AAAA,QAAA;AAAA,MAC/C;AAAA,IAEF;AAAA,EACD;AACA,SAAO;AACR;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityAccessor.cjs","sources":["../../../../../packages/binding-common/src/types/EntityAccessor.ts"],"sourcesContent":["import { Environment } from '../environment'\nimport { EntityListSubTreeMarker, EntitySubTreeMarker, HasManyRelationMarker, HasOneRelationMarker } from '../markers'\nimport type {\n\tEntityId,\n\tEntityName,\n\tEntityRealmKey,\n\tFieldName,\n\tFieldValue,\n\tRelativeEntityList,\n\tRelativeSingleEntity,\n\tRelativeSingleField,\n\tSugaredRelativeEntityList,\n\tSugaredRelativeSingleEntity,\n\tSugaredRelativeSingleField,\n} from '../treeParameters'\nimport type { AsyncBatchUpdatesOptions } from './AsyncBatchUpdatesOptions'\nimport type { BatchUpdatesOptions } from './BatchUpdatesOptions'\nimport { EntityListAccessor } from './EntityListAccessor'\nimport type { Errorable } from './Errorable'\nimport { ErrorAccessor } from './ErrorAccessor'\nimport type { FieldAccessor } from './FieldAccessor'\nimport type { PersistErrorOptions } from './PersistErrorOptions'\nimport type { PersistSuccessOptions } from './PersistSuccessOptions'\n\nexport const isEntityAccessor = (accessor: unknown): accessor is EntityAccessor =>\n\taccessor !== null && typeof accessor === 'object' && '__type' in accessor && accessor.__type === 'EntityAccessor'\n\ninterface EntityAccessor extends Errorable {\n\treadonly __type: 'EntityAccessor'\n\t/**\n\t * The key is a unique identifier of the entity. It is not the id of the entity.\n\t */\n\treadonly key?: EntityRealmKey\n\treadonly name: EntityName\n\treadonly hasUnpersistedChanges: boolean\n\treadonly errors: ErrorAccessor | undefined\n\treadonly environment: Environment\n\treadonly getAccessor: EntityAccessor.GetEntityAccessor\n\treadonly idOnServer: EntityId | undefined\n\treadonly id: EntityId\n\treadonly existsOnServer: boolean\n\n\taddError: ErrorAccessor.AddError\n\n\taddEventListener: EntityAccessor.AddEventListener\n\n\tbatchUpdates(performUpdates: EntityAccessor.BatchUpdatesHandler): void\n\n\tconnectEntityAtField(field: SugaredRelativeSingleEntity | string, entityToConnect: EntityAccessor): void\n\n\tdisconnectEntityAtField(field: SugaredRelativeSingleEntity | string, initializeReplacement?: EntityAccessor.BatchUpdatesHandler): void\n\n\tdeleteEntity(): void\n\n\tupdateValues(fieldValuePairs: EntityAccessor.FieldValuePairs): void\n\n\t/**\n\t * Please keep in mind that this method signature is literally impossible to implement safely. The generic parameter\n\t * is really just a way to succinctly write a type cast. Nothing more, really.\n\t */\n\tgetField<Value extends FieldValue = FieldValue>(field: SugaredRelativeSingleField | string | RelativeSingleField): FieldAccessor<Value>\n\n\tgetEntity(entity: SugaredRelativeSingleEntity | string | RelativeSingleEntity): EntityAccessor\n\n\tgetEntityList(entityList: SugaredRelativeEntityList | string | RelativeEntityList): EntityListAccessor\n\n\tgetParent(): EntityAccessor | EntityListAccessor | undefined\n\n\tgetMarker(): HasManyRelationMarker | HasOneRelationMarker | EntitySubTreeMarker | EntityListSubTreeMarker\n\n\tgetFieldMeta(field: string): { readable?: boolean; updatable?: boolean }\n}\n\nnamespace EntityAccessor {\n\texport interface FieldDatum {\n\t\tgetAccessor(): NestedAccessor\n\t}\n\texport type NestedAccessor = EntityAccessor | EntityListAccessor | FieldAccessor<any>\n\n\texport type FieldValuePairs =\n\t\t| {\n\t\t\t[field: string]: FieldValue\n\t\t
|
|
1
|
+
{"version":3,"file":"EntityAccessor.cjs","sources":["../../../../../packages/binding-common/src/types/EntityAccessor.ts"],"sourcesContent":["import { Environment } from '../environment'\nimport { EntityListSubTreeMarker, EntitySubTreeMarker, HasManyRelationMarker, HasOneRelationMarker } from '../markers'\nimport type {\n\tEntityId,\n\tEntityName,\n\tEntityRealmKey,\n\tFieldName,\n\tFieldValue,\n\tRelativeEntityList,\n\tRelativeSingleEntity,\n\tRelativeSingleField,\n\tSugaredRelativeEntityList,\n\tSugaredRelativeSingleEntity,\n\tSugaredRelativeSingleField,\n} from '../treeParameters'\nimport type { AsyncBatchUpdatesOptions } from './AsyncBatchUpdatesOptions'\nimport type { BatchUpdatesOptions } from './BatchUpdatesOptions'\nimport { EntityListAccessor } from './EntityListAccessor'\nimport type { Errorable } from './Errorable'\nimport { ErrorAccessor } from './ErrorAccessor'\nimport type { FieldAccessor } from './FieldAccessor'\nimport type { PersistErrorOptions } from './PersistErrorOptions'\nimport type { PersistSuccessOptions } from './PersistSuccessOptions'\n\nexport const isEntityAccessor = (accessor: unknown): accessor is EntityAccessor =>\n\taccessor !== null && typeof accessor === 'object' && '__type' in accessor && accessor.__type === 'EntityAccessor'\n\ninterface EntityAccessor extends Errorable {\n\treadonly __type: 'EntityAccessor'\n\t/**\n\t * The key is a unique identifier of the entity. It is not the id of the entity.\n\t */\n\treadonly key?: EntityRealmKey\n\treadonly name: EntityName\n\treadonly hasUnpersistedChanges: boolean\n\treadonly errors: ErrorAccessor | undefined\n\treadonly environment: Environment\n\treadonly getAccessor: EntityAccessor.GetEntityAccessor\n\treadonly idOnServer: EntityId | undefined\n\treadonly id: EntityId\n\treadonly existsOnServer: boolean\n\n\taddError: ErrorAccessor.AddError\n\n\taddEventListener: EntityAccessor.AddEventListener\n\n\tbatchUpdates(performUpdates: EntityAccessor.BatchUpdatesHandler): void\n\n\tconnectEntityAtField(field: SugaredRelativeSingleEntity | string, entityToConnect: EntityAccessor): void\n\n\tdisconnectEntityAtField(field: SugaredRelativeSingleEntity | string, initializeReplacement?: EntityAccessor.BatchUpdatesHandler): void\n\n\tdeleteEntity(): void\n\n\tupdateValues(fieldValuePairs: EntityAccessor.FieldValuePairs): void\n\n\t/**\n\t * Please keep in mind that this method signature is literally impossible to implement safely. The generic parameter\n\t * is really just a way to succinctly write a type cast. Nothing more, really.\n\t */\n\tgetField<Value extends FieldValue = FieldValue>(field: SugaredRelativeSingleField | string | RelativeSingleField): FieldAccessor<Value>\n\n\tgetEntity(entity: SugaredRelativeSingleEntity | string | RelativeSingleEntity): EntityAccessor\n\n\tgetEntityList(entityList: SugaredRelativeEntityList | string | RelativeEntityList): EntityListAccessor\n\n\tgetParent(): EntityAccessor | EntityListAccessor | undefined\n\n\tgetMarker(): HasManyRelationMarker | HasOneRelationMarker | EntitySubTreeMarker | EntityListSubTreeMarker\n\n\tgetFieldMeta(field: string): { readable?: boolean; updatable?: boolean }\n}\n\nnamespace EntityAccessor {\n\texport interface FieldDatum {\n\t\tgetAccessor(): NestedAccessor\n\t}\n\texport type NestedAccessor = EntityAccessor | EntityListAccessor | FieldAccessor<any>\n\n\texport type FieldValuePairs =\n\t\t| {\n\t\t\t[field: string]: FieldValue\n\t\t}\n\t\t| Iterable<[SugaredRelativeSingleField | string, FieldValue]>\n\n\texport type FieldData = Map<FieldName, FieldDatum>\n\n\texport type GetEntityAccessor = () => EntityAccessor\n\texport type BatchUpdatesHandler = (getAccessor: GetEntityAccessor, options: BatchUpdatesOptions) => void\n\texport type UpdateListener = (accessor: EntityAccessor) => void\n\n\texport type BeforePersistHandler = (\n\t\tgetAccessor: GetEntityAccessor,\n\t\toptions: AsyncBatchUpdatesOptions,\n\t) => void | BeforePersistHandler | Promise<void | BeforePersistHandler>\n\n\texport type PersistErrorHandler = (\n\t\tgetAccessor: GetEntityAccessor,\n\t\toptions: PersistErrorOptions,\n\t) => void | Promise<void>\n\n\texport type PersistSuccessHandler = (\n\t\tgetAccessor: GetEntityAccessor,\n\t\toptions: PersistSuccessOptions,\n\t) => void | PersistSuccessHandler | Promise<void | PersistSuccessHandler>\n\n\texport type RuntimeEntityEventListenerMap = {\n\t\tbeforePersist: BeforePersistHandler\n\t\tbeforeUpdate: BatchUpdatesHandler\n\t\tconnectionUpdate: UpdateListener\n\t\tpersistError: PersistErrorHandler\n\t\tpersistSuccess: PersistSuccessHandler\n\t\tupdate: UpdateListener\n\t}\n\texport type EntityEventListenerMap =\n\t\t& RuntimeEntityEventListenerMap\n\t\t& {\n\t\t\tinitialize: BatchUpdatesHandler\n\t\t}\n\texport type EntityEventType = keyof EntityEventListenerMap\n\n\texport type AddEventListener = <Type extends keyof EntityAccessor.RuntimeEntityEventListenerMap>(\n\t\tevent: { type: Type; key?: string },\n\t\tlistener: EntityAccessor.EntityEventListenerMap[Type],\n\t) => () => void\n}\n\nexport type { EntityAccessor }\n"],"names":[],"mappings":";;AAwBO,MAAM,mBAAmB,CAAC,aAChC,aAAa,QAAQ,OAAO,aAAa,YAAY,YAAY,YAAY,SAAS,WAAW;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityAccessor.js","sources":["../../../../../packages/binding-common/src/types/EntityAccessor.ts"],"sourcesContent":["import { Environment } from '../environment'\nimport { EntityListSubTreeMarker, EntitySubTreeMarker, HasManyRelationMarker, HasOneRelationMarker } from '../markers'\nimport type {\n\tEntityId,\n\tEntityName,\n\tEntityRealmKey,\n\tFieldName,\n\tFieldValue,\n\tRelativeEntityList,\n\tRelativeSingleEntity,\n\tRelativeSingleField,\n\tSugaredRelativeEntityList,\n\tSugaredRelativeSingleEntity,\n\tSugaredRelativeSingleField,\n} from '../treeParameters'\nimport type { AsyncBatchUpdatesOptions } from './AsyncBatchUpdatesOptions'\nimport type { BatchUpdatesOptions } from './BatchUpdatesOptions'\nimport { EntityListAccessor } from './EntityListAccessor'\nimport type { Errorable } from './Errorable'\nimport { ErrorAccessor } from './ErrorAccessor'\nimport type { FieldAccessor } from './FieldAccessor'\nimport type { PersistErrorOptions } from './PersistErrorOptions'\nimport type { PersistSuccessOptions } from './PersistSuccessOptions'\n\nexport const isEntityAccessor = (accessor: unknown): accessor is EntityAccessor =>\n\taccessor !== null && typeof accessor === 'object' && '__type' in accessor && accessor.__type === 'EntityAccessor'\n\ninterface EntityAccessor extends Errorable {\n\treadonly __type: 'EntityAccessor'\n\t/**\n\t * The key is a unique identifier of the entity. It is not the id of the entity.\n\t */\n\treadonly key?: EntityRealmKey\n\treadonly name: EntityName\n\treadonly hasUnpersistedChanges: boolean\n\treadonly errors: ErrorAccessor | undefined\n\treadonly environment: Environment\n\treadonly getAccessor: EntityAccessor.GetEntityAccessor\n\treadonly idOnServer: EntityId | undefined\n\treadonly id: EntityId\n\treadonly existsOnServer: boolean\n\n\taddError: ErrorAccessor.AddError\n\n\taddEventListener: EntityAccessor.AddEventListener\n\n\tbatchUpdates(performUpdates: EntityAccessor.BatchUpdatesHandler): void\n\n\tconnectEntityAtField(field: SugaredRelativeSingleEntity | string, entityToConnect: EntityAccessor): void\n\n\tdisconnectEntityAtField(field: SugaredRelativeSingleEntity | string, initializeReplacement?: EntityAccessor.BatchUpdatesHandler): void\n\n\tdeleteEntity(): void\n\n\tupdateValues(fieldValuePairs: EntityAccessor.FieldValuePairs): void\n\n\t/**\n\t * Please keep in mind that this method signature is literally impossible to implement safely. The generic parameter\n\t * is really just a way to succinctly write a type cast. Nothing more, really.\n\t */\n\tgetField<Value extends FieldValue = FieldValue>(field: SugaredRelativeSingleField | string | RelativeSingleField): FieldAccessor<Value>\n\n\tgetEntity(entity: SugaredRelativeSingleEntity | string | RelativeSingleEntity): EntityAccessor\n\n\tgetEntityList(entityList: SugaredRelativeEntityList | string | RelativeEntityList): EntityListAccessor\n\n\tgetParent(): EntityAccessor | EntityListAccessor | undefined\n\n\tgetMarker(): HasManyRelationMarker | HasOneRelationMarker | EntitySubTreeMarker | EntityListSubTreeMarker\n\n\tgetFieldMeta(field: string): { readable?: boolean; updatable?: boolean }\n}\n\nnamespace EntityAccessor {\n\texport interface FieldDatum {\n\t\tgetAccessor(): NestedAccessor\n\t}\n\texport type NestedAccessor = EntityAccessor | EntityListAccessor | FieldAccessor<any>\n\n\texport type FieldValuePairs =\n\t\t| {\n\t\t\t[field: string]: FieldValue\n\t\t
|
|
1
|
+
{"version":3,"file":"EntityAccessor.js","sources":["../../../../../packages/binding-common/src/types/EntityAccessor.ts"],"sourcesContent":["import { Environment } from '../environment'\nimport { EntityListSubTreeMarker, EntitySubTreeMarker, HasManyRelationMarker, HasOneRelationMarker } from '../markers'\nimport type {\n\tEntityId,\n\tEntityName,\n\tEntityRealmKey,\n\tFieldName,\n\tFieldValue,\n\tRelativeEntityList,\n\tRelativeSingleEntity,\n\tRelativeSingleField,\n\tSugaredRelativeEntityList,\n\tSugaredRelativeSingleEntity,\n\tSugaredRelativeSingleField,\n} from '../treeParameters'\nimport type { AsyncBatchUpdatesOptions } from './AsyncBatchUpdatesOptions'\nimport type { BatchUpdatesOptions } from './BatchUpdatesOptions'\nimport { EntityListAccessor } from './EntityListAccessor'\nimport type { Errorable } from './Errorable'\nimport { ErrorAccessor } from './ErrorAccessor'\nimport type { FieldAccessor } from './FieldAccessor'\nimport type { PersistErrorOptions } from './PersistErrorOptions'\nimport type { PersistSuccessOptions } from './PersistSuccessOptions'\n\nexport const isEntityAccessor = (accessor: unknown): accessor is EntityAccessor =>\n\taccessor !== null && typeof accessor === 'object' && '__type' in accessor && accessor.__type === 'EntityAccessor'\n\ninterface EntityAccessor extends Errorable {\n\treadonly __type: 'EntityAccessor'\n\t/**\n\t * The key is a unique identifier of the entity. It is not the id of the entity.\n\t */\n\treadonly key?: EntityRealmKey\n\treadonly name: EntityName\n\treadonly hasUnpersistedChanges: boolean\n\treadonly errors: ErrorAccessor | undefined\n\treadonly environment: Environment\n\treadonly getAccessor: EntityAccessor.GetEntityAccessor\n\treadonly idOnServer: EntityId | undefined\n\treadonly id: EntityId\n\treadonly existsOnServer: boolean\n\n\taddError: ErrorAccessor.AddError\n\n\taddEventListener: EntityAccessor.AddEventListener\n\n\tbatchUpdates(performUpdates: EntityAccessor.BatchUpdatesHandler): void\n\n\tconnectEntityAtField(field: SugaredRelativeSingleEntity | string, entityToConnect: EntityAccessor): void\n\n\tdisconnectEntityAtField(field: SugaredRelativeSingleEntity | string, initializeReplacement?: EntityAccessor.BatchUpdatesHandler): void\n\n\tdeleteEntity(): void\n\n\tupdateValues(fieldValuePairs: EntityAccessor.FieldValuePairs): void\n\n\t/**\n\t * Please keep in mind that this method signature is literally impossible to implement safely. The generic parameter\n\t * is really just a way to succinctly write a type cast. Nothing more, really.\n\t */\n\tgetField<Value extends FieldValue = FieldValue>(field: SugaredRelativeSingleField | string | RelativeSingleField): FieldAccessor<Value>\n\n\tgetEntity(entity: SugaredRelativeSingleEntity | string | RelativeSingleEntity): EntityAccessor\n\n\tgetEntityList(entityList: SugaredRelativeEntityList | string | RelativeEntityList): EntityListAccessor\n\n\tgetParent(): EntityAccessor | EntityListAccessor | undefined\n\n\tgetMarker(): HasManyRelationMarker | HasOneRelationMarker | EntitySubTreeMarker | EntityListSubTreeMarker\n\n\tgetFieldMeta(field: string): { readable?: boolean; updatable?: boolean }\n}\n\nnamespace EntityAccessor {\n\texport interface FieldDatum {\n\t\tgetAccessor(): NestedAccessor\n\t}\n\texport type NestedAccessor = EntityAccessor | EntityListAccessor | FieldAccessor<any>\n\n\texport type FieldValuePairs =\n\t\t| {\n\t\t\t[field: string]: FieldValue\n\t\t}\n\t\t| Iterable<[SugaredRelativeSingleField | string, FieldValue]>\n\n\texport type FieldData = Map<FieldName, FieldDatum>\n\n\texport type GetEntityAccessor = () => EntityAccessor\n\texport type BatchUpdatesHandler = (getAccessor: GetEntityAccessor, options: BatchUpdatesOptions) => void\n\texport type UpdateListener = (accessor: EntityAccessor) => void\n\n\texport type BeforePersistHandler = (\n\t\tgetAccessor: GetEntityAccessor,\n\t\toptions: AsyncBatchUpdatesOptions,\n\t) => void | BeforePersistHandler | Promise<void | BeforePersistHandler>\n\n\texport type PersistErrorHandler = (\n\t\tgetAccessor: GetEntityAccessor,\n\t\toptions: PersistErrorOptions,\n\t) => void | Promise<void>\n\n\texport type PersistSuccessHandler = (\n\t\tgetAccessor: GetEntityAccessor,\n\t\toptions: PersistSuccessOptions,\n\t) => void | PersistSuccessHandler | Promise<void | PersistSuccessHandler>\n\n\texport type RuntimeEntityEventListenerMap = {\n\t\tbeforePersist: BeforePersistHandler\n\t\tbeforeUpdate: BatchUpdatesHandler\n\t\tconnectionUpdate: UpdateListener\n\t\tpersistError: PersistErrorHandler\n\t\tpersistSuccess: PersistSuccessHandler\n\t\tupdate: UpdateListener\n\t}\n\texport type EntityEventListenerMap =\n\t\t& RuntimeEntityEventListenerMap\n\t\t& {\n\t\t\tinitialize: BatchUpdatesHandler\n\t\t}\n\texport type EntityEventType = keyof EntityEventListenerMap\n\n\texport type AddEventListener = <Type extends keyof EntityAccessor.RuntimeEntityEventListenerMap>(\n\t\tevent: { type: Type; key?: string },\n\t\tlistener: EntityAccessor.EntityEventListenerMap[Type],\n\t) => () => void\n}\n\nexport type { EntityAccessor }\n"],"names":[],"mappings":"AAwBO,MAAM,mBAAmB,CAAC,aAChC,aAAa,QAAQ,OAAO,aAAa,YAAY,YAAY,YAAY,SAAS,WAAW;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityListAccessor.cjs","sources":["../../../../../packages/binding-common/src/types/EntityListAccessor.ts"],"sourcesContent":["import type { Environment } from '../environment'\nimport type { EntityId, EntityName, EntityRealmKey } from '../treeParameters'\nimport type { AsyncBatchUpdatesOptions } from './AsyncBatchUpdatesOptions'\nimport type { BatchUpdatesOptions } from './BatchUpdatesOptions'\nimport type { EntityAccessor } from './EntityAccessor'\nimport type { Errorable } from './Errorable'\nimport { ErrorAccessor } from './ErrorAccessor'\nimport type { PersistErrorOptions } from './PersistErrorOptions'\nimport type { PersistSuccessOptions } from './PersistSuccessOptions'\nimport { RuntimeId } from '../RuntimeId'\nimport { EntityListSubTreeMarker, HasManyRelationMarker } from '../markers'\n\nexport const isEntityListAccessor = (accessor: unknown): accessor is EntityListAccessor =>\n\taccessor !== null && typeof accessor === 'object' && '__type' in accessor && accessor.__type === 'EntityListAccessor'\n\ninterface EntityListAccessor extends Errorable {\n\treadonly __type: 'EntityListAccessor'\n\treadonly name: EntityName\n\treadonly hasUnpersistedChanges: boolean\n\treadonly errors: ErrorAccessor | undefined\n\treadonly environment: Environment\n\treadonly getAccessor: EntityListAccessor.GetEntityListAccessor\n\n\t/**\n\t * Returns all entity keys that are on the list.\n\t * **KEYS ARE NOT IDS!**\n\t * @see EntityAccessor.key\n\t */\n\tkeys(): IterableIterator<EntityRealmKey>\n\n\tids(): IterableIterator<EntityId>\n\n\t/**\n\t * This will only contain the ids that the server knows about. Not necessarily the ids that have been added on\n\t * the list since the last server query.\n\t */\n\tidsPersistedOnServer: Set<EntityId>\n\n\t[Symbol.iterator](): IterableIterator<EntityAccessor>\n\n\thasEntityId(id: EntityId): boolean\n\n\tisEmpty(): boolean\n\n\tlength: number\n\n\tdeleteAll(): void\n\n\tdisconnectAll(): void\n\n\taddError(error: ErrorAccessor.Error | string): () => void\n\n\taddEventListener: EntityListAccessor.AddEventListener\n\n\taddChildEventListener: EntityListAccessor.AddChildEventListener\n\n\tbatchUpdates(performUpdates: EntityListAccessor.BatchUpdatesHandler): void\n\n\tconnectEntity(entityToConnect: EntityAccessor): void\n\n\tcreateNewEntity(initialize?: EntityAccessor.BatchUpdatesHandler): RuntimeId\n\tdisconnectEntity(childEntity: EntityAccessor, options?: { noPersist?: boolean }): void\n\tgetChildEntityById(id: EntityId): EntityAccessor\n\n\tgetParent(): EntityAccessor | undefined\n\n\tgetMarker(): EntityListSubTreeMarker | HasManyRelationMarker\n}\n\nnamespace EntityListAccessor {\n\texport type GetEntityListAccessor = () => EntityListAccessor\n\texport type BatchUpdatesHandler = (getAccessor: GetEntityListAccessor, options: BatchUpdatesOptions) => void\n\n\texport type UpdateListener = (accessor: EntityListAccessor) => void\n\n\texport type BeforePersistHandler = (\n\t\tgetAccessor: GetEntityListAccessor,\n\t\toptions: AsyncBatchUpdatesOptions,\n\t) => void | Promise<void | BeforePersistHandler>\n\n\texport type PersistErrorHandler = (\n\t\tgetAccessor: GetEntityListAccessor,\n\t\toptions: PersistErrorOptions,\n\t) => void | Promise<void>\n\n\texport type PersistSuccessHandler = (\n\t\tgetAccessor: GetEntityListAccessor,\n\t\toptions: PersistSuccessOptions,\n\t) => void | Promise<void | PersistSuccessHandler>\n\n\texport type ChildEventListenerMap = {\n\t\tchildBeforeUpdate: EntityAccessor.BatchUpdatesHandler\n\t\tchildInitialize: EntityAccessor.BatchUpdatesHandler\n\t\tchildUpdate: EntityAccessor.UpdateListener\n\t}\n\n\texport type RuntimeEntityListEventListenerMap = {\n\t\tbeforePersist: BeforePersistHandler\n\t\tbeforeUpdate: BatchUpdatesHandler\n\t\tpersistError: PersistErrorHandler\n\t\tpersistSuccess: PersistSuccessHandler\n\t\tupdate: UpdateListener\n\t}\n\texport type EntityListEventListenerMap =\n\t\t& RuntimeEntityListEventListenerMap\n\t\t& {\n\t\t\tinitialize: BatchUpdatesHandler\n\t\t}\n\n\texport type EntityListEventType = keyof EntityListEventListenerMap\n\n\texport type AddEventListener = <Type extends keyof EntityListAccessor.RuntimeEntityListEventListenerMap>(\n\t\tevent: { type: Type; key?: string },\n\t\tlistener: EntityListAccessor.EntityListEventListenerMap[Type],\n\t) => () => void\n\n\texport type AddChildEventListener = <Type extends keyof EntityAccessor.EntityEventListenerMap>(\n\t\tevent: { type: Type; key?: string },\n\t\tlistener: EntityAccessor.EntityEventListenerMap[Type],\n\t) => () => void\n}\n\nexport {
|
|
1
|
+
{"version":3,"file":"EntityListAccessor.cjs","sources":["../../../../../packages/binding-common/src/types/EntityListAccessor.ts"],"sourcesContent":["import type { Environment } from '../environment'\nimport type { EntityId, EntityName, EntityRealmKey } from '../treeParameters'\nimport type { AsyncBatchUpdatesOptions } from './AsyncBatchUpdatesOptions'\nimport type { BatchUpdatesOptions } from './BatchUpdatesOptions'\nimport type { EntityAccessor } from './EntityAccessor'\nimport type { Errorable } from './Errorable'\nimport { ErrorAccessor } from './ErrorAccessor'\nimport type { PersistErrorOptions } from './PersistErrorOptions'\nimport type { PersistSuccessOptions } from './PersistSuccessOptions'\nimport { RuntimeId } from '../RuntimeId'\nimport { EntityListSubTreeMarker, HasManyRelationMarker } from '../markers'\n\nexport const isEntityListAccessor = (accessor: unknown): accessor is EntityListAccessor =>\n\taccessor !== null && typeof accessor === 'object' && '__type' in accessor && accessor.__type === 'EntityListAccessor'\n\ninterface EntityListAccessor extends Errorable {\n\treadonly __type: 'EntityListAccessor'\n\treadonly name: EntityName\n\treadonly hasUnpersistedChanges: boolean\n\treadonly errors: ErrorAccessor | undefined\n\treadonly environment: Environment\n\treadonly getAccessor: EntityListAccessor.GetEntityListAccessor\n\n\t/**\n\t * Returns all entity keys that are on the list.\n\t * **KEYS ARE NOT IDS!**\n\t * @see EntityAccessor.key\n\t */\n\tkeys(): IterableIterator<EntityRealmKey>\n\n\tids(): IterableIterator<EntityId>\n\n\t/**\n\t * This will only contain the ids that the server knows about. Not necessarily the ids that have been added on\n\t * the list since the last server query.\n\t */\n\tidsPersistedOnServer: Set<EntityId>\n\n\t[Symbol.iterator](): IterableIterator<EntityAccessor>\n\n\thasEntityId(id: EntityId): boolean\n\n\tisEmpty(): boolean\n\n\tlength: number\n\n\tdeleteAll(): void\n\n\tdisconnectAll(): void\n\n\taddError(error: ErrorAccessor.Error | string): () => void\n\n\taddEventListener: EntityListAccessor.AddEventListener\n\n\taddChildEventListener: EntityListAccessor.AddChildEventListener\n\n\tbatchUpdates(performUpdates: EntityListAccessor.BatchUpdatesHandler): void\n\n\tconnectEntity(entityToConnect: EntityAccessor): void\n\n\tcreateNewEntity(initialize?: EntityAccessor.BatchUpdatesHandler): RuntimeId\n\tdisconnectEntity(childEntity: EntityAccessor, options?: { noPersist?: boolean }): void\n\tgetChildEntityById(id: EntityId): EntityAccessor\n\n\tgetParent(): EntityAccessor | undefined\n\n\tgetMarker(): EntityListSubTreeMarker | HasManyRelationMarker\n}\n\nnamespace EntityListAccessor {\n\texport type GetEntityListAccessor = () => EntityListAccessor\n\texport type BatchUpdatesHandler = (getAccessor: GetEntityListAccessor, options: BatchUpdatesOptions) => void\n\n\texport type UpdateListener = (accessor: EntityListAccessor) => void\n\n\texport type BeforePersistHandler = (\n\t\tgetAccessor: GetEntityListAccessor,\n\t\toptions: AsyncBatchUpdatesOptions,\n\t) => void | Promise<void | BeforePersistHandler>\n\n\texport type PersistErrorHandler = (\n\t\tgetAccessor: GetEntityListAccessor,\n\t\toptions: PersistErrorOptions,\n\t) => void | Promise<void>\n\n\texport type PersistSuccessHandler = (\n\t\tgetAccessor: GetEntityListAccessor,\n\t\toptions: PersistSuccessOptions,\n\t) => void | Promise<void | PersistSuccessHandler>\n\n\texport type ChildEventListenerMap = {\n\t\tchildBeforeUpdate: EntityAccessor.BatchUpdatesHandler\n\t\tchildInitialize: EntityAccessor.BatchUpdatesHandler\n\t\tchildUpdate: EntityAccessor.UpdateListener\n\t}\n\n\texport type RuntimeEntityListEventListenerMap = {\n\t\tbeforePersist: BeforePersistHandler\n\t\tbeforeUpdate: BatchUpdatesHandler\n\t\tpersistError: PersistErrorHandler\n\t\tpersistSuccess: PersistSuccessHandler\n\t\tupdate: UpdateListener\n\t}\n\texport type EntityListEventListenerMap =\n\t\t& RuntimeEntityListEventListenerMap\n\t\t& {\n\t\t\tinitialize: BatchUpdatesHandler\n\t\t}\n\n\texport type EntityListEventType = keyof EntityListEventListenerMap\n\n\texport type AddEventListener = <Type extends keyof EntityListAccessor.RuntimeEntityListEventListenerMap>(\n\t\tevent: { type: Type; key?: string },\n\t\tlistener: EntityListAccessor.EntityListEventListenerMap[Type],\n\t) => () => void\n\n\texport type AddChildEventListener = <Type extends keyof EntityAccessor.EntityEventListenerMap>(\n\t\tevent: { type: Type; key?: string },\n\t\tlistener: EntityAccessor.EntityEventListenerMap[Type],\n\t) => () => void\n}\n\nexport type { EntityListAccessor }\n"],"names":[],"mappings":";;AAYO,MAAM,uBAAuB,CAAC,aACpC,aAAa,QAAQ,OAAO,aAAa,YAAY,YAAY,YAAY,SAAS,WAAW;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityListAccessor.js","sources":["../../../../../packages/binding-common/src/types/EntityListAccessor.ts"],"sourcesContent":["import type { Environment } from '../environment'\nimport type { EntityId, EntityName, EntityRealmKey } from '../treeParameters'\nimport type { AsyncBatchUpdatesOptions } from './AsyncBatchUpdatesOptions'\nimport type { BatchUpdatesOptions } from './BatchUpdatesOptions'\nimport type { EntityAccessor } from './EntityAccessor'\nimport type { Errorable } from './Errorable'\nimport { ErrorAccessor } from './ErrorAccessor'\nimport type { PersistErrorOptions } from './PersistErrorOptions'\nimport type { PersistSuccessOptions } from './PersistSuccessOptions'\nimport { RuntimeId } from '../RuntimeId'\nimport { EntityListSubTreeMarker, HasManyRelationMarker } from '../markers'\n\nexport const isEntityListAccessor = (accessor: unknown): accessor is EntityListAccessor =>\n\taccessor !== null && typeof accessor === 'object' && '__type' in accessor && accessor.__type === 'EntityListAccessor'\n\ninterface EntityListAccessor extends Errorable {\n\treadonly __type: 'EntityListAccessor'\n\treadonly name: EntityName\n\treadonly hasUnpersistedChanges: boolean\n\treadonly errors: ErrorAccessor | undefined\n\treadonly environment: Environment\n\treadonly getAccessor: EntityListAccessor.GetEntityListAccessor\n\n\t/**\n\t * Returns all entity keys that are on the list.\n\t * **KEYS ARE NOT IDS!**\n\t * @see EntityAccessor.key\n\t */\n\tkeys(): IterableIterator<EntityRealmKey>\n\n\tids(): IterableIterator<EntityId>\n\n\t/**\n\t * This will only contain the ids that the server knows about. Not necessarily the ids that have been added on\n\t * the list since the last server query.\n\t */\n\tidsPersistedOnServer: Set<EntityId>\n\n\t[Symbol.iterator](): IterableIterator<EntityAccessor>\n\n\thasEntityId(id: EntityId): boolean\n\n\tisEmpty(): boolean\n\n\tlength: number\n\n\tdeleteAll(): void\n\n\tdisconnectAll(): void\n\n\taddError(error: ErrorAccessor.Error | string): () => void\n\n\taddEventListener: EntityListAccessor.AddEventListener\n\n\taddChildEventListener: EntityListAccessor.AddChildEventListener\n\n\tbatchUpdates(performUpdates: EntityListAccessor.BatchUpdatesHandler): void\n\n\tconnectEntity(entityToConnect: EntityAccessor): void\n\n\tcreateNewEntity(initialize?: EntityAccessor.BatchUpdatesHandler): RuntimeId\n\tdisconnectEntity(childEntity: EntityAccessor, options?: { noPersist?: boolean }): void\n\tgetChildEntityById(id: EntityId): EntityAccessor\n\n\tgetParent(): EntityAccessor | undefined\n\n\tgetMarker(): EntityListSubTreeMarker | HasManyRelationMarker\n}\n\nnamespace EntityListAccessor {\n\texport type GetEntityListAccessor = () => EntityListAccessor\n\texport type BatchUpdatesHandler = (getAccessor: GetEntityListAccessor, options: BatchUpdatesOptions) => void\n\n\texport type UpdateListener = (accessor: EntityListAccessor) => void\n\n\texport type BeforePersistHandler = (\n\t\tgetAccessor: GetEntityListAccessor,\n\t\toptions: AsyncBatchUpdatesOptions,\n\t) => void | Promise<void | BeforePersistHandler>\n\n\texport type PersistErrorHandler = (\n\t\tgetAccessor: GetEntityListAccessor,\n\t\toptions: PersistErrorOptions,\n\t) => void | Promise<void>\n\n\texport type PersistSuccessHandler = (\n\t\tgetAccessor: GetEntityListAccessor,\n\t\toptions: PersistSuccessOptions,\n\t) => void | Promise<void | PersistSuccessHandler>\n\n\texport type ChildEventListenerMap = {\n\t\tchildBeforeUpdate: EntityAccessor.BatchUpdatesHandler\n\t\tchildInitialize: EntityAccessor.BatchUpdatesHandler\n\t\tchildUpdate: EntityAccessor.UpdateListener\n\t}\n\n\texport type RuntimeEntityListEventListenerMap = {\n\t\tbeforePersist: BeforePersistHandler\n\t\tbeforeUpdate: BatchUpdatesHandler\n\t\tpersistError: PersistErrorHandler\n\t\tpersistSuccess: PersistSuccessHandler\n\t\tupdate: UpdateListener\n\t}\n\texport type EntityListEventListenerMap =\n\t\t& RuntimeEntityListEventListenerMap\n\t\t& {\n\t\t\tinitialize: BatchUpdatesHandler\n\t\t}\n\n\texport type EntityListEventType = keyof EntityListEventListenerMap\n\n\texport type AddEventListener = <Type extends keyof EntityListAccessor.RuntimeEntityListEventListenerMap>(\n\t\tevent: { type: Type; key?: string },\n\t\tlistener: EntityListAccessor.EntityListEventListenerMap[Type],\n\t) => () => void\n\n\texport type AddChildEventListener = <Type extends keyof EntityAccessor.EntityEventListenerMap>(\n\t\tevent: { type: Type; key?: string },\n\t\tlistener: EntityAccessor.EntityEventListenerMap[Type],\n\t) => () => void\n}\n\nexport {
|
|
1
|
+
{"version":3,"file":"EntityListAccessor.js","sources":["../../../../../packages/binding-common/src/types/EntityListAccessor.ts"],"sourcesContent":["import type { Environment } from '../environment'\nimport type { EntityId, EntityName, EntityRealmKey } from '../treeParameters'\nimport type { AsyncBatchUpdatesOptions } from './AsyncBatchUpdatesOptions'\nimport type { BatchUpdatesOptions } from './BatchUpdatesOptions'\nimport type { EntityAccessor } from './EntityAccessor'\nimport type { Errorable } from './Errorable'\nimport { ErrorAccessor } from './ErrorAccessor'\nimport type { PersistErrorOptions } from './PersistErrorOptions'\nimport type { PersistSuccessOptions } from './PersistSuccessOptions'\nimport { RuntimeId } from '../RuntimeId'\nimport { EntityListSubTreeMarker, HasManyRelationMarker } from '../markers'\n\nexport const isEntityListAccessor = (accessor: unknown): accessor is EntityListAccessor =>\n\taccessor !== null && typeof accessor === 'object' && '__type' in accessor && accessor.__type === 'EntityListAccessor'\n\ninterface EntityListAccessor extends Errorable {\n\treadonly __type: 'EntityListAccessor'\n\treadonly name: EntityName\n\treadonly hasUnpersistedChanges: boolean\n\treadonly errors: ErrorAccessor | undefined\n\treadonly environment: Environment\n\treadonly getAccessor: EntityListAccessor.GetEntityListAccessor\n\n\t/**\n\t * Returns all entity keys that are on the list.\n\t * **KEYS ARE NOT IDS!**\n\t * @see EntityAccessor.key\n\t */\n\tkeys(): IterableIterator<EntityRealmKey>\n\n\tids(): IterableIterator<EntityId>\n\n\t/**\n\t * This will only contain the ids that the server knows about. Not necessarily the ids that have been added on\n\t * the list since the last server query.\n\t */\n\tidsPersistedOnServer: Set<EntityId>\n\n\t[Symbol.iterator](): IterableIterator<EntityAccessor>\n\n\thasEntityId(id: EntityId): boolean\n\n\tisEmpty(): boolean\n\n\tlength: number\n\n\tdeleteAll(): void\n\n\tdisconnectAll(): void\n\n\taddError(error: ErrorAccessor.Error | string): () => void\n\n\taddEventListener: EntityListAccessor.AddEventListener\n\n\taddChildEventListener: EntityListAccessor.AddChildEventListener\n\n\tbatchUpdates(performUpdates: EntityListAccessor.BatchUpdatesHandler): void\n\n\tconnectEntity(entityToConnect: EntityAccessor): void\n\n\tcreateNewEntity(initialize?: EntityAccessor.BatchUpdatesHandler): RuntimeId\n\tdisconnectEntity(childEntity: EntityAccessor, options?: { noPersist?: boolean }): void\n\tgetChildEntityById(id: EntityId): EntityAccessor\n\n\tgetParent(): EntityAccessor | undefined\n\n\tgetMarker(): EntityListSubTreeMarker | HasManyRelationMarker\n}\n\nnamespace EntityListAccessor {\n\texport type GetEntityListAccessor = () => EntityListAccessor\n\texport type BatchUpdatesHandler = (getAccessor: GetEntityListAccessor, options: BatchUpdatesOptions) => void\n\n\texport type UpdateListener = (accessor: EntityListAccessor) => void\n\n\texport type BeforePersistHandler = (\n\t\tgetAccessor: GetEntityListAccessor,\n\t\toptions: AsyncBatchUpdatesOptions,\n\t) => void | Promise<void | BeforePersistHandler>\n\n\texport type PersistErrorHandler = (\n\t\tgetAccessor: GetEntityListAccessor,\n\t\toptions: PersistErrorOptions,\n\t) => void | Promise<void>\n\n\texport type PersistSuccessHandler = (\n\t\tgetAccessor: GetEntityListAccessor,\n\t\toptions: PersistSuccessOptions,\n\t) => void | Promise<void | PersistSuccessHandler>\n\n\texport type ChildEventListenerMap = {\n\t\tchildBeforeUpdate: EntityAccessor.BatchUpdatesHandler\n\t\tchildInitialize: EntityAccessor.BatchUpdatesHandler\n\t\tchildUpdate: EntityAccessor.UpdateListener\n\t}\n\n\texport type RuntimeEntityListEventListenerMap = {\n\t\tbeforePersist: BeforePersistHandler\n\t\tbeforeUpdate: BatchUpdatesHandler\n\t\tpersistError: PersistErrorHandler\n\t\tpersistSuccess: PersistSuccessHandler\n\t\tupdate: UpdateListener\n\t}\n\texport type EntityListEventListenerMap =\n\t\t& RuntimeEntityListEventListenerMap\n\t\t& {\n\t\t\tinitialize: BatchUpdatesHandler\n\t\t}\n\n\texport type EntityListEventType = keyof EntityListEventListenerMap\n\n\texport type AddEventListener = <Type extends keyof EntityListAccessor.RuntimeEntityListEventListenerMap>(\n\t\tevent: { type: Type; key?: string },\n\t\tlistener: EntityListAccessor.EntityListEventListenerMap[Type],\n\t) => () => void\n\n\texport type AddChildEventListener = <Type extends keyof EntityAccessor.EntityEventListenerMap>(\n\t\tevent: { type: Type; key?: string },\n\t\tlistener: EntityAccessor.EntityEventListenerMap[Type],\n\t) => () => void\n}\n\nexport type { EntityListAccessor }\n"],"names":[],"mappings":"AAYO,MAAM,uBAAuB,CAAC,aACpC,aAAa,QAAQ,OAAO,aAAa,YAAY,YAAY,YAAY,SAAS,WAAW;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ErrorAccessor.cjs","sources":["../../../../../packages/binding-common/src/types/ErrorAccessor.ts"],"sourcesContent":["import type { Result } from '@contember/client'\n\ninterface ErrorAccessor {\n\treadonly errors: ErrorAccessor.Error[]\n}\n\nnamespace ErrorAccessor {\n\texport type ErrorId = number\n\texport type Error = ExecutionError | ValidationError\n\texport type ErrorsById = Map<ErrorId, Error>\n\texport type ClearError = () => void\n\n\texport type AddError = (error: ErrorAccessor.Error | string) => ClearError\n\n\texport type ExecutionErrors = ExecutionError[]\n\n\texport interface ExecutionError {\n\t\ttype: 'execution'\n\t\tcode: Result.ExecutionErrorType\n\t\tdeveloperMessage: string | null\n\t}\n\n\texport type ValidationErrors = ValidationError[]\n\n\texport interface ValidationError {\n\t\ttype: 'validation'\n\t\tcode: WellKnownErrorCode | string | undefined\n\t\tmessage: string\n\t}\n\n\texport type WellKnownErrorCode = 'fieldRequired'\n\n\texport const normalizeError = (error: Error | string): Error
|
|
1
|
+
{"version":3,"file":"ErrorAccessor.cjs","sources":["../../../../../packages/binding-common/src/types/ErrorAccessor.ts"],"sourcesContent":["import type { Result } from '@contember/client'\n\ninterface ErrorAccessor {\n\treadonly errors: ErrorAccessor.Error[]\n}\n\nnamespace ErrorAccessor {\n\texport type ErrorId = number\n\texport type Error = ExecutionError | ValidationError\n\texport type ErrorsById = Map<ErrorId, Error>\n\texport type ClearError = () => void\n\n\texport type AddError = (error: ErrorAccessor.Error | string) => ClearError\n\n\texport type ExecutionErrors = ExecutionError[]\n\n\texport interface ExecutionError {\n\t\ttype: 'execution'\n\t\tcode: Result.ExecutionErrorType\n\t\tdeveloperMessage: string | null\n\t}\n\n\texport type ValidationErrors = ValidationError[]\n\n\texport interface ValidationError {\n\t\ttype: 'validation'\n\t\tcode: WellKnownErrorCode | string | undefined\n\t\tmessage: string\n\t}\n\n\texport type WellKnownErrorCode = 'fieldRequired'\n\n\texport const normalizeError = (error: Error | string): Error =>\n\t\ttypeof error === 'string'\n\t\t\t? {\n\t\t\t\ttype: 'validation',\n\t\t\t\tmessage: error,\n\t\t\t\tcode: undefined,\n\t\t\t}\n\t\t\t: error\n}\nexport { ErrorAccessor }\n\nexport interface ErrorAccessorHolder {\n\treadonly errors: ErrorAccessor | undefined\n}\n"],"names":["ErrorAccessor"],"mappings":";;AAMUA,QAAAA,gBAAAA;AAAAA,CAAV,CAAUA,mBAAV;AA0BcA,iBAAA,iBAAiB,CAAC,UAC9B,OAAO,UAAU,WACd;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,IACT,MAAM;AAAA,EAAA,IAEL;AAAA,GAjCKA,QAAAA,kBAAAA,wBAAA,CAAA,EAAA;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ErrorAccessor.js","sources":["../../../../../packages/binding-common/src/types/ErrorAccessor.ts"],"sourcesContent":["import type { Result } from '@contember/client'\n\ninterface ErrorAccessor {\n\treadonly errors: ErrorAccessor.Error[]\n}\n\nnamespace ErrorAccessor {\n\texport type ErrorId = number\n\texport type Error = ExecutionError | ValidationError\n\texport type ErrorsById = Map<ErrorId, Error>\n\texport type ClearError = () => void\n\n\texport type AddError = (error: ErrorAccessor.Error | string) => ClearError\n\n\texport type ExecutionErrors = ExecutionError[]\n\n\texport interface ExecutionError {\n\t\ttype: 'execution'\n\t\tcode: Result.ExecutionErrorType\n\t\tdeveloperMessage: string | null\n\t}\n\n\texport type ValidationErrors = ValidationError[]\n\n\texport interface ValidationError {\n\t\ttype: 'validation'\n\t\tcode: WellKnownErrorCode | string | undefined\n\t\tmessage: string\n\t}\n\n\texport type WellKnownErrorCode = 'fieldRequired'\n\n\texport const normalizeError = (error: Error | string): Error
|
|
1
|
+
{"version":3,"file":"ErrorAccessor.js","sources":["../../../../../packages/binding-common/src/types/ErrorAccessor.ts"],"sourcesContent":["import type { Result } from '@contember/client'\n\ninterface ErrorAccessor {\n\treadonly errors: ErrorAccessor.Error[]\n}\n\nnamespace ErrorAccessor {\n\texport type ErrorId = number\n\texport type Error = ExecutionError | ValidationError\n\texport type ErrorsById = Map<ErrorId, Error>\n\texport type ClearError = () => void\n\n\texport type AddError = (error: ErrorAccessor.Error | string) => ClearError\n\n\texport type ExecutionErrors = ExecutionError[]\n\n\texport interface ExecutionError {\n\t\ttype: 'execution'\n\t\tcode: Result.ExecutionErrorType\n\t\tdeveloperMessage: string | null\n\t}\n\n\texport type ValidationErrors = ValidationError[]\n\n\texport interface ValidationError {\n\t\ttype: 'validation'\n\t\tcode: WellKnownErrorCode | string | undefined\n\t\tmessage: string\n\t}\n\n\texport type WellKnownErrorCode = 'fieldRequired'\n\n\texport const normalizeError = (error: Error | string): Error =>\n\t\ttypeof error === 'string'\n\t\t\t? {\n\t\t\t\ttype: 'validation',\n\t\t\t\tmessage: error,\n\t\t\t\tcode: undefined,\n\t\t\t}\n\t\t\t: error\n}\nexport { ErrorAccessor }\n\nexport interface ErrorAccessorHolder {\n\treadonly errors: ErrorAccessor | undefined\n}\n"],"names":["ErrorAccessor"],"mappings":"AAMA,IAAU;AAAA,CAAV,CAAUA,mBAAV;AA0BcA,iBAAA,iBAAiB,CAAC,UAC9B,OAAO,UAAU,WACd;AAAA,IACD,MAAM;AAAA,IACN,SAAS;AAAA,IACT,MAAM;AAAA,EAAA,IAEL;AAAA,GAjCK,kBAAA,gBAAA,CAAA,EAAA;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FieldAccessor.cjs","sources":["../../../../../packages/binding-common/src/types/FieldAccessor.ts"],"sourcesContent":["import type { FieldName, FieldValue } from '../treeParameters'\nimport type { BatchUpdatesOptions } from './BatchUpdatesOptions'\nimport type { Errorable } from './Errorable'\nimport { ErrorAccessor } from './ErrorAccessor'\nimport type { SchemaColumn } from '../schema'\nimport { EntityAccessor } from './EntityAccessor'\n\
|
|
1
|
+
{"version":3,"file":"FieldAccessor.cjs","sources":["../../../../../packages/binding-common/src/types/FieldAccessor.ts"],"sourcesContent":["import type { FieldName, FieldValue } from '../treeParameters'\nimport type { BatchUpdatesOptions } from './BatchUpdatesOptions'\nimport type { Errorable } from './Errorable'\nimport { ErrorAccessor } from './ErrorAccessor'\nimport type { SchemaColumn } from '../schema'\nimport { EntityAccessor } from './EntityAccessor'\n\nexport const isFieldAccessor = (accessor: unknown): accessor is FieldAccessor =>\n\taccessor !== null && typeof accessor === 'object' && '__type' in accessor && accessor.__type === 'FieldAccessor'\n\ninterface FieldAccessor<Value extends FieldValue = FieldValue> extends Errorable {\n\treadonly __type: 'FieldAccessor'\n\treadonly fieldName: FieldName\n\treadonly value: Value | null\n\treadonly valueOnServer: Value | null\n\treadonly defaultValue: Value | undefined\n\treadonly errors: ErrorAccessor | undefined\n\treadonly hasUnpersistedChanges: boolean\n\treadonly getAccessor: FieldAccessor.GetFieldAccessor<Value>\n\treadonly schema: SchemaColumn\n\n\taddError(error: ErrorAccessor.Error | string): ErrorAccessor.ClearError\n\n\tclearErrors(): void\n\n\taddEventListener: FieldAccessor.AddEventListener<Value>\n\n\tupdateValue(newValue: Value | null, options?: FieldAccessor.UpdateOptions): void\n\n\tisTouchedBy(agent: FieldAccessor.TouchAgent): boolean\n\n\tisTouched: boolean\n\n\tgetParent(): EntityAccessor\n}\n\nnamespace FieldAccessor {\n\texport type TouchAgent = 'user' | (string & {})\n\texport interface UpdateOptions {\n\t\tagent?: TouchAgent\n\t}\n\n\texport type GetFieldAccessor<Value extends FieldValue = FieldValue> = () => FieldAccessor<Value>\n\n\texport type BeforeUpdateListener<Value extends FieldValue = FieldValue> = (\n\t\tupdatedAccessor: FieldAccessor<Value>,\n\t) => void\n\texport type InitializeListener<Value extends FieldValue = FieldValue> = (\n\t\tgetAccessor: GetFieldAccessor<Value>,\n\t\toptions: BatchUpdatesOptions,\n\t) => void\n\texport type UpdateListener<Value extends FieldValue = FieldValue> = (accessor: FieldAccessor<Value>) => void\n\n\texport type RuntimeFieldEventListenerMap<Value extends FieldValue = FieldValue> = {\n\t\tbeforeUpdate: BeforeUpdateListener<Value>\n\t\tupdate: UpdateListener<Value>\n\t}\n\n\texport type FieldEventListenerMap<Value extends FieldValue = FieldValue> =\n\t\t& RuntimeFieldEventListenerMap<Value>\n\t\t& {\n\t\t\tinitialize: InitializeListener<Value>\n\t\t}\n\n\texport type FieldEventType = keyof FieldEventListenerMap\n\n\texport type AddEventListener<Value extends FieldValue = FieldValue> = <Type extends FieldEventType>(\n\t\tevent: { type: Type; key?: string },\n\t\tlistener: FieldEventListenerMap<Value>[Type],\n\t) => () => void\n}\n\nexport type { FieldAccessor }\n"],"names":[],"mappings":";;AAOO,MAAM,kBAAkB,CAAC,aAC/B,aAAa,QAAQ,OAAO,aAAa,YAAY,YAAY,YAAY,SAAS,WAAW;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FieldAccessor.js","sources":["../../../../../packages/binding-common/src/types/FieldAccessor.ts"],"sourcesContent":["import type { FieldName, FieldValue } from '../treeParameters'\nimport type { BatchUpdatesOptions } from './BatchUpdatesOptions'\nimport type { Errorable } from './Errorable'\nimport { ErrorAccessor } from './ErrorAccessor'\nimport type { SchemaColumn } from '../schema'\nimport { EntityAccessor } from './EntityAccessor'\n\
|
|
1
|
+
{"version":3,"file":"FieldAccessor.js","sources":["../../../../../packages/binding-common/src/types/FieldAccessor.ts"],"sourcesContent":["import type { FieldName, FieldValue } from '../treeParameters'\nimport type { BatchUpdatesOptions } from './BatchUpdatesOptions'\nimport type { Errorable } from './Errorable'\nimport { ErrorAccessor } from './ErrorAccessor'\nimport type { SchemaColumn } from '../schema'\nimport { EntityAccessor } from './EntityAccessor'\n\nexport const isFieldAccessor = (accessor: unknown): accessor is FieldAccessor =>\n\taccessor !== null && typeof accessor === 'object' && '__type' in accessor && accessor.__type === 'FieldAccessor'\n\ninterface FieldAccessor<Value extends FieldValue = FieldValue> extends Errorable {\n\treadonly __type: 'FieldAccessor'\n\treadonly fieldName: FieldName\n\treadonly value: Value | null\n\treadonly valueOnServer: Value | null\n\treadonly defaultValue: Value | undefined\n\treadonly errors: ErrorAccessor | undefined\n\treadonly hasUnpersistedChanges: boolean\n\treadonly getAccessor: FieldAccessor.GetFieldAccessor<Value>\n\treadonly schema: SchemaColumn\n\n\taddError(error: ErrorAccessor.Error | string): ErrorAccessor.ClearError\n\n\tclearErrors(): void\n\n\taddEventListener: FieldAccessor.AddEventListener<Value>\n\n\tupdateValue(newValue: Value | null, options?: FieldAccessor.UpdateOptions): void\n\n\tisTouchedBy(agent: FieldAccessor.TouchAgent): boolean\n\n\tisTouched: boolean\n\n\tgetParent(): EntityAccessor\n}\n\nnamespace FieldAccessor {\n\texport type TouchAgent = 'user' | (string & {})\n\texport interface UpdateOptions {\n\t\tagent?: TouchAgent\n\t}\n\n\texport type GetFieldAccessor<Value extends FieldValue = FieldValue> = () => FieldAccessor<Value>\n\n\texport type BeforeUpdateListener<Value extends FieldValue = FieldValue> = (\n\t\tupdatedAccessor: FieldAccessor<Value>,\n\t) => void\n\texport type InitializeListener<Value extends FieldValue = FieldValue> = (\n\t\tgetAccessor: GetFieldAccessor<Value>,\n\t\toptions: BatchUpdatesOptions,\n\t) => void\n\texport type UpdateListener<Value extends FieldValue = FieldValue> = (accessor: FieldAccessor<Value>) => void\n\n\texport type RuntimeFieldEventListenerMap<Value extends FieldValue = FieldValue> = {\n\t\tbeforeUpdate: BeforeUpdateListener<Value>\n\t\tupdate: UpdateListener<Value>\n\t}\n\n\texport type FieldEventListenerMap<Value extends FieldValue = FieldValue> =\n\t\t& RuntimeFieldEventListenerMap<Value>\n\t\t& {\n\t\t\tinitialize: InitializeListener<Value>\n\t\t}\n\n\texport type FieldEventType = keyof FieldEventListenerMap\n\n\texport type AddEventListener<Value extends FieldValue = FieldValue> = <Type extends FieldEventType>(\n\t\tevent: { type: Type; key?: string },\n\t\tlistener: FieldEventListenerMap<Value>[Type],\n\t) => () => void\n}\n\nexport type { FieldAccessor }\n"],"names":[],"mappings":"AAOO,MAAM,kBAAkB,CAAC,aAC/B,aAAa,QAAQ,OAAO,aAAa,YAAY,YAAY,YAAY,SAAS,WAAW;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PersistResult.cjs","sources":["../../../../../packages/binding-common/src/types/PersistResult.ts"],"sourcesContent":["import { ErrorAccessor } from './ErrorAccessor'\nimport { EntityId } from '../treeParameters'\nimport { DataBindingTransactionResult } from './DataBindingTransactionResult'\n\nexport interface NothingToPersistPersistResult {\n\ttype: 'nothingToPersist'\n}\n\nexport interface JustSuccessPersistResult {\n\ttype: 'justSuccess'\n\tpersistedEntityIds: EntityId[]\n\tafterPersistError?: any\n}\n\nexport interface InvalidInputPersistResult {\n\ttype: 'invalidInput'\n\terrors: ErrorAccessor.Error[]\n\tresponse?: DataBindingTransactionResult\n}\n\nexport interface InvalidResponseResult {\n\ttype: 'invalidResponse'\n\terrors: any // todo\n}\n\nexport type SuccessfulPersistResult = NothingToPersistPersistResult | JustSuccessPersistResult\n\nexport type ErrorPersistResult = InvalidInputPersistResult
|
|
1
|
+
{"version":3,"file":"PersistResult.cjs","sources":["../../../../../packages/binding-common/src/types/PersistResult.ts"],"sourcesContent":["import { ErrorAccessor } from './ErrorAccessor'\nimport { EntityId } from '../treeParameters'\nimport { DataBindingTransactionResult } from './DataBindingTransactionResult'\n\nexport interface NothingToPersistPersistResult {\n\ttype: 'nothingToPersist'\n}\n\nexport interface JustSuccessPersistResult {\n\ttype: 'justSuccess'\n\tpersistedEntityIds: EntityId[]\n\tafterPersistError?: any\n}\n\nexport interface InvalidInputPersistResult {\n\ttype: 'invalidInput'\n\terrors: ErrorAccessor.Error[]\n\tresponse?: DataBindingTransactionResult\n}\n\nexport interface InvalidResponseResult {\n\ttype: 'invalidResponse'\n\terrors: any // todo\n}\n\nexport type SuccessfulPersistResult = NothingToPersistPersistResult | JustSuccessPersistResult\n\nexport type ErrorPersistResult = InvalidInputPersistResult | InvalidResponseResult\n\nexport const isErrorPersistResult = (result: unknown): result is ErrorPersistResult => {\n\treturn typeof result === 'object' && result !== null && 'type' in result && (result.type === 'invalidInput' || result.type === 'invalidResponse')\n}\n"],"names":[],"mappings":";;AA6BO,MAAM,uBAAuB,CAAC,WAAkD;AACtF,SAAO,OAAO,WAAW,YAAY,WAAW,QAAQ,UAAU,WAAW,OAAO,SAAS,kBAAkB,OAAO,SAAS;AAChI;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PersistResult.js","sources":["../../../../../packages/binding-common/src/types/PersistResult.ts"],"sourcesContent":["import { ErrorAccessor } from './ErrorAccessor'\nimport { EntityId } from '../treeParameters'\nimport { DataBindingTransactionResult } from './DataBindingTransactionResult'\n\nexport interface NothingToPersistPersistResult {\n\ttype: 'nothingToPersist'\n}\n\nexport interface JustSuccessPersistResult {\n\ttype: 'justSuccess'\n\tpersistedEntityIds: EntityId[]\n\tafterPersistError?: any\n}\n\nexport interface InvalidInputPersistResult {\n\ttype: 'invalidInput'\n\terrors: ErrorAccessor.Error[]\n\tresponse?: DataBindingTransactionResult\n}\n\nexport interface InvalidResponseResult {\n\ttype: 'invalidResponse'\n\terrors: any // todo\n}\n\nexport type SuccessfulPersistResult = NothingToPersistPersistResult | JustSuccessPersistResult\n\nexport type ErrorPersistResult = InvalidInputPersistResult
|
|
1
|
+
{"version":3,"file":"PersistResult.js","sources":["../../../../../packages/binding-common/src/types/PersistResult.ts"],"sourcesContent":["import { ErrorAccessor } from './ErrorAccessor'\nimport { EntityId } from '../treeParameters'\nimport { DataBindingTransactionResult } from './DataBindingTransactionResult'\n\nexport interface NothingToPersistPersistResult {\n\ttype: 'nothingToPersist'\n}\n\nexport interface JustSuccessPersistResult {\n\ttype: 'justSuccess'\n\tpersistedEntityIds: EntityId[]\n\tafterPersistError?: any\n}\n\nexport interface InvalidInputPersistResult {\n\ttype: 'invalidInput'\n\terrors: ErrorAccessor.Error[]\n\tresponse?: DataBindingTransactionResult\n}\n\nexport interface InvalidResponseResult {\n\ttype: 'invalidResponse'\n\terrors: any // todo\n}\n\nexport type SuccessfulPersistResult = NothingToPersistPersistResult | JustSuccessPersistResult\n\nexport type ErrorPersistResult = InvalidInputPersistResult | InvalidResponseResult\n\nexport const isErrorPersistResult = (result: unknown): result is ErrorPersistResult => {\n\treturn typeof result === 'object' && result !== null && 'type' in result && (result.type === 'invalidInput' || result.type === 'invalidResponse')\n}\n"],"names":[],"mappings":"AA6BO,MAAM,uBAAuB,CAAC,WAAkD;AACtF,SAAO,OAAO,WAAW,YAAY,WAAW,QAAQ,UAAU,WAAW,OAAO,SAAS,kBAAkB,OAAO,SAAS;AAChI;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TreeRootAccessor.cjs","sources":["../../../../../packages/binding-common/src/types/TreeRootAccessor.ts"],"sourcesContent":["import type { BindingOperations } from './BindingOperations'\n\n// This allows us to have several parallel sub-trees without one having to be the main tree\n// and all the other ones subordinate.\nexport class TreeRootAccessor<Node> {\n\t/**\n\t * Whenever an update occurs, a new instance of this class is created.\n\t */\n\tpublic constructor(\n\t\tpublic readonly hasUnpersistedChanges: boolean,\n\t\tpublic readonly isMutating: boolean,\n\t\tpublic readonly bindingOperations: BindingOperations<Node>,\n\t) {}\n}\n"],"names":[],"mappings":";;AAIO,MAAM,iBAAuB;AAAA;AAAA;AAAA;AAAA,EAI5B,YACU,uBACA,YACA,mBACf;AAHe,SAAA,wBAAA;AACA,SAAA,aAAA;AACA,SAAA,oBAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"TreeRootAccessor.cjs","sources":["../../../../../packages/binding-common/src/types/TreeRootAccessor.ts"],"sourcesContent":["import type { BindingOperations } from './BindingOperations'\n\n// This allows us to have several parallel sub-trees without one having to be the main tree\n// and all the other ones subordinate.\nexport class TreeRootAccessor<Node> {\n\t/**\n\t * Whenever an update occurs, a new instance of this class is created.\n\t */\n\tpublic constructor(\n\t\tpublic readonly hasUnpersistedChanges: boolean,\n\t\tpublic readonly isMutating: boolean,\n\t\tpublic readonly bindingOperations: BindingOperations<Node>,\n\t) {}\n}\n"],"names":[],"mappings":";;AAIO,MAAM,iBAAuB;AAAA;AAAA;AAAA;AAAA,EAI5B,YACU,uBACA,YACA,mBACf;AAHe,SAAA,wBAAA;AACA,SAAA,aAAA;AACA,SAAA,oBAAA;AAAA,EACd;AACJ;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TreeRootAccessor.js","sources":["../../../../../packages/binding-common/src/types/TreeRootAccessor.ts"],"sourcesContent":["import type { BindingOperations } from './BindingOperations'\n\n// This allows us to have several parallel sub-trees without one having to be the main tree\n// and all the other ones subordinate.\nexport class TreeRootAccessor<Node> {\n\t/**\n\t * Whenever an update occurs, a new instance of this class is created.\n\t */\n\tpublic constructor(\n\t\tpublic readonly hasUnpersistedChanges: boolean,\n\t\tpublic readonly isMutating: boolean,\n\t\tpublic readonly bindingOperations: BindingOperations<Node>,\n\t) {}\n}\n"],"names":[],"mappings":"AAIO,MAAM,iBAAuB;AAAA;AAAA;AAAA;AAAA,EAI5B,YACU,uBACA,YACA,mBACf;AAHe,SAAA,wBAAA;AACA,SAAA,aAAA;AACA,SAAA,oBAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"TreeRootAccessor.js","sources":["../../../../../packages/binding-common/src/types/TreeRootAccessor.ts"],"sourcesContent":["import type { BindingOperations } from './BindingOperations'\n\n// This allows us to have several parallel sub-trees without one having to be the main tree\n// and all the other ones subordinate.\nexport class TreeRootAccessor<Node> {\n\t/**\n\t * Whenever an update occurs, a new instance of this class is created.\n\t */\n\tpublic constructor(\n\t\tpublic readonly hasUnpersistedChanges: boolean,\n\t\tpublic readonly isMutating: boolean,\n\t\tpublic readonly bindingOperations: BindingOperations<Node>,\n\t) {}\n}\n"],"names":[],"mappings":"AAIO,MAAM,iBAAuB;AAAA;AAAA;AAAA;AAAA,EAI5B,YACU,uBACA,YACA,mBACf;AAHe,SAAA,wBAAA;AACA,SAAA,aAAA;AACA,SAAA,oBAAA;AAAA,EACd;AACJ;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Hashing.cjs","sources":["../../../../../packages/binding-common/src/utils/Hashing.ts"],"sourcesContent":["// TODO update hashing so that for offset, 0 == undefined\nexport class Hashing {\n\tpublic static hashAny(array: any[]): number {\n\t\tconst json = JSON.stringify(array)\n\t\treturn Hashing.hash(json)\n\t}\n\n\t// Taken from Java\n\tpublic static hash(str: string): number {\n\t\tlet hash = 0\n\t\tif (str.length === 0) {\n\t\t\treturn hash\n\t\t}\n\t\tfor (let i = 0; i < str.length; i++) {\n\t\t\thash = (hash << 5) - hash + str.charCodeAt(i)\n\t\t\thash = hash & hash // Convert to 32bit integer\n\t\t}\n\t\treturn Math.abs(hash)\n\t}\n}\n"],"names":[],"mappings":";;AACO,MAAM,QAAQ;AAAA,EACpB,OAAc,QAAQ,OAAsB;
|
|
1
|
+
{"version":3,"file":"Hashing.cjs","sources":["../../../../../packages/binding-common/src/utils/Hashing.ts"],"sourcesContent":["// TODO update hashing so that for offset, 0 == undefined\nexport class Hashing {\n\tpublic static hashAny(array: any[]): number {\n\t\tconst json = JSON.stringify(array)\n\t\treturn Hashing.hash(json)\n\t}\n\n\t// Taken from Java\n\tpublic static hash(str: string): number {\n\t\tlet hash = 0\n\t\tif (str.length === 0) {\n\t\t\treturn hash\n\t\t}\n\t\tfor (let i = 0; i < str.length; i++) {\n\t\t\thash = (hash << 5) - hash + str.charCodeAt(i)\n\t\t\thash = hash & hash // Convert to 32bit integer\n\t\t}\n\t\treturn Math.abs(hash)\n\t}\n}\n"],"names":[],"mappings":";;AACO,MAAM,QAAQ;AAAA,EACpB,OAAc,QAAQ,OAAsB;AAC3C,UAAM,OAAO,KAAK,UAAU,KAAK;AACjC,WAAO,QAAQ,KAAK,IAAI;AAAA,EACzB;AAAA;AAAA,EAGA,OAAc,KAAK,KAAqB;AACvC,QAAI,OAAO;AACX,QAAI,IAAI,WAAW,GAAG;AACrB,aAAO;AAAA,IACR;AACA,aAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACpC,cAAQ,QAAQ,KAAK,OAAO,IAAI,WAAW,CAAC;AAC5C,aAAO,OAAO;AAAA,IACf;AACA,WAAO,KAAK,IAAI,IAAI;AAAA,EACrB;AACD;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Hashing.js","sources":["../../../../../packages/binding-common/src/utils/Hashing.ts"],"sourcesContent":["// TODO update hashing so that for offset, 0 == undefined\nexport class Hashing {\n\tpublic static hashAny(array: any[]): number {\n\t\tconst json = JSON.stringify(array)\n\t\treturn Hashing.hash(json)\n\t}\n\n\t// Taken from Java\n\tpublic static hash(str: string): number {\n\t\tlet hash = 0\n\t\tif (str.length === 0) {\n\t\t\treturn hash\n\t\t}\n\t\tfor (let i = 0; i < str.length; i++) {\n\t\t\thash = (hash << 5) - hash + str.charCodeAt(i)\n\t\t\thash = hash & hash // Convert to 32bit integer\n\t\t}\n\t\treturn Math.abs(hash)\n\t}\n}\n"],"names":[],"mappings":"AACO,MAAM,QAAQ;AAAA,EACpB,OAAc,QAAQ,OAAsB;
|
|
1
|
+
{"version":3,"file":"Hashing.js","sources":["../../../../../packages/binding-common/src/utils/Hashing.ts"],"sourcesContent":["// TODO update hashing so that for offset, 0 == undefined\nexport class Hashing {\n\tpublic static hashAny(array: any[]): number {\n\t\tconst json = JSON.stringify(array)\n\t\treturn Hashing.hash(json)\n\t}\n\n\t// Taken from Java\n\tpublic static hash(str: string): number {\n\t\tlet hash = 0\n\t\tif (str.length === 0) {\n\t\t\treturn hash\n\t\t}\n\t\tfor (let i = 0; i < str.length; i++) {\n\t\t\thash = (hash << 5) - hash + str.charCodeAt(i)\n\t\t\thash = hash & hash // Convert to 32bit integer\n\t\t}\n\t\treturn Math.abs(hash)\n\t}\n}\n"],"names":[],"mappings":"AACO,MAAM,QAAQ;AAAA,EACpB,OAAc,QAAQ,OAAsB;AAC3C,UAAM,OAAO,KAAK,UAAU,KAAK;AACjC,WAAO,QAAQ,KAAK,IAAI;AAAA,EACzB;AAAA;AAAA,EAGA,OAAc,KAAK,KAAqB;AACvC,QAAI,OAAO;AACX,QAAI,IAAI,WAAW,GAAG;AACrB,aAAO;AAAA,IACR;AACA,aAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACpC,cAAQ,QAAQ,KAAK,OAAO,IAAI,WAAW,CAAC;AAC5C,aAAO,OAAO;AAAA,IACf;AACA,WAAO,KAAK,IAAI,IAAI;AAAA,EACrB;AACD;"}
|
|
@@ -61,7 +61,7 @@ class TreeNodeUtils {
|
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
63
|
static recommendAlternative(original, possibleAlternatives) {
|
|
64
|
-
let bestAlternative
|
|
64
|
+
let bestAlternative;
|
|
65
65
|
let bestAlternativeDistance = Number.MAX_SAFE_INTEGER;
|
|
66
66
|
for (const alternative of possibleAlternatives) {
|
|
67
67
|
const distance = levenshtein(original, alternative);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TreeNodeUtils.cjs","sources":["../../../../../packages/binding-common/src/utils/TreeNodeUtils.ts"],"sourcesContent":["import { Environment } from '../environment'\nimport { BaseRelation, Schema, SchemaColumn, SchemaEntity, SchemaField, SchemaRelation } from '../schema'\nimport { BindingError } from '../BindingError'\nimport levenshtein from 'js-levenshtein'\n\nexport class TreeNodeUtils {\n\
|
|
1
|
+
{"version":3,"file":"TreeNodeUtils.cjs","sources":["../../../../../packages/binding-common/src/utils/TreeNodeUtils.ts"],"sourcesContent":["import { Environment } from '../environment'\nimport { BaseRelation, Schema, SchemaColumn, SchemaEntity, SchemaField, SchemaRelation } from '../schema'\nimport { BindingError } from '../BindingError'\nimport levenshtein from 'js-levenshtein'\n\nexport class TreeNodeUtils {\n\tpublic static resolveEntity(schema: Schema, entityName: string, type: 'entity' | 'entity list'): SchemaEntity {\n\t\tconst entity = schema.getEntityOrUndefined(entityName)\n\t\tif (!entity) {\n\t\t\tconst alternative = this.recommendAlternative(entityName, schema.getEntityNames())\n\t\t\tconst didYouMean = alternative ? `Did you mean '${alternative}'?` : ''\n\t\t\tthrow new BindingError(`Invalid ${type} sub tree: Entity '${entityName}' doesn't exist. ${didYouMean}`)\n\t\t}\n\t\treturn entity\n\t}\n\n\tpublic static resolveHasOneRelation(environment: Environment, field: string, isReduced: boolean): SchemaRelation {\n\t\tif (isReduced) {\n\t\t\treturn this.resolveRelation(environment, field, 'reduced has-one relation', ['ManyHasMany', 'OneHasMany'])\n\t\t}\n\t\treturn this.resolveRelation(environment, field, 'a has-one relation', ['ManyHasOne', 'OneHasOne'])\n\t}\n\n\tpublic static resolveHasManyRelation(environment: Environment, field: string): SchemaRelation {\n\t\treturn this.resolveRelation(environment, field, 'a has-many relation', ['ManyHasMany', 'OneHasMany'])\n\t}\n\n\tprivate static resolveRelation(\n\t\tenvironment: Environment,\n\t\tfield: string,\n\t\trelationDescription: string,\n\t\texpectedRelationType: BaseRelation['type'][],\n\t): SchemaRelation {\n\t\treturn this.resolveField(environment, field, (field): field is SchemaRelation => {\n\t\t\treturn field.__typename === '_Relation' && expectedRelationType.includes(field.type)\n\t\t}, relationDescription)\n\t}\n\n\tpublic static resolveColumn(environment: Environment, fieldName: string): SchemaColumn {\n\t\treturn this.resolveField(environment, fieldName, (field): field is SchemaColumn => field.__typename === '_Column', 'an ordinary field')\n\t\t// TODO check that defaultValue matches the type\n\t\t// TODO run custom validators\n\t}\n\n\tprivate static resolveField<T extends SchemaField>(\n\t\tenvironment: Environment,\n\t\tfieldName: string,\n\t\tmatcher: (field: SchemaField) => field is T,\n\t\texpectedDescription: string,\n\t): T {\n\t\tconst treeLocation = environment.getSubTreeNode()\n\t\tconst entity = treeLocation.entity\n\t\tconst field = entity.fields.get(fieldName)\n\t\tif (!field) {\n\t\t\tconst alternative = this.recommendAlternative(\n\t\t\t\tfieldName,\n\t\t\t\tArray.from(entity.fields)\n\t\t\t\t\t.filter(([, field]) => matcher(field))\n\t\t\t\t\t.map(([fieldName]) => fieldName),\n\t\t\t)\n\t\t\tconst didYouMean = alternative ? `Did you mean '${alternative}'?` : ''\n\t\t\tthrow new BindingError(`Field '${fieldName}' doesn't exist on ${this.describeLocation(environment)}. ${didYouMean}`)\n\t\t}\n\t\tif (!matcher(field)) {\n\t\t\tconst actual = field.__typename === '_Column' ? 'an ordinary field' : `a ${field.type} relation`\n\t\t\tthrow new BindingError(\n\t\t\t\t`Invalid field: the name '${field.name}' on ${this.describeLocation(environment)} `\n\t\t\t\t\t+ `refers to ${actual} but is being used as a ${expectedDescription}.`,\n\t\t\t)\n\t\t}\n\t\treturn field\n\t}\n\n\tpublic static describeLocation(environment: Environment): string {\n\t\tconst path = []\n\t\tconst loc = environment.getSubTreeNode()\n\t\tfor (let env = environment;; env = env.getParent()) {\n\t\t\tconst node = env.getSubTreeNode()\n\t\t\tif (node.type === 'subtree-entity' || node.type === 'subtree-entity-list') {\n\t\t\t\treturn `entity '${loc.entity.name}' in path '${[node.entity.name, ...path.reverse()].join('.')}'`\n\t\t\t}\n\t\t\tpath.push(node.field.name)\n\t\t}\n\t}\n\n\tpublic static recommendAlternative(original: string, possibleAlternatives: Iterable<string>): string | undefined {\n\t\tlet bestAlternative: string | undefined\n\t\tlet bestAlternativeDistance = Number.MAX_SAFE_INTEGER\n\n\t\tfor (const alternative of possibleAlternatives) {\n\t\t\tconst distance = levenshtein(original, alternative)\n\n\t\t\tif (distance < bestAlternativeDistance) {\n\t\t\t\tbestAlternative = alternative\n\t\t\t\tbestAlternativeDistance = distance\n\t\t\t}\n\t\t}\n\t\treturn bestAlternative\n\t}\n}\n"],"names":["BindingError","field","fieldName"],"mappings":"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"}
|
|
@@ -59,7 +59,7 @@ class TreeNodeUtils {
|
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
61
|
static recommendAlternative(original, possibleAlternatives) {
|
|
62
|
-
let bestAlternative
|
|
62
|
+
let bestAlternative;
|
|
63
63
|
let bestAlternativeDistance = Number.MAX_SAFE_INTEGER;
|
|
64
64
|
for (const alternative of possibleAlternatives) {
|
|
65
65
|
const distance = levenshtein(original, alternative);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TreeNodeUtils.js","sources":["../../../../../packages/binding-common/src/utils/TreeNodeUtils.ts"],"sourcesContent":["import { Environment } from '../environment'\nimport { BaseRelation, Schema, SchemaColumn, SchemaEntity, SchemaField, SchemaRelation } from '../schema'\nimport { BindingError } from '../BindingError'\nimport levenshtein from 'js-levenshtein'\n\nexport class TreeNodeUtils {\n\
|
|
1
|
+
{"version":3,"file":"TreeNodeUtils.js","sources":["../../../../../packages/binding-common/src/utils/TreeNodeUtils.ts"],"sourcesContent":["import { Environment } from '../environment'\nimport { BaseRelation, Schema, SchemaColumn, SchemaEntity, SchemaField, SchemaRelation } from '../schema'\nimport { BindingError } from '../BindingError'\nimport levenshtein from 'js-levenshtein'\n\nexport class TreeNodeUtils {\n\tpublic static resolveEntity(schema: Schema, entityName: string, type: 'entity' | 'entity list'): SchemaEntity {\n\t\tconst entity = schema.getEntityOrUndefined(entityName)\n\t\tif (!entity) {\n\t\t\tconst alternative = this.recommendAlternative(entityName, schema.getEntityNames())\n\t\t\tconst didYouMean = alternative ? `Did you mean '${alternative}'?` : ''\n\t\t\tthrow new BindingError(`Invalid ${type} sub tree: Entity '${entityName}' doesn't exist. ${didYouMean}`)\n\t\t}\n\t\treturn entity\n\t}\n\n\tpublic static resolveHasOneRelation(environment: Environment, field: string, isReduced: boolean): SchemaRelation {\n\t\tif (isReduced) {\n\t\t\treturn this.resolveRelation(environment, field, 'reduced has-one relation', ['ManyHasMany', 'OneHasMany'])\n\t\t}\n\t\treturn this.resolveRelation(environment, field, 'a has-one relation', ['ManyHasOne', 'OneHasOne'])\n\t}\n\n\tpublic static resolveHasManyRelation(environment: Environment, field: string): SchemaRelation {\n\t\treturn this.resolveRelation(environment, field, 'a has-many relation', ['ManyHasMany', 'OneHasMany'])\n\t}\n\n\tprivate static resolveRelation(\n\t\tenvironment: Environment,\n\t\tfield: string,\n\t\trelationDescription: string,\n\t\texpectedRelationType: BaseRelation['type'][],\n\t): SchemaRelation {\n\t\treturn this.resolveField(environment, field, (field): field is SchemaRelation => {\n\t\t\treturn field.__typename === '_Relation' && expectedRelationType.includes(field.type)\n\t\t}, relationDescription)\n\t}\n\n\tpublic static resolveColumn(environment: Environment, fieldName: string): SchemaColumn {\n\t\treturn this.resolveField(environment, fieldName, (field): field is SchemaColumn => field.__typename === '_Column', 'an ordinary field')\n\t\t// TODO check that defaultValue matches the type\n\t\t// TODO run custom validators\n\t}\n\n\tprivate static resolveField<T extends SchemaField>(\n\t\tenvironment: Environment,\n\t\tfieldName: string,\n\t\tmatcher: (field: SchemaField) => field is T,\n\t\texpectedDescription: string,\n\t): T {\n\t\tconst treeLocation = environment.getSubTreeNode()\n\t\tconst entity = treeLocation.entity\n\t\tconst field = entity.fields.get(fieldName)\n\t\tif (!field) {\n\t\t\tconst alternative = this.recommendAlternative(\n\t\t\t\tfieldName,\n\t\t\t\tArray.from(entity.fields)\n\t\t\t\t\t.filter(([, field]) => matcher(field))\n\t\t\t\t\t.map(([fieldName]) => fieldName),\n\t\t\t)\n\t\t\tconst didYouMean = alternative ? `Did you mean '${alternative}'?` : ''\n\t\t\tthrow new BindingError(`Field '${fieldName}' doesn't exist on ${this.describeLocation(environment)}. ${didYouMean}`)\n\t\t}\n\t\tif (!matcher(field)) {\n\t\t\tconst actual = field.__typename === '_Column' ? 'an ordinary field' : `a ${field.type} relation`\n\t\t\tthrow new BindingError(\n\t\t\t\t`Invalid field: the name '${field.name}' on ${this.describeLocation(environment)} `\n\t\t\t\t\t+ `refers to ${actual} but is being used as a ${expectedDescription}.`,\n\t\t\t)\n\t\t}\n\t\treturn field\n\t}\n\n\tpublic static describeLocation(environment: Environment): string {\n\t\tconst path = []\n\t\tconst loc = environment.getSubTreeNode()\n\t\tfor (let env = environment;; env = env.getParent()) {\n\t\t\tconst node = env.getSubTreeNode()\n\t\t\tif (node.type === 'subtree-entity' || node.type === 'subtree-entity-list') {\n\t\t\t\treturn `entity '${loc.entity.name}' in path '${[node.entity.name, ...path.reverse()].join('.')}'`\n\t\t\t}\n\t\t\tpath.push(node.field.name)\n\t\t}\n\t}\n\n\tpublic static recommendAlternative(original: string, possibleAlternatives: Iterable<string>): string | undefined {\n\t\tlet bestAlternative: string | undefined\n\t\tlet bestAlternativeDistance = Number.MAX_SAFE_INTEGER\n\n\t\tfor (const alternative of possibleAlternatives) {\n\t\t\tconst distance = levenshtein(original, alternative)\n\n\t\t\tif (distance < bestAlternativeDistance) {\n\t\t\t\tbestAlternative = alternative\n\t\t\t\tbestAlternativeDistance = distance\n\t\t\t}\n\t\t}\n\t\treturn bestAlternative\n\t}\n}\n"],"names":["field","fieldName"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assertNever.cjs","sources":["../../../../../packages/binding-common/src/utils/assertNever.ts"],"sourcesContent":["import { BindingError } from '../BindingError'\n\nexport function assertNever(_: never): never {\n\tthrow new BindingError(\n\t\t`FATAL ERROR. This should absolutely never have happened. Please report this bug.`,\n\t)\n}\n"],"names":["BindingError"],"mappings":";;;AAEO,SAAS,YAAY,GAAiB;AAC5C,QAAM,IAAIA,
|
|
1
|
+
{"version":3,"file":"assertNever.cjs","sources":["../../../../../packages/binding-common/src/utils/assertNever.ts"],"sourcesContent":["import { BindingError } from '../BindingError'\n\nexport function assertNever(_: never): never {\n\tthrow new BindingError(\n\t\t`FATAL ERROR. This should absolutely never have happened. Please report this bug.`,\n\t)\n}\n"],"names":["BindingError"],"mappings":";;;AAEO,SAAS,YAAY,GAAiB;AAC5C,QAAM,IAAIA,aAAAA;AAAAA,IACT;AAAA,EAAA;AAEF;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assertNever.js","sources":["../../../../../packages/binding-common/src/utils/assertNever.ts"],"sourcesContent":["import { BindingError } from '../BindingError'\n\nexport function assertNever(_: never): never {\n\tthrow new BindingError(\n\t\t`FATAL ERROR. This should absolutely never have happened. Please report this bug.`,\n\t)\n}\n"],"names":[],"mappings":";AAEO,SAAS,YAAY,GAAiB;AAC5C,QAAM,IAAI;AAAA,IACT;AAAA,
|
|
1
|
+
{"version":3,"file":"assertNever.js","sources":["../../../../../packages/binding-common/src/utils/assertNever.ts"],"sourcesContent":["import { BindingError } from '../BindingError'\n\nexport function assertNever(_: never): never {\n\tthrow new BindingError(\n\t\t`FATAL ERROR. This should absolutely never have happened. Please report this bug.`,\n\t)\n}\n"],"names":[],"mappings":";AAEO,SAAS,YAAY,GAAiB;AAC5C,QAAM,IAAI;AAAA,IACT;AAAA,EAAA;AAEF;"}
|
|
@@ -3,28 +3,32 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
3
3
|
const clientContent = require("@contember/client-content");
|
|
4
4
|
const createQueryBuilder = (schema) => {
|
|
5
5
|
const schemaNames = {
|
|
6
|
-
entities: Object.fromEntries(
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
return [
|
|
17
|
-
it2.name,
|
|
18
|
-
{
|
|
19
|
-
type: it2.type === "ManyHasMany" || it2.type === "OneHasMany" ? "many" : "one",
|
|
20
|
-
entity: it2.targetEntity
|
|
6
|
+
entities: Object.fromEntries(
|
|
7
|
+
schema.getEntityNames().map((it) => {
|
|
8
|
+
const entity = schema.getEntity(it);
|
|
9
|
+
return [it, {
|
|
10
|
+
name: it,
|
|
11
|
+
scalars: Array.from(entity.fields.values()).filter((it2) => it2.__typename === "_Column").map((it2) => it2.name),
|
|
12
|
+
fields: Object.fromEntries(
|
|
13
|
+
Array.from(entity.fields.values()).map((it2) => {
|
|
14
|
+
if (it2.__typename === "_Column") {
|
|
15
|
+
return [it2.name, { type: "column" }];
|
|
21
16
|
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
17
|
+
if (it2.__typename === "_Relation") {
|
|
18
|
+
return [
|
|
19
|
+
it2.name,
|
|
20
|
+
{
|
|
21
|
+
type: it2.type === "ManyHasMany" || it2.type === "OneHasMany" ? "many" : "one",
|
|
22
|
+
entity: it2.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
|
return new clientContent.ContentQueryBuilder(schemaNames);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createQueryBuilder.cjs","sources":["../../../../../packages/binding-common/src/utils/createQueryBuilder.ts"],"sourcesContent":["import { ContentQueryBuilder, SchemaEntityNames, SchemaNames } from '@contember/client-content'\nimport { Schema, SchemaRelation } from '../schema'\n\nexport const createQueryBuilder = (schema: Schema) => {\n\tconst schemaNames: SchemaNames = {\n\t\tentities: Object.fromEntries(
|
|
1
|
+
{"version":3,"file":"createQueryBuilder.cjs","sources":["../../../../../packages/binding-common/src/utils/createQueryBuilder.ts"],"sourcesContent":["import { ContentQueryBuilder, SchemaEntityNames, SchemaNames } from '@contember/client-content'\nimport { Schema, SchemaRelation } from '../schema'\n\nexport const createQueryBuilder = (schema: Schema) => {\n\tconst schemaNames: SchemaNames = {\n\t\tentities: Object.fromEntries(\n\t\t\tschema.getEntityNames().map((it): [string, SchemaEntityNames<string>] => {\n\t\t\t\tconst entity = schema.getEntity(it)\n\t\t\t\treturn [it, {\n\t\t\t\t\tname: it,\n\t\t\t\t\tscalars: Array.from(entity.fields.values()).filter(it => it.__typename === '_Column').map(it => it.name),\n\t\t\t\t\tfields: Object.fromEntries(\n\t\t\t\t\t\tArray.from(entity.fields.values()).map(it => {\n\t\t\t\t\t\t\tif (it.__typename === '_Column') {\n\t\t\t\t\t\t\t\treturn [it.name, { type: 'column' }]\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (it.__typename === '_Relation') {\n\t\t\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\t\t\tit.name,\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\ttype: it.type === 'ManyHasMany' || it.type === 'OneHasMany' ? 'many' : 'one',\n\t\t\t\t\t\t\t\t\t\tentity: (it as SchemaRelation).targetEntity,\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}\n\t\t\t\t\t\t\tthrow new Error()\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\tenums: Object.fromEntries(schema.getEnumNames().map(it => [it, schema.getEnumValues(it)])),\n\t}\n\n\treturn new ContentQueryBuilder(schemaNames)\n}\n"],"names":["it","ContentQueryBuilder"],"mappings":";;;AAGO,MAAM,qBAAqB,CAAC,WAAmB;AACrD,QAAM,cAA2B;AAAA,IAChC,UAAU,OAAO;AAAA,MAChB,OAAO,eAAA,EAAiB,IAAI,CAAC,OAA4C;AACxE,cAAM,SAAS,OAAO,UAAU,EAAE;AAClC,eAAO,CAAC,IAAI;AAAA,UACX,MAAM;AAAA,UACN,SAAS,MAAM,KAAK,OAAO,OAAO,OAAA,CAAQ,EAAE,OAAO,CAAAA,QAAMA,IAAG,eAAe,SAAS,EAAE,IAAI,CAAAA,QAAMA,IAAG,IAAI;AAAA,UACvG,QAAQ,OAAO;AAAA,YACd,MAAM,KAAK,OAAO,OAAO,QAAQ,EAAE,IAAI,CAAAA,QAAM;AAC5C,kBAAIA,IAAG,eAAe,WAAW;AAChC,uBAAO,CAACA,IAAG,MAAM,EAAE,MAAM,UAAU;AAAA,cACpC;AACA,kBAAIA,IAAG,eAAe,aAAa;AAClC,uBAAO;AAAA,kBACNA,IAAG;AAAA,kBACH;AAAA,oBACC,MAAMA,IAAG,SAAS,iBAAiBA,IAAG,SAAS,eAAe,SAAS;AAAA,oBACvE,QAASA,IAAsB;AAAA,kBAAA;AAAA,gBAChC;AAAA,cAEF;AACA,oBAAM,IAAI,MAAA;AAAA,YACX,CAAC;AAAA,UAAA;AAAA,QACF,CACA;AAAA,MACF,CAAC;AAAA,IAAA;AAAA,IAEF,OAAO,OAAO,YAAY,OAAO,eAAe,IAAI,CAAA,OAAM,CAAC,IAAI,OAAO,cAAc,EAAE,CAAC,CAAC,CAAC;AAAA,EAAA;AAG1F,SAAO,IAAIC,cAAAA,oBAAoB,WAAW;AAC3C;;"}
|