@bitblit/ratchet-graphql 4.0.420-alpha → 4.0.421-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.
Files changed (36) hide show
  1. package/lib/build/index.d.ts +1 -0
  2. package/lib/build/index.js +2 -0
  3. package/lib/build/index.js.map +1 -0
  4. package/lib/build/ratchet-graphql-info.d.ts +5 -0
  5. package/lib/build/ratchet-graphql-info.js +15 -0
  6. package/lib/build/ratchet-graphql-info.js.map +1 -0
  7. package/lib/graphql/graphql-ratchet.d.ts +22 -0
  8. package/lib/graphql/graphql-ratchet.js +178 -0
  9. package/lib/graphql/graphql-ratchet.js.map +1 -0
  10. package/lib/graphql/index.d.ts +8 -0
  11. package/lib/graphql/index.js +9 -0
  12. package/lib/graphql/index.js.map +1 -0
  13. package/lib/graphql/provider/default-graphql-ratchet-error-handler.d.ts +8 -0
  14. package/lib/graphql/provider/default-graphql-ratchet-error-handler.js +17 -0
  15. package/lib/graphql/provider/default-graphql-ratchet-error-handler.js.map +1 -0
  16. package/lib/graphql/provider/graphql-ratchet-endpoint-provider.d.ts +3 -0
  17. package/lib/graphql/provider/graphql-ratchet-endpoint-provider.js +2 -0
  18. package/lib/graphql/provider/graphql-ratchet-endpoint-provider.js.map +1 -0
  19. package/lib/graphql/provider/graphql-ratchet-error-handler.d.ts +3 -0
  20. package/lib/graphql/provider/graphql-ratchet-error-handler.js +2 -0
  21. package/lib/graphql/provider/graphql-ratchet-error-handler.js.map +1 -0
  22. package/lib/graphql/provider/graphql-ratchet-jwt-token-provider.d.ts +3 -0
  23. package/lib/graphql/provider/graphql-ratchet-jwt-token-provider.js +2 -0
  24. package/lib/graphql/provider/graphql-ratchet-jwt-token-provider.js.map +1 -0
  25. package/lib/graphql/provider/graphql-ratchet-query-provider.d.ts +3 -0
  26. package/lib/graphql/provider/graphql-ratchet-query-provider.js +2 -0
  27. package/lib/graphql/provider/graphql-ratchet-query-provider.js.map +1 -0
  28. package/lib/graphql/provider/local-fetch-query-provider.d.ts +8 -0
  29. package/lib/graphql/provider/local-fetch-query-provider.js +27 -0
  30. package/lib/graphql/provider/local-fetch-query-provider.js.map +1 -0
  31. package/lib/graphql/provider/string-record-query-provider.d.ts +9 -0
  32. package/lib/graphql/provider/string-record-query-provider.js +35 -0
  33. package/lib/graphql/provider/string-record-query-provider.js.map +1 -0
  34. package/package.json +10 -10
  35. package/lib/index.mjs +0 -2
  36. package/lib/types.d.ts +0 -67
@@ -0,0 +1 @@
1
+ export * from './ratchet-graphql-info.js';
@@ -0,0 +1,2 @@
1
+ export * from './ratchet-graphql-info.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/build/index.ts"],"names":[],"mappings":"AAIA,cAAc,2BAA2B,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { BuildInformation } from '@bitblit/ratchet-common/build/build-information';
2
+ export declare class RatchetGraphqlInfo {
3
+ private constructor();
4
+ static buildInformation(): BuildInformation;
5
+ }
@@ -0,0 +1,15 @@
1
+ export class RatchetGraphqlInfo {
2
+ constructor() { }
3
+ static buildInformation() {
4
+ const val = {
5
+ version: 'LOCAL-SNAPSHOT',
6
+ hash: 'LOCAL-HASH',
7
+ branch: 'LOCAL-BRANCH',
8
+ tag: 'LOCAL-TAG',
9
+ timeBuiltISO: 'LOCAL-TIME-ISO',
10
+ notes: 'LOCAL-NOTES',
11
+ };
12
+ return val;
13
+ }
14
+ }
15
+ //# sourceMappingURL=ratchet-graphql-info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ratchet-graphql-info.js","sourceRoot":"","sources":["../../src/build/ratchet-graphql-info.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,kBAAkB;IAG7B,gBAAuB,CAAC;IAEjB,MAAM,CAAC,gBAAgB;QAC5B,MAAM,GAAG,GAAqB;YAC5B,OAAO,EAAE,gBAAgB;YACzB,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,cAAc;YACtB,GAAG,EAAE,WAAW;YAChB,YAAY,EAAE,gBAAgB;YAC9B,KAAK,EAAE,aAAa;SACrB,CAAC;QACF,OAAO,GAAG,CAAC;IACb,CAAC;CACF"}
@@ -0,0 +1,22 @@
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 declare class GraphqlRatchet {
6
+ private queryProvider;
7
+ private endpointProvider;
8
+ private jwtTokenProvider;
9
+ private errorHandler;
10
+ private apolloCache;
11
+ private noAuthApollo;
12
+ private cachedEndpoint;
13
+ constructor(queryProvider: GraphqlRatchetQueryProvider, endpointProvider: GraphqlRatchetEndpointProvider, jwtTokenProvider: GraphqlRatchetJwtTokenProvider, errorHandler?: GraphqlRatchetErrorHandler);
14
+ private fetchQueryAsGql;
15
+ private createAnonymousApi;
16
+ private fetchApi;
17
+ private createAuthApi;
18
+ private checkIfEndpointChanged;
19
+ clearCaches(): void;
20
+ executeQuery<T>(queryName: string, variables: Record<string, any>, runAnonymous?: boolean): Promise<T>;
21
+ executeMutate<T>(queryName: string, variables: any, runAnonymous?: boolean): Promise<T>;
22
+ }
@@ -0,0 +1,178 @@
1
+ import { ApolloClient, gql, InMemoryCache } from '@apollo/client/core';
2
+ import { HttpLink } from '@apollo/client/link/http/HttpLink.js';
3
+ import { ApolloLink } from '@apollo/client/link/core/ApolloLink.js';
4
+ import { DefaultGraphqlRatchetErrorHandler } from './provider/default-graphql-ratchet-error-handler.js';
5
+ import { RequireRatchet } from '@bitblit/ratchet-common/lang/require-ratchet';
6
+ import { Logger } from '@bitblit/ratchet-common/logger/logger';
7
+ import { ErrorRatchet } from '@bitblit/ratchet-common/lang/error-ratchet';
8
+ import { StringRatchet } from '@bitblit/ratchet-common/lang/string-ratchet';
9
+ export class GraphqlRatchet {
10
+ queryProvider;
11
+ endpointProvider;
12
+ jwtTokenProvider;
13
+ errorHandler;
14
+ apolloCache = new Map();
15
+ noAuthApollo;
16
+ cachedEndpoint;
17
+ constructor(queryProvider, endpointProvider, jwtTokenProvider, errorHandler = new DefaultGraphqlRatchetErrorHandler()) {
18
+ this.queryProvider = queryProvider;
19
+ this.endpointProvider = endpointProvider;
20
+ this.jwtTokenProvider = jwtTokenProvider;
21
+ this.errorHandler = errorHandler;
22
+ RequireRatchet.notNullOrUndefined(queryProvider, 'queryProvider');
23
+ RequireRatchet.notNullOrUndefined(endpointProvider, 'endpointProvider');
24
+ RequireRatchet.notNullOrUndefined(jwtTokenProvider, 'jwtTokenProvider');
25
+ RequireRatchet.notNullOrUndefined(errorHandler, 'errorHandler');
26
+ this.cachedEndpoint = this.endpointProvider.fetchGraphqlEndpoint();
27
+ }
28
+ async fetchQueryAsGql(qry) {
29
+ let rval = null;
30
+ const text = await this.queryProvider.fetchQueryText(qry);
31
+ if (text) {
32
+ rval = gql(text);
33
+ }
34
+ else {
35
+ Logger.warn('Could not find requested query : %s', qry);
36
+ }
37
+ return rval;
38
+ }
39
+ createAnonymousApi() {
40
+ Logger.info('Creating anonymous apollo client');
41
+ const httpLink = new HttpLink({ uri: this.cachedEndpoint });
42
+ const opts = {
43
+ link: httpLink,
44
+ cache: new InMemoryCache(),
45
+ };
46
+ const rval = new ApolloClient(opts);
47
+ return rval;
48
+ }
49
+ fetchApi(runAnonymous) {
50
+ let rval = null;
51
+ const jwtToken = this.jwtTokenProvider.fetchJwtToken();
52
+ this.checkIfEndpointChanged();
53
+ Logger.info('Fetch auth apollo client %s', StringRatchet.obscure(StringRatchet.trimToEmpty(jwtToken), 2, 2));
54
+ if (StringRatchet.trimToNull(jwtToken)) {
55
+ Logger.debug('Fetching authd api');
56
+ if (!this.apolloCache.has(jwtToken)) {
57
+ const newValue = this.createAuthApi(jwtToken);
58
+ Logger.debug('Setting apollo cache for this token to %s', newValue);
59
+ this.apolloCache.set(jwtToken, newValue);
60
+ }
61
+ else {
62
+ Logger.debug('Fetching apollo client from cache');
63
+ }
64
+ rval = this.apolloCache.get(jwtToken);
65
+ }
66
+ else {
67
+ Logger.debug('Fetching unauthd ap');
68
+ if (runAnonymous) {
69
+ if (!this.noAuthApollo) {
70
+ this.noAuthApollo = this.createAnonymousApi();
71
+ }
72
+ else {
73
+ Logger.debug('Fetching anonymous client from cache');
74
+ }
75
+ rval = this.noAuthApollo;
76
+ }
77
+ else {
78
+ ErrorRatchet.throwFormattedErr('Cannot fetch api - no token and runAnonymous is set to %s : -%s-', runAnonymous, jwtToken);
79
+ }
80
+ }
81
+ Logger.debug('FetchApi returning %s', rval);
82
+ return rval;
83
+ }
84
+ createAuthApi(jwtToken) {
85
+ Logger.info('Creating a new authenticated api for %s : %s', this.cachedEndpoint, StringRatchet.obscure(jwtToken, 2, 2));
86
+ let rval = null;
87
+ RequireRatchet.notNullUndefinedOrOnlyWhitespaceString(jwtToken, 'jwtToken');
88
+ Logger.info('Creating auth apollo client %s', StringRatchet.obscure(jwtToken, 2, 2));
89
+ const httpLink = new HttpLink({ uri: this.cachedEndpoint });
90
+ const authLink = new ApolloLink((operation, forward) => {
91
+ operation.setContext({
92
+ headers: {
93
+ authorization: `Bearer ${jwtToken}`,
94
+ },
95
+ });
96
+ return forward(operation);
97
+ });
98
+ const opts = {
99
+ link: authLink.concat(httpLink),
100
+ cache: new InMemoryCache(),
101
+ };
102
+ rval = new ApolloClient(opts);
103
+ return rval;
104
+ }
105
+ checkIfEndpointChanged() {
106
+ const check = this.endpointProvider.fetchGraphqlEndpoint();
107
+ if (check !== this.cachedEndpoint) {
108
+ Logger.info('Endpoint changed from %s to %s - clearing apollo caches');
109
+ this.apolloCache = new Map();
110
+ this.noAuthApollo = null;
111
+ this.cachedEndpoint = check;
112
+ }
113
+ }
114
+ clearCaches() {
115
+ Logger.info('Clearing cached apollo');
116
+ this.apolloCache = new Map();
117
+ this.noAuthApollo = null;
118
+ this.cachedEndpoint = null;
119
+ }
120
+ async executeQuery(queryName, variables, runAnonymous = false) {
121
+ let rval = null;
122
+ try {
123
+ const api = this.fetchApi(runAnonymous);
124
+ if (api) {
125
+ Logger.debug('API fetched for %s, fetching gql', queryName);
126
+ const GQL = await this.fetchQueryAsGql(queryName);
127
+ Logger.debug('API and GQL fetched for %s - running %s %s', queryName, GQL, api);
128
+ const newValues = await api.query({
129
+ query: GQL,
130
+ variables: variables,
131
+ fetchPolicy: 'no-cache',
132
+ });
133
+ Logger.silly('Query returned: %j', newValues);
134
+ const keys = Object.keys(newValues.data);
135
+ if (keys.length !== 1) {
136
+ ErrorRatchet.throwFormattedErr('Unexpected number of keys : %s : %j', keys.length, keys);
137
+ }
138
+ rval = newValues.data[keys[0]];
139
+ }
140
+ else {
141
+ ErrorRatchet.throwFormattedErr('Cannot run - no api fetched');
142
+ }
143
+ }
144
+ catch (err) {
145
+ Logger.silly('Exception caught in executeQuery : %s %s %j %s', err, queryName, variables, runAnonymous, err);
146
+ this.errorHandler.handleError(err, queryName, variables, runAnonymous);
147
+ }
148
+ return rval;
149
+ }
150
+ async executeMutate(queryName, variables, runAnonymous = false) {
151
+ Logger.info('Mutate : %s : %j', queryName, variables);
152
+ let rval = null;
153
+ const api = this.fetchApi(runAnonymous);
154
+ try {
155
+ if (api) {
156
+ const GQL = await this.fetchQueryAsGql(queryName);
157
+ const newValues = await api.mutate({
158
+ mutation: GQL,
159
+ variables: variables,
160
+ fetchPolicy: 'no-cache',
161
+ });
162
+ const keys = Object.keys(newValues.data);
163
+ if (keys.length !== 1) {
164
+ ErrorRatchet.throwFormattedErr('Unexpected number of keys : %s : %j', keys.length, keys);
165
+ }
166
+ rval = newValues.data[keys[0]];
167
+ }
168
+ else {
169
+ ErrorRatchet.throwFormattedErr('Cannot run - no api fetched');
170
+ }
171
+ }
172
+ catch (err) {
173
+ this.errorHandler.handleError(err, queryName, variables, runAnonymous);
174
+ }
175
+ return rval;
176
+ }
177
+ }
178
+ //# sourceMappingURL=graphql-ratchet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphql-ratchet.js","sourceRoot":"","sources":["../../src/graphql/graphql-ratchet.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export * from './graphql-ratchet.js';
2
+ export * from './provider/default-graphql-ratchet-error-handler.js';
3
+ export * from './provider/graphql-ratchet-endpoint-provider.js';
4
+ export * from './provider/graphql-ratchet-error-handler.js';
5
+ export * from './provider/graphql-ratchet-jwt-token-provider.js';
6
+ export * from './provider/graphql-ratchet-query-provider.js';
7
+ export * from './provider/local-fetch-query-provider.js';
8
+ export * from './provider/string-record-query-provider.js';
@@ -0,0 +1,9 @@
1
+ export * from './graphql-ratchet.js';
2
+ export * from './provider/default-graphql-ratchet-error-handler.js';
3
+ export * from './provider/graphql-ratchet-endpoint-provider.js';
4
+ export * from './provider/graphql-ratchet-error-handler.js';
5
+ export * from './provider/graphql-ratchet-jwt-token-provider.js';
6
+ export * from './provider/graphql-ratchet-query-provider.js';
7
+ export * from './provider/local-fetch-query-provider.js';
8
+ export * from './provider/string-record-query-provider.js';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/graphql/index.ts"],"names":[],"mappings":"AAIA,cAAc,sBAAsB,CAAC;AACrC,cAAc,qDAAqD,CAAC;AACpE,cAAc,iDAAiD,CAAC;AAChE,cAAc,6CAA6C,CAAC;AAC5D,cAAc,kDAAkD,CAAC;AACjE,cAAc,8CAA8C,CAAC;AAC7D,cAAc,0CAA0C,CAAC;AACzD,cAAc,4CAA4C,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { GraphqlRatchetErrorHandler } from './graphql-ratchet-error-handler.js';
2
+ import { LoggerLevelName } from '@bitblit/ratchet-common/logger/logger-level-name';
3
+ export declare class DefaultGraphqlRatchetErrorHandler implements GraphqlRatchetErrorHandler {
4
+ private logLevel;
5
+ private rethrow;
6
+ constructor(logLevel?: LoggerLevelName, rethrow?: boolean);
7
+ handleError(error: any, queryName: string, variables: Record<string, any>, anonymous: boolean): void;
8
+ }
@@ -0,0 +1,17 @@
1
+ import { Logger } from '@bitblit/ratchet-common/logger/logger';
2
+ import { LoggerLevelName } from '@bitblit/ratchet-common/logger/logger-level-name';
3
+ export class DefaultGraphqlRatchetErrorHandler {
4
+ logLevel;
5
+ rethrow;
6
+ constructor(logLevel = LoggerLevelName.warn, rethrow = false) {
7
+ this.logLevel = logLevel;
8
+ this.rethrow = rethrow;
9
+ }
10
+ handleError(error, queryName, variables, anonymous) {
11
+ Logger.logByLevel(this.logLevel, 'Graphql failed : %s : %s : Anon-%s : %j', error, queryName, anonymous, variables);
12
+ if (this.rethrow) {
13
+ throw error;
14
+ }
15
+ }
16
+ }
17
+ //# sourceMappingURL=default-graphql-ratchet-error-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-graphql-ratchet-error-handler.js","sourceRoot":"","sources":["../../../src/graphql/provider/default-graphql-ratchet-error-handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,kDAAkD,CAAC;AAEnF,MAAM,OAAO,iCAAiC;IAElC;IACA;IAFV,YACU,WAA4B,eAAe,CAAC,IAAI,EAChD,UAAmB,KAAK;QADxB,aAAQ,GAAR,QAAQ,CAAwC;QAChD,YAAO,GAAP,OAAO,CAAiB;IAC/B,CAAC;IAEG,WAAW,CAAC,KAAU,EAAE,SAAiB,EAAE,SAA8B,EAAE,SAAkB;QAClG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,yCAAyC,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QACpH,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,3 @@
1
+ export interface GraphqlRatchetEndpointProvider {
2
+ fetchGraphqlEndpoint(): string;
3
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=graphql-ratchet-endpoint-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphql-ratchet-endpoint-provider.js","sourceRoot":"","sources":["../../../src/graphql/provider/graphql-ratchet-endpoint-provider.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ export interface GraphqlRatchetErrorHandler {
2
+ handleError(error: any, queryName: string, variables: Record<string, any>, anonymous: boolean): void;
3
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=graphql-ratchet-error-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphql-ratchet-error-handler.js","sourceRoot":"","sources":["../../../src/graphql/provider/graphql-ratchet-error-handler.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ export interface GraphqlRatchetJwtTokenProvider {
2
+ fetchJwtToken(): string;
3
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=graphql-ratchet-jwt-token-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphql-ratchet-jwt-token-provider.js","sourceRoot":"","sources":["../../../src/graphql/provider/graphql-ratchet-jwt-token-provider.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ export interface GraphqlRatchetQueryProvider {
2
+ fetchQueryText(name: string): Promise<string>;
3
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=graphql-ratchet-query-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphql-ratchet-query-provider.js","sourceRoot":"","sources":["../../../src/graphql/provider/graphql-ratchet-query-provider.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ import { GraphqlRatchetQueryProvider } from './graphql-ratchet-query-provider.js';
2
+ export declare class LocalFetchQueryProvider implements GraphqlRatchetQueryProvider {
3
+ private pathTemplate;
4
+ private forcePathToLowerCase;
5
+ private cacheMap;
6
+ constructor(pathTemplate?: string, forcePathToLowerCase?: boolean);
7
+ fetchQueryText(qry: string): Promise<string>;
8
+ }
@@ -0,0 +1,27 @@
1
+ import { Logger } from '@bitblit/ratchet-common/logger/logger';
2
+ import { StringRatchet } from '@bitblit/ratchet-common/lang/string-ratchet';
3
+ import fetch from 'cross-fetch';
4
+ export class LocalFetchQueryProvider {
5
+ pathTemplate;
6
+ forcePathToLowerCase;
7
+ cacheMap = new Map();
8
+ constructor(pathTemplate = 'assets/gql/${QUERY_NAME}.gql', forcePathToLowerCase = false) {
9
+ this.pathTemplate = pathTemplate;
10
+ this.forcePathToLowerCase = forcePathToLowerCase;
11
+ }
12
+ async fetchQueryText(qry) {
13
+ let rval = this.cacheMap.get(qry.toLowerCase());
14
+ if (!rval) {
15
+ const tgt = this.forcePathToLowerCase ? qry.toLowerCase() : qry;
16
+ const pathInput = StringRatchet.simpleTemplateFill(this.pathTemplate, { QUERY_NAME: tgt }, true);
17
+ Logger.info('Cache miss, loading %s from %s', qry, pathInput);
18
+ const qryResp = await fetch(pathInput);
19
+ rval = StringRatchet.trimToNull(await qryResp.text());
20
+ if (rval) {
21
+ this.cacheMap.set(qry.toLowerCase(), rval);
22
+ }
23
+ }
24
+ return rval;
25
+ }
26
+ }
27
+ //# sourceMappingURL=local-fetch-query-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-fetch-query-provider.js","sourceRoot":"","sources":["../../../src/graphql/provider/local-fetch-query-provider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAC5E,OAAO,KAAK,MAAM,aAAa,CAAC;AAEhC,MAAM,OAAO,uBAAuB;IAIxB;IACA;IAJF,QAAQ,GAAwB,IAAI,GAAG,EAAkB,CAAC;IAElE,YACU,eAAuB,8BAA8B,EACrD,uBAAgC,KAAK;QADrC,iBAAY,GAAZ,YAAY,CAAyC;QACrD,yBAAoB,GAApB,oBAAoB,CAAiB;IAC5C,CAAC;IAEG,KAAK,CAAC,cAAc,CAAC,GAAW;QACrC,IAAI,IAAI,GAAW,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,GAAG,GAAW,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;YACxE,MAAM,SAAS,GAAW,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;YACzG,MAAM,CAAC,IAAI,CAAC,gCAAgC,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;YAC9D,MAAM,OAAO,GAAa,MAAM,KAAK,CAAC,SAAS,CAAC,CAAC;YACjD,IAAI,GAAG,aAAa,CAAC,UAAU,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YACtD,IAAI,IAAI,EAAE,CAAC;gBACT,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
@@ -0,0 +1,9 @@
1
+ import { GraphqlRatchetQueryProvider } from './graphql-ratchet-query-provider.js';
2
+ export declare class StringRecordQueryProvider implements GraphqlRatchetQueryProvider {
3
+ private autoPrefix;
4
+ private autoSuffix;
5
+ private caseSensitive;
6
+ private files;
7
+ constructor(inFiles: Record<string, string>, autoPrefix: string, autoSuffix: string, caseSensitive: boolean);
8
+ fetchQueryText(qry: string): Promise<string>;
9
+ }
@@ -0,0 +1,35 @@
1
+ import { Logger } from '@bitblit/ratchet-common/logger/logger';
2
+ import { StringRatchet } from '@bitblit/ratchet-common/lang/string-ratchet';
3
+ export class StringRecordQueryProvider {
4
+ autoPrefix;
5
+ autoSuffix;
6
+ caseSensitive;
7
+ files = {};
8
+ constructor(inFiles, autoPrefix = '', autoSuffix = '', caseSensitive) {
9
+ this.autoPrefix = autoPrefix;
10
+ this.autoSuffix = autoSuffix;
11
+ this.caseSensitive = caseSensitive;
12
+ if (inFiles) {
13
+ if (caseSensitive) {
14
+ this.files = Object.assign({}, inFiles);
15
+ }
16
+ else {
17
+ Object.keys(inFiles).forEach((k) => {
18
+ this.files[k.toLowerCase()] = inFiles[k];
19
+ });
20
+ }
21
+ }
22
+ }
23
+ async fetchQueryText(qry) {
24
+ let lookupKey = '';
25
+ lookupKey += this.caseSensitive ? StringRatchet.trimToEmpty(this.autoPrefix) : StringRatchet.trimToEmpty(this.autoPrefix).toLowerCase();
26
+ lookupKey += this.caseSensitive ? StringRatchet.trimToEmpty(qry) : StringRatchet.trimToEmpty(qry).toLowerCase();
27
+ lookupKey += this.caseSensitive ? StringRatchet.trimToEmpty(this.autoSuffix) : StringRatchet.trimToEmpty(this.autoSuffix).toLowerCase();
28
+ const rval = this.files[lookupKey];
29
+ if (!rval) {
30
+ Logger.warn('Could not find %s in %j', lookupKey, Object.keys(this.files));
31
+ }
32
+ return rval;
33
+ }
34
+ }
35
+ //# sourceMappingURL=string-record-query-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string-record-query-provider.js","sourceRoot":"","sources":["../../../src/graphql/provider/string-record-query-provider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAE5E,MAAM,OAAO,yBAAyB;IAI1B;IACA;IACA;IALF,KAAK,GAA2B,EAAE,CAAC;IAC3C,YACE,OAA+B,EACvB,aAAqB,EAAE,EACvB,aAAqB,EAAE,EACvB,aAAsB;QAFtB,eAAU,GAAV,UAAU,CAAa;QACvB,eAAU,GAAV,UAAU,CAAa;QACvB,kBAAa,GAAb,aAAa,CAAS;QAE9B,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,aAAa,EAAE,CAAC;gBAClB,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;YAC1C,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;oBACjC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC3C,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,GAAW;QACrC,IAAI,SAAS,GAAW,EAAE,CAAC;QAC3B,SAAS,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;QACxI,SAAS,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QAChH,SAAS,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;QAExI,MAAM,IAAI,GAAW,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7E,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
package/package.json CHANGED
@@ -1,19 +1,18 @@
1
1
  {
2
2
  "name": "@bitblit/ratchet-graphql",
3
- "version": "4.0.420-alpha",
3
+ "version": "4.0.421-alpha",
4
4
  "description": "Ratchet tools to simplify use of graphql",
5
5
  "sideEffects": false,
6
6
  "type": "module",
7
- "module": "./lib/index.mjs",
8
- "types": "./lib/types.d.ts",
9
7
  "files": [
10
8
  "lib/**",
11
9
  "bin/**"
12
10
  ],
13
11
  "exports": {
14
- ".": {
15
- "types": "./lib/types.d.ts",
16
- "import": "./lib/index.mjs"
12
+ "./package.json": "./package.json",
13
+ "./*": {
14
+ "import": "./lib/*.js",
15
+ "types": "./lib/*.d.ts"
17
16
  }
18
17
  },
19
18
  "contributors": [
@@ -52,12 +51,13 @@
52
51
  },
53
52
  "license": "Apache-2.0",
54
53
  "dependencies": {
55
- "@apollo/client": "3.10.5",
56
- "@bitblit/ratchet-common": "4.0.420-alpha",
57
- "graphql": "16.8.2"
54
+ "@apollo/client": "3.11.4",
55
+ "@bitblit/ratchet-common": "4.0.421-alpha",
56
+ "graphql": "16.9.0"
58
57
  },
59
58
  "peerDependencies": {
60
- "@bitblit/ratchet-common": "4.0.420-alpha",
59
+ "@apollo/client": "^3.11.4",
60
+ "@bitblit/ratchet-common": "4.0.421-alpha",
61
61
  "graphql": "^16.8.2"
62
62
  }
63
63
  }
package/lib/index.mjs DELETED
@@ -1,2 +0,0 @@
1
- import{gql as t,InMemoryCache as e,ApolloClient as o}from"@apollo/client/core";import{HttpLink as n}from"@apollo/client/link/http/HttpLink.js";import{ApolloLink as i}from"@apollo/client/link/core/ApolloLink.js";import{LoggerLevelName as r,Logger as s,RequireRatchet as a,StringRatchet as c,ErrorRatchet as h}from"@bitblit/ratchet-common";import l from"cross-fetch";class u{constructor(){}static buildInformation(){return{version:"420",hash:"4470745cd9544530657f21b58e096ebea701451a",branch:"alpha-2024-07-30-6",tag:"alpha-2024-07-30-6",timeBuiltISO:"2024-07-30T23:41:38-0700",notes:"No notes"}}}class d{logLevel;rethrow;constructor(t=r.warn,e=!1){this.logLevel=t,this.rethrow=e}handleError(t,e,o,n){if(s.logByLevel(this.logLevel,"Graphql failed : %s : %s : Anon-%s : %j",t,e,n,o),this.rethrow)throw t}}class p{queryProvider;endpointProvider;jwtTokenProvider;errorHandler;apolloCache=new Map;noAuthApollo;cachedEndpoint;constructor(t,e,o,n=new d){this.queryProvider=t,this.endpointProvider=e,this.jwtTokenProvider=o,this.errorHandler=n,a.notNullOrUndefined(t,"queryProvider"),a.notNullOrUndefined(e,"endpointProvider"),a.notNullOrUndefined(o,"jwtTokenProvider"),a.notNullOrUndefined(n,"errorHandler"),this.cachedEndpoint=this.endpointProvider.fetchGraphqlEndpoint()}async fetchQueryAsGql(e){let o=null;const n=await this.queryProvider.fetchQueryText(e);return n?o=t(n):s.warn("Could not find requested query : %s",e),o}createAnonymousApi(){s.info("Creating anonymous apollo client");const t={link:new n({uri:this.cachedEndpoint}),cache:new e};return new o(t)}fetchApi(t){let e=null;const o=this.jwtTokenProvider.fetchJwtToken();if(this.checkIfEndpointChanged(),s.info("Fetch auth apollo client %s",c.obscure(c.trimToEmpty(o),2,2)),c.trimToNull(o)){if(s.debug("Fetching authd api"),this.apolloCache.has(o))s.debug("Fetching apollo client from cache");else{const t=this.createAuthApi(o);s.debug("Setting apollo cache for this token to %s",t),this.apolloCache.set(o,t)}e=this.apolloCache.get(o)}else s.debug("Fetching unauthd ap"),t?(this.noAuthApollo?s.debug("Fetching anonymous client from cache"):this.noAuthApollo=this.createAnonymousApi(),e=this.noAuthApollo):h.throwFormattedErr("Cannot fetch api - no token and runAnonymous is set to %s : -%s-",t,o);return s.debug("FetchApi returning %s",e),e}createAuthApi(t){s.info("Creating a new authenticated api for %s : %s",this.cachedEndpoint,c.obscure(t,2,2));let r=null;a.notNullUndefinedOrOnlyWhitespaceString(t,"jwtToken"),s.info("Creating auth apollo client %s",c.obscure(t,2,2));const h=new n({uri:this.cachedEndpoint}),l={link:new i(((e,o)=>(e.setContext({headers:{authorization:`Bearer ${t}`}}),o(e)))).concat(h),cache:new e};return r=new o(l),r}checkIfEndpointChanged(){const t=this.endpointProvider.fetchGraphqlEndpoint();t!==this.cachedEndpoint&&(s.info("Endpoint changed from %s to %s - clearing apollo caches"),this.apolloCache=new Map,this.noAuthApollo=null,this.cachedEndpoint=t)}clearCaches(){s.info("Clearing cached apollo"),this.apolloCache=new Map,this.noAuthApollo=null,this.cachedEndpoint=null}async executeQuery(t,e,o=!1){let n=null;try{const i=this.fetchApi(o);if(i){s.debug("API fetched for %s, fetching gql",t);const o=await this.fetchQueryAsGql(t);s.debug("API and GQL fetched for %s - running %s %s",t,o,i);const r=await i.query({query:o,variables:e,fetchPolicy:"no-cache"});s.silly("Query returned: %j",r);const a=Object.keys(r.data);1!==a.length&&h.throwFormattedErr("Unexpected number of keys : %s : %j",a.length,a),n=r.data[a[0]]}else h.throwFormattedErr("Cannot run - no api fetched")}catch(n){s.silly("Exception caught in executeQuery : %s %s %j %s",n,t,e,o,n),this.errorHandler.handleError(n,t,e,o)}return n}async executeMutate(t,e,o=!1){s.info("Mutate : %s : %j",t,e);let n=null;const i=this.fetchApi(o);try{if(i){const o=await this.fetchQueryAsGql(t),r=await i.mutate({mutation:o,variables:e,fetchPolicy:"no-cache"}),s=Object.keys(r.data);1!==s.length&&h.throwFormattedErr("Unexpected number of keys : %s : %j",s.length,s),n=r.data[s[0]]}else h.throwFormattedErr("Cannot run - no api fetched")}catch(n){this.errorHandler.handleError(n,t,e,o)}return n}}class f{pathTemplate;forcePathToLowerCase;cacheMap=new Map;constructor(t="assets/gql/${QUERY_NAME}.gql",e=!1){this.pathTemplate=t,this.forcePathToLowerCase=e}async fetchQueryText(t){let e=this.cacheMap.get(t.toLowerCase());if(!e){const o=this.forcePathToLowerCase?t.toLowerCase():t,n=c.simpleTemplateFill(this.pathTemplate,{QUERY_NAME:o},!0);s.info("Cache miss, loading %s from %s",t,n);const i=await l(n);e=c.trimToNull(await i.text()),e&&this.cacheMap.set(t.toLowerCase(),e)}return e}}class m{autoPrefix;autoSuffix;caseSensitive;files={};constructor(t,e="",o="",n){this.autoPrefix=e,this.autoSuffix=o,this.caseSensitive=n,t&&(n?this.files=Object.assign({},t):Object.keys(t).forEach((e=>{this.files[e.toLowerCase()]=t[e]})))}async fetchQueryText(t){let e="";e+=this.caseSensitive?c.trimToEmpty(this.autoPrefix):c.trimToEmpty(this.autoPrefix).toLowerCase(),e+=this.caseSensitive?c.trimToEmpty(t):c.trimToEmpty(t).toLowerCase(),e+=this.caseSensitive?c.trimToEmpty(this.autoSuffix):c.trimToEmpty(this.autoSuffix).toLowerCase();const o=this.files[e];return o||s.warn("Could not find %s in %j",e,Object.keys(this.files)),o}}export{d as DefaultGraphqlRatchetErrorHandler,p as GraphqlRatchet,f as LocalFetchQueryProvider,u as RatchetGraphqlInfo,m as StringRecordQueryProvider};
2
- //# sourceMappingURL=index.mjs.map
package/lib/types.d.ts DELETED
@@ -1,67 +0,0 @@
1
- import { BuildInformation, LoggerLevelName } from '@bitblit/ratchet-common';
2
-
3
- declare class RatchetGraphqlInfo {
4
- private constructor();
5
- static buildInformation(): BuildInformation;
6
- }
7
-
8
- interface GraphqlRatchetEndpointProvider {
9
- fetchGraphqlEndpoint(): string;
10
- }
11
-
12
- interface GraphqlRatchetJwtTokenProvider {
13
- fetchJwtToken(): string;
14
- }
15
-
16
- interface GraphqlRatchetQueryProvider {
17
- fetchQueryText(name: string): Promise<string>;
18
- }
19
-
20
- interface GraphqlRatchetErrorHandler {
21
- handleError(error: any, queryName: string, variables: Record<string, any>, anonymous: boolean): void;
22
- }
23
-
24
- declare class GraphqlRatchet {
25
- private queryProvider;
26
- private endpointProvider;
27
- private jwtTokenProvider;
28
- private errorHandler;
29
- private apolloCache;
30
- private noAuthApollo;
31
- private cachedEndpoint;
32
- constructor(queryProvider: GraphqlRatchetQueryProvider, endpointProvider: GraphqlRatchetEndpointProvider, jwtTokenProvider: GraphqlRatchetJwtTokenProvider, errorHandler?: GraphqlRatchetErrorHandler);
33
- private fetchQueryAsGql;
34
- private createAnonymousApi;
35
- private fetchApi;
36
- private createAuthApi;
37
- private checkIfEndpointChanged;
38
- clearCaches(): void;
39
- executeQuery<T>(queryName: string, variables: Record<string, any>, runAnonymous?: boolean): Promise<T>;
40
- executeMutate<T>(queryName: string, variables: any, runAnonymous?: boolean): Promise<T>;
41
- }
42
-
43
- declare class DefaultGraphqlRatchetErrorHandler implements GraphqlRatchetErrorHandler {
44
- private logLevel;
45
- private rethrow;
46
- constructor(logLevel?: LoggerLevelName, rethrow?: boolean);
47
- handleError(error: any, queryName: string, variables: Record<string, any>, anonymous: boolean): void;
48
- }
49
-
50
- declare class LocalFetchQueryProvider implements GraphqlRatchetQueryProvider {
51
- private pathTemplate;
52
- private forcePathToLowerCase;
53
- private cacheMap;
54
- constructor(pathTemplate?: string, forcePathToLowerCase?: boolean);
55
- fetchQueryText(qry: string): Promise<string>;
56
- }
57
-
58
- declare class StringRecordQueryProvider implements GraphqlRatchetQueryProvider {
59
- private autoPrefix;
60
- private autoSuffix;
61
- private caseSensitive;
62
- private files;
63
- constructor(inFiles: Record<string, string>, autoPrefix: string, autoSuffix: string, caseSensitive: boolean);
64
- fetchQueryText(qry: string): Promise<string>;
65
- }
66
-
67
- export { DefaultGraphqlRatchetErrorHandler, GraphqlRatchet, type GraphqlRatchetEndpointProvider, type GraphqlRatchetErrorHandler, type GraphqlRatchetJwtTokenProvider, type GraphqlRatchetQueryProvider, LocalFetchQueryProvider, RatchetGraphqlInfo, StringRecordQueryProvider };