import { EntityBase } from '../entity-base' ; import { EdmTypeShared } from '../edm-types' ; import { DeSerializers } from '../de-serializers' ; import { Field , FieldOptions } from './field' ; import { ConstructorOrField } from './constructor-or-field' ; import { ComplexTypeField , getEntityConstructor } from './complex-type-field' ; import { ComplexTypeNamespace } from './complex-type-namespace' ; typeparam typeparam typeparam typeparam typeparam internal export class CollectionField < EntityT extends EntityBase , DeSerializersT extends DeSerializers , CollectionFieldT extends EdmTypeShared < 'any' > | Record < string , any > = any , NullableT extends boolean = false , SelectableT extends boolean = false > extends Field < EntityT , NullableT , SelectableT > { readonly _deSerializers : DeSerializersT ; param fieldName param _fieldOf param _fieldType param fieldOptions constructor ( fieldName , readonly _fieldOf , readonly _fieldType , fieldOptions ? ) { super ( fieldName , getEntityConstructor ( _fieldOf ) , fieldOptions ) ; } returns fieldPath ( ) { return this . _fieldOf instanceof ComplexTypeField ? `${ this . _fieldOf . fieldPath ( ) }/${ this . _fieldName }` : this . _fieldName ; } } typeparam internal export type CollectionFieldType < CollectionFieldT extends EdmTypeShared < 'any' > | Record < string , any > > = CollectionFieldT | ComplexTypeNamespace < CollectionFieldT > ;