UNPKG

@medusajs/index

Version:
88 lines 3.67 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.gqlSchemaToTypes = gqlSchemaToTypes; const modules_sdk_1 = require("@medusajs/framework/modules-sdk"); const utils_1 = require("@medusajs/framework/utils"); const path_1 = require("path"); const process = __importStar(require("process")); async function gqlSchemaToTypes(executableSchema) { const filename = "index-service-entry-points"; const filenameWithExt = filename + ".d.ts"; const dir = (0, path_1.join)(process.cwd(), ".medusa/types"); await (0, utils_1.gqlSchemaToTypes)({ schema: executableSchema, filename, interfaceName: "IndexServiceEntryPoints", outputDir: dir, joinerConfigs: modules_sdk_1.MedusaModule.getAllJoinerConfigs(), }); const fileSystem = new utils_1.FileSystem(dir); let content = await fileSystem.contents(filenameWithExt); await fileSystem.remove(filenameWithExt); const entryPoints = buildEntryPointsTypeMap(content); const indexEntryPoints = ` declare module '@medusajs/framework/types' { interface IndexServiceEntryPoints { ${entryPoints .map((entry) => ` ${entry.entryPoint}: ${entry.entityType}`) .join("\n")} } }`; const contentToReplaceMatcher = new RegExp(`declare\\s+module\\s+['"][^'"]+['"]\\s*{([^}]*?)}\\s+}`, "gm"); content = content.replace(contentToReplaceMatcher, indexEntryPoints); await fileSystem.create(filenameWithExt, content); } function buildEntryPointsTypeMap(schema) { // build map entry point to there type to be merged and used by the remote query const joinerConfigs = modules_sdk_1.MedusaModule.getAllJoinerConfigs(); return joinerConfigs .flatMap((config) => { const aliases = Array.isArray(config.alias) ? config.alias : config.alias ? [config.alias] : []; return aliases.flatMap((alias) => { const names = Array.isArray(alias.name) ? alias.name : [alias.name]; const entity = alias?.["entity"]; return names.map((aliasItem) => { if (!schema.includes(`export type ${entity} `)) { return; } return { entryPoint: aliasItem, entityType: entity ? schema.includes(`export type ${entity} `) ? alias?.["entity"] : "any" : "any", }; }); }); }) .filter(Boolean); } //# sourceMappingURL=gql-to-types.js.map