diff --git a/package.json b/package.json index 475de15..44635bf 100644 --- a/package.json +++ b/package.json @@ -9,10 +9,10 @@ ], "type": "module", "exports": { - "./serve": "./dist/serve.js" + "./serve": "./dist/serve/serve.js" }, "scripts": { - "dev": "ts-node src/index.ts", + "dev": "ts-node --esm src/main.ts serve", "build": "rm -rf dist && tsc", "format": "prettier --write 'src/**/*.ts'", "format:check": "prettier --check 'src/**/*.ts'", diff --git a/src/grpc/discovery.ts b/src/grpc/discovery.ts new file mode 100644 index 0000000..564f0e4 --- /dev/null +++ b/src/grpc/discovery.ts @@ -0,0 +1,14 @@ +import grpc = require('@grpc/grpc-js'); +import { discovery1 } from '@cloudquery/plugin-pb-javascript'; + +export class DiscoveryServer extends discovery1.cloudquery.discovery.v1.UnimplementedDiscoveryService { + GetVersions( + call: grpc.ServerUnaryCall< + discovery1.cloudquery.discovery.v1.GetVersions.Request, + discovery1.cloudquery.discovery.v1.GetVersions.Response + >, + callback: grpc.sendUnaryData, + ): void { + return callback(null, new discovery1.cloudquery.discovery.v1.GetVersions.Response({ versions: [3] })); + } +} diff --git a/src/grpc/plugin.ts b/src/grpc/plugin.ts new file mode 100644 index 0000000..44c3f36 --- /dev/null +++ b/src/grpc/plugin.ts @@ -0,0 +1,72 @@ +import grpc = require('@grpc/grpc-js'); +import { pluginV3 } from '@cloudquery/plugin-pb-javascript'; + +export class PluginServer extends pluginV3.cloudquery.plugin.v3.UnimplementedPluginService { + GetName( + call: grpc.ServerUnaryCall< + pluginV3.cloudquery.plugin.v3.GetName.Request, + pluginV3.cloudquery.plugin.v3.GetName.Response + >, + callback: grpc.sendUnaryData, + ): void { + throw new Error('Method not implemented.'); + } + GetVersion( + call: grpc.ServerUnaryCall< + pluginV3.cloudquery.plugin.v3.GetVersion.Request, + pluginV3.cloudquery.plugin.v3.GetVersion.Response + >, + callback: grpc.sendUnaryData, + ): void { + throw new Error('Method not implemented.'); + } + Init( + call: grpc.ServerUnaryCall, + callback: grpc.sendUnaryData, + ): void { + throw new Error('Method not implemented.'); + } + GetTables( + call: grpc.ServerUnaryCall< + pluginV3.cloudquery.plugin.v3.GetTables.Request, + pluginV3.cloudquery.plugin.v3.GetTables.Response + >, + callback: grpc.sendUnaryData, + ): void { + throw new Error('Method not implemented.'); + } + Sync( + call: grpc.ServerWritableStream< + pluginV3.cloudquery.plugin.v3.Sync.Request, + pluginV3.cloudquery.plugin.v3.Sync.Response + >, + ): void { + throw new Error('Method not implemented.'); + } + Read( + call: grpc.ServerWritableStream< + pluginV3.cloudquery.plugin.v3.Read.Request, + pluginV3.cloudquery.plugin.v3.Read.Response + >, + ): void { + throw new Error('Method not implemented.'); + } + Write( + call: grpc.ServerReadableStream< + pluginV3.cloudquery.plugin.v3.Write.Request, + pluginV3.cloudquery.plugin.v3.Write.Response + >, + callback: grpc.sendUnaryData, + ): void { + throw new Error('Method not implemented.'); + } + Close( + call: grpc.ServerUnaryCall< + pluginV3.cloudquery.plugin.v3.Close.Request, + pluginV3.cloudquery.plugin.v3.Close.Response + >, + callback: grpc.sendUnaryData, + ): void { + throw new Error('Method not implemented.'); + } +} diff --git a/src/grpc/server.ts b/src/grpc/server.ts index 3dd3d0a..7388b76 100644 --- a/src/grpc/server.ts +++ b/src/grpc/server.ts @@ -1,88 +1,8 @@ -import { discovery1 } from '@cloudquery/plugin-pb-javascript'; -import { pluginV3 } from '@cloudquery/plugin-pb-javascript'; import grpc = require('@grpc/grpc-js'); - -class DiscoveryServer extends discovery1.cloudquery.discovery.v1.UnimplementedDiscoveryService { - GetVersions( - call: grpc.ServerUnaryCall< - discovery1.cloudquery.discovery.v1.GetVersions.Request, - discovery1.cloudquery.discovery.v1.GetVersions.Response - >, - callback: grpc.sendUnaryData, - ): void { - throw new Error('Method not implemented.'); - } -} - -class PluginServer extends pluginV3.cloudquery.plugin.v3.UnimplementedPluginService { - GetName( - call: grpc.ServerUnaryCall< - pluginV3.cloudquery.plugin.v3.GetName.Request, - pluginV3.cloudquery.plugin.v3.GetName.Response - >, - callback: grpc.sendUnaryData, - ): void { - throw new Error('Method not implemented.'); - } - GetVersion( - call: grpc.ServerUnaryCall< - pluginV3.cloudquery.plugin.v3.GetVersion.Request, - pluginV3.cloudquery.plugin.v3.GetVersion.Response - >, - callback: grpc.sendUnaryData, - ): void { - throw new Error('Method not implemented.'); - } - Init( - call: grpc.ServerUnaryCall, - callback: grpc.sendUnaryData, - ): void { - throw new Error('Method not implemented.'); - } - GetTables( - call: grpc.ServerUnaryCall< - pluginV3.cloudquery.plugin.v3.GetTables.Request, - pluginV3.cloudquery.plugin.v3.GetTables.Response - >, - callback: grpc.sendUnaryData, - ): void { - throw new Error('Method not implemented.'); - } - Sync( - call: grpc.ServerWritableStream< - pluginV3.cloudquery.plugin.v3.Sync.Request, - pluginV3.cloudquery.plugin.v3.Sync.Response - >, - ): void { - throw new Error('Method not implemented.'); - } - Read( - call: grpc.ServerWritableStream< - pluginV3.cloudquery.plugin.v3.Read.Request, - pluginV3.cloudquery.plugin.v3.Read.Response - >, - ): void { - throw new Error('Method not implemented.'); - } - Write( - call: grpc.ServerReadableStream< - pluginV3.cloudquery.plugin.v3.Write.Request, - pluginV3.cloudquery.plugin.v3.Write.Response - >, - callback: grpc.sendUnaryData, - ): void { - throw new Error('Method not implemented.'); - } - Close( - call: grpc.ServerUnaryCall< - pluginV3.cloudquery.plugin.v3.Close.Request, - pluginV3.cloudquery.plugin.v3.Close.Response - >, - callback: grpc.sendUnaryData, - ): void { - throw new Error('Method not implemented.'); - } -} +import { pluginV3 } from '@cloudquery/plugin-pb-javascript'; +import { discovery1 } from '@cloudquery/plugin-pb-javascript'; +import { PluginServer } from './plugin.js'; +import { DiscoveryServer } from './discovery.js'; export const getServer = () => { const server = new grpc.Server(); diff --git a/src/main.ts b/src/main.ts index b9abefd..4a3e66b 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,4 +1,4 @@ #!/usr/bin/env node -import { serve } from './serve.js'; +import { serve } from './serve/serve.js'; serve.parse(); diff --git a/src/serve.test.ts b/src/serve/serve.test.ts similarity index 100% rename from src/serve.test.ts rename to src/serve/serve.test.ts diff --git a/src/serve.ts b/src/serve/serve.ts similarity index 96% rename from src/serve.ts rename to src/serve/serve.ts index 48fae33..f6d423d 100644 --- a/src/serve.ts +++ b/src/serve/serve.ts @@ -1,5 +1,6 @@ import yargs from 'yargs'; import { hideBin } from 'yargs/helpers'; +import { startServer } from '../grpc/server.js'; const NETWORK_CHOICES = ['tcp', 'tcp4', 'tcp6', 'unix', 'unixpacket'] as const; const LOG_LEVEL_CHOICES = ['trace', 'debug', 'info', 'warn', 'error'] as const; @@ -24,6 +25,7 @@ export const serve = yargs(hideBin(process.argv)) () => {}, ({ address, network, logLevel, logFormat, sentry: sentry, otelEndpoint, telemetryLevel }: ServeArgs) => { console.log({ address, network, logLevel, logFormat, sentry, otelEndpoint, telemetryLevel }); + startServer(address); }, ) .options({