UNPKG

kapix-typegraphql-prisma

Version:

![integration logo](https://raw.githubusercontent.com/MichalLytek/typegraphql-prisma/main/img/integration.png)

232 lines 7.96 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.toUnixPath = exports.convertNewLines = exports.cleanDocsString = exports.getInputTypeName = exports.getModelNameFromInputType = exports.pascalCase = exports.capitalizeFirstLetter = exports.camelCase = exports.mapScalarToTypeGraphQLType = exports.getTypeGraphQLType = exports.mapScalarToTSType = exports.getFieldTSType = exports.noop = void 0; const helpers_1 = require("./dmmf/helpers"); const lodash_1 = require("lodash"); var PrismaScalars; (function (PrismaScalars) { PrismaScalars["String"] = "String"; PrismaScalars["Boolean"] = "Boolean"; PrismaScalars["Int"] = "Int"; PrismaScalars["Float"] = "Float"; PrismaScalars["DateTime"] = "DateTime"; PrismaScalars["Json"] = "Json"; PrismaScalars["BigInt"] = "BigInt"; PrismaScalars["Decimal"] = "Decimal"; PrismaScalars["Bytes"] = "Bytes"; })(PrismaScalars || (PrismaScalars = {})); function noop() { } exports.noop = noop; function getFieldTSType(dmmfDocument, typeInfo, isRequired, isInputType, modelName, typeName) { let TSType = typeInfo.type; if (typeInfo.location === "scalar") { TSType = mapScalarToTSType(typeInfo.type, isInputType); } else if (typeInfo.location === "inputObjectTypes" || typeInfo.location === "outputObjectTypes") { if (!dmmfDocument.isModelName(typeInfo.type) && (!typeName || !modelName)) { TSType = getInputTypeName(typeInfo.type, dmmfDocument); } } else if (typeInfo.location === "enumTypes") { const enumDef = dmmfDocument.enums.find(it => it.typeName == typeInfo.type); TSType = enumDef.valuesMap.map(({ value }) => `"${value}"`).join(" | "); } else { throw new Error(`Unsupported field type location: ${typeInfo.location}`); } if (typeInfo.isList) { if (TSType.includes(" ")) { TSType = `Array<${TSType}>`; } else { TSType += "[]"; } } if (!isRequired) { if (isInputType) { TSType += " | undefined"; } else { TSType += " | null"; } } return TSType; } exports.getFieldTSType = getFieldTSType; function mapScalarToTSType(scalar, isInputType) { switch (scalar) { case PrismaScalars.String: { return "string"; } case PrismaScalars.Boolean: { return "boolean"; } case PrismaScalars.Int: case PrismaScalars.Float: { return "number"; } case PrismaScalars.DateTime: { return "Date"; } case PrismaScalars.Json: return isInputType ? "Prisma.InputJsonValue" : "Prisma.JsonValue"; case PrismaScalars.BigInt: { return "bigint"; } case PrismaScalars.Decimal: { return "Prisma.Decimal"; } case PrismaScalars.Bytes: { return "Buffer"; } default: throw new Error(`Unrecognized scalar type: ${scalar}`); } } exports.mapScalarToTSType = mapScalarToTSType; function getTypeGraphQLType(typeInfo, dmmfDocument, modelName, typeName, isIdField) { let GraphQLType = typeInfo.type; if (typeInfo.location === "scalar") { GraphQLType = mapScalarToTypeGraphQLType(typeInfo.type, dmmfDocument.options.emitIdAsIDType, isIdField); } else if ((typeInfo.location === "inputObjectTypes" || typeInfo.location === "outputObjectTypes") && (!typeName || !modelName) && !dmmfDocument.isModelName(typeInfo.type)) { GraphQLType = getInputTypeName(typeInfo.type, dmmfDocument); } if (typeInfo.isList) { GraphQLType = `[${GraphQLType}]`; } return GraphQLType; } exports.getTypeGraphQLType = getTypeGraphQLType; function mapScalarToTypeGraphQLType(scalar, emitIdAsIDType, isIdField) { if (emitIdAsIDType && isIdField) { return `TypeGraphQL.ID`; } switch (scalar) { case PrismaScalars.String: case PrismaScalars.Boolean: { return scalar; } case PrismaScalars.Int: case PrismaScalars.Float: { return `TypeGraphQL.${scalar}`; } case PrismaScalars.DateTime: { return "Date"; } case PrismaScalars.Json: { return `GraphQLScalars.JSONResolver`; } case PrismaScalars.BigInt: { return "GraphQLScalars.BigIntResolver"; } case PrismaScalars.Decimal: { return "DecimalJSScalar"; } case PrismaScalars.Bytes: { return "GraphQLScalars.ByteResolver"; } default: { throw new Error(`Unrecognized scalar type: ${scalar}`); } } } exports.mapScalarToTypeGraphQLType = mapScalarToTypeGraphQLType; function camelCase(str) { return (0, lodash_1.camelCase)(str); } exports.camelCase = camelCase; function capitalizeFirstLetter(string) { return string && string.charAt(0).toUpperCase() + string.slice(1); } exports.capitalizeFirstLetter = capitalizeFirstLetter; function pascalCase(str) { return capitalizeFirstLetter(camelCase(str)); } exports.pascalCase = pascalCase; function getInputKeywordPhrasePosition(inputTypeName) { const inputParseResult = [ "Unchecked", "Create", "CountOrderBy", "AvgOrderBy", "MaxOrderBy", "MinOrderBy", "SumOrderBy", "OrderBy", "Update", "Upsert", "ScalarWhere", "Where", "ListRelationFilter", "RelationFilter", "Filter", ] .map(inputKeyword => inputTypeName.search(inputKeyword)) .filter(position => position >= 0); if (inputParseResult.length === 0) { return; } const keywordPhrasePosition = inputParseResult[0]; return keywordPhrasePosition; } function getModelNameFromInputType(inputTypeName) { const keywordPhrasePosition = getInputKeywordPhrasePosition(inputTypeName); if (!keywordPhrasePosition) { return; } const modelName = inputTypeName.slice(0, keywordPhrasePosition); return modelName; } exports.getModelNameFromInputType = getModelNameFromInputType; function getInputTypeName(originalInputName, dmmfDocument) { const keywordPhrasePosition = getInputKeywordPhrasePosition(originalInputName); if (!keywordPhrasePosition) { return originalInputName; } const modelName = originalInputName.slice(0, keywordPhrasePosition); const typeNameRest = originalInputName.slice(keywordPhrasePosition); const modelTypeName = dmmfDocument.getModelTypeName(modelName); if (!modelTypeName) { return originalInputName; } return `${modelTypeName}${typeNameRest}`; } exports.getInputTypeName = getInputTypeName; function cleanDocsString(documentation) { if (!documentation) { return; } let cleanedDocs = documentation; cleanedDocs = cleanedDocs.replace(helpers_1.modelAttributeRegex, ""); cleanedDocs = cleanedDocs.replace(helpers_1.fieldAttributeRegex, ""); cleanedDocs = cleanedDocs.split('"').join('\\"'); cleanedDocs = cleanedDocs.split("\n").join("\\n"); if (cleanedDocs.endsWith("\r")) { cleanedDocs = cleanedDocs.slice(0, -1); } if (cleanedDocs.endsWith("\\r")) { cleanedDocs = cleanedDocs.slice(0, -2); } if (cleanedDocs.endsWith("\n")) { cleanedDocs = cleanedDocs.slice(0, -1); } if (cleanedDocs.endsWith("\\n")) { cleanedDocs = cleanedDocs.slice(0, -2); } return cleanedDocs; } exports.cleanDocsString = cleanDocsString; function convertNewLines(str) { return str.split("\\n").join("\n"); } exports.convertNewLines = convertNewLines; function toUnixPath(maybeWindowsPath) { return maybeWindowsPath.split("\\").join("/"); } exports.toUnixPath = toUnixPath; //# sourceMappingURL=helpers.js.map