@backstage/plugin-kubernetes-backend 0.14.1 → 0.14.2-next.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.
package/dist/index.d.ts CHANGED
@@ -1,8 +1,8 @@
1
- import { Logger } from 'winston';
2
- import { KubernetesRequestBody, KubernetesRequestAuth } from '@backstage/plugin-kubernetes-common';
3
- import { Config } from '@backstage/config';
4
1
  import * as k8sTypes from '@backstage/plugin-kubernetes-node';
5
- import { KubernetesClustersSupplier as KubernetesClustersSupplier$1, KubernetesObjectsProvider as KubernetesObjectsProvider$1 } from '@backstage/plugin-kubernetes-node';
2
+ import { AuthenticationStrategy as AuthenticationStrategy$1, ClusterDetails as ClusterDetails$1, KubernetesCredential as KubernetesCredential$1, AuthMetadata as AuthMetadata$1, KubernetesClustersSupplier as KubernetesClustersSupplier$1, CustomResource as CustomResource$1, KubernetesFetcher as KubernetesFetcher$1, KubernetesObjectsProvider as KubernetesObjectsProvider$1, KubernetesServiceLocator as KubernetesServiceLocator$1 } from '@backstage/plugin-kubernetes-node';
3
+ import { KubernetesRequestAuth, KubernetesRequestBody } from '@backstage/plugin-kubernetes-common';
4
+ import { Config } from '@backstage/config';
5
+ import { Logger } from 'winston';
6
6
  import { TokenCredential } from '@azure/identity';
7
7
  import { CatalogApi } from '@backstage/catalog-client';
8
8
  import { PermissionEvaluator } from '@backstage/plugin-permission-common';
@@ -15,105 +15,20 @@ import { PluginEndpointDiscovery } from '@backstage/backend-common';
15
15
  *
16
16
  * @public
17
17
  */
18
- type ServiceLocatorMethod = 'multiTenant' | 'singleTenant' | 'http';
19
- /**
20
- *
21
- * @public
22
- */
23
- interface KubernetesObjectsProviderOptions {
24
- logger: Logger;
25
- config: Config;
26
- fetcher: k8sTypes.KubernetesFetcher;
27
- serviceLocator: k8sTypes.KubernetesServiceLocator;
28
- customResources: k8sTypes.CustomResource[];
29
- objectTypesToFetch?: k8sTypes.ObjectToFetch[];
30
- }
31
- /**
32
- *
33
- * @public
34
- */
35
- type ObjectsByEntityRequest = KubernetesRequestBody;
36
- /**
37
- * @public @deprecated Import it from \@backstage/plugin-kubernetes-node instead
38
- */
39
- type KubernetesObjectsProvider = k8sTypes.KubernetesObjectsProvider;
40
- /**
41
- * @public @deprecated Import it from \@backstage/plugin-kubernetes-node instead
42
- */
43
- type CustomResourcesByEntity = k8sTypes.CustomResourcesByEntity;
44
- /**
45
- * @public
46
- * @deprecated Import it from \@backstage/plugin-kubernetes-node instead
47
- */
48
- type AuthMetadata = k8sTypes.AuthMetadata;
49
- /**
50
- * @public
51
- * @deprecated Import it from \@backstage/plugin-kubernetes-node instead
52
- */
53
- type ClusterDetails = k8sTypes.ClusterDetails;
54
- /**
55
- * @public
56
- * @deprecated Import it from \@backstage/plugin-kubernetes-node instead
57
- */
58
- type KubernetesClustersSupplier = k8sTypes.KubernetesClustersSupplier;
59
- /**
60
- * @public @deprecated Import it from \@backstage/plugin-kubernetes-node instead
61
- */
62
- type KubernetesObjectTypes = k8sTypes.KubernetesObjectTypes;
63
- /**
64
- * @public @deprecated Import it from \@backstage/plugin-kubernetes-node instead
65
- */
66
- type ObjectToFetch = k8sTypes.ObjectToFetch;
67
- /**
68
- * @public @deprecated Import it from \@backstage/plugin-kubernetes-node instead
69
- */
70
- type CustomResource = k8sTypes.CustomResource;
71
- /**
72
- * @public @deprecated Import it from \@backstage/plugin-kubernetes-node instead
73
- */
74
- type ObjectFetchParams = k8sTypes.ObjectFetchParams;
75
- /**
76
- * @public @deprecated Import it from \@backstage/plugin-kubernetes-node instead
77
- */
78
- type FetchResponseWrapper = k8sTypes.FetchResponseWrapper;
79
- /**
80
- * @public @deprecated Import it from \@backstage/plugin-kubernetes-node instead
81
- */
82
- type KubernetesFetcher = k8sTypes.KubernetesFetcher;
83
- /**
84
- * @public @deprecated Import it from \@backstage/plugin-kubernetes-node instead
85
- */
86
- type ServiceLocatorRequestContext = k8sTypes.ServiceLocatorRequestContext;
87
- /**
88
- * @public @deprecated Import it from \@backstage/plugin-kubernetes-node instead
89
- */
90
- type KubernetesServiceLocator = k8sTypes.KubernetesServiceLocator;
91
-
92
- /**
93
- * @public @deprecated Import it from \@backstage/plugin-kubernetes-node instead
94
- */
95
- type AuthenticationStrategy = k8sTypes.AuthenticationStrategy;
96
- /**
97
- * @public @deprecated Import it from \@backstage/plugin-kubernetes-node instead
98
- */
99
- type KubernetesCredential = k8sTypes.KubernetesCredential;
100
-
101
- /**
102
- *
103
- * @public
104
- */
105
- declare class AksStrategy implements AuthenticationStrategy {
106
- getCredential(_: ClusterDetails, requestAuth: KubernetesRequestAuth): Promise<KubernetesCredential>;
18
+ declare class AksStrategy implements AuthenticationStrategy$1 {
19
+ getCredential(_: ClusterDetails$1, requestAuth: KubernetesRequestAuth): Promise<KubernetesCredential$1>;
107
20
  validateCluster(): Error[];
21
+ presentAuthMetadata(_authMetadata: AuthMetadata$1): AuthMetadata$1;
108
22
  }
109
23
 
110
24
  /**
111
25
  *
112
26
  * @public
113
27
  */
114
- declare class AnonymousStrategy implements AuthenticationStrategy {
115
- getCredential(): Promise<KubernetesCredential>;
28
+ declare class AnonymousStrategy implements AuthenticationStrategy$1 {
29
+ getCredential(): Promise<KubernetesCredential$1>;
116
30
  validateCluster(): Error[];
31
+ presentAuthMetadata(_authMetadata: AuthMetadata$1): AuthMetadata$1;
117
32
  }
118
33
 
119
34
  /**
@@ -129,49 +44,53 @@ type SigningCreds = {
129
44
  *
130
45
  * @public
131
46
  */
132
- declare class AwsIamStrategy implements AuthenticationStrategy {
47
+ declare class AwsIamStrategy implements AuthenticationStrategy$1 {
133
48
  private readonly credsManager;
134
49
  constructor(opts: {
135
50
  config: Config;
136
51
  });
137
- getCredential(clusterDetails: ClusterDetails): Promise<KubernetesCredential>;
52
+ getCredential(clusterDetails: ClusterDetails$1): Promise<KubernetesCredential$1>;
138
53
  validateCluster(): Error[];
139
54
  private getBearerToken;
55
+ presentAuthMetadata(_authMetadata: AuthMetadata$1): AuthMetadata$1;
140
56
  }
141
57
 
142
58
  /**
143
59
  *
144
60
  * @public
145
61
  */
146
- declare class AzureIdentityStrategy implements AuthenticationStrategy {
62
+ declare class AzureIdentityStrategy implements AuthenticationStrategy$1 {
147
63
  private readonly logger;
148
64
  private readonly tokenCredential;
149
65
  private accessToken;
150
66
  private newTokenPromise;
151
67
  constructor(logger: Logger, tokenCredential?: TokenCredential);
152
- getCredential(): Promise<KubernetesCredential>;
68
+ getCredential(): Promise<KubernetesCredential$1>;
153
69
  validateCluster(): Error[];
154
70
  private fetchNewToken;
155
71
  private tokenRequiresRefresh;
156
72
  private tokenExpired;
73
+ presentAuthMetadata(_authMetadata: AuthMetadata$1): AuthMetadata$1;
157
74
  }
158
75
 
159
76
  /**
160
77
  *
161
78
  * @public
162
79
  */
163
- declare class GoogleStrategy implements AuthenticationStrategy {
164
- getCredential(_: ClusterDetails, requestAuth: KubernetesRequestAuth): Promise<KubernetesCredential>;
80
+ declare class GoogleStrategy implements AuthenticationStrategy$1 {
81
+ getCredential(_: ClusterDetails$1, requestAuth: KubernetesRequestAuth): Promise<KubernetesCredential$1>;
165
82
  validateCluster(): Error[];
83
+ presentAuthMetadata(_authMetadata: AuthMetadata$1): AuthMetadata$1;
166
84
  }
167
85
 
168
86
  /**
169
87
  *
170
88
  * @public
171
89
  */
172
- declare class GoogleServiceAccountStrategy implements AuthenticationStrategy {
173
- getCredential(): Promise<KubernetesCredential>;
90
+ declare class GoogleServiceAccountStrategy implements AuthenticationStrategy$1 {
91
+ getCredential(): Promise<KubernetesCredential$1>;
174
92
  validateCluster(): Error[];
93
+ presentAuthMetadata(_authMetadata: AuthMetadata$1): AuthMetadata$1;
175
94
  }
176
95
 
177
96
  /**
@@ -180,38 +99,128 @@ declare class GoogleServiceAccountStrategy implements AuthenticationStrategy {
180
99
  */
181
100
  type DispatchStrategyOptions = {
182
101
  authStrategyMap: {
183
- [key: string]: AuthenticationStrategy;
102
+ [key: string]: AuthenticationStrategy$1;
184
103
  };
185
104
  };
186
105
  /**
187
106
  * used to direct a KubernetesAuthProvider to its corresponding AuthenticationStrategy
188
107
  * @public
189
108
  */
190
- declare class DispatchStrategy implements AuthenticationStrategy {
109
+ declare class DispatchStrategy implements AuthenticationStrategy$1 {
191
110
  private readonly strategyMap;
192
111
  constructor(options: DispatchStrategyOptions);
193
- getCredential(clusterDetails: ClusterDetails, auth: KubernetesRequestAuth): Promise<KubernetesCredential>;
194
- validateCluster(authMetadata: AuthMetadata): Error[];
112
+ getCredential(clusterDetails: ClusterDetails$1, auth: KubernetesRequestAuth): Promise<KubernetesCredential$1>;
113
+ validateCluster(authMetadata: AuthMetadata$1): Error[];
114
+ presentAuthMetadata(_authMetadata: AuthMetadata$1): AuthMetadata$1;
195
115
  }
196
116
 
197
117
  /**
198
118
  *
199
119
  * @public
200
120
  */
201
- declare class ServiceAccountStrategy implements AuthenticationStrategy {
202
- getCredential(clusterDetails: ClusterDetails): Promise<KubernetesCredential>;
121
+ declare class ServiceAccountStrategy implements AuthenticationStrategy$1 {
122
+ getCredential(clusterDetails: ClusterDetails$1): Promise<KubernetesCredential$1>;
203
123
  validateCluster(): Error[];
124
+ presentAuthMetadata(_authMetadata: AuthMetadata$1): AuthMetadata$1;
204
125
  }
205
126
 
206
127
  /**
207
128
  *
208
129
  * @public
209
130
  */
210
- declare class OidcStrategy implements AuthenticationStrategy {
211
- getCredential(clusterDetails: ClusterDetails, authConfig: KubernetesRequestAuth): Promise<KubernetesCredential>;
212
- validateCluster(authMetadata: AuthMetadata): Error[];
131
+ declare class OidcStrategy implements AuthenticationStrategy$1 {
132
+ getCredential(clusterDetails: ClusterDetails$1, authConfig: KubernetesRequestAuth): Promise<KubernetesCredential$1>;
133
+ validateCluster(authMetadata: AuthMetadata$1): Error[];
134
+ presentAuthMetadata(_authMetadata: AuthMetadata$1): AuthMetadata$1;
213
135
  }
214
136
 
137
+ /**
138
+ * @public @deprecated Import it from \@backstage/plugin-kubernetes-node instead
139
+ */
140
+ type AuthenticationStrategy = k8sTypes.AuthenticationStrategy;
141
+ /**
142
+ * @public @deprecated Import it from \@backstage/plugin-kubernetes-node instead
143
+ */
144
+ type KubernetesCredential = k8sTypes.KubernetesCredential;
145
+
146
+ /**
147
+ *
148
+ * @public
149
+ */
150
+ type ServiceLocatorMethod = 'multiTenant' | 'singleTenant' | 'http';
151
+ /**
152
+ *
153
+ * @public
154
+ */
155
+ interface KubernetesObjectsProviderOptions {
156
+ logger: Logger;
157
+ config: Config;
158
+ fetcher: k8sTypes.KubernetesFetcher;
159
+ serviceLocator: k8sTypes.KubernetesServiceLocator;
160
+ customResources: k8sTypes.CustomResource[];
161
+ objectTypesToFetch?: k8sTypes.ObjectToFetch[];
162
+ }
163
+ /**
164
+ *
165
+ * @public
166
+ */
167
+ type ObjectsByEntityRequest = KubernetesRequestBody;
168
+ /**
169
+ * @public @deprecated Import it from \@backstage/plugin-kubernetes-node instead
170
+ */
171
+ type KubernetesObjectsProvider = k8sTypes.KubernetesObjectsProvider;
172
+ /**
173
+ * @public @deprecated Import it from \@backstage/plugin-kubernetes-node instead
174
+ */
175
+ type CustomResourcesByEntity = k8sTypes.CustomResourcesByEntity;
176
+ /**
177
+ * @public
178
+ * @deprecated Import it from \@backstage/plugin-kubernetes-node instead
179
+ */
180
+ type AuthMetadata = k8sTypes.AuthMetadata;
181
+ /**
182
+ * @public
183
+ * @deprecated Import it from \@backstage/plugin-kubernetes-node instead
184
+ */
185
+ type ClusterDetails = k8sTypes.ClusterDetails;
186
+ /**
187
+ * @public
188
+ * @deprecated Import it from \@backstage/plugin-kubernetes-node instead
189
+ */
190
+ type KubernetesClustersSupplier = k8sTypes.KubernetesClustersSupplier;
191
+ /**
192
+ * @public @deprecated Import it from \@backstage/plugin-kubernetes-node instead
193
+ */
194
+ type KubernetesObjectTypes = k8sTypes.KubernetesObjectTypes;
195
+ /**
196
+ * @public @deprecated Import it from \@backstage/plugin-kubernetes-node instead
197
+ */
198
+ type ObjectToFetch = k8sTypes.ObjectToFetch;
199
+ /**
200
+ * @public @deprecated Import it from \@backstage/plugin-kubernetes-node instead
201
+ */
202
+ type CustomResource = k8sTypes.CustomResource;
203
+ /**
204
+ * @public @deprecated Import it from \@backstage/plugin-kubernetes-node instead
205
+ */
206
+ type ObjectFetchParams = k8sTypes.ObjectFetchParams;
207
+ /**
208
+ * @public @deprecated Import it from \@backstage/plugin-kubernetes-node instead
209
+ */
210
+ type FetchResponseWrapper = k8sTypes.FetchResponseWrapper;
211
+ /**
212
+ * @public @deprecated Import it from \@backstage/plugin-kubernetes-node instead
213
+ */
214
+ type KubernetesFetcher = k8sTypes.KubernetesFetcher;
215
+ /**
216
+ * @public @deprecated Import it from \@backstage/plugin-kubernetes-node instead
217
+ */
218
+ type ServiceLocatorRequestContext = k8sTypes.ServiceLocatorRequestContext;
219
+ /**
220
+ * @public @deprecated Import it from \@backstage/plugin-kubernetes-node instead
221
+ */
222
+ type KubernetesServiceLocator = k8sTypes.KubernetesServiceLocator;
223
+
215
224
  /**
216
225
  * The header that is used to specify the cluster name.
217
226
  *
@@ -279,13 +288,13 @@ interface KubernetesEnvironment {
279
288
  type KubernetesBuilderReturn = Promise<{
280
289
  router: express.Router;
281
290
  clusterSupplier: KubernetesClustersSupplier$1;
282
- customResources: CustomResource[];
283
- fetcher: KubernetesFetcher;
291
+ customResources: CustomResource$1[];
292
+ fetcher: KubernetesFetcher$1;
284
293
  proxy: KubernetesProxy;
285
294
  objectsProvider: KubernetesObjectsProvider$1;
286
- serviceLocator: KubernetesServiceLocator;
295
+ serviceLocator: KubernetesServiceLocator$1;
287
296
  authStrategyMap: {
288
- [key: string]: AuthenticationStrategy;
297
+ [key: string]: AuthenticationStrategy$1;
289
298
  };
290
299
  }>;
291
300
  /**
@@ -307,36 +316,36 @@ declare class KubernetesBuilder {
307
316
  setClusterSupplier(clusterSupplier?: KubernetesClustersSupplier$1): this;
308
317
  setDefaultClusterRefreshInterval(refreshInterval: Duration): this;
309
318
  setObjectsProvider(objectsProvider?: KubernetesObjectsProvider$1): this;
310
- setFetcher(fetcher?: KubernetesFetcher): this;
311
- setServiceLocator(serviceLocator?: KubernetesServiceLocator): this;
319
+ setFetcher(fetcher?: KubernetesFetcher$1): this;
320
+ setServiceLocator(serviceLocator?: KubernetesServiceLocator$1): this;
312
321
  setProxy(proxy?: KubernetesProxy): this;
313
322
  setAuthStrategyMap(authStrategyMap: {
314
- [key: string]: AuthenticationStrategy;
323
+ [key: string]: AuthenticationStrategy$1;
315
324
  }): void;
316
- addAuthStrategy(key: string, strategy: AuthenticationStrategy): this;
317
- protected buildCustomResources(): k8sTypes.CustomResource[];
325
+ addAuthStrategy(key: string, strategy: AuthenticationStrategy$1): this;
326
+ protected buildCustomResources(): CustomResource$1[];
318
327
  protected buildClusterSupplier(refreshInterval: Duration): KubernetesClustersSupplier$1;
319
328
  protected buildObjectsProvider(options: KubernetesObjectsProviderOptions): KubernetesObjectsProvider$1;
320
- protected buildFetcher(): KubernetesFetcher;
321
- protected buildServiceLocator(method: ServiceLocatorMethod, clusterSupplier: KubernetesClustersSupplier$1): KubernetesServiceLocator;
322
- protected buildMultiTenantServiceLocator(clusterSupplier: KubernetesClustersSupplier$1): KubernetesServiceLocator;
323
- protected buildSingleTenantServiceLocator(clusterSupplier: KubernetesClustersSupplier$1): KubernetesServiceLocator;
324
- protected buildHttpServiceLocator(_clusterSupplier: KubernetesClustersSupplier$1): KubernetesServiceLocator;
329
+ protected buildFetcher(): KubernetesFetcher$1;
330
+ protected buildServiceLocator(method: ServiceLocatorMethod, clusterSupplier: KubernetesClustersSupplier$1): KubernetesServiceLocator$1;
331
+ protected buildMultiTenantServiceLocator(clusterSupplier: KubernetesClustersSupplier$1): KubernetesServiceLocator$1;
332
+ protected buildSingleTenantServiceLocator(clusterSupplier: KubernetesClustersSupplier$1): KubernetesServiceLocator$1;
333
+ protected buildHttpServiceLocator(_clusterSupplier: KubernetesClustersSupplier$1): KubernetesServiceLocator$1;
325
334
  protected buildProxy(logger: Logger, clusterSupplier: KubernetesClustersSupplier$1): KubernetesProxy;
326
335
  protected buildRouter(objectsProvider: KubernetesObjectsProvider$1, clusterSupplier: KubernetesClustersSupplier$1, catalogApi: CatalogApi, proxy: KubernetesProxy, permissionApi: PermissionEvaluator): express.Router;
327
336
  protected buildAuthStrategyMap(): {
328
- [key: string]: k8sTypes.AuthenticationStrategy;
337
+ [key: string]: AuthenticationStrategy$1;
329
338
  };
330
339
  protected fetchClusterDetails(clusterSupplier: KubernetesClustersSupplier$1): Promise<k8sTypes.ClusterDetails[]>;
331
340
  protected getServiceLocatorMethod(): ServiceLocatorMethod;
332
- protected getFetcher(): KubernetesFetcher;
341
+ protected getFetcher(): KubernetesFetcher$1;
333
342
  protected getClusterSupplier(): KubernetesClustersSupplier$1;
334
- protected getServiceLocator(): KubernetesServiceLocator;
343
+ protected getServiceLocator(): KubernetesServiceLocator$1;
335
344
  protected getObjectsProvider(options: KubernetesObjectsProviderOptions): KubernetesObjectsProvider$1;
336
345
  protected getObjectTypesToFetch(): k8sTypes.ObjectToFetch[] | undefined;
337
346
  protected getProxy(logger: Logger, clusterSupplier: KubernetesClustersSupplier$1): KubernetesProxy;
338
347
  protected getAuthStrategyMap(): {
339
- [key: string]: k8sTypes.AuthenticationStrategy;
348
+ [key: string]: AuthenticationStrategy$1;
340
349
  };
341
350
  }
342
351
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@backstage/plugin-kubernetes-backend",
3
3
  "description": "A Backstage backend plugin that integrates towards Kubernetes",
4
- "version": "0.14.1",
4
+ "version": "0.14.2-next.1",
5
5
  "main": "./dist/index.cjs.js",
6
6
  "types": "./dist/index.d.ts",
7
7
  "license": "Apache-2.0",
@@ -49,19 +49,19 @@
49
49
  "@aws-sdk/credential-providers": "^3.350.0",
50
50
  "@aws-sdk/signature-v4": "^3.347.0",
51
51
  "@azure/identity": "^4.0.0",
52
- "@backstage/backend-common": "^0.20.1",
53
- "@backstage/backend-plugin-api": "^0.6.9",
54
- "@backstage/catalog-client": "^1.5.2",
55
- "@backstage/catalog-model": "^1.4.3",
52
+ "@backstage/backend-common": "^0.21.0-next.1",
53
+ "@backstage/backend-plugin-api": "^0.6.10-next.1",
54
+ "@backstage/catalog-client": "^1.6.0-next.1",
55
+ "@backstage/catalog-model": "^1.4.4-next.0",
56
56
  "@backstage/config": "^1.1.1",
57
57
  "@backstage/errors": "^1.2.3",
58
58
  "@backstage/integration-aws-node": "^0.1.8",
59
- "@backstage/plugin-auth-node": "^0.4.3",
60
- "@backstage/plugin-catalog-node": "^1.6.1",
61
- "@backstage/plugin-kubernetes-common": "^0.7.3",
62
- "@backstage/plugin-kubernetes-node": "^0.1.3",
59
+ "@backstage/plugin-auth-node": "^0.4.4-next.1",
60
+ "@backstage/plugin-catalog-node": "^1.6.2-next.1",
61
+ "@backstage/plugin-kubernetes-common": "^0.7.4-next.1",
62
+ "@backstage/plugin-kubernetes-node": "^0.1.4-next.1",
63
63
  "@backstage/plugin-permission-common": "^0.7.12",
64
- "@backstage/plugin-permission-node": "^0.7.20",
64
+ "@backstage/plugin-permission-node": "^0.7.21-next.1",
65
65
  "@backstage/types": "^1.1.1",
66
66
  "@google-cloud/container": "^5.0.0",
67
67
  "@jest-mock/express": "^2.0.1",
@@ -85,11 +85,11 @@
85
85
  "yn": "^4.0.0"
86
86
  },
87
87
  "devDependencies": {
88
- "@backstage/backend-app-api": "^0.5.10",
89
- "@backstage/backend-test-utils": "^0.2.10",
90
- "@backstage/cli": "^0.25.1",
91
- "@backstage/plugin-permission-backend": "^0.5.32",
92
- "@backstage/plugin-permission-backend-module-allow-all-policy": "^0.1.6",
88
+ "@backstage/backend-app-api": "^0.5.11-next.1",
89
+ "@backstage/backend-test-utils": "^0.3.0-next.1",
90
+ "@backstage/cli": "^0.25.2-next.1",
91
+ "@backstage/plugin-permission-backend": "^0.5.33-next.1",
92
+ "@backstage/plugin-permission-backend-module-allow-all-policy": "^0.1.7-next.1",
93
93
  "@types/aws4": "^1.5.1",
94
94
  "msw": "^1.0.0",
95
95
  "supertest": "^6.1.3",