@zuu/owl
Version:
Zuu's Experimental GraphQL Implementation
68 lines • 2.31 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const graphql_1 = require("graphql");
const timestamp_1 = require("../scalars/timestamp");
const isodate_1 = require("../scalars/isodate");
const build_context_1 = require("../schema/build-context");
function convertTypeIfScalar(type) {
if (type instanceof graphql_1.GraphQLScalarType) {
return type;
}
const scalarMap = build_context_1.BuildContext.scalarsMaps.find(it => it.type === type);
if (scalarMap) {
return scalarMap.scalar;
}
switch (type) {
case String:
return graphql_1.GraphQLString;
case Boolean:
return graphql_1.GraphQLBoolean;
case Number:
return graphql_1.GraphQLFloat;
case Date:
return build_context_1.BuildContext.dateScalarMode === "isoDate"
? isodate_1.GraphQLISODateTime
: timestamp_1.GraphQLTimestamp;
default:
return undefined;
}
}
exports.convertTypeIfScalar = convertTypeIfScalar;
function wrapWithTypeOptions(type, typeOptions = {}) {
let gqlType = type;
if (typeOptions.array) {
gqlType = new graphql_1.GraphQLList(new graphql_1.GraphQLNonNull(gqlType));
}
if (!typeOptions.nullable) {
gqlType = new graphql_1.GraphQLNonNull(gqlType);
}
return gqlType;
}
exports.wrapWithTypeOptions = wrapWithTypeOptions;
const simpleTypes = [String, Boolean, Number, Date, Array, Promise];
function convertToType(Target, data) {
// skip converting undefined and null
if (data == null) {
return;
}
// skip converting scalars (object scalar mostly)
if (Target instanceof graphql_1.GraphQLScalarType) {
return data;
}
// skip converting simple types
if (simpleTypes.includes(data.constructor)) {
return data;
}
return Object.assign(new Target(), data);
}
exports.convertToType = convertToType;
function getEnumValuesMap(enumObject) {
const enumKeys = Object.keys(enumObject).filter(key => isNaN(parseInt(key, 10)));
const enumMap = enumKeys.reduce((map, key) => {
map[key] = enumObject[key];
return map;
}, {});
return enumMap;
}
exports.getEnumValuesMap = getEnumValuesMap;
//# sourceMappingURL=types.js.map