chore: Add missing ".js" extensions to imports and improve Node.js compatibility for dynamic schema loading

This commit is contained in:
Andreas Hilbig 2026-01-13 14:42:11 +01:00
parent 1c1aeb4519
commit 98c612fc56
15 changed files with 121 additions and 70 deletions

View file

@ -1,6 +1,6 @@
import {isObjectType} from "graphql";
import {logger} from "../logging/logger.js";
import {Device, Host} from "../schema/generated/graphql";
import {Device, Host} from "../schema/generated/graphql.js";
export const isDevice = (value: Host): value is Device => !!(value as Device).deviceType;

View file

@ -17,8 +17,8 @@ import {
StorageItemType,
} from "../schema/generated/graphql.js";
import {HostImporter} from "../execution/host_importer";
import {HostValueExporter} from "../execution/host_exporter";
import {HostImporter} from "../execution/host_importer.js";
import {HostValueExporter} from "../execution/host_exporter.js";
import {logger} from "../logging/logger.js";
import {ParsedArgs, ZabbixRequest} from "../datasources/zabbix-request.js";
import {ZabbixCreateHostRequest, ZabbixQueryHostsRequestWithItemsAndInventory,} from "../datasources/zabbix-hosts.js";
@ -34,10 +34,10 @@ import {
ZabbixImportUserRolesRequest,
ZabbixQueryUserRolesRequest
} from "../datasources/zabbix-userroles.js";
import {ZABBIX_EDGE_DEVICE_BASE_GROUP, zabbixAPI} from "../datasources/zabbix-api";
import {GraphQLInterfaceType, GraphQLList} from "graphql/type";
import {isDevice} from "./resolver_helpers";
import {ZabbixPermissionsHelper} from "../datasources/zabbix-permissions";
import {ZABBIX_EDGE_DEVICE_BASE_GROUP, zabbixAPI} from "../datasources/zabbix-api.js";
import {GraphQLInterfaceType, GraphQLList} from "graphql/type/index.js";
import {isDevice} from "./resolver_helpers.js";
import {ZabbixPermissionsHelper} from "../datasources/zabbix-permissions.js";
export function createResolvers(): Resolvers {

View file

@ -7,6 +7,7 @@ import {makeExecutableSchema, mergeSchemas} from "@graphql-tools/schema";
import {readFileSync} from "fs";
import {GraphQLSchema} from "graphql/type";
import {createResolvers} from "./resolvers.js";
import {readdirSync} from "node:fs";
const createZabbixHierarchicalDeviceFieldResolver =
@ -25,7 +26,12 @@ const createZabbixHierarchicalDeviceTagsResolver =
}
export async function schema_loader(): Promise<GraphQLSchema> {
const resolvers = createResolvers();
let typeDefs: string = readFileSync('./src/schema/*.graphql', {encoding: 'utf-8'});
const schemaPath = process.env.SCHEMA_PATH || './src/schema/';
var schemaFiles = readdirSync(schemaPath).filter(fn => fn.endsWith('.graphql'));
let typeDefs: string = "";
for (const schemaFile of schemaFiles) {
typeDefs += readFileSync(schemaPath + schemaFile, {encoding: 'utf-8'});
}
if (process.env.ADDITIONAL_SCHEMAS) {
for (const schema of process.env.ADDITIONAL_SCHEMAS.split(",")){
typeDefs += readFileSync(schema, {encoding: 'utf-8'});

View file

@ -8,7 +8,7 @@ import express from 'express';
import cors from "cors";
import {ApolloServerPluginDrainHttpServer} from '@apollo/server/plugin/drainHttpServer';
import {logger} from "../logging/logger.js";
import {zabbixAPI, zabbixRequestAuthToken} from "../datasources/zabbix-api";
import {zabbixAPI, zabbixRequestAuthToken} from "../datasources/zabbix-api.js";
import {WebSocketServer} from "ws";
import {useServer} from "graphql-ws/lib/use/ws";