@subsquid/openreader 5.5.0 → 5.5.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.
- package/lib/test/disableForeignKeyConstraint.test.js +9 -13
- package/lib/test/disableForeignKeyConstraint.test.js.map +1 -1
- package/lib/test/fts.test.js +7 -1
- package/lib/test/fts.test.js.map +1 -1
- package/lib/test/limits.test.js +10 -14
- package/lib/test/limits.test.js.map +1 -1
- package/lib/test/queryable.test.js +1 -5
- package/lib/test/queryable.test.js.map +1 -1
- package/lib/test/setup.d.ts.map +1 -1
- package/lib/test/setup.js +4 -4
- package/lib/test/setup.js.map +1 -1
- package/lib/test/subscription.test.js +5 -9
- package/lib/test/subscription.test.js.map +1 -1
- package/lib/test/tools.test.js +2 -6
- package/lib/test/tools.test.js.map +1 -1
- package/lib/test/util.test.d.ts +2 -0
- package/lib/test/util.test.d.ts.map +1 -0
- package/lib/test/util.test.js +31 -0
- package/lib/test/util.test.js.map +1 -0
- package/lib/util/util.d.ts +19 -0
- package/lib/util/util.d.ts.map +1 -1
- package/lib/util/util.js +26 -1
- package/lib/util/util.js.map +1 -1
- package/package.json +7 -9
- package/src/test/disableForeignKeyConstraint.test.ts +0 -1
- package/src/test/fts.test.ts +7 -1
- package/src/test/limits.test.ts +0 -1
- package/src/test/queryable.test.ts +0 -1
- package/src/test/setup.ts +5 -4
- package/src/test/subscription.test.ts +0 -1
- package/src/test/tools.test.ts +0 -1
- package/src/test/util.test.ts +34 -0
- package/src/util/util.ts +29 -1
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const expect_1 = __importDefault(require("expect"));
|
|
7
3
|
const graphql_1 = require("graphql");
|
|
8
4
|
const model_schema_1 = require("../model.schema");
|
|
9
5
|
const setup_1 = require("./setup");
|
|
@@ -22,11 +18,11 @@ describe('@disableForeignKeyConstraint', function () {
|
|
|
22
18
|
from: Account @disableForeignKeyConstraint
|
|
23
19
|
}
|
|
24
20
|
`);
|
|
25
|
-
(
|
|
26
|
-
(
|
|
21
|
+
expect(m.Transfer).toBeDefined();
|
|
22
|
+
expect(m.Transfer.kind).toBe('entity');
|
|
27
23
|
if (m.Transfer.kind === 'entity') {
|
|
28
24
|
let fromProp = m.Transfer.properties.from;
|
|
29
|
-
(
|
|
25
|
+
expect(fromProp.type).toEqual({
|
|
30
26
|
kind: 'fk',
|
|
31
27
|
entity: 'Account',
|
|
32
28
|
disableConstraint: true,
|
|
@@ -34,7 +30,7 @@ describe('@disableForeignKeyConstraint', function () {
|
|
|
34
30
|
}
|
|
35
31
|
});
|
|
36
32
|
it('rejects non-nullable FK field', function () {
|
|
37
|
-
(
|
|
33
|
+
expect(() => model(`
|
|
38
34
|
type Account @entity {
|
|
39
35
|
id: ID!
|
|
40
36
|
}
|
|
@@ -45,7 +41,7 @@ describe('@disableForeignKeyConstraint', function () {
|
|
|
45
41
|
`)).toThrow(model_schema_1.SchemaError);
|
|
46
42
|
});
|
|
47
43
|
it('rejects directive on scalar field', function () {
|
|
48
|
-
(
|
|
44
|
+
expect(() => model(`
|
|
49
45
|
type Account @entity {
|
|
50
46
|
id: ID!
|
|
51
47
|
name: String @disableForeignKeyConstraint
|
|
@@ -53,7 +49,7 @@ describe('@disableForeignKeyConstraint', function () {
|
|
|
53
49
|
`)).toThrow(model_schema_1.SchemaError);
|
|
54
50
|
});
|
|
55
51
|
it('rejects directive on enum field', function () {
|
|
56
|
-
(
|
|
52
|
+
expect(() => model(`
|
|
57
53
|
enum Status { ACTIVE INACTIVE }
|
|
58
54
|
type Account @entity {
|
|
59
55
|
id: ID!
|
|
@@ -62,7 +58,7 @@ describe('@disableForeignKeyConstraint', function () {
|
|
|
62
58
|
`)).toThrow(model_schema_1.SchemaError);
|
|
63
59
|
});
|
|
64
60
|
it('rejects directive on list (derivedFrom) field', function () {
|
|
65
|
-
(
|
|
61
|
+
expect(() => model(`
|
|
66
62
|
type Account @entity {
|
|
67
63
|
id: ID!
|
|
68
64
|
transfers: [Transfer!] @derivedFrom(field: "from") @disableForeignKeyConstraint
|
|
@@ -74,7 +70,7 @@ describe('@disableForeignKeyConstraint', function () {
|
|
|
74
70
|
`)).toThrow(model_schema_1.SchemaError);
|
|
75
71
|
});
|
|
76
72
|
it('rejects directive on @derivedFrom lookup field', function () {
|
|
77
|
-
(
|
|
73
|
+
expect(() => model(`
|
|
78
74
|
type Account @entity {
|
|
79
75
|
id: ID!
|
|
80
76
|
profile: Profile @derivedFrom(field: "account") @disableForeignKeyConstraint
|
|
@@ -86,7 +82,7 @@ describe('@disableForeignKeyConstraint', function () {
|
|
|
86
82
|
`)).toThrow(model_schema_1.SchemaError);
|
|
87
83
|
});
|
|
88
84
|
it('rejects directive on non-entity type', function () {
|
|
89
|
-
(
|
|
85
|
+
expect(() => model(`
|
|
90
86
|
type Account @entity {
|
|
91
87
|
id: ID!
|
|
92
88
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"disableForeignKeyConstraint.test.js","sourceRoot":"","sources":["../../src/test/disableForeignKeyConstraint.test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"disableForeignKeyConstraint.test.js","sourceRoot":"","sources":["../../src/test/disableForeignKeyConstraint.test.ts"],"names":[],"mappings":"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"}
|
package/lib/test/fts.test.js
CHANGED
|
@@ -4,7 +4,13 @@ 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
|
-
|
|
7
|
+
// TODO: FTS tests have been disabled since 2022-08-17 (Eldar Gabdullin, PR #95 "New openreader")
|
|
8
|
+
// via the `isCockroach() || describe.skip(...)` pattern which never actually ran them —
|
|
9
|
+
// on cockroach `||` short-circuited, on postgres `describe.skip` registered the suite as skipped.
|
|
10
|
+
// Re-enabling via `describe.skipIf(isCockroach())` revealed schema drift: the generated GraphQL
|
|
11
|
+
// lacks a `search` field now, so `Cannot query field "search" on type "Query"` is thrown.
|
|
12
|
+
// Keeping unconditionally skipped until the FTS pipeline is revisited.
|
|
13
|
+
describe.skip('full text search', function () {
|
|
8
14
|
(0, setup_1.useDatabase)([
|
|
9
15
|
`create table foo (
|
|
10
16
|
id text primary key,
|
package/lib/test/fts.test.js.map
CHANGED
|
@@ -1 +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,
|
|
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,iGAAiG;AACjG,wFAAwF;AACxF,kGAAkG;AAClG,gGAAgG;AAChG,0FAA0F;AAC1F,uEAAuE;AACvE,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE;IAC9B,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"}
|
package/lib/test/limits.test.js
CHANGED
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const expect_1 = __importDefault(require("expect"));
|
|
7
3
|
const setup_1 = require("./setup");
|
|
8
4
|
const dialect_1 = require("../dialect");
|
|
9
5
|
describe('response size limits', function () {
|
|
@@ -63,10 +59,10 @@ describe('response size limits', function () {
|
|
|
63
59
|
}
|
|
64
60
|
}
|
|
65
61
|
`);
|
|
66
|
-
(
|
|
62
|
+
expect(result).toMatchObject({
|
|
67
63
|
data: null,
|
|
68
64
|
errors: [
|
|
69
|
-
|
|
65
|
+
expect.objectContaining({ message: 'response might exceed the size limit', path: ['order1s'] })
|
|
70
66
|
]
|
|
71
67
|
});
|
|
72
68
|
});
|
|
@@ -113,10 +109,10 @@ describe('response size limits', function () {
|
|
|
113
109
|
}
|
|
114
110
|
}
|
|
115
111
|
`);
|
|
116
|
-
(
|
|
112
|
+
expect(result).toEqual({
|
|
117
113
|
data: null,
|
|
118
114
|
errors: [
|
|
119
|
-
|
|
115
|
+
expect.objectContaining({
|
|
120
116
|
message: 'response might exceed the size limit',
|
|
121
117
|
path: ['order3s']
|
|
122
118
|
})
|
|
@@ -153,7 +149,7 @@ describe('response size limits', function () {
|
|
|
153
149
|
}
|
|
154
150
|
`, {
|
|
155
151
|
errors: [
|
|
156
|
-
|
|
152
|
+
expect.objectContaining({
|
|
157
153
|
message: 'only 3 root fields allowed, but got 4'
|
|
158
154
|
})
|
|
159
155
|
]
|
|
@@ -170,10 +166,10 @@ describe('response size limits', function () {
|
|
|
170
166
|
}
|
|
171
167
|
}
|
|
172
168
|
`);
|
|
173
|
-
(
|
|
169
|
+
expect(result).toMatchObject({
|
|
174
170
|
data: null,
|
|
175
171
|
errors: [
|
|
176
|
-
|
|
172
|
+
expect.objectContaining({ message: 'response might exceed the size limit', path: ['order1s'] })
|
|
177
173
|
]
|
|
178
174
|
});
|
|
179
175
|
});
|
|
@@ -220,10 +216,10 @@ describe('response size limits', function () {
|
|
|
220
216
|
}
|
|
221
217
|
}
|
|
222
218
|
`);
|
|
223
|
-
(
|
|
219
|
+
expect(result).toEqual({
|
|
224
220
|
data: null,
|
|
225
221
|
errors: [
|
|
226
|
-
|
|
222
|
+
expect.objectContaining({
|
|
227
223
|
message: 'response might exceed the size limit',
|
|
228
224
|
path: ['order3s']
|
|
229
225
|
})
|
|
@@ -260,7 +256,7 @@ describe('response size limits', function () {
|
|
|
260
256
|
}
|
|
261
257
|
`, {
|
|
262
258
|
errors: [
|
|
263
|
-
|
|
259
|
+
expect.objectContaining({
|
|
264
260
|
message: 'only 3 root fields allowed, but got 4'
|
|
265
261
|
})
|
|
266
262
|
]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"limits.test.js","sourceRoot":"","sources":["../../src/test/limits.test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"limits.test.js","sourceRoot":"","sources":["../../src/test/limits.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const expect_1 = __importDefault(require("expect"));
|
|
7
3
|
const setup_1 = require("./setup");
|
|
8
4
|
describe('queryable interfaces', function () {
|
|
9
5
|
(0, setup_1.useDatabase)([
|
|
@@ -264,7 +260,7 @@ describe('queryable interfaces', function () {
|
|
|
264
260
|
}
|
|
265
261
|
}
|
|
266
262
|
`, {
|
|
267
|
-
numbers:
|
|
263
|
+
numbers: expect.arrayContaining([
|
|
268
264
|
{ __typename: 'One', id: '1-1' },
|
|
269
265
|
{ __typename: 'Two', id: '2-1' }
|
|
270
266
|
])
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queryable.test.js","sourceRoot":"","sources":["../../src/test/queryable.test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"queryable.test.js","sourceRoot":"","sources":["../../src/test/queryable.test.ts"],"names":[],"mappings":"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"}
|
package/lib/test/setup.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/test/setup.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/test/setup.ts"],"names":[],"mappings":"AAIA,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,CAqBlF"}
|
package/lib/test/setup.js
CHANGED
|
@@ -47,7 +47,7 @@ function databaseDelete() {
|
|
|
47
47
|
});
|
|
48
48
|
}
|
|
49
49
|
function useDatabase(sql) {
|
|
50
|
-
|
|
50
|
+
beforeAll(async () => {
|
|
51
51
|
await databaseDelete();
|
|
52
52
|
await databaseExecute(sql);
|
|
53
53
|
});
|
|
@@ -56,7 +56,7 @@ function useServer(schema, options) {
|
|
|
56
56
|
let client = new gql_test_client_1.Client('not defined');
|
|
57
57
|
let db = new pg_1.Pool(exports.db_config);
|
|
58
58
|
let info;
|
|
59
|
-
|
|
59
|
+
beforeAll(async () => {
|
|
60
60
|
info = await (0, server_1.serve)({
|
|
61
61
|
connection: db,
|
|
62
62
|
model: (0, model_schema_1.buildModel)((0, model_schema_1.buildSchema)((0, graphql_1.parse)(schema))),
|
|
@@ -70,8 +70,8 @@ function useServer(schema, options) {
|
|
|
70
70
|
});
|
|
71
71
|
client.endpoint = `http://localhost:${info.port}/graphql`;
|
|
72
72
|
});
|
|
73
|
-
|
|
74
|
-
|
|
73
|
+
afterAll(() => info?.close());
|
|
74
|
+
afterAll(() => db.end());
|
|
75
75
|
return client;
|
|
76
76
|
}
|
|
77
77
|
//# sourceMappingURL=setup.js.map
|
package/lib/test/setup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/test/setup.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/test/setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
const util_internal_1 = require("@subsquid/util-internal");
|
|
7
|
-
const expect_1 = __importDefault(require("expect"));
|
|
8
4
|
const setup_1 = require("./setup");
|
|
9
5
|
describe("subscriptions", function () {
|
|
10
6
|
(0, setup_1.useDatabase)([
|
|
@@ -38,12 +34,12 @@ describe("subscriptions", function () {
|
|
|
38
34
|
}
|
|
39
35
|
`, async (take) => {
|
|
40
36
|
await (0, util_internal_1.wait)(100);
|
|
41
|
-
(
|
|
37
|
+
expect(await take()).toEqual({ data: { orders: [] } });
|
|
42
38
|
await (0, setup_1.databaseExecute)([
|
|
43
39
|
`insert into "order" (id, kind) values ('1', 'list')`,
|
|
44
40
|
`insert into "order" (id, kind) values ('2', 'foo')`,
|
|
45
41
|
]);
|
|
46
|
-
(
|
|
42
|
+
expect(await take()).toEqual({
|
|
47
43
|
data: {
|
|
48
44
|
orders: [{ id: '1', name: null, items: [] }]
|
|
49
45
|
}
|
|
@@ -52,7 +48,7 @@ describe("subscriptions", function () {
|
|
|
52
48
|
update "order" set name = 'hello' where id in ('1', '2');
|
|
53
49
|
insert into item (id, "order_id", name) values ('1-1', '1', '123')
|
|
54
50
|
`]);
|
|
55
|
-
(
|
|
51
|
+
expect(await take()).toEqual({
|
|
56
52
|
data: {
|
|
57
53
|
orders: [
|
|
58
54
|
{ id: '1', name: 'hello', items: [{ name: '123' }] }
|
|
@@ -77,7 +73,7 @@ describe("subscriptions", function () {
|
|
|
77
73
|
}
|
|
78
74
|
`, async (take) => {
|
|
79
75
|
await (0, util_internal_1.wait)(100);
|
|
80
|
-
(
|
|
76
|
+
expect(await take()).toEqual({
|
|
81
77
|
data: {
|
|
82
78
|
third: {
|
|
83
79
|
name: null,
|
|
@@ -93,7 +89,7 @@ describe("subscriptions", function () {
|
|
|
93
89
|
insert into item (id, "order_id", name) values ('3-2', '3', 'world');
|
|
94
90
|
commit;
|
|
95
91
|
`]);
|
|
96
|
-
(
|
|
92
|
+
expect(await take()).toEqual({
|
|
97
93
|
data: {
|
|
98
94
|
third: {
|
|
99
95
|
name: 'foo',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscription.test.js","sourceRoot":"","sources":["../../src/test/subscription.test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"subscription.test.js","sourceRoot":"","sources":["../../src/test/subscription.test.ts"],"names":[],"mappings":";;AAAA,2DAA4C;AAC5C,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,GAAG,CAAC,CAAA;YACf,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,EAAC,IAAI,EAAE,EAAC,MAAM,EAAE,EAAE,EAAC,EAAC,CAAC,CAAA;YAClD,MAAM,IAAA,uBAAe,EAAC;gBAClB,qDAAqD;gBACrD,oDAAoD;aACvD,CAAC,CAAA;YACF,MAAM,CAAC,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,MAAM,CAAC,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,GAAG,CAAC,CAAA;YACf,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC;gBACzB,IAAI,EAAE;oBACF,KAAK,EAAE;wBACH,IAAI,EAAE,IAAI;wBACV,KAAK,EAAE;4BACH,EAAC,IAAI,EAAE,OAAO,EAAC;yBAClB;qBACJ;iBACJ;aACJ,CAAC,CAAA;YACF,MAAM,IAAA,uBAAe,EAAC,CAAC;;;;;aAKtB,CAAC,CAAC,CAAA;YACH,MAAM,CAAC,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"}
|
package/lib/test/tools.test.js
CHANGED
|
@@ -22,12 +22,8 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
22
22
|
__setModuleDefault(result, mod);
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
-
};
|
|
28
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
26
|
const path = __importStar(require("path"));
|
|
30
|
-
const expect_1 = __importDefault(require("expect"));
|
|
31
27
|
const tools_1 = require("../tools");
|
|
32
28
|
function fixture(name) {
|
|
33
29
|
return path.join(__dirname, '../../fixtures', name);
|
|
@@ -36,14 +32,14 @@ describe('tools', function () {
|
|
|
36
32
|
describe('loadModel()', function () {
|
|
37
33
|
it('loads model from a single file', function () {
|
|
38
34
|
let model = (0, tools_1.loadModel)(fixture('schema.graphql'));
|
|
39
|
-
(
|
|
35
|
+
expect(model).toMatchObject({
|
|
40
36
|
Account: { kind: 'entity' },
|
|
41
37
|
HistoricalBalance: { kind: 'entity' }
|
|
42
38
|
});
|
|
43
39
|
});
|
|
44
40
|
it('loads model from a directory', function () {
|
|
45
41
|
let model = (0, tools_1.loadModel)(fixture('schema'));
|
|
46
|
-
(
|
|
42
|
+
expect(model).toMatchObject({
|
|
47
43
|
Account: { kind: 'entity' },
|
|
48
44
|
HistoricalBalance: { kind: 'entity' }
|
|
49
45
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.test.js","sourceRoot":"","sources":["../../src/test/tools.test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tools.test.js","sourceRoot":"","sources":["../../src/test/tools.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA4B;AAC5B,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,MAAM,CAAC,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,MAAM,CAAC,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 @@
|
|
|
1
|
+
{"version":3,"file":"util.test.d.ts","sourceRoot":"","sources":["../../src/test/util.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const util_naming_1 = require("@subsquid/util-naming");
|
|
4
|
+
const util_1 = require("../util/util");
|
|
5
|
+
describe('toTable', function () {
|
|
6
|
+
it('snake_cases short entity names unchanged', function () {
|
|
7
|
+
expect((0, util_1.toTable)('Account')).toBe('account');
|
|
8
|
+
expect((0, util_1.toTable)('TokenTransfer')).toBe('token_transfer');
|
|
9
|
+
});
|
|
10
|
+
it('truncates names that exceed the identifier limit, matching typeorm-codegen', function () {
|
|
11
|
+
// The physical table typeorm-codegen creates for this entity.
|
|
12
|
+
const entity = 'LevrConfigProviderSchemaLiquidationBufferBpsOverUnderUpdated';
|
|
13
|
+
const full = (0, util_naming_1.toSnakeCase)(entity);
|
|
14
|
+
expect(full.length).toBeGreaterThan(util_1.POSTGRES_MAX_IDENTIFIER_LENGTH);
|
|
15
|
+
const table = (0, util_1.toTable)(entity);
|
|
16
|
+
expect(table.length).toBe(util_1.POSTGRES_MAX_IDENTIFIER_LENGTH);
|
|
17
|
+
expect(table).toBe(full.slice(0, util_1.POSTGRES_MAX_IDENTIFIER_LENGTH));
|
|
18
|
+
expect(table).toBe('levr_config_provider_schema_liquidation_buffer_bps_over_under_u');
|
|
19
|
+
});
|
|
20
|
+
it('leaves a name exactly at the limit unchanged (boundary)', function () {
|
|
21
|
+
const entity = 'A' + 'a'.repeat(62); // snake length 63
|
|
22
|
+
expect((0, util_naming_1.toSnakeCase)(entity).length).toBe(util_1.POSTGRES_MAX_IDENTIFIER_LENGTH);
|
|
23
|
+
expect((0, util_1.toTable)(entity)).toBe((0, util_naming_1.toSnakeCase)(entity));
|
|
24
|
+
});
|
|
25
|
+
it('truncates a name one byte over the limit (boundary)', function () {
|
|
26
|
+
const entity = 'A' + 'a'.repeat(63); // snake length 64
|
|
27
|
+
expect((0, util_naming_1.toSnakeCase)(entity).length).toBe(util_1.POSTGRES_MAX_IDENTIFIER_LENGTH + 1);
|
|
28
|
+
expect((0, util_1.toTable)(entity).length).toBe(util_1.POSTGRES_MAX_IDENTIFIER_LENGTH);
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
//# sourceMappingURL=util.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.test.js","sourceRoot":"","sources":["../../src/test/util.test.ts"],"names":[],"mappings":";;AAAA,uDAAiD;AACjD,uCAAoE;AAGpE,QAAQ,CAAC,SAAS,EAAE;IAChB,EAAE,CAAC,0CAA0C,EAAE;QAC3C,MAAM,CAAC,IAAA,cAAO,EAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAC1C,MAAM,CAAC,IAAA,cAAO,EAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;IAC3D,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,4EAA4E,EAAE;QAC7E,8DAA8D;QAC9D,MAAM,MAAM,GAAG,8DAA8D,CAAA;QAC7E,MAAM,IAAI,GAAG,IAAA,yBAAW,EAAC,MAAM,CAAC,CAAA;QAChC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,qCAA8B,CAAC,CAAA;QAEnE,MAAM,KAAK,GAAG,IAAA,cAAO,EAAC,MAAM,CAAC,CAAA;QAC7B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,qCAA8B,CAAC,CAAA;QACzD,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,qCAA8B,CAAC,CAAC,CAAA;QACjE,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAA;IACzF,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,yDAAyD,EAAE;QAC1D,MAAM,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA,CAAC,kBAAkB;QACtD,MAAM,CAAC,IAAA,yBAAW,EAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,qCAA8B,CAAC,CAAA;QACvE,MAAM,CAAC,IAAA,cAAO,EAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAA,yBAAW,EAAC,MAAM,CAAC,CAAC,CAAA;IACrD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,qDAAqD,EAAE;QACtD,MAAM,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA,CAAC,kBAAkB;QACtD,MAAM,CAAC,IAAA,yBAAW,EAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,qCAA8B,GAAG,CAAC,CAAC,CAAA;QAC3E,MAAM,CAAC,IAAA,cAAO,EAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,qCAA8B,CAAC,CAAA;IACvE,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA"}
|
package/lib/util/util.d.ts
CHANGED
|
@@ -1,4 +1,23 @@
|
|
|
1
1
|
import { Prop } from "../model";
|
|
2
|
+
/**
|
|
3
|
+
* PostgreSQL truncates any identifier longer than `NAMEDATALEN - 1` (63 bytes on
|
|
4
|
+
* a default build) when it is stored in the catalog. `@subsquid/typeorm-codegen`
|
|
5
|
+
* prunes over-long table names to this limit when generating the schema, so the
|
|
6
|
+
* physical table is created with at most this many bytes.
|
|
7
|
+
*
|
|
8
|
+
* We must apply the *same* truncation when building queries, otherwise on a
|
|
9
|
+
* server whose `NAMEDATALEN` is larger than the default we would emit the full,
|
|
10
|
+
* untruncated name — which Postgres would not truncate — and it would miss the
|
|
11
|
+
* (already-pruned) table. Truncating here makes the generated SQL target the
|
|
12
|
+
* right table regardless of the server's `NAMEDATALEN`.
|
|
13
|
+
*
|
|
14
|
+
* GraphQL type names are restricted to ASCII letters, digits and underscores,
|
|
15
|
+
* and `toSnakeCase` keeps them ASCII, so `name.length` below equals the byte
|
|
16
|
+
* length — the unit PostgreSQL's limit is actually measured in.
|
|
17
|
+
*
|
|
18
|
+
* Keep this value in sync with `typeorm-codegen`'s `POSTGRES_MAX_IDENTIFIER_LENGTH`.
|
|
19
|
+
*/
|
|
20
|
+
export declare const POSTGRES_MAX_IDENTIFIER_LENGTH = 63;
|
|
2
21
|
export declare function toColumn(gqlFieldName: string): string;
|
|
3
22
|
export declare function toFkColumn(gqlFieldName: string): string;
|
|
4
23
|
export declare function toTable(entityName: string): string;
|
package/lib/util/util.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/util/util.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,IAAI,EAAC,MAAM,UAAU,CAAA;AAG7B,wBAAgB,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAErD;AAGD,wBAAgB,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAEvD;AAGD,wBAAgB,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAElD;AAGD,wBAAgB,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAEjD;AAGD,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAIxD;AAGD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,CAEhE;AAGD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAEnC;AAGD,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEvD;AAGD,wBAAgB,kBAAkB,CAC9B,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GACjC,IAAI,GAAG,SAAS,CAIlB"}
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/util/util.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,IAAI,EAAC,MAAM,UAAU,CAAA;AAG7B;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,8BAA8B,KAAK,CAAA;AAUhD,wBAAgB,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAErD;AAGD,wBAAgB,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAEvD;AAGD,wBAAgB,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAElD;AAGD,wBAAgB,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAEjD;AAGD,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAIxD;AAGD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,CAEhE;AAGD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAEnC;AAGD,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEvD;AAGD,wBAAgB,kBAAkB,CAC9B,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GACjC,IAAI,GAAG,SAAS,CAIlB"}
|
package/lib/util/util.js
CHANGED
|
@@ -3,6 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.POSTGRES_MAX_IDENTIFIER_LENGTH = void 0;
|
|
6
7
|
exports.toColumn = toColumn;
|
|
7
8
|
exports.toFkColumn = toFkColumn;
|
|
8
9
|
exports.toTable = toTable;
|
|
@@ -14,6 +15,30 @@ exports.toFkIdField = toFkIdField;
|
|
|
14
15
|
exports.getFkPropByIdField = getFkPropByIdField;
|
|
15
16
|
const util_naming_1 = require("@subsquid/util-naming");
|
|
16
17
|
const assert_1 = __importDefault(require("assert"));
|
|
18
|
+
/**
|
|
19
|
+
* PostgreSQL truncates any identifier longer than `NAMEDATALEN - 1` (63 bytes on
|
|
20
|
+
* a default build) when it is stored in the catalog. `@subsquid/typeorm-codegen`
|
|
21
|
+
* prunes over-long table names to this limit when generating the schema, so the
|
|
22
|
+
* physical table is created with at most this many bytes.
|
|
23
|
+
*
|
|
24
|
+
* We must apply the *same* truncation when building queries, otherwise on a
|
|
25
|
+
* server whose `NAMEDATALEN` is larger than the default we would emit the full,
|
|
26
|
+
* untruncated name — which Postgres would not truncate — and it would miss the
|
|
27
|
+
* (already-pruned) table. Truncating here makes the generated SQL target the
|
|
28
|
+
* right table regardless of the server's `NAMEDATALEN`.
|
|
29
|
+
*
|
|
30
|
+
* GraphQL type names are restricted to ASCII letters, digits and underscores,
|
|
31
|
+
* and `toSnakeCase` keeps them ASCII, so `name.length` below equals the byte
|
|
32
|
+
* length — the unit PostgreSQL's limit is actually measured in.
|
|
33
|
+
*
|
|
34
|
+
* Keep this value in sync with `typeorm-codegen`'s `POSTGRES_MAX_IDENTIFIER_LENGTH`.
|
|
35
|
+
*/
|
|
36
|
+
exports.POSTGRES_MAX_IDENTIFIER_LENGTH = 63;
|
|
37
|
+
function truncateIdentifier(name) {
|
|
38
|
+
return name.length > exports.POSTGRES_MAX_IDENTIFIER_LENGTH
|
|
39
|
+
? name.slice(0, exports.POSTGRES_MAX_IDENTIFIER_LENGTH)
|
|
40
|
+
: name;
|
|
41
|
+
}
|
|
17
42
|
function toColumn(gqlFieldName) {
|
|
18
43
|
return (0, util_naming_1.toSnakeCase)(gqlFieldName);
|
|
19
44
|
}
|
|
@@ -21,7 +46,7 @@ function toFkColumn(gqlFieldName) {
|
|
|
21
46
|
return (0, util_naming_1.toSnakeCase)(gqlFieldName) + '_id';
|
|
22
47
|
}
|
|
23
48
|
function toTable(entityName) {
|
|
24
|
-
return (0, util_naming_1.toSnakeCase)(entityName);
|
|
49
|
+
return truncateIdentifier((0, util_naming_1.toSnakeCase)(entityName));
|
|
25
50
|
}
|
|
26
51
|
function ensureArray(item) {
|
|
27
52
|
return Array.isArray(item) ? item : [item];
|
package/lib/util/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/util/util.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/util/util.ts"],"names":[],"mappings":";;;;;;AAiCA,4BAEC;AAGD,gCAEC;AAGD,0BAEC;AAGD,kCAEC;AAGD,sCAIC;AAGD,sCAEC;AAGD,4BAEC;AAGD,kCAEC;AAGD,gDAOC;AAlFD,uDAAiD;AACjD,oDAA2B;AAI3B;;;;;;;;;;;;;;;;;GAiBG;AACU,QAAA,8BAA8B,GAAG,EAAE,CAAA;AAGhD,SAAS,kBAAkB,CAAC,IAAY;IACpC,OAAO,IAAI,CAAC,MAAM,GAAG,sCAA8B;QAC/C,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,sCAA8B,CAAC;QAC/C,CAAC,CAAC,IAAI,CAAA;AACd,CAAC;AAGD,SAAgB,QAAQ,CAAC,YAAoB;IACzC,OAAO,IAAA,yBAAW,EAAC,YAAY,CAAC,CAAA;AACpC,CAAC;AAGD,SAAgB,UAAU,CAAC,YAAoB;IAC3C,OAAO,IAAA,yBAAW,EAAC,YAAY,CAAC,GAAG,KAAK,CAAA;AAC5C,CAAC;AAGD,SAAgB,OAAO,CAAC,UAAkB;IACtC,OAAO,kBAAkB,CAAC,IAAA,yBAAW,EAAC,UAAU,CAAC,CAAC,CAAA;AACtD,CAAC;AAGD,SAAgB,WAAW,CAAI,IAAa;IACxC,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;AAC9C,CAAC;AAGD,SAAgB,aAAa,CAAC,CAAkB;IAC5C,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAW,EAAE,EAAE,CAAC,CAAA;IACjC,IAAA,gBAAM,EAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAA;IAC/B,OAAO,CAAC,CAAA;AACZ,CAAC;AAGD,SAAgB,aAAa,CAAC,IAAY,EAAE,KAAa;IACrD,OAAO,IAAI,SAAS,CAAC,SAAS,IAAI,KAAK,KAAK,EAAE,CAAC,CAAA;AACnD,CAAC;AAGD,SAAgB,QAAQ,CAAI,CAAI;IAC5B,OAAO,CAAC,CAAA;AACZ,CAAC;AAGD,SAAgB,WAAW,CAAC,WAAmB;IAC3C,OAAO,WAAW,GAAG,IAAI,CAAA;AAC7B,CAAC;AAGD,SAAgB,kBAAkB,CAC9B,WAAmB,EACnB,UAAgC;IAEhC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAA;IACjD,IAAI,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IACjD,OAAO,MAAM,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAA;AACzD,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@subsquid/openreader",
|
|
3
|
-
"version": "5.5.
|
|
3
|
+
"version": "5.5.1",
|
|
4
4
|
"description": "GraphQL server for postgres-compatible databases",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"graphql",
|
|
@@ -23,10 +23,10 @@
|
|
|
23
23
|
"dependencies": {
|
|
24
24
|
"@graphql-tools/merge": "^9.0.1",
|
|
25
25
|
"@subsquid/graphiql-console": "^0.3.0",
|
|
26
|
-
"@subsquid/logger": "^1.
|
|
27
|
-
"@subsquid/util-internal": "^3.
|
|
26
|
+
"@subsquid/logger": "^1.6.0",
|
|
27
|
+
"@subsquid/util-internal": "^3.3.1",
|
|
28
28
|
"@subsquid/util-internal-commander": "^1.4.0",
|
|
29
|
-
"@subsquid/util-internal-hex": "^1.2.
|
|
29
|
+
"@subsquid/util-internal-hex": "^1.2.3",
|
|
30
30
|
"@subsquid/util-internal-http-server": "^2.0.1",
|
|
31
31
|
"@subsquid/util-naming": "^1.3.0",
|
|
32
32
|
"@subsquid/apollo-server-core": "^3.14.0",
|
|
@@ -52,15 +52,13 @@
|
|
|
52
52
|
"devDependencies": {
|
|
53
53
|
"@types/deep-equal": "^1.0.4",
|
|
54
54
|
"@types/express": "^4.17.21",
|
|
55
|
-
"@types/
|
|
56
|
-
"@types/node": "^18.18.14",
|
|
55
|
+
"@types/node": "^24.0.0",
|
|
57
56
|
"@types/pg": "^8.10.9",
|
|
58
57
|
"@types/ws": "^8.5.10",
|
|
59
58
|
"dotenv": "^16.3.1",
|
|
60
|
-
"expect": "^29.7.0",
|
|
61
59
|
"gql-test-client": "^0.0.0",
|
|
62
|
-
"
|
|
63
|
-
"
|
|
60
|
+
"typescript": "5.5.4",
|
|
61
|
+
"vitest": "4.1.5",
|
|
64
62
|
"@types/inflected": "^2.1.3"
|
|
65
63
|
},
|
|
66
64
|
"scripts": {
|
package/src/test/fts.test.ts
CHANGED
|
@@ -6,7 +6,13 @@ function tsvector(columns: string[]) {
|
|
|
6
6
|
}
|
|
7
7
|
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
// TODO: FTS tests have been disabled since 2022-08-17 (Eldar Gabdullin, PR #95 "New openreader")
|
|
10
|
+
// via the `isCockroach() || describe.skip(...)` pattern which never actually ran them —
|
|
11
|
+
// on cockroach `||` short-circuited, on postgres `describe.skip` registered the suite as skipped.
|
|
12
|
+
// Re-enabling via `describe.skipIf(isCockroach())` revealed schema drift: the generated GraphQL
|
|
13
|
+
// lacks a `search` field now, so `Cannot query field "search" on type "Query"` is thrown.
|
|
14
|
+
// Keeping unconditionally skipped until the FTS pipeline is revisited.
|
|
15
|
+
describe.skip('full text search', function () {
|
|
10
16
|
useDatabase([
|
|
11
17
|
`create table foo (
|
|
12
18
|
id text primary key,
|
package/src/test/limits.test.ts
CHANGED
package/src/test/setup.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/// <reference types="vitest/globals" />
|
|
1
2
|
import {createLogger} from '@subsquid/logger'
|
|
2
3
|
import {assertNotNull} from "@subsquid/util-internal"
|
|
3
4
|
import {ListeningServer} from "@subsquid/util-internal-http-server"
|
|
@@ -53,7 +54,7 @@ export function databaseDelete(): Promise<void> {
|
|
|
53
54
|
|
|
54
55
|
|
|
55
56
|
export function useDatabase(sql: string[]): void {
|
|
56
|
-
|
|
57
|
+
beforeAll(async () => {
|
|
57
58
|
await databaseDelete()
|
|
58
59
|
await databaseExecute(sql)
|
|
59
60
|
})
|
|
@@ -64,7 +65,7 @@ export function useServer(schema: string, options?: Partial<ServerOptions>): Cli
|
|
|
64
65
|
let client = new Client('not defined')
|
|
65
66
|
let db = new Pool(db_config)
|
|
66
67
|
let info: ListeningServer | undefined
|
|
67
|
-
|
|
68
|
+
beforeAll(async () => {
|
|
68
69
|
info = await serve({
|
|
69
70
|
connection: db,
|
|
70
71
|
model: buildModel(buildSchema(parse(schema))),
|
|
@@ -78,7 +79,7 @@ export function useServer(schema: string, options?: Partial<ServerOptions>): Cli
|
|
|
78
79
|
})
|
|
79
80
|
client.endpoint = `http://localhost:${info.port}/graphql`
|
|
80
81
|
})
|
|
81
|
-
|
|
82
|
-
|
|
82
|
+
afterAll(() => info?.close())
|
|
83
|
+
afterAll(() => db.end())
|
|
83
84
|
return client
|
|
84
85
|
}
|
package/src/test/tools.test.ts
CHANGED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import {toSnakeCase} from '@subsquid/util-naming'
|
|
2
|
+
import {POSTGRES_MAX_IDENTIFIER_LENGTH, toTable} from '../util/util'
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
describe('toTable', function() {
|
|
6
|
+
it('snake_cases short entity names unchanged', function() {
|
|
7
|
+
expect(toTable('Account')).toBe('account')
|
|
8
|
+
expect(toTable('TokenTransfer')).toBe('token_transfer')
|
|
9
|
+
})
|
|
10
|
+
|
|
11
|
+
it('truncates names that exceed the identifier limit, matching typeorm-codegen', function() {
|
|
12
|
+
// The physical table typeorm-codegen creates for this entity.
|
|
13
|
+
const entity = 'LevrConfigProviderSchemaLiquidationBufferBpsOverUnderUpdated'
|
|
14
|
+
const full = toSnakeCase(entity)
|
|
15
|
+
expect(full.length).toBeGreaterThan(POSTGRES_MAX_IDENTIFIER_LENGTH)
|
|
16
|
+
|
|
17
|
+
const table = toTable(entity)
|
|
18
|
+
expect(table.length).toBe(POSTGRES_MAX_IDENTIFIER_LENGTH)
|
|
19
|
+
expect(table).toBe(full.slice(0, POSTGRES_MAX_IDENTIFIER_LENGTH))
|
|
20
|
+
expect(table).toBe('levr_config_provider_schema_liquidation_buffer_bps_over_under_u')
|
|
21
|
+
})
|
|
22
|
+
|
|
23
|
+
it('leaves a name exactly at the limit unchanged (boundary)', function() {
|
|
24
|
+
const entity = 'A' + 'a'.repeat(62) // snake length 63
|
|
25
|
+
expect(toSnakeCase(entity).length).toBe(POSTGRES_MAX_IDENTIFIER_LENGTH)
|
|
26
|
+
expect(toTable(entity)).toBe(toSnakeCase(entity))
|
|
27
|
+
})
|
|
28
|
+
|
|
29
|
+
it('truncates a name one byte over the limit (boundary)', function() {
|
|
30
|
+
const entity = 'A' + 'a'.repeat(63) // snake length 64
|
|
31
|
+
expect(toSnakeCase(entity).length).toBe(POSTGRES_MAX_IDENTIFIER_LENGTH + 1)
|
|
32
|
+
expect(toTable(entity).length).toBe(POSTGRES_MAX_IDENTIFIER_LENGTH)
|
|
33
|
+
})
|
|
34
|
+
})
|
package/src/util/util.ts
CHANGED
|
@@ -3,6 +3,34 @@ import assert from "assert"
|
|
|
3
3
|
import {Prop} from "../model"
|
|
4
4
|
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* PostgreSQL truncates any identifier longer than `NAMEDATALEN - 1` (63 bytes on
|
|
8
|
+
* a default build) when it is stored in the catalog. `@subsquid/typeorm-codegen`
|
|
9
|
+
* prunes over-long table names to this limit when generating the schema, so the
|
|
10
|
+
* physical table is created with at most this many bytes.
|
|
11
|
+
*
|
|
12
|
+
* We must apply the *same* truncation when building queries, otherwise on a
|
|
13
|
+
* server whose `NAMEDATALEN` is larger than the default we would emit the full,
|
|
14
|
+
* untruncated name — which Postgres would not truncate — and it would miss the
|
|
15
|
+
* (already-pruned) table. Truncating here makes the generated SQL target the
|
|
16
|
+
* right table regardless of the server's `NAMEDATALEN`.
|
|
17
|
+
*
|
|
18
|
+
* GraphQL type names are restricted to ASCII letters, digits and underscores,
|
|
19
|
+
* and `toSnakeCase` keeps them ASCII, so `name.length` below equals the byte
|
|
20
|
+
* length — the unit PostgreSQL's limit is actually measured in.
|
|
21
|
+
*
|
|
22
|
+
* Keep this value in sync with `typeorm-codegen`'s `POSTGRES_MAX_IDENTIFIER_LENGTH`.
|
|
23
|
+
*/
|
|
24
|
+
export const POSTGRES_MAX_IDENTIFIER_LENGTH = 63
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
function truncateIdentifier(name: string): string {
|
|
28
|
+
return name.length > POSTGRES_MAX_IDENTIFIER_LENGTH
|
|
29
|
+
? name.slice(0, POSTGRES_MAX_IDENTIFIER_LENGTH)
|
|
30
|
+
: name
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
|
|
6
34
|
export function toColumn(gqlFieldName: string): string {
|
|
7
35
|
return toSnakeCase(gqlFieldName)
|
|
8
36
|
}
|
|
@@ -14,7 +42,7 @@ export function toFkColumn(gqlFieldName: string): string {
|
|
|
14
42
|
|
|
15
43
|
|
|
16
44
|
export function toTable(entityName: string): string {
|
|
17
|
-
return toSnakeCase(entityName)
|
|
45
|
+
return truncateIdentifier(toSnakeCase(entityName))
|
|
18
46
|
}
|
|
19
47
|
|
|
20
48
|
|