chore: Add missing ".js" extensions to imports and improve Node.js compatibility for dynamic schema loading
This commit is contained in:
parent
1c1aeb4519
commit
98c612fc56
15 changed files with 121 additions and 70 deletions
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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'});
|
||||
|
|
|
|||
|
|
@ -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";
|
||||
|
||||
|
|
|
|||
|
|
@ -1,13 +1,13 @@
|
|||
import {isZabbixErrorResult, ParsedArgs, ZabbixParams, ZabbixRequest} from "./zabbix-request.js";
|
||||
import {isZabbixErrorResult, ParsedArgs, ZabbixParams} from "./zabbix-request.js";
|
||||
import {Permission} from "../schema/generated/graphql.js";
|
||||
import {
|
||||
FIND_ZABBIX_EDGE_DEVICE_BASE_GROUP_PREFIX,
|
||||
ZABBIX_EDGE_DEVICE_BASE_GROUP,
|
||||
ZabbixAPI,
|
||||
zabbixSuperAuthToken
|
||||
} from "./zabbix-api";
|
||||
import {logger} from "../logging/logger";
|
||||
import {ZabbixRequestWithPermissions} from "./zabbix-permissions";
|
||||
} from "./zabbix-api.js";
|
||||
import {logger} from "../logging/logger.js";
|
||||
import {ZabbixRequestWithPermissions} from "./zabbix-permissions.js";
|
||||
|
||||
export interface CreateHostGroupResult {
|
||||
groupids: string[]
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import {ParsedArgs, ZabbixRequest} from "./zabbix-request.js";
|
||||
import {ZabbixItem} from "../schema/generated/graphql";
|
||||
import {ZabbixItem} from "../schema/generated/graphql.js";
|
||||
|
||||
|
||||
export class ZabbixQueryItemsRequest extends ZabbixRequest<ZabbixItem[]> {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import {ParsedArgs, ZabbixErrorResult, ZabbixRequest, ZabbixResult} from "./zabbix-request.js";
|
||||
import {ZabbixAPI} from "./zabbix-api";
|
||||
import {InputMaybe, Permission, QueryHasPermissionsArgs, UserPermission} from "../schema/generated/graphql";
|
||||
import {ApiErrorCode, PermissionNumber} from "../model/model_enum_values";
|
||||
import {ZabbixAPI} from "./zabbix-api.js";
|
||||
import {InputMaybe, Permission, QueryHasPermissionsArgs, UserPermission} from "../schema/generated/graphql.js";
|
||||
import {ApiErrorCode, PermissionNumber} from "../model/model_enum_values.js";
|
||||
|
||||
|
||||
export class ZabbixRequestWithPermissions<T extends ZabbixResult, A extends ParsedArgs = ParsedArgs> extends ZabbixRequest<T, A> {
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import {ApiErrorCode, ApiErrorMessage} from "../model/model_enum_values.js";
|
|||
import {ZabbixQueryItemsRequest} from "../datasources/zabbix-items.js";
|
||||
import {isZabbixErrorResult, ParsedArgs, ZabbixErrorResult} from "../datasources/zabbix-request.js";
|
||||
import {ZabbixHistoryGetParams, ZabbixQueryHistoryRequest} from "../datasources/zabbix-history.js";
|
||||
import {zabbixAPI} from "../datasources/zabbix-api";
|
||||
import {zabbixAPI} from "../datasources/zabbix-api.js";
|
||||
|
||||
type FilterCombo = {
|
||||
deviceKey: string,
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ import {logger} from "../logging/logger.js";
|
|||
import {ZabbixQueryTemplatesRequest} from "../datasources/zabbix-templates.js";
|
||||
import {isZabbixErrorResult, ParsedArgs, ZabbixErrorResult} from "../datasources/zabbix-request.js";
|
||||
import {CreateHostGroupResult, GroupHelper, ZabbixCreateHostGroupRequest} from "../datasources/zabbix-hostgroups.js";
|
||||
import {ZABBIX_EDGE_DEVICE_BASE_GROUP, zabbixAPI} from "../datasources/zabbix-api";
|
||||
import {ZABBIX_EDGE_DEVICE_BASE_GROUP, zabbixAPI} from "../datasources/zabbix-api.js";
|
||||
|
||||
export class HostImporter {
|
||||
public static getHostGroupHierarchyNames(hostGroups: Array<CreateHostGroup>) {
|
||||
|
|
|
|||
|
|
@ -16,6 +16,11 @@ interface Host {
|
|||
hostgroups: [HostGroup!]
|
||||
name: String
|
||||
tags: JSONObject
|
||||
"""
|
||||
Specifies the type or category of the device. Used to define the classification
|
||||
of a device in the system (capabilities, functionalities, or purpose).
|
||||
"""
|
||||
deviceType: String
|
||||
}
|
||||
|
||||
type ZabbixItem {
|
||||
|
|
@ -56,6 +61,11 @@ type ZabbixHost implements Host {
|
|||
name: String
|
||||
tags: JSONObject
|
||||
|
||||
"""
|
||||
Specifies the type or category of the device. Used to define the classification
|
||||
of a device in the system (capabilities, functionalities, or purpose).
|
||||
"""
|
||||
deviceType: String
|
||||
|
||||
items: [ZabbixItem!]
|
||||
inventory: Inventory
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue