@subsquid/openreader 0.3.3 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/gql/schema.d.ts.map +1 -1
- package/dist/gql/schema.js +116 -17
- package/dist/gql/schema.js.map +1 -1
- package/dist/model.d.ts +8 -0
- package/dist/model.d.ts.map +1 -1
- package/dist/model.tools.d.ts +1 -0
- package/dist/model.tools.d.ts.map +1 -1
- package/dist/model.tools.js +27 -1
- package/dist/model.tools.js.map +1 -1
- package/package.json +1 -1
- package/src/gql/schema.ts +145 -19
- package/src/model.tools.ts +28 -0
- package/src/model.ts +12 -0
package/dist/gql/schema.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/gql/schema.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/gql/schema.ts"],"names":[],"mappings":"AAEA,OAAO,EAEH,YAAY,EAWZ,aAAa,EAIhB,MAAM,SAAS,CAAA;AAChB,OAAO,EAAQ,KAAK,EAAiB,MAAM,UAAU,CAAA;AAiBrD,wBAAgB,WAAW,CAAC,GAAG,EAAE,YAAY,GAAG,aAAa,CAO5D;AAGD,wBAAgB,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,KAAK,CAWvD;AAoZD,qBAAa,WAAY,SAAQ,KAAK;CAAG"}
|
package/dist/gql/schema.js
CHANGED
|
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.SchemaError = exports.buildModel = exports.buildSchema = void 0;
|
|
7
|
+
const util_1 = require("@subsquid/util");
|
|
7
8
|
const assert_1 = __importDefault(require("assert"));
|
|
8
9
|
const graphql_1 = require("graphql");
|
|
9
10
|
const model_tools_1 = require("../model.tools");
|
|
@@ -12,6 +13,7 @@ const baseSchema = (0, graphql_1.buildASTSchema)((0, graphql_1.parse)(`
|
|
|
12
13
|
directive @entity on OBJECT
|
|
13
14
|
directive @derivedFrom(field: String!) on FIELD_DEFINITION
|
|
14
15
|
directive @unique on FIELD_DEFINITION
|
|
16
|
+
directive @index(fields: [String!] unique: Boolean) on OBJECT | FIELD_DEFINITION
|
|
15
17
|
directive @fulltext(query: String!) on FIELD_DEFINITION
|
|
16
18
|
directive @variant on OBJECT # legacy
|
|
17
19
|
directive @jsonField on OBJECT # legacy
|
|
@@ -50,12 +52,20 @@ function addEntityOrJsonObjectOrInterface(model, type) {
|
|
|
50
52
|
: type instanceof graphql_1.GraphQLInterfaceType ? 'interface' : 'object';
|
|
51
53
|
let properties = {};
|
|
52
54
|
let interfaces = [];
|
|
55
|
+
let indexes = type instanceof graphql_1.GraphQLObjectType ? checkEntityIndexes(type) : [];
|
|
53
56
|
let description = type.description || undefined;
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
57
|
+
switch (kind) {
|
|
58
|
+
case 'entity':
|
|
59
|
+
model[type.name] = { kind, properties, description, interfaces, indexes };
|
|
60
|
+
break;
|
|
61
|
+
case 'object':
|
|
62
|
+
model[type.name] = { kind, properties, description, interfaces };
|
|
63
|
+
break;
|
|
64
|
+
case 'interface':
|
|
65
|
+
model[type.name] = { kind, properties, description };
|
|
66
|
+
break;
|
|
67
|
+
default:
|
|
68
|
+
throw (0, util_1.unexpectedCase)(kind);
|
|
59
69
|
}
|
|
60
70
|
let fields = type.getFields();
|
|
61
71
|
if (kind == 'entity') {
|
|
@@ -76,12 +86,17 @@ function addEntityOrJsonObjectOrInterface(model, type) {
|
|
|
76
86
|
}
|
|
77
87
|
for (let key in fields) {
|
|
78
88
|
let f = fields[key];
|
|
89
|
+
handleFulltextDirective(model, type, f);
|
|
90
|
+
let propName = `${type.name}.${f.name}`;
|
|
79
91
|
let fieldType = f.type;
|
|
80
92
|
let nullable = true;
|
|
81
93
|
let description = f.description || undefined;
|
|
82
|
-
let
|
|
83
|
-
let
|
|
84
|
-
|
|
94
|
+
let derivedFrom = checkDerivedFrom(type, f);
|
|
95
|
+
let index = checkFieldIndex(type, f);
|
|
96
|
+
let unique = index?.unique || false;
|
|
97
|
+
if (index) {
|
|
98
|
+
indexes.push(index);
|
|
99
|
+
}
|
|
85
100
|
if (fieldType instanceof graphql_1.GraphQLNonNull) {
|
|
86
101
|
nullable = false;
|
|
87
102
|
fieldType = fieldType.ofType;
|
|
@@ -122,12 +137,6 @@ function addEntityOrJsonObjectOrInterface(model, type) {
|
|
|
122
137
|
}
|
|
123
138
|
else if (fieldType instanceof graphql_1.GraphQLObjectType) {
|
|
124
139
|
if (isEntityType(fieldType)) {
|
|
125
|
-
let derivedFrom = f.astNode?.directives?.filter(d => d.name.value == 'derivedFrom').map(d => {
|
|
126
|
-
let valueNode = d.arguments?.[0].value;
|
|
127
|
-
(0, assert_1.default)(valueNode != null);
|
|
128
|
-
(0, assert_1.default)(valueNode.kind == 'StringValue');
|
|
129
|
-
return valueNode.value;
|
|
130
|
-
})[0];
|
|
131
140
|
switch (list.nulls.length) {
|
|
132
141
|
case 0:
|
|
133
142
|
if (derivedFrom) {
|
|
@@ -138,7 +147,7 @@ function addEntityOrJsonObjectOrInterface(model, type) {
|
|
|
138
147
|
type: {
|
|
139
148
|
kind: 'lookup',
|
|
140
149
|
entity: fieldType.name,
|
|
141
|
-
field: derivedFrom
|
|
150
|
+
field: derivedFrom.field
|
|
142
151
|
},
|
|
143
152
|
nullable,
|
|
144
153
|
description
|
|
@@ -167,7 +176,7 @@ function addEntityOrJsonObjectOrInterface(model, type) {
|
|
|
167
176
|
type: {
|
|
168
177
|
kind: 'list-lookup',
|
|
169
178
|
entity: fieldType.name,
|
|
170
|
-
field: derivedFrom
|
|
179
|
+
field: derivedFrom.field
|
|
171
180
|
},
|
|
172
181
|
nullable: false,
|
|
173
182
|
description
|
|
@@ -262,11 +271,18 @@ function handleFulltextDirective(model, object, f) {
|
|
|
262
271
|
});
|
|
263
272
|
}
|
|
264
273
|
function isStringField(f) {
|
|
274
|
+
return asScalarField(f)?.name == 'String';
|
|
275
|
+
}
|
|
276
|
+
function asScalarField(f) {
|
|
277
|
+
let type = asNonNull(f);
|
|
278
|
+
return type instanceof graphql_1.GraphQLScalarType ? type : undefined;
|
|
279
|
+
}
|
|
280
|
+
function asNonNull(f) {
|
|
265
281
|
let type = f.type;
|
|
266
282
|
if (type instanceof graphql_1.GraphQLNonNull) {
|
|
267
283
|
type = type.ofType;
|
|
268
284
|
}
|
|
269
|
-
return type
|
|
285
|
+
return type;
|
|
270
286
|
}
|
|
271
287
|
function unwrapList(type) {
|
|
272
288
|
let nulls = [];
|
|
@@ -293,6 +309,89 @@ function wrapWithList(nulls, dataType) {
|
|
|
293
309
|
}
|
|
294
310
|
};
|
|
295
311
|
}
|
|
312
|
+
function checkFieldIndex(type, f) {
|
|
313
|
+
let unique = false;
|
|
314
|
+
let index = false;
|
|
315
|
+
f.astNode?.directives?.forEach(d => {
|
|
316
|
+
if (d.name.value == 'unique') {
|
|
317
|
+
assertCanBeIndexed(type, f);
|
|
318
|
+
index = true;
|
|
319
|
+
unique = true;
|
|
320
|
+
}
|
|
321
|
+
else if (d.name.value == 'index') {
|
|
322
|
+
assertCanBeIndexed(type, f);
|
|
323
|
+
let fieldsArg = d.arguments?.find(arg => arg.name.value == 'fields');
|
|
324
|
+
if (fieldsArg)
|
|
325
|
+
throw new SchemaError(`@index(fields: ...) where applied to ${type.name}.${f.name}, but fields argument is not allowed when @index is applied to a field`);
|
|
326
|
+
let uniqueArg = d.arguments?.find(arg => arg.name.value == 'unique');
|
|
327
|
+
if (uniqueArg) {
|
|
328
|
+
(0, assert_1.default)(uniqueArg.value.kind == 'BooleanValue');
|
|
329
|
+
unique = uniqueArg.value.value;
|
|
330
|
+
}
|
|
331
|
+
index = true;
|
|
332
|
+
}
|
|
333
|
+
});
|
|
334
|
+
if (!index)
|
|
335
|
+
return undefined;
|
|
336
|
+
return {
|
|
337
|
+
fields: [{ name: f.name }],
|
|
338
|
+
unique
|
|
339
|
+
};
|
|
340
|
+
}
|
|
341
|
+
function assertCanBeIndexed(type, f) {
|
|
342
|
+
if (!isEntityType(type))
|
|
343
|
+
throw new SchemaError(`${type.name}.${f.name} can't be indexed, because ${type.name} is not an entity`);
|
|
344
|
+
if (!canBeIndexed(f))
|
|
345
|
+
throw new SchemaError(`${type.name}.${f.name} can't be indexed, it is not a scalar, enum or foreign key`);
|
|
346
|
+
}
|
|
347
|
+
function canBeIndexed(f) {
|
|
348
|
+
let type = asNonNull(f);
|
|
349
|
+
if (type instanceof graphql_1.GraphQLScalarType || type instanceof graphql_1.GraphQLEnumType)
|
|
350
|
+
return true;
|
|
351
|
+
return isEntityType(type) && !f.astNode?.directives?.some(d => d.name.value == 'derivedFrom');
|
|
352
|
+
}
|
|
353
|
+
function checkEntityIndexes(type) {
|
|
354
|
+
let indexes = [];
|
|
355
|
+
type.astNode?.directives?.forEach(d => {
|
|
356
|
+
if (d.name.value != 'index')
|
|
357
|
+
return;
|
|
358
|
+
if (!isEntityType(type))
|
|
359
|
+
throw new SchemaError(`@index was applied to ${type.name}, but only entities can have indexes`);
|
|
360
|
+
let fieldsArg = d.arguments?.find(arg => arg.name.value == 'fields');
|
|
361
|
+
if (fieldsArg == null)
|
|
362
|
+
throw new SchemaError(`@index was applied to ${type.name}, but no fields were specified`);
|
|
363
|
+
(0, assert_1.default)(fieldsArg.value.kind == 'ListValue');
|
|
364
|
+
if (fieldsArg.value.values.length == 0)
|
|
365
|
+
throw new SchemaError(`@index was applied to ${type.name}, but no fields were specified`);
|
|
366
|
+
let fields = fieldsArg.value.values.map(arg => {
|
|
367
|
+
(0, assert_1.default)(arg.kind == 'StringValue');
|
|
368
|
+
let name = arg.value;
|
|
369
|
+
let f = type.getFields()[name];
|
|
370
|
+
if (f == null)
|
|
371
|
+
throw new SchemaError(`Entity ${type.name} doesn't have a field '${name}', but it is a part of @index`);
|
|
372
|
+
assertCanBeIndexed(type, f);
|
|
373
|
+
return { name };
|
|
374
|
+
});
|
|
375
|
+
indexes.push({
|
|
376
|
+
fields,
|
|
377
|
+
unique: !!d.arguments?.find(arg => arg.name.value == 'unique')?.value
|
|
378
|
+
});
|
|
379
|
+
});
|
|
380
|
+
return indexes;
|
|
381
|
+
}
|
|
382
|
+
function checkDerivedFrom(type, f) {
|
|
383
|
+
let directives = f.astNode?.directives?.filter(d => d.name.value == 'derivedFrom') || [];
|
|
384
|
+
if (directives.length == 0)
|
|
385
|
+
return undefined;
|
|
386
|
+
if (!isEntityType(type))
|
|
387
|
+
throw new SchemaError(`@derivedFrom where applied to ${type.name}.${f.name}, but only entities can have lookup fields`);
|
|
388
|
+
if (directives.length > 1)
|
|
389
|
+
throw new SchemaError(`Multiple @derivedFrom where applied to ${type.name}.${f.name}`);
|
|
390
|
+
let d = directives[0];
|
|
391
|
+
let fieldArg = (0, util_1.assertNotNull)(d.arguments?.find(arg => arg.name.value == 'field'));
|
|
392
|
+
(0, assert_1.default)(fieldArg.value.kind == 'StringValue');
|
|
393
|
+
return { field: fieldArg.value.value };
|
|
394
|
+
}
|
|
296
395
|
function unsupportedFieldTypeError(propName) {
|
|
297
396
|
return new SchemaError(`Property ${propName} has unsupported type`);
|
|
298
397
|
}
|
package/dist/gql/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/gql/schema.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/gql/schema.ts"],"names":[],"mappings":"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"}
|
package/dist/model.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ export interface Entity extends TypeMeta {
|
|
|
4
4
|
kind: 'entity';
|
|
5
5
|
properties: Record<Name, Prop>;
|
|
6
6
|
interfaces?: Name[];
|
|
7
|
+
indexes?: Index[];
|
|
7
8
|
}
|
|
8
9
|
export interface JsonObject extends TypeMeta {
|
|
9
10
|
kind: 'object';
|
|
@@ -77,4 +78,11 @@ export interface FTS_Source {
|
|
|
77
78
|
entity: Name;
|
|
78
79
|
fields: Name[];
|
|
79
80
|
}
|
|
81
|
+
export interface Index {
|
|
82
|
+
fields: IndexField[];
|
|
83
|
+
unique?: boolean;
|
|
84
|
+
}
|
|
85
|
+
export interface IndexField {
|
|
86
|
+
name: string;
|
|
87
|
+
}
|
|
80
88
|
//# sourceMappingURL=model.d.ts.map
|
package/dist/model.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"AAAA,oBAAY,IAAI,GAAG,MAAM,CAAA;AAGzB,oBAAY,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,KAAK,GAAG,IAAI,GAAG,SAAS,CAAC,CAAA;AAG5F,MAAM,WAAW,MAAO,SAAQ,QAAQ;IACpC,IAAI,EAAE,QAAQ,CAAA;IACd,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAC9B,UAAU,CAAC,EAAE,IAAI,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"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"}
|
package/dist/model.tools.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ export declare function validateModel(model: Model): void;
|
|
|
5
5
|
export declare function validateNames(model: Model): void;
|
|
6
6
|
export declare function validateUnionTypes(model: Model): void;
|
|
7
7
|
export declare function validateLookups(model: Model): void;
|
|
8
|
+
export declare function validateIndexes(model: Model): void;
|
|
8
9
|
export declare function propTypeEquals(a: PropType, b: PropType): boolean;
|
|
9
10
|
export declare function getEntity(model: Model, name: string): Entity;
|
|
10
11
|
export declare function getObject(model: Model, name: string): JsonObject;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.tools.d.ts","sourceRoot":"","sources":["../src/model.tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAQ,QAAQ,EAAC,MAAM,SAAS,CAAA;AAM5E,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,GAAG,UAAU,CAQzE;AAGD,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,GAAG,UAAU,CAe3E;AAGD,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"model.tools.d.ts","sourceRoot":"","sources":["../src/model.tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAQ,QAAQ,EAAC,MAAM,SAAS,CAAA;AAM5E,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,GAAG,UAAU,CAQzE;AAGD,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,GAAG,UAAU,CAe3E;AAGD,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,QAMzC;AAOD,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,QAwBzC;AAGD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAoBrD;AAGD,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAiClD;AAGD,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAwBlD;AAQD,wBAAgB,cAAc,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CAYhE;AAGD,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAI5D;AAGD,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAIhE;AAGD,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,CAIjE"}
|
package/dist/model.tools.js
CHANGED
|
@@ -3,7 +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.getFtsQuery = exports.getObject = exports.getEntity = exports.propTypeEquals = exports.validateLookups = exports.validateUnionTypes = exports.validateNames = exports.validateModel = exports.buildUnionProps = exports.getUnionProps = void 0;
|
|
6
|
+
exports.getFtsQuery = exports.getObject = exports.getEntity = exports.propTypeEquals = exports.validateIndexes = exports.validateLookups = exports.validateUnionTypes = exports.validateNames = exports.validateModel = exports.buildUnionProps = exports.getUnionProps = void 0;
|
|
7
7
|
const assert_1 = __importDefault(require("assert"));
|
|
8
8
|
const UNION_MAPS = new WeakMap();
|
|
9
9
|
function getUnionProps(model, unionName) {
|
|
@@ -39,6 +39,7 @@ function validateModel(model) {
|
|
|
39
39
|
validateNames(model);
|
|
40
40
|
validateUnionTypes(model);
|
|
41
41
|
validateLookups(model);
|
|
42
|
+
validateIndexes(model);
|
|
42
43
|
}
|
|
43
44
|
exports.validateModel = validateModel;
|
|
44
45
|
const TYPE_NAME_REGEX = /^[A-Z][a-zA-Z0-9]*$/;
|
|
@@ -127,6 +128,31 @@ function validateLookups(model) {
|
|
|
127
128
|
}
|
|
128
129
|
}
|
|
129
130
|
exports.validateLookups = validateLookups;
|
|
131
|
+
function validateIndexes(model) {
|
|
132
|
+
for (let name in model) {
|
|
133
|
+
const item = model[name];
|
|
134
|
+
if (item.kind != 'entity')
|
|
135
|
+
continue;
|
|
136
|
+
item.indexes?.forEach(index => {
|
|
137
|
+
if (index.fields.length == 0)
|
|
138
|
+
throw new Error(`Entity ${name} has an index without fields`);
|
|
139
|
+
index.fields.forEach(f => {
|
|
140
|
+
let prop = item.properties[f.name];
|
|
141
|
+
if (prop == null)
|
|
142
|
+
throw new Error(`Entity ${name} doesn't have a property ${f.name}, but is a part of index`);
|
|
143
|
+
switch (prop.type.kind) {
|
|
144
|
+
case "scalar":
|
|
145
|
+
case "enum":
|
|
146
|
+
case "fk":
|
|
147
|
+
break;
|
|
148
|
+
default:
|
|
149
|
+
throw new Error(`Property ${name}.${f.name} can't be a part of index`);
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
exports.validateIndexes = validateIndexes;
|
|
130
156
|
function invalidProperty(item, key, msg) {
|
|
131
157
|
return new Error(`Invalid property ${item}.${key}: ${msg}`);
|
|
132
158
|
}
|
package/dist/model.tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.tools.js","sourceRoot":"","sources":["../src/model.tools.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA2B;AAI3B,MAAM,UAAU,GAAG,IAAI,OAAO,EAAqC,CAAA;AAGnE,SAAgB,aAAa,CAAC,KAAY,EAAE,SAAiB;IACzD,IAAI,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAC/B,IAAI,GAAG,IAAI,IAAI,EAAE;QACb,GAAG,GAAG,EAAE,CAAA;QACR,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;KAC7B;IACD,IAAI,GAAG,CAAC,SAAS,CAAC;QAAE,OAAO,GAAG,CAAC,SAAS,CAAC,CAAA;IACzC,OAAO,GAAG,CAAC,SAAS,CAAC,GAAG,eAAe,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;AAC7D,CAAC;AARD,sCAQC;AAGD,SAAgB,eAAe,CAAC,KAAY,EAAE,SAAiB;IAC3D,IAAI,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAA;IAC5B,IAAA,gBAAM,EAAC,KAAK,CAAC,IAAI,IAAI,OAAO,CAAC,CAAA;IAC7B,IAAI,UAAU,GAAyB,EAAE,CAAA;IACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC5C,IAAI,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;QAClC,IAAI,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,CAAA;QAC9B,IAAA,gBAAM,EAAC,MAAM,CAAC,IAAI,IAAI,QAAQ,CAAC,CAAA;QAC/B,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,CAAA;KAC/C;IACD,UAAU,CAAC,QAAQ,GAAG;QAClB,IAAI,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAC;QACtC,QAAQ,EAAE,KAAK;KAClB,CAAA;IACD,OAAO,EAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAC,CAAA;AACvC,CAAC;AAfD,0CAeC;AAGD,SAAgB,aAAa,CAAC,KAAY;IACtC,uCAAuC;IACvC,aAAa,CAAC,KAAK,CAAC,CAAA;IACpB,kBAAkB,CAAC,KAAK,CAAC,CAAA;IACzB,eAAe,CAAC,KAAK,CAAC,CAAA;AAC1B,CAAC;
|
|
1
|
+
{"version":3,"file":"model.tools.js","sourceRoot":"","sources":["../src/model.tools.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/gql/schema.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import {assertNotNull, unexpectedCase} from "@subsquid/util"
|
|
1
2
|
import assert from "assert"
|
|
2
3
|
import {
|
|
3
4
|
buildASTSchema,
|
|
@@ -17,7 +18,7 @@ import {
|
|
|
17
18
|
parse,
|
|
18
19
|
validateSchema
|
|
19
20
|
} from "graphql"
|
|
20
|
-
import {Model, Prop, PropType} from "../model"
|
|
21
|
+
import {Index, Model, Prop, PropType} from "../model"
|
|
21
22
|
import {validateModel} from "../model.tools"
|
|
22
23
|
import {scalars_list} from "../scalars"
|
|
23
24
|
|
|
@@ -26,6 +27,7 @@ const baseSchema = buildASTSchema(parse(`
|
|
|
26
27
|
directive @entity on OBJECT
|
|
27
28
|
directive @derivedFrom(field: String!) on FIELD_DEFINITION
|
|
28
29
|
directive @unique on FIELD_DEFINITION
|
|
30
|
+
directive @index(fields: [String!] unique: Boolean) on OBJECT | FIELD_DEFINITION
|
|
29
31
|
directive @fulltext(query: String!) on FIELD_DEFINITION
|
|
30
32
|
directive @variant on OBJECT # legacy
|
|
31
33
|
directive @jsonField on OBJECT # legacy
|
|
@@ -57,7 +59,7 @@ export function buildModel(schema: GraphQLSchema): Model {
|
|
|
57
59
|
}
|
|
58
60
|
|
|
59
61
|
|
|
60
|
-
function isEntityType(type:
|
|
62
|
+
function isEntityType(type: unknown): boolean {
|
|
61
63
|
return type instanceof GraphQLObjectType && !!type.astNode?.directives?.some(d => d.name.value == 'entity')
|
|
62
64
|
}
|
|
63
65
|
|
|
@@ -71,12 +73,21 @@ function addEntityOrJsonObjectOrInterface(model: Model, type: GraphQLObjectType
|
|
|
71
73
|
|
|
72
74
|
let properties: Record<string, Prop> = {}
|
|
73
75
|
let interfaces: string[] = []
|
|
76
|
+
let indexes: Index[] = type instanceof GraphQLObjectType ? checkEntityIndexes(type) : []
|
|
74
77
|
let description = type.description || undefined
|
|
75
78
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
79
|
+
switch(kind) {
|
|
80
|
+
case 'entity':
|
|
81
|
+
model[type.name] = {kind, properties, description, interfaces, indexes}
|
|
82
|
+
break
|
|
83
|
+
case 'object':
|
|
84
|
+
model[type.name] = {kind, properties, description, interfaces}
|
|
85
|
+
break
|
|
86
|
+
case 'interface':
|
|
87
|
+
model[type.name] = {kind, properties, description}
|
|
88
|
+
break
|
|
89
|
+
default:
|
|
90
|
+
throw unexpectedCase(kind)
|
|
80
91
|
}
|
|
81
92
|
|
|
82
93
|
let fields = type.getFields()
|
|
@@ -98,18 +109,29 @@ function addEntityOrJsonObjectOrInterface(model: Model, type: GraphQLObjectType
|
|
|
98
109
|
|
|
99
110
|
for (let key in fields) {
|
|
100
111
|
let f: GraphQLField<any, any> = fields[key]
|
|
112
|
+
|
|
113
|
+
handleFulltextDirective(model, type, f)
|
|
114
|
+
|
|
115
|
+
let propName = `${type.name}.${f.name}`
|
|
101
116
|
let fieldType = f.type
|
|
102
117
|
let nullable = true
|
|
103
118
|
let description = f.description || undefined
|
|
104
|
-
let
|
|
105
|
-
let
|
|
106
|
-
|
|
119
|
+
let derivedFrom = checkDerivedFrom(type, f)
|
|
120
|
+
let index = checkFieldIndex(type, f)
|
|
121
|
+
let unique = index?.unique || false
|
|
122
|
+
|
|
123
|
+
if (index) {
|
|
124
|
+
indexes.push(index)
|
|
125
|
+
}
|
|
126
|
+
|
|
107
127
|
if (fieldType instanceof GraphQLNonNull) {
|
|
108
128
|
nullable = false
|
|
109
129
|
fieldType = fieldType.ofType
|
|
110
130
|
}
|
|
131
|
+
|
|
111
132
|
let list = unwrapList(fieldType)
|
|
112
133
|
fieldType = list.item
|
|
134
|
+
|
|
113
135
|
if (fieldType instanceof GraphQLScalarType) {
|
|
114
136
|
properties[key] = {
|
|
115
137
|
type: wrapWithList(list.nulls, {
|
|
@@ -141,13 +163,6 @@ function addEntityOrJsonObjectOrInterface(model: Model, type: GraphQLObjectType
|
|
|
141
163
|
}
|
|
142
164
|
} else if (fieldType instanceof GraphQLObjectType) {
|
|
143
165
|
if (isEntityType(fieldType)) {
|
|
144
|
-
let derivedFrom = f.astNode?.directives?.filter(d => d.name.value == 'derivedFrom').map(d => {
|
|
145
|
-
let valueNode = d.arguments?.[0].value
|
|
146
|
-
assert(valueNode != null)
|
|
147
|
-
assert(valueNode.kind == 'StringValue')
|
|
148
|
-
return valueNode.value
|
|
149
|
-
})[0]
|
|
150
|
-
|
|
151
166
|
switch(list.nulls.length) {
|
|
152
167
|
case 0:
|
|
153
168
|
if (derivedFrom) {
|
|
@@ -158,7 +173,7 @@ function addEntityOrJsonObjectOrInterface(model: Model, type: GraphQLObjectType
|
|
|
158
173
|
type: {
|
|
159
174
|
kind: 'lookup',
|
|
160
175
|
entity: fieldType.name,
|
|
161
|
-
field: derivedFrom
|
|
176
|
+
field: derivedFrom.field
|
|
162
177
|
},
|
|
163
178
|
nullable,
|
|
164
179
|
description
|
|
@@ -186,7 +201,7 @@ function addEntityOrJsonObjectOrInterface(model: Model, type: GraphQLObjectType
|
|
|
186
201
|
type: {
|
|
187
202
|
kind: 'list-lookup',
|
|
188
203
|
entity: fieldType.name,
|
|
189
|
-
field: derivedFrom
|
|
204
|
+
field: derivedFrom.field
|
|
190
205
|
},
|
|
191
206
|
nullable: false,
|
|
192
207
|
description
|
|
@@ -288,11 +303,22 @@ function handleFulltextDirective(model: Model, object: GraphQLNamedType, f: Grap
|
|
|
288
303
|
|
|
289
304
|
|
|
290
305
|
function isStringField(f: GraphQLField<any, any>): boolean {
|
|
306
|
+
return asScalarField(f)?.name == 'String'
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
|
|
310
|
+
function asScalarField(f: GraphQLField<any, any>): GraphQLScalarType | undefined {
|
|
311
|
+
let type = asNonNull(f)
|
|
312
|
+
return type instanceof GraphQLScalarType ? type : undefined
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
|
|
316
|
+
function asNonNull(f: GraphQLField<any, any>): GraphQLOutputType {
|
|
291
317
|
let type = f.type
|
|
292
318
|
if (type instanceof GraphQLNonNull) {
|
|
293
319
|
type = type.ofType
|
|
294
320
|
}
|
|
295
|
-
return type
|
|
321
|
+
return type
|
|
296
322
|
}
|
|
297
323
|
|
|
298
324
|
|
|
@@ -329,6 +355,106 @@ function wrapWithList(nulls: boolean[], dataType: PropType): PropType {
|
|
|
329
355
|
}
|
|
330
356
|
|
|
331
357
|
|
|
358
|
+
function checkFieldIndex(type: GraphQLNamedType, f: GraphQLField<any, any>): Index | undefined {
|
|
359
|
+
let unique = false
|
|
360
|
+
let index = false
|
|
361
|
+
|
|
362
|
+
f.astNode?.directives?.forEach(d => {
|
|
363
|
+
if (d.name.value == 'unique') {
|
|
364
|
+
assertCanBeIndexed(type, f)
|
|
365
|
+
index = true
|
|
366
|
+
unique = true
|
|
367
|
+
} else if (d.name.value == 'index') {
|
|
368
|
+
assertCanBeIndexed(type, f)
|
|
369
|
+
let fieldsArg = d.arguments?.find(arg => arg.name.value == 'fields')
|
|
370
|
+
if (fieldsArg) throw new SchemaError(
|
|
371
|
+
`@index(fields: ...) where applied to ${type.name}.${f.name}, but fields argument is not allowed when @index is applied to a field`
|
|
372
|
+
)
|
|
373
|
+
let uniqueArg = d.arguments?.find(arg => arg.name.value == 'unique')
|
|
374
|
+
if (uniqueArg) {
|
|
375
|
+
assert(uniqueArg.value.kind == 'BooleanValue')
|
|
376
|
+
unique = uniqueArg.value.value
|
|
377
|
+
}
|
|
378
|
+
index = true
|
|
379
|
+
}
|
|
380
|
+
})
|
|
381
|
+
|
|
382
|
+
if (!index) return undefined
|
|
383
|
+
|
|
384
|
+
return {
|
|
385
|
+
fields: [{name: f.name}],
|
|
386
|
+
unique
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
|
|
391
|
+
function assertCanBeIndexed(type: GraphQLNamedType, f: GraphQLField<any, any>): void {
|
|
392
|
+
if (!isEntityType(type)) throw new SchemaError(
|
|
393
|
+
`${type.name}.${f.name} can't be indexed, because ${type.name} is not an entity`
|
|
394
|
+
)
|
|
395
|
+
if (!canBeIndexed(f)) throw new SchemaError(
|
|
396
|
+
`${type.name}.${f.name} can't be indexed, it is not a scalar, enum or foreign key`
|
|
397
|
+
)
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
|
|
401
|
+
function canBeIndexed(f: GraphQLField<any, any>): boolean {
|
|
402
|
+
let type = asNonNull(f)
|
|
403
|
+
if (type instanceof GraphQLScalarType || type instanceof GraphQLEnumType) return true
|
|
404
|
+
return isEntityType(type) && !f.astNode?.directives?.some(d => d.name.value == 'derivedFrom')
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
|
|
408
|
+
function checkEntityIndexes(type: GraphQLObjectType): Index[] {
|
|
409
|
+
let indexes: Index[] = []
|
|
410
|
+
type.astNode?.directives?.forEach(d => {
|
|
411
|
+
if (d.name.value != 'index') return
|
|
412
|
+
if (!isEntityType(type)) throw new SchemaError(
|
|
413
|
+
`@index was applied to ${type.name}, but only entities can have indexes`
|
|
414
|
+
)
|
|
415
|
+
let fieldsArg = d.arguments?.find(arg => arg.name.value == 'fields')
|
|
416
|
+
if (fieldsArg == null) throw new SchemaError(
|
|
417
|
+
`@index was applied to ${type.name}, but no fields were specified`
|
|
418
|
+
)
|
|
419
|
+
assert(fieldsArg.value.kind == 'ListValue')
|
|
420
|
+
if (fieldsArg.value.values.length == 0) throw new SchemaError(
|
|
421
|
+
`@index was applied to ${type.name}, but no fields were specified`
|
|
422
|
+
)
|
|
423
|
+
let fields = fieldsArg.value.values.map(arg => {
|
|
424
|
+
assert(arg.kind == 'StringValue')
|
|
425
|
+
let name = arg.value
|
|
426
|
+
let f = type.getFields()[name]
|
|
427
|
+
if (f == null) throw new SchemaError(
|
|
428
|
+
`Entity ${type.name} doesn't have a field '${name}', but it is a part of @index`
|
|
429
|
+
)
|
|
430
|
+
assertCanBeIndexed(type, f)
|
|
431
|
+
return {name}
|
|
432
|
+
})
|
|
433
|
+
indexes.push({
|
|
434
|
+
fields,
|
|
435
|
+
unique: !!d.arguments?.find(arg => arg.name.value == 'unique')?.value
|
|
436
|
+
})
|
|
437
|
+
})
|
|
438
|
+
return indexes
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
|
|
442
|
+
function checkDerivedFrom(type: GraphQLNamedType, f: GraphQLField<any, any>): {field: string} | undefined {
|
|
443
|
+
let directives = f.astNode?.directives?.filter(d => d.name.value == 'derivedFrom') || []
|
|
444
|
+
if (directives.length == 0) return undefined
|
|
445
|
+
if (!isEntityType(type)) throw new SchemaError(
|
|
446
|
+
`@derivedFrom where applied to ${type.name}.${f.name}, but only entities can have lookup fields`
|
|
447
|
+
)
|
|
448
|
+
if (directives.length > 1) throw new SchemaError(
|
|
449
|
+
`Multiple @derivedFrom where applied to ${type.name}.${f.name}`
|
|
450
|
+
)
|
|
451
|
+
let d = directives[0]
|
|
452
|
+
let fieldArg = assertNotNull(d.arguments?.find(arg => arg.name.value == 'field'))
|
|
453
|
+
assert(fieldArg.value.kind == 'StringValue')
|
|
454
|
+
return {field: fieldArg.value.value}
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
|
|
332
458
|
function unsupportedFieldTypeError(propName: string): Error {
|
|
333
459
|
return new SchemaError(`Property ${propName} has unsupported type`)
|
|
334
460
|
}
|
package/src/model.tools.ts
CHANGED
|
@@ -39,6 +39,7 @@ export function validateModel(model: Model) {
|
|
|
39
39
|
validateNames(model)
|
|
40
40
|
validateUnionTypes(model)
|
|
41
41
|
validateLookups(model)
|
|
42
|
+
validateIndexes(model)
|
|
42
43
|
}
|
|
43
44
|
|
|
44
45
|
|
|
@@ -132,6 +133,33 @@ export function validateLookups(model: Model): void {
|
|
|
132
133
|
}
|
|
133
134
|
|
|
134
135
|
|
|
136
|
+
export function validateIndexes(model: Model): void {
|
|
137
|
+
for (let name in model) {
|
|
138
|
+
const item = model[name]
|
|
139
|
+
if (item.kind != 'entity') continue
|
|
140
|
+
item.indexes?.forEach(index => {
|
|
141
|
+
if (index.fields.length == 0) throw new Error(`Entity ${name} has an index without fields`)
|
|
142
|
+
index.fields.forEach(f => {
|
|
143
|
+
let prop = item.properties[f.name]
|
|
144
|
+
if (prop == null) throw new Error(
|
|
145
|
+
`Entity ${name} doesn't have a property ${f.name}, but is a part of index`
|
|
146
|
+
)
|
|
147
|
+
switch(prop.type.kind) {
|
|
148
|
+
case "scalar":
|
|
149
|
+
case "enum":
|
|
150
|
+
case "fk":
|
|
151
|
+
break
|
|
152
|
+
default:
|
|
153
|
+
throw new Error(
|
|
154
|
+
`Property ${name}.${f.name} can't be a part of index`
|
|
155
|
+
)
|
|
156
|
+
}
|
|
157
|
+
})
|
|
158
|
+
})
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
|
|
135
163
|
function invalidProperty(item: string, key: string, msg: string): Error {
|
|
136
164
|
return new Error(`Invalid property ${item}.${key}: ${msg}`)
|
|
137
165
|
}
|
package/src/model.ts
CHANGED
|
@@ -8,6 +8,7 @@ export interface Entity extends TypeMeta {
|
|
|
8
8
|
kind: 'entity'
|
|
9
9
|
properties: Record<Name, Prop>
|
|
10
10
|
interfaces?: Name[]
|
|
11
|
+
indexes?: Index[]
|
|
11
12
|
}
|
|
12
13
|
|
|
13
14
|
|
|
@@ -123,3 +124,14 @@ export interface FTS_Source {
|
|
|
123
124
|
entity: Name
|
|
124
125
|
fields: Name[]
|
|
125
126
|
}
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
export interface Index {
|
|
130
|
+
fields: IndexField[]
|
|
131
|
+
unique?: boolean
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
export interface IndexField {
|
|
136
|
+
name: string
|
|
137
|
+
}
|