@bitblit/ratchet-graphql 6.1.198-alpha → 6.1.199-alpha
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/lib/graphql/graphql-ratchet-options.d.ts +10 -0
- package/lib/graphql/graphql-ratchet-options.js +2 -0
- package/lib/graphql/graphql-ratchet-options.js.map +1 -0
- package/lib/graphql/graphql-ratchet.d.ts +4 -10
- package/lib/graphql/graphql-ratchet.js +22 -27
- package/lib/graphql/graphql-ratchet.js.map +1 -1
- package/package.json +3 -3
- package/src/graphql/graphql-ratchet-options.ts +12 -0
- package/src/graphql/graphql-ratchet.spec.ts +7 -6
- package/src/graphql/graphql-ratchet.ts +25 -28
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { GraphqlRatchetEndpointProvider } from './provider/graphql-ratchet-endpoint-provider.js';
|
|
2
|
+
import { GraphqlRatchetJwtTokenProvider } from './provider/graphql-ratchet-jwt-token-provider.js';
|
|
3
|
+
import { GraphqlRatchetQueryProvider } from './provider/graphql-ratchet-query-provider.js';
|
|
4
|
+
import { GraphqlRatchetErrorHandler } from './provider/graphql-ratchet-error-handler.js';
|
|
5
|
+
export interface GraphqlRatchetOptions {
|
|
6
|
+
queryProvider: GraphqlRatchetQueryProvider;
|
|
7
|
+
endpointProvider: GraphqlRatchetEndpointProvider;
|
|
8
|
+
jwtTokenProvider?: GraphqlRatchetJwtTokenProvider;
|
|
9
|
+
errorHandler?: GraphqlRatchetErrorHandler;
|
|
10
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphql-ratchet-options.js","sourceRoot":"","sources":["../../src/graphql/graphql-ratchet-options.ts"],"names":[],"mappings":""}
|
|
@@ -1,17 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { GraphqlRatchetQueryProvider } from './provider/graphql-ratchet-query-provider.js';
|
|
4
|
-
import { GraphqlRatchetErrorHandler } from './provider/graphql-ratchet-error-handler.js';
|
|
5
|
-
import { AuthorizationStyle } from './authorization-style.js';
|
|
1
|
+
import { AuthorizationStyle } from "./authorization-style.js";
|
|
2
|
+
import { GraphqlRatchetOptions } from "./graphql-ratchet-options.ts";
|
|
6
3
|
export declare class GraphqlRatchet {
|
|
7
|
-
private queryProvider;
|
|
8
|
-
private endpointProvider;
|
|
9
|
-
private jwtTokenProvider?;
|
|
10
|
-
private errorHandler;
|
|
11
4
|
private clientCache;
|
|
12
5
|
private noAuthClient;
|
|
13
6
|
private cachedEndpoint;
|
|
14
|
-
|
|
7
|
+
private ops;
|
|
8
|
+
constructor(opsIn: GraphqlRatchetOptions);
|
|
15
9
|
currentAuthToken(): string;
|
|
16
10
|
fetchQueryText(qry: string): Promise<string>;
|
|
17
11
|
private createAnonymousApi;
|
|
@@ -1,33 +1,28 @@
|
|
|
1
|
-
import { DefaultGraphqlRatchetErrorHandler } from
|
|
2
|
-
import { RequireRatchet } from
|
|
3
|
-
import { Logger } from
|
|
4
|
-
import { ErrorRatchet } from
|
|
5
|
-
import { StringRatchet } from
|
|
6
|
-
import { GraphQLClient } from
|
|
7
|
-
import { AuthorizationStyle } from
|
|
1
|
+
import { DefaultGraphqlRatchetErrorHandler } from "./provider/default-graphql-ratchet-error-handler.js";
|
|
2
|
+
import { RequireRatchet } from "@bitblit/ratchet-common/lang/require-ratchet";
|
|
3
|
+
import { Logger } from "@bitblit/ratchet-common/logger/logger";
|
|
4
|
+
import { ErrorRatchet } from "@bitblit/ratchet-common/lang/error-ratchet";
|
|
5
|
+
import { StringRatchet } from "@bitblit/ratchet-common/lang/string-ratchet";
|
|
6
|
+
import { GraphQLClient } from "graphql-request";
|
|
7
|
+
import { AuthorizationStyle } from "./authorization-style.js";
|
|
8
8
|
export class GraphqlRatchet {
|
|
9
|
-
queryProvider;
|
|
10
|
-
endpointProvider;
|
|
11
|
-
jwtTokenProvider;
|
|
12
|
-
errorHandler;
|
|
13
9
|
clientCache = new Map();
|
|
14
10
|
noAuthClient;
|
|
15
11
|
cachedEndpoint;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
RequireRatchet.notNullOrUndefined(
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
this.cachedEndpoint = this.endpointProvider.fetchGraphqlEndpoint();
|
|
12
|
+
ops;
|
|
13
|
+
constructor(opsIn) {
|
|
14
|
+
RequireRatchet.notNullOrUndefined(opsIn, 'opsIn');
|
|
15
|
+
RequireRatchet.notNullOrUndefined(opsIn.queryProvider, 'queryProvider');
|
|
16
|
+
RequireRatchet.notNullOrUndefined(opsIn.endpointProvider, 'endpointProvider');
|
|
17
|
+
RequireRatchet.notNullOrUndefined(opsIn.errorHandler, 'errorHandler');
|
|
18
|
+
this.ops = Object.assign({ errorHandler: new DefaultGraphqlRatchetErrorHandler() }, opsIn);
|
|
19
|
+
this.cachedEndpoint = this.ops.endpointProvider.fetchGraphqlEndpoint();
|
|
25
20
|
}
|
|
26
21
|
currentAuthToken() {
|
|
27
|
-
return this?.jwtTokenProvider?.fetchJwtToken();
|
|
22
|
+
return this?.ops?.jwtTokenProvider?.fetchJwtToken();
|
|
28
23
|
}
|
|
29
24
|
async fetchQueryText(qry) {
|
|
30
|
-
const text = await this.queryProvider.fetchQueryText(qry);
|
|
25
|
+
const text = await this.ops.queryProvider.fetchQueryText(qry);
|
|
31
26
|
if (!text) {
|
|
32
27
|
Logger.warn('Could not find requested query : %s', qry);
|
|
33
28
|
}
|
|
@@ -39,8 +34,8 @@ export class GraphqlRatchet {
|
|
|
39
34
|
return rval;
|
|
40
35
|
}
|
|
41
36
|
fetchApi(authStyle) {
|
|
42
|
-
let rval
|
|
43
|
-
const jwtToken = authStyle === AuthorizationStyle.AlwaysAnonymous ? null : StringRatchet.trimToNull(this
|
|
37
|
+
let rval;
|
|
38
|
+
const jwtToken = authStyle === AuthorizationStyle.AlwaysAnonymous ? null : StringRatchet.trimToNull(this.ops.jwtTokenProvider?.fetchJwtToken());
|
|
44
39
|
if (authStyle === AuthorizationStyle.TokenRequired && !jwtToken) {
|
|
45
40
|
throw ErrorRatchet.fErr('No token provided, auth style is TokenRequired');
|
|
46
41
|
}
|
|
@@ -82,7 +77,7 @@ export class GraphqlRatchet {
|
|
|
82
77
|
return rval;
|
|
83
78
|
}
|
|
84
79
|
checkIfEndpointChanged() {
|
|
85
|
-
const check = this.endpointProvider.fetchGraphqlEndpoint();
|
|
80
|
+
const check = this.ops.endpointProvider.fetchGraphqlEndpoint();
|
|
86
81
|
if (check !== this.cachedEndpoint) {
|
|
87
82
|
Logger.info('Endpoint changed from %s to %s - clearing apollo caches');
|
|
88
83
|
this.clientCache = new Map();
|
|
@@ -128,7 +123,7 @@ export class GraphqlRatchet {
|
|
|
128
123
|
}
|
|
129
124
|
catch (err) {
|
|
130
125
|
Logger.silly('Exception caught in executeQuery : %s %s %j %s', err, queryName, variables, authStyle, err);
|
|
131
|
-
this.errorHandler.handleError(err, queryName, variables, authStyle);
|
|
126
|
+
this.ops.errorHandler.handleError(err, queryName, variables, authStyle);
|
|
132
127
|
}
|
|
133
128
|
return rval;
|
|
134
129
|
}
|
|
@@ -149,7 +144,7 @@ export class GraphqlRatchet {
|
|
|
149
144
|
}
|
|
150
145
|
}
|
|
151
146
|
catch (err) {
|
|
152
|
-
this.errorHandler.handleError(err, queryName, variables, authStyle);
|
|
147
|
+
this.ops.errorHandler.handleError(err, queryName, variables, authStyle);
|
|
153
148
|
}
|
|
154
149
|
return rval;
|
|
155
150
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graphql-ratchet.js","sourceRoot":"","sources":["../../src/graphql/graphql-ratchet.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"graphql-ratchet.js","sourceRoot":"","sources":["../../src/graphql/graphql-ratchet.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bitblit/ratchet-graphql",
|
|
3
|
-
"version": "6.1.
|
|
3
|
+
"version": "6.1.199-alpha",
|
|
4
4
|
"description": "Ratchet tools to simplify use of graphql",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"type": "module",
|
|
@@ -47,12 +47,12 @@
|
|
|
47
47
|
},
|
|
48
48
|
"license": "Apache-2.0",
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@bitblit/ratchet-common": "6.1.
|
|
50
|
+
"@bitblit/ratchet-common": "6.1.199-alpha",
|
|
51
51
|
"graphql": "16.12.0",
|
|
52
52
|
"graphql-request": "7.4.0"
|
|
53
53
|
},
|
|
54
54
|
"peerDependencies": {
|
|
55
|
-
"@bitblit/ratchet-common": "6.1.
|
|
55
|
+
"@bitblit/ratchet-common": "6.1.199-alpha",
|
|
56
56
|
"graphql": "^16.12.0",
|
|
57
57
|
"graphql-request": "^7.4.0"
|
|
58
58
|
},
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { GraphqlRatchetEndpointProvider } from './provider/graphql-ratchet-endpoint-provider.js';
|
|
2
|
+
import { GraphqlRatchetJwtTokenProvider } from './provider/graphql-ratchet-jwt-token-provider.js';
|
|
3
|
+
import { GraphqlRatchetQueryProvider } from './provider/graphql-ratchet-query-provider.js';
|
|
4
|
+
import { GraphqlRatchetErrorHandler } from './provider/graphql-ratchet-error-handler.js';
|
|
5
|
+
|
|
6
|
+
export interface GraphqlRatchetOptions {
|
|
7
|
+
queryProvider: GraphqlRatchetQueryProvider;
|
|
8
|
+
endpointProvider: GraphqlRatchetEndpointProvider;
|
|
9
|
+
jwtTokenProvider?: GraphqlRatchetJwtTokenProvider;
|
|
10
|
+
errorHandler?: GraphqlRatchetErrorHandler;
|
|
11
|
+
}
|
|
12
|
+
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { describe, expect, test } from
|
|
2
|
-
import { GraphqlRatchet } from
|
|
3
|
-
import { StringRecordQueryProvider } from
|
|
4
|
-
import { DefaultGraphqlRatchetEndpointProvider } from
|
|
1
|
+
import { describe, expect, test } from "vitest";
|
|
2
|
+
import { GraphqlRatchet } from "./graphql-ratchet";
|
|
3
|
+
import { StringRecordQueryProvider } from "./provider/string-record-query-provider";
|
|
4
|
+
import { DefaultGraphqlRatchetEndpointProvider } from "./provider/default-graphql-ratchet-endpoint-provider";
|
|
5
|
+
import { AuthorizationStyle } from "./authorization-style";
|
|
5
6
|
|
|
6
7
|
describe('#runTest', function () {
|
|
7
8
|
test.skip('should pull defaults', async () => {
|
|
@@ -35,8 +36,8 @@ describe('#runTest', function () {
|
|
|
35
36
|
);
|
|
36
37
|
|
|
37
38
|
// Since this'll be self-signed
|
|
38
|
-
process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0';
|
|
39
|
-
const out: any = await gr.executeQuery<any>('q', {},
|
|
39
|
+
// process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0';
|
|
40
|
+
const out: any = await gr.executeQuery<any>('q', {}, AuthorizationStyle.AnonymousIfNoTokenAvailable);
|
|
40
41
|
expect(out).toBeTruthy();
|
|
41
42
|
});
|
|
42
43
|
});
|
|
@@ -1,15 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import { StringRatchet } from '@bitblit/ratchet-common/lang/string-ratchet';
|
|
11
|
-
import { GraphQLClient } from 'graphql-request';
|
|
12
|
-
import { AuthorizationStyle } from './authorization-style.js';
|
|
1
|
+
import { DefaultGraphqlRatchetErrorHandler } from "./provider/default-graphql-ratchet-error-handler.js";
|
|
2
|
+
|
|
3
|
+
import { RequireRatchet } from "@bitblit/ratchet-common/lang/require-ratchet";
|
|
4
|
+
import { Logger } from "@bitblit/ratchet-common/logger/logger";
|
|
5
|
+
import { ErrorRatchet } from "@bitblit/ratchet-common/lang/error-ratchet";
|
|
6
|
+
import { StringRatchet } from "@bitblit/ratchet-common/lang/string-ratchet";
|
|
7
|
+
import { GraphQLClient } from "graphql-request";
|
|
8
|
+
import { AuthorizationStyle } from "./authorization-style.js";
|
|
9
|
+
import { GraphqlRatchetOptions } from "./graphql-ratchet-options.ts";
|
|
13
10
|
|
|
14
11
|
/**
|
|
15
12
|
* This is a very simplistic client for non-cache use cases, etc. For more
|
|
@@ -20,26 +17,26 @@ export class GraphqlRatchet {
|
|
|
20
17
|
private noAuthClient: GraphQLClient;
|
|
21
18
|
|
|
22
19
|
private cachedEndpoint: string;
|
|
20
|
+
private ops: GraphqlRatchetOptions;
|
|
23
21
|
|
|
24
22
|
constructor(
|
|
25
|
-
|
|
26
|
-
private endpointProvider: GraphqlRatchetEndpointProvider,
|
|
27
|
-
private jwtTokenProvider?: GraphqlRatchetJwtTokenProvider,
|
|
28
|
-
private errorHandler: GraphqlRatchetErrorHandler = new DefaultGraphqlRatchetErrorHandler(),
|
|
23
|
+
opsIn: GraphqlRatchetOptions
|
|
29
24
|
) {
|
|
30
|
-
RequireRatchet.notNullOrUndefined(
|
|
31
|
-
RequireRatchet.notNullOrUndefined(
|
|
25
|
+
RequireRatchet.notNullOrUndefined(opsIn, 'opsIn');
|
|
26
|
+
RequireRatchet.notNullOrUndefined(opsIn.queryProvider, 'queryProvider');
|
|
27
|
+
RequireRatchet.notNullOrUndefined(opsIn.endpointProvider, 'endpointProvider');
|
|
32
28
|
//RequireRatchet.notNullOrUndefined(jwtTokenProvider, 'jwtTokenProvider');
|
|
33
|
-
RequireRatchet.notNullOrUndefined(errorHandler, 'errorHandler');
|
|
34
|
-
this.
|
|
29
|
+
RequireRatchet.notNullOrUndefined(opsIn.errorHandler, 'errorHandler');
|
|
30
|
+
this.ops = Object.assign({errorHandler: new DefaultGraphqlRatchetErrorHandler()}, opsIn);
|
|
31
|
+
this.cachedEndpoint = this.ops.endpointProvider.fetchGraphqlEndpoint();
|
|
35
32
|
}
|
|
36
33
|
|
|
37
34
|
public currentAuthToken(): string {
|
|
38
|
-
return this?.jwtTokenProvider?.fetchJwtToken();
|
|
35
|
+
return this?.ops?.jwtTokenProvider?.fetchJwtToken();
|
|
39
36
|
}
|
|
40
37
|
|
|
41
38
|
public async fetchQueryText(qry: string): Promise<string> {
|
|
42
|
-
const text: string = await this.queryProvider.fetchQueryText(qry);
|
|
39
|
+
const text: string = await this.ops.queryProvider.fetchQueryText(qry);
|
|
43
40
|
if (!text) {
|
|
44
41
|
Logger.warn('Could not find requested query : %s', qry);
|
|
45
42
|
}
|
|
@@ -48,14 +45,14 @@ export class GraphqlRatchet {
|
|
|
48
45
|
|
|
49
46
|
private createAnonymousApi(): GraphQLClient {
|
|
50
47
|
Logger.info('Creating anonymous GraphQLClient');
|
|
51
|
-
const rval: GraphQLClient = new GraphQLClient(this.cachedEndpoint, { errorPolicy: 'none'
|
|
48
|
+
const rval: GraphQLClient = new GraphQLClient(this.cachedEndpoint, { errorPolicy: 'none' });
|
|
52
49
|
return rval;
|
|
53
50
|
}
|
|
54
51
|
|
|
55
52
|
private fetchApi(authStyle: AuthorizationStyle): GraphQLClient {
|
|
56
|
-
let rval: GraphQLClient
|
|
53
|
+
let rval: GraphQLClient;
|
|
57
54
|
const jwtToken: string =
|
|
58
|
-
authStyle === AuthorizationStyle.AlwaysAnonymous ? null : StringRatchet.trimToNull(this
|
|
55
|
+
authStyle === AuthorizationStyle.AlwaysAnonymous ? null : StringRatchet.trimToNull(this.ops.jwtTokenProvider?.fetchJwtToken());
|
|
59
56
|
if (authStyle === AuthorizationStyle.TokenRequired && !jwtToken) {
|
|
60
57
|
throw ErrorRatchet.fErr('No token provided, auth style is TokenRequired');
|
|
61
58
|
}
|
|
@@ -98,7 +95,7 @@ export class GraphqlRatchet {
|
|
|
98
95
|
}
|
|
99
96
|
|
|
100
97
|
private checkIfEndpointChanged(): void {
|
|
101
|
-
const check: string = this.endpointProvider.fetchGraphqlEndpoint();
|
|
98
|
+
const check: string = this.ops.endpointProvider.fetchGraphqlEndpoint();
|
|
102
99
|
if (check !== this.cachedEndpoint) {
|
|
103
100
|
Logger.info('Endpoint changed from %s to %s - clearing apollo caches');
|
|
104
101
|
this.clientCache = new Map<string, GraphQLClient>();
|
|
@@ -148,7 +145,7 @@ export class GraphqlRatchet {
|
|
|
148
145
|
}
|
|
149
146
|
} catch (err) {
|
|
150
147
|
Logger.silly('Exception caught in executeQuery : %s %s %j %s', err, queryName, variables, authStyle, err);
|
|
151
|
-
this.errorHandler.handleError(err, queryName, variables, authStyle);
|
|
148
|
+
this.ops.errorHandler.handleError(err, queryName, variables, authStyle);
|
|
152
149
|
}
|
|
153
150
|
return rval;
|
|
154
151
|
}
|
|
@@ -172,7 +169,7 @@ export class GraphqlRatchet {
|
|
|
172
169
|
ErrorRatchet.throwFormattedErr('Cannot run - no api fetched');
|
|
173
170
|
}
|
|
174
171
|
} catch (err) {
|
|
175
|
-
this.errorHandler.handleError(err, queryName, variables, authStyle);
|
|
172
|
+
this.ops.errorHandler.handleError(err, queryName, variables, authStyle);
|
|
176
173
|
}
|
|
177
174
|
|
|
178
175
|
return rval;
|