UNPKG

@unly/ra-data-graphql-prisma

Version:
76 lines 3.66 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var graphql_1 = require("graphql"); var ra_core_1 = require("ra-core"); var getFinalType_1 = __importDefault(require("./utils/getFinalType")); var sanitizeResource = function (introspectionResults, resource, fieldAliasResolver) { return function (record) { return Object.keys(record).reduce(function (acc, fieldName) { var _a, _b, _c, _d; if (fieldName.startsWith('_')) { return acc; } var field = resource.type.fields.find(function (field) { return field.name === fieldName; }); if (typeof field === 'undefined' && fieldAliasResolver) { var fieldAlias = resource.type.fields.find(function (field) { return field.name === fieldAliasResolver(field, fieldName, acc, introspectionResults); }); if (fieldAlias) { field = __assign(__assign({}, fieldAlias), { name: fieldName }); } } if (typeof field === 'undefined') { console.error("Field \"" + fieldName + "\" couldn't be resolved from introspection using resource \"" + resource.type.name + "\":", resource); return acc; } var type = getFinalType_1.default(field.type); if (type.kind !== graphql_1.TypeKind.OBJECT) { return __assign(__assign({}, acc), (_a = {}, _a[field.name] = record[field.name], _a)); } var linkedResource = introspectionResults.resources.find(function (r) { return r.type.name === type.name; }); if (linkedResource) { var linkedResourceData = record[field.name]; if (Array.isArray(linkedResourceData)) { return __assign(__assign({}, acc), (_b = {}, _b[field.name] = record[field.name].map(sanitizeResource(introspectionResults, linkedResource)), _b[field.name + "Ids"] = record[field.name].map(function (d) { return d.id; }), _b)); } return __assign(__assign({}, acc), (_c = {}, _c[field.name + ".id"] = linkedResourceData ? record[field.name].id : undefined, _c[field.name] = linkedResourceData ? sanitizeResource(introspectionResults, linkedResource)(record[field.name]) : undefined, _c)); } return __assign(__assign({}, acc), (_d = {}, _d[field.name] = record[field.name], _d)); }, {}); }; }; exports.default = (function (introspectionResults, fieldAliasResolver) { return function (aorFetchType, resource) { return function (response) { var sanitize = sanitizeResource(introspectionResults, resource, fieldAliasResolver); if (aorFetchType === ra_core_1.GET_LIST || aorFetchType === ra_core_1.GET_MANY || aorFetchType === ra_core_1.GET_MANY_REFERENCE) { var data = response.data; return { data: data.items.map(sanitize), total: data.total.aggregate.count, }; } else { var data = response.data; return { data: sanitize(data.data) }; } }; }; }); //# sourceMappingURL=getResponseParser.js.map