@gravity-ui/gateway 4.7.1-alpha.0 → 4.7.1

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.
Files changed (94) hide show
  1. package/{dist/esm → build}/components/grpc.d.ts +5 -5
  2. package/{dist/commonjs → build}/components/grpc.js +84 -94
  3. package/{dist/esm → build}/components/mixed.d.ts +4 -4
  4. package/{dist/commonjs → build}/components/mixed.js +12 -11
  5. package/{dist/commonjs → build}/components/rest.d.ts +5 -5
  6. package/{dist/commonjs → build}/components/rest.js +34 -35
  7. package/{dist/esm → build}/constants.d.ts +3 -2
  8. package/{dist/commonjs → build}/constants.js +21 -30
  9. package/{dist/commonjs → build}/index.d.ts +8 -9
  10. package/{dist/commonjs → build}/index.js +46 -35
  11. package/{dist/esm → build}/models/common.d.ts +7 -12
  12. package/{dist/esm → build}/models/context.d.ts +1 -0
  13. package/{dist/esm → build}/utils/axios.d.ts +1 -1
  14. package/{dist/commonjs → build}/utils/axios.js +4 -3
  15. package/{dist/esm → build}/utils/common.d.ts +4 -4
  16. package/{dist/commonjs → build}/utils/common.js +8 -8
  17. package/{dist/commonjs → build}/utils/create-context-api.d.ts +2 -2
  18. package/{dist/commonjs → build}/utils/create-context-api.js +6 -5
  19. package/{dist/commonjs → build}/utils/grpc-reflection.js +35 -15
  20. package/{dist/commonjs → build}/utils/grpc.d.ts +1 -1
  21. package/{dist/commonjs → build}/utils/grpc.js +11 -10
  22. package/build/utils/overrideEndpoints/index.d.ts +2 -0
  23. package/build/utils/overrideEndpoints/index.js +4 -0
  24. package/{dist/esm → build}/utils/overrideEndpoints/overrideEndpoints.d.ts +1 -1
  25. package/{dist/commonjs → build}/utils/overrideEndpoints/overrideEndpoints.js +2 -1
  26. package/{dist/commonjs → build}/utils/parse-error.d.ts +5 -5
  27. package/{dist/commonjs → build}/utils/parse-error.js +19 -19
  28. package/{dist/commonjs → build}/utils/proto-path-resolver.d.ts +1 -1
  29. package/{dist/commonjs → build}/utils/proto-path-resolver.js +15 -24
  30. package/{dist/commonjs → build}/utils/redact-sensitive-headers.d.ts +2 -1
  31. package/{dist/commonjs → build}/utils/redact-sensitive-headers.js +2 -1
  32. package/{dist/commonjs → build}/utils/typed-api.d.ts +1 -1
  33. package/{dist/commonjs → build}/utils/typed-api.js +2 -1
  34. package/{dist/commonjs → build}/utils/validate.d.ts +0 -1
  35. package/{dist/commonjs → build}/utils/validate.js +20 -24
  36. package/package.json +16 -41
  37. package/dist/commonjs/components/grpc.d.ts +0 -24
  38. package/dist/commonjs/components/mixed.d.ts +0 -11
  39. package/dist/commonjs/constants.d.ts +0 -53
  40. package/dist/commonjs/models/common.d.ts +0 -289
  41. package/dist/commonjs/models/context.d.ts +0 -22
  42. package/dist/commonjs/package.json +0 -3
  43. package/dist/commonjs/utils/axios.d.ts +0 -4
  44. package/dist/commonjs/utils/common.d.ts +0 -16
  45. package/dist/commonjs/utils/overrideEndpoints/index.d.ts +0 -2
  46. package/dist/commonjs/utils/overrideEndpoints/index.js +0 -4
  47. package/dist/commonjs/utils/overrideEndpoints/overrideEndpoints.d.ts +0 -17
  48. package/dist/commonjs/utils/package-root.d.ts +0 -1
  49. package/dist/commonjs/utils/package-root.js +0 -44
  50. package/dist/commonjs/utils/source-dir.d.ts +0 -1
  51. package/dist/commonjs/utils/source-dir.js +0 -41
  52. package/dist/esm/components/grpc.js +0 -691
  53. package/dist/esm/components/mixed.js +0 -62
  54. package/dist/esm/components/rest.d.ts +0 -8
  55. package/dist/esm/components/rest.js +0 -357
  56. package/dist/esm/constants.js +0 -82
  57. package/dist/esm/index.d.ts +0 -13
  58. package/dist/esm/index.js +0 -274
  59. package/dist/esm/models/common.js +0 -5
  60. package/dist/esm/models/context.js +0 -1
  61. package/dist/esm/models/error.d.ts +0 -12
  62. package/dist/esm/models/error.js +0 -1
  63. package/dist/esm/package.json +0 -3
  64. package/dist/esm/utils/axios.js +0 -24
  65. package/dist/esm/utils/common.js +0 -48
  66. package/dist/esm/utils/create-context-api.d.ts +0 -4
  67. package/dist/esm/utils/create-context-api.js +0 -38
  68. package/dist/esm/utils/grpc-reflection.d.ts +0 -28
  69. package/dist/esm/utils/grpc-reflection.js +0 -72
  70. package/dist/esm/utils/grpc.d.ts +0 -15
  71. package/dist/esm/utils/grpc.js +0 -72
  72. package/dist/esm/utils/overrideEndpoints/index.d.ts +0 -2
  73. package/dist/esm/utils/overrideEndpoints/index.js +0 -2
  74. package/dist/esm/utils/overrideEndpoints/overrideEndpoints.js +0 -96
  75. package/dist/esm/utils/package-root.d.ts +0 -1
  76. package/dist/esm/utils/package-root.js +0 -8
  77. package/dist/esm/utils/parse-error.d.ts +0 -30
  78. package/dist/esm/utils/parse-error.js +0 -214
  79. package/dist/esm/utils/proto-path-resolver.d.ts +0 -2
  80. package/dist/esm/utils/proto-path-resolver.js +0 -23
  81. package/dist/esm/utils/redact-sensitive-headers.d.ts +0 -3
  82. package/dist/esm/utils/redact-sensitive-headers.js +0 -12
  83. package/dist/esm/utils/source-dir.d.ts +0 -1
  84. package/dist/esm/utils/source-dir.js +0 -4
  85. package/dist/esm/utils/typed-api.d.ts +0 -2
  86. package/dist/esm/utils/typed-api.js +0 -3
  87. package/dist/esm/utils/validate.d.ts +0 -4
  88. package/dist/esm/utils/validate.js +0 -47
  89. /package/bin/{patch.cjs → patch.js} +0 -0
  90. /package/{dist/commonjs → build}/models/common.js +0 -0
  91. /package/{dist/commonjs → build}/models/context.js +0 -0
  92. /package/{dist/commonjs → build}/models/error.d.ts +0 -0
  93. /package/{dist/commonjs → build}/models/error.js +0 -0
  94. /package/{dist/commonjs → build}/utils/grpc-reflection.d.ts +0 -0
package/package.json CHANGED
@@ -1,33 +1,18 @@
1
1
  {
2
2
  "name": "@gravity-ui/gateway",
3
- "version": "4.7.1-alpha.0",
3
+ "version": "4.7.1",
4
4
  "description": "",
5
5
  "license": "MIT",
6
- "type": "module",
7
- "main": "./dist/commonjs/index.js",
8
- "module": "./dist/esm/index.js",
9
- "types": "./dist/commonjs/index.d.ts",
10
- "exports": {
11
- "./package.json": "./package.json",
12
- ".": {
13
- "import": {
14
- "types": "./dist/esm/index.d.ts",
15
- "default": "./dist/esm/index.js"
16
- },
17
- "require": {
18
- "types": "./dist/commonjs/index.d.ts",
19
- "default": "./dist/commonjs/index.js"
20
- }
21
- }
22
- },
6
+ "main": "build/index.js",
23
7
  "files": [
24
- "dist",
8
+ "build",
25
9
  "proto",
26
10
  "bin",
27
11
  "patches"
28
12
  ],
13
+ "types": "build/index.d.ts",
29
14
  "bin": {
30
- "gateway-reflection-patch": "bin/patch.cjs"
15
+ "gateway-reflection-patch": "bin/patch.js"
31
16
  },
32
17
  "repository": {
33
18
  "type": "git",
@@ -39,13 +24,13 @@
39
24
  "homepage": "https://github.com/gravity-ui/gateway#readme",
40
25
  "scripts": {
41
26
  "prepare": "husky install",
42
- "build": "tshy",
27
+ "build": "tsc",
43
28
  "build-integration": "sh integration-test/build.sh",
44
- "start-integration-server": "node build-integration/server",
29
+ "start-integration-server": "node build-integration/integration-test/server",
45
30
  "build-and-run-integration": "npm run build-integration && npm run start-integration-server",
46
31
  "clean": "rm -rf build && rm -rf build-integration",
47
32
  "lint": "npm run lint:code && npm run lint:exports",
48
- "lint:code": "eslint \"src/**/*.{js,ts}\" --quiet",
33
+ "lint:code": "eslint \"lib/**/*.{js,ts}\" --quiet",
49
34
  "lint:exports": "npm run build && attw --pack .",
50
35
  "typecheck": "tsc --noEmit",
51
36
  "prepublishOnly": "npm run build",
@@ -56,9 +41,9 @@
56
41
  "dependencies": {
57
42
  "@grpc/grpc-js": "^1.9.9",
58
43
  "@grpc/proto-loader": "^0.7.8",
59
- "ajv": "^8.17.1",
44
+ "ajv": "^8.12.0",
60
45
  "axios": "^1.8.3",
61
- "axios-retry": "^4.5.0",
46
+ "axios-retry": "^3.9.1",
62
47
  "lodash": "^4.17.21",
63
48
  "object-sizeof": "^2.6.5",
64
49
  "protobufjs": "^7.2.5",
@@ -66,13 +51,13 @@
66
51
  },
67
52
  "devDependencies": {
68
53
  "@arethetypeswrong/cli": "^0.17.3",
69
- "@commitlint/cli": "^19.6.1",
70
- "@commitlint/config-conventional": "^19.6.0",
54
+ "@commitlint/cli": "^17.7.1",
55
+ "@commitlint/config-conventional": "^17.7.0",
71
56
  "@gravity-ui/eslint-config": "^2.0.0",
72
57
  "@gravity-ui/prettier-config": "^1.0.1",
73
58
  "@gravity-ui/tsconfig": "^1.0.0",
74
59
  "@types/express": "^4.17.17",
75
- "@types/jest": "^29.5.14",
60
+ "@types/jest": "^29.5.0",
76
61
  "@types/lodash": "^4.14.192",
77
62
  "@types/node": "^18.15.11",
78
63
  "@types/uuid": "^9.0.1",
@@ -83,14 +68,13 @@
83
68
  "grpc-server-reflection": "^0.1.5",
84
69
  "grpc-tools": "^1.12.4",
85
70
  "husky": "^8.0.3",
86
- "jest": "^29.7.0",
71
+ "jest": "^29.5.0",
87
72
  "nano-staged": "^0.8.0",
88
73
  "prettier": "^2.8.6",
89
74
  "start-server-and-test": "^2.0.0",
90
- "ts-jest": "^29.2.5",
75
+ "ts-jest": "^29.1.1",
91
76
  "tsc-watch": "^6.0.0",
92
- "tshy": "^3.0.2",
93
- "typescript": "^5.7.3"
77
+ "typescript": "^5.0.2"
94
78
  },
95
79
  "peerDependencies": {
96
80
  "grpc-reflection-js": "^0.3.0"
@@ -107,14 +91,5 @@
107
91
  "*.md": [
108
92
  "prettier --write"
109
93
  ]
110
- },
111
- "tshy": {
112
- "exclude": [
113
- "src/**/*.test.ts"
114
- ],
115
- "exports": {
116
- "./package.json": "./package.json",
117
- ".": "./src/index.ts"
118
- }
119
94
  }
120
95
  }
@@ -1,24 +0,0 @@
1
- import * as grpc from '@grpc/grpc-js';
2
- import protobufjs from 'protobufjs';
3
- import type * as descriptor from 'protobufjs/ext/descriptor';
4
- import { ApiActionConfig, ApiServiceGrpcActionConfig, EndpointsConfig, GatewayApiOptions } from '../models/common.js';
5
- import { GatewayContext } from '../models/context.js';
6
- import { AppErrorConstructor } from '../models/error.js';
7
- declare module 'protobufjs' {
8
- interface Root {
9
- toDescriptor(protoVersion: string): protobufjs.Message<descriptor.IFileDescriptorSet> & descriptor.IFileDescriptorSet;
10
- }
11
- }
12
- interface CredentialsMap {
13
- insecure: grpc.ChannelCredentials;
14
- secure: grpc.ChannelCredentials;
15
- secureWithoutRootCert: grpc.ChannelCredentials;
16
- }
17
- export interface GrpcContext {
18
- root: protobufjs.Root;
19
- credentials: CredentialsMap;
20
- }
21
- export declare function createRoot(includeGrpcPaths?: string[]): protobufjs.Root;
22
- export declare function getCredentialsMap(caCertificatePath?: string | null): CredentialsMap;
23
- export declare function createGrpcAction<Context extends GatewayContext>({ root, credentials }: GrpcContext, endpoints: EndpointsConfig | undefined, config: ApiServiceGrpcActionConfig<Context, any, any>, serviceKey: string, actionName: string, options: GatewayApiOptions<Context>, ErrorConstructor: AppErrorConstructor): (actionConfig: ApiActionConfig<Context, any, any>) => Promise<import("../models/common.js").GatewayActionClientStreamResponse<any> | import("../models/common.js").GatewayActionServerStreamResponse<any> | import("../models/common.js").GatewayActionDuplexStreamResponse<any> | import("../models/common.js").GatewayActionUnaryResponse<any>>;
24
- export {};
@@ -1,11 +0,0 @@
1
- import { ApiActionConfig, ApiByScope, ApiServiceMixedActionConfig, GatewayConfig, GatewayRequest, GatewayResponse, SchemasByScope } from '../models/common.js';
2
- import { GatewayContext } from '../models/context.js';
3
- import { AppErrorConstructor } from '../models/error.js';
4
- import type { GrpcContext } from './grpc.js';
5
- export declare function createMixedAction<TSchema extends SchemasByScope, Context extends GatewayContext, Req extends GatewayRequest<Context>, Res extends GatewayResponse>(config: ApiServiceMixedActionConfig<Context, Req, Res, any, any, any>, api: ApiByScope<TSchema, Context, Req, Res>, serviceName: string, actionName: string, extra: {
6
- config: GatewayConfig<Context, Req, Res>;
7
- grpcContext: GrpcContext;
8
- }, ErrorConstructor: AppErrorConstructor): (actionConfig: ApiActionConfig<Context, any>) => Promise<{
9
- responseData: any;
10
- debugHeaders: {};
11
- }>;
@@ -1,53 +0,0 @@
1
- import * as http from 'http';
2
- import * as https from 'https';
3
- import * as grpc from '@grpc/grpc-js';
4
- export declare const VERSION: any;
5
- export declare enum Lang {
6
- Ru = "ru",
7
- En = "en"
8
- }
9
- export declare const DEFAULT_TIMEOUT: number;
10
- export declare const DEFAULT_LANG_HEADER = "accept-language";
11
- export declare const DEFAULT_PROXY_HEADERS: string[];
12
- export declare const DEFAULT_AXIOS_OPTIONS: {
13
- maxContentLength: number;
14
- httpAgent: http.Agent;
15
- httpsAgent: https.Agent;
16
- };
17
- export declare const DEFAULT_GRPC_OPTIONS: {
18
- 'grpc.max_receive_message_length': number;
19
- 'grpc.keepalive_time_ms': number;
20
- 'grpc.keepalive_timeout_ms': number;
21
- 'grpc.keepalive_permit_without_calls': number;
22
- };
23
- export declare const DEFAULT_PROTO_LOADER_OPTIONS: {
24
- longs: StringConstructor;
25
- enums: StringConstructor;
26
- defaults: boolean;
27
- oneofs: boolean;
28
- };
29
- /**
30
- * Byte sizes are taken from ECMAScript Language Specification
31
- * http://www.ecma-international.org/ecma-262/5.1/
32
- */
33
- export declare const ECMA_STRING_SIZE = 2;
34
- export declare const ANY_ACTION_SYMBOL = "*";
35
- export declare const RETRYABLE_STATUS_CODES: Array<grpc.status | undefined>;
36
- export declare const RECREATE_SERVICE_CODES: Array<grpc.status | undefined>;
37
- /**
38
- * Common validation schema for action's parameters. You can use it in GatewayConfig as validationSchema
39
- * Validates the parameter type: only number, object, or string are allowed.
40
- * For strings, disallows characters: ".", "?", "#", "/", "\"
41
- */
42
- export declare const DEFAULT_VALIDATION_SCHEMA: {
43
- additionalProperties: {
44
- oneOf: ({
45
- type: string;
46
- pattern?: undefined;
47
- } | {
48
- type: string;
49
- pattern: string;
50
- })[];
51
- };
52
- };
53
- export declare const AXIOS_RETRY_NAMESPACE = "axios-retry";
@@ -1,289 +0,0 @@
1
- import { IncomingHttpHeaders } from 'http';
2
- import { ClientDuplexStream, ClientReadableStream, ClientWritableStream, type ServiceError } from '@grpc/grpc-js';
3
- import type { HandlerType } from '@grpc/grpc-js/build/src/server-call.js';
4
- import { AxiosInterceptorManager, AxiosRequestConfig, AxiosResponse, InternalAxiosRequestConfig } from 'axios';
5
- import { IAxiosRetryConfig } from 'axios-retry';
6
- import type { Request, Response } from 'express';
7
- import protobufjs from 'protobufjs';
8
- import type { GrpcContext } from '../components/grpc.js';
9
- import { Lang } from '../constants.js';
10
- import { GatewayContext } from './context.js';
11
- import { AppErrorConstructor } from './error.js';
12
- export interface GatewayRequest<Context extends GatewayContext> extends Request {
13
- id: string;
14
- ctx: Context;
15
- }
16
- export interface GatewayResponse extends Response {
17
- }
18
- export interface Headers {
19
- [key: string]: any;
20
- }
21
- export interface EndpointsConfig {
22
- [key: string]: ActionEndpoint;
23
- }
24
- export type AuthHeadersFunc = (serviceName: string) => Record<string, string> | undefined;
25
- export interface ApiActionConfig<Context extends GatewayContext, TRequestData, TResponseData = any> {
26
- requestId: string;
27
- headers: Headers;
28
- args: TRequestData;
29
- ctx: Context;
30
- timeout?: number;
31
- callback?: (response: TResponseData) => void;
32
- authArgs?: Record<string, unknown>;
33
- userId?: string;
34
- abortSignal?: AbortSignal;
35
- }
36
- export interface GRPCActionData {
37
- [key: string]: unknown;
38
- }
39
- export type SendStats<Context extends GatewayContext> = (stats: Stats, headers: IncomingHttpHeaders, ctx: Context, meta: {
40
- debugHeaders: Headers;
41
- }) => void;
42
- export interface Stats {
43
- service: string;
44
- action: string;
45
- restStatus: number;
46
- grpcStatus?: number;
47
- responseSize: number;
48
- requestId: string;
49
- requestTime: number;
50
- requestMethod: string;
51
- requestUrl: string;
52
- timestamp: number;
53
- userId?: string;
54
- traceId: string;
55
- }
56
- export type ControllerType = 'rest' | 'grpc';
57
- export interface GatewayError {
58
- status: number;
59
- message: string;
60
- code: string;
61
- details?: {
62
- title?: string;
63
- description?: string;
64
- } & Record<string, unknown>;
65
- debug?: any;
66
- requestId?: string;
67
- }
68
- export type GrpcRetryCondition = (error: ServiceError) => boolean;
69
- export type AxiosRetryCondition = IAxiosRetryConfig['retryCondition'];
70
- export type ProxyHeadersFunctionExtra = {
71
- service: string;
72
- action: string;
73
- protopath?: string;
74
- protokey?: string;
75
- };
76
- export type ProxyHeadersFunction = (headers: IncomingHttpHeaders, type: ControllerType, extra: ProxyHeadersFunctionExtra) => IncomingHttpHeaders;
77
- export type ProxyHeaders = string[] | ProxyHeadersFunction;
78
- export type ProxyResponseHeadersFunction = (headers: Headers, type: ControllerType) => Headers;
79
- export type ProxyResponseHeaders = string[] | ProxyResponseHeadersFunction;
80
- export type GetAuthHeadersParams<AuthArgs = Record<string, unknown>> = {
81
- actionType: ControllerType;
82
- serviceName: string;
83
- requestHeaders: Headers;
84
- authArgs: AuthArgs | undefined;
85
- };
86
- export type GetAuthHeaders<AuthArgs = Record<string, unknown>> = (params: GetAuthHeadersParams<AuthArgs>) => Record<string, string> | undefined;
87
- export type ResponseContentType = AxiosResponse['headers']['Content-Type'];
88
- export interface GatewayApiOptions<Context extends GatewayContext> {
89
- serviceName: string;
90
- timeout?: number;
91
- grpcRetryCondition?: GrpcRetryCondition;
92
- axiosRetryCondition?: AxiosRetryCondition;
93
- sendStats?: SendStats<Context>;
94
- grpcOptions?: object;
95
- grpcRecreateService?: boolean;
96
- axiosConfig?: AxiosRequestConfig;
97
- axiosInterceptors?: AxiosInterceptorsConfig;
98
- proxyHeaders?: ProxyHeaders;
99
- proxyDebugHeaders?: ProxyHeaders;
100
- validationSchema?: object;
101
- encodePathArgs?: boolean;
102
- expectedResponseContentType?: ResponseContentType | ResponseContentType[];
103
- getAuthHeaders: GetAuthHeaders;
104
- }
105
- export interface ParamsOutput {
106
- body?: any;
107
- query?: {
108
- [key: string]: any;
109
- };
110
- headers?: Headers;
111
- }
112
- export interface ResponseError extends AxiosResponse<unknown> {
113
- }
114
- export interface ExtendedBaseActionEndpoint {
115
- path: string;
116
- }
117
- export interface ExtendedGrpcActionEndpoint extends ExtendedBaseActionEndpoint {
118
- insecure?: boolean;
119
- secureWithoutRootCert?: boolean;
120
- grpcOptions?: object;
121
- }
122
- export interface ExtendedRestActionEndpoint extends ExtendedBaseActionEndpoint {
123
- axiosConfig?: AxiosRequestConfig;
124
- }
125
- export type ExtendedActionEndpoint = ExtendedGrpcActionEndpoint | ExtendedRestActionEndpoint;
126
- export type ActionEndpoint = string | ExtendedActionEndpoint;
127
- export interface ApiServiceBaseActionConfig<Context extends GatewayContext, TOutput, TParams = undefined, TTransformed = TOutput> {
128
- getAuthHeaders?: GetAuthHeaders;
129
- params?: (args: TParams, headers: Headers, config: ApiParamsConfig<Context>) => Promise<ParamsOutput> | ParamsOutput;
130
- endpoint?: string | ((endpoints: EndpointsConfig | undefined, args: TParams) => string);
131
- transformResponseData?: (data: TOutput, config: ApiTransformResponseDataConfig<TParams, Context>) => Promise<TTransformed> | TTransformed;
132
- transformResponseError?: (error: ResponseError, config: ApiTransformResponseErrorConfig<TParams, Context>) => Promise<GatewayError> | GatewayError;
133
- validationSchema?: object;
134
- timeout?: number;
135
- retries?: number;
136
- idempotency?: boolean;
137
- proxyHeaders?: ProxyHeaders;
138
- proxyResponseHeaders?: ProxyResponseHeaders;
139
- metadata?: Record<string, string | number | boolean>;
140
- abortOnClientDisconnect?: boolean;
141
- }
142
- export interface ApiServiceRestActionConfig<Context extends GatewayContext, TOutput, TParams = undefined, TTransformed = TOutput> extends ApiServiceBaseActionConfig<Context, TOutput, TParams, TTransformed> {
143
- method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS';
144
- path: (args: TParams) => string;
145
- paramsSerializer?: AxiosRequestConfig['paramsSerializer'];
146
- responseType?: AxiosRequestConfig['responseType'];
147
- expectedResponseContentType?: ResponseContentType | ResponseContentType[];
148
- maxRedirects?: number;
149
- axiosRetryCondition?: AxiosRetryCondition;
150
- }
151
- export interface ApiServiceBaseGrpcActionConfig<Context extends GatewayContext, TOutput, TParams = undefined, TTransformed = TOutput> extends ApiServiceBaseActionConfig<Context, TOutput, TParams, TTransformed> {
152
- action: string;
153
- protoKey: string;
154
- insecure?: boolean;
155
- secureWithoutRootCert?: boolean;
156
- encodedFields?: string[];
157
- type?: HandlerType;
158
- decodeAnyMessageProtoLoaderOptions?: protobufjs.IConversionOptions;
159
- }
160
- export interface ApiServiceFileGrpcActionConfig<Context extends GatewayContext, TOutput, TParams, TTransformed> extends ApiServiceBaseGrpcActionConfig<Context, TOutput, TParams, TTransformed> {
161
- protoPath: string;
162
- }
163
- export declare enum GrpcReflection {
164
- OnFirstRequest = 0,
165
- OnEveryRequest = 1
166
- }
167
- export interface ApiServiceReflectGrpcActionConfig<Context extends GatewayContext, TOutput, TParams, TTransformed> extends ApiServiceBaseGrpcActionConfig<Context, TOutput, TParams, TTransformed> {
168
- reflection: GrpcReflection;
169
- reflectionRefreshSec?: number;
170
- }
171
- export type ApiServiceGrpcActionConfig<Context extends GatewayContext, TOutput, TParams = undefined, TTransformed = TOutput> = ApiServiceFileGrpcActionConfig<Context, TOutput, TParams, TTransformed> | ApiServiceReflectGrpcActionConfig<Context, TOutput, TParams, TTransformed>;
172
- export interface ApiServiceMixedExtra<Context extends GatewayContext, Req extends GatewayRequest<Context>, Res extends GatewayResponse> {
173
- headers: Headers;
174
- lang: Lang;
175
- ctx: Context;
176
- config: GatewayConfig<Context, Req, Res>;
177
- grpcContext: GrpcContext;
178
- abortSignal?: AbortSignal;
179
- }
180
- export type ApiServiceMixedActionConfig<Context extends GatewayContext, Req extends GatewayRequest<Context>, Res extends GatewayResponse, TOutput, TParams = undefined, TTransformed = TOutput> = (api: unknown, args: TParams, extra: ApiServiceMixedExtra<Context, Req, Res>) => Promise<TTransformed>;
181
- export type ApiServiceActionConfig<Context extends GatewayContext, Req extends GatewayRequest<Context>, Res extends GatewayResponse, TOutput, TParams = undefined, TTransformed = TOutput> = ApiServiceRestActionConfig<Context, TOutput, TParams, TTransformed> | ApiServiceGrpcActionConfig<Context, TOutput, TParams, TTransformed> | ApiServiceMixedActionConfig<Context, Req, Res, TOutput, TParams, TTransformed>;
182
- export type ApiActionResponseType<T> = T extends ApiServiceActionConfig<any, any, any, any, any, infer R> ? R : never;
183
- export type ApiActionParams<T> = T extends ApiServiceActionConfig<any, any, any, any, infer R, any> ? R : never;
184
- export interface ApiParamsConfig<Context extends GatewayContext> {
185
- ctx: Context;
186
- }
187
- export interface ApiTransformResponseDataConfig<TParams, Context extends GatewayContext> {
188
- args: TParams;
189
- ctx: Context;
190
- headers?: Headers;
191
- }
192
- export interface ApiTransformResponseErrorConfig<TParams, Context extends GatewayContext> {
193
- args: TParams;
194
- ctx: Context;
195
- }
196
- export interface BaseSchema {
197
- [key: string]: {
198
- actions: Record<string, ApiServiceActionConfig<any, any, any, any, any, any>>;
199
- serviceName?: string;
200
- endpoints?: Record<string, Record<string, EndpointsConfig>>;
201
- };
202
- }
203
- export interface SchemasByScope {
204
- [scope: string]: BaseSchema;
205
- }
206
- export type ApiByScope<R extends SchemasByScope, Context extends GatewayContext, Req extends GatewayRequest<Context>, Res extends GatewayResponse> = {
207
- [scope in keyof R]: GatewayApi<R[scope], Context, Req, Res>;
208
- };
209
- export type ApiWithRoot<R extends SchemasByScope, Context extends GatewayContext, Req extends GatewayRequest<Context>, Res extends GatewayResponse> = ApiByScope<R, Context, Req, Res>['root'] & ApiByScope<R, Context, Req, Res>;
210
- export interface GatewayActionHeaders {
211
- debugHeaders: Headers;
212
- }
213
- export interface GatewayActionUnaryResponse<TAction> extends GatewayActionHeaders {
214
- responseData: ApiActionResponseType<TAction>;
215
- responseHeaders?: Headers;
216
- }
217
- export interface GatewayActionClientStreamResponse<TAction> extends GatewayActionHeaders {
218
- stream: ClientWritableStream<ApiActionResponseType<TAction>>;
219
- responseData?: never;
220
- responseHeaders?: never;
221
- }
222
- export interface GatewayActionServerStreamResponse<TAction> extends GatewayActionHeaders {
223
- stream: ClientReadableStream<ApiActionResponseType<TAction>>;
224
- responseData?: never;
225
- responseHeaders?: never;
226
- }
227
- export interface GatewayActionDuplexStreamResponse<TAction> extends GatewayActionHeaders {
228
- stream: ClientDuplexStream<ApiActionParams<TAction>, ApiActionResponseType<TAction>>;
229
- responseData?: never;
230
- responseHeaders?: never;
231
- }
232
- export type GatewayActionResponseData<Context extends GatewayContext, Req extends GatewayRequest<Context>, Res extends GatewayResponse, TAction extends ApiServiceActionConfig<Context, Req, Res, unknown, unknown, unknown>> = TAction extends ApiServiceGrpcActionConfig<Context, unknown, unknown, unknown> ? TAction['type'] extends 'clientStream' ? GatewayActionClientStreamResponse<TAction> : TAction['type'] extends 'serverStream' ? GatewayActionServerStreamResponse<TAction> : TAction['type'] extends 'bidi' ? GatewayActionDuplexStreamResponse<TAction> : GatewayActionUnaryResponse<TAction> : GatewayActionUnaryResponse<TAction>;
233
- type GatewayAction<Context extends GatewayContext, Req extends GatewayRequest<Context>, Res extends GatewayResponse, TAction extends ApiServiceActionConfig<Context, Req, Res, unknown, unknown, unknown>> = undefined extends ApiActionParams<TAction> ? (params?: ApiActionConfig<Context, ApiActionParams<TAction>, ApiActionResponseType<TAction>>) => Promise<GatewayActionResponseData<Context, Req, Res, TAction>> : (params: ApiActionConfig<Context, ApiActionParams<TAction>, ApiActionResponseType<TAction>>) => Promise<GatewayActionResponseData<Context, Req, Res, TAction>>;
234
- export type GatewayApi<T extends BaseSchema, Context extends GatewayContext, Req extends GatewayRequest<Context>, Res extends GatewayResponse> = {
235
- [S in keyof T]: {
236
- [A in keyof T[S]['actions']]: GatewayAction<Context, Req, Res, T[S]['actions'][A]>;
237
- };
238
- };
239
- type ContextAction<TAction> = undefined extends ApiActionParams<TAction> ? (params?: ApiActionParams<TAction>) => Promise<ApiActionResponseType<TAction>> : (params: ApiActionParams<TAction>) => Promise<ApiActionResponseType<TAction>>;
240
- export type ContextApi<T extends BaseSchema> = {
241
- [S in keyof T]: {
242
- [A in keyof T[S]['actions']]: ContextAction<T[S]['actions'][A]>;
243
- };
244
- };
245
- export type ContextApiByScope<R extends SchemasByScope> = {
246
- [scope in keyof R]: ContextApi<R[scope]>;
247
- };
248
- export type ContextApiWithRoot<R extends SchemasByScope> = ContextApiByScope<R>['root'] & ContextApiByScope<R>;
249
- interface OnUnknownActionData {
250
- service?: string;
251
- action?: string;
252
- }
253
- type AxiosInterceptorUseParams<T> = Parameters<AxiosInterceptorManager<T>['use']>;
254
- interface AxiosInterceptorConfig<T> {
255
- callback: AxiosInterceptorUseParams<T>[0];
256
- errorCallback?: AxiosInterceptorUseParams<T>[1];
257
- }
258
- export interface AxiosInterceptorsConfig {
259
- request?: AxiosInterceptorConfig<InternalAxiosRequestConfig<any>>[];
260
- response?: AxiosInterceptorConfig<AxiosResponse<any>>[];
261
- }
262
- export interface GatewayConfig<Context extends GatewayContext, Req extends GatewayRequest<Context>, Res extends GatewayResponse> {
263
- installation?: string;
264
- env?: string;
265
- actions?: string[];
266
- timeout?: number;
267
- grpcRetryCondition?: GrpcRetryCondition;
268
- axiosRetryCondition?: AxiosRetryCondition;
269
- grpcOptions?: object;
270
- grpcRecreateService?: boolean;
271
- axiosConfig?: AxiosRequestConfig;
272
- axiosInterceptors?: AxiosInterceptorsConfig;
273
- onUnknownAction?: (req: Req, res: Res, data: OnUnknownActionData) => any;
274
- onBeforeAction?: (req: Req, res: Res, scope: string, service: string, action: string, config?: ApiServiceActionConfig<Context, Req, Res, unknown>) => any;
275
- onRequestSuccess?: (req: Req, res: Res, data: any) => any;
276
- onRequestFailed?: (req: Req, res: Res, error: any) => any;
277
- sendStats?: SendStats<Context>;
278
- includeProtoRoots?: string[];
279
- caCertificatePath: string | null;
280
- proxyHeaders: ProxyHeaders;
281
- proxyDebugHeaders?: ProxyHeaders;
282
- withDebugHeaders?: boolean | ((req: Req, res: Res) => boolean);
283
- validationSchema?: object;
284
- encodePathArgs?: boolean;
285
- getAuthArgs: (req: Req, res: Res) => Record<string, unknown> | undefined;
286
- getAuthHeaders: GetAuthHeaders;
287
- ErrorConstructor: AppErrorConstructor;
288
- }
289
- export {};
@@ -1,22 +0,0 @@
1
- import { IncomingHttpHeaders } from 'http';
2
- export interface GatewayContextParams {
3
- tags?: Record<string, string | number | boolean | undefined>;
4
- }
5
- export type Dict = {
6
- [key: string]: unknown;
7
- };
8
- export interface GatewayContext {
9
- create: (name: string, params?: GatewayContextParams) => this;
10
- log: (message: string, extra?: Dict) => void;
11
- logError: (message: string, error?: unknown, extra?: Dict) => void;
12
- end: () => void;
13
- stats: (data: {
14
- [name: string]: string | number;
15
- }) => void;
16
- utils?: {
17
- redactSensitiveHeaders?: (headers?: IncomingHttpHeaders) => IncomingHttpHeaders;
18
- redactSensitiveKeys?: (headers: Dict) => Dict;
19
- };
20
- getMetadata: () => IncomingHttpHeaders;
21
- getTraceId?: () => string | undefined;
22
- }
@@ -1,3 +0,0 @@
1
- {
2
- "type": "commonjs"
3
- }
@@ -1,4 +0,0 @@
1
- import axios, { AxiosRequestConfig } from 'axios';
2
- import { IAxiosRetryConfig } from 'axios-retry';
3
- import { AxiosInterceptorsConfig } from '../models/common.js';
4
- export declare function getAxiosClient(timeout?: number, retries?: number, customRetryCondition?: IAxiosRetryConfig['retryCondition'], axiosConfig?: AxiosRequestConfig, { request: reqInterceptors, response: resInterceptors }?: AxiosInterceptorsConfig): axios.AxiosInstance;
@@ -1,16 +0,0 @@
1
- import * as grpc from '@grpc/grpc-js';
2
- import _ from 'lodash';
3
- import { ActionEndpoint, ApiServiceGrpcActionConfig, ExtendedActionEndpoint, ExtendedGrpcActionEndpoint, ExtendedRestActionEndpoint, Headers, ProxyHeadersFunctionExtra } from '../models/common.js';
4
- import { Dict, GatewayContext } from '../models/context.js';
5
- import { AppErrorConstructor } from '../models/error.js';
6
- export declare function isExtendedActionEndpoint(endpoint: ActionEndpoint): endpoint is ExtendedActionEndpoint;
7
- export declare function isExtendedGrpcActionEndpoint(endpoint: ActionEndpoint): endpoint is ExtendedGrpcActionEndpoint;
8
- export declare function isExtendedRestActionEndpoint(endpoint: ActionEndpoint): endpoint is ExtendedRestActionEndpoint;
9
- export declare function getKeys<T extends object>(obj: T): (keyof T)[];
10
- /**
11
- * This function should only use to sanitize debugHeaders that are creating in our code
12
- */
13
- export declare function sanitizeDebugHeaders(debugHeaders: Headers): _.Omit<Headers, "x-api-request-body">;
14
- export declare function getHeadersFromMetadata(metadata: Record<string, grpc.MetadataValue[]>, prefix?: string): Record<string, string>;
15
- export declare function handleError<Context extends GatewayContext>(ErrorConstructor: AppErrorConstructor, error: unknown, ctx: Context, message: string, extra?: Dict): void;
16
- export declare const getProxyHeadersArgs: <Context extends GatewayContext>(serviceName: string, actionName: string, grpcConfig?: ApiServiceGrpcActionConfig<Context, any, any>) => ProxyHeadersFunctionExtra;
@@ -1,2 +0,0 @@
1
- import { overrideEndpoints } from './overrideEndpoints.js';
2
- export default overrideEndpoints;
@@ -1,4 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const overrideEndpoints_js_1 = require("./overrideEndpoints.js");
4
- exports.default = overrideEndpoints_js_1.overrideEndpoints;
@@ -1,17 +0,0 @@
1
- import { ActionEndpoint, SchemasByScope } from '../../index.js';
2
- export interface OverrideParams {
3
- [serviceKeyScope: string]: {
4
- [endpointName: string]: ActionEndpoint;
5
- };
6
- }
7
- /**
8
- * Overrides endpoints in the schema according to overrideParams
9
- * @param originalSchema Schema for the gateway
10
- * @param overrideParams Definitions of endpoints for services in the format {[<scope>.<service key>]: {[<endpointName>]: ActionEndpoint}}
11
- * If <scope> is not specified, root is assumed.
12
- * Example: '{serviceName: {endpoint: "https://example.com"}}'
13
- * @param installation
14
- * @param env
15
- * @return new overridden schema
16
- */
17
- export declare function overrideEndpoints<T extends SchemasByScope>(originalSchema: T, overrideParams: OverrideParams, installation: string | undefined, env: string | undefined): T;
@@ -1 +0,0 @@
1
- export declare const packageRoot: string;
@@ -1,44 +0,0 @@
1
- "use strict";
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.packageRoot = void 0;
37
- const fs = __importStar(require("fs"));
38
- const path = __importStar(require("path"));
39
- const source_dir_js_1 = require("./source-dir.js");
40
- let packageRootTest = path.resolve(source_dir_js_1.sourceDir, '../package.json');
41
- if (!fs.existsSync(packageRootTest)) {
42
- packageRootTest = path.resolve(source_dir_js_1.sourceDir, '../../package.json');
43
- }
44
- exports.packageRoot = path.dirname(packageRootTest);
@@ -1 +0,0 @@
1
- export declare const sourceDir: string;