@ensdomains/ensjs 3.0.0-alpha.15 → 3.0.0-alpha.16
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/cjs/GqlManager.d.ts +5 -3
- package/dist/cjs/GqlManager.js +21 -13
- package/dist/esm/GqlManager.d.ts +5 -3
- package/dist/esm/GqlManager.js +21 -13
- package/package.json +1 -1
- package/src/GqlManager.test.ts +5 -4
- package/src/GqlManager.ts +54 -36
package/dist/cjs/GqlManager.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export declare const
|
|
1
|
+
import type { parse as Parse, print as Print, SelectionSetNode, visit as Visit } from 'graphql';
|
|
2
|
+
import type Traverse from 'traverse';
|
|
3
|
+
export declare const enter: (node: SelectionSetNode) => SelectionSetNode | undefined;
|
|
4
|
+
export declare const requestMiddleware: (visit: typeof Visit, parse: typeof Parse, print: typeof Print) => (request: any) => any;
|
|
5
|
+
export declare const responseMiddleware: (traverse: typeof Traverse) => (response: any) => any;
|
|
4
6
|
export default class GqlManager {
|
|
5
7
|
gql: any;
|
|
6
8
|
client?: any | null;
|
package/dist/cjs/GqlManager.js
CHANGED
|
@@ -24,7 +24,6 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
26
|
exports.responseMiddleware = exports.requestMiddleware = exports.enter = void 0;
|
|
27
|
-
// @ts-nocheck
|
|
28
27
|
const normalise_1 = require("./utils/normalise");
|
|
29
28
|
const generateSelection = (selection) => ({
|
|
30
29
|
kind: 'Field',
|
|
@@ -38,25 +37,34 @@ const generateSelection = (selection) => ({
|
|
|
38
37
|
selectionSet: undefined,
|
|
39
38
|
});
|
|
40
39
|
const enter = (node) => {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
if (
|
|
45
|
-
|
|
46
|
-
|
|
40
|
+
let hasName = false;
|
|
41
|
+
let hasId = false;
|
|
42
|
+
for (const selection of node.selections) {
|
|
43
|
+
if ('name' in selection) {
|
|
44
|
+
if (selection.name.value === 'name')
|
|
45
|
+
hasName = true;
|
|
46
|
+
else if (selection.name.value === 'id')
|
|
47
|
+
hasId = true;
|
|
47
48
|
}
|
|
48
49
|
}
|
|
50
|
+
if (hasName && !hasId) {
|
|
51
|
+
node.selections = [...node.selections, generateSelection('id')];
|
|
52
|
+
return node;
|
|
53
|
+
}
|
|
49
54
|
};
|
|
50
55
|
exports.enter = enter;
|
|
51
|
-
const requestMiddleware = (visit, parse) => (request) => {
|
|
56
|
+
const requestMiddleware = (visit, parse, print) => (request) => {
|
|
52
57
|
const requestBody = JSON.parse(request.body);
|
|
53
58
|
const rawQuery = requestBody.query;
|
|
54
59
|
const parsedQuery = parse(rawQuery);
|
|
55
|
-
const updatedQuery = visit(parsedQuery, {
|
|
56
|
-
|
|
60
|
+
const updatedQuery = visit(parsedQuery, {
|
|
61
|
+
SelectionSet: {
|
|
62
|
+
enter: exports.enter,
|
|
63
|
+
},
|
|
64
|
+
});
|
|
57
65
|
return {
|
|
58
66
|
...request,
|
|
59
|
-
body: JSON.stringify(
|
|
67
|
+
body: JSON.stringify({ ...requestBody, query: print(updatedQuery) }),
|
|
60
68
|
};
|
|
61
69
|
};
|
|
62
70
|
exports.requestMiddleware = requestMiddleware;
|
|
@@ -81,13 +89,13 @@ class GqlManager {
|
|
|
81
89
|
client = null;
|
|
82
90
|
setUrl = async (url) => {
|
|
83
91
|
if (url) {
|
|
84
|
-
const [imported, traverse, { visit, parse }] = await Promise.all([
|
|
92
|
+
const [imported, traverse, { visit, parse, print }] = await Promise.all([
|
|
85
93
|
Promise.resolve().then(() => __importStar(require('graphql-request'))),
|
|
86
94
|
Promise.resolve().then(() => __importStar(require('traverse'))),
|
|
87
95
|
Promise.resolve().then(() => __importStar(require('graphql/language'))),
|
|
88
96
|
]);
|
|
89
97
|
this.client = new imported.GraphQLClient(url, {
|
|
90
|
-
requestMiddleware: (0, exports.requestMiddleware)(visit, parse),
|
|
98
|
+
requestMiddleware: (0, exports.requestMiddleware)(visit, parse, print),
|
|
91
99
|
responseMiddleware: (0, exports.responseMiddleware)(traverse.default),
|
|
92
100
|
});
|
|
93
101
|
this.gql = imported.gql;
|
package/dist/esm/GqlManager.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export declare const
|
|
1
|
+
import type { parse as Parse, print as Print, SelectionSetNode, visit as Visit } from 'graphql';
|
|
2
|
+
import type Traverse from 'traverse';
|
|
3
|
+
export declare const enter: (node: SelectionSetNode) => SelectionSetNode | undefined;
|
|
4
|
+
export declare const requestMiddleware: (visit: typeof Visit, parse: typeof Parse, print: typeof Print) => (request: any) => any;
|
|
5
|
+
export declare const responseMiddleware: (traverse: typeof Traverse) => (response: any) => any;
|
|
4
6
|
export default class GqlManager {
|
|
5
7
|
gql: any;
|
|
6
8
|
client?: any | null;
|
package/dist/esm/GqlManager.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
// @ts-nocheck
|
|
2
1
|
import { namehash } from './utils/normalise';
|
|
3
2
|
const generateSelection = (selection) => ({
|
|
4
3
|
kind: 'Field',
|
|
@@ -12,24 +11,33 @@ const generateSelection = (selection) => ({
|
|
|
12
11
|
selectionSet: undefined,
|
|
13
12
|
});
|
|
14
13
|
export const enter = (node) => {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
if (
|
|
19
|
-
|
|
20
|
-
|
|
14
|
+
let hasName = false;
|
|
15
|
+
let hasId = false;
|
|
16
|
+
for (const selection of node.selections) {
|
|
17
|
+
if ('name' in selection) {
|
|
18
|
+
if (selection.name.value === 'name')
|
|
19
|
+
hasName = true;
|
|
20
|
+
else if (selection.name.value === 'id')
|
|
21
|
+
hasId = true;
|
|
21
22
|
}
|
|
22
23
|
}
|
|
24
|
+
if (hasName && !hasId) {
|
|
25
|
+
node.selections = [...node.selections, generateSelection('id')];
|
|
26
|
+
return node;
|
|
27
|
+
}
|
|
23
28
|
};
|
|
24
|
-
export const requestMiddleware = (visit, parse) => (request) => {
|
|
29
|
+
export const requestMiddleware = (visit, parse, print) => (request) => {
|
|
25
30
|
const requestBody = JSON.parse(request.body);
|
|
26
31
|
const rawQuery = requestBody.query;
|
|
27
32
|
const parsedQuery = parse(rawQuery);
|
|
28
|
-
const updatedQuery = visit(parsedQuery, {
|
|
29
|
-
|
|
33
|
+
const updatedQuery = visit(parsedQuery, {
|
|
34
|
+
SelectionSet: {
|
|
35
|
+
enter,
|
|
36
|
+
},
|
|
37
|
+
});
|
|
30
38
|
return {
|
|
31
39
|
...request,
|
|
32
|
-
body: JSON.stringify(
|
|
40
|
+
body: JSON.stringify({ ...requestBody, query: print(updatedQuery) }),
|
|
33
41
|
};
|
|
34
42
|
};
|
|
35
43
|
export const responseMiddleware = (traverse) => (response) => {
|
|
@@ -53,13 +61,13 @@ export default class GqlManager {
|
|
|
53
61
|
this.client = null;
|
|
54
62
|
this.setUrl = async (url) => {
|
|
55
63
|
if (url) {
|
|
56
|
-
const [imported, traverse, { visit, parse }] = await Promise.all([
|
|
64
|
+
const [imported, traverse, { visit, parse, print }] = await Promise.all([
|
|
57
65
|
import('graphql-request'),
|
|
58
66
|
import('traverse'),
|
|
59
67
|
import('graphql/language'),
|
|
60
68
|
]);
|
|
61
69
|
this.client = new imported.GraphQLClient(url, {
|
|
62
|
-
requestMiddleware: requestMiddleware(visit, parse),
|
|
70
|
+
requestMiddleware: requestMiddleware(visit, parse, print),
|
|
63
71
|
responseMiddleware: responseMiddleware(traverse.default),
|
|
64
72
|
});
|
|
65
73
|
this.gql = imported.gql;
|
package/package.json
CHANGED
package/src/GqlManager.test.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import { parse, print, visit } from 'graphql'
|
|
1
2
|
import traverse from 'traverse'
|
|
2
|
-
import { visit, parse } from 'graphql'
|
|
3
3
|
|
|
4
|
-
import { requestMiddleware, responseMiddleware
|
|
4
|
+
import { requestMiddleware, responseMiddleware } from './GqlManager'
|
|
5
5
|
import { namehash } from './utils/normalise'
|
|
6
6
|
|
|
7
7
|
describe('GqlManager', () => {
|
|
@@ -153,8 +153,9 @@ query getNames($id: ID!, $expiryDate: Int) {
|
|
|
153
153
|
|
|
154
154
|
describe('requestMiddleware', () => {
|
|
155
155
|
it('should add id to a SelectionSet if name is present and id is not', () => {
|
|
156
|
-
const result = requestMiddleware(visit, parse)(mockRequest)
|
|
157
|
-
|
|
156
|
+
const result = requestMiddleware(visit, parse, print)(mockRequest)
|
|
157
|
+
const body = result.body as string
|
|
158
|
+
expect(body.match(/domain.*id.*id.*domains.*id.*id/)?.length).toBe(1)
|
|
158
159
|
})
|
|
159
160
|
})
|
|
160
161
|
describe('responseMiddleware', () => {
|
package/src/GqlManager.ts
CHANGED
|
@@ -1,10 +1,17 @@
|
|
|
1
|
-
|
|
1
|
+
import type {
|
|
2
|
+
Kind,
|
|
3
|
+
parse as Parse,
|
|
4
|
+
print as Print,
|
|
5
|
+
SelectionSetNode,
|
|
6
|
+
visit as Visit,
|
|
7
|
+
} from 'graphql'
|
|
8
|
+
import type Traverse from 'traverse'
|
|
2
9
|
import { namehash } from './utils/normalise'
|
|
3
10
|
|
|
4
11
|
const generateSelection = (selection: any) => ({
|
|
5
|
-
kind: 'Field',
|
|
12
|
+
kind: 'Field' as Kind.FIELD,
|
|
6
13
|
name: {
|
|
7
|
-
kind: 'Name',
|
|
14
|
+
kind: 'Name' as Kind.NAME,
|
|
8
15
|
value: selection,
|
|
9
16
|
},
|
|
10
17
|
arguments: [],
|
|
@@ -13,47 +20,58 @@ const generateSelection = (selection: any) => ({
|
|
|
13
20
|
selectionSet: undefined,
|
|
14
21
|
})
|
|
15
22
|
|
|
16
|
-
export const enter = (node:
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
const name = node.selections.find((x) => x.name && x.name.value === 'name')
|
|
23
|
+
export const enter = (node: SelectionSetNode) => {
|
|
24
|
+
let hasName = false
|
|
25
|
+
let hasId = false
|
|
20
26
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
27
|
+
for (const selection of node.selections) {
|
|
28
|
+
if ('name' in selection) {
|
|
29
|
+
if (selection.name.value === 'name') hasName = true
|
|
30
|
+
else if (selection.name.value === 'id') hasId = true
|
|
24
31
|
}
|
|
25
32
|
}
|
|
33
|
+
|
|
34
|
+
if (hasName && !hasId) {
|
|
35
|
+
node.selections = [...node.selections, generateSelection('id')]
|
|
36
|
+
return node
|
|
37
|
+
}
|
|
26
38
|
}
|
|
27
39
|
|
|
28
|
-
export const requestMiddleware =
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
40
|
+
export const requestMiddleware =
|
|
41
|
+
(visit: typeof Visit, parse: typeof Parse, print: typeof Print) =>
|
|
42
|
+
(request: any) => {
|
|
43
|
+
const requestBody = JSON.parse(request.body)
|
|
44
|
+
const rawQuery = requestBody.query
|
|
45
|
+
const parsedQuery = parse(rawQuery)
|
|
46
|
+
const updatedQuery = visit(parsedQuery, {
|
|
47
|
+
SelectionSet: {
|
|
48
|
+
enter,
|
|
49
|
+
},
|
|
50
|
+
})
|
|
34
51
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
52
|
+
return {
|
|
53
|
+
...request,
|
|
54
|
+
body: JSON.stringify({ ...requestBody, query: print(updatedQuery) }),
|
|
55
|
+
}
|
|
38
56
|
}
|
|
39
|
-
}
|
|
40
57
|
|
|
41
|
-
export const responseMiddleware =
|
|
42
|
-
traverse
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
58
|
+
export const responseMiddleware =
|
|
59
|
+
(traverse: typeof Traverse) => (response: any) => {
|
|
60
|
+
traverse(response).forEach(function (responseItem: any) {
|
|
61
|
+
if (responseItem instanceof Object && responseItem.name) {
|
|
62
|
+
//Name already in hashed form
|
|
63
|
+
if (responseItem.name && responseItem.name.includes('[')) {
|
|
64
|
+
return
|
|
65
|
+
}
|
|
48
66
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
67
|
+
const hashedName = namehash(responseItem.name)
|
|
68
|
+
if (responseItem.id !== hashedName) {
|
|
69
|
+
this.update({ ...responseItem, name: hashedName, invalidName: true })
|
|
70
|
+
}
|
|
52
71
|
}
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
}
|
|
72
|
+
})
|
|
73
|
+
return response
|
|
74
|
+
}
|
|
57
75
|
|
|
58
76
|
export default class GqlManager {
|
|
59
77
|
public gql: any = () => null
|
|
@@ -61,14 +79,14 @@ export default class GqlManager {
|
|
|
61
79
|
|
|
62
80
|
public setUrl = async (url: string | null) => {
|
|
63
81
|
if (url) {
|
|
64
|
-
const [imported, traverse, { visit, parse }] = await Promise.all([
|
|
82
|
+
const [imported, traverse, { visit, parse, print }] = await Promise.all([
|
|
65
83
|
import('graphql-request'),
|
|
66
84
|
import('traverse'),
|
|
67
85
|
import('graphql/language'),
|
|
68
86
|
])
|
|
69
87
|
|
|
70
88
|
this.client = new imported.GraphQLClient(url, {
|
|
71
|
-
requestMiddleware: requestMiddleware(visit, parse),
|
|
89
|
+
requestMiddleware: requestMiddleware(visit, parse, print),
|
|
72
90
|
responseMiddleware: responseMiddleware(traverse.default),
|
|
73
91
|
})
|
|
74
92
|
this.gql = imported.gql
|