@subsquid/openreader 1.0.2 → 2.1.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.
- package/bin/main.js +1 -1
- package/lib/context.d.ts +14 -0
- package/lib/context.d.ts.map +1 -0
- package/lib/context.js +3 -0
- package/lib/context.js.map +1 -0
- package/lib/db.d.ts +23 -0
- package/lib/db.d.ts.map +1 -0
- package/lib/db.js +57 -0
- package/lib/db.js.map +1 -0
- package/{dist → lib}/dialect.d.ts +0 -0
- package/{dist → lib}/dialect.d.ts.map +0 -0
- package/{dist → lib}/dialect.js +0 -0
- package/{dist → lib}/dialect.js.map +0 -0
- package/lib/ir/args.d.ts +47 -0
- package/lib/ir/args.d.ts.map +1 -0
- package/lib/ir/args.js +3 -0
- package/lib/ir/args.js.map +1 -0
- package/lib/ir/connection.d.ts +30 -0
- package/lib/ir/connection.d.ts.map +1 -0
- package/lib/ir/connection.js +17 -0
- package/lib/ir/connection.js.map +1 -0
- package/lib/ir/fields.d.ts +22 -0
- package/lib/ir/fields.d.ts.map +1 -0
- package/lib/ir/fields.js +3 -0
- package/lib/ir/fields.js.map +1 -0
- package/lib/limit.size.d.ts +8 -0
- package/lib/limit.size.d.ts.map +1 -0
- package/lib/limit.size.js +107 -0
- package/lib/limit.size.js.map +1 -0
- package/{dist → lib}/main.d.ts +0 -0
- package/{dist → lib}/main.d.ts.map +0 -0
- package/lib/main.js +59 -0
- package/lib/main.js.map +1 -0
- package/{dist → lib}/model.d.ts +11 -1
- package/lib/model.d.ts.map +1 -0
- package/{dist → lib}/model.js +0 -0
- package/{dist → lib}/model.js.map +0 -0
- package/{dist/gql/schema.d.ts → lib/model.schema.d.ts} +2 -2
- package/lib/model.schema.d.ts.map +1 -0
- package/{dist/gql/schema.js → lib/model.schema.js} +62 -8
- package/lib/model.schema.js.map +1 -0
- package/{dist → lib}/model.tools.d.ts +0 -0
- package/{dist → lib}/model.tools.d.ts.map +0 -0
- package/{dist → lib}/model.tools.js +0 -0
- package/{dist → lib}/model.tools.js.map +0 -0
- package/{dist → lib/opencrud}/orderBy.d.ts +2 -5
- package/lib/opencrud/orderBy.d.ts.map +1 -0
- package/{dist → lib/opencrud}/orderBy.js +1 -1
- package/lib/opencrud/orderBy.js.map +1 -0
- package/lib/opencrud/schema.d.ts +31 -0
- package/lib/opencrud/schema.d.ts.map +1 -0
- package/lib/opencrud/schema.js +527 -0
- package/lib/opencrud/schema.js.map +1 -0
- package/lib/opencrud/tree.d.ts +8 -0
- package/lib/opencrud/tree.d.ts.map +1 -0
- package/lib/opencrud/tree.js +131 -0
- package/lib/opencrud/tree.js.map +1 -0
- package/lib/opencrud/where.d.ts +7 -0
- package/lib/opencrud/where.d.ts.map +1 -0
- package/lib/opencrud/where.js +141 -0
- package/lib/opencrud/where.js.map +1 -0
- package/{dist/gql → lib}/scalars/BigInt.d.ts +0 -0
- package/lib/scalars/BigInt.d.ts.map +1 -0
- package/{dist/gql → lib}/scalars/BigInt.js +1 -1
- package/lib/scalars/BigInt.js.map +1 -0
- package/{dist/gql → lib}/scalars/Bytes.d.ts +0 -0
- package/lib/scalars/Bytes.d.ts.map +1 -0
- package/{dist/gql → lib}/scalars/Bytes.js +2 -2
- package/lib/scalars/Bytes.js.map +1 -0
- package/{dist/gql → lib}/scalars/DateTime.d.ts +0 -0
- package/lib/scalars/DateTime.d.ts.map +1 -0
- package/{dist/gql → lib}/scalars/DateTime.js +1 -1
- package/lib/scalars/DateTime.js.map +1 -0
- package/{dist/gql → lib}/scalars/JSON.d.ts +0 -0
- package/lib/scalars/JSON.d.ts.map +1 -0
- package/{dist/gql → lib}/scalars/JSON.js +0 -0
- package/lib/scalars/JSON.js.map +1 -0
- package/{dist/gql → lib}/scalars/index.d.ts +0 -0
- package/lib/scalars/index.d.ts.map +1 -0
- package/{dist/gql → lib}/scalars/index.js +0 -0
- package/lib/scalars/index.js.map +1 -0
- package/lib/server.d.ts +42 -0
- package/lib/server.d.ts.map +1 -0
- package/lib/server.js +171 -0
- package/lib/server.js.map +1 -0
- package/lib/sql/cursor.d.ts +52 -0
- package/lib/sql/cursor.d.ts.map +1 -0
- package/lib/sql/cursor.js +234 -0
- package/lib/sql/cursor.js.map +1 -0
- package/lib/sql/mapping.d.ts +4 -0
- package/lib/sql/mapping.d.ts.map +1 -0
- package/lib/sql/mapping.js +71 -0
- package/lib/sql/mapping.js.map +1 -0
- package/lib/sql/printer.d.ts +37 -0
- package/lib/sql/printer.d.ts.map +1 -0
- package/lib/sql/printer.js +311 -0
- package/lib/sql/printer.js.map +1 -0
- package/lib/sql/query.d.ts +46 -0
- package/lib/sql/query.d.ts.map +1 -0
- package/lib/sql/query.js +134 -0
- package/lib/sql/query.js.map +1 -0
- package/lib/sql/util.d.ts +30 -0
- package/lib/sql/util.d.ts.map +1 -0
- package/lib/sql/util.js +75 -0
- package/lib/sql/util.js.map +1 -0
- package/lib/subscription.d.ts +18 -0
- package/lib/subscription.d.ts.map +1 -0
- package/lib/subscription.js +47 -0
- package/lib/subscription.js.map +1 -0
- package/{dist → lib}/test/basic.test.d.ts +0 -0
- package/{dist → lib}/test/basic.test.d.ts.map +0 -0
- package/{dist → lib}/test/basic.test.js +0 -0
- package/{dist → lib}/test/basic.test.js.map +0 -0
- package/{dist → lib}/test/connection.test.d.ts +0 -0
- package/{dist → lib}/test/connection.test.d.ts.map +0 -0
- package/{dist → lib}/test/connection.test.js +0 -0
- package/{dist → lib}/test/connection.test.js.map +0 -0
- package/{dist → lib}/test/fts.test.d.ts +0 -0
- package/{dist → lib}/test/fts.test.d.ts.map +0 -0
- package/{dist → lib}/test/fts.test.js +1 -1
- package/lib/test/fts.test.js.map +1 -0
- package/{dist → lib}/test/isNull.test.d.ts +0 -0
- package/{dist → lib}/test/isNull.test.d.ts.map +0 -0
- package/{dist → lib}/test/isNull.test.js +0 -0
- package/{dist → lib}/test/isNull.test.js.map +0 -0
- package/lib/test/limits.test.d.ts +2 -0
- package/lib/test/limits.test.d.ts.map +1 -0
- package/lib/test/limits.test.js +159 -0
- package/lib/test/limits.test.js.map +1 -0
- package/{dist → lib}/test/lists.test.d.ts +0 -0
- package/{dist → lib}/test/lists.test.d.ts.map +0 -0
- package/{dist → lib}/test/lists.test.js +0 -0
- package/{dist → lib}/test/lists.test.js.map +0 -0
- package/{dist → lib}/test/lookup.test.d.ts +0 -0
- package/{dist → lib}/test/lookup.test.d.ts.map +0 -0
- package/{dist → lib}/test/lookup.test.js +0 -0
- package/{dist → lib}/test/lookup.test.js.map +0 -0
- package/{dist → lib}/test/regressions.test.d.ts +0 -0
- package/{dist → lib}/test/regressions.test.d.ts.map +0 -0
- package/{dist → lib}/test/regressions.test.js +0 -0
- package/{dist → lib}/test/regressions.test.js.map +0 -0
- package/{dist → lib}/test/scalars.test.d.ts +0 -0
- package/{dist → lib}/test/scalars.test.d.ts.map +0 -0
- package/{dist → lib}/test/scalars.test.js +0 -0
- package/{dist → lib}/test/scalars.test.js.map +0 -0
- package/lib/test/setup.d.ts +17 -0
- package/lib/test/setup.d.ts.map +1 -0
- package/{dist → lib}/test/setup.js +18 -13
- package/lib/test/setup.js.map +1 -0
- package/lib/test/subscription.test.d.ts +2 -0
- package/lib/test/subscription.test.d.ts.map +1 -0
- package/lib/test/subscription.test.js +99 -0
- package/lib/test/subscription.test.js.map +1 -0
- package/{dist → lib}/test/tools.test.d.ts +0 -0
- package/{dist → lib}/test/tools.test.d.ts.map +0 -0
- package/{dist → lib}/test/tools.test.js +0 -0
- package/{dist → lib}/test/tools.test.js.map +0 -0
- package/{dist → lib}/test/typed-json.test.d.ts +0 -0
- package/{dist → lib}/test/typed-json.test.d.ts.map +0 -0
- package/{dist → lib}/test/typed-json.test.js +0 -0
- package/{dist → lib}/test/typed-json.test.js.map +0 -0
- package/{dist → lib}/test/unions.test.d.ts +0 -0
- package/{dist → lib}/test/unions.test.d.ts.map +0 -0
- package/{dist → lib}/test/unions.test.js +0 -0
- package/{dist → lib}/test/unions.test.js.map +0 -0
- package/{dist → lib}/test/where.test.d.ts +0 -0
- package/{dist → lib}/test/where.test.d.ts.map +0 -0
- package/{dist → lib}/test/where.test.js +0 -0
- package/{dist → lib}/test/where.test.js.map +0 -0
- package/{dist → lib}/tools.d.ts +0 -0
- package/{dist → lib}/tools.d.ts.map +0 -0
- package/{dist → lib}/tools.js +3 -3
- package/{dist → lib}/tools.js.map +1 -1
- package/lib/util/error-handling.d.ts +11 -0
- package/lib/util/error-handling.d.ts.map +1 -0
- package/lib/util/error-handling.js +42 -0
- package/lib/util/error-handling.js.map +1 -0
- package/lib/util/execute.d.ts +5 -0
- package/lib/util/execute.d.ts.map +1 -0
- package/lib/util/execute.js +28 -0
- package/lib/util/execute.js.map +1 -0
- package/lib/util/lazy-transaction.d.ts +10 -0
- package/lib/util/lazy-transaction.d.ts.map +1 -0
- package/lib/util/lazy-transaction.js +43 -0
- package/lib/util/lazy-transaction.js.map +1 -0
- package/lib/util/limit.d.ts +11 -0
- package/lib/util/limit.d.ts.map +1 -0
- package/lib/util/limit.js +39 -0
- package/lib/util/limit.js.map +1 -0
- package/lib/util/resolve-tree.d.ts +14 -0
- package/lib/util/resolve-tree.d.ts.map +1 -0
- package/lib/util/resolve-tree.js +52 -0
- package/lib/util/resolve-tree.js.map +1 -0
- package/{dist → lib/util}/util.d.ts +2 -3
- package/lib/util/util.d.ts.map +1 -0
- package/{dist → lib/util}/util.js +9 -13
- package/lib/util/util.js.map +1 -0
- package/package.json +18 -10
- package/src/context.ts +17 -0
- package/src/db.ts +46 -57
- package/src/ir/args.ts +85 -0
- package/src/ir/connection.ts +48 -0
- package/src/ir/fields.ts +40 -0
- package/src/limit.size.ts +130 -0
- package/src/main.ts +74 -42
- package/src/{gql/schema.ts → model.schema.ts} +72 -9
- package/src/model.ts +13 -1
- package/src/{orderBy.ts → opencrud/orderBy.ts} +3 -10
- package/src/opencrud/schema.ts +639 -0
- package/src/opencrud/tree.ts +144 -0
- package/src/opencrud/where.ts +141 -0
- package/src/{gql/scalars → scalars}/BigInt.ts +1 -1
- package/src/{gql/scalars → scalars}/Bytes.ts +4 -4
- package/src/{gql/scalars → scalars}/DateTime.ts +1 -1
- package/src/{gql/scalars → scalars}/JSON.ts +0 -0
- package/src/{gql/scalars → scalars}/index.ts +0 -0
- package/src/server.ts +175 -55
- package/src/sql/cursor.ts +291 -0
- package/src/sql/mapping.ts +66 -0
- package/src/sql/printer.ts +328 -0
- package/src/sql/query.ts +194 -0
- package/src/sql/util.ts +89 -0
- package/src/subscription.ts +46 -0
- package/src/test/fts.test.ts +1 -1
- package/src/test/limits.test.ts +163 -0
- package/src/test/setup.ts +16 -11
- package/src/test/subscription.test.ts +98 -0
- package/src/tools.ts +1 -1
- package/src/util/error-handling.ts +40 -0
- package/src/util/execute.ts +53 -0
- package/src/util/lazy-transaction.ts +49 -0
- package/src/util/limit.ts +34 -0
- package/src/util/resolve-tree.ts +65 -0
- package/src/{util.ts → util/util.ts} +9 -14
- package/dist/db.d.ts +0 -28
- package/dist/db.d.ts.map +0 -1
- package/dist/db.js +0 -69
- package/dist/db.js.map +0 -1
- package/dist/gql/opencrud.d.ts +0 -6
- package/dist/gql/opencrud.d.ts.map +0 -1
- package/dist/gql/opencrud.js +0 -326
- package/dist/gql/opencrud.js.map +0 -1
- package/dist/gql/scalars/BigInt.d.ts.map +0 -1
- package/dist/gql/scalars/BigInt.js.map +0 -1
- package/dist/gql/scalars/Bytes.d.ts.map +0 -1
- package/dist/gql/scalars/Bytes.js.map +0 -1
- package/dist/gql/scalars/DateTime.d.ts.map +0 -1
- package/dist/gql/scalars/DateTime.js.map +0 -1
- package/dist/gql/scalars/JSON.d.ts.map +0 -1
- package/dist/gql/scalars/JSON.js.map +0 -1
- package/dist/gql/scalars/index.d.ts.map +0 -1
- package/dist/gql/scalars/index.js.map +0 -1
- package/dist/gql/schema.d.ts.map +0 -1
- package/dist/gql/schema.js.map +0 -1
- package/dist/main.js +0 -44
- package/dist/main.js.map +0 -1
- package/dist/model.d.ts.map +0 -1
- package/dist/orderBy.d.ts.map +0 -1
- package/dist/orderBy.js.map +0 -1
- package/dist/queryBuilder.d.ts +0 -56
- package/dist/queryBuilder.d.ts.map +0 -1
- package/dist/queryBuilder.js +0 -733
- package/dist/queryBuilder.js.map +0 -1
- package/dist/relayConnection.d.ts +0 -37
- package/dist/relayConnection.d.ts.map +0 -1
- package/dist/relayConnection.js +0 -43
- package/dist/relayConnection.js.map +0 -1
- package/dist/requestedFields.d.ts +0 -33
- package/dist/requestedFields.d.ts.map +0 -1
- package/dist/requestedFields.js +0 -179
- package/dist/requestedFields.js.map +0 -1
- package/dist/resolver.d.ts +0 -9
- package/dist/resolver.d.ts.map +0 -1
- package/dist/resolver.js +0 -158
- package/dist/resolver.js.map +0 -1
- package/dist/server.d.ts +0 -22
- package/dist/server.d.ts.map +0 -1
- package/dist/server.js +0 -96
- package/dist/server.js.map +0 -1
- package/dist/test/fts.test.js.map +0 -1
- package/dist/test/setup.d.ts +0 -14
- package/dist/test/setup.d.ts.map +0 -1
- package/dist/test/setup.js.map +0 -1
- package/dist/util.d.ts.map +0 -1
- package/dist/util.js.map +0 -1
- package/dist/where.d.ts +0 -9
- package/dist/where.d.ts.map +0 -1
- package/dist/where.js +0 -101
- package/dist/where.js.map +0 -1
- package/src/gql/opencrud.ts +0 -350
- package/src/queryBuilder.ts +0 -891
- package/src/relayConnection.ts +0 -80
- package/src/requestedFields.ts +0 -246
- package/src/resolver.ts +0 -201
- package/src/where.ts +0 -119
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subscription.d.ts","sourceRoot":"","sources":["../src/subscription.ts"],"names":[],"mappings":"AAGA,qBAAa,YAAY,CAAC,CAAC,CAAE,YAAW,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC;IAK1D,OAAO,CAAC,QAAQ;IAAU,OAAO,CAAC,IAAI;IAJlD,OAAO,CAAC,KAAK,CAAC,CAAc;IAC5B,OAAO,CAAC,IAAI,CAAC,CAAG;IAChB,OAAO,CAAC,QAAQ,CAAO;gBAEH,QAAQ,EAAE,MAAM,EAAU,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC;IAEpE,CAAC,MAAM,CAAC,aAAa,CAAC;IAIhB,IAAI;;;;IAgBJ,MAAM;;;;CAOf"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.Subscription = void 0;
|
|
7
|
+
const deep_equal_1 = __importDefault(require("deep-equal"));
|
|
8
|
+
class Subscription {
|
|
9
|
+
constructor(interval, poll) {
|
|
10
|
+
this.interval = interval;
|
|
11
|
+
this.poll = poll;
|
|
12
|
+
this.hasNoVal = true;
|
|
13
|
+
}
|
|
14
|
+
[Symbol.asyncIterator]() {
|
|
15
|
+
return this;
|
|
16
|
+
}
|
|
17
|
+
async next() {
|
|
18
|
+
if (this.hasNoVal) {
|
|
19
|
+
this.prev = await this.poll();
|
|
20
|
+
this.hasNoVal = false;
|
|
21
|
+
}
|
|
22
|
+
let value;
|
|
23
|
+
do {
|
|
24
|
+
await new Promise(resolve => {
|
|
25
|
+
this.timer = setTimeout(resolve, this.interval);
|
|
26
|
+
});
|
|
27
|
+
value = await this.poll();
|
|
28
|
+
} while ((0, deep_equal_1.default)(this.prev, value));
|
|
29
|
+
this.prev = value;
|
|
30
|
+
return { done: false, value };
|
|
31
|
+
}
|
|
32
|
+
async return() {
|
|
33
|
+
if (this.timer != null) {
|
|
34
|
+
clearTimeout(this.timer);
|
|
35
|
+
this.timer = undefined;
|
|
36
|
+
}
|
|
37
|
+
return EOS;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.Subscription = Subscription;
|
|
41
|
+
const EOS = {
|
|
42
|
+
done: true,
|
|
43
|
+
get value() {
|
|
44
|
+
throw new Error('Unexpected value access');
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=subscription.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subscription.js","sourceRoot":"","sources":["../src/subscription.ts"],"names":[],"mappings":";;;;;;AAAA,4DAAkC;AAGlC,MAAa,YAAY;IAKrB,YAAoB,QAAgB,EAAU,IAAsB;QAAhD,aAAQ,GAAR,QAAQ,CAAQ;QAAU,SAAI,GAAJ,IAAI,CAAkB;QAF5D,aAAQ,GAAG,IAAI,CAAA;IAEgD,CAAC;IAExE,CAAC,MAAM,CAAC,aAAa,CAAC;QAClB,OAAO,IAAI,CAAA;IACf,CAAC;IAED,KAAK,CAAC,IAAI;QACN,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAA;YAC7B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAA;SACxB;QACD,IAAI,KAAK,CAAA;QACT,GAAG;YACC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;gBACxB,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;YACnD,CAAC,CAAC,CAAA;YACF,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAA;SAC5B,QAAQ,IAAA,oBAAS,EAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,EAAC;QACrC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAA;QACjB,OAAO,EAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAC,CAAA;IAC/B,CAAC;IAED,KAAK,CAAC,MAAM;QACR,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;YACpB,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACxB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA;SACzB;QACD,OAAO,GAAG,CAAA;IACd,CAAC;CACJ;AAlCD,oCAkCC;AAGD,MAAM,GAAG,GAAG;IACR,IAAI,EAAE,IAAI;IACV,IAAI,KAAK;QACL,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;IAC9C,CAAC;CACJ,CAAA"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -4,7 +4,7 @@ const setup_1 = require("./setup");
|
|
|
4
4
|
function tsvector(columns) {
|
|
5
5
|
return columns.map(col => `setweight(to_tsvector('english', coalesce(${col}, '')), 'A')`).join(' || ');
|
|
6
6
|
}
|
|
7
|
-
(0, setup_1.isCockroach)() || describe('full text search', function () {
|
|
7
|
+
(0, setup_1.isCockroach)() || describe.skip('full text search', function () {
|
|
8
8
|
(0, setup_1.useDatabase)([
|
|
9
9
|
`create table foo (
|
|
10
10
|
id text primary key,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fts.test.js","sourceRoot":"","sources":["../../src/test/fts.test.ts"],"names":[],"mappings":";;AAAA,mCAA2D;AAG3D,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;AAGD,IAAA,mBAAW,GAAE,IAAI,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE;IAC/C,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"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"limits.test.d.ts","sourceRoot":"","sources":["../../src/test/limits.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const expect_1 = __importDefault(require("expect"));
|
|
7
|
+
const setup_1 = require("./setup");
|
|
8
|
+
describe('response size limits', function () {
|
|
9
|
+
(0, setup_1.useDatabase)([
|
|
10
|
+
`create table "order1" (id text primary key)`,
|
|
11
|
+
`create table item1 (id text primary key, order_id text, name text)`,
|
|
12
|
+
`create table "order2" (id text primary key)`,
|
|
13
|
+
`create table item2 (id text primary key, order_id text, name text)`,
|
|
14
|
+
`create table "order3" (id text primary key)`,
|
|
15
|
+
`create table item3 (id text primary key, order_id text, name text)`,
|
|
16
|
+
]);
|
|
17
|
+
const client = (0, setup_1.useServer)(`
|
|
18
|
+
type Order1 @entity {
|
|
19
|
+
id: ID!
|
|
20
|
+
items: [Item1!]! @derivedFrom(field: "order")
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
type Item1 @entity {
|
|
24
|
+
id: ID!
|
|
25
|
+
order: Order1!
|
|
26
|
+
name: String
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
type Order2 @entity @cardinality(value: 10) {
|
|
30
|
+
id: ID!
|
|
31
|
+
items: [Item2!]! @derivedFrom(field: "order")
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
type Item2 @entity {
|
|
35
|
+
id: ID!
|
|
36
|
+
order: Order2!
|
|
37
|
+
name: String
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
type Order3 @entity {
|
|
41
|
+
id: ID!
|
|
42
|
+
items: [Item3!]! @derivedFrom(field: "order") @cardinality(value: 10)
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
type Item3 @entity {
|
|
46
|
+
id: ID!
|
|
47
|
+
order: Order3!
|
|
48
|
+
name: String @byteWeight(value: 10.0)
|
|
49
|
+
}
|
|
50
|
+
`, {
|
|
51
|
+
maxResponseNodes: 50,
|
|
52
|
+
maxRootFields: 3
|
|
53
|
+
});
|
|
54
|
+
it('unlimited requests fail', async function () {
|
|
55
|
+
let result = await client.query(`
|
|
56
|
+
query {
|
|
57
|
+
order1s {
|
|
58
|
+
id
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
`);
|
|
62
|
+
(0, expect_1.default)(result).toMatchObject({
|
|
63
|
+
data: null,
|
|
64
|
+
errors: [
|
|
65
|
+
expect_1.default.objectContaining({ message: 'response might exceed the size limit', path: ['order1s'] })
|
|
66
|
+
]
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
it('limited requests work', function () {
|
|
70
|
+
return client.test(`
|
|
71
|
+
query {
|
|
72
|
+
order1s(limit: 10) {
|
|
73
|
+
items(limit: 2) {
|
|
74
|
+
id
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
`, {
|
|
79
|
+
order1s: []
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
it('entity level cardinalities are respected', function () {
|
|
83
|
+
return client.test(`
|
|
84
|
+
query {
|
|
85
|
+
order2s {
|
|
86
|
+
id
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
`, {
|
|
90
|
+
order2s: []
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
it('item cardinalities are respected', function () {
|
|
94
|
+
return client.test(`
|
|
95
|
+
query {
|
|
96
|
+
order3s(limit: 1) {
|
|
97
|
+
items { id }
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
`, {
|
|
101
|
+
order3s: []
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
it('@byteWeight annotations are respected', async function () {
|
|
105
|
+
let result = await client.query(`
|
|
106
|
+
query {
|
|
107
|
+
order3s(limit: 1) {
|
|
108
|
+
items(limit: 8) { name }
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
`);
|
|
112
|
+
(0, expect_1.default)(result).toEqual({
|
|
113
|
+
data: null,
|
|
114
|
+
errors: [
|
|
115
|
+
expect_1.default.objectContaining({
|
|
116
|
+
message: 'response might exceed the size limit',
|
|
117
|
+
path: ['order3s']
|
|
118
|
+
})
|
|
119
|
+
]
|
|
120
|
+
});
|
|
121
|
+
await client.test(`
|
|
122
|
+
query {
|
|
123
|
+
order3s(limit: 1) {
|
|
124
|
+
items(limit: 4) { name }
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
`, {
|
|
128
|
+
order3s: []
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
it('id_in conditions are understood', function () {
|
|
132
|
+
return client.test(`
|
|
133
|
+
query {
|
|
134
|
+
order1s(where: {id_in: ["1", "2", "3"]}) {
|
|
135
|
+
id
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
`, {
|
|
139
|
+
order1s: []
|
|
140
|
+
});
|
|
141
|
+
});
|
|
142
|
+
it('root query fields limit', async function () {
|
|
143
|
+
return client.errorTest(`
|
|
144
|
+
query {
|
|
145
|
+
a: order1ById(id: "1") { id }
|
|
146
|
+
b: order1ById(id: "1") { id }
|
|
147
|
+
c: order1ById(id: "1") { id }
|
|
148
|
+
d: order1ById(id: "1") { id }
|
|
149
|
+
}
|
|
150
|
+
`, {
|
|
151
|
+
errors: [
|
|
152
|
+
expect_1.default.objectContaining({
|
|
153
|
+
message: 'only 3 root query fields allowed, but got 4'
|
|
154
|
+
})
|
|
155
|
+
]
|
|
156
|
+
});
|
|
157
|
+
});
|
|
158
|
+
});
|
|
159
|
+
//# sourceMappingURL=limits.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"limits.test.js","sourceRoot":"","sources":["../../src/test/limits.test.ts"],"names":[],"mappings":";;;;;AAAA,oDAA2B;AAC3B,mCAA8C;AAG9C,QAAQ,CAAC,sBAAsB,EAAE;IAC7B,IAAA,mBAAW,EAAC;QACR,6CAA6C;QAC7C,oEAAoE;QACpE,6CAA6C;QAC7C,oEAAoE;QACpE,6CAA6C;QAC7C,oEAAoE;KACvE,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,IAAA,iBAAS,EAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAiCxB,EAAE;QACC,gBAAgB,EAAE,EAAE;QACpB,aAAa,EAAE,CAAC;KACnB,CAAC,CAAA;IAEF,EAAE,CAAC,yBAAyB,EAAE,KAAK;QAC/B,IAAI,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;;;;;;SAM/B,CAAC,CAAA;QACF,IAAA,gBAAM,EAAC,MAAM,CAAC,CAAC,aAAa,CAAC;YACzB,IAAI,EAAE,IAAI;YACV,MAAM,EAAE;gBACJ,gBAAM,CAAC,gBAAgB,CAAC,EAAC,OAAO,EAAE,sCAAsC,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,EAAC,CAAC;aAChG;SACJ,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,uBAAuB,EAAE;QACxB,OAAO,MAAM,CAAC,IAAI,CAAC;;;;;;;;SAQlB,EAAE;YACC,OAAO,EAAE,EAAE;SACd,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,0CAA0C,EAAE;QAC3C,OAAO,MAAM,CAAC,IAAI,CAAC;;;;;;SAMlB,EAAE;YACC,OAAO,EAAE,EAAE;SACd,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,kCAAkC,EAAE;QACnC,OAAO,MAAM,CAAC,IAAI,CAAC;;;;;;SAMlB,EAAE;YACC,OAAO,EAAE,EAAE;SACd,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,uCAAuC,EAAE,KAAK;QAC7C,IAAI,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;;;;;;SAM/B,CAAC,CAAA;QACF,IAAA,gBAAM,EAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACnB,IAAI,EAAE,IAAI;YACV,MAAM,EAAE;gBACJ,gBAAM,CAAC,gBAAgB,CAAC;oBACpB,OAAO,EAAE,sCAAsC;oBAC/C,IAAI,EAAE,CAAC,SAAS,CAAC;iBACpB,CAAC;aACL;SACJ,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,IAAI,CAAC;;;;;;SAMjB,EAAE;YACC,OAAO,EAAE,EAAE;SACd,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,iCAAiC,EAAE;QAClC,OAAO,MAAM,CAAC,IAAI,CAAC;;;;;;SAMlB,EAAE;YACC,OAAO,EAAE,EAAE;SACd,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,yBAAyB,EAAE,KAAK;QAC/B,OAAO,MAAM,CAAC,SAAS,CAAC;;;;;;;SAOvB,EAAE;YACC,MAAM,EAAE;gBACJ,gBAAM,CAAC,gBAAgB,CAAC;oBACpB,OAAO,EAAE,6CAA6C;iBACzD,CAAC;aACL;SACJ,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Client } from "gql-test-client";
|
|
2
|
+
import { ClientBase } from "pg";
|
|
3
|
+
import { ServerOptions } from '../server';
|
|
4
|
+
export declare function isCockroach(): boolean;
|
|
5
|
+
export declare const db_config: {
|
|
6
|
+
host: string;
|
|
7
|
+
port: number;
|
|
8
|
+
user: string;
|
|
9
|
+
password: string;
|
|
10
|
+
database: string;
|
|
11
|
+
};
|
|
12
|
+
export declare function withDatabase(block: (client: ClientBase) => Promise<void>): Promise<void>;
|
|
13
|
+
export declare function databaseExecute(sql: string[]): Promise<void>;
|
|
14
|
+
export declare function databaseDelete(): Promise<void>;
|
|
15
|
+
export declare function useDatabase(sql: string[]): void;
|
|
16
|
+
export declare function useServer(schema: string, options?: Partial<ServerOptions>): Client;
|
|
17
|
+
//# sourceMappingURL=setup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/test/setup.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAA;AAEtC,OAAO,EAAqB,UAAU,EAAO,MAAM,IAAI,CAAA;AAEvD,OAAO,EAAQ,aAAa,EAAC,MAAM,WAAW,CAAA;AAG9C,wBAAgB,WAAW,IAAI,OAAO,CAErC;AAGD,eAAO,MAAM,SAAS;;;;;;CAQrB,CAAA;AAGD,wBAAsB,YAAY,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ9F;AAGD,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAM5D;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,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,MAAM,CAoBlF"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.useServer = exports.useDatabase = exports.databaseDelete = exports.
|
|
3
|
+
exports.useServer = exports.useDatabase = exports.databaseDelete = exports.databaseExecute = exports.withDatabase = exports.db_config = exports.isCockroach = void 0;
|
|
4
4
|
const util_internal_1 = require("@subsquid/util-internal");
|
|
5
5
|
const gql_test_client_1 = require("gql-test-client");
|
|
6
6
|
const graphql_1 = require("graphql");
|
|
7
7
|
const pg_1 = require("pg");
|
|
8
|
-
const
|
|
8
|
+
const model_schema_1 = require("../model.schema");
|
|
9
9
|
const server_1 = require("../server");
|
|
10
10
|
function isCockroach() {
|
|
11
11
|
return process.env.DB_TYPE == 'cockroach';
|
|
@@ -18,7 +18,7 @@ exports.db_config = {
|
|
|
18
18
|
password: 'root',
|
|
19
19
|
database: 'defaultdb'
|
|
20
20
|
};
|
|
21
|
-
async function
|
|
21
|
+
async function withDatabase(block) {
|
|
22
22
|
let client = new pg_1.Client(exports.db_config);
|
|
23
23
|
await client.connect();
|
|
24
24
|
try {
|
|
@@ -28,16 +28,17 @@ async function withClient(block) {
|
|
|
28
28
|
await client.end();
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
exports.withDatabase = withDatabase;
|
|
32
|
+
function databaseExecute(sql) {
|
|
33
|
+
return withDatabase(async (client) => {
|
|
33
34
|
for (let i = 0; i < sql.length; i++) {
|
|
34
35
|
await client.query(sql[i]);
|
|
35
36
|
}
|
|
36
37
|
});
|
|
37
38
|
}
|
|
38
|
-
exports.
|
|
39
|
+
exports.databaseExecute = databaseExecute;
|
|
39
40
|
function databaseDelete() {
|
|
40
|
-
return
|
|
41
|
+
return withDatabase(async (client) => {
|
|
41
42
|
await client.query(`DROP SCHEMA IF EXISTS root CASCADE`);
|
|
42
43
|
await client.query(`CREATE SCHEMA root`);
|
|
43
44
|
});
|
|
@@ -46,24 +47,28 @@ exports.databaseDelete = databaseDelete;
|
|
|
46
47
|
function useDatabase(sql) {
|
|
47
48
|
before(async () => {
|
|
48
49
|
await databaseDelete();
|
|
49
|
-
await
|
|
50
|
+
await databaseExecute(sql);
|
|
50
51
|
});
|
|
51
52
|
}
|
|
52
53
|
exports.useDatabase = useDatabase;
|
|
53
|
-
function useServer(schema) {
|
|
54
|
+
function useServer(schema, options) {
|
|
54
55
|
let client = new gql_test_client_1.Client('not defined');
|
|
55
56
|
let db = new pg_1.Pool(exports.db_config);
|
|
56
57
|
let info;
|
|
57
58
|
before(async () => {
|
|
58
59
|
info = await (0, server_1.serve)({
|
|
59
|
-
db,
|
|
60
|
-
model: (0,
|
|
60
|
+
connection: db,
|
|
61
|
+
model: (0, model_schema_1.buildModel)((0, model_schema_1.buildSchema)((0, graphql_1.parse)(schema))),
|
|
61
62
|
port: 0,
|
|
62
|
-
dialect: isCockroach() ? 'cockroach' : 'postgres'
|
|
63
|
+
dialect: isCockroach() ? 'cockroach' : 'postgres',
|
|
64
|
+
subscriptions: true,
|
|
65
|
+
subscriptionPollInterval: 500,
|
|
66
|
+
maxRootFields: 10,
|
|
67
|
+
...options
|
|
63
68
|
});
|
|
64
69
|
client.endpoint = `http://localhost:${info.port}/graphql`;
|
|
65
70
|
});
|
|
66
|
-
after(() => info?.
|
|
71
|
+
after(() => info?.close());
|
|
67
72
|
after(() => db.end());
|
|
68
73
|
return client;
|
|
69
74
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/test/setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subscription.test.d.ts","sourceRoot":"","sources":["../../src/test/subscription.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const util_internal_1 = require("@subsquid/util-internal");
|
|
7
|
+
const expect_1 = __importDefault(require("expect"));
|
|
8
|
+
const setup_1 = require("./setup");
|
|
9
|
+
describe("subscriptions", function () {
|
|
10
|
+
(0, setup_1.useDatabase)([
|
|
11
|
+
`create table "order" (id text primary key, kind text not null, name text)`,
|
|
12
|
+
`create table item (id text primary key, order_id text, name text)`,
|
|
13
|
+
]);
|
|
14
|
+
const client = (0, setup_1.useServer)(`
|
|
15
|
+
type Order @entity {
|
|
16
|
+
id: ID!
|
|
17
|
+
kind: String!
|
|
18
|
+
name: String
|
|
19
|
+
items: [Item!]! @derivedFrom(field: "order")
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
type Item @entity {
|
|
23
|
+
id: ID!
|
|
24
|
+
order: Order
|
|
25
|
+
name: String
|
|
26
|
+
}
|
|
27
|
+
`);
|
|
28
|
+
it("entity list", function () {
|
|
29
|
+
return client.subscriptionTest(`
|
|
30
|
+
subscription {
|
|
31
|
+
orders(where: {kind_eq: "list"}, orderBy: id_ASC) {
|
|
32
|
+
id
|
|
33
|
+
name
|
|
34
|
+
items(orderBy: id_ASC) {
|
|
35
|
+
name
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
`, async (take) => {
|
|
40
|
+
await (0, util_internal_1.wait)(1000);
|
|
41
|
+
await (0, setup_1.databaseExecute)([
|
|
42
|
+
`insert into "order" (id, kind) values ('1', 'list')`,
|
|
43
|
+
`insert into "order" (id, kind) values ('2', 'foo')`,
|
|
44
|
+
]);
|
|
45
|
+
(0, expect_1.default)(await take()).toEqual({
|
|
46
|
+
data: {
|
|
47
|
+
orders: [{ id: '1', name: null, items: [] }]
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
await (0, setup_1.databaseExecute)([`
|
|
51
|
+
update "order" set name = 'hello' where id in ('1', '2');
|
|
52
|
+
insert into item (id, "order_id", name) values ('1-1', '1', '123')
|
|
53
|
+
`]);
|
|
54
|
+
(0, expect_1.default)(await take()).toEqual({
|
|
55
|
+
data: {
|
|
56
|
+
orders: [
|
|
57
|
+
{ id: '1', name: 'hello', items: [{ name: '123' }] }
|
|
58
|
+
]
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
it("entity by id", async function () {
|
|
64
|
+
await (0, setup_1.databaseExecute)([
|
|
65
|
+
`insert into "order" (id, kind) values ('3', 'by id')`,
|
|
66
|
+
`insert into item (id, "order_id", name) values ('3-1', '3', 'hello')`
|
|
67
|
+
]);
|
|
68
|
+
await client.subscriptionTest(`
|
|
69
|
+
subscription {
|
|
70
|
+
third: orderById(id: "3") {
|
|
71
|
+
name
|
|
72
|
+
items(orderBy: id_ASC) {
|
|
73
|
+
name
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
`, async (take) => {
|
|
78
|
+
await (0, util_internal_1.wait)(1000);
|
|
79
|
+
await (0, setup_1.databaseExecute)([`
|
|
80
|
+
start transaction;
|
|
81
|
+
update "order" set name = 'foo' where id = '3';
|
|
82
|
+
insert into item (id, "order_id", name) values ('3-2', '3', 'world');
|
|
83
|
+
commit;
|
|
84
|
+
`]);
|
|
85
|
+
(0, expect_1.default)(await take()).toEqual({
|
|
86
|
+
data: {
|
|
87
|
+
third: {
|
|
88
|
+
name: 'foo',
|
|
89
|
+
items: [
|
|
90
|
+
{ name: 'hello' },
|
|
91
|
+
{ name: 'world' }
|
|
92
|
+
]
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
//# sourceMappingURL=subscription.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subscription.test.js","sourceRoot":"","sources":["../../src/test/subscription.test.ts"],"names":[],"mappings":";;;;;AAAA,2DAA4C;AAC5C,oDAA2B;AAC3B,mCAA+D;AAG/D,QAAQ,CAAC,eAAe,EAAE;IACtB,IAAA,mBAAW,EAAC;QACR,2EAA2E;QAC3E,mEAAmE;KACtE,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,IAAA,iBAAS,EAAC;;;;;;;;;;;;;KAaxB,CAAC,CAAA;IAEF,EAAE,CAAC,aAAa,EAAE;QACd,OAAO,MAAM,CAAC,gBAAgB,CAAC;;;;;;;;;;SAU9B,EAAE,KAAK,EAAC,IAAI,EAAC,EAAE;YACZ,MAAM,IAAA,oBAAI,EAAC,IAAI,CAAC,CAAA;YAChB,MAAM,IAAA,uBAAe,EAAC;gBAClB,qDAAqD;gBACrD,oDAAoD;aACvD,CAAC,CAAA;YACF,IAAA,gBAAM,EAAC,MAAM,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC;gBACzB,IAAI,EAAE;oBACF,MAAM,EAAE,CAAC,EAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAC,CAAC;iBAC7C;aACJ,CAAC,CAAA;YACF,MAAM,IAAA,uBAAe,EAAC,CAAC;;;aAGtB,CAAC,CAAC,CAAA;YACH,IAAA,gBAAM,EAAC,MAAM,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC;gBACzB,IAAI,EAAE;oBACF,MAAM,EAAE;wBACJ,EAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAC,IAAI,EAAE,KAAK,EAAC,CAAC,EAAC;qBACnD;iBACJ;aACJ,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,cAAc,EAAE,KAAK;QACpB,MAAM,IAAA,uBAAe,EAAC;YAClB,sDAAsD;YACtD,sEAAsE;SACzE,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,gBAAgB,CAAC;;;;;;;;;SAS7B,EAAE,KAAK,EAAC,IAAI,EAAC,EAAE;YACZ,MAAM,IAAA,oBAAI,EAAC,IAAI,CAAC,CAAA;YAChB,MAAM,IAAA,uBAAe,EAAC,CAAC;;;;;aAKtB,CAAC,CAAC,CAAA;YACH,IAAA,gBAAM,EAAC,MAAM,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC;gBACzB,IAAI,EAAE;oBACF,KAAK,EAAE;wBACH,IAAI,EAAE,KAAK;wBACX,KAAK,EAAE;4BACH,EAAC,IAAI,EAAE,OAAO,EAAC;4BACf,EAAC,IAAI,EAAE,OAAO,EAAC;yBAClB;qBACJ;iBACJ;aACJ,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/{dist → lib}/tools.d.ts
RENAMED
|
File without changes
|
|
File without changes
|
package/{dist → lib}/tools.js
RENAMED
|
@@ -32,7 +32,7 @@ const fs = __importStar(require("fs"));
|
|
|
32
32
|
const path = __importStar(require("path"));
|
|
33
33
|
const graphql_1 = require("graphql");
|
|
34
34
|
const process_1 = __importDefault(require("process"));
|
|
35
|
-
const
|
|
35
|
+
const model_schema_1 = require("./model.schema");
|
|
36
36
|
function loadModel(schemaFile) {
|
|
37
37
|
let files = [];
|
|
38
38
|
if (fs.statSync(schemaFile).isDirectory()) {
|
|
@@ -52,8 +52,8 @@ function loadModel(schemaFile) {
|
|
|
52
52
|
if (docs.length == 0)
|
|
53
53
|
return {};
|
|
54
54
|
let doc = docs.length == 1 ? docs[0] : (0, merge_1.mergeTypeDefs)(docs);
|
|
55
|
-
let schema = (0,
|
|
56
|
-
return (0,
|
|
55
|
+
let schema = (0, model_schema_1.buildSchema)(doc);
|
|
56
|
+
return (0, model_schema_1.buildModel)(schema);
|
|
57
57
|
}
|
|
58
58
|
exports.loadModel = loadModel;
|
|
59
59
|
function resolveGraphqlSchema(projectDir) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAkD;AAClD,uCAAwB;AACxB,2CAA4B;AAC5B,qCAAqC;AACrC,sDAA6B;AAC7B,
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAkD;AAClD,uCAAwB;AACxB,2CAA4B;AAC5B,qCAAqC;AACrC,sDAA6B;AAC7B,iDAAsD;AAItD,SAAgB,SAAS,CAAC,UAAkB;IACxC,IAAI,KAAK,GAAa,EAAE,CAAA;IACxB,IAAI,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,EAAE;QACvC,EAAE,CAAC,WAAW,CAAC,UAAU,EAAE,EAAC,aAAa,EAAE,IAAI,EAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC7D,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE;gBACjF,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;aAC/C;QACL,CAAC,CAAC,CAAA;KACL;SAAM;QACH,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;KACzB;IAED,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QACrB,IAAI,GAAG,GAAG,IAAI,gBAAM,CAChB,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,EAC3B,CAAC,CACJ,CAAA;QACD,OAAO,IAAA,eAAK,EAAC,GAAG,CAAC,CAAA;IACrB,CAAC,CAAC,CAAA;IAEF,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,EAAE,CAAA;IAC/B,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAA,qBAAa,EAAC,IAAI,CAAC,CAAA;IAC1D,IAAI,MAAM,GAAG,IAAA,0BAAW,EAAC,GAAG,CAAC,CAAA;IAC7B,OAAO,IAAA,yBAAU,EAAC,MAAM,CAAC,CAAA;AAC7B,CAAC;AAxBD,8BAwBC;AAGD,SAAgB,oBAAoB,CAAC,UAAmB;IACpD,IAAI,GAAG,GAAG,UAAU,IAAI,iBAAO,CAAC,GAAG,EAAE,CAAA;IACrC,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAA;IAC7C,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAA;IAClC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;IACjC,IAAI,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAC,cAAc,EAAE,KAAK,EAAC,CAAC,CAAA;IACpD,IAAI,IAAI,EAAE,WAAW,EAAE,EAAE;QACrB,IAAI,UAAU,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;QACrG,IAAI,UAAU;YAAE,OAAO,GAAG,CAAA;KAC7B;IACD,MAAM,IAAI,KAAK,CAAC,sCAAsC,GAAG,EAAE,CAAC,CAAA;AAChE,CAAC;AAXD,oDAWC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Logger, LogLevel } from "@subsquid/logger";
|
|
2
|
+
import { GraphQLError } from "graphql";
|
|
3
|
+
export declare function logGraphQLError(log: Logger, err: GraphQLError, level?: LogLevel): void;
|
|
4
|
+
export declare function withErrorContext(ctx: object): (err: unknown) => never;
|
|
5
|
+
export declare function addErrorContext(error: unknown, ctx: object): Error;
|
|
6
|
+
export declare function ensureError(err: unknown): Error;
|
|
7
|
+
export declare class NonErrorThrown extends Error {
|
|
8
|
+
readonly value: unknown;
|
|
9
|
+
constructor(value: unknown);
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=error-handling.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-handling.d.ts","sourceRoot":"","sources":["../../src/util/error-handling.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAE,QAAQ,EAAC,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAC,YAAY,EAAa,MAAM,SAAS,CAAA;AAGhD,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,GAAE,QAAyB,GAAG,IAAI,CAQtG;AAGD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK,KAAK,CAIrE;AAGD,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,CAIlE;AAGD,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,KAAK,CAG/C;AAGD,qBAAa,cAAe,SAAQ,KAAK;aACT,KAAK,EAAE,OAAO;gBAAd,KAAK,EAAE,OAAO;CAG7C"}
|