@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,303 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const setup_1 = require("./util/setup");
4
+ describe('scalars', function () {
5
+ (0, setup_1.useDatabase)([
6
+ `create table scalar (id text primary key, "boolean" bool, "bigint" numeric, "string" text, enum text, date_time timestamptz, "bytes" bytea, deep jsonb)`,
7
+ `insert into scalar (id, "boolean") values ('1', true)`,
8
+ `insert into scalar (id, "boolean", deep) values ('2', false, '{"boolean": true}'::jsonb)`,
9
+ `insert into scalar (id, "bigint", deep) values ('3', 1000000000000000000000000000000000000, '{"bigint": "1000000000000000000000000000000000000"}'::jsonb)`,
10
+ `insert into scalar (id, "bigint", deep) values ('4', 2000000000000000000000000000000000000, '{"bigint": "2000000000000000000000000000000000000"}'::jsonb)`,
11
+ `insert into scalar (id, "bigint", deep) values ('5', 5, '{"bigint": "5"}'::jsonb)`,
12
+ `insert into scalar (id, "string") values ('6', 'foo bar baz')`,
13
+ `insert into scalar (id, "string") values ('7', 'bar baz foo')`,
14
+ `insert into scalar (id, "string") values ('8', 'baz foo bar')`,
15
+ `insert into scalar (id, "string") values ('9', 'hello')`,
16
+ `insert into scalar (id, "date_time", deep) values ('10', '2021-09-24T15:43:13.400Z', '{"dateTime": "2021-09-24T00:00:00.120Z"}'::jsonb)`,
17
+ `insert into scalar (id, "date_time", deep) values ('11', '2021-09-24T00:00:00.000Z', '{"dateTime": "2021-09-24T00:00:00Z"}'::jsonb)`,
18
+ `insert into scalar (id, "date_time", deep) values ('12', '2021-09-24 02:00:00.001 +01:00', '{"dateTime": "2021-09-24T00:00:00.1Z"}'::jsonb)`,
19
+ `insert into scalar (id, "bytes", deep) values ('13', decode('aa', 'hex'), '{"bytes": "0xaa"}'::jsonb)`,
20
+ `insert into scalar (id, "bytes", deep) values ('14', decode('bb', 'hex'), '{"bytes": "0xCCDD"}'::jsonb)`,
21
+ `insert into scalar (id, "enum") values ('15', 'A')`,
22
+ `insert into scalar (id, "enum") values ('16', 'B')`,
23
+ `insert into scalar (id, "enum") values ('17', 'C')`,
24
+ ]);
25
+ const client = (0, setup_1.useServer)(`
26
+ type Scalar @entity {
27
+ id: ID!
28
+ boolean: Boolean
29
+ string: String
30
+ enum: Enum
31
+ bigint: BigInt
32
+ dateTime: DateTime
33
+ bytes: Bytes
34
+ deep: DeepScalar
35
+ }
36
+
37
+ type DeepScalar {
38
+ bigint: BigInt
39
+ dateTime: DateTime
40
+ bytes: Bytes
41
+ boolean: Boolean
42
+ }
43
+
44
+ enum Enum {
45
+ A B C
46
+ }
47
+ `);
48
+ describe('Boolean', function () {
49
+ it('outputs correctly', function () {
50
+ return client.test(`
51
+ query {
52
+ scalars(where: {id_in: ["1", "2"]} orderBy: id_ASC) {
53
+ id
54
+ boolean
55
+ }
56
+ }
57
+ `, {
58
+ scalars: [
59
+ { id: '1', boolean: true },
60
+ { id: '2', boolean: false }
61
+ ]
62
+ });
63
+ });
64
+ it('output from nested object', function () {
65
+ return client.test(`
66
+ query {
67
+ scalars(where: {id_eq: "2"}) {
68
+ deep {
69
+ boolean
70
+ }
71
+ }
72
+ }
73
+ `, {
74
+ scalars: [
75
+ { deep: { boolean: true } }
76
+ ]
77
+ });
78
+ });
79
+ it('supports where conditions', function () {
80
+ return client.test(`
81
+ query {
82
+ t: scalars(where: {boolean_eq: true}) { id }
83
+ f: scalars(where: {boolean_eq: false}) { id }
84
+ nt: scalars(where: {boolean_not_eq: true}) { id }
85
+ nf: scalars(where: {boolean_not_eq: false}) { id }
86
+ }
87
+ `, {
88
+ t: [{ id: '1' }],
89
+ f: [{ id: '2' }],
90
+ nt: [{ id: '2' }],
91
+ nf: [{ id: '1' }]
92
+ });
93
+ });
94
+ });
95
+ describe('String', function () {
96
+ it('supports where conditions', function () {
97
+ return client.test(`
98
+ query {
99
+ starts_with: scalars(where: {string_startsWith: "foo"} orderBy: id_ASC) { id }
100
+ not_starts_with: scalars(where: {string_not_startsWith: "foo"} orderBy: id_ASC) { id }
101
+ ends_with: scalars(where: {string_endsWith: "foo"} orderBy: id_ASC) { id }
102
+ not_ends_with: scalars(where: {string_not_endsWith: "foo"} orderBy: id_ASC) { id }
103
+ contains: scalars(where: {string_contains: "foo"} orderBy: id_ASC) { id }
104
+ not_contains: scalars(where: {string_not_contains: "foo"} orderBy: id_ASC) { id }
105
+ case_sensitive: scalars(where: {string_contains: "Foo"} orderBy: id_ASC) { id }
106
+ }
107
+ `, {
108
+ starts_with: [{ id: '6' }],
109
+ not_starts_with: [{ id: '7' }, { id: '8' }, { id: '9' }],
110
+ ends_with: [{ id: '7' }],
111
+ not_ends_with: [{ id: '6' }, { id: '8' }, { id: '9' }],
112
+ contains: [{ id: '6' }, { id: '7' }, { id: '8' }],
113
+ not_contains: [{ id: '9' }],
114
+ case_sensitive: []
115
+ });
116
+ });
117
+ });
118
+ describe('Enum', function () {
119
+ it('outputs correctly', function () {
120
+ return client.test(`
121
+ query {
122
+ scalars(where: {id_in: ["15", "16", "17"]} orderBy: id_ASC) {
123
+ id
124
+ enum
125
+ }
126
+ }
127
+ `, {
128
+ scalars: [
129
+ { id: '15', enum: 'A' },
130
+ { id: '16', enum: 'B' },
131
+ { id: '17', enum: 'C' },
132
+ ]
133
+ });
134
+ });
135
+ it('supports where conditions', function () {
136
+ return client.test(`
137
+ query {
138
+ eq: scalars(where: {enum_eq: A} orderBy: id_ASC) { id }
139
+ not_eq: scalars(where: {enum_not_eq: A} orderBy: id_ASC) { id }
140
+ in: scalars(where: {enum_in: [A, B]} orderBy: id_ASC) { id }
141
+ not_in: scalars(where: {enum_not_in: B} orderBy: id_ASC) { id }
142
+ }
143
+ `, {
144
+ eq: [{ id: '15' }],
145
+ not_eq: [{ id: '16' }, { id: '17' }],
146
+ in: [{ id: '15' }, { id: '16' }],
147
+ not_in: [{ id: '15' }, { id: '17' }],
148
+ });
149
+ });
150
+ });
151
+ describe('BigInt', function () {
152
+ it('outputs correctly', function () {
153
+ return client.test(`
154
+ query {
155
+ scalars(where: {id_in: ["3", "4", "5"]} orderBy: id_ASC) {
156
+ id
157
+ bigint
158
+ deep { bigint }
159
+ }
160
+ }
161
+ `, {
162
+ scalars: [
163
+ {
164
+ id: '3',
165
+ bigint: '1000000000000000000000000000000000000',
166
+ deep: { bigint: '1000000000000000000000000000000000000' }
167
+ },
168
+ {
169
+ id: '4',
170
+ bigint: '2000000000000000000000000000000000000',
171
+ deep: { bigint: '2000000000000000000000000000000000000' }
172
+ },
173
+ {
174
+ id: '5',
175
+ bigint: '5',
176
+ deep: { bigint: '5' }
177
+ }
178
+ ]
179
+ });
180
+ });
181
+ it('supports where conditions', function () {
182
+ return client.test(`
183
+ query {
184
+ eq: scalars(where: {bigint_eq: 2000000000000000000000000000000000000} orderBy: id_ASC) { id }
185
+ not_eq: scalars(where: {bigint_not_eq: 2000000000000000000000000000000000000} orderBy: id_ASC) { id }
186
+ gt: scalars(where: {bigint_gt: 1000000000000000000000000000000000000} orderBy: id_ASC) { id }
187
+ gte: scalars(where: {bigint_gte: 1000000000000000000000000000000000000} orderBy: id_ASC) { id }
188
+ lt: scalars(where: {bigint_lt: 1000000000000000000000000000000000000} orderBy: id_ASC) { id }
189
+ lte: scalars(where: {bigint_lte: 1000000000000000000000000000000000000} orderBy: id_ASC) { id }
190
+ in: scalars(where: {bigint_in: [1000000000000000000000000000000000000, 5]} orderBy: id_ASC) { id }
191
+ not_in: scalars(where: {bigint_not_in: [1000000000000000000000000000000000000, 5]} orderBy: id_ASC) { id }
192
+ }
193
+ `, {
194
+ eq: [{ id: '4' }],
195
+ not_eq: [{ id: '3' }, { id: '5' }],
196
+ gt: [{ id: '4' }],
197
+ gte: [{ id: '3' }, { id: '4' }],
198
+ lt: [{ id: '5' }],
199
+ lte: [{ id: '3' }, { id: '5' }],
200
+ in: [{ id: '3' }, { id: '5' }],
201
+ not_in: [{ id: '4' }]
202
+ });
203
+ });
204
+ it('json sort', function () {
205
+ return client.test(`
206
+ query {
207
+ scalars(orderBy: deep_bigint_ASC where: {id_in: ["3", "4", "5"]}) {
208
+ id
209
+ }
210
+ }
211
+ `, {
212
+ scalars: [
213
+ { id: '5' },
214
+ { id: '3' },
215
+ { id: '4' }
216
+ ]
217
+ });
218
+ });
219
+ });
220
+ describe('DateTime', function () {
221
+ it('outputs correctly', function () {
222
+ return client.test(`
223
+ query {
224
+ scalars(where: {id_in: ["10", "11", "12"]} orderBy: id_ASC) {
225
+ id
226
+ dateTime
227
+ deep { dateTime }
228
+ }
229
+ }
230
+ `, {
231
+ scalars: [
232
+ { id: '10', dateTime: '2021-09-24T15:43:13.400Z', deep: { dateTime: '2021-09-24T00:00:00.120Z' } },
233
+ { id: '11', dateTime: '2021-09-24T00:00:00.000Z', deep: { dateTime: '2021-09-24T00:00:00Z' } },
234
+ { id: '12', dateTime: '2021-09-24T01:00:00.001Z', deep: { dateTime: '2021-09-24T00:00:00.1Z' } }
235
+ ]
236
+ });
237
+ });
238
+ it('supports where conditions', function () {
239
+ return client.test(`
240
+ query {
241
+ gt: scalars(orderBy: id_ASC, where: {dateTime_gt: "2021-09-24T00:00:00Z"}) { id }
242
+ gte: scalars(orderBy: id_ASC, where: {dateTime_gte: "2021-09-24T00:00:00Z"}) { id }
243
+ lt: scalars(orderBy: id_ASC, where: {dateTime_lt: "2021-09-24T00:00:00Z"}) { id }
244
+ lte: scalars(orderBy: id_ASC, where: {dateTime_lte: "2021-09-24T00:00:00Z"}) { id }
245
+ in: scalars(orderBy: id_ASC, where: {dateTime_in: ["2021-09-24T00:00:00Z", "2021-09-24T15:43:13.400Z"]}) { id }
246
+ not_in: scalars(orderBy: id_ASC, where: {dateTime_not_in: ["2021-09-24T00:00:00Z", "2021-09-24T15:43:13.400Z"]}) { id }
247
+ }
248
+ `, {
249
+ gt: [{ id: '10' }, { id: '12' }],
250
+ gte: [{ id: '10' }, { id: '11' }, { id: '12' }],
251
+ lt: [],
252
+ lte: [{ id: '11' }],
253
+ in: [{ id: '10' }, { 'id': '11' }],
254
+ not_in: [{ 'id': '12' }]
255
+ });
256
+ });
257
+ it('json sort', function () {
258
+ return client.test(`
259
+ query {
260
+ scalars(orderBy: deep_dateTime_ASC where: {id_in: ["10", "11", "12"]}) {
261
+ id
262
+ }
263
+ }
264
+ `, {
265
+ scalars: [
266
+ { id: '11' },
267
+ { id: '12' },
268
+ { id: '10' }
269
+ ]
270
+ });
271
+ });
272
+ });
273
+ describe('Bytes', function () {
274
+ it('outputs correctly', function () {
275
+ return client.test(`
276
+ query {
277
+ scalars(where: {id_in: ["13", "14"]} orderBy: id_ASC) {
278
+ id
279
+ bytes
280
+ deep { bytes }
281
+ }
282
+ }
283
+ `, {
284
+ scalars: [
285
+ { id: '13', bytes: '0xaa', deep: { bytes: '0xaa' } },
286
+ { id: '14', bytes: '0xbb', deep: { bytes: '0xccdd' } },
287
+ ]
288
+ });
289
+ });
290
+ it('supports where conditions', function () {
291
+ return client.test(`
292
+ query {
293
+ eq: scalars(where: {bytes_eq: "0xaa"} orderBy: id_ASC) { id }
294
+ deep_eq: scalars(where: {deep: {bytes_eq: "0xccdd"}} orderBy: id_ASC) { id }
295
+ }
296
+ `, {
297
+ eq: [{ id: '13' }],
298
+ deep_eq: [{ id: '14' }]
299
+ });
300
+ });
301
+ });
302
+ });
303
+ //# sourceMappingURL=scalars.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scalars.test.js","sourceRoot":"","sources":["../../src/test/scalars.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tools.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.test.d.ts","sourceRoot":"","sources":["../../src/test/tools.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ var __importDefault = (this && this.__importDefault) || function (mod) {
22
+ return (mod && mod.__esModule) ? mod : { "default": mod };
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ const path = __importStar(require("path"));
26
+ const expect_1 = __importDefault(require("expect"));
27
+ const tools_1 = require("../tools");
28
+ function fixture(name) {
29
+ return path.join(__dirname, '../../fixtures', name);
30
+ }
31
+ describe('tools', function () {
32
+ describe('loadModel()', function () {
33
+ it('loads model from a single file', function () {
34
+ let model = (0, tools_1.loadModel)(fixture('schema.graphql'));
35
+ (0, expect_1.default)(model).toMatchObject({
36
+ Account: { kind: 'entity' },
37
+ HistoricalBalance: { kind: 'entity' }
38
+ });
39
+ });
40
+ it('loads model from a directory', function () {
41
+ let model = (0, tools_1.loadModel)(fixture('schema'));
42
+ (0, expect_1.default)(model).toMatchObject({
43
+ Account: { kind: 'entity' },
44
+ HistoricalBalance: { kind: 'entity' }
45
+ });
46
+ });
47
+ });
48
+ });
49
+ //# sourceMappingURL=tools.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.test.js","sourceRoot":"","sources":["../../src/test/tools.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA4B;AAC5B,oDAA2B;AAC3B,oCAAkC;AAElC,SAAS,OAAO,CAAC,IAAY;IACzB,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAAA;AACvD,CAAC;AAED,QAAQ,CAAC,OAAO,EAAE;IACd,QAAQ,CAAC,aAAa,EAAE;QACpB,EAAE,CAAC,gCAAgC,EAAE;YACjC,IAAI,KAAK,GAAG,IAAA,iBAAS,EAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAA;YAChD,IAAA,gBAAM,EAAC,KAAK,CAAC,CAAC,aAAa,CAAC;gBACxB,OAAO,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC;gBACzB,iBAAiB,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC;aACtC,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,8BAA8B,EAAE;YAC/B,IAAI,KAAK,GAAG,IAAA,iBAAS,EAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAA;YACxC,IAAA,gBAAM,EAAC,KAAK,CAAC,CAAC,aAAa,CAAC;gBACxB,OAAO,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC;gBACzB,iBAAiB,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC;aACtC,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=typed-json.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typed-json.test.d.ts","sourceRoot":"","sources":["../../src/test/typed-json.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const setup_1 = require("./util/setup");
4
+ describe('typed json fields', function () {
5
+ (0, setup_1.useDatabase)([
6
+ `create table entity (id text primary key, a jsonb)`,
7
+ `insert into entity (id, a) values ('1', '{"a": "a", "b": {"b": "b", "e": "1"}}'::jsonb)`,
8
+ `insert into entity (id, a) values ('2', '{"a": "A", "b": {"b": "B", "e": "1"}}'::jsonb)`,
9
+ `insert into entity (id, a) values ('3', '{}'::jsonb)`,
10
+ `insert into entity (id) values ('4')`,
11
+ ]);
12
+ const client = (0, setup_1.useServer)(`
13
+ type Entity @entity {
14
+ a: A
15
+ }
16
+
17
+ type A {
18
+ a: String
19
+ b: B
20
+ }
21
+
22
+ type B {
23
+ a: A
24
+ b: String
25
+ e: Entity
26
+ }
27
+ `);
28
+ it('maps nulls correctly', function () {
29
+ return client.test(`
30
+ query {
31
+ entities(orderBy: id_ASC) {
32
+ id
33
+ a { a }
34
+ }
35
+ }
36
+ `, {
37
+ entities: [
38
+ { id: '1', a: { a: 'a' } },
39
+ { id: '2', a: { a: 'A' } },
40
+ { id: '3', a: { a: null } },
41
+ { id: '4', a: null }
42
+ ]
43
+ });
44
+ });
45
+ it('can fetch deep entities', function () {
46
+ return client.test(`
47
+ query {
48
+ entities(orderBy: id_ASC) {
49
+ id
50
+ a {
51
+ b {
52
+ e {
53
+ id
54
+ a {
55
+ b {
56
+ b
57
+ e { id }
58
+ }
59
+ }
60
+ }
61
+ }
62
+ }
63
+ }
64
+ }
65
+ `, {
66
+ entities: [
67
+ { id: '1', a: { b: { e: { id: '1', a: { b: { b: 'b', e: { id: '1' } } } } } } },
68
+ { id: '2', a: { b: { e: { id: '1', a: { b: { b: 'b', e: { id: '1' } } } } } } },
69
+ { id: '3', a: { b: null } },
70
+ { id: '4', a: null }
71
+ ]
72
+ });
73
+ });
74
+ });
75
+ //# sourceMappingURL=typed-json.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typed-json.test.js","sourceRoot":"","sources":["../../src/test/typed-json.test.ts"],"names":[],"mappings":";;AAAA,wCAAmD;AAEnD,QAAQ,CAAC,mBAAmB,EAAE;IAC1B,IAAA,mBAAW,EAAC;QACR,oDAAoD;QACpD,yFAAyF;QACzF,yFAAyF;QACzF,sDAAsD;QACtD,sCAAsC;KACzC,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,IAAA,iBAAS,EAAC;;;;;;;;;;;;;;;KAexB,CAAC,CAAA;IAEF,EAAE,CAAC,sBAAsB,EAAE;QACvB,OAAO,MAAM,CAAC,IAAI,CAAC;;;;;;;SAOlB,EAAE;YACC,QAAQ,EAAE;gBACN,EAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAC,CAAC,EAAE,GAAG,EAAC,EAAC;gBACtB,EAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAC,CAAC,EAAE,GAAG,EAAC,EAAC;gBACtB,EAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAC,CAAC,EAAE,IAAI,EAAC,EAAC;gBACvB,EAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAC;aACrB;SACJ,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,yBAAyB,EAAE;QAC1B,OAAO,MAAM,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;SAmBlB,EAAE;YACC,QAAQ,EAAE;gBACN,EAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAC,CAAC,EAAE,EAAC,CAAC,EAAE,EAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAC,CAAC,EAAE,EAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAC,EAAE,EAAE,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC;gBACjE,EAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAC,CAAC,EAAE,EAAC,CAAC,EAAE,EAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAC,CAAC,EAAE,EAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAC,EAAE,EAAE,GAAG,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC,EAAC;gBACjE,EAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAC,CAAC,EAAE,IAAI,EAAC,EAAC;gBACvB,EAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAC;aACrB;SACJ,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=unions.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unions.test.d.ts","sourceRoot":"","sources":["../../src/test/unions.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const setup_1 = require("./util/setup");
4
+ describe('unions', function () {
5
+ (0, setup_1.useDatabase)([
6
+ `create table "user" (id text primary key, login text)`,
7
+ `create table equipment (id text primary key, name text, owner jsonb)`,
8
+ `insert into "user" (id, login) values ('1', 'farmer')`,
9
+ `insert into "user" (id, login) values ('2', 'programmer')`,
10
+ `insert into equipment (id, name, owner) values ('1', 'combine', '{"isTypeOf": "Farmer", "user": "1", "crop": 100}'::jsonb)`,
11
+ `insert into equipment (id, name, owner) values ('2', 'computer', '{"isTypeOf": "Programmer", "user": "2", "stack": "Python"}'::jsonb)`
12
+ ]);
13
+ const client = (0, setup_1.useServer)(`
14
+ type User @entity {
15
+ id: ID!
16
+ login: String!
17
+ }
18
+
19
+ type Farmer {
20
+ user: User!
21
+ crop: Int
22
+ }
23
+
24
+ type Programmer {
25
+ user: User!
26
+ stack: String
27
+ }
28
+
29
+ union Owner = Farmer | Programmer
30
+
31
+ type Equipment @entity {
32
+ name: String!
33
+ owner: Owner!
34
+ }
35
+ `);
36
+ it('output', function () {
37
+ return client.test(`
38
+ query {
39
+ equipment(orderBy: id_ASC) {
40
+ name
41
+ owner {
42
+ ... on Farmer {
43
+ user { login }
44
+ crop
45
+ }
46
+ ... on Programmer {
47
+ user { login }
48
+ stack
49
+ }
50
+ }
51
+ }
52
+ }
53
+ `, {
54
+ equipment: [
55
+ {
56
+ name: 'combine',
57
+ owner: {
58
+ user: { login: 'farmer' },
59
+ crop: 100
60
+ }
61
+ },
62
+ {
63
+ name: 'computer',
64
+ owner: {
65
+ user: { login: 'programmer' },
66
+ stack: 'Python'
67
+ }
68
+ }
69
+ ]
70
+ });
71
+ });
72
+ it('filtering', function () {
73
+ return client.test(`
74
+ query {
75
+ type_farmer: equipment(where: {owner: {isTypeOf_eq: "Farmer"}}) { id }
76
+ stack_Python: equipment(where: {owner: {stack_eq: "Python"}}) { id }
77
+ }
78
+ `, {
79
+ type_farmer: [{ id: '1' }],
80
+ stack_Python: [{ id: '2' }]
81
+ });
82
+ });
83
+ });
84
+ //# sourceMappingURL=unions.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unions.test.js","sourceRoot":"","sources":["../../src/test/unions.test.ts"],"names":[],"mappings":";;AAAA,wCAAmD;AAEnD,QAAQ,CAAC,QAAQ,EAAE;IACf,IAAA,mBAAW,EAAC;QACR,uDAAuD;QACvD,sEAAsE;QACtE,uDAAuD;QACvD,2DAA2D;QAC3D,4HAA4H;QAC5H,uIAAuI;KAC1I,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,IAAA,iBAAS,EAAC;;;;;;;;;;;;;;;;;;;;;;KAsBxB,CAAC,CAAA;IAEF,EAAE,CAAC,QAAQ,EAAE;QACT,OAAO,MAAM,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;SAgBlB,EAAE;YACC,SAAS,EAAE;gBACP;oBACI,IAAI,EAAE,SAAS;oBACf,KAAK,EAAE;wBACH,IAAI,EAAE,EAAC,KAAK,EAAE,QAAQ,EAAC;wBACvB,IAAI,EAAE,GAAG;qBACZ;iBACJ;gBACD;oBACI,IAAI,EAAE,UAAU;oBAChB,KAAK,EAAE;wBACH,IAAI,EAAE,EAAC,KAAK,EAAE,YAAY,EAAC;wBAC3B,KAAK,EAAE,QAAQ;qBAClB;iBACJ;aACJ;SACJ,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,WAAW,EAAE;QACZ,OAAO,MAAM,CAAC,IAAI,CAAC;;;;;SAKlB,EAAE;YACC,WAAW,EAAE,CAAC,EAAC,EAAE,EAAE,GAAG,EAAC,CAAC;YACxB,YAAY,EAAE,CAAC,EAAC,EAAE,EAAE,GAAG,EAAC,CAAC;SAC5B,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA"}
@@ -0,0 +1,7 @@
1
+ import { Client } from "gql-test-client";
2
+ export declare const db_config: import("pg").PoolConfig;
3
+ export declare function databaseInit(sql: string[]): Promise<void>;
4
+ export declare function databaseDelete(): Promise<void>;
5
+ export declare function useDatabase(sql: string[]): void;
6
+ export declare function useServer(schema: string): Client;
7
+ //# sourceMappingURL=setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../src/test/util/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAA;AAQtC,eAAO,MAAM,SAAS,yBAAqB,CAAA;AAc3C,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAMzD;AAGD,wBAAgB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAK9C;AAGD,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,CAK/C;AAGD,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAehD"}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useServer = exports.useDatabase = exports.databaseDelete = exports.databaseInit = exports.db_config = void 0;
4
+ const gql_test_client_1 = require("gql-test-client");
5
+ const graphql_1 = require("graphql");
6
+ const pg_1 = require("pg");
7
+ const db_1 = require("../../db");
8
+ const schema_1 = require("../../gql/schema");
9
+ const server_1 = require("../../server");
10
+ exports.db_config = (0, db_1.createPoolConfig)();
11
+ async function withClient(block) {
12
+ let client = new pg_1.Client(exports.db_config);
13
+ await client.connect();
14
+ try {
15
+ await block(client);
16
+ }
17
+ finally {
18
+ await client.end();
19
+ }
20
+ }
21
+ function databaseInit(sql) {
22
+ return withClient(async (client) => {
23
+ for (let i = 0; i < sql.length; i++) {
24
+ await client.query(sql[i]);
25
+ }
26
+ });
27
+ }
28
+ exports.databaseInit = databaseInit;
29
+ function databaseDelete() {
30
+ return withClient(async (client) => {
31
+ await client.query(`DROP SCHEMA IF EXISTS public CASCADE`);
32
+ await client.query(`CREATE SCHEMA public`);
33
+ });
34
+ }
35
+ exports.databaseDelete = databaseDelete;
36
+ function useDatabase(sql) {
37
+ before(async () => {
38
+ await databaseDelete();
39
+ await databaseInit(sql);
40
+ });
41
+ }
42
+ exports.useDatabase = useDatabase;
43
+ function useServer(schema) {
44
+ let client = new gql_test_client_1.Client('not defined');
45
+ let db = new pg_1.Pool(exports.db_config);
46
+ let info;
47
+ before(async () => {
48
+ info = await (0, server_1.serve)({
49
+ db,
50
+ model: (0, schema_1.buildModel)((0, schema_1.buildSchema)((0, graphql_1.parse)(schema))),
51
+ port: 0
52
+ });
53
+ client.endpoint = `http://localhost:${info.port}/graphql`;
54
+ });
55
+ after(() => info?.stop());
56
+ after(() => db.end());
57
+ return client;
58
+ }
59
+ exports.useServer = useServer;
60
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/test/util/setup.ts"],"names":[],"mappings":";;;AAAA,qDAAsC;AACtC,qCAA6B;AAC7B,2BAAuD;AACvD,iCAAyC;AACzC,6CAAwD;AACxD,yCAAmD;AAGtC,QAAA,SAAS,GAAG,IAAA,qBAAgB,GAAE,CAAA;AAG3C,KAAK,UAAU,UAAU,CAAC,KAA4C;IAClE,IAAI,MAAM,GAAG,IAAI,WAAQ,CAAC,iBAAS,CAAC,CAAA;IACpC,MAAM,MAAM,CAAC,OAAO,EAAE,CAAA;IACtB,IAAI;QACA,MAAM,KAAK,CAAC,MAAM,CAAC,CAAA;KACtB;YAAS;QACN,MAAM,MAAM,CAAC,GAAG,EAAE,CAAA;KACrB;AACL,CAAC;AAGD,SAAgB,YAAY,CAAC,GAAa;IACtC,OAAO,UAAU,CAAC,KAAK,EAAC,MAAM,EAAC,EAAE;QAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACjC,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;SAC7B;IACL,CAAC,CAAC,CAAA;AACN,CAAC;AAND,oCAMC;AAGD,SAAgB,cAAc;IAC1B,OAAO,UAAU,CAAC,KAAK,EAAC,MAAM,EAAC,EAAE;QAC7B,MAAM,MAAM,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAA;QAC1D,MAAM,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAA;IAC9C,CAAC,CAAC,CAAA;AACN,CAAC;AALD,wCAKC;AAGD,SAAgB,WAAW,CAAC,GAAa;IACrC,MAAM,CAAC,KAAK,IAAI,EAAE;QACd,MAAM,cAAc,EAAE,CAAA;QACtB,MAAM,YAAY,CAAC,GAAG,CAAC,CAAA;IAC3B,CAAC,CAAC,CAAA;AACN,CAAC;AALD,kCAKC;AAGD,SAAgB,SAAS,CAAC,MAAc;IACpC,IAAI,MAAM,GAAG,IAAI,wBAAM,CAAC,aAAa,CAAC,CAAA;IACtC,IAAI,EAAE,GAAG,IAAI,SAAI,CAAC,iBAAS,CAAC,CAAA;IAC5B,IAAI,IAAiC,CAAA;IACrC,MAAM,CAAC,KAAK,IAAI,EAAE;QACd,IAAI,GAAG,MAAM,IAAA,cAAK,EAAC;YACf,EAAE;YACF,KAAK,EAAE,IAAA,mBAAU,EAAC,IAAA,oBAAW,EAAC,IAAA,eAAK,EAAC,MAAM,CAAC,CAAC,CAAC;YAC7C,IAAI,EAAE,CAAC;SACV,CAAC,CAAA;QACF,MAAM,CAAC,QAAQ,GAAG,oBAAoB,IAAI,CAAC,IAAI,UAAU,CAAA;IAC7D,CAAC,CAAC,CAAA;IACF,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;IACzB,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAA;IACrB,OAAO,MAAM,CAAA;AACjB,CAAC;AAfD,8BAeC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=where.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"where.test.d.ts","sourceRoot":"","sources":["../../src/test/where.test.ts"],"names":[],"mappings":""}