mirror of
https://github.com/nestjs/nest.git
synced 2026-02-21 23:11:44 +00:00
37 lines
1.0 KiB
TypeScript
37 lines
1.0 KiB
TypeScript
import { loadPackageSync } from '@nestjs/common/utils/load-package.util.js';
|
|
import { createRequire } from 'module';
|
|
import { NatsCodec } from '../external/nats-codec.interface.js';
|
|
import { IncomingEvent, IncomingRequest } from '../interfaces/index.js';
|
|
import { IncomingRequestDeserializer } from './incoming-request.deserializer.js';
|
|
|
|
let natsPackage = {} as any;
|
|
|
|
/**
|
|
* @publicApi
|
|
*/
|
|
export class NatsRequestJSONDeserializer extends IncomingRequestDeserializer {
|
|
private readonly jsonCodec: NatsCodec<unknown>;
|
|
|
|
constructor() {
|
|
super();
|
|
|
|
natsPackage = loadPackageSync(
|
|
'nats',
|
|
NatsRequestJSONDeserializer.name,
|
|
() => createRequire(import.meta.url)('nats'),
|
|
);
|
|
this.jsonCodec = natsPackage.JSONCodec();
|
|
}
|
|
|
|
deserialize(
|
|
value: Uint8Array,
|
|
options?: Record<string, any>,
|
|
):
|
|
| IncomingRequest
|
|
| IncomingEvent
|
|
| Promise<IncomingRequest | IncomingEvent> {
|
|
const decodedRequest = this.jsonCodec.decode(value);
|
|
return super.deserialize(decodedRequest, options);
|
|
}
|
|
}
|