@subsquid/openreader 0.3.1 → 0.4.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.
Files changed (108) hide show
  1. package/dist/db.d.ts +1 -0
  2. package/dist/db.d.ts.map +1 -0
  3. package/dist/gql/opencrud.d.ts +1 -0
  4. package/dist/gql/opencrud.d.ts.map +1 -0
  5. package/dist/gql/schema.d.ts +1 -0
  6. package/dist/gql/schema.d.ts.map +1 -0
  7. package/dist/gql/schema.js +116 -17
  8. package/dist/gql/schema.js.map +1 -1
  9. package/dist/main.d.ts +1 -0
  10. package/dist/main.d.ts.map +1 -0
  11. package/dist/model.d.ts +9 -0
  12. package/dist/model.d.ts.map +1 -0
  13. package/dist/model.tools.d.ts +2 -0
  14. package/dist/model.tools.d.ts.map +1 -0
  15. package/dist/model.tools.js +27 -1
  16. package/dist/model.tools.js.map +1 -1
  17. package/dist/orderBy.d.ts +1 -0
  18. package/dist/orderBy.d.ts.map +1 -0
  19. package/dist/queryBuilder.d.ts +1 -0
  20. package/dist/queryBuilder.d.ts.map +1 -0
  21. package/dist/relayConnection.d.ts +1 -0
  22. package/dist/relayConnection.d.ts.map +1 -0
  23. package/dist/requestedFields.d.ts +1 -0
  24. package/dist/requestedFields.d.ts.map +1 -0
  25. package/dist/resolver.d.ts +1 -0
  26. package/dist/resolver.d.ts.map +1 -0
  27. package/dist/scalars.d.ts +1 -0
  28. package/dist/scalars.d.ts.map +1 -0
  29. package/dist/server.d.ts +1 -0
  30. package/dist/server.d.ts.map +1 -0
  31. package/dist/test/basic.test.d.ts +2 -0
  32. package/dist/test/basic.test.d.ts.map +1 -0
  33. package/dist/test/basic.test.js +286 -0
  34. package/dist/test/basic.test.js.map +1 -0
  35. package/dist/test/connection.test.d.ts +2 -0
  36. package/dist/test/connection.test.d.ts.map +1 -0
  37. package/dist/test/connection.test.js +193 -0
  38. package/dist/test/connection.test.js.map +1 -0
  39. package/dist/test/fts.test.d.ts +2 -0
  40. package/dist/test/fts.test.d.ts.map +1 -0
  41. package/dist/test/fts.test.js +110 -0
  42. package/dist/test/fts.test.js.map +1 -0
  43. package/dist/test/lists.test.d.ts +2 -0
  44. package/dist/test/lists.test.d.ts.map +1 -0
  45. package/dist/test/lists.test.js +266 -0
  46. package/dist/test/lists.test.js.map +1 -0
  47. package/dist/test/lookup.test.d.ts +2 -0
  48. package/dist/test/lookup.test.d.ts.map +1 -0
  49. package/dist/test/lookup.test.js +109 -0
  50. package/dist/test/lookup.test.js.map +1 -0
  51. package/dist/test/scalars.test.d.ts +2 -0
  52. package/dist/test/scalars.test.d.ts.map +1 -0
  53. package/dist/test/scalars.test.js +303 -0
  54. package/dist/test/scalars.test.js.map +1 -0
  55. package/dist/test/tools.test.d.ts +2 -0
  56. package/dist/test/tools.test.d.ts.map +1 -0
  57. package/dist/test/tools.test.js +49 -0
  58. package/dist/test/tools.test.js.map +1 -0
  59. package/dist/test/typed-json.test.d.ts +2 -0
  60. package/dist/test/typed-json.test.d.ts.map +1 -0
  61. package/dist/test/typed-json.test.js +75 -0
  62. package/dist/test/typed-json.test.js.map +1 -0
  63. package/dist/test/unions.test.d.ts +2 -0
  64. package/dist/test/unions.test.d.ts.map +1 -0
  65. package/dist/test/unions.test.js +84 -0
  66. package/dist/test/unions.test.js.map +1 -0
  67. package/dist/test/util/setup.d.ts +7 -0
  68. package/dist/test/util/setup.d.ts.map +1 -0
  69. package/dist/test/util/setup.js +60 -0
  70. package/dist/test/util/setup.js.map +1 -0
  71. package/dist/test/where.test.d.ts +2 -0
  72. package/dist/test/where.test.d.ts.map +1 -0
  73. package/dist/test/where.test.js +127 -0
  74. package/dist/test/where.test.js.map +1 -0
  75. package/dist/tools.d.ts +1 -0
  76. package/dist/tools.d.ts.map +1 -0
  77. package/dist/util.d.ts +1 -0
  78. package/dist/util.d.ts.map +1 -0
  79. package/dist/where.d.ts +1 -0
  80. package/dist/where.d.ts.map +1 -0
  81. package/package.json +15 -13
  82. package/src/db.ts +83 -0
  83. package/src/gql/opencrud.ts +328 -0
  84. package/src/gql/schema.ts +463 -0
  85. package/src/main.ts +51 -0
  86. package/src/model.tools.ts +201 -0
  87. package/src/model.ts +137 -0
  88. package/src/orderBy.ts +105 -0
  89. package/src/queryBuilder.ts +785 -0
  90. package/src/relayConnection.ts +80 -0
  91. package/src/requestedFields.ts +246 -0
  92. package/src/resolver.ts +199 -0
  93. package/src/scalars.ts +247 -0
  94. package/src/server.ts +115 -0
  95. package/src/test/basic.test.ts +339 -0
  96. package/src/test/connection.test.ts +195 -0
  97. package/src/test/fts.test.ts +114 -0
  98. package/src/test/lists.test.ts +278 -0
  99. package/src/test/lookup.test.ts +111 -0
  100. package/src/test/scalars.test.ts +316 -0
  101. package/src/test/tools.test.ts +27 -0
  102. package/src/test/typed-json.test.ts +76 -0
  103. package/src/test/unions.test.ts +85 -0
  104. package/src/test/util/setup.ts +63 -0
  105. package/src/test/where.test.ts +135 -0
  106. package/src/tools.ts +33 -0
  107. package/src/util.ts +39 -0
  108. package/src/where.ts +110 -0
@@ -0,0 +1,286 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const setup_1 = require("./util/setup");
4
+ describe('basic tests', function () {
5
+ (0, setup_1.useDatabase)([
6
+ `create table account (id text primary key, wallet text, balance numeric)`,
7
+ `create table historical_balance (id text primary key, account_id text references account(id), balance numeric)`,
8
+ `insert into account (id, wallet, balance) values ('1', 'a', 100)`,
9
+ `insert into account (id, wallet, balance) values ('2', 'b', 200)`,
10
+ `insert into account (id, wallet, balance) values ('3', 'c', 300)`,
11
+ `insert into historical_balance (id, account_id, balance) values ('1-1', '1', 20)`,
12
+ `insert into historical_balance (id, account_id, balance) values ('1-2', '1', 80)`,
13
+ `insert into historical_balance (id, account_id, balance) values ('2-1', '2', 50)`,
14
+ `insert into historical_balance (id, account_id, balance) values ('2-2', '2', 90)`,
15
+ `insert into historical_balance (id, account_id, balance) values ('2-3', '2', 60)`,
16
+ `insert into historical_balance (id, account_id, balance) values ('3-1', '3', 300)`,
17
+ ]);
18
+ const client = (0, setup_1.useServer)(`
19
+ interface HasBalance {
20
+ balance: Int!
21
+ }
22
+
23
+ type Account implements HasBalance @entity {
24
+ id: ID!
25
+ wallet: String!
26
+ balance: Int!
27
+ history: [HistoricalBalance!] @derivedFrom(field: "account")
28
+ }
29
+
30
+ "Historical record of account balance"
31
+ type HistoricalBalance implements HasBalance @entity {
32
+ "Unique identifier"
33
+ id: ID!
34
+
35
+ "Related account"
36
+ account: Account!
37
+
38
+ "Balance"
39
+ balance: Int!
40
+ }
41
+ `);
42
+ it('can fetch all accounts', function () {
43
+ return client.test(`query {
44
+ accounts {
45
+ id
46
+ wallet
47
+ balance
48
+ history { balance }
49
+ }
50
+ }`, {
51
+ accounts: [
52
+ { id: '1', wallet: 'a', balance: 100, history: [{ balance: 20 }, { balance: 80 }] },
53
+ { id: '2', wallet: 'b', balance: 200, history: [{ balance: 50 }, { balance: 90 }, { balance: 60 }] },
54
+ { id: '3', wallet: 'c', balance: 300, history: [{ balance: 300 }] },
55
+ ]
56
+ });
57
+ });
58
+ it('supports filtering by id', function () {
59
+ return client.test(`query {
60
+ accounts(where: {id_eq: "3"}) {
61
+ id
62
+ wallet
63
+ }
64
+ }`, {
65
+ accounts: [{ id: '3', wallet: 'c' }]
66
+ });
67
+ });
68
+ it('supports by id query', function () {
69
+ return client.test(`query {
70
+ a3: accountById(id: "3") {
71
+ id
72
+ wallet
73
+ }
74
+ nonexistent: accountById(id: "foo") {
75
+ id
76
+ wallet
77
+ }
78
+ }`, {
79
+ a3: { id: '3', wallet: 'c' },
80
+ nonexistent: null
81
+ });
82
+ });
83
+ it('supports by unique input query', function () {
84
+ return client.test(`query {
85
+ a2: accountByUniqueInput(where: {id: "2"}) {
86
+ id
87
+ wallet
88
+ }
89
+ nonexistent: accountByUniqueInput(where: {id: "foo"}) {
90
+ id
91
+ wallet
92
+ }
93
+ }`, {
94
+ a2: { id: '2', wallet: 'b' },
95
+ nonexistent: null
96
+ });
97
+ });
98
+ it('can fetch deep relations', function () {
99
+ return client.test(`query {
100
+ accounts(where: {id_eq: "3"}) {
101
+ id
102
+ history {
103
+ id
104
+ account {
105
+ wallet
106
+ history {
107
+ balance
108
+ account {
109
+ id
110
+ }
111
+ }
112
+ }
113
+ }
114
+ }
115
+ }`, {
116
+ accounts: [{
117
+ id: '3',
118
+ history: [{
119
+ id: '3-1',
120
+ account: {
121
+ wallet: 'c',
122
+ history: [{
123
+ balance: 300,
124
+ account: {
125
+ id: '3'
126
+ }
127
+ }]
128
+ }
129
+ }]
130
+ }]
131
+ });
132
+ });
133
+ it('supports *_some filter', function () {
134
+ return client.test(`query {
135
+ accounts(where: {history_some: {balance_lt: 50}}) {
136
+ id
137
+ }
138
+ }`, {
139
+ accounts: [{ id: '1' }]
140
+ });
141
+ });
142
+ it('supports *_every filter', function () {
143
+ return client.test(`query {
144
+ accounts(where: {history_every: {balance_gt: 20}}) {
145
+ wallet
146
+ }
147
+ }`, {
148
+ accounts: [{ wallet: 'b' }, { wallet: 'c' }]
149
+ });
150
+ });
151
+ it('supports *_none filter', function () {
152
+ return client.test(`query {
153
+ accounts(where: {history_none: {balance_lt: 60}}) {
154
+ wallet
155
+ }
156
+ }`, {
157
+ accounts: [{ wallet: 'c' }]
158
+ });
159
+ });
160
+ it('supports gql aliases', function () {
161
+ return client.test(`query {
162
+ accounts(where: {id_eq: "1"}) {
163
+ balance
164
+ bag: wallet
165
+ purse: wallet
166
+ payment1: history(where: {id_eq: "1-1"}) {
167
+ balance
168
+ }
169
+ payment2: history(where: {id_eq: "1-2"}) {
170
+ balance
171
+ }
172
+ }
173
+ }`, {
174
+ accounts: [{
175
+ balance: 100,
176
+ bag: 'a',
177
+ purse: 'a',
178
+ payment1: [{ balance: 20 }],
179
+ payment2: [{ balance: 80 }]
180
+ }]
181
+ });
182
+ });
183
+ it('supports gql fragments', function () {
184
+ return client.test(`query {
185
+ accounts(where: {id_eq: "1"}) {
186
+ ...accountFields
187
+ history {
188
+ ...historicalBalance
189
+ }
190
+ }
191
+ }
192
+
193
+ fragment accountFields on Account {
194
+ id
195
+ wallet
196
+ }
197
+
198
+ fragment historicalBalance on HistoricalBalance {
199
+ balance
200
+ }`, {
201
+ accounts: [{
202
+ id: '1',
203
+ wallet: 'a',
204
+ history: [{ balance: 20 }, { balance: 80 }]
205
+ }]
206
+ });
207
+ });
208
+ it('supports gql fragments on interfaces', function () {
209
+ return client.test(`query {
210
+ accounts(where: {id_eq: "1"}) {
211
+ ...balance
212
+ history {
213
+ ...balance
214
+ }
215
+ }
216
+ }
217
+
218
+ fragment balance on HasBalance {
219
+ ... on Account {
220
+ accountBalance: balance
221
+ }
222
+ ... on HistoricalBalance {
223
+ payment: balance
224
+ }
225
+ }`, {
226
+ accounts: [{
227
+ accountBalance: 100,
228
+ history: [{ payment: 20 }, { payment: 80 }]
229
+ }]
230
+ });
231
+ });
232
+ it('supports sorting', function () {
233
+ return client.test(`query {
234
+ historicalBalances(orderBy: balance_ASC) {
235
+ balance
236
+ }
237
+ }`, {
238
+ historicalBalances: [
239
+ { balance: 20 },
240
+ { balance: 50 },
241
+ { balance: 60 },
242
+ { balance: 80 },
243
+ { balance: 90 },
244
+ { balance: 300 }
245
+ ]
246
+ });
247
+ });
248
+ it('supports sorting by referenced entity field', function () {
249
+ return client.test(`query {
250
+ historicalBalances(orderBy: [account_wallet_ASC, balance_DESC]) {
251
+ balance
252
+ }
253
+ }`, {
254
+ historicalBalances: [
255
+ { balance: 80 },
256
+ { balance: 20 },
257
+ { balance: 90 },
258
+ { balance: 60 },
259
+ { balance: 50 },
260
+ { balance: 300 }
261
+ ]
262
+ });
263
+ });
264
+ it('supports descriptions', function () {
265
+ return client.test(`
266
+ query {
267
+ HistoricalBalance: __type(name: "HistoricalBalance") {
268
+ description
269
+ fields {
270
+ description
271
+ }
272
+ }
273
+ }
274
+ `, {
275
+ HistoricalBalance: {
276
+ description: 'Historical record of account balance',
277
+ fields: [
278
+ { description: 'Unique identifier' },
279
+ { description: 'Related account' },
280
+ { description: 'Balance' },
281
+ ]
282
+ }
283
+ });
284
+ });
285
+ });
286
+ //# sourceMappingURL=basic.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"basic.test.js","sourceRoot":"","sources":["../../src/test/basic.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=connection.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection.test.d.ts","sourceRoot":"","sources":["../../src/test/connection.test.ts"],"names":[],"mappings":""}
@@ -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":""}