@subsquid/openreader 0.2.1 → 0.4.0

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 (131) hide show
  1. package/README.md +2 -15
  2. package/bin/main.js +2 -0
  3. package/dist/db.d.ts +28 -0
  4. package/dist/db.d.ts.map +1 -0
  5. package/dist/db.js +69 -0
  6. package/dist/db.js.map +1 -0
  7. package/dist/gql/opencrud.d.ts +1 -0
  8. package/dist/gql/opencrud.d.ts.map +1 -0
  9. package/dist/gql/opencrud.js +10 -9
  10. package/dist/gql/opencrud.js.map +1 -1
  11. package/dist/gql/schema.d.ts +1 -0
  12. package/dist/gql/schema.d.ts.map +1 -0
  13. package/dist/gql/schema.js +116 -17
  14. package/dist/gql/schema.js.map +1 -1
  15. package/dist/main.d.ts +2 -3
  16. package/dist/main.d.ts.map +1 -0
  17. package/dist/main.js +6 -30
  18. package/dist/main.js.map +1 -1
  19. package/dist/model.d.ts +9 -0
  20. package/dist/model.d.ts.map +1 -0
  21. package/dist/model.tools.d.ts +2 -0
  22. package/dist/model.tools.d.ts.map +1 -0
  23. package/dist/model.tools.js +27 -1
  24. package/dist/model.tools.js.map +1 -1
  25. package/dist/orderBy.d.ts +1 -0
  26. package/dist/orderBy.d.ts.map +1 -0
  27. package/dist/queryBuilder.d.ts +3 -2
  28. package/dist/queryBuilder.d.ts.map +1 -0
  29. package/dist/queryBuilder.js +28 -27
  30. package/dist/queryBuilder.js.map +1 -1
  31. package/dist/relayConnection.d.ts +1 -0
  32. package/dist/relayConnection.d.ts.map +1 -0
  33. package/dist/requestedFields.d.ts +1 -0
  34. package/dist/requestedFields.d.ts.map +1 -0
  35. package/dist/requestedFields.js +3 -3
  36. package/dist/requestedFields.js.map +1 -1
  37. package/dist/resolver.d.ts +3 -2
  38. package/dist/resolver.d.ts.map +1 -0
  39. package/dist/resolver.js +12 -11
  40. package/dist/resolver.js.map +1 -1
  41. package/dist/scalars.d.ts +2 -2
  42. package/dist/scalars.d.ts.map +1 -0
  43. package/dist/scalars.js.map +1 -1
  44. package/dist/server.d.ts +5 -11
  45. package/dist/server.d.ts.map +1 -0
  46. package/dist/server.js +13 -31
  47. package/dist/server.js.map +1 -1
  48. package/dist/test/basic.test.d.ts +2 -0
  49. package/dist/test/basic.test.d.ts.map +1 -0
  50. package/dist/test/basic.test.js +286 -0
  51. package/dist/test/basic.test.js.map +1 -0
  52. package/dist/test/connection.test.d.ts +2 -0
  53. package/dist/test/connection.test.d.ts.map +1 -0
  54. package/dist/test/connection.test.js +193 -0
  55. package/dist/test/connection.test.js.map +1 -0
  56. package/dist/test/fts.test.d.ts +2 -0
  57. package/dist/test/fts.test.d.ts.map +1 -0
  58. package/dist/test/fts.test.js +110 -0
  59. package/dist/test/fts.test.js.map +1 -0
  60. package/dist/test/lists.test.d.ts +2 -0
  61. package/dist/test/lists.test.d.ts.map +1 -0
  62. package/dist/test/lists.test.js +266 -0
  63. package/dist/test/lists.test.js.map +1 -0
  64. package/dist/test/lookup.test.d.ts +2 -0
  65. package/dist/test/lookup.test.d.ts.map +1 -0
  66. package/dist/test/lookup.test.js +109 -0
  67. package/dist/test/lookup.test.js.map +1 -0
  68. package/dist/test/scalars.test.d.ts +2 -0
  69. package/dist/test/scalars.test.d.ts.map +1 -0
  70. package/dist/test/scalars.test.js +303 -0
  71. package/dist/test/scalars.test.js.map +1 -0
  72. package/dist/test/tools.test.d.ts +2 -0
  73. package/dist/test/tools.test.d.ts.map +1 -0
  74. package/dist/test/tools.test.js +49 -0
  75. package/dist/test/tools.test.js.map +1 -0
  76. package/dist/test/typed-json.test.d.ts +2 -0
  77. package/dist/test/typed-json.test.d.ts.map +1 -0
  78. package/dist/test/typed-json.test.js +75 -0
  79. package/dist/test/typed-json.test.js.map +1 -0
  80. package/dist/test/unions.test.d.ts +2 -0
  81. package/dist/test/unions.test.d.ts.map +1 -0
  82. package/dist/test/unions.test.js +84 -0
  83. package/dist/test/unions.test.js.map +1 -0
  84. package/dist/test/util/setup.d.ts +7 -0
  85. package/dist/test/util/setup.d.ts.map +1 -0
  86. package/dist/test/util/setup.js +60 -0
  87. package/dist/test/util/setup.js.map +1 -0
  88. package/dist/test/where.test.d.ts +2 -0
  89. package/dist/test/where.test.d.ts.map +1 -0
  90. package/dist/test/where.test.js +127 -0
  91. package/dist/test/where.test.js.map +1 -0
  92. package/dist/tools.d.ts +1 -0
  93. package/dist/tools.d.ts.map +1 -0
  94. package/dist/util.d.ts +1 -13
  95. package/dist/util.d.ts.map +1 -0
  96. package/dist/util.js +6 -79
  97. package/dist/util.js.map +1 -1
  98. package/dist/where.d.ts +1 -0
  99. package/dist/where.d.ts.map +1 -0
  100. package/package.json +26 -20
  101. package/src/db.ts +83 -0
  102. package/src/gql/opencrud.ts +328 -0
  103. package/src/gql/schema.ts +463 -0
  104. package/src/main.ts +51 -0
  105. package/src/model.tools.ts +201 -0
  106. package/src/model.ts +137 -0
  107. package/src/orderBy.ts +105 -0
  108. package/src/queryBuilder.ts +785 -0
  109. package/src/relayConnection.ts +80 -0
  110. package/src/requestedFields.ts +246 -0
  111. package/src/resolver.ts +199 -0
  112. package/src/scalars.ts +247 -0
  113. package/src/server.ts +115 -0
  114. package/src/test/basic.test.ts +339 -0
  115. package/src/test/connection.test.ts +195 -0
  116. package/src/test/fts.test.ts +114 -0
  117. package/src/test/lists.test.ts +278 -0
  118. package/src/test/lookup.test.ts +111 -0
  119. package/src/test/scalars.test.ts +316 -0
  120. package/src/test/tools.test.ts +27 -0
  121. package/src/test/typed-json.test.ts +76 -0
  122. package/src/test/unions.test.ts +85 -0
  123. package/src/test/util/setup.ts +63 -0
  124. package/src/test/where.test.ts +135 -0
  125. package/src/tools.ts +33 -0
  126. package/src/util.ts +39 -0
  127. package/src/where.ts +110 -0
  128. package/CHANGELOG.md +0 -20
  129. package/dist/transaction.d.ts +0 -10
  130. package/dist/transaction.js +0 -47
  131. package/dist/transaction.js.map +0 -1
@@ -0,0 +1,193 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const setup_1 = require("./util/setup");
4
+ describe('relay connections', function () {
5
+ (0, setup_1.useDatabase)([
6
+ `create table letter (id text primary key)`,
7
+ `insert into letter (id) values ('a')`,
8
+ `insert into letter (id) values ('b')`,
9
+ `insert into letter (id) values ('c')`,
10
+ `insert into letter (id) values ('d')`,
11
+ `insert into letter (id) values ('e')`,
12
+ `insert into letter (id) values ('f')`,
13
+ `insert into letter (id) values ('g')`,
14
+ `create table empty (id text primary key)`
15
+ ]);
16
+ const client = (0, setup_1.useServer)(`
17
+ type Letter @entity {
18
+ id: ID!
19
+ }
20
+
21
+ type Empty @entity {
22
+ id: ID!
23
+ }
24
+ `);
25
+ it('pagination', function () {
26
+ return client.test(`
27
+ query {
28
+ page1: lettersConnection(orderBy: id_ASC, first: 3) {
29
+ ...fields
30
+ }
31
+ page2: lettersConnection(orderBy: id_ASC, first: 3, after: "3") {
32
+ ...fields
33
+ }
34
+ page3: lettersConnection(orderBy: id_ASC, first: 3, after: "6") {
35
+ ...fields
36
+ }
37
+ }
38
+ fragment fields on LettersConnection {
39
+ edges {
40
+ node { id }
41
+ cursor
42
+ }
43
+ pageInfo {
44
+ hasNextPage
45
+ hasPreviousPage
46
+ startCursor
47
+ endCursor
48
+ }
49
+ totalCount
50
+ }
51
+ `, {
52
+ page1: {
53
+ edges: [
54
+ { node: { id: 'a' }, cursor: '1' },
55
+ { node: { id: 'b' }, cursor: '2' },
56
+ { node: { id: 'c' }, cursor: '3' },
57
+ ],
58
+ pageInfo: {
59
+ hasNextPage: true,
60
+ hasPreviousPage: false,
61
+ startCursor: '1',
62
+ endCursor: '3'
63
+ },
64
+ totalCount: 7
65
+ },
66
+ page2: {
67
+ edges: [
68
+ { node: { id: 'd' }, cursor: '4' },
69
+ { node: { id: 'e' }, cursor: '5' },
70
+ { node: { id: 'f' }, cursor: '6' },
71
+ ],
72
+ pageInfo: {
73
+ hasNextPage: true,
74
+ hasPreviousPage: true,
75
+ startCursor: '4',
76
+ endCursor: '6'
77
+ },
78
+ totalCount: 7
79
+ },
80
+ page3: {
81
+ edges: [
82
+ { node: { id: 'g' }, cursor: '7' },
83
+ ],
84
+ pageInfo: {
85
+ hasNextPage: false,
86
+ hasPreviousPage: true,
87
+ startCursor: '7',
88
+ endCursor: '7'
89
+ },
90
+ totalCount: 7
91
+ }
92
+ });
93
+ });
94
+ it('pagination without nodes', function () {
95
+ return client.test(`
96
+ query {
97
+ page1: lettersConnection(orderBy: id_ASC, first: 3) {
98
+ ...fields
99
+ }
100
+ page2: lettersConnection(orderBy: id_ASC, first: 3, after: "3") {
101
+ ...fields
102
+ }
103
+ page3: lettersConnection(orderBy: id_ASC, first: 3, after: "6") {
104
+ ...fields
105
+ }
106
+ }
107
+ fragment fields on LettersConnection {
108
+ edges {
109
+ cursor
110
+ }
111
+ pageInfo {
112
+ hasNextPage
113
+ hasPreviousPage
114
+ startCursor
115
+ endCursor
116
+ }
117
+ totalCount
118
+ }
119
+ `, {
120
+ page1: {
121
+ edges: [
122
+ { cursor: '1' },
123
+ { cursor: '2' },
124
+ { cursor: '3' },
125
+ ],
126
+ pageInfo: {
127
+ hasNextPage: true,
128
+ hasPreviousPage: false,
129
+ startCursor: '1',
130
+ endCursor: '3'
131
+ },
132
+ totalCount: 7
133
+ },
134
+ page2: {
135
+ edges: [
136
+ { cursor: '4' },
137
+ { cursor: '5' },
138
+ { cursor: '6' },
139
+ ],
140
+ pageInfo: {
141
+ hasNextPage: true,
142
+ hasPreviousPage: true,
143
+ startCursor: '4',
144
+ endCursor: '6'
145
+ },
146
+ totalCount: 7
147
+ },
148
+ page3: {
149
+ edges: [
150
+ { cursor: '7' },
151
+ ],
152
+ pageInfo: {
153
+ hasNextPage: false,
154
+ hasPreviousPage: true,
155
+ startCursor: '7',
156
+ endCursor: '7'
157
+ },
158
+ totalCount: 7
159
+ }
160
+ });
161
+ });
162
+ it('request to empty table', function () {
163
+ return client.test(`
164
+ query {
165
+ emptiesConnection(orderBy: id_ASC) {
166
+ edges {
167
+ node { id }
168
+ cursor
169
+ }
170
+ pageInfo {
171
+ hasNextPage
172
+ hasPreviousPage
173
+ startCursor
174
+ endCursor
175
+ }
176
+ totalCount
177
+ }
178
+ }
179
+ `, {
180
+ emptiesConnection: {
181
+ edges: [],
182
+ pageInfo: {
183
+ hasNextPage: false,
184
+ hasPreviousPage: false,
185
+ startCursor: '',
186
+ endCursor: ''
187
+ },
188
+ totalCount: 0
189
+ }
190
+ });
191
+ });
192
+ });
193
+ //# sourceMappingURL=connection.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection.test.js","sourceRoot":"","sources":["../../src/test/connection.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=fts.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fts.test.d.ts","sourceRoot":"","sources":["../../src/test/fts.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const setup_1 = require("./util/setup");
4
+ function tsvector(columns) {
5
+ return columns.map(col => `setweight(to_tsvector('english', coalesce(${col}, '')), 'A')`).join(' || ');
6
+ }
7
+ describe('full text search', function () {
8
+ (0, setup_1.useDatabase)([
9
+ `create table foo (
10
+ id text primary key,
11
+ foo int,
12
+ comment text,
13
+ search_tsv tsvector generated always as ( ${tsvector(['comment'])} ) stored
14
+ )`,
15
+ `create table bar (
16
+ id text primary key,
17
+ bar text,
18
+ description text,
19
+ search_tsv tsvector generated always as ( ${tsvector(['bar', 'description'])} ) stored
20
+ )`,
21
+ `insert into foo (id, foo, comment) values ('1', 1, 'Some man greeted me with hello')`,
22
+ `insert into foo (id, foo, comment) values ('2', 2, 'Deeply buried lorem ipsum dolor sit amet, then comes baz')`,
23
+ `insert into foo (id, foo, comment) values ('3', 3, 'Lorem ipsum dolor sit amet')`,
24
+ `insert into bar (id, bar, description) values ('1', 'every bar is followed by baz. Baz!', 'Absolutely!')`,
25
+ `insert into bar (id, bar, description) values ('2', 'qux', 'Baz should be here! Baz! Baz! Baz!')`,
26
+ ]);
27
+ const client = (0, setup_1.useServer)(`
28
+ type Foo @entity {
29
+ id: ID!
30
+ foo: Int
31
+ comment: String @fulltext(query: "search")
32
+ }
33
+
34
+ type Bar @entity {
35
+ id: ID!
36
+ bar: String @fulltext(query: "search")
37
+ description: String @fulltext(query: "search")
38
+ }
39
+ `);
40
+ it('finds "hello" across entities in Foo.comment and highlights it', function () {
41
+ return client.test(`
42
+ query {
43
+ search(text: "hello") {
44
+ item {
45
+ ... on Foo { id, foo }
46
+ }
47
+ highlight
48
+ }
49
+ }
50
+ `, {
51
+ search: [{
52
+ item: { id: '1', foo: 1 },
53
+ highlight: 'Some man greeted me with <b>hello</b>'
54
+ }]
55
+ });
56
+ });
57
+ it('finds "absolute" across entities in Bar.description and highlights it', function () {
58
+ return client.test(`
59
+ query {
60
+ search(text: "absolute") {
61
+ item {
62
+ ... on Bar { id, bar }
63
+ }
64
+ highlight
65
+ }
66
+ }
67
+ `, {
68
+ search: [{
69
+ item: { id: '1', bar: 'every bar is followed by baz. Baz!' },
70
+ highlight: 'every bar is followed by baz. Baz!\n\n<b>Absolutely</b>!'
71
+ }]
72
+ });
73
+ });
74
+ it('finds and arranges "Baz"', function () {
75
+ return client.test(`
76
+ query {
77
+ search(text: "baz") {
78
+ item {
79
+ ... on Foo { id foo }
80
+ ... on Bar { id bar }
81
+ }
82
+ }
83
+ }
84
+ `, {
85
+ search: [
86
+ { item: { id: '2', bar: 'qux' } },
87
+ { item: { id: '1', bar: 'every bar is followed by baz. Baz!' } },
88
+ { item: { id: '2', foo: 2 } },
89
+ ]
90
+ });
91
+ });
92
+ it('supports where conditions', function () {
93
+ return client.test(`
94
+ query {
95
+ search(text: "baz" whereBar: {bar_eq: "qux"}) {
96
+ item {
97
+ ... on Foo { id foo }
98
+ ... on Bar { id bar }
99
+ }
100
+ }
101
+ }
102
+ `, {
103
+ search: [
104
+ { item: { id: '2', bar: 'qux' } },
105
+ { item: { id: '2', foo: 2 } }
106
+ ]
107
+ });
108
+ });
109
+ });
110
+ //# sourceMappingURL=fts.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fts.test.js","sourceRoot":"","sources":["../../src/test/fts.test.ts"],"names":[],"mappings":";;AAAA,wCAAmD;AAEnD,SAAS,QAAQ,CAAC,OAAiB;IAC/B,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,6CAA6C,GAAG,cAAc,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AAC1G,CAAC;AAED,QAAQ,CAAC,kBAAkB,EAAE;IACzB,IAAA,mBAAW,EAAC;QACR;;;;wDAIgD,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC;UACnE;QACF;;;;wDAIgD,QAAQ,CAAC,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;UAC9E;QACF,sFAAsF;QACtF,gHAAgH;QAChH,kFAAkF;QAClF,0GAA0G;QAC1G,kGAAkG;KACrG,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,IAAA,iBAAS,EAAC;;;;;;;;;;;;KAYxB,CAAC,CAAA;IAEF,EAAE,CAAC,gEAAgE,EAAE;QACjE,OAAO,MAAM,CAAC,IAAI,CAAC;;;;;;;;;SASlB,EAAE;YACC,MAAM,EAAE,CAAC;oBACL,IAAI,EAAE,EAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAC;oBACvB,SAAS,EAAE,uCAAuC;iBACrD,CAAC;SACL,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,uEAAuE,EAAE;QACxE,OAAO,MAAM,CAAC,IAAI,CAAC;;;;;;;;;SASlB,EAAE;YACC,MAAM,EAAE,CAAC;oBACL,IAAI,EAAE,EAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,oCAAoC,EAAC;oBAC1D,SAAS,EAAE,0DAA0D;iBACxE,CAAC;SACL,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,0BAA0B,EAAE;QAC3B,OAAO,MAAM,CAAC,IAAI,CAAC;;;;;;;;;SASlB,EAAE;YACC,MAAM,EAAE;gBACJ,EAAC,IAAI,EAAE,EAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAC,EAAC;gBAC7B,EAAC,IAAI,EAAE,EAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,oCAAoC,EAAC,EAAC;gBAC5D,EAAC,IAAI,EAAE,EAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAC,EAAC;aAC5B;SACJ,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,2BAA2B,EAAE;QAC5B,OAAO,MAAM,CAAC,IAAI,CAAC;;;;;;;;;SASlB,EAAE;YACC,MAAM,EAAE;gBACJ,EAAC,IAAI,EAAE,EAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAC,EAAC;gBAC7B,EAAC,IAAI,EAAE,EAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAC,EAAC;aAC5B;SACJ,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=lists.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lists.test.d.ts","sourceRoot":"","sources":["../../src/test/lists.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,266 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const setup_1 = require("./util/setup");
4
+ describe('lists', function () {
5
+ (0, setup_1.useDatabase)([
6
+ `create table lists (
7
+ id text primary key,
8
+ int_array integer[],
9
+ bigint_array numeric[],
10
+ enum_array text[],
11
+ datetime_array timestamptz[],
12
+ bytes_array bytea[],
13
+ list_of_list_of_int jsonb,
14
+ list_of_json_objects jsonb
15
+ )`,
16
+ `insert into lists (id, int_array) values ('1', '{1, 2, 3}')`,
17
+ `insert into lists (id, int_array) values ('2', '{4, 5, 6}')`,
18
+ `insert into lists (id, int_array) values ('20', '{7, 8}')`,
19
+ `insert into lists (id, bigint_array) values ('3', '{1000000000000000000000000000, 2000000000000000000000000000}')`,
20
+ `insert into lists (id, bigint_array) values ('4', '{3000000000000000000000000000, 4000000000000000000000000000}')`,
21
+ `insert into lists (id, list_of_list_of_int) values ('5', '[[1, 2], [3, 4], [5]]'::jsonb)`,
22
+ `insert into lists (id, list_of_json_objects) values ('6', '[{"foo": 1, "bar": 2}, {"foo": 3, "bar": 4}]'::jsonb)`,
23
+ `insert into lists (id, datetime_array) values ('7', array['2020-01-01T00:00:00Z', '2021-01-01T00:00:00Z']::timestamptz[])`,
24
+ `insert into lists (id, datetime_array) values ('70', array['2020-01-01T00:00:00Z', '2022-01-01T00:00:00Z']::timestamptz[])`,
25
+ `insert into lists (id, bytes_array) values ('8', array['hello', 'world']::bytea[])`,
26
+ `insert into lists (id, bytes_array) values ('9', array['hello', 'big', 'world']::bytea[])`,
27
+ `insert into lists (id, enum_array) values ('10', array['A', 'B', 'C'])`,
28
+ `insert into lists (id, enum_array) values ('11', array['C', 'D'])`,
29
+ `insert into lists (id, enum_array) values ('12', array['A', 'D'])`,
30
+ ]);
31
+ const client = (0, setup_1.useServer)(`
32
+ type Lists @entity {
33
+ intArray: [Int!]
34
+ enumArray: [Enum!]
35
+ bigintArray: [BigInt!]
36
+ datetimeArray: [DateTime!]
37
+ bytesArray: [Bytes!]
38
+ listOfListOfInt: [[Int]]
39
+ listOfJsonObjects: [Foo!]
40
+ }
41
+
42
+ enum Enum {
43
+ A B C D E F
44
+ }
45
+
46
+ type Foo {
47
+ foo: Int
48
+ bar: Int
49
+ }
50
+ `);
51
+ describe('integer arrays', function () {
52
+ it('outputs correctly', function () {
53
+ return client.test(`
54
+ query {
55
+ lists(where: {id_in: ["1", "2"]} orderBy: id_ASC) {
56
+ intArray
57
+ }
58
+ }
59
+ `, {
60
+ lists: [
61
+ { intArray: [1, 2, 3] },
62
+ { intArray: [4, 5, 6] }
63
+ ]
64
+ });
65
+ });
66
+ it('support where conditions', function () {
67
+ return client.test(`
68
+ query {
69
+ all: lists(where: {intArray_containsAll: [1, 3]} orderBy: id_ASC) {
70
+ id
71
+ }
72
+ any: lists(where: {intArray_containsAny: [4, 7]} orderBy: id_ASC) {
73
+ id
74
+ }
75
+ none: lists(where: {intArray_containsNone: 5} orderBy: id_ASC) {
76
+ id
77
+ }
78
+ nothing: lists(where: {intArray_containsNone: [1, 4, 7]} orderBy: id_ASC) {
79
+ id
80
+ }
81
+ }
82
+ `, {
83
+ all: [{ id: '1' }],
84
+ any: [{ id: '2' }, { id: '20' }],
85
+ none: [{ id: '1' }, { id: '20' }],
86
+ nothing: []
87
+ });
88
+ });
89
+ });
90
+ describe('enum arrays', function () {
91
+ it('outputs correctly', function () {
92
+ return client.test(`
93
+ query {
94
+ lists(where: {id_in: ["10", "11", "12"]} orderBy: id_ASC) {
95
+ id
96
+ enumArray
97
+ }
98
+ }
99
+ `, {
100
+ lists: [
101
+ { id: '10', enumArray: ['A', 'B', 'C'] },
102
+ { id: '11', enumArray: ['C', 'D'] },
103
+ { id: '12', enumArray: ['A', 'D'] }
104
+ ]
105
+ });
106
+ });
107
+ it('supports where conditions', function () {
108
+ return client.test(`
109
+ query {
110
+ all : lists(where: {enumArray_containsAll: [A, B]} orderBy: id_ASC) { id }
111
+ any : lists(where: {enumArray_containsAny: D} orderBy: id_ASC) { id }
112
+ none: lists(where: {enumArray_containsNone: A} orderBy: id_ASC) { id }
113
+ }
114
+ `, {
115
+ all: [{ id: '10' }],
116
+ any: [{ id: '11' }, { id: '12' }],
117
+ none: [{ id: '11' }],
118
+ });
119
+ });
120
+ });
121
+ describe('big integer arrays', function () {
122
+ it('outputs correctly', function () {
123
+ return client.test(`
124
+ query {
125
+ lists(where: {id_in: ["3", "4"]} orderBy: id_ASC) {
126
+ bigintArray
127
+ }
128
+ }
129
+ `, {
130
+ lists: [
131
+ { bigintArray: ['1000000000000000000000000000', '2000000000000000000000000000'] },
132
+ { bigintArray: ['3000000000000000000000000000', '4000000000000000000000000000'] }
133
+ ]
134
+ });
135
+ });
136
+ it('supports where conditions', function () {
137
+ return client.test(`
138
+ query {
139
+ all: lists(where: {bigintArray_containsAll: 1000000000000000000000000000} orderBy: id_ASC) {
140
+ id
141
+ }
142
+ any: lists(where: {bigintArray_containsAny: [3000000000000000000000000000, 2000000000000000000000000000]} orderBy: id_ASC) {
143
+ id
144
+ }
145
+ none: lists(where: {bigintArray_containsNone: "2000000000000000000000000000"} orderBy: id_ASC) {
146
+ id
147
+ }
148
+ }
149
+ `, {
150
+ all: [{ id: '3' }],
151
+ any: [{ id: '3' }, { id: '4' }],
152
+ none: [{ id: '4' }]
153
+ });
154
+ });
155
+ });
156
+ describe('date-time arrays', function () {
157
+ it('outputs correctly', function () {
158
+ return client.test(`
159
+ query {
160
+ lists(where: {id_eq: "7"}) {
161
+ datetimeArray
162
+ }
163
+ }
164
+ `, {
165
+ lists: [{
166
+ datetimeArray: [
167
+ '2020-01-01T00:00:00.000Z',
168
+ '2021-01-01T00:00:00.000Z'
169
+ ]
170
+ }]
171
+ });
172
+ });
173
+ it('supports where conditions', function () {
174
+ return client.test(`
175
+ query {
176
+ all: lists(where: {datetimeArray_containsAll: ["2020-01-01T00:00:00Z", "2022-01-01T00:00:00Z"]} orderBy: id_ASC) {
177
+ id
178
+ }
179
+ any: lists(where: {datetimeArray_containsAny: ["2020-01-01T00:00:00Z", "2022-01-01T00:00:00Z"]} orderBy: id_ASC) {
180
+ id
181
+ }
182
+ none: lists(where: {datetimeArray_containsNone: ["2024-01-01T00:00:00Z", "2022-01-01T00:00:00Z"]} orderBy: id_ASC) {
183
+ id
184
+ }
185
+ }
186
+ `, {
187
+ all: [{ id: '70' }],
188
+ any: [{ id: '7' }, { id: '70' }],
189
+ none: [{ id: '7' }]
190
+ });
191
+ });
192
+ });
193
+ describe('bytes array', function () {
194
+ it('outputs correctly', function () {
195
+ return client.test(`
196
+ query {
197
+ lists(where: {id_eq: "8"}) {
198
+ bytesArray
199
+ }
200
+ }
201
+ `, {
202
+ lists: [{
203
+ bytesArray: [
204
+ '0x68656c6c6f',
205
+ '0x776f726c64'
206
+ ]
207
+ }]
208
+ });
209
+ });
210
+ it('supports where conditions', function () {
211
+ return client.test(`
212
+ query {
213
+ all: lists(where: {bytesArray_containsAll: ["0x68656c6c6f", "0x626967"]} orderBy: id_ASC) {
214
+ id
215
+ }
216
+ any: lists(where: {bytesArray_containsAny: "0x776f726c64"} orderBy: id_ASC) {
217
+ id
218
+ }
219
+ none: lists(where: {bytesArray_containsNone: ["0x626967", "0xaa"]} orderBy: id_ASC) {
220
+ id
221
+ }
222
+ }
223
+ `, {
224
+ all: [{ id: '9' }],
225
+ any: [{ id: '8' }, { id: '9' }],
226
+ none: [{ id: '8' }],
227
+ });
228
+ });
229
+ });
230
+ describe('json lists', function () {
231
+ it('outputs list of list of integers', function () {
232
+ return client.test(`
233
+ query {
234
+ lists(where: {id_eq: "5"}) {
235
+ listOfListOfInt
236
+ }
237
+ }
238
+ `, {
239
+ lists: [
240
+ { listOfListOfInt: [[1, 2], [3, 4], [5]] }
241
+ ]
242
+ });
243
+ });
244
+ it('outputs list of json objects', function () {
245
+ return client.test(`
246
+ query {
247
+ lists(where: {id_eq: "6"}) {
248
+ listOfJsonObjects {
249
+ foo
250
+ }
251
+ }
252
+ }
253
+ `, {
254
+ lists: [
255
+ {
256
+ listOfJsonObjects: [
257
+ { foo: 1 },
258
+ { foo: 3 }
259
+ ]
260
+ }
261
+ ]
262
+ });
263
+ });
264
+ });
265
+ });
266
+ //# sourceMappingURL=lists.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lists.test.js","sourceRoot":"","sources":["../../src/test/lists.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=lookup.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lookup.test.d.ts","sourceRoot":"","sources":["../../src/test/lookup.test.ts"],"names":[],"mappings":""}