@contember/binding-common 2.0.0-beta.4 → 2.0.0-beta.6
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/src/environment/Environment.cjs +0 -18
- package/dist/development/src/environment/Environment.cjs.map +1 -1
- package/dist/development/src/environment/Environment.js +0 -18
- package/dist/development/src/environment/Environment.js.map +1 -1
- package/dist/development/src/markers/MarkerMerger.cjs +2 -1
- package/dist/development/src/markers/MarkerMerger.cjs.map +1 -1
- package/dist/development/src/markers/MarkerMerger.js +2 -1
- package/dist/development/src/markers/MarkerMerger.js.map +1 -1
- package/dist/development/src/queryLanguage/QueryLanguage.cjs +4 -0
- package/dist/development/src/queryLanguage/QueryLanguage.cjs.map +1 -1
- package/dist/development/src/queryLanguage/QueryLanguage.js +4 -0
- package/dist/development/src/queryLanguage/QueryLanguage.js.map +1 -1
- package/dist/development/src/treeParameters/TreeParameterMerger.cjs +6 -0
- package/dist/development/src/treeParameters/TreeParameterMerger.cjs.map +1 -1
- package/dist/development/src/treeParameters/TreeParameterMerger.js +6 -0
- package/dist/development/src/treeParameters/TreeParameterMerger.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/production/src/environment/Environment.cjs +0 -18
- package/dist/production/src/environment/Environment.cjs.map +1 -1
- package/dist/production/src/environment/Environment.js +0 -18
- package/dist/production/src/environment/Environment.js.map +1 -1
- package/dist/production/src/markers/MarkerMerger.cjs +2 -1
- package/dist/production/src/markers/MarkerMerger.cjs.map +1 -1
- package/dist/production/src/markers/MarkerMerger.js +2 -1
- package/dist/production/src/markers/MarkerMerger.js.map +1 -1
- package/dist/production/src/queryLanguage/QueryLanguage.cjs +4 -0
- package/dist/production/src/queryLanguage/QueryLanguage.cjs.map +1 -1
- package/dist/production/src/queryLanguage/QueryLanguage.js +4 -0
- package/dist/production/src/queryLanguage/QueryLanguage.js.map +1 -1
- package/dist/production/src/treeParameters/TreeParameterMerger.cjs +6 -0
- package/dist/production/src/treeParameters/TreeParameterMerger.cjs.map +1 -1
- package/dist/production/src/treeParameters/TreeParameterMerger.js +6 -0
- package/dist/production/src/treeParameters/TreeParameterMerger.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/types/environment/Environment.d.ts +1 -13
- package/dist/types/environment/Environment.d.ts.map +1 -1
- package/dist/types/markers/MarkerMerger.d.ts.map +1 -1
- package/dist/types/queryLanguage/QueryLanguage.d.ts.map +1 -1
- package/dist/types/treeParameters/Normalized.d.ts +4 -0
- package/dist/types/treeParameters/Normalized.d.ts.map +1 -1
- package/dist/types/treeParameters/Sugared.d.ts +4 -0
- package/dist/types/treeParameters/Sugared.d.ts.map +1 -1
- package/dist/types/treeParameters/TreeParameterMerger.d.ts +1 -0
- package/dist/types/treeParameters/TreeParameterMerger.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/dist/types/types/EntityAccessor.d.ts +4 -0
- package/dist/types/types/EntityAccessor.d.ts.map +1 -1
- package/dist/types/types/QueryRequestResponse.d.ts +6 -0
- package/dist/types/types/QueryRequestResponse.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/environment/Environment.ts +1 -29
- package/src/markers/MarkerMerger.ts +1 -0
- package/src/queryLanguage/QueryLanguage.ts +4 -0
- package/src/treeParameters/Normalized.ts +5 -0
- package/src/treeParameters/Sugared.ts +4 -0
- package/src/treeParameters/TreeParameterMerger.ts +12 -0
- package/src/types/EntityAccessor.ts +2 -0
- package/src/types/QueryRequestResponse.ts +6 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryLanguage.cjs","sources":["../../../../../packages/binding-common/src/queryLanguage/QueryLanguage.ts"],"sourcesContent":["import type { Environment } from '../environment'\nimport {\n\tAlias,\n\tEntityCreationParametersDefaults,\n\tEntityEventListenerStore,\n\tEntityListEventListenerStore,\n\tEntityListPreferencesDefaults,\n\tEntityName,\n\tEventListenersStore,\n\tFieldEventListenerStore,\n\tFieldName,\n\tFilter,\n\tHasManyRelation,\n\tHasOneRelation,\n\tLeafFieldDefaults,\n\tParentEntityParameters,\n\tQualifiedEntityList,\n\tQualifiedEntityParametersDefaults,\n\tQualifiedFieldList,\n\tQualifiedSingleEntity,\n\tRelationDefaults,\n\tRelativeEntityList,\n\tRelativeSingleEntity,\n\tRelativeSingleField,\n\tSugarableHasManyRelation,\n\tSugarableHasOneRelation,\n\tSugaredFilter,\n\tSugaredParentEntityParameters,\n\tSugaredQualifiedEntityList,\n\tSugaredQualifiedFieldList,\n\tSugaredQualifiedSingleEntity,\n\tSugaredRelativeEntityList,\n\tSugaredRelativeSingleEntity,\n\tSugaredRelativeSingleField,\n\tSugaredSetOnCreate,\n\tSugaredUnconstrainedQualifiedEntityList,\n\tSugaredUnconstrainedQualifiedSingleEntity,\n\tUnconstrainedQualifiedEntityList,\n\tUnconstrainedQualifiedSingleEntity,\n\tUniqueWhere,\n\tUnsugarableEntityListEventListeners,\n\tUnsugarableFieldEventListeners,\n\tUnsugarableSingleEntityEventListeners,\n} from '../treeParameters'\nimport { Parser } from './Parser'\nimport { ParsedHasManyRelation, ParsedHasOneRelation } from './ParserResults'\nimport { TokenRegExps } from './tokenList'\nimport { TreeParameterMerger } from '../treeParameters/TreeParameterMerger'\nimport { VariableInputTransformer } from '../environment/VariableInputTransformer'\n\nconst emptyObject = Object.freeze({})\n\nexport class QueryLanguage {\n\n\tprivate static preparePrimitiveEntryPoint<Entry extends Parser.EntryPoint>(entryPoint: Entry) {\n\t\treturn (input: string, environment: Environment): Parser.ParserResult[Entry] =>\n\t\t\tParser.parseQueryLanguageExpression(input, entryPoint, environment)\n\t}\n\n\tprivate static preparePrimitiveEntryPointWithFallback<Entry extends Parser.EntryPoint>(entryPoint: Entry) {\n\t\treturn (input: string | Parser.ParserResult[Entry], environment: Environment): Parser.ParserResult[Entry] => {\n\t\t\tif (typeof input === 'string') {\n\t\t\t\treturn Parser.parseQueryLanguageExpression(input, entryPoint, environment)\n\t\t\t}\n\t\t\treturn input\n\t\t}\n\t}\n\n\tprivate static parseUnconstrainedQualifiedEntityList = QueryLanguage.preparePrimitiveEntryPoint('unconstrainedQualifiedEntityList')\n\tprivate static parseUnconstrainedQualifiedSingleEntity = QueryLanguage.preparePrimitiveEntryPoint('unconstrainedQualifiedEntityList')\n\tprivate static parseQualifiedEntityList = QueryLanguage.preparePrimitiveEntryPoint('qualifiedEntityList')\n\tprivate static parseQualifiedFieldList = QueryLanguage.preparePrimitiveEntryPoint('qualifiedFieldList')\n\tprivate static parseQualifiedSingleEntity = QueryLanguage.preparePrimitiveEntryPoint('qualifiedSingleEntity')\n\tprivate static parseRelativeEntityList = QueryLanguage.preparePrimitiveEntryPoint('relativeEntityList')\n\tprivate static parseRelativeSingleEntity = QueryLanguage.preparePrimitiveEntryPoint('relativeSingleEntity')\n\tprivate static parseRelativeSingleField = QueryLanguage.preparePrimitiveEntryPoint('relativeSingleField')\n\n\tpublic static desugarUniqueWhere = QueryLanguage.preparePrimitiveEntryPointWithFallback('uniqueWhere')\n\tpublic static desugarFilter = QueryLanguage.preparePrimitiveEntryPointWithFallback('filter')\n\tpublic static desugarOrderBy = QueryLanguage.preparePrimitiveEntryPointWithFallback('orderBy')\n\tpublic static desugarTaggedMap = QueryLanguage.preparePrimitiveEntryPointWithFallback('taggedMap')\n\n\n\tpublic static desugarSetOnCreate(setOnCreate: SugaredSetOnCreate, environment: Environment): UniqueWhere {\n\t\tif (Array.isArray(setOnCreate)) {\n\t\t\tconst whereList = setOnCreate.map(connection => this.desugarUniqueWhere(connection, environment))\n\t\t\treturn whereList.reduce(\n\t\t\t\t(accumulator, uniqueWhere) => TreeParameterMerger.mergeSetOnCreate(accumulator, uniqueWhere)!,\n\t\t\t)\n\t\t}\n\t\tif (typeof setOnCreate === 'string') {\n\t\t\treturn this.desugarUniqueWhere(setOnCreate, environment)\n\t\t}\n\t\treturn setOnCreate\n\t}\n\n\tpublic static desugarEventListener<F extends Function>(listener: F | Set<F>): Set<F>\n\tpublic static desugarEventListener<F extends Function>(listener: F | Set<F> | undefined): Set<F> | undefined\n\tpublic static desugarEventListener<F extends Function>(listener: F | Set<F> | undefined): Set<F> | undefined {\n\t\tif (typeof listener === 'function') {\n\t\t\treturn new Set([listener])\n\t\t}\n\t\treturn listener\n\t}\n\n\tprivate static desugarSingleEntityEventListeners(\n\t\tunsugarable: UnsugarableSingleEntityEventListeners,\n\t): EntityEventListenerStore | undefined {\n\t\tif (\n\t\t\tunsugarable.onBeforePersist === undefined &&\n\t\t\tunsugarable.onBeforeUpdate === undefined &&\n\t\t\tunsugarable.onInitialize === undefined &&\n\t\t\tunsugarable.onPersistError === undefined &&\n\t\t\tunsugarable.onPersistSuccess === undefined &&\n\t\t\tunsugarable.onUpdate === undefined\n\t\t) {\n\t\t\treturn undefined\n\t\t}\n\n\t\tconst store: EntityEventListenerStore = new EventListenersStore()\n\n\t\tif (unsugarable.onConnectionUpdate) {\n\t\t\tfor (const fieldName in unsugarable.onConnectionUpdate) {\n\t\t\t\tconst listener = this.desugarEventListener(unsugarable.onConnectionUpdate[fieldName])\n\t\t\t\tstore.set({ type: 'connectionUpdate', key: fieldName }, listener)\n\t\t\t}\n\t\t}\n\n\t\tconst beforePersist = this.desugarEventListener(unsugarable.onBeforePersist)\n\t\tconst beforeUpdate = this.desugarEventListener(unsugarable.onBeforeUpdate)\n\t\tconst initialize = this.desugarEventListener(unsugarable.onInitialize)\n\t\tconst persistError = this.desugarEventListener(unsugarable.onPersistError)\n\t\tconst persistSuccess = this.desugarEventListener(unsugarable.onPersistSuccess)\n\t\tconst update = this.desugarEventListener(unsugarable.onUpdate)\n\n\t\tif (beforePersist) {\n\t\t\tstore.set({ type: 'beforePersist' }, beforePersist)\n\t\t}\n\t\tif (beforeUpdate) {\n\t\t\tstore.set({ type: 'beforeUpdate' }, beforeUpdate)\n\t\t}\n\t\tif (initialize) {\n\t\t\tstore.set({ type: 'initialize' }, initialize)\n\t\t}\n\t\tif (persistError) {\n\t\t\tstore.set({ type: 'persistError' }, persistError)\n\t\t}\n\t\tif (persistSuccess) {\n\t\t\tstore.set({ type: 'persistSuccess' }, persistSuccess)\n\t\t}\n\t\tif (update) {\n\t\t\tstore.set({ type: 'update' }, update)\n\t\t}\n\n\t\treturn store\n\t}\n\n\tprivate static desugarEntityListEventListeners(unsugarable: UnsugarableEntityListEventListeners):\n\t\t| {\n\t\t\teventListeners: EntityListEventListenerStore | undefined\n\t\t\tchildEventListeners: EntityEventListenerStore | undefined\n\t\t }\n\t\t| undefined {\n\t\tif (\n\t\t\tunsugarable.onBeforePersist === undefined &&\n\t\t\tunsugarable.onBeforeUpdate === undefined &&\n\t\t\tunsugarable.onChildBeforeUpdate === undefined &&\n\t\t\tunsugarable.onChildInitialize === undefined &&\n\t\t\tunsugarable.onChildUpdate === undefined &&\n\t\t\tunsugarable.onInitialize === undefined &&\n\t\t\tunsugarable.onPersistError === undefined &&\n\t\t\tunsugarable.onPersistSuccess === undefined &&\n\t\t\tunsugarable.onUpdate === undefined\n\t\t) {\n\t\t\treturn undefined\n\t\t}\n\n\t\tconst eventListeners: EntityListEventListenerStore = new EventListenersStore()\n\n\t\tconst beforePersist = this.desugarEventListener(unsugarable.onBeforePersist)\n\t\tconst beforeUpdate = this.desugarEventListener(unsugarable.onBeforeUpdate)\n\t\tconst initialize = this.desugarEventListener(unsugarable.onInitialize)\n\t\tconst persistError = this.desugarEventListener(unsugarable.onPersistError)\n\t\tconst persistSuccess = this.desugarEventListener(unsugarable.onPersistSuccess)\n\t\tconst update = this.desugarEventListener(unsugarable.onUpdate)\n\n\t\tif (beforePersist) {\n\t\t\teventListeners.set({ type: 'beforePersist' }, beforePersist)\n\t\t}\n\t\tif (beforeUpdate) {\n\t\t\teventListeners.set({ type: 'beforeUpdate' }, beforeUpdate)\n\t\t}\n\t\tif (initialize) {\n\t\t\teventListeners.set({ type: 'initialize' }, initialize)\n\t\t}\n\t\tif (persistError) {\n\t\t\teventListeners.set({ type: 'persistError' }, persistError)\n\t\t}\n\t\tif (persistSuccess) {\n\t\t\teventListeners.set({ type: 'persistSuccess' }, persistSuccess)\n\t\t}\n\t\tif (update) {\n\t\t\teventListeners.set({ type: 'update' }, update)\n\t\t}\n\n\t\tconst childEventListeners: EntityEventListenerStore = new EventListenersStore()\n\n\t\tconst childBeforeUpdate = this.desugarEventListener(unsugarable.onChildBeforeUpdate)\n\t\tconst childInitialize = this.desugarEventListener(unsugarable.onChildInitialize)\n\t\tconst childUpdate = this.desugarEventListener(unsugarable.onChildUpdate)\n\n\t\tif (childBeforeUpdate) {\n\t\t\tchildEventListeners.set({ type: 'beforeUpdate' }, childBeforeUpdate)\n\t\t}\n\t\tif (childInitialize) {\n\t\t\tchildEventListeners.set({ type: 'initialize' }, childInitialize)\n\t\t}\n\t\tif (childUpdate) {\n\t\t\tchildEventListeners.set({ type: 'update' }, childUpdate)\n\t\t}\n\n\t\treturn {\n\t\t\teventListeners,\n\t\t\tchildEventListeners,\n\t\t}\n\t}\n\n\tprivate static desugarFieldEventListeners(\n\t\tunsugarable: UnsugarableFieldEventListeners,\n\t): FieldEventListenerStore | undefined {\n\t\tif (unsugarable.onBeforeUpdate === undefined && unsugarable.onUpdate === undefined) {\n\t\t\treturn undefined\n\t\t}\n\n\t\tconst store: FieldEventListenerStore = new EventListenersStore()\n\n\t\tconst beforeUpdate = this.desugarEventListener(unsugarable.onBeforeUpdate)\n\t\tconst update = this.desugarEventListener(unsugarable.onUpdate)\n\n\t\tif (beforeUpdate) {\n\t\t\tstore.set({ type: 'beforeUpdate' }, beforeUpdate)\n\t\t}\n\t\tif (update) {\n\t\t\tstore.set({ type: 'update' }, update)\n\t\t}\n\n\t\treturn store\n\t}\n\n\tprivate static desugarSubTreeAlias(alias: Alias | Set<Alias> | undefined): Set<Alias> | undefined {\n\t\tif (alias === undefined) {\n\t\t\treturn undefined\n\t\t}\n\t\tif (alias instanceof Set) {\n\t\t\treturn alias\n\t\t}\n\t\treturn new Set<Alias>().add(alias)\n\t}\n\n\tprivate static desugarHasOneRelation(\n\t\tsugarable: SugarableHasOneRelation,\n\t\tunsugarable: Omit<SugaredRelativeSingleEntity, 'field'>,\n\t\tenvironment: Environment,\n\t): HasOneRelation {\n\t\treturn {\n\t\t\tfield: sugarable.field,\n\t\t\tfilter: sugarable.filter ? this.desugarFilter(sugarable.filter, environment) : undefined,\n\t\t\texpectedMutation: unsugarable.expectedMutation ?? RelationDefaults.expectedMutation,\n\t\t\treducedBy: sugarable.reducedBy ? this.desugarUniqueWhere(sugarable.reducedBy, environment) : undefined,\n\t\t\tsetOnCreate: unsugarable.setOnCreate ? this.desugarSetOnCreate(unsugarable.setOnCreate, environment) : undefined,\n\t\t\tisNonbearing: unsugarable.isNonbearing ?? EntityCreationParametersDefaults.isNonbearing,\n\t\t\t// forceCreation: unsugarable.forceCreation ?? EntityCreationParametersDefaults.forceCreation,\n\t\t\teventListeners: this.desugarSingleEntityEventListeners(unsugarable),\n\t\t}\n\t}\n\n\tprivate static augmentDesugaredHasOneRelationPath(\n\t\tpath: (ParsedHasOneRelation | string)[],\n\t\tunsugarable: Omit<SugaredRelativeSingleEntity, 'field'>,\n\t\tenvironment: Environment,\n\t): HasOneRelation[] {\n\t\treturn path.map((desugaredHasOneRelation, i) =>\n\t\t\t// Unsugarable applies to the last\n\t\t\tthis.desugarHasOneRelation(\n\t\t\t\ttypeof desugaredHasOneRelation === 'string' ? { field: desugaredHasOneRelation } : desugaredHasOneRelation,\n\t\t\t\ti === path.length - 1 ? unsugarable : {},\n\t\t\t\tenvironment,\n\t\t\t),\n\t\t)\n\t}\n\n\tprivate static augmentDesugaredHasManyRelation(\n\t\trelation: ParsedHasManyRelation,\n\t\tunsugarable: Omit<SugaredRelativeEntityList, 'field'>,\n\t\tenvironment: Environment,\n\t): HasManyRelation {\n\t\tconst eventListeners = this.desugarEntityListEventListeners(unsugarable)\n\t\treturn {\n\t\t\tfield: relation.field,\n\t\t\tfilter: relation.filter,\n\t\t\texpectedMutation: unsugarable.expectedMutation ?? RelationDefaults.expectedMutation,\n\t\t\tisNonbearing: unsugarable.isNonbearing ?? EntityCreationParametersDefaults.isNonbearing,\n\t\t\t// forceCreation: unsugarable.forceCreation ?? EntityCreationParametersDefaults.forceCreation,\n\t\t\tinitialEntityCount: unsugarable.initialEntityCount ?? EntityListPreferencesDefaults.initialEntityCount,\n\t\t\tsetOnCreate: unsugarable.setOnCreate ? this.desugarSetOnCreate(unsugarable.setOnCreate, environment) : undefined,\n\t\t\torderBy: unsugarable.orderBy ? this.desugarOrderBy(unsugarable.orderBy, environment) : undefined,\n\t\t\toffset: unsugarable.offset,\n\t\t\tlimit: unsugarable.limit,\n\t\t\tchildEventListeners: eventListeners?.childEventListeners,\n\t\t\teventListeners: eventListeners?.eventListeners,\n\t\t}\n\t}\n\n\tprivate static desugarHasOneRelationPath(\n\t\tinput: SugarableHasOneRelation[] | SugarableHasOneRelation | undefined,\n\t\tlastRelation: Omit<SugaredRelativeSingleEntity, 'field'>,\n\t\tenvironment: Environment,\n\t): HasOneRelation[] {\n\t\tif (input === undefined) {\n\t\t\tinput = []\n\t\t} else if (!Array.isArray(input)) {\n\t\t\tinput = [input]\n\t\t}\n\n\t\tconst relationPath: HasOneRelation[] = []\n\n\t\tconst cappedLength = input.length - 1\n\t\tlet i = 0\n\t\tfor (; i < cappedLength; i++) {\n\t\t\t// Deliberately leaving out the last element\n\t\t\tconst pathNode = input[i]\n\n\t\t\trelationPath.push(this.desugarHasOneRelation(pathNode, {}, environment))\n\t\t}\n\t\tif (i in input) {\n\t\t\trelationPath.push(this.desugarHasOneRelation(input[i], lastRelation, environment))\n\t\t}\n\n\t\treturn relationPath\n\t}\n\n\tprivate static desugarHasManyRelation(\n\t\tsugarablePart: SugarableHasManyRelation,\n\t\tunsugarablePart: Omit<SugaredRelativeEntityList, 'field'>,\n\t\tenvironment: Environment,\n\t): HasManyRelation {\n\t\tconst eventListeners = this.desugarEntityListEventListeners(unsugarablePart)\n\t\treturn {\n\n\t\t\tfilter: sugarablePart.filter ? this.desugarFilter(sugarablePart.filter, environment) : undefined,\n\t\t\tlimit: unsugarablePart.limit,\n\t\t\toffset: unsugarablePart.offset,\n\t\t\torderBy: unsugarablePart.orderBy ? this.desugarOrderBy(unsugarablePart.orderBy, environment) : undefined,\n\t\t\tinitialEntityCount: unsugarablePart.initialEntityCount ?? EntityListPreferencesDefaults.initialEntityCount,\n\t\t\texpectedMutation: unsugarablePart.expectedMutation ?? RelationDefaults.expectedMutation,\n\t\t\tsetOnCreate: unsugarablePart.setOnCreate\n\t\t\t\t? this.desugarSetOnCreate(unsugarablePart.setOnCreate, environment)\n\t\t\t\t: undefined,\n\t\t\tfield: sugarablePart.field,\n\t\t\tisNonbearing: unsugarablePart.isNonbearing ?? EntityCreationParametersDefaults.isNonbearing,\n\t\t\t// forceCreation: unsugarablePart.forceCreation ?? EntityCreationParametersDefaults.forceCreation,\n\t\t\tchildEventListeners: eventListeners?.childEventListeners,\n\t\t\teventListeners: eventListeners?.eventListeners,\n\t\t}\n\t}\n\n\tpublic static desugarUnconstrainedQualifiedEntityList(\n\t\t{ entities, ...unsugarableEntityList }: SugaredUnconstrainedQualifiedEntityList,\n\t\tenvironment: Environment,\n\t): UnconstrainedQualifiedEntityList {\n\t\tlet hasOneRelationPath: HasOneRelation[]\n\t\tlet entityName: EntityName\n\n\t\tif (typeof entities === 'string') {\n\t\t\tconst parsed = this.parseUnconstrainedQualifiedEntityList(entities, environment)\n\t\t\tentityName = parsed.entityName\n\t\t\thasOneRelationPath = this.augmentDesugaredHasOneRelationPath(\n\t\t\t\tparsed.hasOneRelationPath,\n\t\t\t\temptyObject,\n\t\t\t\tenvironment,\n\t\t\t)\n\t\t} else {\n\t\t\tentityName = entities.entityName\n\t\t\thasOneRelationPath = this.desugarHasOneRelationPath(entities.hasOneRelationPath, emptyObject, environment)\n\t\t}\n\n\t\tconst eventListeners = this.desugarEntityListEventListeners(unsugarableEntityList)\n\n\t\treturn {\n\t\t\tisCreating: true,\n\t\t\tisUnpersisted: unsugarableEntityList.isUnpersisted ?? false,\n\t\t\tisNonbearing: unsugarableEntityList.isNonbearing ?? EntityCreationParametersDefaults.isNonbearing,\n\t\t\t// forceCreation: unsugarableEntityList.forceCreation ?? EntityCreationParametersDefaults.forceCreation,\n\t\t\tsetOnCreate: unsugarableEntityList.setOnCreate\n\t\t\t\t? this.desugarSetOnCreate(unsugarableEntityList.setOnCreate, environment)\n\t\t\t\t: undefined,\n\t\t\texpectedMutation: unsugarableEntityList.expectedMutation ?? QualifiedEntityParametersDefaults.expectedMutation,\n\t\t\tchildEventListeners: eventListeners?.childEventListeners,\n\t\t\teventListeners: eventListeners?.eventListeners,\n\t\t\tinitialEntityCount: unsugarableEntityList.initialEntityCount ?? EntityListPreferencesDefaults.initialEntityCount,\n\t\t\talias: this.desugarSubTreeAlias(unsugarableEntityList.alias),\n\t\t\tentityName,\n\t\t\thasOneRelationPath,\n\t\t}\n\t}\n\n\tpublic static desugarUnconstrainedQualifiedSingleEntity(\n\t\t{ entity, ...unsugarableSingleEntity }: SugaredUnconstrainedQualifiedSingleEntity,\n\t\tenvironment: Environment,\n\t): UnconstrainedQualifiedSingleEntity {\n\t\tlet hasOneRelationPath: HasOneRelation[]\n\t\tlet entityName: EntityName\n\n\t\tif (typeof entity === 'string') {\n\t\t\tconst parsed = this.parseUnconstrainedQualifiedSingleEntity(entity, environment)\n\t\t\tentityName = parsed.entityName\n\t\t\thasOneRelationPath = this.augmentDesugaredHasOneRelationPath(\n\t\t\t\tparsed.hasOneRelationPath,\n\t\t\t\tunsugarableSingleEntity,\n\t\t\t\tenvironment,\n\t\t\t)\n\t\t} else {\n\t\t\tentityName = entity.entityName\n\t\t\thasOneRelationPath = this.desugarHasOneRelationPath(\n\t\t\t\tentity.hasOneRelationPath,\n\t\t\t\tunsugarableSingleEntity,\n\t\t\t\tenvironment,\n\t\t\t)\n\t\t}\n\n\t\treturn {\n\t\t\tisCreating: true,\n\t\t\tisUnpersisted: unsugarableSingleEntity.isUnpersisted ?? false,\n\t\t\tisNonbearing: unsugarableSingleEntity.isNonbearing ?? EntityCreationParametersDefaults.isNonbearing,\n\t\t\t// forceCreation: unsugarableSingleEntity.forceCreation ?? EntityCreationParametersDefaults.forceCreation,\n\t\t\tsetOnCreate: unsugarableSingleEntity.setOnCreate\n\t\t\t\t? this.desugarSetOnCreate(unsugarableSingleEntity.setOnCreate, environment)\n\t\t\t\t: undefined,\n\t\t\texpectedMutation: unsugarableSingleEntity.expectedMutation ?? QualifiedEntityParametersDefaults.expectedMutation,\n\t\t\teventListeners: this.desugarSingleEntityEventListeners(unsugarableSingleEntity),\n\t\t\talias: this.desugarSubTreeAlias(unsugarableSingleEntity.alias),\n\t\t\tentityName,\n\t\t\thasOneRelationPath,\n\t\t}\n\t}\n\n\tpublic static desugarQualifiedEntityList(\n\t\t{ entities, ...unsugarableEntityList }: SugaredQualifiedEntityList,\n\t\tenvironment: Environment,\n\t): QualifiedEntityList {\n\t\tlet entityName: EntityName\n\t\tlet hasOneRelationPath: HasOneRelation[]\n\n\t\tlet filter: SugaredFilter | undefined\n\n\t\tif (typeof entities === 'string') {\n\t\t\tconst parsed = this.parseQualifiedEntityList(entities, environment)\n\n\t\t\tentityName = parsed.entityName\n\t\t\tfilter = parsed.filter\n\t\t\thasOneRelationPath = this.augmentDesugaredHasOneRelationPath(\n\t\t\t\tparsed.hasOneRelationPath,\n\t\t\t\temptyObject,\n\t\t\t\tenvironment,\n\t\t\t)\n\t\t} else {\n\t\t\tentityName = entities.entityName\n\t\t\tfilter = entities.filter\n\t\t\thasOneRelationPath = this.desugarHasOneRelationPath(entities.hasOneRelationPath, emptyObject, environment)\n\t\t}\n\n\t\tconst eventListeners = this.desugarEntityListEventListeners(unsugarableEntityList)\n\n\t\treturn {\n\t\t\tentityName,\n\t\t\thasOneRelationPath,\n\t\t\tfilter: filter ? this.desugarFilter(filter, environment) : undefined,\n\t\t\tlimit: unsugarableEntityList.limit,\n\t\t\toffset: unsugarableEntityList.offset,\n\t\t\torderBy: unsugarableEntityList.orderBy ? this.desugarOrderBy(unsugarableEntityList.orderBy, environment) : undefined,\n\t\t\tinitialEntityCount: unsugarableEntityList.initialEntityCount ?? EntityListPreferencesDefaults.initialEntityCount,\n\t\t\talias: this.desugarSubTreeAlias(unsugarableEntityList.alias),\n\t\t\tisCreating: false,\n\t\t\tisNonbearing: unsugarableEntityList.isNonbearing ?? EntityCreationParametersDefaults.isNonbearing,\n\t\t\t// forceCreation: unsugarableEntityList.forceCreation ?? EntityCreationParametersDefaults.forceCreation,\n\t\t\tsetOnCreate: unsugarableEntityList.setOnCreate\n\t\t\t\t? this.desugarSetOnCreate(unsugarableEntityList.setOnCreate, environment)\n\t\t\t\t: undefined,\n\t\t\texpectedMutation: unsugarableEntityList.expectedMutation ?? QualifiedEntityParametersDefaults.expectedMutation,\n\t\t\tchildEventListeners: eventListeners?.childEventListeners,\n\t\t\teventListeners: eventListeners?.eventListeners,\n\t\t}\n\t}\n\n\tpublic static desugarQualifiedFieldList(\n\t\t{ fields, ...unsugarableFieldList }: SugaredQualifiedFieldList,\n\t\tenvironment: Environment,\n\t): QualifiedFieldList {\n\t\tlet field: FieldName\n\t\tlet entityName: EntityName\n\t\tlet filter: SugaredFilter | undefined\n\t\tlet hasOneRelationPath: HasOneRelation[]\n\n\t\tif (typeof fields === 'string') {\n\t\t\tconst parsed = this.parseQualifiedFieldList(fields, environment)\n\n\t\t\tfield = parsed.field\n\t\t\tentityName = parsed.entityName\n\t\t\tfilter = parsed.filter\n\t\t\thasOneRelationPath = this.augmentDesugaredHasOneRelationPath(\n\t\t\t\tparsed.hasOneRelationPath,\n\t\t\t\temptyObject,\n\t\t\t\tenvironment,\n\t\t\t)\n\t\t} else {\n\t\t\tfield = fields.field\n\t\t\tentityName = fields.entityName\n\t\t\tfilter = fields.filter\n\t\t\thasOneRelationPath = this.desugarHasOneRelationPath(fields.hasOneRelationPath, emptyObject, environment)\n\t\t}\n\n\t\treturn {\n\t\t\tfield,\n\t\t\tentityName,\n\t\t\thasOneRelationPath,\n\t\t\talias: this.desugarSubTreeAlias(unsugarableFieldList.alias),\n\t\t\tisNonbearing: unsugarableFieldList.isNonbearing ?? EntityCreationParametersDefaults.isNonbearing,\n\t\t\t// forceCreation: unsugarableFieldList.forceCreation ?? EntityCreationParametersDefaults.forceCreation,\n\t\t\tdefaultValue:\n\t\t\t\tunsugarableFieldList.defaultValue !== undefined\n\t\t\t\t\t? VariableInputTransformer.transformValue(unsugarableFieldList.defaultValue, environment)\n\t\t\t\t\t: undefined,\n\t\t\texpectedMutation: unsugarableFieldList.expectedMutation ?? QualifiedEntityParametersDefaults.expectedMutation,\n\t\t\teventListeners: this.desugarFieldEventListeners(unsugarableFieldList),\n\t\t\tfilter: filter ? this.desugarFilter(filter, environment) : undefined,\n\t\t\tlimit: unsugarableFieldList.limit,\n\t\t\toffset: unsugarableFieldList.offset,\n\t\t\torderBy: unsugarableFieldList.orderBy ? this.desugarOrderBy(unsugarableFieldList.orderBy, environment) : undefined,\n\t\t\tinitialEntityCount: unsugarableFieldList.initialEntityCount ?? EntityListPreferencesDefaults.initialEntityCount,\n\t\t}\n\t}\n\n\tpublic static desugarQualifiedSingleEntity(\n\t\t{ entity, ...unsugarableSingleEntity }: SugaredQualifiedSingleEntity,\n\t\tenvironment: Environment,\n\t): QualifiedSingleEntity {\n\t\tlet entityName: EntityName\n\t\tlet where: UniqueWhere\n\t\tlet filter: Filter | undefined\n\t\tlet hasOneRelationPath: HasOneRelation[]\n\n\t\tif (typeof entity === 'string') {\n\t\t\tconst parsed = this.parseQualifiedSingleEntity(entity, environment)\n\n\t\t\tentityName = parsed.entityName\n\t\t\twhere = parsed.where\n\t\t\tfilter = parsed.filter\n\t\t\thasOneRelationPath = this.augmentDesugaredHasOneRelationPath(\n\t\t\t\tparsed.hasOneRelationPath,\n\t\t\t\tunsugarableSingleEntity,\n\t\t\t\tenvironment,\n\t\t\t)\n\t\t} else {\n\t\t\tentityName = entity.entityName\n\t\t\twhere = this.desugarUniqueWhere(entity.where, environment)\n\t\t\tfilter = entity.filter ? this.desugarFilter(entity.filter, environment) : undefined\n\t\t\thasOneRelationPath = this.desugarHasOneRelationPath(\n\t\t\t\tentity.hasOneRelationPath,\n\t\t\t\tunsugarableSingleEntity,\n\t\t\t\tenvironment,\n\t\t\t)\n\t\t}\n\n\t\t// const forceCreation: boolean =\n\t\t// \tunsugarableSingleEntity.forceCreation !== undefined\n\t\t// \t\t? unsugarableSingleEntity.forceCreation !== undefined\n\t\t// \t\t: EntityCreationParametersDefaults.forceCreation\n\t\tlet setOnCreate: UniqueWhere | undefined =\n\t\t\tunsugarableSingleEntity.setOnCreate !== undefined\n\t\t\t\t? this.desugarSetOnCreate(unsugarableSingleEntity.setOnCreate, environment)\n\t\t\t\t: undefined\n\n\n\t\tconst isNonbearing: boolean =\n\t\t\tunsugarableSingleEntity.isNonbearing !== undefined\n\t\t\t\t? unsugarableSingleEntity.isNonbearing\n\t\t\t\t: EntityCreationParametersDefaults.isNonbearing\n\t\tconst eventListeners = this.desugarSingleEntityEventListeners(unsugarableSingleEntity)\n\t\tconst expectedMutation =\n\t\t\tunsugarableSingleEntity.expectedMutation ?? QualifiedEntityParametersDefaults.expectedMutation\n\t\tconst alias = this.desugarSubTreeAlias(unsugarableSingleEntity.alias)\n\n\t\treturn {\n\t\t\talias,\n\t\t\tentityName,\n\t\t\tisCreating: false,\n\t\t\twhere,\n\t\t\tfilter,\n\t\t\thasOneRelationPath,\n\t\t\t// forceCreation,\n\t\t\tsetOnCreate,\n\t\t\tisNonbearing,\n\t\t\teventListeners,\n\t\t\texpectedMutation,\n\t\t}\n\t}\n\n\tpublic static desugarParentEntityParameters(\n\t\tparentEntity: SugaredParentEntityParameters,\n\t\tenvironment: Environment,\n\t): ParentEntityParameters {\n\t\treturn {\n\t\t\teventListeners: this.desugarSingleEntityEventListeners(parentEntity),\n\t\t}\n\t}\n\n\tpublic static desugarRelativeSingleEntity(\n\t\tsugaredRelativeSingleEntity: string | SugaredRelativeSingleEntity,\n\t\tenvironment: Environment,\n\t): RelativeSingleEntity {\n\t\tlet field: SugaredRelativeSingleEntity['field']\n\t\tlet unsugarableEntity: Omit<SugaredRelativeSingleEntity, 'field'>\n\t\tif (typeof sugaredRelativeSingleEntity === 'string') {\n\t\t\tfield = sugaredRelativeSingleEntity\n\t\t\tunsugarableEntity = {}\n\t\t} else {\n\t\t\tfield = sugaredRelativeSingleEntity.field\n\t\t\tunsugarableEntity = sugaredRelativeSingleEntity\n\t\t}\n\n\t\tlet hasOneRelationPath: HasOneRelation[]\n\t\tif (typeof field === 'string') {\n\t\t\t// fast path\n\t\t\tif (field.match(TokenRegExps.dotSeparatedIdentifier)) {\n\t\t\t\tconst parts = field.split('.')\n\t\t\t\thasOneRelationPath = this.augmentDesugaredHasOneRelationPath(parts, unsugarableEntity, environment)\n\t\t\t} else {\n\t\t\t\tconst parsed = this.parseRelativeSingleEntity(field, environment)\n\t\t\t\thasOneRelationPath = this.augmentDesugaredHasOneRelationPath(\n\t\t\t\t\tparsed.hasOneRelationPath,\n\t\t\t\t\tunsugarableEntity,\n\t\t\t\t\tenvironment,\n\t\t\t\t)\n\t\t\t}\n\n\t\t} else {\n\t\t\thasOneRelationPath = this.desugarHasOneRelationPath(field, unsugarableEntity, environment)\n\t\t}\n\n\t\treturn {\n\t\t\thasOneRelationPath,\n\t\t}\n\t}\n\n\tpublic static desugarRelativeSingleField(\n\t\tsugaredRelativeSingleField: string | SugaredRelativeSingleField,\n\t\tenvironment: Environment,\n\t): RelativeSingleField {\n\t\tlet field: SugaredRelativeSingleField['field']\n\t\tlet unsugarableField: Omit<SugaredRelativeSingleField, 'field'>\n\t\tif (typeof sugaredRelativeSingleField === 'string') {\n\t\t\tfield = sugaredRelativeSingleField\n\t\t\tunsugarableField = {}\n\t\t} else {\n\t\t\tfield = sugaredRelativeSingleField.field\n\t\t\tunsugarableField = sugaredRelativeSingleField\n\t\t}\n\n\t\tlet hasOneRelationPath: HasOneRelation[]\n\t\tlet fieldName: FieldName\n\t\tif (typeof field === 'string') {\n\t\t\t// fast path\n\t\t\tif (field.match(TokenRegExps.dotSeparatedIdentifier)) {\n\t\t\t\tconst parts = field.split('.')\n\t\t\t\tfieldName = parts.pop()!\n\t\t\t\thasOneRelationPath = this.augmentDesugaredHasOneRelationPath(parts, {}, environment)\n\t\t\t} else {\n\t\t\t\tconst parsed = this.parseRelativeSingleField(field, environment)\n\t\t\t\thasOneRelationPath = this.augmentDesugaredHasOneRelationPath(parsed.hasOneRelationPath, {}, environment)\n\t\t\t\tfieldName = parsed.field\n\t\t\t}\n\n\t\t} else {\n\t\t\thasOneRelationPath = this.desugarHasOneRelationPath(field.hasOneRelationPath, {}, environment)\n\t\t\tfieldName = field.field\n\t\t}\n\n\t\treturn {\n\t\t\teventListeners: this.desugarFieldEventListeners(unsugarableField),\n\t\t\thasOneRelationPath,\n\t\t\tfield: fieldName,\n\t\t\tisNonbearing: unsugarableField.isNonbearing ?? LeafFieldDefaults.isNonbearing,\n\t\t\tdefaultValue:\n\t\t\t\tunsugarableField.defaultValue !== undefined\n\t\t\t\t\t? VariableInputTransformer.transformValue(unsugarableField.defaultValue, environment)\n\t\t\t\t\t: undefined,\n\t\t}\n\t}\n\n\tpublic static desugarRelativeEntityList(\n\t\tsugaredRelativeEntityList: string | SugaredRelativeEntityList,\n\t\tenvironment: Environment,\n\t): RelativeEntityList {\n\t\tlet field: SugaredRelativeEntityList['field']\n\t\tlet unsugarableEntityList: Omit<SugaredRelativeEntityList, 'field'>\n\n\t\tif (typeof sugaredRelativeEntityList === 'string') {\n\t\t\tfield = sugaredRelativeEntityList\n\t\t\tunsugarableEntityList = {}\n\t\t} else {\n\t\t\tfield = sugaredRelativeEntityList.field\n\t\t\tunsugarableEntityList = sugaredRelativeEntityList\n\t\t}\n\n\t\tlet hasOneRelationPath: HasOneRelation[]\n\t\tlet hasManyRelation: HasManyRelation\n\t\tif (typeof field === 'string') {\n\t\t\tconst parsed = this.parseRelativeEntityList(field, environment)\n\t\t\thasOneRelationPath = this.augmentDesugaredHasOneRelationPath(\n\t\t\t\tparsed.hasOneRelationPath,\n\t\t\t\temptyObject,\n\t\t\t\tenvironment,\n\t\t\t)\n\t\t\thasManyRelation = this.augmentDesugaredHasManyRelation(\n\t\t\t\tparsed.hasManyRelation,\n\t\t\t\tunsugarableEntityList,\n\t\t\t\tenvironment,\n\t\t\t)\n\t\t} else {\n\t\t\thasOneRelationPath = this.desugarHasOneRelationPath(field.hasOneRelationPath || [], emptyObject, environment)\n\t\t\thasManyRelation = this.desugarHasManyRelation(field.hasManyRelation, unsugarableEntityList, environment)\n\t\t}\n\n\t\treturn {\n\t\t\thasManyRelation,\n\t\t\thasOneRelationPath,\n\t\t}\n\t}\n}\n"],"names":["_QueryLanguage","Parser","TreeParameterMerger","EventListenersStore","RelationDefaults","EntityCreationParametersDefaults","EntityListPreferencesDefaults","QualifiedEntityParametersDefaults","VariableInputTransformer","TokenRegExps","LeafFieldDefaults"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"QueryLanguage.cjs","sources":["../../../../../packages/binding-common/src/queryLanguage/QueryLanguage.ts"],"sourcesContent":["import type { Environment } from '../environment'\nimport {\n\tAlias,\n\tEntityCreationParametersDefaults,\n\tEntityEventListenerStore,\n\tEntityListEventListenerStore,\n\tEntityListPreferencesDefaults,\n\tEntityName,\n\tEventListenersStore,\n\tFieldEventListenerStore,\n\tFieldName,\n\tFilter,\n\tHasManyRelation,\n\tHasOneRelation,\n\tLeafFieldDefaults,\n\tParentEntityParameters,\n\tQualifiedEntityList,\n\tQualifiedEntityParametersDefaults,\n\tQualifiedFieldList,\n\tQualifiedSingleEntity,\n\tRelationDefaults,\n\tRelativeEntityList,\n\tRelativeSingleEntity,\n\tRelativeSingleField,\n\tSugarableHasManyRelation,\n\tSugarableHasOneRelation,\n\tSugaredFilter,\n\tSugaredParentEntityParameters,\n\tSugaredQualifiedEntityList,\n\tSugaredQualifiedFieldList,\n\tSugaredQualifiedSingleEntity,\n\tSugaredRelativeEntityList,\n\tSugaredRelativeSingleEntity,\n\tSugaredRelativeSingleField,\n\tSugaredSetOnCreate,\n\tSugaredUnconstrainedQualifiedEntityList,\n\tSugaredUnconstrainedQualifiedSingleEntity,\n\tUnconstrainedQualifiedEntityList,\n\tUnconstrainedQualifiedSingleEntity,\n\tUniqueWhere,\n\tUnsugarableEntityListEventListeners,\n\tUnsugarableFieldEventListeners,\n\tUnsugarableSingleEntityEventListeners,\n} from '../treeParameters'\nimport { Parser } from './Parser'\nimport { ParsedHasManyRelation, ParsedHasOneRelation } from './ParserResults'\nimport { TokenRegExps } from './tokenList'\nimport { TreeParameterMerger } from '../treeParameters/TreeParameterMerger'\nimport { VariableInputTransformer } from '../environment/VariableInputTransformer'\n\nconst emptyObject = Object.freeze({})\n\nexport class QueryLanguage {\n\n\tprivate static preparePrimitiveEntryPoint<Entry extends Parser.EntryPoint>(entryPoint: Entry) {\n\t\treturn (input: string, environment: Environment): Parser.ParserResult[Entry] =>\n\t\t\tParser.parseQueryLanguageExpression(input, entryPoint, environment)\n\t}\n\n\tprivate static preparePrimitiveEntryPointWithFallback<Entry extends Parser.EntryPoint>(entryPoint: Entry) {\n\t\treturn (input: string | Parser.ParserResult[Entry], environment: Environment): Parser.ParserResult[Entry] => {\n\t\t\tif (typeof input === 'string') {\n\t\t\t\treturn Parser.parseQueryLanguageExpression(input, entryPoint, environment)\n\t\t\t}\n\t\t\treturn input\n\t\t}\n\t}\n\n\tprivate static parseUnconstrainedQualifiedEntityList = QueryLanguage.preparePrimitiveEntryPoint('unconstrainedQualifiedEntityList')\n\tprivate static parseUnconstrainedQualifiedSingleEntity = QueryLanguage.preparePrimitiveEntryPoint('unconstrainedQualifiedEntityList')\n\tprivate static parseQualifiedEntityList = QueryLanguage.preparePrimitiveEntryPoint('qualifiedEntityList')\n\tprivate static parseQualifiedFieldList = QueryLanguage.preparePrimitiveEntryPoint('qualifiedFieldList')\n\tprivate static parseQualifiedSingleEntity = QueryLanguage.preparePrimitiveEntryPoint('qualifiedSingleEntity')\n\tprivate static parseRelativeEntityList = QueryLanguage.preparePrimitiveEntryPoint('relativeEntityList')\n\tprivate static parseRelativeSingleEntity = QueryLanguage.preparePrimitiveEntryPoint('relativeSingleEntity')\n\tprivate static parseRelativeSingleField = QueryLanguage.preparePrimitiveEntryPoint('relativeSingleField')\n\n\tpublic static desugarUniqueWhere = QueryLanguage.preparePrimitiveEntryPointWithFallback('uniqueWhere')\n\tpublic static desugarFilter = QueryLanguage.preparePrimitiveEntryPointWithFallback('filter')\n\tpublic static desugarOrderBy = QueryLanguage.preparePrimitiveEntryPointWithFallback('orderBy')\n\tpublic static desugarTaggedMap = QueryLanguage.preparePrimitiveEntryPointWithFallback('taggedMap')\n\n\n\tpublic static desugarSetOnCreate(setOnCreate: SugaredSetOnCreate, environment: Environment): UniqueWhere {\n\t\tif (Array.isArray(setOnCreate)) {\n\t\t\tconst whereList = setOnCreate.map(connection => this.desugarUniqueWhere(connection, environment))\n\t\t\treturn whereList.reduce(\n\t\t\t\t(accumulator, uniqueWhere) => TreeParameterMerger.mergeSetOnCreate(accumulator, uniqueWhere)!,\n\t\t\t)\n\t\t}\n\t\tif (typeof setOnCreate === 'string') {\n\t\t\treturn this.desugarUniqueWhere(setOnCreate, environment)\n\t\t}\n\t\treturn setOnCreate\n\t}\n\n\tpublic static desugarEventListener<F extends Function>(listener: F | Set<F>): Set<F>\n\tpublic static desugarEventListener<F extends Function>(listener: F | Set<F> | undefined): Set<F> | undefined\n\tpublic static desugarEventListener<F extends Function>(listener: F | Set<F> | undefined): Set<F> | undefined {\n\t\tif (typeof listener === 'function') {\n\t\t\treturn new Set([listener])\n\t\t}\n\t\treturn listener\n\t}\n\n\tprivate static desugarSingleEntityEventListeners(\n\t\tunsugarable: UnsugarableSingleEntityEventListeners,\n\t): EntityEventListenerStore | undefined {\n\t\tif (\n\t\t\tunsugarable.onBeforePersist === undefined &&\n\t\t\tunsugarable.onBeforeUpdate === undefined &&\n\t\t\tunsugarable.onInitialize === undefined &&\n\t\t\tunsugarable.onPersistError === undefined &&\n\t\t\tunsugarable.onPersistSuccess === undefined &&\n\t\t\tunsugarable.onUpdate === undefined\n\t\t) {\n\t\t\treturn undefined\n\t\t}\n\n\t\tconst store: EntityEventListenerStore = new EventListenersStore()\n\n\t\tif (unsugarable.onConnectionUpdate) {\n\t\t\tfor (const fieldName in unsugarable.onConnectionUpdate) {\n\t\t\t\tconst listener = this.desugarEventListener(unsugarable.onConnectionUpdate[fieldName])\n\t\t\t\tstore.set({ type: 'connectionUpdate', key: fieldName }, listener)\n\t\t\t}\n\t\t}\n\n\t\tconst beforePersist = this.desugarEventListener(unsugarable.onBeforePersist)\n\t\tconst beforeUpdate = this.desugarEventListener(unsugarable.onBeforeUpdate)\n\t\tconst initialize = this.desugarEventListener(unsugarable.onInitialize)\n\t\tconst persistError = this.desugarEventListener(unsugarable.onPersistError)\n\t\tconst persistSuccess = this.desugarEventListener(unsugarable.onPersistSuccess)\n\t\tconst update = this.desugarEventListener(unsugarable.onUpdate)\n\n\t\tif (beforePersist) {\n\t\t\tstore.set({ type: 'beforePersist' }, beforePersist)\n\t\t}\n\t\tif (beforeUpdate) {\n\t\t\tstore.set({ type: 'beforeUpdate' }, beforeUpdate)\n\t\t}\n\t\tif (initialize) {\n\t\t\tstore.set({ type: 'initialize' }, initialize)\n\t\t}\n\t\tif (persistError) {\n\t\t\tstore.set({ type: 'persistError' }, persistError)\n\t\t}\n\t\tif (persistSuccess) {\n\t\t\tstore.set({ type: 'persistSuccess' }, persistSuccess)\n\t\t}\n\t\tif (update) {\n\t\t\tstore.set({ type: 'update' }, update)\n\t\t}\n\n\t\treturn store\n\t}\n\n\tprivate static desugarEntityListEventListeners(unsugarable: UnsugarableEntityListEventListeners):\n\t\t| {\n\t\t\teventListeners: EntityListEventListenerStore | undefined\n\t\t\tchildEventListeners: EntityEventListenerStore | undefined\n\t\t }\n\t\t| undefined {\n\t\tif (\n\t\t\tunsugarable.onBeforePersist === undefined &&\n\t\t\tunsugarable.onBeforeUpdate === undefined &&\n\t\t\tunsugarable.onChildBeforeUpdate === undefined &&\n\t\t\tunsugarable.onChildInitialize === undefined &&\n\t\t\tunsugarable.onChildUpdate === undefined &&\n\t\t\tunsugarable.onInitialize === undefined &&\n\t\t\tunsugarable.onPersistError === undefined &&\n\t\t\tunsugarable.onPersistSuccess === undefined &&\n\t\t\tunsugarable.onUpdate === undefined\n\t\t) {\n\t\t\treturn undefined\n\t\t}\n\n\t\tconst eventListeners: EntityListEventListenerStore = new EventListenersStore()\n\n\t\tconst beforePersist = this.desugarEventListener(unsugarable.onBeforePersist)\n\t\tconst beforeUpdate = this.desugarEventListener(unsugarable.onBeforeUpdate)\n\t\tconst initialize = this.desugarEventListener(unsugarable.onInitialize)\n\t\tconst persistError = this.desugarEventListener(unsugarable.onPersistError)\n\t\tconst persistSuccess = this.desugarEventListener(unsugarable.onPersistSuccess)\n\t\tconst update = this.desugarEventListener(unsugarable.onUpdate)\n\n\t\tif (beforePersist) {\n\t\t\teventListeners.set({ type: 'beforePersist' }, beforePersist)\n\t\t}\n\t\tif (beforeUpdate) {\n\t\t\teventListeners.set({ type: 'beforeUpdate' }, beforeUpdate)\n\t\t}\n\t\tif (initialize) {\n\t\t\teventListeners.set({ type: 'initialize' }, initialize)\n\t\t}\n\t\tif (persistError) {\n\t\t\teventListeners.set({ type: 'persistError' }, persistError)\n\t\t}\n\t\tif (persistSuccess) {\n\t\t\teventListeners.set({ type: 'persistSuccess' }, persistSuccess)\n\t\t}\n\t\tif (update) {\n\t\t\teventListeners.set({ type: 'update' }, update)\n\t\t}\n\n\t\tconst childEventListeners: EntityEventListenerStore = new EventListenersStore()\n\n\t\tconst childBeforeUpdate = this.desugarEventListener(unsugarable.onChildBeforeUpdate)\n\t\tconst childInitialize = this.desugarEventListener(unsugarable.onChildInitialize)\n\t\tconst childUpdate = this.desugarEventListener(unsugarable.onChildUpdate)\n\n\t\tif (childBeforeUpdate) {\n\t\t\tchildEventListeners.set({ type: 'beforeUpdate' }, childBeforeUpdate)\n\t\t}\n\t\tif (childInitialize) {\n\t\t\tchildEventListeners.set({ type: 'initialize' }, childInitialize)\n\t\t}\n\t\tif (childUpdate) {\n\t\t\tchildEventListeners.set({ type: 'update' }, childUpdate)\n\t\t}\n\n\t\treturn {\n\t\t\teventListeners,\n\t\t\tchildEventListeners,\n\t\t}\n\t}\n\n\tprivate static desugarFieldEventListeners(\n\t\tunsugarable: UnsugarableFieldEventListeners,\n\t): FieldEventListenerStore | undefined {\n\t\tif (unsugarable.onBeforeUpdate === undefined && unsugarable.onUpdate === undefined) {\n\t\t\treturn undefined\n\t\t}\n\n\t\tconst store: FieldEventListenerStore = new EventListenersStore()\n\n\t\tconst beforeUpdate = this.desugarEventListener(unsugarable.onBeforeUpdate)\n\t\tconst update = this.desugarEventListener(unsugarable.onUpdate)\n\n\t\tif (beforeUpdate) {\n\t\t\tstore.set({ type: 'beforeUpdate' }, beforeUpdate)\n\t\t}\n\t\tif (update) {\n\t\t\tstore.set({ type: 'update' }, update)\n\t\t}\n\n\t\treturn store\n\t}\n\n\tprivate static desugarSubTreeAlias(alias: Alias | Set<Alias> | undefined): Set<Alias> | undefined {\n\t\tif (alias === undefined) {\n\t\t\treturn undefined\n\t\t}\n\t\tif (alias instanceof Set) {\n\t\t\treturn alias\n\t\t}\n\t\treturn new Set<Alias>().add(alias)\n\t}\n\n\tprivate static desugarHasOneRelation(\n\t\tsugarable: SugarableHasOneRelation,\n\t\tunsugarable: Omit<SugaredRelativeSingleEntity, 'field'>,\n\t\tenvironment: Environment,\n\t): HasOneRelation {\n\t\treturn {\n\t\t\tfield: sugarable.field,\n\t\t\tfilter: sugarable.filter ? this.desugarFilter(sugarable.filter, environment) : undefined,\n\t\t\texpectedMutation: unsugarable.expectedMutation ?? RelationDefaults.expectedMutation,\n\t\t\treducedBy: sugarable.reducedBy ? this.desugarUniqueWhere(sugarable.reducedBy, environment) : undefined,\n\t\t\tsetOnCreate: unsugarable.setOnCreate ? this.desugarSetOnCreate(unsugarable.setOnCreate, environment) : undefined,\n\t\t\tisNonbearing: unsugarable.isNonbearing ?? EntityCreationParametersDefaults.isNonbearing,\n\t\t\tmeta: unsugarable.withMeta ?? [],\n\t\t\t// forceCreation: unsugarable.forceCreation ?? EntityCreationParametersDefaults.forceCreation,\n\t\t\teventListeners: this.desugarSingleEntityEventListeners(unsugarable),\n\t\t}\n\t}\n\n\tprivate static augmentDesugaredHasOneRelationPath(\n\t\tpath: (ParsedHasOneRelation | string)[],\n\t\tunsugarable: Omit<SugaredRelativeSingleEntity, 'field'>,\n\t\tenvironment: Environment,\n\t): HasOneRelation[] {\n\t\treturn path.map((desugaredHasOneRelation, i) =>\n\t\t\t// Unsugarable applies to the last\n\t\t\tthis.desugarHasOneRelation(\n\t\t\t\ttypeof desugaredHasOneRelation === 'string' ? { field: desugaredHasOneRelation } : desugaredHasOneRelation,\n\t\t\t\ti === path.length - 1 ? unsugarable : {},\n\t\t\t\tenvironment,\n\t\t\t),\n\t\t)\n\t}\n\n\tprivate static augmentDesugaredHasManyRelation(\n\t\trelation: ParsedHasManyRelation,\n\t\tunsugarable: Omit<SugaredRelativeEntityList, 'field'>,\n\t\tenvironment: Environment,\n\t): HasManyRelation {\n\t\tconst eventListeners = this.desugarEntityListEventListeners(unsugarable)\n\t\treturn {\n\t\t\tfield: relation.field,\n\t\t\tfilter: relation.filter,\n\t\t\texpectedMutation: unsugarable.expectedMutation ?? RelationDefaults.expectedMutation,\n\t\t\tisNonbearing: unsugarable.isNonbearing ?? EntityCreationParametersDefaults.isNonbearing,\n\t\t\t// forceCreation: unsugarable.forceCreation ?? EntityCreationParametersDefaults.forceCreation,\n\t\t\tinitialEntityCount: unsugarable.initialEntityCount ?? EntityListPreferencesDefaults.initialEntityCount,\n\t\t\tsetOnCreate: unsugarable.setOnCreate ? this.desugarSetOnCreate(unsugarable.setOnCreate, environment) : undefined,\n\t\t\tmeta: unsugarable.withMeta ?? [],\n\t\t\torderBy: unsugarable.orderBy ? this.desugarOrderBy(unsugarable.orderBy, environment) : undefined,\n\t\t\toffset: unsugarable.offset,\n\t\t\tlimit: unsugarable.limit,\n\t\t\tchildEventListeners: eventListeners?.childEventListeners,\n\t\t\teventListeners: eventListeners?.eventListeners,\n\t\t}\n\t}\n\n\tprivate static desugarHasOneRelationPath(\n\t\tinput: SugarableHasOneRelation[] | SugarableHasOneRelation | undefined,\n\t\tlastRelation: Omit<SugaredRelativeSingleEntity, 'field'>,\n\t\tenvironment: Environment,\n\t): HasOneRelation[] {\n\t\tif (input === undefined) {\n\t\t\tinput = []\n\t\t} else if (!Array.isArray(input)) {\n\t\t\tinput = [input]\n\t\t}\n\n\t\tconst relationPath: HasOneRelation[] = []\n\n\t\tconst cappedLength = input.length - 1\n\t\tlet i = 0\n\t\tfor (; i < cappedLength; i++) {\n\t\t\t// Deliberately leaving out the last element\n\t\t\tconst pathNode = input[i]\n\n\t\t\trelationPath.push(this.desugarHasOneRelation(pathNode, {}, environment))\n\t\t}\n\t\tif (i in input) {\n\t\t\trelationPath.push(this.desugarHasOneRelation(input[i], lastRelation, environment))\n\t\t}\n\n\t\treturn relationPath\n\t}\n\n\tprivate static desugarHasManyRelation(\n\t\tsugarablePart: SugarableHasManyRelation,\n\t\tunsugarablePart: Omit<SugaredRelativeEntityList, 'field'>,\n\t\tenvironment: Environment,\n\t): HasManyRelation {\n\t\tconst eventListeners = this.desugarEntityListEventListeners(unsugarablePart)\n\t\treturn {\n\n\t\t\tfilter: sugarablePart.filter ? this.desugarFilter(sugarablePart.filter, environment) : undefined,\n\t\t\tlimit: unsugarablePart.limit,\n\t\t\toffset: unsugarablePart.offset,\n\t\t\torderBy: unsugarablePart.orderBy ? this.desugarOrderBy(unsugarablePart.orderBy, environment) : undefined,\n\t\t\tinitialEntityCount: unsugarablePart.initialEntityCount ?? EntityListPreferencesDefaults.initialEntityCount,\n\t\t\texpectedMutation: unsugarablePart.expectedMutation ?? RelationDefaults.expectedMutation,\n\t\t\tsetOnCreate: unsugarablePart.setOnCreate\n\t\t\t\t? this.desugarSetOnCreate(unsugarablePart.setOnCreate, environment)\n\t\t\t\t: undefined,\n\t\t\tmeta: unsugarablePart.withMeta ?? [],\n\t\t\tfield: sugarablePart.field,\n\t\t\tisNonbearing: unsugarablePart.isNonbearing ?? EntityCreationParametersDefaults.isNonbearing,\n\t\t\t// forceCreation: unsugarablePart.forceCreation ?? EntityCreationParametersDefaults.forceCreation,\n\t\t\tchildEventListeners: eventListeners?.childEventListeners,\n\t\t\teventListeners: eventListeners?.eventListeners,\n\t\t}\n\t}\n\n\tpublic static desugarUnconstrainedQualifiedEntityList(\n\t\t{ entities, ...unsugarableEntityList }: SugaredUnconstrainedQualifiedEntityList,\n\t\tenvironment: Environment,\n\t): UnconstrainedQualifiedEntityList {\n\t\tlet hasOneRelationPath: HasOneRelation[]\n\t\tlet entityName: EntityName\n\n\t\tif (typeof entities === 'string') {\n\t\t\tconst parsed = this.parseUnconstrainedQualifiedEntityList(entities, environment)\n\t\t\tentityName = parsed.entityName\n\t\t\thasOneRelationPath = this.augmentDesugaredHasOneRelationPath(\n\t\t\t\tparsed.hasOneRelationPath,\n\t\t\t\temptyObject,\n\t\t\t\tenvironment,\n\t\t\t)\n\t\t} else {\n\t\t\tentityName = entities.entityName\n\t\t\thasOneRelationPath = this.desugarHasOneRelationPath(entities.hasOneRelationPath, emptyObject, environment)\n\t\t}\n\n\t\tconst eventListeners = this.desugarEntityListEventListeners(unsugarableEntityList)\n\n\t\treturn {\n\t\t\tisCreating: true,\n\t\t\tisUnpersisted: unsugarableEntityList.isUnpersisted ?? false,\n\t\t\tisNonbearing: unsugarableEntityList.isNonbearing ?? EntityCreationParametersDefaults.isNonbearing,\n\t\t\t// forceCreation: unsugarableEntityList.forceCreation ?? EntityCreationParametersDefaults.forceCreation,\n\t\t\tsetOnCreate: unsugarableEntityList.setOnCreate\n\t\t\t\t? this.desugarSetOnCreate(unsugarableEntityList.setOnCreate, environment)\n\t\t\t\t: undefined,\n\t\t\texpectedMutation: unsugarableEntityList.expectedMutation ?? QualifiedEntityParametersDefaults.expectedMutation,\n\t\t\tchildEventListeners: eventListeners?.childEventListeners,\n\t\t\teventListeners: eventListeners?.eventListeners,\n\t\t\tinitialEntityCount: unsugarableEntityList.initialEntityCount ?? EntityListPreferencesDefaults.initialEntityCount,\n\t\t\talias: this.desugarSubTreeAlias(unsugarableEntityList.alias),\n\t\t\tentityName,\n\t\t\thasOneRelationPath,\n\t\t}\n\t}\n\n\tpublic static desugarUnconstrainedQualifiedSingleEntity(\n\t\t{ entity, ...unsugarableSingleEntity }: SugaredUnconstrainedQualifiedSingleEntity,\n\t\tenvironment: Environment,\n\t): UnconstrainedQualifiedSingleEntity {\n\t\tlet hasOneRelationPath: HasOneRelation[]\n\t\tlet entityName: EntityName\n\n\t\tif (typeof entity === 'string') {\n\t\t\tconst parsed = this.parseUnconstrainedQualifiedSingleEntity(entity, environment)\n\t\t\tentityName = parsed.entityName\n\t\t\thasOneRelationPath = this.augmentDesugaredHasOneRelationPath(\n\t\t\t\tparsed.hasOneRelationPath,\n\t\t\t\tunsugarableSingleEntity,\n\t\t\t\tenvironment,\n\t\t\t)\n\t\t} else {\n\t\t\tentityName = entity.entityName\n\t\t\thasOneRelationPath = this.desugarHasOneRelationPath(\n\t\t\t\tentity.hasOneRelationPath,\n\t\t\t\tunsugarableSingleEntity,\n\t\t\t\tenvironment,\n\t\t\t)\n\t\t}\n\n\t\treturn {\n\t\t\tisCreating: true,\n\t\t\tisUnpersisted: unsugarableSingleEntity.isUnpersisted ?? false,\n\t\t\tisNonbearing: unsugarableSingleEntity.isNonbearing ?? EntityCreationParametersDefaults.isNonbearing,\n\t\t\t// forceCreation: unsugarableSingleEntity.forceCreation ?? EntityCreationParametersDefaults.forceCreation,\n\t\t\tsetOnCreate: unsugarableSingleEntity.setOnCreate\n\t\t\t\t? this.desugarSetOnCreate(unsugarableSingleEntity.setOnCreate, environment)\n\t\t\t\t: undefined,\n\t\t\texpectedMutation: unsugarableSingleEntity.expectedMutation ?? QualifiedEntityParametersDefaults.expectedMutation,\n\t\t\teventListeners: this.desugarSingleEntityEventListeners(unsugarableSingleEntity),\n\t\t\talias: this.desugarSubTreeAlias(unsugarableSingleEntity.alias),\n\t\t\tentityName,\n\t\t\thasOneRelationPath,\n\t\t}\n\t}\n\n\tpublic static desugarQualifiedEntityList(\n\t\t{ entities, ...unsugarableEntityList }: SugaredQualifiedEntityList,\n\t\tenvironment: Environment,\n\t): QualifiedEntityList {\n\t\tlet entityName: EntityName\n\t\tlet hasOneRelationPath: HasOneRelation[]\n\n\t\tlet filter: SugaredFilter | undefined\n\n\t\tif (typeof entities === 'string') {\n\t\t\tconst parsed = this.parseQualifiedEntityList(entities, environment)\n\n\t\t\tentityName = parsed.entityName\n\t\t\tfilter = parsed.filter\n\t\t\thasOneRelationPath = this.augmentDesugaredHasOneRelationPath(\n\t\t\t\tparsed.hasOneRelationPath,\n\t\t\t\temptyObject,\n\t\t\t\tenvironment,\n\t\t\t)\n\t\t} else {\n\t\t\tentityName = entities.entityName\n\t\t\tfilter = entities.filter\n\t\t\thasOneRelationPath = this.desugarHasOneRelationPath(entities.hasOneRelationPath, emptyObject, environment)\n\t\t}\n\n\t\tconst eventListeners = this.desugarEntityListEventListeners(unsugarableEntityList)\n\n\t\treturn {\n\t\t\tentityName,\n\t\t\thasOneRelationPath,\n\t\t\tfilter: filter ? this.desugarFilter(filter, environment) : undefined,\n\t\t\tlimit: unsugarableEntityList.limit,\n\t\t\toffset: unsugarableEntityList.offset,\n\t\t\torderBy: unsugarableEntityList.orderBy ? this.desugarOrderBy(unsugarableEntityList.orderBy, environment) : undefined,\n\t\t\tinitialEntityCount: unsugarableEntityList.initialEntityCount ?? EntityListPreferencesDefaults.initialEntityCount,\n\t\t\talias: this.desugarSubTreeAlias(unsugarableEntityList.alias),\n\t\t\tisCreating: false,\n\t\t\tisNonbearing: unsugarableEntityList.isNonbearing ?? EntityCreationParametersDefaults.isNonbearing,\n\t\t\t// forceCreation: unsugarableEntityList.forceCreation ?? EntityCreationParametersDefaults.forceCreation,\n\t\t\tsetOnCreate: unsugarableEntityList.setOnCreate\n\t\t\t\t? this.desugarSetOnCreate(unsugarableEntityList.setOnCreate, environment)\n\t\t\t\t: undefined,\n\t\t\texpectedMutation: unsugarableEntityList.expectedMutation ?? QualifiedEntityParametersDefaults.expectedMutation,\n\t\t\tchildEventListeners: eventListeners?.childEventListeners,\n\t\t\teventListeners: eventListeners?.eventListeners,\n\t\t}\n\t}\n\n\tpublic static desugarQualifiedFieldList(\n\t\t{ fields, ...unsugarableFieldList }: SugaredQualifiedFieldList,\n\t\tenvironment: Environment,\n\t): QualifiedFieldList {\n\t\tlet field: FieldName\n\t\tlet entityName: EntityName\n\t\tlet filter: SugaredFilter | undefined\n\t\tlet hasOneRelationPath: HasOneRelation[]\n\n\t\tif (typeof fields === 'string') {\n\t\t\tconst parsed = this.parseQualifiedFieldList(fields, environment)\n\n\t\t\tfield = parsed.field\n\t\t\tentityName = parsed.entityName\n\t\t\tfilter = parsed.filter\n\t\t\thasOneRelationPath = this.augmentDesugaredHasOneRelationPath(\n\t\t\t\tparsed.hasOneRelationPath,\n\t\t\t\temptyObject,\n\t\t\t\tenvironment,\n\t\t\t)\n\t\t} else {\n\t\t\tfield = fields.field\n\t\t\tentityName = fields.entityName\n\t\t\tfilter = fields.filter\n\t\t\thasOneRelationPath = this.desugarHasOneRelationPath(fields.hasOneRelationPath, emptyObject, environment)\n\t\t}\n\n\t\treturn {\n\t\t\tfield,\n\t\t\tentityName,\n\t\t\thasOneRelationPath,\n\t\t\talias: this.desugarSubTreeAlias(unsugarableFieldList.alias),\n\t\t\tisNonbearing: unsugarableFieldList.isNonbearing ?? EntityCreationParametersDefaults.isNonbearing,\n\t\t\t// forceCreation: unsugarableFieldList.forceCreation ?? EntityCreationParametersDefaults.forceCreation,\n\t\t\tdefaultValue:\n\t\t\t\tunsugarableFieldList.defaultValue !== undefined\n\t\t\t\t\t? VariableInputTransformer.transformValue(unsugarableFieldList.defaultValue, environment)\n\t\t\t\t\t: undefined,\n\t\t\texpectedMutation: unsugarableFieldList.expectedMutation ?? QualifiedEntityParametersDefaults.expectedMutation,\n\t\t\teventListeners: this.desugarFieldEventListeners(unsugarableFieldList),\n\t\t\tfilter: filter ? this.desugarFilter(filter, environment) : undefined,\n\t\t\tlimit: unsugarableFieldList.limit,\n\t\t\toffset: unsugarableFieldList.offset,\n\t\t\torderBy: unsugarableFieldList.orderBy ? this.desugarOrderBy(unsugarableFieldList.orderBy, environment) : undefined,\n\t\t\tinitialEntityCount: unsugarableFieldList.initialEntityCount ?? EntityListPreferencesDefaults.initialEntityCount,\n\t\t}\n\t}\n\n\tpublic static desugarQualifiedSingleEntity(\n\t\t{ entity, ...unsugarableSingleEntity }: SugaredQualifiedSingleEntity,\n\t\tenvironment: Environment,\n\t): QualifiedSingleEntity {\n\t\tlet entityName: EntityName\n\t\tlet where: UniqueWhere\n\t\tlet filter: Filter | undefined\n\t\tlet hasOneRelationPath: HasOneRelation[]\n\n\t\tif (typeof entity === 'string') {\n\t\t\tconst parsed = this.parseQualifiedSingleEntity(entity, environment)\n\n\t\t\tentityName = parsed.entityName\n\t\t\twhere = parsed.where\n\t\t\tfilter = parsed.filter\n\t\t\thasOneRelationPath = this.augmentDesugaredHasOneRelationPath(\n\t\t\t\tparsed.hasOneRelationPath,\n\t\t\t\tunsugarableSingleEntity,\n\t\t\t\tenvironment,\n\t\t\t)\n\t\t} else {\n\t\t\tentityName = entity.entityName\n\t\t\twhere = this.desugarUniqueWhere(entity.where, environment)\n\t\t\tfilter = entity.filter ? this.desugarFilter(entity.filter, environment) : undefined\n\t\t\thasOneRelationPath = this.desugarHasOneRelationPath(\n\t\t\t\tentity.hasOneRelationPath,\n\t\t\t\tunsugarableSingleEntity,\n\t\t\t\tenvironment,\n\t\t\t)\n\t\t}\n\n\t\t// const forceCreation: boolean =\n\t\t// \tunsugarableSingleEntity.forceCreation !== undefined\n\t\t// \t\t? unsugarableSingleEntity.forceCreation !== undefined\n\t\t// \t\t: EntityCreationParametersDefaults.forceCreation\n\t\tlet setOnCreate: UniqueWhere | undefined =\n\t\t\tunsugarableSingleEntity.setOnCreate !== undefined\n\t\t\t\t? this.desugarSetOnCreate(unsugarableSingleEntity.setOnCreate, environment)\n\t\t\t\t: undefined\n\n\n\t\tconst isNonbearing: boolean =\n\t\t\tunsugarableSingleEntity.isNonbearing !== undefined\n\t\t\t\t? unsugarableSingleEntity.isNonbearing\n\t\t\t\t: EntityCreationParametersDefaults.isNonbearing\n\t\tconst eventListeners = this.desugarSingleEntityEventListeners(unsugarableSingleEntity)\n\t\tconst expectedMutation =\n\t\t\tunsugarableSingleEntity.expectedMutation ?? QualifiedEntityParametersDefaults.expectedMutation\n\t\tconst alias = this.desugarSubTreeAlias(unsugarableSingleEntity.alias)\n\n\t\treturn {\n\t\t\talias,\n\t\t\tentityName,\n\t\t\tisCreating: false,\n\t\t\twhere,\n\t\t\tfilter,\n\t\t\thasOneRelationPath,\n\t\t\t// forceCreation,\n\t\t\tsetOnCreate,\n\t\t\tisNonbearing,\n\t\t\teventListeners,\n\t\t\texpectedMutation,\n\t\t}\n\t}\n\n\tpublic static desugarParentEntityParameters(\n\t\tparentEntity: SugaredParentEntityParameters,\n\t\tenvironment: Environment,\n\t): ParentEntityParameters {\n\t\treturn {\n\t\t\teventListeners: this.desugarSingleEntityEventListeners(parentEntity),\n\t\t}\n\t}\n\n\tpublic static desugarRelativeSingleEntity(\n\t\tsugaredRelativeSingleEntity: string | SugaredRelativeSingleEntity,\n\t\tenvironment: Environment,\n\t): RelativeSingleEntity {\n\t\tlet field: SugaredRelativeSingleEntity['field']\n\t\tlet unsugarableEntity: Omit<SugaredRelativeSingleEntity, 'field'>\n\t\tif (typeof sugaredRelativeSingleEntity === 'string') {\n\t\t\tfield = sugaredRelativeSingleEntity\n\t\t\tunsugarableEntity = {}\n\t\t} else {\n\t\t\tfield = sugaredRelativeSingleEntity.field\n\t\t\tunsugarableEntity = sugaredRelativeSingleEntity\n\t\t}\n\n\t\tlet hasOneRelationPath: HasOneRelation[]\n\t\tif (typeof field === 'string') {\n\t\t\t// fast path\n\t\t\tif (field.match(TokenRegExps.dotSeparatedIdentifier)) {\n\t\t\t\tconst parts = field.split('.')\n\t\t\t\thasOneRelationPath = this.augmentDesugaredHasOneRelationPath(parts, unsugarableEntity, environment)\n\t\t\t} else {\n\t\t\t\tconst parsed = this.parseRelativeSingleEntity(field, environment)\n\t\t\t\thasOneRelationPath = this.augmentDesugaredHasOneRelationPath(\n\t\t\t\t\tparsed.hasOneRelationPath,\n\t\t\t\t\tunsugarableEntity,\n\t\t\t\t\tenvironment,\n\t\t\t\t)\n\t\t\t}\n\n\t\t} else {\n\t\t\thasOneRelationPath = this.desugarHasOneRelationPath(field, unsugarableEntity, environment)\n\t\t}\n\n\t\treturn {\n\t\t\thasOneRelationPath,\n\t\t}\n\t}\n\n\tpublic static desugarRelativeSingleField(\n\t\tsugaredRelativeSingleField: string | SugaredRelativeSingleField,\n\t\tenvironment: Environment,\n\t): RelativeSingleField {\n\t\tlet field: SugaredRelativeSingleField['field']\n\t\tlet unsugarableField: Omit<SugaredRelativeSingleField, 'field'>\n\t\tif (typeof sugaredRelativeSingleField === 'string') {\n\t\t\tfield = sugaredRelativeSingleField\n\t\t\tunsugarableField = {}\n\t\t} else {\n\t\t\tfield = sugaredRelativeSingleField.field\n\t\t\tunsugarableField = sugaredRelativeSingleField\n\t\t}\n\n\t\tlet hasOneRelationPath: HasOneRelation[]\n\t\tlet fieldName: FieldName\n\t\tif (typeof field === 'string') {\n\t\t\t// fast path\n\t\t\tif (field.match(TokenRegExps.dotSeparatedIdentifier)) {\n\t\t\t\tconst parts = field.split('.')\n\t\t\t\tfieldName = parts.pop()!\n\t\t\t\thasOneRelationPath = this.augmentDesugaredHasOneRelationPath(parts, {}, environment)\n\t\t\t} else {\n\t\t\t\tconst parsed = this.parseRelativeSingleField(field, environment)\n\t\t\t\thasOneRelationPath = this.augmentDesugaredHasOneRelationPath(parsed.hasOneRelationPath, {}, environment)\n\t\t\t\tfieldName = parsed.field\n\t\t\t}\n\n\t\t} else {\n\t\t\thasOneRelationPath = this.desugarHasOneRelationPath(field.hasOneRelationPath, {}, environment)\n\t\t\tfieldName = field.field\n\t\t}\n\n\t\treturn {\n\t\t\teventListeners: this.desugarFieldEventListeners(unsugarableField),\n\t\t\thasOneRelationPath,\n\t\t\tfield: fieldName,\n\t\t\tisNonbearing: unsugarableField.isNonbearing ?? LeafFieldDefaults.isNonbearing,\n\t\t\tmeta: unsugarableField.withMeta ?? [],\n\t\t\tdefaultValue:\n\t\t\t\tunsugarableField.defaultValue !== undefined\n\t\t\t\t\t? VariableInputTransformer.transformValue(unsugarableField.defaultValue, environment)\n\t\t\t\t\t: undefined,\n\t\t}\n\t}\n\n\tpublic static desugarRelativeEntityList(\n\t\tsugaredRelativeEntityList: string | SugaredRelativeEntityList,\n\t\tenvironment: Environment,\n\t): RelativeEntityList {\n\t\tlet field: SugaredRelativeEntityList['field']\n\t\tlet unsugarableEntityList: Omit<SugaredRelativeEntityList, 'field'>\n\n\t\tif (typeof sugaredRelativeEntityList === 'string') {\n\t\t\tfield = sugaredRelativeEntityList\n\t\t\tunsugarableEntityList = {}\n\t\t} else {\n\t\t\tfield = sugaredRelativeEntityList.field\n\t\t\tunsugarableEntityList = sugaredRelativeEntityList\n\t\t}\n\n\t\tlet hasOneRelationPath: HasOneRelation[]\n\t\tlet hasManyRelation: HasManyRelation\n\t\tif (typeof field === 'string') {\n\t\t\tconst parsed = this.parseRelativeEntityList(field, environment)\n\t\t\thasOneRelationPath = this.augmentDesugaredHasOneRelationPath(\n\t\t\t\tparsed.hasOneRelationPath,\n\t\t\t\temptyObject,\n\t\t\t\tenvironment,\n\t\t\t)\n\t\t\thasManyRelation = this.augmentDesugaredHasManyRelation(\n\t\t\t\tparsed.hasManyRelation,\n\t\t\t\tunsugarableEntityList,\n\t\t\t\tenvironment,\n\t\t\t)\n\t\t} else {\n\t\t\thasOneRelationPath = this.desugarHasOneRelationPath(field.hasOneRelationPath || [], emptyObject, environment)\n\t\t\thasManyRelation = this.desugarHasManyRelation(field.hasManyRelation, unsugarableEntityList, environment)\n\t\t}\n\n\t\treturn {\n\t\t\thasManyRelation,\n\t\t\thasOneRelationPath,\n\t\t}\n\t}\n}\n"],"names":["_QueryLanguage","Parser","TreeParameterMerger","EventListenersStore","RelationDefaults","EntityCreationParametersDefaults","EntityListPreferencesDefaults","QualifiedEntityParametersDefaults","VariableInputTransformer","TokenRegExps","LeafFieldDefaults"],"mappings":"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"}
|
|
@@ -154,6 +154,7 @@ const _QueryLanguage = class _QueryLanguage2 {
|
|
|
154
154
|
reducedBy: sugarable.reducedBy ? this.desugarUniqueWhere(sugarable.reducedBy, environment) : void 0,
|
|
155
155
|
setOnCreate: unsugarable.setOnCreate ? this.desugarSetOnCreate(unsugarable.setOnCreate, environment) : void 0,
|
|
156
156
|
isNonbearing: unsugarable.isNonbearing ?? EntityCreationParametersDefaults.isNonbearing,
|
|
157
|
+
meta: unsugarable.withMeta ?? [],
|
|
157
158
|
// forceCreation: unsugarable.forceCreation ?? EntityCreationParametersDefaults.forceCreation,
|
|
158
159
|
eventListeners: this.desugarSingleEntityEventListeners(unsugarable)
|
|
159
160
|
};
|
|
@@ -180,6 +181,7 @@ const _QueryLanguage = class _QueryLanguage2 {
|
|
|
180
181
|
// forceCreation: unsugarable.forceCreation ?? EntityCreationParametersDefaults.forceCreation,
|
|
181
182
|
initialEntityCount: unsugarable.initialEntityCount ?? EntityListPreferencesDefaults.initialEntityCount,
|
|
182
183
|
setOnCreate: unsugarable.setOnCreate ? this.desugarSetOnCreate(unsugarable.setOnCreate, environment) : void 0,
|
|
184
|
+
meta: unsugarable.withMeta ?? [],
|
|
183
185
|
orderBy: unsugarable.orderBy ? this.desugarOrderBy(unsugarable.orderBy, environment) : void 0,
|
|
184
186
|
offset: unsugarable.offset,
|
|
185
187
|
limit: unsugarable.limit,
|
|
@@ -215,6 +217,7 @@ const _QueryLanguage = class _QueryLanguage2 {
|
|
|
215
217
|
initialEntityCount: unsugarablePart.initialEntityCount ?? EntityListPreferencesDefaults.initialEntityCount,
|
|
216
218
|
expectedMutation: unsugarablePart.expectedMutation ?? RelationDefaults.expectedMutation,
|
|
217
219
|
setOnCreate: unsugarablePart.setOnCreate ? this.desugarSetOnCreate(unsugarablePart.setOnCreate, environment) : void 0,
|
|
220
|
+
meta: unsugarablePart.withMeta ?? [],
|
|
218
221
|
field: sugarablePart.field,
|
|
219
222
|
isNonbearing: unsugarablePart.isNonbearing ?? EntityCreationParametersDefaults.isNonbearing,
|
|
220
223
|
// forceCreation: unsugarablePart.forceCreation ?? EntityCreationParametersDefaults.forceCreation,
|
|
@@ -470,6 +473,7 @@ const _QueryLanguage = class _QueryLanguage2 {
|
|
|
470
473
|
hasOneRelationPath,
|
|
471
474
|
field: fieldName,
|
|
472
475
|
isNonbearing: unsugarableField.isNonbearing ?? LeafFieldDefaults.isNonbearing,
|
|
476
|
+
meta: unsugarableField.withMeta ?? [],
|
|
473
477
|
defaultValue: unsugarableField.defaultValue !== void 0 ? VariableInputTransformer.transformValue(unsugarableField.defaultValue, environment) : void 0
|
|
474
478
|
};
|
|
475
479
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryLanguage.js","sources":["../../../../../packages/binding-common/src/queryLanguage/QueryLanguage.ts"],"sourcesContent":["import type { Environment } from '../environment'\nimport {\n\tAlias,\n\tEntityCreationParametersDefaults,\n\tEntityEventListenerStore,\n\tEntityListEventListenerStore,\n\tEntityListPreferencesDefaults,\n\tEntityName,\n\tEventListenersStore,\n\tFieldEventListenerStore,\n\tFieldName,\n\tFilter,\n\tHasManyRelation,\n\tHasOneRelation,\n\tLeafFieldDefaults,\n\tParentEntityParameters,\n\tQualifiedEntityList,\n\tQualifiedEntityParametersDefaults,\n\tQualifiedFieldList,\n\tQualifiedSingleEntity,\n\tRelationDefaults,\n\tRelativeEntityList,\n\tRelativeSingleEntity,\n\tRelativeSingleField,\n\tSugarableHasManyRelation,\n\tSugarableHasOneRelation,\n\tSugaredFilter,\n\tSugaredParentEntityParameters,\n\tSugaredQualifiedEntityList,\n\tSugaredQualifiedFieldList,\n\tSugaredQualifiedSingleEntity,\n\tSugaredRelativeEntityList,\n\tSugaredRelativeSingleEntity,\n\tSugaredRelativeSingleField,\n\tSugaredSetOnCreate,\n\tSugaredUnconstrainedQualifiedEntityList,\n\tSugaredUnconstrainedQualifiedSingleEntity,\n\tUnconstrainedQualifiedEntityList,\n\tUnconstrainedQualifiedSingleEntity,\n\tUniqueWhere,\n\tUnsugarableEntityListEventListeners,\n\tUnsugarableFieldEventListeners,\n\tUnsugarableSingleEntityEventListeners,\n} from '../treeParameters'\nimport { Parser } from './Parser'\nimport { ParsedHasManyRelation, ParsedHasOneRelation } from './ParserResults'\nimport { TokenRegExps } from './tokenList'\nimport { TreeParameterMerger } from '../treeParameters/TreeParameterMerger'\nimport { VariableInputTransformer } from '../environment/VariableInputTransformer'\n\nconst emptyObject = Object.freeze({})\n\nexport class QueryLanguage {\n\n\tprivate static preparePrimitiveEntryPoint<Entry extends Parser.EntryPoint>(entryPoint: Entry) {\n\t\treturn (input: string, environment: Environment): Parser.ParserResult[Entry] =>\n\t\t\tParser.parseQueryLanguageExpression(input, entryPoint, environment)\n\t}\n\n\tprivate static preparePrimitiveEntryPointWithFallback<Entry extends Parser.EntryPoint>(entryPoint: Entry) {\n\t\treturn (input: string | Parser.ParserResult[Entry], environment: Environment): Parser.ParserResult[Entry] => {\n\t\t\tif (typeof input === 'string') {\n\t\t\t\treturn Parser.parseQueryLanguageExpression(input, entryPoint, environment)\n\t\t\t}\n\t\t\treturn input\n\t\t}\n\t}\n\n\tprivate static parseUnconstrainedQualifiedEntityList = QueryLanguage.preparePrimitiveEntryPoint('unconstrainedQualifiedEntityList')\n\tprivate static parseUnconstrainedQualifiedSingleEntity = QueryLanguage.preparePrimitiveEntryPoint('unconstrainedQualifiedEntityList')\n\tprivate static parseQualifiedEntityList = QueryLanguage.preparePrimitiveEntryPoint('qualifiedEntityList')\n\tprivate static parseQualifiedFieldList = QueryLanguage.preparePrimitiveEntryPoint('qualifiedFieldList')\n\tprivate static parseQualifiedSingleEntity = QueryLanguage.preparePrimitiveEntryPoint('qualifiedSingleEntity')\n\tprivate static parseRelativeEntityList = QueryLanguage.preparePrimitiveEntryPoint('relativeEntityList')\n\tprivate static parseRelativeSingleEntity = QueryLanguage.preparePrimitiveEntryPoint('relativeSingleEntity')\n\tprivate static parseRelativeSingleField = QueryLanguage.preparePrimitiveEntryPoint('relativeSingleField')\n\n\tpublic static desugarUniqueWhere = QueryLanguage.preparePrimitiveEntryPointWithFallback('uniqueWhere')\n\tpublic static desugarFilter = QueryLanguage.preparePrimitiveEntryPointWithFallback('filter')\n\tpublic static desugarOrderBy = QueryLanguage.preparePrimitiveEntryPointWithFallback('orderBy')\n\tpublic static desugarTaggedMap = QueryLanguage.preparePrimitiveEntryPointWithFallback('taggedMap')\n\n\n\tpublic static desugarSetOnCreate(setOnCreate: SugaredSetOnCreate, environment: Environment): UniqueWhere {\n\t\tif (Array.isArray(setOnCreate)) {\n\t\t\tconst whereList = setOnCreate.map(connection => this.desugarUniqueWhere(connection, environment))\n\t\t\treturn whereList.reduce(\n\t\t\t\t(accumulator, uniqueWhere) => TreeParameterMerger.mergeSetOnCreate(accumulator, uniqueWhere)!,\n\t\t\t)\n\t\t}\n\t\tif (typeof setOnCreate === 'string') {\n\t\t\treturn this.desugarUniqueWhere(setOnCreate, environment)\n\t\t}\n\t\treturn setOnCreate\n\t}\n\n\tpublic static desugarEventListener<F extends Function>(listener: F | Set<F>): Set<F>\n\tpublic static desugarEventListener<F extends Function>(listener: F | Set<F> | undefined): Set<F> | undefined\n\tpublic static desugarEventListener<F extends Function>(listener: F | Set<F> | undefined): Set<F> | undefined {\n\t\tif (typeof listener === 'function') {\n\t\t\treturn new Set([listener])\n\t\t}\n\t\treturn listener\n\t}\n\n\tprivate static desugarSingleEntityEventListeners(\n\t\tunsugarable: UnsugarableSingleEntityEventListeners,\n\t): EntityEventListenerStore | undefined {\n\t\tif (\n\t\t\tunsugarable.onBeforePersist === undefined &&\n\t\t\tunsugarable.onBeforeUpdate === undefined &&\n\t\t\tunsugarable.onInitialize === undefined &&\n\t\t\tunsugarable.onPersistError === undefined &&\n\t\t\tunsugarable.onPersistSuccess === undefined &&\n\t\t\tunsugarable.onUpdate === undefined\n\t\t) {\n\t\t\treturn undefined\n\t\t}\n\n\t\tconst store: EntityEventListenerStore = new EventListenersStore()\n\n\t\tif (unsugarable.onConnectionUpdate) {\n\t\t\tfor (const fieldName in unsugarable.onConnectionUpdate) {\n\t\t\t\tconst listener = this.desugarEventListener(unsugarable.onConnectionUpdate[fieldName])\n\t\t\t\tstore.set({ type: 'connectionUpdate', key: fieldName }, listener)\n\t\t\t}\n\t\t}\n\n\t\tconst beforePersist = this.desugarEventListener(unsugarable.onBeforePersist)\n\t\tconst beforeUpdate = this.desugarEventListener(unsugarable.onBeforeUpdate)\n\t\tconst initialize = this.desugarEventListener(unsugarable.onInitialize)\n\t\tconst persistError = this.desugarEventListener(unsugarable.onPersistError)\n\t\tconst persistSuccess = this.desugarEventListener(unsugarable.onPersistSuccess)\n\t\tconst update = this.desugarEventListener(unsugarable.onUpdate)\n\n\t\tif (beforePersist) {\n\t\t\tstore.set({ type: 'beforePersist' }, beforePersist)\n\t\t}\n\t\tif (beforeUpdate) {\n\t\t\tstore.set({ type: 'beforeUpdate' }, beforeUpdate)\n\t\t}\n\t\tif (initialize) {\n\t\t\tstore.set({ type: 'initialize' }, initialize)\n\t\t}\n\t\tif (persistError) {\n\t\t\tstore.set({ type: 'persistError' }, persistError)\n\t\t}\n\t\tif (persistSuccess) {\n\t\t\tstore.set({ type: 'persistSuccess' }, persistSuccess)\n\t\t}\n\t\tif (update) {\n\t\t\tstore.set({ type: 'update' }, update)\n\t\t}\n\n\t\treturn store\n\t}\n\n\tprivate static desugarEntityListEventListeners(unsugarable: UnsugarableEntityListEventListeners):\n\t\t| {\n\t\t\teventListeners: EntityListEventListenerStore | undefined\n\t\t\tchildEventListeners: EntityEventListenerStore | undefined\n\t\t }\n\t\t| undefined {\n\t\tif (\n\t\t\tunsugarable.onBeforePersist === undefined &&\n\t\t\tunsugarable.onBeforeUpdate === undefined &&\n\t\t\tunsugarable.onChildBeforeUpdate === undefined &&\n\t\t\tunsugarable.onChildInitialize === undefined &&\n\t\t\tunsugarable.onChildUpdate === undefined &&\n\t\t\tunsugarable.onInitialize === undefined &&\n\t\t\tunsugarable.onPersistError === undefined &&\n\t\t\tunsugarable.onPersistSuccess === undefined &&\n\t\t\tunsugarable.onUpdate === undefined\n\t\t) {\n\t\t\treturn undefined\n\t\t}\n\n\t\tconst eventListeners: EntityListEventListenerStore = new EventListenersStore()\n\n\t\tconst beforePersist = this.desugarEventListener(unsugarable.onBeforePersist)\n\t\tconst beforeUpdate = this.desugarEventListener(unsugarable.onBeforeUpdate)\n\t\tconst initialize = this.desugarEventListener(unsugarable.onInitialize)\n\t\tconst persistError = this.desugarEventListener(unsugarable.onPersistError)\n\t\tconst persistSuccess = this.desugarEventListener(unsugarable.onPersistSuccess)\n\t\tconst update = this.desugarEventListener(unsugarable.onUpdate)\n\n\t\tif (beforePersist) {\n\t\t\teventListeners.set({ type: 'beforePersist' }, beforePersist)\n\t\t}\n\t\tif (beforeUpdate) {\n\t\t\teventListeners.set({ type: 'beforeUpdate' }, beforeUpdate)\n\t\t}\n\t\tif (initialize) {\n\t\t\teventListeners.set({ type: 'initialize' }, initialize)\n\t\t}\n\t\tif (persistError) {\n\t\t\teventListeners.set({ type: 'persistError' }, persistError)\n\t\t}\n\t\tif (persistSuccess) {\n\t\t\teventListeners.set({ type: 'persistSuccess' }, persistSuccess)\n\t\t}\n\t\tif (update) {\n\t\t\teventListeners.set({ type: 'update' }, update)\n\t\t}\n\n\t\tconst childEventListeners: EntityEventListenerStore = new EventListenersStore()\n\n\t\tconst childBeforeUpdate = this.desugarEventListener(unsugarable.onChildBeforeUpdate)\n\t\tconst childInitialize = this.desugarEventListener(unsugarable.onChildInitialize)\n\t\tconst childUpdate = this.desugarEventListener(unsugarable.onChildUpdate)\n\n\t\tif (childBeforeUpdate) {\n\t\t\tchildEventListeners.set({ type: 'beforeUpdate' }, childBeforeUpdate)\n\t\t}\n\t\tif (childInitialize) {\n\t\t\tchildEventListeners.set({ type: 'initialize' }, childInitialize)\n\t\t}\n\t\tif (childUpdate) {\n\t\t\tchildEventListeners.set({ type: 'update' }, childUpdate)\n\t\t}\n\n\t\treturn {\n\t\t\teventListeners,\n\t\t\tchildEventListeners,\n\t\t}\n\t}\n\n\tprivate static desugarFieldEventListeners(\n\t\tunsugarable: UnsugarableFieldEventListeners,\n\t): FieldEventListenerStore | undefined {\n\t\tif (unsugarable.onBeforeUpdate === undefined && unsugarable.onUpdate === undefined) {\n\t\t\treturn undefined\n\t\t}\n\n\t\tconst store: FieldEventListenerStore = new EventListenersStore()\n\n\t\tconst beforeUpdate = this.desugarEventListener(unsugarable.onBeforeUpdate)\n\t\tconst update = this.desugarEventListener(unsugarable.onUpdate)\n\n\t\tif (beforeUpdate) {\n\t\t\tstore.set({ type: 'beforeUpdate' }, beforeUpdate)\n\t\t}\n\t\tif (update) {\n\t\t\tstore.set({ type: 'update' }, update)\n\t\t}\n\n\t\treturn store\n\t}\n\n\tprivate static desugarSubTreeAlias(alias: Alias | Set<Alias> | undefined): Set<Alias> | undefined {\n\t\tif (alias === undefined) {\n\t\t\treturn undefined\n\t\t}\n\t\tif (alias instanceof Set) {\n\t\t\treturn alias\n\t\t}\n\t\treturn new Set<Alias>().add(alias)\n\t}\n\n\tprivate static desugarHasOneRelation(\n\t\tsugarable: SugarableHasOneRelation,\n\t\tunsugarable: Omit<SugaredRelativeSingleEntity, 'field'>,\n\t\tenvironment: Environment,\n\t): HasOneRelation {\n\t\treturn {\n\t\t\tfield: sugarable.field,\n\t\t\tfilter: sugarable.filter ? this.desugarFilter(sugarable.filter, environment) : undefined,\n\t\t\texpectedMutation: unsugarable.expectedMutation ?? RelationDefaults.expectedMutation,\n\t\t\treducedBy: sugarable.reducedBy ? this.desugarUniqueWhere(sugarable.reducedBy, environment) : undefined,\n\t\t\tsetOnCreate: unsugarable.setOnCreate ? this.desugarSetOnCreate(unsugarable.setOnCreate, environment) : undefined,\n\t\t\tisNonbearing: unsugarable.isNonbearing ?? EntityCreationParametersDefaults.isNonbearing,\n\t\t\t// forceCreation: unsugarable.forceCreation ?? EntityCreationParametersDefaults.forceCreation,\n\t\t\teventListeners: this.desugarSingleEntityEventListeners(unsugarable),\n\t\t}\n\t}\n\n\tprivate static augmentDesugaredHasOneRelationPath(\n\t\tpath: (ParsedHasOneRelation | string)[],\n\t\tunsugarable: Omit<SugaredRelativeSingleEntity, 'field'>,\n\t\tenvironment: Environment,\n\t): HasOneRelation[] {\n\t\treturn path.map((desugaredHasOneRelation, i) =>\n\t\t\t// Unsugarable applies to the last\n\t\t\tthis.desugarHasOneRelation(\n\t\t\t\ttypeof desugaredHasOneRelation === 'string' ? { field: desugaredHasOneRelation } : desugaredHasOneRelation,\n\t\t\t\ti === path.length - 1 ? unsugarable : {},\n\t\t\t\tenvironment,\n\t\t\t),\n\t\t)\n\t}\n\n\tprivate static augmentDesugaredHasManyRelation(\n\t\trelation: ParsedHasManyRelation,\n\t\tunsugarable: Omit<SugaredRelativeEntityList, 'field'>,\n\t\tenvironment: Environment,\n\t): HasManyRelation {\n\t\tconst eventListeners = this.desugarEntityListEventListeners(unsugarable)\n\t\treturn {\n\t\t\tfield: relation.field,\n\t\t\tfilter: relation.filter,\n\t\t\texpectedMutation: unsugarable.expectedMutation ?? RelationDefaults.expectedMutation,\n\t\t\tisNonbearing: unsugarable.isNonbearing ?? EntityCreationParametersDefaults.isNonbearing,\n\t\t\t// forceCreation: unsugarable.forceCreation ?? EntityCreationParametersDefaults.forceCreation,\n\t\t\tinitialEntityCount: unsugarable.initialEntityCount ?? EntityListPreferencesDefaults.initialEntityCount,\n\t\t\tsetOnCreate: unsugarable.setOnCreate ? this.desugarSetOnCreate(unsugarable.setOnCreate, environment) : undefined,\n\t\t\torderBy: unsugarable.orderBy ? this.desugarOrderBy(unsugarable.orderBy, environment) : undefined,\n\t\t\toffset: unsugarable.offset,\n\t\t\tlimit: unsugarable.limit,\n\t\t\tchildEventListeners: eventListeners?.childEventListeners,\n\t\t\teventListeners: eventListeners?.eventListeners,\n\t\t}\n\t}\n\n\tprivate static desugarHasOneRelationPath(\n\t\tinput: SugarableHasOneRelation[] | SugarableHasOneRelation | undefined,\n\t\tlastRelation: Omit<SugaredRelativeSingleEntity, 'field'>,\n\t\tenvironment: Environment,\n\t): HasOneRelation[] {\n\t\tif (input === undefined) {\n\t\t\tinput = []\n\t\t} else if (!Array.isArray(input)) {\n\t\t\tinput = [input]\n\t\t}\n\n\t\tconst relationPath: HasOneRelation[] = []\n\n\t\tconst cappedLength = input.length - 1\n\t\tlet i = 0\n\t\tfor (; i < cappedLength; i++) {\n\t\t\t// Deliberately leaving out the last element\n\t\t\tconst pathNode = input[i]\n\n\t\t\trelationPath.push(this.desugarHasOneRelation(pathNode, {}, environment))\n\t\t}\n\t\tif (i in input) {\n\t\t\trelationPath.push(this.desugarHasOneRelation(input[i], lastRelation, environment))\n\t\t}\n\n\t\treturn relationPath\n\t}\n\n\tprivate static desugarHasManyRelation(\n\t\tsugarablePart: SugarableHasManyRelation,\n\t\tunsugarablePart: Omit<SugaredRelativeEntityList, 'field'>,\n\t\tenvironment: Environment,\n\t): HasManyRelation {\n\t\tconst eventListeners = this.desugarEntityListEventListeners(unsugarablePart)\n\t\treturn {\n\n\t\t\tfilter: sugarablePart.filter ? this.desugarFilter(sugarablePart.filter, environment) : undefined,\n\t\t\tlimit: unsugarablePart.limit,\n\t\t\toffset: unsugarablePart.offset,\n\t\t\torderBy: unsugarablePart.orderBy ? this.desugarOrderBy(unsugarablePart.orderBy, environment) : undefined,\n\t\t\tinitialEntityCount: unsugarablePart.initialEntityCount ?? EntityListPreferencesDefaults.initialEntityCount,\n\t\t\texpectedMutation: unsugarablePart.expectedMutation ?? RelationDefaults.expectedMutation,\n\t\t\tsetOnCreate: unsugarablePart.setOnCreate\n\t\t\t\t? this.desugarSetOnCreate(unsugarablePart.setOnCreate, environment)\n\t\t\t\t: undefined,\n\t\t\tfield: sugarablePart.field,\n\t\t\tisNonbearing: unsugarablePart.isNonbearing ?? EntityCreationParametersDefaults.isNonbearing,\n\t\t\t// forceCreation: unsugarablePart.forceCreation ?? EntityCreationParametersDefaults.forceCreation,\n\t\t\tchildEventListeners: eventListeners?.childEventListeners,\n\t\t\teventListeners: eventListeners?.eventListeners,\n\t\t}\n\t}\n\n\tpublic static desugarUnconstrainedQualifiedEntityList(\n\t\t{ entities, ...unsugarableEntityList }: SugaredUnconstrainedQualifiedEntityList,\n\t\tenvironment: Environment,\n\t): UnconstrainedQualifiedEntityList {\n\t\tlet hasOneRelationPath: HasOneRelation[]\n\t\tlet entityName: EntityName\n\n\t\tif (typeof entities === 'string') {\n\t\t\tconst parsed = this.parseUnconstrainedQualifiedEntityList(entities, environment)\n\t\t\tentityName = parsed.entityName\n\t\t\thasOneRelationPath = this.augmentDesugaredHasOneRelationPath(\n\t\t\t\tparsed.hasOneRelationPath,\n\t\t\t\temptyObject,\n\t\t\t\tenvironment,\n\t\t\t)\n\t\t} else {\n\t\t\tentityName = entities.entityName\n\t\t\thasOneRelationPath = this.desugarHasOneRelationPath(entities.hasOneRelationPath, emptyObject, environment)\n\t\t}\n\n\t\tconst eventListeners = this.desugarEntityListEventListeners(unsugarableEntityList)\n\n\t\treturn {\n\t\t\tisCreating: true,\n\t\t\tisUnpersisted: unsugarableEntityList.isUnpersisted ?? false,\n\t\t\tisNonbearing: unsugarableEntityList.isNonbearing ?? EntityCreationParametersDefaults.isNonbearing,\n\t\t\t// forceCreation: unsugarableEntityList.forceCreation ?? EntityCreationParametersDefaults.forceCreation,\n\t\t\tsetOnCreate: unsugarableEntityList.setOnCreate\n\t\t\t\t? this.desugarSetOnCreate(unsugarableEntityList.setOnCreate, environment)\n\t\t\t\t: undefined,\n\t\t\texpectedMutation: unsugarableEntityList.expectedMutation ?? QualifiedEntityParametersDefaults.expectedMutation,\n\t\t\tchildEventListeners: eventListeners?.childEventListeners,\n\t\t\teventListeners: eventListeners?.eventListeners,\n\t\t\tinitialEntityCount: unsugarableEntityList.initialEntityCount ?? EntityListPreferencesDefaults.initialEntityCount,\n\t\t\talias: this.desugarSubTreeAlias(unsugarableEntityList.alias),\n\t\t\tentityName,\n\t\t\thasOneRelationPath,\n\t\t}\n\t}\n\n\tpublic static desugarUnconstrainedQualifiedSingleEntity(\n\t\t{ entity, ...unsugarableSingleEntity }: SugaredUnconstrainedQualifiedSingleEntity,\n\t\tenvironment: Environment,\n\t): UnconstrainedQualifiedSingleEntity {\n\t\tlet hasOneRelationPath: HasOneRelation[]\n\t\tlet entityName: EntityName\n\n\t\tif (typeof entity === 'string') {\n\t\t\tconst parsed = this.parseUnconstrainedQualifiedSingleEntity(entity, environment)\n\t\t\tentityName = parsed.entityName\n\t\t\thasOneRelationPath = this.augmentDesugaredHasOneRelationPath(\n\t\t\t\tparsed.hasOneRelationPath,\n\t\t\t\tunsugarableSingleEntity,\n\t\t\t\tenvironment,\n\t\t\t)\n\t\t} else {\n\t\t\tentityName = entity.entityName\n\t\t\thasOneRelationPath = this.desugarHasOneRelationPath(\n\t\t\t\tentity.hasOneRelationPath,\n\t\t\t\tunsugarableSingleEntity,\n\t\t\t\tenvironment,\n\t\t\t)\n\t\t}\n\n\t\treturn {\n\t\t\tisCreating: true,\n\t\t\tisUnpersisted: unsugarableSingleEntity.isUnpersisted ?? false,\n\t\t\tisNonbearing: unsugarableSingleEntity.isNonbearing ?? EntityCreationParametersDefaults.isNonbearing,\n\t\t\t// forceCreation: unsugarableSingleEntity.forceCreation ?? EntityCreationParametersDefaults.forceCreation,\n\t\t\tsetOnCreate: unsugarableSingleEntity.setOnCreate\n\t\t\t\t? this.desugarSetOnCreate(unsugarableSingleEntity.setOnCreate, environment)\n\t\t\t\t: undefined,\n\t\t\texpectedMutation: unsugarableSingleEntity.expectedMutation ?? QualifiedEntityParametersDefaults.expectedMutation,\n\t\t\teventListeners: this.desugarSingleEntityEventListeners(unsugarableSingleEntity),\n\t\t\talias: this.desugarSubTreeAlias(unsugarableSingleEntity.alias),\n\t\t\tentityName,\n\t\t\thasOneRelationPath,\n\t\t}\n\t}\n\n\tpublic static desugarQualifiedEntityList(\n\t\t{ entities, ...unsugarableEntityList }: SugaredQualifiedEntityList,\n\t\tenvironment: Environment,\n\t): QualifiedEntityList {\n\t\tlet entityName: EntityName\n\t\tlet hasOneRelationPath: HasOneRelation[]\n\n\t\tlet filter: SugaredFilter | undefined\n\n\t\tif (typeof entities === 'string') {\n\t\t\tconst parsed = this.parseQualifiedEntityList(entities, environment)\n\n\t\t\tentityName = parsed.entityName\n\t\t\tfilter = parsed.filter\n\t\t\thasOneRelationPath = this.augmentDesugaredHasOneRelationPath(\n\t\t\t\tparsed.hasOneRelationPath,\n\t\t\t\temptyObject,\n\t\t\t\tenvironment,\n\t\t\t)\n\t\t} else {\n\t\t\tentityName = entities.entityName\n\t\t\tfilter = entities.filter\n\t\t\thasOneRelationPath = this.desugarHasOneRelationPath(entities.hasOneRelationPath, emptyObject, environment)\n\t\t}\n\n\t\tconst eventListeners = this.desugarEntityListEventListeners(unsugarableEntityList)\n\n\t\treturn {\n\t\t\tentityName,\n\t\t\thasOneRelationPath,\n\t\t\tfilter: filter ? this.desugarFilter(filter, environment) : undefined,\n\t\t\tlimit: unsugarableEntityList.limit,\n\t\t\toffset: unsugarableEntityList.offset,\n\t\t\torderBy: unsugarableEntityList.orderBy ? this.desugarOrderBy(unsugarableEntityList.orderBy, environment) : undefined,\n\t\t\tinitialEntityCount: unsugarableEntityList.initialEntityCount ?? EntityListPreferencesDefaults.initialEntityCount,\n\t\t\talias: this.desugarSubTreeAlias(unsugarableEntityList.alias),\n\t\t\tisCreating: false,\n\t\t\tisNonbearing: unsugarableEntityList.isNonbearing ?? EntityCreationParametersDefaults.isNonbearing,\n\t\t\t// forceCreation: unsugarableEntityList.forceCreation ?? EntityCreationParametersDefaults.forceCreation,\n\t\t\tsetOnCreate: unsugarableEntityList.setOnCreate\n\t\t\t\t? this.desugarSetOnCreate(unsugarableEntityList.setOnCreate, environment)\n\t\t\t\t: undefined,\n\t\t\texpectedMutation: unsugarableEntityList.expectedMutation ?? QualifiedEntityParametersDefaults.expectedMutation,\n\t\t\tchildEventListeners: eventListeners?.childEventListeners,\n\t\t\teventListeners: eventListeners?.eventListeners,\n\t\t}\n\t}\n\n\tpublic static desugarQualifiedFieldList(\n\t\t{ fields, ...unsugarableFieldList }: SugaredQualifiedFieldList,\n\t\tenvironment: Environment,\n\t): QualifiedFieldList {\n\t\tlet field: FieldName\n\t\tlet entityName: EntityName\n\t\tlet filter: SugaredFilter | undefined\n\t\tlet hasOneRelationPath: HasOneRelation[]\n\n\t\tif (typeof fields === 'string') {\n\t\t\tconst parsed = this.parseQualifiedFieldList(fields, environment)\n\n\t\t\tfield = parsed.field\n\t\t\tentityName = parsed.entityName\n\t\t\tfilter = parsed.filter\n\t\t\thasOneRelationPath = this.augmentDesugaredHasOneRelationPath(\n\t\t\t\tparsed.hasOneRelationPath,\n\t\t\t\temptyObject,\n\t\t\t\tenvironment,\n\t\t\t)\n\t\t} else {\n\t\t\tfield = fields.field\n\t\t\tentityName = fields.entityName\n\t\t\tfilter = fields.filter\n\t\t\thasOneRelationPath = this.desugarHasOneRelationPath(fields.hasOneRelationPath, emptyObject, environment)\n\t\t}\n\n\t\treturn {\n\t\t\tfield,\n\t\t\tentityName,\n\t\t\thasOneRelationPath,\n\t\t\talias: this.desugarSubTreeAlias(unsugarableFieldList.alias),\n\t\t\tisNonbearing: unsugarableFieldList.isNonbearing ?? EntityCreationParametersDefaults.isNonbearing,\n\t\t\t// forceCreation: unsugarableFieldList.forceCreation ?? EntityCreationParametersDefaults.forceCreation,\n\t\t\tdefaultValue:\n\t\t\t\tunsugarableFieldList.defaultValue !== undefined\n\t\t\t\t\t? VariableInputTransformer.transformValue(unsugarableFieldList.defaultValue, environment)\n\t\t\t\t\t: undefined,\n\t\t\texpectedMutation: unsugarableFieldList.expectedMutation ?? QualifiedEntityParametersDefaults.expectedMutation,\n\t\t\teventListeners: this.desugarFieldEventListeners(unsugarableFieldList),\n\t\t\tfilter: filter ? this.desugarFilter(filter, environment) : undefined,\n\t\t\tlimit: unsugarableFieldList.limit,\n\t\t\toffset: unsugarableFieldList.offset,\n\t\t\torderBy: unsugarableFieldList.orderBy ? this.desugarOrderBy(unsugarableFieldList.orderBy, environment) : undefined,\n\t\t\tinitialEntityCount: unsugarableFieldList.initialEntityCount ?? EntityListPreferencesDefaults.initialEntityCount,\n\t\t}\n\t}\n\n\tpublic static desugarQualifiedSingleEntity(\n\t\t{ entity, ...unsugarableSingleEntity }: SugaredQualifiedSingleEntity,\n\t\tenvironment: Environment,\n\t): QualifiedSingleEntity {\n\t\tlet entityName: EntityName\n\t\tlet where: UniqueWhere\n\t\tlet filter: Filter | undefined\n\t\tlet hasOneRelationPath: HasOneRelation[]\n\n\t\tif (typeof entity === 'string') {\n\t\t\tconst parsed = this.parseQualifiedSingleEntity(entity, environment)\n\n\t\t\tentityName = parsed.entityName\n\t\t\twhere = parsed.where\n\t\t\tfilter = parsed.filter\n\t\t\thasOneRelationPath = this.augmentDesugaredHasOneRelationPath(\n\t\t\t\tparsed.hasOneRelationPath,\n\t\t\t\tunsugarableSingleEntity,\n\t\t\t\tenvironment,\n\t\t\t)\n\t\t} else {\n\t\t\tentityName = entity.entityName\n\t\t\twhere = this.desugarUniqueWhere(entity.where, environment)\n\t\t\tfilter = entity.filter ? this.desugarFilter(entity.filter, environment) : undefined\n\t\t\thasOneRelationPath = this.desugarHasOneRelationPath(\n\t\t\t\tentity.hasOneRelationPath,\n\t\t\t\tunsugarableSingleEntity,\n\t\t\t\tenvironment,\n\t\t\t)\n\t\t}\n\n\t\t// const forceCreation: boolean =\n\t\t// \tunsugarableSingleEntity.forceCreation !== undefined\n\t\t// \t\t? unsugarableSingleEntity.forceCreation !== undefined\n\t\t// \t\t: EntityCreationParametersDefaults.forceCreation\n\t\tlet setOnCreate: UniqueWhere | undefined =\n\t\t\tunsugarableSingleEntity.setOnCreate !== undefined\n\t\t\t\t? this.desugarSetOnCreate(unsugarableSingleEntity.setOnCreate, environment)\n\t\t\t\t: undefined\n\n\n\t\tconst isNonbearing: boolean =\n\t\t\tunsugarableSingleEntity.isNonbearing !== undefined\n\t\t\t\t? unsugarableSingleEntity.isNonbearing\n\t\t\t\t: EntityCreationParametersDefaults.isNonbearing\n\t\tconst eventListeners = this.desugarSingleEntityEventListeners(unsugarableSingleEntity)\n\t\tconst expectedMutation =\n\t\t\tunsugarableSingleEntity.expectedMutation ?? QualifiedEntityParametersDefaults.expectedMutation\n\t\tconst alias = this.desugarSubTreeAlias(unsugarableSingleEntity.alias)\n\n\t\treturn {\n\t\t\talias,\n\t\t\tentityName,\n\t\t\tisCreating: false,\n\t\t\twhere,\n\t\t\tfilter,\n\t\t\thasOneRelationPath,\n\t\t\t// forceCreation,\n\t\t\tsetOnCreate,\n\t\t\tisNonbearing,\n\t\t\teventListeners,\n\t\t\texpectedMutation,\n\t\t}\n\t}\n\n\tpublic static desugarParentEntityParameters(\n\t\tparentEntity: SugaredParentEntityParameters,\n\t\tenvironment: Environment,\n\t): ParentEntityParameters {\n\t\treturn {\n\t\t\teventListeners: this.desugarSingleEntityEventListeners(parentEntity),\n\t\t}\n\t}\n\n\tpublic static desugarRelativeSingleEntity(\n\t\tsugaredRelativeSingleEntity: string | SugaredRelativeSingleEntity,\n\t\tenvironment: Environment,\n\t): RelativeSingleEntity {\n\t\tlet field: SugaredRelativeSingleEntity['field']\n\t\tlet unsugarableEntity: Omit<SugaredRelativeSingleEntity, 'field'>\n\t\tif (typeof sugaredRelativeSingleEntity === 'string') {\n\t\t\tfield = sugaredRelativeSingleEntity\n\t\t\tunsugarableEntity = {}\n\t\t} else {\n\t\t\tfield = sugaredRelativeSingleEntity.field\n\t\t\tunsugarableEntity = sugaredRelativeSingleEntity\n\t\t}\n\n\t\tlet hasOneRelationPath: HasOneRelation[]\n\t\tif (typeof field === 'string') {\n\t\t\t// fast path\n\t\t\tif (field.match(TokenRegExps.dotSeparatedIdentifier)) {\n\t\t\t\tconst parts = field.split('.')\n\t\t\t\thasOneRelationPath = this.augmentDesugaredHasOneRelationPath(parts, unsugarableEntity, environment)\n\t\t\t} else {\n\t\t\t\tconst parsed = this.parseRelativeSingleEntity(field, environment)\n\t\t\t\thasOneRelationPath = this.augmentDesugaredHasOneRelationPath(\n\t\t\t\t\tparsed.hasOneRelationPath,\n\t\t\t\t\tunsugarableEntity,\n\t\t\t\t\tenvironment,\n\t\t\t\t)\n\t\t\t}\n\n\t\t} else {\n\t\t\thasOneRelationPath = this.desugarHasOneRelationPath(field, unsugarableEntity, environment)\n\t\t}\n\n\t\treturn {\n\t\t\thasOneRelationPath,\n\t\t}\n\t}\n\n\tpublic static desugarRelativeSingleField(\n\t\tsugaredRelativeSingleField: string | SugaredRelativeSingleField,\n\t\tenvironment: Environment,\n\t): RelativeSingleField {\n\t\tlet field: SugaredRelativeSingleField['field']\n\t\tlet unsugarableField: Omit<SugaredRelativeSingleField, 'field'>\n\t\tif (typeof sugaredRelativeSingleField === 'string') {\n\t\t\tfield = sugaredRelativeSingleField\n\t\t\tunsugarableField = {}\n\t\t} else {\n\t\t\tfield = sugaredRelativeSingleField.field\n\t\t\tunsugarableField = sugaredRelativeSingleField\n\t\t}\n\n\t\tlet hasOneRelationPath: HasOneRelation[]\n\t\tlet fieldName: FieldName\n\t\tif (typeof field === 'string') {\n\t\t\t// fast path\n\t\t\tif (field.match(TokenRegExps.dotSeparatedIdentifier)) {\n\t\t\t\tconst parts = field.split('.')\n\t\t\t\tfieldName = parts.pop()!\n\t\t\t\thasOneRelationPath = this.augmentDesugaredHasOneRelationPath(parts, {}, environment)\n\t\t\t} else {\n\t\t\t\tconst parsed = this.parseRelativeSingleField(field, environment)\n\t\t\t\thasOneRelationPath = this.augmentDesugaredHasOneRelationPath(parsed.hasOneRelationPath, {}, environment)\n\t\t\t\tfieldName = parsed.field\n\t\t\t}\n\n\t\t} else {\n\t\t\thasOneRelationPath = this.desugarHasOneRelationPath(field.hasOneRelationPath, {}, environment)\n\t\t\tfieldName = field.field\n\t\t}\n\n\t\treturn {\n\t\t\teventListeners: this.desugarFieldEventListeners(unsugarableField),\n\t\t\thasOneRelationPath,\n\t\t\tfield: fieldName,\n\t\t\tisNonbearing: unsugarableField.isNonbearing ?? LeafFieldDefaults.isNonbearing,\n\t\t\tdefaultValue:\n\t\t\t\tunsugarableField.defaultValue !== undefined\n\t\t\t\t\t? VariableInputTransformer.transformValue(unsugarableField.defaultValue, environment)\n\t\t\t\t\t: undefined,\n\t\t}\n\t}\n\n\tpublic static desugarRelativeEntityList(\n\t\tsugaredRelativeEntityList: string | SugaredRelativeEntityList,\n\t\tenvironment: Environment,\n\t): RelativeEntityList {\n\t\tlet field: SugaredRelativeEntityList['field']\n\t\tlet unsugarableEntityList: Omit<SugaredRelativeEntityList, 'field'>\n\n\t\tif (typeof sugaredRelativeEntityList === 'string') {\n\t\t\tfield = sugaredRelativeEntityList\n\t\t\tunsugarableEntityList = {}\n\t\t} else {\n\t\t\tfield = sugaredRelativeEntityList.field\n\t\t\tunsugarableEntityList = sugaredRelativeEntityList\n\t\t}\n\n\t\tlet hasOneRelationPath: HasOneRelation[]\n\t\tlet hasManyRelation: HasManyRelation\n\t\tif (typeof field === 'string') {\n\t\t\tconst parsed = this.parseRelativeEntityList(field, environment)\n\t\t\thasOneRelationPath = this.augmentDesugaredHasOneRelationPath(\n\t\t\t\tparsed.hasOneRelationPath,\n\t\t\t\temptyObject,\n\t\t\t\tenvironment,\n\t\t\t)\n\t\t\thasManyRelation = this.augmentDesugaredHasManyRelation(\n\t\t\t\tparsed.hasManyRelation,\n\t\t\t\tunsugarableEntityList,\n\t\t\t\tenvironment,\n\t\t\t)\n\t\t} else {\n\t\t\thasOneRelationPath = this.desugarHasOneRelationPath(field.hasOneRelationPath || [], emptyObject, environment)\n\t\t\thasManyRelation = this.desugarHasManyRelation(field.hasManyRelation, unsugarableEntityList, environment)\n\t\t}\n\n\t\treturn {\n\t\t\thasManyRelation,\n\t\t\thasOneRelationPath,\n\t\t}\n\t}\n}\n"],"names":["_QueryLanguage"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"QueryLanguage.js","sources":["../../../../../packages/binding-common/src/queryLanguage/QueryLanguage.ts"],"sourcesContent":["import type { Environment } from '../environment'\nimport {\n\tAlias,\n\tEntityCreationParametersDefaults,\n\tEntityEventListenerStore,\n\tEntityListEventListenerStore,\n\tEntityListPreferencesDefaults,\n\tEntityName,\n\tEventListenersStore,\n\tFieldEventListenerStore,\n\tFieldName,\n\tFilter,\n\tHasManyRelation,\n\tHasOneRelation,\n\tLeafFieldDefaults,\n\tParentEntityParameters,\n\tQualifiedEntityList,\n\tQualifiedEntityParametersDefaults,\n\tQualifiedFieldList,\n\tQualifiedSingleEntity,\n\tRelationDefaults,\n\tRelativeEntityList,\n\tRelativeSingleEntity,\n\tRelativeSingleField,\n\tSugarableHasManyRelation,\n\tSugarableHasOneRelation,\n\tSugaredFilter,\n\tSugaredParentEntityParameters,\n\tSugaredQualifiedEntityList,\n\tSugaredQualifiedFieldList,\n\tSugaredQualifiedSingleEntity,\n\tSugaredRelativeEntityList,\n\tSugaredRelativeSingleEntity,\n\tSugaredRelativeSingleField,\n\tSugaredSetOnCreate,\n\tSugaredUnconstrainedQualifiedEntityList,\n\tSugaredUnconstrainedQualifiedSingleEntity,\n\tUnconstrainedQualifiedEntityList,\n\tUnconstrainedQualifiedSingleEntity,\n\tUniqueWhere,\n\tUnsugarableEntityListEventListeners,\n\tUnsugarableFieldEventListeners,\n\tUnsugarableSingleEntityEventListeners,\n} from '../treeParameters'\nimport { Parser } from './Parser'\nimport { ParsedHasManyRelation, ParsedHasOneRelation } from './ParserResults'\nimport { TokenRegExps } from './tokenList'\nimport { TreeParameterMerger } from '../treeParameters/TreeParameterMerger'\nimport { VariableInputTransformer } from '../environment/VariableInputTransformer'\n\nconst emptyObject = Object.freeze({})\n\nexport class QueryLanguage {\n\n\tprivate static preparePrimitiveEntryPoint<Entry extends Parser.EntryPoint>(entryPoint: Entry) {\n\t\treturn (input: string, environment: Environment): Parser.ParserResult[Entry] =>\n\t\t\tParser.parseQueryLanguageExpression(input, entryPoint, environment)\n\t}\n\n\tprivate static preparePrimitiveEntryPointWithFallback<Entry extends Parser.EntryPoint>(entryPoint: Entry) {\n\t\treturn (input: string | Parser.ParserResult[Entry], environment: Environment): Parser.ParserResult[Entry] => {\n\t\t\tif (typeof input === 'string') {\n\t\t\t\treturn Parser.parseQueryLanguageExpression(input, entryPoint, environment)\n\t\t\t}\n\t\t\treturn input\n\t\t}\n\t}\n\n\tprivate static parseUnconstrainedQualifiedEntityList = QueryLanguage.preparePrimitiveEntryPoint('unconstrainedQualifiedEntityList')\n\tprivate static parseUnconstrainedQualifiedSingleEntity = QueryLanguage.preparePrimitiveEntryPoint('unconstrainedQualifiedEntityList')\n\tprivate static parseQualifiedEntityList = QueryLanguage.preparePrimitiveEntryPoint('qualifiedEntityList')\n\tprivate static parseQualifiedFieldList = QueryLanguage.preparePrimitiveEntryPoint('qualifiedFieldList')\n\tprivate static parseQualifiedSingleEntity = QueryLanguage.preparePrimitiveEntryPoint('qualifiedSingleEntity')\n\tprivate static parseRelativeEntityList = QueryLanguage.preparePrimitiveEntryPoint('relativeEntityList')\n\tprivate static parseRelativeSingleEntity = QueryLanguage.preparePrimitiveEntryPoint('relativeSingleEntity')\n\tprivate static parseRelativeSingleField = QueryLanguage.preparePrimitiveEntryPoint('relativeSingleField')\n\n\tpublic static desugarUniqueWhere = QueryLanguage.preparePrimitiveEntryPointWithFallback('uniqueWhere')\n\tpublic static desugarFilter = QueryLanguage.preparePrimitiveEntryPointWithFallback('filter')\n\tpublic static desugarOrderBy = QueryLanguage.preparePrimitiveEntryPointWithFallback('orderBy')\n\tpublic static desugarTaggedMap = QueryLanguage.preparePrimitiveEntryPointWithFallback('taggedMap')\n\n\n\tpublic static desugarSetOnCreate(setOnCreate: SugaredSetOnCreate, environment: Environment): UniqueWhere {\n\t\tif (Array.isArray(setOnCreate)) {\n\t\t\tconst whereList = setOnCreate.map(connection => this.desugarUniqueWhere(connection, environment))\n\t\t\treturn whereList.reduce(\n\t\t\t\t(accumulator, uniqueWhere) => TreeParameterMerger.mergeSetOnCreate(accumulator, uniqueWhere)!,\n\t\t\t)\n\t\t}\n\t\tif (typeof setOnCreate === 'string') {\n\t\t\treturn this.desugarUniqueWhere(setOnCreate, environment)\n\t\t}\n\t\treturn setOnCreate\n\t}\n\n\tpublic static desugarEventListener<F extends Function>(listener: F | Set<F>): Set<F>\n\tpublic static desugarEventListener<F extends Function>(listener: F | Set<F> | undefined): Set<F> | undefined\n\tpublic static desugarEventListener<F extends Function>(listener: F | Set<F> | undefined): Set<F> | undefined {\n\t\tif (typeof listener === 'function') {\n\t\t\treturn new Set([listener])\n\t\t}\n\t\treturn listener\n\t}\n\n\tprivate static desugarSingleEntityEventListeners(\n\t\tunsugarable: UnsugarableSingleEntityEventListeners,\n\t): EntityEventListenerStore | undefined {\n\t\tif (\n\t\t\tunsugarable.onBeforePersist === undefined &&\n\t\t\tunsugarable.onBeforeUpdate === undefined &&\n\t\t\tunsugarable.onInitialize === undefined &&\n\t\t\tunsugarable.onPersistError === undefined &&\n\t\t\tunsugarable.onPersistSuccess === undefined &&\n\t\t\tunsugarable.onUpdate === undefined\n\t\t) {\n\t\t\treturn undefined\n\t\t}\n\n\t\tconst store: EntityEventListenerStore = new EventListenersStore()\n\n\t\tif (unsugarable.onConnectionUpdate) {\n\t\t\tfor (const fieldName in unsugarable.onConnectionUpdate) {\n\t\t\t\tconst listener = this.desugarEventListener(unsugarable.onConnectionUpdate[fieldName])\n\t\t\t\tstore.set({ type: 'connectionUpdate', key: fieldName }, listener)\n\t\t\t}\n\t\t}\n\n\t\tconst beforePersist = this.desugarEventListener(unsugarable.onBeforePersist)\n\t\tconst beforeUpdate = this.desugarEventListener(unsugarable.onBeforeUpdate)\n\t\tconst initialize = this.desugarEventListener(unsugarable.onInitialize)\n\t\tconst persistError = this.desugarEventListener(unsugarable.onPersistError)\n\t\tconst persistSuccess = this.desugarEventListener(unsugarable.onPersistSuccess)\n\t\tconst update = this.desugarEventListener(unsugarable.onUpdate)\n\n\t\tif (beforePersist) {\n\t\t\tstore.set({ type: 'beforePersist' }, beforePersist)\n\t\t}\n\t\tif (beforeUpdate) {\n\t\t\tstore.set({ type: 'beforeUpdate' }, beforeUpdate)\n\t\t}\n\t\tif (initialize) {\n\t\t\tstore.set({ type: 'initialize' }, initialize)\n\t\t}\n\t\tif (persistError) {\n\t\t\tstore.set({ type: 'persistError' }, persistError)\n\t\t}\n\t\tif (persistSuccess) {\n\t\t\tstore.set({ type: 'persistSuccess' }, persistSuccess)\n\t\t}\n\t\tif (update) {\n\t\t\tstore.set({ type: 'update' }, update)\n\t\t}\n\n\t\treturn store\n\t}\n\n\tprivate static desugarEntityListEventListeners(unsugarable: UnsugarableEntityListEventListeners):\n\t\t| {\n\t\t\teventListeners: EntityListEventListenerStore | undefined\n\t\t\tchildEventListeners: EntityEventListenerStore | undefined\n\t\t }\n\t\t| undefined {\n\t\tif (\n\t\t\tunsugarable.onBeforePersist === undefined &&\n\t\t\tunsugarable.onBeforeUpdate === undefined &&\n\t\t\tunsugarable.onChildBeforeUpdate === undefined &&\n\t\t\tunsugarable.onChildInitialize === undefined &&\n\t\t\tunsugarable.onChildUpdate === undefined &&\n\t\t\tunsugarable.onInitialize === undefined &&\n\t\t\tunsugarable.onPersistError === undefined &&\n\t\t\tunsugarable.onPersistSuccess === undefined &&\n\t\t\tunsugarable.onUpdate === undefined\n\t\t) {\n\t\t\treturn undefined\n\t\t}\n\n\t\tconst eventListeners: EntityListEventListenerStore = new EventListenersStore()\n\n\t\tconst beforePersist = this.desugarEventListener(unsugarable.onBeforePersist)\n\t\tconst beforeUpdate = this.desugarEventListener(unsugarable.onBeforeUpdate)\n\t\tconst initialize = this.desugarEventListener(unsugarable.onInitialize)\n\t\tconst persistError = this.desugarEventListener(unsugarable.onPersistError)\n\t\tconst persistSuccess = this.desugarEventListener(unsugarable.onPersistSuccess)\n\t\tconst update = this.desugarEventListener(unsugarable.onUpdate)\n\n\t\tif (beforePersist) {\n\t\t\teventListeners.set({ type: 'beforePersist' }, beforePersist)\n\t\t}\n\t\tif (beforeUpdate) {\n\t\t\teventListeners.set({ type: 'beforeUpdate' }, beforeUpdate)\n\t\t}\n\t\tif (initialize) {\n\t\t\teventListeners.set({ type: 'initialize' }, initialize)\n\t\t}\n\t\tif (persistError) {\n\t\t\teventListeners.set({ type: 'persistError' }, persistError)\n\t\t}\n\t\tif (persistSuccess) {\n\t\t\teventListeners.set({ type: 'persistSuccess' }, persistSuccess)\n\t\t}\n\t\tif (update) {\n\t\t\teventListeners.set({ type: 'update' }, update)\n\t\t}\n\n\t\tconst childEventListeners: EntityEventListenerStore = new EventListenersStore()\n\n\t\tconst childBeforeUpdate = this.desugarEventListener(unsugarable.onChildBeforeUpdate)\n\t\tconst childInitialize = this.desugarEventListener(unsugarable.onChildInitialize)\n\t\tconst childUpdate = this.desugarEventListener(unsugarable.onChildUpdate)\n\n\t\tif (childBeforeUpdate) {\n\t\t\tchildEventListeners.set({ type: 'beforeUpdate' }, childBeforeUpdate)\n\t\t}\n\t\tif (childInitialize) {\n\t\t\tchildEventListeners.set({ type: 'initialize' }, childInitialize)\n\t\t}\n\t\tif (childUpdate) {\n\t\t\tchildEventListeners.set({ type: 'update' }, childUpdate)\n\t\t}\n\n\t\treturn {\n\t\t\teventListeners,\n\t\t\tchildEventListeners,\n\t\t}\n\t}\n\n\tprivate static desugarFieldEventListeners(\n\t\tunsugarable: UnsugarableFieldEventListeners,\n\t): FieldEventListenerStore | undefined {\n\t\tif (unsugarable.onBeforeUpdate === undefined && unsugarable.onUpdate === undefined) {\n\t\t\treturn undefined\n\t\t}\n\n\t\tconst store: FieldEventListenerStore = new EventListenersStore()\n\n\t\tconst beforeUpdate = this.desugarEventListener(unsugarable.onBeforeUpdate)\n\t\tconst update = this.desugarEventListener(unsugarable.onUpdate)\n\n\t\tif (beforeUpdate) {\n\t\t\tstore.set({ type: 'beforeUpdate' }, beforeUpdate)\n\t\t}\n\t\tif (update) {\n\t\t\tstore.set({ type: 'update' }, update)\n\t\t}\n\n\t\treturn store\n\t}\n\n\tprivate static desugarSubTreeAlias(alias: Alias | Set<Alias> | undefined): Set<Alias> | undefined {\n\t\tif (alias === undefined) {\n\t\t\treturn undefined\n\t\t}\n\t\tif (alias instanceof Set) {\n\t\t\treturn alias\n\t\t}\n\t\treturn new Set<Alias>().add(alias)\n\t}\n\n\tprivate static desugarHasOneRelation(\n\t\tsugarable: SugarableHasOneRelation,\n\t\tunsugarable: Omit<SugaredRelativeSingleEntity, 'field'>,\n\t\tenvironment: Environment,\n\t): HasOneRelation {\n\t\treturn {\n\t\t\tfield: sugarable.field,\n\t\t\tfilter: sugarable.filter ? this.desugarFilter(sugarable.filter, environment) : undefined,\n\t\t\texpectedMutation: unsugarable.expectedMutation ?? RelationDefaults.expectedMutation,\n\t\t\treducedBy: sugarable.reducedBy ? this.desugarUniqueWhere(sugarable.reducedBy, environment) : undefined,\n\t\t\tsetOnCreate: unsugarable.setOnCreate ? this.desugarSetOnCreate(unsugarable.setOnCreate, environment) : undefined,\n\t\t\tisNonbearing: unsugarable.isNonbearing ?? EntityCreationParametersDefaults.isNonbearing,\n\t\t\tmeta: unsugarable.withMeta ?? [],\n\t\t\t// forceCreation: unsugarable.forceCreation ?? EntityCreationParametersDefaults.forceCreation,\n\t\t\teventListeners: this.desugarSingleEntityEventListeners(unsugarable),\n\t\t}\n\t}\n\n\tprivate static augmentDesugaredHasOneRelationPath(\n\t\tpath: (ParsedHasOneRelation | string)[],\n\t\tunsugarable: Omit<SugaredRelativeSingleEntity, 'field'>,\n\t\tenvironment: Environment,\n\t): HasOneRelation[] {\n\t\treturn path.map((desugaredHasOneRelation, i) =>\n\t\t\t// Unsugarable applies to the last\n\t\t\tthis.desugarHasOneRelation(\n\t\t\t\ttypeof desugaredHasOneRelation === 'string' ? { field: desugaredHasOneRelation } : desugaredHasOneRelation,\n\t\t\t\ti === path.length - 1 ? unsugarable : {},\n\t\t\t\tenvironment,\n\t\t\t),\n\t\t)\n\t}\n\n\tprivate static augmentDesugaredHasManyRelation(\n\t\trelation: ParsedHasManyRelation,\n\t\tunsugarable: Omit<SugaredRelativeEntityList, 'field'>,\n\t\tenvironment: Environment,\n\t): HasManyRelation {\n\t\tconst eventListeners = this.desugarEntityListEventListeners(unsugarable)\n\t\treturn {\n\t\t\tfield: relation.field,\n\t\t\tfilter: relation.filter,\n\t\t\texpectedMutation: unsugarable.expectedMutation ?? RelationDefaults.expectedMutation,\n\t\t\tisNonbearing: unsugarable.isNonbearing ?? EntityCreationParametersDefaults.isNonbearing,\n\t\t\t// forceCreation: unsugarable.forceCreation ?? EntityCreationParametersDefaults.forceCreation,\n\t\t\tinitialEntityCount: unsugarable.initialEntityCount ?? EntityListPreferencesDefaults.initialEntityCount,\n\t\t\tsetOnCreate: unsugarable.setOnCreate ? this.desugarSetOnCreate(unsugarable.setOnCreate, environment) : undefined,\n\t\t\tmeta: unsugarable.withMeta ?? [],\n\t\t\torderBy: unsugarable.orderBy ? this.desugarOrderBy(unsugarable.orderBy, environment) : undefined,\n\t\t\toffset: unsugarable.offset,\n\t\t\tlimit: unsugarable.limit,\n\t\t\tchildEventListeners: eventListeners?.childEventListeners,\n\t\t\teventListeners: eventListeners?.eventListeners,\n\t\t}\n\t}\n\n\tprivate static desugarHasOneRelationPath(\n\t\tinput: SugarableHasOneRelation[] | SugarableHasOneRelation | undefined,\n\t\tlastRelation: Omit<SugaredRelativeSingleEntity, 'field'>,\n\t\tenvironment: Environment,\n\t): HasOneRelation[] {\n\t\tif (input === undefined) {\n\t\t\tinput = []\n\t\t} else if (!Array.isArray(input)) {\n\t\t\tinput = [input]\n\t\t}\n\n\t\tconst relationPath: HasOneRelation[] = []\n\n\t\tconst cappedLength = input.length - 1\n\t\tlet i = 0\n\t\tfor (; i < cappedLength; i++) {\n\t\t\t// Deliberately leaving out the last element\n\t\t\tconst pathNode = input[i]\n\n\t\t\trelationPath.push(this.desugarHasOneRelation(pathNode, {}, environment))\n\t\t}\n\t\tif (i in input) {\n\t\t\trelationPath.push(this.desugarHasOneRelation(input[i], lastRelation, environment))\n\t\t}\n\n\t\treturn relationPath\n\t}\n\n\tprivate static desugarHasManyRelation(\n\t\tsugarablePart: SugarableHasManyRelation,\n\t\tunsugarablePart: Omit<SugaredRelativeEntityList, 'field'>,\n\t\tenvironment: Environment,\n\t): HasManyRelation {\n\t\tconst eventListeners = this.desugarEntityListEventListeners(unsugarablePart)\n\t\treturn {\n\n\t\t\tfilter: sugarablePart.filter ? this.desugarFilter(sugarablePart.filter, environment) : undefined,\n\t\t\tlimit: unsugarablePart.limit,\n\t\t\toffset: unsugarablePart.offset,\n\t\t\torderBy: unsugarablePart.orderBy ? this.desugarOrderBy(unsugarablePart.orderBy, environment) : undefined,\n\t\t\tinitialEntityCount: unsugarablePart.initialEntityCount ?? EntityListPreferencesDefaults.initialEntityCount,\n\t\t\texpectedMutation: unsugarablePart.expectedMutation ?? RelationDefaults.expectedMutation,\n\t\t\tsetOnCreate: unsugarablePart.setOnCreate\n\t\t\t\t? this.desugarSetOnCreate(unsugarablePart.setOnCreate, environment)\n\t\t\t\t: undefined,\n\t\t\tmeta: unsugarablePart.withMeta ?? [],\n\t\t\tfield: sugarablePart.field,\n\t\t\tisNonbearing: unsugarablePart.isNonbearing ?? EntityCreationParametersDefaults.isNonbearing,\n\t\t\t// forceCreation: unsugarablePart.forceCreation ?? EntityCreationParametersDefaults.forceCreation,\n\t\t\tchildEventListeners: eventListeners?.childEventListeners,\n\t\t\teventListeners: eventListeners?.eventListeners,\n\t\t}\n\t}\n\n\tpublic static desugarUnconstrainedQualifiedEntityList(\n\t\t{ entities, ...unsugarableEntityList }: SugaredUnconstrainedQualifiedEntityList,\n\t\tenvironment: Environment,\n\t): UnconstrainedQualifiedEntityList {\n\t\tlet hasOneRelationPath: HasOneRelation[]\n\t\tlet entityName: EntityName\n\n\t\tif (typeof entities === 'string') {\n\t\t\tconst parsed = this.parseUnconstrainedQualifiedEntityList(entities, environment)\n\t\t\tentityName = parsed.entityName\n\t\t\thasOneRelationPath = this.augmentDesugaredHasOneRelationPath(\n\t\t\t\tparsed.hasOneRelationPath,\n\t\t\t\temptyObject,\n\t\t\t\tenvironment,\n\t\t\t)\n\t\t} else {\n\t\t\tentityName = entities.entityName\n\t\t\thasOneRelationPath = this.desugarHasOneRelationPath(entities.hasOneRelationPath, emptyObject, environment)\n\t\t}\n\n\t\tconst eventListeners = this.desugarEntityListEventListeners(unsugarableEntityList)\n\n\t\treturn {\n\t\t\tisCreating: true,\n\t\t\tisUnpersisted: unsugarableEntityList.isUnpersisted ?? false,\n\t\t\tisNonbearing: unsugarableEntityList.isNonbearing ?? EntityCreationParametersDefaults.isNonbearing,\n\t\t\t// forceCreation: unsugarableEntityList.forceCreation ?? EntityCreationParametersDefaults.forceCreation,\n\t\t\tsetOnCreate: unsugarableEntityList.setOnCreate\n\t\t\t\t? this.desugarSetOnCreate(unsugarableEntityList.setOnCreate, environment)\n\t\t\t\t: undefined,\n\t\t\texpectedMutation: unsugarableEntityList.expectedMutation ?? QualifiedEntityParametersDefaults.expectedMutation,\n\t\t\tchildEventListeners: eventListeners?.childEventListeners,\n\t\t\teventListeners: eventListeners?.eventListeners,\n\t\t\tinitialEntityCount: unsugarableEntityList.initialEntityCount ?? EntityListPreferencesDefaults.initialEntityCount,\n\t\t\talias: this.desugarSubTreeAlias(unsugarableEntityList.alias),\n\t\t\tentityName,\n\t\t\thasOneRelationPath,\n\t\t}\n\t}\n\n\tpublic static desugarUnconstrainedQualifiedSingleEntity(\n\t\t{ entity, ...unsugarableSingleEntity }: SugaredUnconstrainedQualifiedSingleEntity,\n\t\tenvironment: Environment,\n\t): UnconstrainedQualifiedSingleEntity {\n\t\tlet hasOneRelationPath: HasOneRelation[]\n\t\tlet entityName: EntityName\n\n\t\tif (typeof entity === 'string') {\n\t\t\tconst parsed = this.parseUnconstrainedQualifiedSingleEntity(entity, environment)\n\t\t\tentityName = parsed.entityName\n\t\t\thasOneRelationPath = this.augmentDesugaredHasOneRelationPath(\n\t\t\t\tparsed.hasOneRelationPath,\n\t\t\t\tunsugarableSingleEntity,\n\t\t\t\tenvironment,\n\t\t\t)\n\t\t} else {\n\t\t\tentityName = entity.entityName\n\t\t\thasOneRelationPath = this.desugarHasOneRelationPath(\n\t\t\t\tentity.hasOneRelationPath,\n\t\t\t\tunsugarableSingleEntity,\n\t\t\t\tenvironment,\n\t\t\t)\n\t\t}\n\n\t\treturn {\n\t\t\tisCreating: true,\n\t\t\tisUnpersisted: unsugarableSingleEntity.isUnpersisted ?? false,\n\t\t\tisNonbearing: unsugarableSingleEntity.isNonbearing ?? EntityCreationParametersDefaults.isNonbearing,\n\t\t\t// forceCreation: unsugarableSingleEntity.forceCreation ?? EntityCreationParametersDefaults.forceCreation,\n\t\t\tsetOnCreate: unsugarableSingleEntity.setOnCreate\n\t\t\t\t? this.desugarSetOnCreate(unsugarableSingleEntity.setOnCreate, environment)\n\t\t\t\t: undefined,\n\t\t\texpectedMutation: unsugarableSingleEntity.expectedMutation ?? QualifiedEntityParametersDefaults.expectedMutation,\n\t\t\teventListeners: this.desugarSingleEntityEventListeners(unsugarableSingleEntity),\n\t\t\talias: this.desugarSubTreeAlias(unsugarableSingleEntity.alias),\n\t\t\tentityName,\n\t\t\thasOneRelationPath,\n\t\t}\n\t}\n\n\tpublic static desugarQualifiedEntityList(\n\t\t{ entities, ...unsugarableEntityList }: SugaredQualifiedEntityList,\n\t\tenvironment: Environment,\n\t): QualifiedEntityList {\n\t\tlet entityName: EntityName\n\t\tlet hasOneRelationPath: HasOneRelation[]\n\n\t\tlet filter: SugaredFilter | undefined\n\n\t\tif (typeof entities === 'string') {\n\t\t\tconst parsed = this.parseQualifiedEntityList(entities, environment)\n\n\t\t\tentityName = parsed.entityName\n\t\t\tfilter = parsed.filter\n\t\t\thasOneRelationPath = this.augmentDesugaredHasOneRelationPath(\n\t\t\t\tparsed.hasOneRelationPath,\n\t\t\t\temptyObject,\n\t\t\t\tenvironment,\n\t\t\t)\n\t\t} else {\n\t\t\tentityName = entities.entityName\n\t\t\tfilter = entities.filter\n\t\t\thasOneRelationPath = this.desugarHasOneRelationPath(entities.hasOneRelationPath, emptyObject, environment)\n\t\t}\n\n\t\tconst eventListeners = this.desugarEntityListEventListeners(unsugarableEntityList)\n\n\t\treturn {\n\t\t\tentityName,\n\t\t\thasOneRelationPath,\n\t\t\tfilter: filter ? this.desugarFilter(filter, environment) : undefined,\n\t\t\tlimit: unsugarableEntityList.limit,\n\t\t\toffset: unsugarableEntityList.offset,\n\t\t\torderBy: unsugarableEntityList.orderBy ? this.desugarOrderBy(unsugarableEntityList.orderBy, environment) : undefined,\n\t\t\tinitialEntityCount: unsugarableEntityList.initialEntityCount ?? EntityListPreferencesDefaults.initialEntityCount,\n\t\t\talias: this.desugarSubTreeAlias(unsugarableEntityList.alias),\n\t\t\tisCreating: false,\n\t\t\tisNonbearing: unsugarableEntityList.isNonbearing ?? EntityCreationParametersDefaults.isNonbearing,\n\t\t\t// forceCreation: unsugarableEntityList.forceCreation ?? EntityCreationParametersDefaults.forceCreation,\n\t\t\tsetOnCreate: unsugarableEntityList.setOnCreate\n\t\t\t\t? this.desugarSetOnCreate(unsugarableEntityList.setOnCreate, environment)\n\t\t\t\t: undefined,\n\t\t\texpectedMutation: unsugarableEntityList.expectedMutation ?? QualifiedEntityParametersDefaults.expectedMutation,\n\t\t\tchildEventListeners: eventListeners?.childEventListeners,\n\t\t\teventListeners: eventListeners?.eventListeners,\n\t\t}\n\t}\n\n\tpublic static desugarQualifiedFieldList(\n\t\t{ fields, ...unsugarableFieldList }: SugaredQualifiedFieldList,\n\t\tenvironment: Environment,\n\t): QualifiedFieldList {\n\t\tlet field: FieldName\n\t\tlet entityName: EntityName\n\t\tlet filter: SugaredFilter | undefined\n\t\tlet hasOneRelationPath: HasOneRelation[]\n\n\t\tif (typeof fields === 'string') {\n\t\t\tconst parsed = this.parseQualifiedFieldList(fields, environment)\n\n\t\t\tfield = parsed.field\n\t\t\tentityName = parsed.entityName\n\t\t\tfilter = parsed.filter\n\t\t\thasOneRelationPath = this.augmentDesugaredHasOneRelationPath(\n\t\t\t\tparsed.hasOneRelationPath,\n\t\t\t\temptyObject,\n\t\t\t\tenvironment,\n\t\t\t)\n\t\t} else {\n\t\t\tfield = fields.field\n\t\t\tentityName = fields.entityName\n\t\t\tfilter = fields.filter\n\t\t\thasOneRelationPath = this.desugarHasOneRelationPath(fields.hasOneRelationPath, emptyObject, environment)\n\t\t}\n\n\t\treturn {\n\t\t\tfield,\n\t\t\tentityName,\n\t\t\thasOneRelationPath,\n\t\t\talias: this.desugarSubTreeAlias(unsugarableFieldList.alias),\n\t\t\tisNonbearing: unsugarableFieldList.isNonbearing ?? EntityCreationParametersDefaults.isNonbearing,\n\t\t\t// forceCreation: unsugarableFieldList.forceCreation ?? EntityCreationParametersDefaults.forceCreation,\n\t\t\tdefaultValue:\n\t\t\t\tunsugarableFieldList.defaultValue !== undefined\n\t\t\t\t\t? VariableInputTransformer.transformValue(unsugarableFieldList.defaultValue, environment)\n\t\t\t\t\t: undefined,\n\t\t\texpectedMutation: unsugarableFieldList.expectedMutation ?? QualifiedEntityParametersDefaults.expectedMutation,\n\t\t\teventListeners: this.desugarFieldEventListeners(unsugarableFieldList),\n\t\t\tfilter: filter ? this.desugarFilter(filter, environment) : undefined,\n\t\t\tlimit: unsugarableFieldList.limit,\n\t\t\toffset: unsugarableFieldList.offset,\n\t\t\torderBy: unsugarableFieldList.orderBy ? this.desugarOrderBy(unsugarableFieldList.orderBy, environment) : undefined,\n\t\t\tinitialEntityCount: unsugarableFieldList.initialEntityCount ?? EntityListPreferencesDefaults.initialEntityCount,\n\t\t}\n\t}\n\n\tpublic static desugarQualifiedSingleEntity(\n\t\t{ entity, ...unsugarableSingleEntity }: SugaredQualifiedSingleEntity,\n\t\tenvironment: Environment,\n\t): QualifiedSingleEntity {\n\t\tlet entityName: EntityName\n\t\tlet where: UniqueWhere\n\t\tlet filter: Filter | undefined\n\t\tlet hasOneRelationPath: HasOneRelation[]\n\n\t\tif (typeof entity === 'string') {\n\t\t\tconst parsed = this.parseQualifiedSingleEntity(entity, environment)\n\n\t\t\tentityName = parsed.entityName\n\t\t\twhere = parsed.where\n\t\t\tfilter = parsed.filter\n\t\t\thasOneRelationPath = this.augmentDesugaredHasOneRelationPath(\n\t\t\t\tparsed.hasOneRelationPath,\n\t\t\t\tunsugarableSingleEntity,\n\t\t\t\tenvironment,\n\t\t\t)\n\t\t} else {\n\t\t\tentityName = entity.entityName\n\t\t\twhere = this.desugarUniqueWhere(entity.where, environment)\n\t\t\tfilter = entity.filter ? this.desugarFilter(entity.filter, environment) : undefined\n\t\t\thasOneRelationPath = this.desugarHasOneRelationPath(\n\t\t\t\tentity.hasOneRelationPath,\n\t\t\t\tunsugarableSingleEntity,\n\t\t\t\tenvironment,\n\t\t\t)\n\t\t}\n\n\t\t// const forceCreation: boolean =\n\t\t// \tunsugarableSingleEntity.forceCreation !== undefined\n\t\t// \t\t? unsugarableSingleEntity.forceCreation !== undefined\n\t\t// \t\t: EntityCreationParametersDefaults.forceCreation\n\t\tlet setOnCreate: UniqueWhere | undefined =\n\t\t\tunsugarableSingleEntity.setOnCreate !== undefined\n\t\t\t\t? this.desugarSetOnCreate(unsugarableSingleEntity.setOnCreate, environment)\n\t\t\t\t: undefined\n\n\n\t\tconst isNonbearing: boolean =\n\t\t\tunsugarableSingleEntity.isNonbearing !== undefined\n\t\t\t\t? unsugarableSingleEntity.isNonbearing\n\t\t\t\t: EntityCreationParametersDefaults.isNonbearing\n\t\tconst eventListeners = this.desugarSingleEntityEventListeners(unsugarableSingleEntity)\n\t\tconst expectedMutation =\n\t\t\tunsugarableSingleEntity.expectedMutation ?? QualifiedEntityParametersDefaults.expectedMutation\n\t\tconst alias = this.desugarSubTreeAlias(unsugarableSingleEntity.alias)\n\n\t\treturn {\n\t\t\talias,\n\t\t\tentityName,\n\t\t\tisCreating: false,\n\t\t\twhere,\n\t\t\tfilter,\n\t\t\thasOneRelationPath,\n\t\t\t// forceCreation,\n\t\t\tsetOnCreate,\n\t\t\tisNonbearing,\n\t\t\teventListeners,\n\t\t\texpectedMutation,\n\t\t}\n\t}\n\n\tpublic static desugarParentEntityParameters(\n\t\tparentEntity: SugaredParentEntityParameters,\n\t\tenvironment: Environment,\n\t): ParentEntityParameters {\n\t\treturn {\n\t\t\teventListeners: this.desugarSingleEntityEventListeners(parentEntity),\n\t\t}\n\t}\n\n\tpublic static desugarRelativeSingleEntity(\n\t\tsugaredRelativeSingleEntity: string | SugaredRelativeSingleEntity,\n\t\tenvironment: Environment,\n\t): RelativeSingleEntity {\n\t\tlet field: SugaredRelativeSingleEntity['field']\n\t\tlet unsugarableEntity: Omit<SugaredRelativeSingleEntity, 'field'>\n\t\tif (typeof sugaredRelativeSingleEntity === 'string') {\n\t\t\tfield = sugaredRelativeSingleEntity\n\t\t\tunsugarableEntity = {}\n\t\t} else {\n\t\t\tfield = sugaredRelativeSingleEntity.field\n\t\t\tunsugarableEntity = sugaredRelativeSingleEntity\n\t\t}\n\n\t\tlet hasOneRelationPath: HasOneRelation[]\n\t\tif (typeof field === 'string') {\n\t\t\t// fast path\n\t\t\tif (field.match(TokenRegExps.dotSeparatedIdentifier)) {\n\t\t\t\tconst parts = field.split('.')\n\t\t\t\thasOneRelationPath = this.augmentDesugaredHasOneRelationPath(parts, unsugarableEntity, environment)\n\t\t\t} else {\n\t\t\t\tconst parsed = this.parseRelativeSingleEntity(field, environment)\n\t\t\t\thasOneRelationPath = this.augmentDesugaredHasOneRelationPath(\n\t\t\t\t\tparsed.hasOneRelationPath,\n\t\t\t\t\tunsugarableEntity,\n\t\t\t\t\tenvironment,\n\t\t\t\t)\n\t\t\t}\n\n\t\t} else {\n\t\t\thasOneRelationPath = this.desugarHasOneRelationPath(field, unsugarableEntity, environment)\n\t\t}\n\n\t\treturn {\n\t\t\thasOneRelationPath,\n\t\t}\n\t}\n\n\tpublic static desugarRelativeSingleField(\n\t\tsugaredRelativeSingleField: string | SugaredRelativeSingleField,\n\t\tenvironment: Environment,\n\t): RelativeSingleField {\n\t\tlet field: SugaredRelativeSingleField['field']\n\t\tlet unsugarableField: Omit<SugaredRelativeSingleField, 'field'>\n\t\tif (typeof sugaredRelativeSingleField === 'string') {\n\t\t\tfield = sugaredRelativeSingleField\n\t\t\tunsugarableField = {}\n\t\t} else {\n\t\t\tfield = sugaredRelativeSingleField.field\n\t\t\tunsugarableField = sugaredRelativeSingleField\n\t\t}\n\n\t\tlet hasOneRelationPath: HasOneRelation[]\n\t\tlet fieldName: FieldName\n\t\tif (typeof field === 'string') {\n\t\t\t// fast path\n\t\t\tif (field.match(TokenRegExps.dotSeparatedIdentifier)) {\n\t\t\t\tconst parts = field.split('.')\n\t\t\t\tfieldName = parts.pop()!\n\t\t\t\thasOneRelationPath = this.augmentDesugaredHasOneRelationPath(parts, {}, environment)\n\t\t\t} else {\n\t\t\t\tconst parsed = this.parseRelativeSingleField(field, environment)\n\t\t\t\thasOneRelationPath = this.augmentDesugaredHasOneRelationPath(parsed.hasOneRelationPath, {}, environment)\n\t\t\t\tfieldName = parsed.field\n\t\t\t}\n\n\t\t} else {\n\t\t\thasOneRelationPath = this.desugarHasOneRelationPath(field.hasOneRelationPath, {}, environment)\n\t\t\tfieldName = field.field\n\t\t}\n\n\t\treturn {\n\t\t\teventListeners: this.desugarFieldEventListeners(unsugarableField),\n\t\t\thasOneRelationPath,\n\t\t\tfield: fieldName,\n\t\t\tisNonbearing: unsugarableField.isNonbearing ?? LeafFieldDefaults.isNonbearing,\n\t\t\tmeta: unsugarableField.withMeta ?? [],\n\t\t\tdefaultValue:\n\t\t\t\tunsugarableField.defaultValue !== undefined\n\t\t\t\t\t? VariableInputTransformer.transformValue(unsugarableField.defaultValue, environment)\n\t\t\t\t\t: undefined,\n\t\t}\n\t}\n\n\tpublic static desugarRelativeEntityList(\n\t\tsugaredRelativeEntityList: string | SugaredRelativeEntityList,\n\t\tenvironment: Environment,\n\t): RelativeEntityList {\n\t\tlet field: SugaredRelativeEntityList['field']\n\t\tlet unsugarableEntityList: Omit<SugaredRelativeEntityList, 'field'>\n\n\t\tif (typeof sugaredRelativeEntityList === 'string') {\n\t\t\tfield = sugaredRelativeEntityList\n\t\t\tunsugarableEntityList = {}\n\t\t} else {\n\t\t\tfield = sugaredRelativeEntityList.field\n\t\t\tunsugarableEntityList = sugaredRelativeEntityList\n\t\t}\n\n\t\tlet hasOneRelationPath: HasOneRelation[]\n\t\tlet hasManyRelation: HasManyRelation\n\t\tif (typeof field === 'string') {\n\t\t\tconst parsed = this.parseRelativeEntityList(field, environment)\n\t\t\thasOneRelationPath = this.augmentDesugaredHasOneRelationPath(\n\t\t\t\tparsed.hasOneRelationPath,\n\t\t\t\temptyObject,\n\t\t\t\tenvironment,\n\t\t\t)\n\t\t\thasManyRelation = this.augmentDesugaredHasManyRelation(\n\t\t\t\tparsed.hasManyRelation,\n\t\t\t\tunsugarableEntityList,\n\t\t\t\tenvironment,\n\t\t\t)\n\t\t} else {\n\t\t\thasOneRelationPath = this.desugarHasOneRelationPath(field.hasOneRelationPath || [], emptyObject, environment)\n\t\t\thasManyRelation = this.desugarHasManyRelation(field.hasManyRelation, unsugarableEntityList, environment)\n\t\t}\n\n\t\treturn {\n\t\t\thasManyRelation,\n\t\t\thasOneRelationPath,\n\t\t}\n\t}\n}\n"],"names":["_QueryLanguage"],"mappings":"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"}
|
|
@@ -12,6 +12,7 @@ class TreeParameterMerger {
|
|
|
12
12
|
expectedMutation: this.mergeExpectedRelationMutation(original.expectedMutation, fresh.expectedMutation),
|
|
13
13
|
setOnCreate: this.mergeSetOnCreate(original.setOnCreate, fresh.setOnCreate),
|
|
14
14
|
isNonbearing: original.isNonbearing && fresh.isNonbearing,
|
|
15
|
+
meta: this.mergeFieldMeta(original.meta, fresh.meta),
|
|
15
16
|
// forceCreation: original.forceCreation || fresh.forceCreation,
|
|
16
17
|
eventListeners: this.mergeEventStore(original.eventListeners, fresh.eventListeners)
|
|
17
18
|
};
|
|
@@ -32,6 +33,7 @@ class TreeParameterMerger {
|
|
|
32
33
|
// Not encoded within the placeholder
|
|
33
34
|
expectedMutation: this.mergeExpectedRelationMutation(original.expectedMutation, fresh.expectedMutation),
|
|
34
35
|
setOnCreate: this.mergeSetOnCreate(original.setOnCreate, fresh.setOnCreate),
|
|
36
|
+
meta: this.mergeFieldMeta(original.meta, fresh.meta),
|
|
35
37
|
// forceCreation: original.forceCreation || fresh.forceCreation,
|
|
36
38
|
isNonbearing: original.isNonbearing && fresh.isNonbearing,
|
|
37
39
|
initialEntityCount: original.initialEntityCount,
|
|
@@ -140,6 +142,7 @@ class TreeParameterMerger {
|
|
|
140
142
|
field: original.field,
|
|
141
143
|
isNonbearing: original.isNonbearing && fresh.isNonbearing,
|
|
142
144
|
defaultValue: original.defaultValue ?? fresh.defaultValue,
|
|
145
|
+
meta: this.mergeFieldMeta(original.meta, fresh.meta),
|
|
143
146
|
eventListeners: this.mergeEventStore(original.eventListeners, fresh.eventListeners)
|
|
144
147
|
};
|
|
145
148
|
}
|
|
@@ -263,6 +266,9 @@ class TreeParameterMerger {
|
|
|
263
266
|
}
|
|
264
267
|
return this.mergeSets(original, fresh);
|
|
265
268
|
}
|
|
269
|
+
static mergeFieldMeta(original, fresh) {
|
|
270
|
+
return [...original, ...fresh].filter((key, index, array) => array.indexOf(key) === index);
|
|
271
|
+
}
|
|
266
272
|
}
|
|
267
273
|
exports.TreeParameterMerger = TreeParameterMerger;
|
|
268
274
|
//# sourceMappingURL=TreeParameterMerger.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TreeParameterMerger.cjs","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\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\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\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\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"],"names":["BindingError"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TreeParameterMerger.cjs","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":["BindingError"],"mappings":"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"}
|
|
@@ -10,6 +10,7 @@ class TreeParameterMerger {
|
|
|
10
10
|
expectedMutation: this.mergeExpectedRelationMutation(original.expectedMutation, fresh.expectedMutation),
|
|
11
11
|
setOnCreate: this.mergeSetOnCreate(original.setOnCreate, fresh.setOnCreate),
|
|
12
12
|
isNonbearing: original.isNonbearing && fresh.isNonbearing,
|
|
13
|
+
meta: this.mergeFieldMeta(original.meta, fresh.meta),
|
|
13
14
|
// forceCreation: original.forceCreation || fresh.forceCreation,
|
|
14
15
|
eventListeners: this.mergeEventStore(original.eventListeners, fresh.eventListeners)
|
|
15
16
|
};
|
|
@@ -30,6 +31,7 @@ class TreeParameterMerger {
|
|
|
30
31
|
// Not encoded within the placeholder
|
|
31
32
|
expectedMutation: this.mergeExpectedRelationMutation(original.expectedMutation, fresh.expectedMutation),
|
|
32
33
|
setOnCreate: this.mergeSetOnCreate(original.setOnCreate, fresh.setOnCreate),
|
|
34
|
+
meta: this.mergeFieldMeta(original.meta, fresh.meta),
|
|
33
35
|
// forceCreation: original.forceCreation || fresh.forceCreation,
|
|
34
36
|
isNonbearing: original.isNonbearing && fresh.isNonbearing,
|
|
35
37
|
initialEntityCount: original.initialEntityCount,
|
|
@@ -138,6 +140,7 @@ class TreeParameterMerger {
|
|
|
138
140
|
field: original.field,
|
|
139
141
|
isNonbearing: original.isNonbearing && fresh.isNonbearing,
|
|
140
142
|
defaultValue: original.defaultValue ?? fresh.defaultValue,
|
|
143
|
+
meta: this.mergeFieldMeta(original.meta, fresh.meta),
|
|
141
144
|
eventListeners: this.mergeEventStore(original.eventListeners, fresh.eventListeners)
|
|
142
145
|
};
|
|
143
146
|
}
|
|
@@ -261,6 +264,9 @@ class TreeParameterMerger {
|
|
|
261
264
|
}
|
|
262
265
|
return this.mergeSets(original, fresh);
|
|
263
266
|
}
|
|
267
|
+
static mergeFieldMeta(original, fresh) {
|
|
268
|
+
return [...original, ...fresh].filter((key, index, array) => array.indexOf(key) === index);
|
|
269
|
+
}
|
|
264
270
|
}
|
|
265
271
|
export {
|
|
266
272
|
TreeParameterMerger
|