@progress/telerik-blazor-mcp
Version:
Model Context Protocol for Blazor
43 lines (42 loc) • 1.49 kB
JavaScript
import protoLoader from '@grpc/proto-loader';
import grpc from '@grpc/grpc-js';
import { dirname, join } from 'path';
import { fileURLToPath } from 'url';
import { readLicense } from './read-license.js';
import { log } from './logger.js';
const protoPath = join(dirname(fileURLToPath(import.meta.url)), '../../proto/service.proto');
const proto = protoLoader.loadSync(protoPath, {
keepCase: true,
longs: String,
enums: String,
defaults: true,
oneofs: true,
});
const protoDescriptor = grpc.loadPackageDefinition(proto);
const service = protoDescriptor.ContextQueryService;
const client = new service('contextapi.telerik.com:443', grpc.credentials.createSsl());
export async function query(queryParams) {
let license = readLicense();
const metadata = new grpc.Metadata();
if (license && typeof license === 'string') {
// Check for BOM character and trim it
license = license.replace(/^\uFEFF/, '');
try {
metadata.add('x-license-key', license);
}
catch (error) {
log('Error adding license key to metadata:', error);
return Promise.reject(new Error(`Failed to use license key: ${error.message}`));
}
}
return new Promise((resolve, reject) => {
client.query(queryParams, metadata, (err, response) => {
if (err) {
reject(err);
}
else {
resolve(response);
}
});
});
}