UNPKG

ts-flex-query

Version:
54 lines 2.64 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.FieldOperator = void 0; exports.field = field; const field_1 = require("../../expressions/field"); const data_type_1 = require("../../types/data-type"); class FieldOperator { constructor(name, type = { type: data_type_1.DataTypeType.unknown }) { this.name = name; this.type = type; } instantiate(input) { return new field_1.FieldExpression(input, this.name, this.apply(input.dataType)); } apply(type) { const suggestion = this.applyWithoutKnownType(type); return suggestion.type === data_type_1.DataTypeType.unknown ? this.type : suggestion; } applyWithoutKnownType(type) { var _a; switch (type.type) { case data_type_1.DataTypeType.object: return (_a = type.fields[this.name]) !== null && _a !== void 0 ? _a : { type: data_type_1.DataTypeType.undefined }; case data_type_1.DataTypeType.unknownObject: case data_type_1.DataTypeType.unknown: return { type: data_type_1.DataTypeType.unknown }; default: return { type: data_type_1.DataTypeType.undefined }; } } } exports.FieldOperator = FieldOperator; function field(name) { return new FieldOperator(name); } // Operators defining the type of the selected field (primitive, object, or array): // export function primitiveField<TIn, TField extends keyof NonNullable<TIn> & string>( // field: TField extends infer T ? IfNullablePrimitive<NonNullable<TIn>[TField], TField, never> : never // ): PipeOperator<TIn, undefined extends TIn ? NonNullable<TIn>[TField] | undefined : NonNullable<TIn>[TField]> { // return new FieldOperator(field, { type: DataTypeType.unknownPrimitive }); // } // export function objectField<TIn, TField extends keyof NonNullable<TIn> & string>( // field: TField extends infer T ? IfNullableObject<NonNullable<TIn>[TField], TField, never> : never // ): PipeOperator<TIn, undefined extends TIn ? NonNullable<TIn>[TField] | undefined : NonNullable<TIn>[TField]> { // return new FieldOperator(field, { type: DataTypeType.unknownObject }); // } // export function arrayField<TIn, TField extends keyof NonNullable<TIn> & string>( // field: TField extends infer T ? IfNullableArray<NonNullable<TIn>[TField], TField, never> : never // ): PipeOperator<TIn, undefined extends TIn ? NonNullable<TIn>[TField] | undefined : NonNullable<TIn>[TField]> { // return new FieldOperator(field, { type: DataTypeType.unknownArray }); // } //# sourceMappingURL=field.js.map