@powership/server
Version:
1 lines • 4.82 kB
Source Map (JSON)
{"version":3,"file":"errorHandler.cjs","names":["_utils","require","_graphql","_BaseRequestHandler","Processed","exports","Symbol","defaultHandler","err","isHttpError","errId","ulid","message","console","error","stack","setDefaultHandler","handlerFn","maskErrors","thing","fn","GraphQLSchema","maskSchema","GraphQLObjectType","maskType","maskField","field","resolveFn","resolve","args","out","call","Promise","e","_resolveFn","type","getFields","fields","fieldName","Object","hasOwnProperty","schema","types","getTypeMap","typeName"],"sources":["../../src/graphql/errorHandler.ts"],"sourcesContent":["import { AnyFunction, ulid } from '@powership/utils';\nimport { GraphQLObjectType, GraphQLSchema } from 'graphql';\n\nimport { isHttpError } from '../BaseRequestHandler';\n\n// Mark field/type/schema\nexport const Processed = Symbol();\n\n// Modifies errors before sending to the user\nexport let defaultHandler = function (err: any) {\n if (isHttpError(err)) {\n return err;\n }\n const errId = `gql#${ulid()}`;\n err.message = `${err.message}: ${errId}`;\n console.error((err && err.stack) || err);\n err.message = `Internal Error: ${errId}`;\n return err;\n};\n\n// Changes the default error handler function\nexport function setDefaultHandler(handlerFn: any) {\n defaultHandler = handlerFn;\n}\n\n// Masks graphql schemas, types or individual fields\nexport function maskErrors(thing: any, fn = defaultHandler) {\n if (thing instanceof GraphQLSchema) {\n maskSchema(thing, fn);\n } else if (thing instanceof GraphQLObjectType) {\n maskType(thing, fn);\n } else {\n maskField(thing, fn);\n }\n}\n\nfunction maskField(field: any, fn: AnyFunction) {\n const resolveFn = field.resolve;\n if (field[Processed] || !resolveFn) {\n return;\n }\n\n field[Processed] = true;\n field.resolve = async function (...args: any) {\n try {\n const out = resolveFn.call(this, ...args);\n return await Promise.resolve(out);\n } catch (e) {\n throw fn(e, args);\n }\n };\n\n // save the original resolve function\n field.resolve._resolveFn = resolveFn;\n}\n\nfunction maskType(type: any, fn: AnyFunction) {\n if (type[Processed] || !type.getFields) {\n return;\n }\n\n const fields = type.getFields();\n for (const fieldName in fields) {\n if (!Object.hasOwnProperty.call(fields, fieldName)) {\n continue;\n }\n\n maskField(fields[fieldName], fn);\n }\n}\n\nfunction maskSchema(schema: any, fn: AnyFunction) {\n const types = schema.getTypeMap();\n for (const typeName in types) {\n if (!Object.hasOwnProperty.call(types, typeName)) {\n continue;\n }\n\n maskType(types[typeName], fn);\n }\n}\n"],"mappings":"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","ignoreList":[]}