@atls/nestjs-grpc-http-proxy 0.0.11 → 0.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/authenticators/authentication.service.d.ts +1 -1
- package/dist/authenticators/authentication.service.js +7 -9
- package/dist/authenticators/authenticator.interface.js +1 -2
- package/dist/authenticators/header.authenticator.d.ts +1 -1
- package/dist/authenticators/header.authenticator.js +1 -5
- package/dist/authenticators/index.d.ts +4 -4
- package/dist/authenticators/index.js +4 -20
- package/dist/authenticators/private-key.authenticator.d.ts +1 -1
- package/dist/authenticators/private-key.authenticator.js +11 -17
- package/dist/controllers/grpc-http-proxy.controller.d.ts +2 -2
- package/dist/controllers/grpc-http-proxy.controller.js +28 -32
- package/dist/controllers/index.d.ts +1 -1
- package/dist/controllers/index.js +1 -17
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -18
- package/dist/module/grpc-http-proxy-module-options.interface.d.ts +1 -1
- package/dist/module/grpc-http-proxy-module-options.interface.js +1 -2
- package/dist/module/grpc-http-proxy.constants.js +1 -4
- package/dist/module/grpc-http-proxy.module.d.ts +2 -2
- package/dist/module/grpc-http-proxy.module.js +17 -20
- package/dist/module/grpc-http-proxy.providers.d.ts +1 -1
- package/dist/module/grpc-http-proxy.providers.js +7 -13
- package/dist/module/index.d.ts +3 -3
- package/dist/module/index.js +3 -19
- package/dist/proto/index.d.ts +1 -1
- package/dist/proto/index.js +1 -17
- package/dist/proto/proto.client.js +6 -9
- package/dist/proto/proto.registry.d.ts +2 -2
- package/dist/proto/proto.registry.js +16 -21
- package/package.json +44 -23
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Request } from 'express';
|
|
2
2
|
import { Response } from 'express';
|
|
3
|
-
import { GrpcHttpProxyModuleOptions } from '../module/
|
|
3
|
+
import { GrpcHttpProxyModuleOptions } from '../module/index.js';
|
|
4
4
|
export declare class AuthenticationService {
|
|
5
5
|
private readonly options;
|
|
6
6
|
constructor(options: GrpcHttpProxyModuleOptions);
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
2
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
3
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -11,12 +10,11 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
11
10
|
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
11
|
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
12
|
};
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
const common_2 = require("@nestjs/common");
|
|
18
|
-
const grpc_http_proxy_constants_1 = require("../module/grpc-http-proxy.constants");
|
|
13
|
+
import { Injectable } from '@nestjs/common';
|
|
14
|
+
import { Inject } from '@nestjs/common';
|
|
15
|
+
import { GRPC_HTTP_PROXY_MODULE_OPTIONS } from '../module/index.js';
|
|
19
16
|
let AuthenticationService = class AuthenticationService {
|
|
17
|
+
options;
|
|
20
18
|
constructor(options) {
|
|
21
19
|
this.options = options;
|
|
22
20
|
}
|
|
@@ -28,8 +26,8 @@ let AuthenticationService = class AuthenticationService {
|
|
|
28
26
|
}
|
|
29
27
|
};
|
|
30
28
|
AuthenticationService = __decorate([
|
|
31
|
-
|
|
32
|
-
__param(0,
|
|
29
|
+
Injectable(),
|
|
30
|
+
__param(0, Inject(GRPC_HTTP_PROXY_MODULE_OPTIONS)),
|
|
33
31
|
__metadata("design:paramtypes", [Object])
|
|
34
32
|
], AuthenticationService);
|
|
35
|
-
|
|
33
|
+
export { AuthenticationService };
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
1
|
+
export {};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Request } from 'express';
|
|
2
|
-
import { Authenticator } from './authenticator.interface';
|
|
2
|
+
import { Authenticator } from './authenticator.interface.js';
|
|
3
3
|
export declare class HeaderAuthenticator implements Authenticator {
|
|
4
4
|
execute(req: Request): Promise<string | null>;
|
|
5
5
|
}
|
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.HeaderAuthenticator = void 0;
|
|
4
|
-
class HeaderAuthenticator {
|
|
1
|
+
export class HeaderAuthenticator {
|
|
5
2
|
async execute(req) {
|
|
6
3
|
return req.headers.authorization || null;
|
|
7
4
|
}
|
|
8
5
|
}
|
|
9
|
-
exports.HeaderAuthenticator = HeaderAuthenticator;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export * from './authenticator.interface';
|
|
2
|
-
export * from './authentication.service';
|
|
3
|
-
export * from './private-key.authenticator';
|
|
4
|
-
export * from './header.authenticator';
|
|
1
|
+
export * from './authenticator.interface.js';
|
|
2
|
+
export * from './authentication.service.js';
|
|
3
|
+
export * from './private-key.authenticator.js';
|
|
4
|
+
export * from './header.authenticator.js';
|
|
@@ -1,20 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./authenticator.interface"), exports);
|
|
18
|
-
__exportStar(require("./authentication.service"), exports);
|
|
19
|
-
__exportStar(require("./private-key.authenticator"), exports);
|
|
20
|
-
__exportStar(require("./header.authenticator"), exports);
|
|
1
|
+
export * from "./authenticator.interface.js";
|
|
2
|
+
export * from "./authentication.service.js";
|
|
3
|
+
export * from "./private-key.authenticator.js";
|
|
4
|
+
export * from "./header.authenticator.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Request } from 'express';
|
|
2
2
|
import { Response } from 'express';
|
|
3
|
-
import { Authenticator } from './authenticator.interface';
|
|
3
|
+
import { Authenticator } from './authenticator.interface.js';
|
|
4
4
|
export declare class PrivateKeyAuthenticator implements Authenticator {
|
|
5
5
|
private readonly privateKey?;
|
|
6
6
|
constructor(privateKey?: string | undefined);
|
|
@@ -1,14 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const cookie_1 = __importDefault(require("cookie"));
|
|
8
|
-
const fs_1 = require("fs");
|
|
9
|
-
const jsonwebtoken_1 = require("jsonwebtoken");
|
|
10
|
-
const uuid_1 = require("uuid");
|
|
11
|
-
class PrivateKeyAuthenticator {
|
|
1
|
+
import { promises as fs } from 'fs';
|
|
2
|
+
import { sign } from 'jsonwebtoken';
|
|
3
|
+
import { v4 as uuid } from 'uuid';
|
|
4
|
+
import cookie from 'cookie';
|
|
5
|
+
export class PrivateKeyAuthenticator {
|
|
6
|
+
privateKey;
|
|
12
7
|
constructor(privateKey) {
|
|
13
8
|
this.privateKey = privateKey;
|
|
14
9
|
if (!this.privateKey) {
|
|
@@ -17,20 +12,19 @@ class PrivateKeyAuthenticator {
|
|
|
17
12
|
}
|
|
18
13
|
async execute(req, res) {
|
|
19
14
|
if (this.privateKey) {
|
|
20
|
-
const cookies =
|
|
21
|
-
const subject = cookies.subject || (
|
|
15
|
+
const cookies = cookie.parse(req.headers.cookie || '');
|
|
16
|
+
const subject = cookies.subject || uuid();
|
|
22
17
|
if (!cookies.subject) {
|
|
23
|
-
res.setHeader('Set-Cookie',
|
|
18
|
+
res.setHeader('Set-Cookie', cookie.serialize('subject', String(subject), {
|
|
24
19
|
maxAge: 60 * 60 * 24 * 7,
|
|
25
20
|
httpOnly: true,
|
|
26
21
|
path: '/',
|
|
27
22
|
}));
|
|
28
23
|
}
|
|
29
|
-
const privateKey = await
|
|
30
|
-
const token =
|
|
24
|
+
const privateKey = await fs.readFile(this.privateKey, 'utf-8');
|
|
25
|
+
const token = sign({ sub: subject }, privateKey, { algorithm: 'RS256' });
|
|
31
26
|
return `Bearer ${token}`;
|
|
32
27
|
}
|
|
33
28
|
return null;
|
|
34
29
|
}
|
|
35
30
|
}
|
|
36
|
-
exports.PrivateKeyAuthenticator = PrivateKeyAuthenticator;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { AuthenticationService } from '../authenticators';
|
|
2
|
-
import { ProtoRegistry } from '../proto';
|
|
1
|
+
import { AuthenticationService } from '../authenticators/index.js';
|
|
2
|
+
import { ProtoRegistry } from '../proto/index.js';
|
|
3
3
|
export declare class GrpcHttpProxyController {
|
|
4
4
|
private readonly protoRegistry;
|
|
5
5
|
private readonly authenticator;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
2
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
3
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -11,24 +10,21 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
11
10
|
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
11
|
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
12
|
};
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
const common_7 = require("@nestjs/common");
|
|
27
|
-
const common_8 = require("@nestjs/common");
|
|
28
|
-
const buffer_json_1 = __importDefault(require("buffer-json"));
|
|
29
|
-
const authenticators_1 = require("../authenticators");
|
|
30
|
-
const proto_1 = require("../proto");
|
|
13
|
+
import { ErrorStatus } from '@atls/grpc-error-status';
|
|
14
|
+
import { Controller } from '@nestjs/common';
|
|
15
|
+
import { Body } from '@nestjs/common';
|
|
16
|
+
import { Post } from '@nestjs/common';
|
|
17
|
+
import { HttpCode } from '@nestjs/common';
|
|
18
|
+
import { Param } from '@nestjs/common';
|
|
19
|
+
import { Header } from '@nestjs/common';
|
|
20
|
+
import { Req } from '@nestjs/common';
|
|
21
|
+
import { Res } from '@nestjs/common';
|
|
22
|
+
import BJSON from 'buffer-json';
|
|
23
|
+
import { AuthenticationService } from '../authenticators/index.js';
|
|
24
|
+
import { ProtoRegistry } from '../proto/index.js';
|
|
31
25
|
let GrpcHttpProxyController = class GrpcHttpProxyController {
|
|
26
|
+
protoRegistry;
|
|
27
|
+
authenticator;
|
|
32
28
|
constructor(protoRegistry, authenticator) {
|
|
33
29
|
this.protoRegistry = protoRegistry;
|
|
34
30
|
this.authenticator = authenticator;
|
|
@@ -37,29 +33,29 @@ let GrpcHttpProxyController = class GrpcHttpProxyController {
|
|
|
37
33
|
try {
|
|
38
34
|
const authorization = await this.authenticator.authenticate(req, res);
|
|
39
35
|
const data = await this.protoRegistry.getClient(service).call(method, body, { authorization });
|
|
40
|
-
res.send(
|
|
36
|
+
res.send(BJSON.stringify(data));
|
|
41
37
|
}
|
|
42
38
|
catch (error) {
|
|
43
|
-
res.send(
|
|
39
|
+
res.send(BJSON.stringify(ErrorStatus.fromServiceError(error).toObject()));
|
|
44
40
|
}
|
|
45
41
|
}
|
|
46
42
|
};
|
|
47
43
|
__decorate([
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
__param(0,
|
|
52
|
-
__param(1,
|
|
53
|
-
__param(2,
|
|
54
|
-
__param(3,
|
|
55
|
-
__param(4,
|
|
44
|
+
HttpCode(200),
|
|
45
|
+
Post('/:service/:method'),
|
|
46
|
+
Header('Content-Type', 'application/json'),
|
|
47
|
+
__param(0, Param('service')),
|
|
48
|
+
__param(1, Param('method')),
|
|
49
|
+
__param(2, Body()),
|
|
50
|
+
__param(3, Req()),
|
|
51
|
+
__param(4, Res()),
|
|
56
52
|
__metadata("design:type", Function),
|
|
57
53
|
__metadata("design:paramtypes", [Object, Object, Object, Object, Object]),
|
|
58
54
|
__metadata("design:returntype", Promise)
|
|
59
55
|
], GrpcHttpProxyController.prototype, "call", null);
|
|
60
56
|
GrpcHttpProxyController = __decorate([
|
|
61
|
-
|
|
62
|
-
__metadata("design:paramtypes", [
|
|
63
|
-
|
|
57
|
+
Controller('grpc-proxy'),
|
|
58
|
+
__metadata("design:paramtypes", [ProtoRegistry,
|
|
59
|
+
AuthenticationService])
|
|
64
60
|
], GrpcHttpProxyController);
|
|
65
|
-
|
|
61
|
+
export { GrpcHttpProxyController };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from './grpc-http-proxy.controller';
|
|
1
|
+
export * from './grpc-http-proxy.controller.js';
|
|
@@ -1,17 +1 @@
|
|
|
1
|
-
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./grpc-http-proxy.controller"), exports);
|
|
1
|
+
export * from "./grpc-http-proxy.controller.js";
|
package/dist/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from './module';
|
|
2
|
-
export * from './authenticators';
|
|
1
|
+
export * from './module/index.js';
|
|
2
|
+
export * from './authenticators/index.js';
|
package/dist/index.js
CHANGED
|
@@ -1,18 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./module"), exports);
|
|
18
|
-
__exportStar(require("./authenticators"), exports);
|
|
1
|
+
export * from "./module/index.js";
|
|
2
|
+
export * from "./authenticators/index.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ModuleMetadata } from '@nestjs/common/interfaces';
|
|
2
2
|
import { Type } from '@nestjs/common/interfaces';
|
|
3
3
|
import { GrpcOptions } from '@nestjs/microservices';
|
|
4
|
-
import { Authenticator } from '../authenticators';
|
|
4
|
+
import { Authenticator } from '../authenticators/index.js';
|
|
5
5
|
export interface GrpcHttpProxyModuleOptions {
|
|
6
6
|
options: GrpcOptions['options'];
|
|
7
7
|
authenticator?: Authenticator;
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
1
|
+
export {};
|
|
@@ -1,4 +1 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.GRPC_HTTP_PROXY_MODULE_OPTIONS = void 0;
|
|
4
|
-
exports.GRPC_HTTP_PROXY_MODULE_OPTIONS = 'GRPC_HTTP_PROXY_MODULE_OPTIONS';
|
|
1
|
+
export const GRPC_HTTP_PROXY_MODULE_OPTIONS = 'GRPC_HTTP_PROXY_MODULE_OPTIONS';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { DynamicModule } from '@nestjs/common';
|
|
2
|
-
import { GrpcHttpProxyModuleAsyncOptions } from './grpc-http-proxy-module-options.interface';
|
|
3
|
-
import { GrpcHttpProxyModuleOptions } from './grpc-http-proxy-module-options.interface';
|
|
2
|
+
import { GrpcHttpProxyModuleAsyncOptions } from './grpc-http-proxy-module-options.interface.js';
|
|
3
|
+
import { GrpcHttpProxyModuleOptions } from './grpc-http-proxy-module-options.interface.js';
|
|
4
4
|
export declare class GrpcHttpProxyModule {
|
|
5
5
|
static register(options: GrpcHttpProxyModuleOptions): DynamicModule;
|
|
6
6
|
static registerAsync(options: GrpcHttpProxyModuleAsyncOptions): DynamicModule;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
2
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
3
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -6,35 +5,33 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
6
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
6
|
};
|
|
8
7
|
var GrpcHttpProxyModule_1;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
const grpc_http_proxy_providers_2 = require("./grpc-http-proxy.providers");
|
|
16
|
-
const grpc_http_proxy_providers_3 = require("./grpc-http-proxy.providers");
|
|
8
|
+
import { Module } from '@nestjs/common';
|
|
9
|
+
import { GrpcHttpProxyController } from '../controllers/index.js';
|
|
10
|
+
import { GRPC_HTTP_PROXY_MODULE_OPTIONS } from './grpc-http-proxy.constants.js';
|
|
11
|
+
import { createGrpcHttpProxyExportsProvider } from './grpc-http-proxy.providers.js';
|
|
12
|
+
import { createGrpcHttpProxyProvider } from './grpc-http-proxy.providers.js';
|
|
13
|
+
import { createGrpcHttpProxyOptionsProvider } from './grpc-http-proxy.providers.js';
|
|
17
14
|
let GrpcHttpProxyModule = GrpcHttpProxyModule_1 = class GrpcHttpProxyModule {
|
|
18
15
|
static register(options) {
|
|
19
|
-
const optionsProviders =
|
|
20
|
-
const exportsProviders =
|
|
21
|
-
const providers =
|
|
16
|
+
const optionsProviders = createGrpcHttpProxyOptionsProvider(options);
|
|
17
|
+
const exportsProviders = createGrpcHttpProxyExportsProvider();
|
|
18
|
+
const providers = createGrpcHttpProxyProvider();
|
|
22
19
|
return {
|
|
23
20
|
module: GrpcHttpProxyModule_1,
|
|
24
21
|
providers: [...optionsProviders, ...providers, ...exportsProviders],
|
|
25
22
|
exports: exportsProviders,
|
|
26
|
-
controllers: [
|
|
23
|
+
controllers: [GrpcHttpProxyController],
|
|
27
24
|
};
|
|
28
25
|
}
|
|
29
26
|
static registerAsync(options) {
|
|
30
|
-
const exportsProviders =
|
|
31
|
-
const providers =
|
|
27
|
+
const exportsProviders = createGrpcHttpProxyExportsProvider();
|
|
28
|
+
const providers = createGrpcHttpProxyProvider();
|
|
32
29
|
return {
|
|
33
30
|
module: GrpcHttpProxyModule_1,
|
|
34
31
|
imports: options.imports || [],
|
|
35
32
|
providers: [...this.createAsyncProviders(options), ...providers, ...exportsProviders],
|
|
36
33
|
exports: exportsProviders,
|
|
37
|
-
controllers: [
|
|
34
|
+
controllers: [GrpcHttpProxyController],
|
|
38
35
|
};
|
|
39
36
|
}
|
|
40
37
|
static createAsyncProviders(options) {
|
|
@@ -52,19 +49,19 @@ let GrpcHttpProxyModule = GrpcHttpProxyModule_1 = class GrpcHttpProxyModule {
|
|
|
52
49
|
static createAsyncOptionsProvider(options) {
|
|
53
50
|
if (options.useFactory) {
|
|
54
51
|
return {
|
|
55
|
-
provide:
|
|
52
|
+
provide: GRPC_HTTP_PROXY_MODULE_OPTIONS,
|
|
56
53
|
useFactory: options.useFactory,
|
|
57
54
|
inject: options.inject || [],
|
|
58
55
|
};
|
|
59
56
|
}
|
|
60
57
|
return {
|
|
61
|
-
provide:
|
|
58
|
+
provide: GRPC_HTTP_PROXY_MODULE_OPTIONS,
|
|
62
59
|
useFactory: (optionsFactory) => optionsFactory.createGrpcHttpProxyOptions(),
|
|
63
60
|
inject: [options.useExisting || options.useClass],
|
|
64
61
|
};
|
|
65
62
|
}
|
|
66
63
|
};
|
|
67
64
|
GrpcHttpProxyModule = GrpcHttpProxyModule_1 = __decorate([
|
|
68
|
-
|
|
65
|
+
Module({})
|
|
69
66
|
], GrpcHttpProxyModule);
|
|
70
|
-
|
|
67
|
+
export { GrpcHttpProxyModule };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Provider } from '@nestjs/common';
|
|
2
|
-
import { GrpcHttpProxyModuleOptions } from './grpc-http-proxy-module-options.interface';
|
|
2
|
+
import { GrpcHttpProxyModuleOptions } from './grpc-http-proxy-module-options.interface.js';
|
|
3
3
|
export declare const createGrpcHttpProxyOptionsProvider: (options: GrpcHttpProxyModuleOptions) => Provider[];
|
|
4
4
|
export declare const createGrpcHttpProxyProvider: () => Provider[];
|
|
5
5
|
export declare const createGrpcHttpProxyExportsProvider: () => Provider[];
|
|
@@ -1,17 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const
|
|
5
|
-
const proto_1 = require("../proto");
|
|
6
|
-
const grpc_http_proxy_constants_1 = require("./grpc-http-proxy.constants");
|
|
7
|
-
const createGrpcHttpProxyOptionsProvider = (options) => [
|
|
1
|
+
import { AuthenticationService } from '../authenticators/index.js';
|
|
2
|
+
import { ProtoRegistry } from '../proto/index.js';
|
|
3
|
+
import { GRPC_HTTP_PROXY_MODULE_OPTIONS } from './grpc-http-proxy.constants.js';
|
|
4
|
+
export const createGrpcHttpProxyOptionsProvider = (options) => [
|
|
8
5
|
{
|
|
9
|
-
provide:
|
|
6
|
+
provide: GRPC_HTTP_PROXY_MODULE_OPTIONS,
|
|
10
7
|
useValue: options,
|
|
11
8
|
},
|
|
12
9
|
];
|
|
13
|
-
|
|
14
|
-
const
|
|
15
|
-
exports.createGrpcHttpProxyProvider = createGrpcHttpProxyProvider;
|
|
16
|
-
const createGrpcHttpProxyExportsProvider = () => [];
|
|
17
|
-
exports.createGrpcHttpProxyExportsProvider = createGrpcHttpProxyExportsProvider;
|
|
10
|
+
export const createGrpcHttpProxyProvider = () => [ProtoRegistry, AuthenticationService];
|
|
11
|
+
export const createGrpcHttpProxyExportsProvider = () => [];
|
package/dist/module/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export * from './grpc-http-proxy-module-options.interface';
|
|
2
|
-
export * from './grpc-http-proxy.constants';
|
|
3
|
-
export * from './grpc-http-proxy.module';
|
|
1
|
+
export * from './grpc-http-proxy-module-options.interface.js';
|
|
2
|
+
export * from './grpc-http-proxy.constants.js';
|
|
3
|
+
export * from './grpc-http-proxy.module.js';
|
package/dist/module/index.js
CHANGED
|
@@ -1,19 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./grpc-http-proxy-module-options.interface"), exports);
|
|
18
|
-
__exportStar(require("./grpc-http-proxy.constants"), exports);
|
|
19
|
-
__exportStar(require("./grpc-http-proxy.module"), exports);
|
|
1
|
+
export * from "./grpc-http-proxy-module-options.interface.js";
|
|
2
|
+
export * from "./grpc-http-proxy.constants.js";
|
|
3
|
+
export * from "./grpc-http-proxy.module.js";
|
package/dist/proto/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from './proto.registry';
|
|
1
|
+
export * from './proto.registry.js';
|
package/dist/proto/index.js
CHANGED
|
@@ -1,17 +1 @@
|
|
|
1
|
-
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./proto.registry"), exports);
|
|
1
|
+
export * from "./proto.registry.js";
|
|
@@ -1,17 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const grpc_js_2 = require("@grpc/grpc-js");
|
|
6
|
-
class ProtoClient {
|
|
1
|
+
import { Metadata } from '@grpc/grpc-js';
|
|
2
|
+
import { credentials } from '@grpc/grpc-js';
|
|
3
|
+
export class ProtoClient {
|
|
4
|
+
client;
|
|
7
5
|
constructor(client) {
|
|
8
6
|
this.client = client;
|
|
9
7
|
}
|
|
10
8
|
static create(url = '0.0.0.0:50051', ServiceClient) {
|
|
11
|
-
return new ProtoClient(new ServiceClient(url,
|
|
9
|
+
return new ProtoClient(new ServiceClient(url, credentials.createInsecure(), {}));
|
|
12
10
|
}
|
|
13
11
|
call(method, request, meta = {}) {
|
|
14
|
-
const metadata = new
|
|
12
|
+
const metadata = new Metadata();
|
|
15
13
|
Object.keys(meta).forEach((key) => {
|
|
16
14
|
if (meta[key])
|
|
17
15
|
metadata.add(key, meta[key]);
|
|
@@ -42,4 +40,3 @@ class ProtoClient {
|
|
|
42
40
|
});
|
|
43
41
|
}
|
|
44
42
|
}
|
|
45
|
-
exports.ProtoClient = ProtoClient;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { OnApplicationBootstrap } from '@nestjs/common';
|
|
2
|
-
import { GrpcHttpProxyModuleOptions } from '../module';
|
|
3
|
-
import { ProtoClient } from './proto.client';
|
|
2
|
+
import { GrpcHttpProxyModuleOptions } from '../module/index.js';
|
|
3
|
+
import { ProtoClient } from './proto.client.js';
|
|
4
4
|
export declare class ProtoRegistry implements OnApplicationBootstrap {
|
|
5
5
|
private readonly options;
|
|
6
6
|
private definitions;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
2
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
3
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -11,30 +10,26 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
11
10
|
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
11
|
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
12
|
};
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
const grpc_js_1 = require("@grpc/grpc-js");
|
|
22
|
-
const proto_loader_1 = require("@grpc/proto-loader");
|
|
23
|
-
const lodash_get_1 = __importDefault(require("lodash.get"));
|
|
24
|
-
const module_1 = require("../module");
|
|
25
|
-
const proto_client_1 = require("./proto.client");
|
|
13
|
+
import { Inject } from '@nestjs/common';
|
|
14
|
+
import { Injectable } from '@nestjs/common';
|
|
15
|
+
import { loadPackageDefinition } from '@grpc/grpc-js';
|
|
16
|
+
import { load } from '@grpc/proto-loader';
|
|
17
|
+
import get from 'lodash.get';
|
|
18
|
+
import { GRPC_HTTP_PROXY_MODULE_OPTIONS } from '../module/index.js';
|
|
19
|
+
import { ProtoClient } from './proto.client.js';
|
|
26
20
|
let ProtoRegistry = class ProtoRegistry {
|
|
21
|
+
options;
|
|
22
|
+
definitions = [];
|
|
27
23
|
constructor(options) {
|
|
28
24
|
this.options = options;
|
|
29
|
-
this.definitions = [];
|
|
30
25
|
}
|
|
31
26
|
async onApplicationBootstrap() {
|
|
32
27
|
const protoPaths = Array.isArray(this.options.options.protoPath)
|
|
33
28
|
? this.options.options.protoPath
|
|
34
29
|
: [this.options.options.protoPath];
|
|
35
30
|
this.definitions = await Promise.all(protoPaths.map(async (protoPath) => {
|
|
36
|
-
const packageDefinition = await
|
|
37
|
-
return
|
|
31
|
+
const packageDefinition = await load(protoPath, this.options.options.loader);
|
|
32
|
+
return loadPackageDefinition(packageDefinition);
|
|
38
33
|
}));
|
|
39
34
|
}
|
|
40
35
|
getClient(serviceName) {
|
|
@@ -42,17 +37,17 @@ let ProtoRegistry = class ProtoRegistry {
|
|
|
42
37
|
if (serviceClient) {
|
|
43
38
|
return serviceClient;
|
|
44
39
|
}
|
|
45
|
-
return (
|
|
40
|
+
return get(definition, serviceName);
|
|
46
41
|
}, undefined);
|
|
47
42
|
if (!client) {
|
|
48
43
|
throw new Error('GRPC service not found');
|
|
49
44
|
}
|
|
50
|
-
return
|
|
45
|
+
return ProtoClient.create(this.options.options.url, client);
|
|
51
46
|
}
|
|
52
47
|
};
|
|
53
48
|
ProtoRegistry = __decorate([
|
|
54
|
-
|
|
55
|
-
__param(0,
|
|
49
|
+
Injectable(),
|
|
50
|
+
__param(0, Inject(GRPC_HTTP_PROXY_MODULE_OPTIONS)),
|
|
56
51
|
__metadata("design:paramtypes", [Object])
|
|
57
52
|
], ProtoRegistry);
|
|
58
|
-
|
|
53
|
+
export { ProtoRegistry };
|
package/package.json
CHANGED
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atls/nestjs-grpc-http-proxy",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.13",
|
|
4
4
|
"license": "BSD-3-Clause",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"exports": {
|
|
7
|
+
"./package.json": "./package.json",
|
|
8
|
+
".": {
|
|
9
|
+
"import": "./dist/index.js",
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"default": "./dist/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
5
14
|
"main": "dist/index.js",
|
|
6
15
|
"files": [
|
|
7
16
|
"dist"
|
|
@@ -13,42 +22,54 @@
|
|
|
13
22
|
},
|
|
14
23
|
"dependencies": {
|
|
15
24
|
"@atls/grpc-error-status": "0.0.3",
|
|
16
|
-
"@grpc/grpc-js": "1.
|
|
17
|
-
"@grpc/proto-loader": "0.7.
|
|
25
|
+
"@grpc/grpc-js": "1.11.2",
|
|
26
|
+
"@grpc/proto-loader": "0.7.13",
|
|
18
27
|
"buffer-json": "2.0.0",
|
|
19
28
|
"class-transformer": "0.5.1",
|
|
20
29
|
"cookie": "0.5.0",
|
|
21
30
|
"jsonwebtoken": "9.0.1",
|
|
22
31
|
"lodash.get": "4.4.2",
|
|
23
|
-
"uuid": "9.0.
|
|
32
|
+
"uuid": "9.0.1"
|
|
24
33
|
},
|
|
25
34
|
"devDependencies": {
|
|
26
|
-
"@
|
|
27
|
-
"@nestjs/
|
|
28
|
-
"@nestjs/
|
|
29
|
-
"@nestjs/
|
|
30
|
-
"@
|
|
31
|
-
"@types/
|
|
32
|
-
"@types/
|
|
33
|
-
"@types/
|
|
34
|
-
"@types/
|
|
35
|
-
"
|
|
36
|
-
"
|
|
37
|
-
"
|
|
38
|
-
"
|
|
35
|
+
"@jest/globals": "29.7.0",
|
|
36
|
+
"@nestjs/common": "10.4.1",
|
|
37
|
+
"@nestjs/core": "10.4.1",
|
|
38
|
+
"@nestjs/microservices": "10.4.1",
|
|
39
|
+
"@nestjs/testing": "10.4.1",
|
|
40
|
+
"@types/buffer-json": "2.0.3",
|
|
41
|
+
"@types/cookie": "0.5.4",
|
|
42
|
+
"@types/express": "4.17.21",
|
|
43
|
+
"@types/jsonwebtoken": "9.0.6",
|
|
44
|
+
"@types/lodash.get": "4.4.9",
|
|
45
|
+
"@types/supertest": "6.0.2",
|
|
46
|
+
"@types/uuid": "9.0.8",
|
|
47
|
+
"express": "4.21.0",
|
|
48
|
+
"get-port": "7.1.0",
|
|
49
|
+
"protobufjs": "7.4.0",
|
|
50
|
+
"reflect-metadata": "0.2.2",
|
|
39
51
|
"rxjs": "7.8.1",
|
|
40
|
-
"supertest": "6.3.
|
|
52
|
+
"supertest": "6.3.4"
|
|
41
53
|
},
|
|
42
54
|
"peerDependencies": {
|
|
43
|
-
"@nestjs/common": "10
|
|
44
|
-
"@nestjs/core": "10
|
|
45
|
-
"@nestjs/microservices": "10
|
|
46
|
-
"reflect-metadata": "0.
|
|
47
|
-
"rxjs": "7
|
|
55
|
+
"@nestjs/common": "10",
|
|
56
|
+
"@nestjs/core": "10",
|
|
57
|
+
"@nestjs/microservices": "10",
|
|
58
|
+
"reflect-metadata": "0.2",
|
|
59
|
+
"rxjs": "7"
|
|
48
60
|
},
|
|
49
61
|
"publishConfig": {
|
|
62
|
+
"exports": {
|
|
63
|
+
"./package.json": "./package.json",
|
|
64
|
+
".": {
|
|
65
|
+
"import": "./dist/index.js",
|
|
66
|
+
"types": "./dist/index.d.ts",
|
|
67
|
+
"default": "./dist/index.js"
|
|
68
|
+
}
|
|
69
|
+
},
|
|
50
70
|
"main": "dist/index.js",
|
|
51
71
|
"typings": "dist/index.d.ts"
|
|
52
72
|
},
|
|
73
|
+
"typecheckSkipLibCheck": true,
|
|
53
74
|
"typings": "dist/index.d.ts"
|
|
54
75
|
}
|