UNPKG

@webundsoehne/nestjs-graphql-typeorm-dataloader

Version:

A library to utilize the graphql-dataloader with nestjs and typeorm.

55 lines (54 loc) 2.61 kB
var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var custom_loader_middleware_exports = {}; __export(custom_loader_middleware_exports, { CustomLoaderMiddleware: () => CustomLoaderMiddleware }); module.exports = __toCommonJS(custom_loader_middleware_exports); var import_dataloader = __toESM(require("dataloader")); var import_typedi = __toESM(require("typedi")); var import_context = require("../constants/context.constants"); var import_extension_field = require("../constants/extension-field.constants"); const CustomLoaderMiddleware = /* @__PURE__ */ __name(async ({ context, info }, next) => { const extensions = info.parentType.getFields()[info.fieldName].extensions?.[import_extension_field.CUSTOM_DATALOADER_EXTENSION_FIELD]; const args = extensions?.args; if (!args) { return next(); } const serviceId = `${import_context.DATA_LOADER_CONTEXT_KEY}#${extensions.target.constructor.name}#${extensions.key.toString()}`; const { requestId } = context[import_context.DATA_LOADER_CONTEXT_KEY]; const container = import_typedi.default.of(requestId); if (!container.has(serviceId)) { container.set(serviceId, new import_dataloader.default((keys) => args.batchLoadFn(keys, { context }), args?.options)); } const dataloader = container.get(serviceId); return (await next())(dataloader); }, "CustomLoaderMiddleware"); // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { CustomLoaderMiddleware });