@sentio/sdk 2.36.1 → 2.37.0-rc.10
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/core/base-context.d.ts +4 -0
- package/lib/core/base-context.d.ts.map +1 -1
- package/lib/core/base-context.js +20 -4
- package/lib/core/base-context.js.map +1 -1
- package/lib/core/core-plugin.d.ts.map +1 -1
- package/lib/core/core-plugin.js +8 -0
- package/lib/core/core-plugin.js.map +1 -1
- package/lib/core/database-schema.d.ts +15 -0
- package/lib/core/database-schema.d.ts.map +1 -0
- package/lib/core/database-schema.js +16 -0
- package/lib/core/database-schema.js.map +1 -0
- package/lib/core/index.d.ts +1 -0
- package/lib/core/index.d.ts.map +1 -1
- package/lib/core/index.js +1 -0
- package/lib/core/index.js.map +1 -1
- package/lib/fuel/fuel-processor.d.ts.map +1 -1
- package/lib/fuel/fuel-processor.js +51 -23
- package/lib/fuel/fuel-processor.js.map +1 -1
- package/lib/store/codegen.d.ts +4 -0
- package/lib/store/codegen.d.ts.map +1 -0
- package/lib/store/codegen.js +221 -0
- package/lib/store/codegen.js.map +1 -0
- package/lib/store/context.d.ts +2 -0
- package/lib/store/context.d.ts.map +1 -0
- package/lib/store/context.js +2 -0
- package/lib/store/context.js.map +1 -0
- package/lib/store/decorators.d.ts +12 -0
- package/lib/store/decorators.d.ts.map +1 -0
- package/lib/store/decorators.js +25 -0
- package/lib/store/decorators.js.map +1 -0
- package/lib/store/entity.d.ts +17 -0
- package/lib/store/entity.d.ts.map +1 -0
- package/lib/store/entity.js +61 -0
- package/lib/store/entity.js.map +1 -0
- package/lib/store/index.d.ts +6 -0
- package/lib/store/index.d.ts.map +1 -0
- package/lib/store/index.js +6 -0
- package/lib/store/index.js.map +1 -0
- package/lib/store/run.d.ts +2 -0
- package/lib/store/run.d.ts.map +1 -0
- package/lib/store/run.js +11 -0
- package/lib/store/run.js.map +1 -0
- package/lib/store/schema.d.ts +7 -0
- package/lib/store/schema.d.ts.map +1 -0
- package/lib/store/schema.js +30 -0
- package/lib/store/schema.js.map +1 -0
- package/lib/store/store.d.ts +12 -0
- package/lib/store/store.d.ts.map +1 -0
- package/lib/store/store.js +74 -0
- package/lib/store/store.js.map +1 -0
- package/lib/store/types.d.ts +10 -0
- package/lib/store/types.d.ts.map +1 -0
- package/lib/store/types.js +2 -0
- package/lib/store/types.js.map +1 -0
- package/lib/testing/test-processor-server.d.ts +2 -5
- package/lib/testing/test-processor-server.d.ts.map +1 -1
- package/lib/testing/test-processor-server.js +2 -2
- package/lib/testing/test-processor-server.js.map +1 -1
- package/package.json +8 -5
- package/src/core/base-context.ts +22 -4
- package/src/core/core-plugin.ts +9 -0
- package/src/core/database-schema.ts +24 -0
- package/src/core/index.ts +1 -0
- package/src/fuel/fuel-processor.ts +64 -39
- package/src/store/codegen.ts +256 -0
- package/src/store/context.ts +1 -0
- package/src/store/decorators.ts +32 -0
- package/src/store/entity.ts +71 -0
- package/src/store/index.ts +5 -0
- package/src/store/run.ts +10 -0
- package/src/store/schema.ts +35 -0
- package/src/store/store.ts +80 -0
- package/src/store/types.ts +10 -0
- package/src/testing/test-processor-server.ts +13 -2
@@ -0,0 +1,25 @@
|
|
1
|
+
export function entity(name) {
|
2
|
+
return function (constructor, context) {
|
3
|
+
constructor.prototype.entityName = name;
|
4
|
+
return constructor;
|
5
|
+
};
|
6
|
+
}
|
7
|
+
export function derivedFrom(field) {
|
8
|
+
return function (target, context) { };
|
9
|
+
}
|
10
|
+
export function unique(field) {
|
11
|
+
return function (target, context) { };
|
12
|
+
}
|
13
|
+
export function index(field) {
|
14
|
+
return function (target, context) { };
|
15
|
+
}
|
16
|
+
export function fulltext(query) {
|
17
|
+
return function (target, context) { };
|
18
|
+
}
|
19
|
+
export function cardinality(value) {
|
20
|
+
return function (target, context) { };
|
21
|
+
}
|
22
|
+
export function byteWeight(value) {
|
23
|
+
return function (target, context) { };
|
24
|
+
}
|
25
|
+
//# sourceMappingURL=decorators.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../src/store/decorators.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,MAAM,CAAC,IAAY;IACjC,OAAO,UAAiC,WAAc,EAAE,OAAY;QAClE,WAAW,CAAC,SAAS,CAAC,UAAU,GAAG,IAAI,CAAA;QACvC,OAAO,WAAW,CAAA;IACpB,CAAC,CAAA;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,OAAO,UAAU,MAAW,EAAE,OAAY,IAAG,CAAC,CAAA;AAChD,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,KAAa;IAClC,OAAO,UAAU,MAAW,EAAE,OAAY,IAAG,CAAC,CAAA;AAChD,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,KAAe;IACnC,OAAO,UAAU,MAAW,EAAE,OAAY,IAAG,CAAC,CAAA;AAChD,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAa;IACpC,OAAO,UAAU,MAAW,EAAE,OAAY,IAAG,CAAC,CAAA;AAChD,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,OAAO,UAAU,MAAW,EAAE,OAAY,IAAG,CAAC,CAAA;AAChD,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,OAAO,UAAU,MAAW,EAAE,OAAY,IAAG,CAAC,CAAA;AAChD,CAAC"}
|
@@ -0,0 +1,17 @@
|
|
1
|
+
import { ID } from './types.js';
|
2
|
+
export interface EntityClass<T extends Entity> {
|
3
|
+
new (data: any): T;
|
4
|
+
}
|
5
|
+
export declare class Entity {
|
6
|
+
get id(): ID;
|
7
|
+
data: Record<string, any>;
|
8
|
+
constructor(data: any);
|
9
|
+
private getIdFromEntity;
|
10
|
+
private getStore;
|
11
|
+
get<T>(field: string): T;
|
12
|
+
set<T>(field: string, value: T | T[] | ID | ID[]): void;
|
13
|
+
protected getFieldObject<T extends Entity>(entity: EntityClass<T> | string, field: string): Promise<T | undefined>;
|
14
|
+
protected getFieldObjectArray<T extends Entity>(entity: EntityClass<T>, field: string): Promise<T[]>;
|
15
|
+
toString(): string;
|
16
|
+
}
|
17
|
+
//# sourceMappingURL=entity.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../../src/store/entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,YAAY,CAAA;AAI/B,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,MAAM;IAC3C,KAAK,IAAI,EAAE,GAAG,GAAG,CAAC,CAAA;CACnB;AAED,qBAAa,MAAM;IACjB,IAAI,EAAE,IAAI,EAAE,CAEX;IAED,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAK;gBAClB,IAAI,EAAE,GAAG;IAUrB,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,QAAQ;IAQhB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC;IAIxB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI;IASvD,SAAS,CAAC,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAKlH,SAAS,CAAC,mBAAmB,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAMpG,QAAQ,IAAI,MAAM;CAKnB"}
|
@@ -0,0 +1,61 @@
|
|
1
|
+
import { PluginManager } from '@sentio/runtime';
|
2
|
+
import { Store } from './store.js';
|
3
|
+
export class Entity {
|
4
|
+
get id() {
|
5
|
+
return this.get('id');
|
6
|
+
}
|
7
|
+
data = {};
|
8
|
+
constructor(data) {
|
9
|
+
Object.entries(data).forEach(([key, value]) => {
|
10
|
+
if (Array.isArray(value)) {
|
11
|
+
this.data[key] = value.map((v) => this.getIdFromEntity(v));
|
12
|
+
}
|
13
|
+
else {
|
14
|
+
this.data[key] = this.getIdFromEntity(value);
|
15
|
+
}
|
16
|
+
});
|
17
|
+
}
|
18
|
+
getIdFromEntity(entity) {
|
19
|
+
if (entity instanceof Entity) {
|
20
|
+
return entity.id;
|
21
|
+
}
|
22
|
+
else if (typeof entity === 'object' && entity.id) {
|
23
|
+
return entity.id;
|
24
|
+
}
|
25
|
+
return entity;
|
26
|
+
}
|
27
|
+
getStore() {
|
28
|
+
const dbContext = PluginManager.INSTANCE.dbContextLocalStorage.getStore();
|
29
|
+
if (dbContext) {
|
30
|
+
return new Store(dbContext);
|
31
|
+
}
|
32
|
+
return undefined;
|
33
|
+
}
|
34
|
+
get(field) {
|
35
|
+
return this.data[field];
|
36
|
+
}
|
37
|
+
set(field, value) {
|
38
|
+
if (Array.isArray(value) && value instanceof Entity) {
|
39
|
+
this.data[field] = value.map((v) => v.id);
|
40
|
+
}
|
41
|
+
else if (value instanceof Entity) {
|
42
|
+
this.data[field] = value.id;
|
43
|
+
}
|
44
|
+
this.data[field] = value;
|
45
|
+
}
|
46
|
+
getFieldObject(entity, field) {
|
47
|
+
const id = this.data[field];
|
48
|
+
return id ? this.getStore()?.get(entity, id) : Promise.resolve(undefined);
|
49
|
+
}
|
50
|
+
getFieldObjectArray(entity, field) {
|
51
|
+
const ids = this.data[field];
|
52
|
+
const promises = ids.map((id) => this.getStore()?.get(entity, id));
|
53
|
+
return Promise.all(promises);
|
54
|
+
}
|
55
|
+
toString() {
|
56
|
+
const entityName = this.constructor.prototype.entityName;
|
57
|
+
const id = this.id;
|
58
|
+
return `${entityName}#${id} ${JSON.stringify(this.data)}`;
|
59
|
+
}
|
60
|
+
}
|
61
|
+
//# sourceMappingURL=entity.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"entity.js","sourceRoot":"","sources":["../../src/store/entity.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/store/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/store/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/store/run.ts"],"names":[],"mappings":""}
|
package/lib/store/run.js
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
import { codegen } from './codegen.js';
|
2
|
+
if (process.argv.length > 3) {
|
3
|
+
const srcFile = process.argv[2];
|
4
|
+
const targetDir = process.argv[3];
|
5
|
+
await codegen(srcFile, targetDir);
|
6
|
+
}
|
7
|
+
else {
|
8
|
+
console.error('Not enough argument');
|
9
|
+
process.exit(1);
|
10
|
+
}
|
11
|
+
//# sourceMappingURL=run.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/store/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;IAC5B,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC/B,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjC,MAAM,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;AACnC,CAAC;KAAM,CAAC;IACN,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAA;IACpC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC"}
|
@@ -0,0 +1,7 @@
|
|
1
|
+
import { DocumentNode, GraphQLSchema } from 'graphql/index.js';
|
2
|
+
export declare function buildSchema(doc: DocumentNode): GraphQLSchema;
|
3
|
+
export declare function schemaFromFile(filePath: string): {
|
4
|
+
schema: GraphQLSchema;
|
5
|
+
source: string;
|
6
|
+
};
|
7
|
+
//# sourceMappingURL=schema.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/store/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,YAAY,EAAgB,aAAa,EAAyB,MAAM,kBAAkB,CAAA;AAqBnH,wBAAgB,WAAW,CAAC,GAAG,EAAE,YAAY,GAAG,aAAa,CAO5D;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM;;;EAI9C"}
|
@@ -0,0 +1,30 @@
|
|
1
|
+
import { buildASTSchema, extendSchema, parse, validateSchema } from 'graphql/index.js';
|
2
|
+
import * as fs from 'node:fs';
|
3
|
+
const customScalars = ['BigInt', 'BigDecimal', 'DateTime', 'JSON', 'Bytes', 'ID'];
|
4
|
+
const baseSchema = buildASTSchema(parse(`
|
5
|
+
directive @entity on OBJECT
|
6
|
+
directive @query on INTERFACE
|
7
|
+
directive @derivedFrom(field: String!) on FIELD_DEFINITION
|
8
|
+
directive @unique on FIELD_DEFINITION
|
9
|
+
directive @index(fields: [String!] unique: Boolean) repeatable on OBJECT | FIELD_DEFINITION
|
10
|
+
directive @fulltext(query: String!) on FIELD_DEFINITION
|
11
|
+
directive @cardinality(value: Int!) on OBJECT | FIELD_DEFINITION
|
12
|
+
directive @byteWeight(value: Float!) on FIELD_DEFINITION
|
13
|
+
directive @variant on OBJECT # legacy
|
14
|
+
directive @jsonField on OBJECT # legacy
|
15
|
+
${customScalars.map((name) => 'scalar ' + name).join('\n')}
|
16
|
+
`));
|
17
|
+
export function buildSchema(doc) {
|
18
|
+
const schema = extendSchema(baseSchema, doc);
|
19
|
+
const errors = validateSchema(schema).filter((err) => !/query root/i.test(err.message));
|
20
|
+
if (errors.length > 0) {
|
21
|
+
throw errors[0];
|
22
|
+
}
|
23
|
+
return schema;
|
24
|
+
}
|
25
|
+
export function schemaFromFile(filePath) {
|
26
|
+
const source = fs.readFileSync(filePath, 'utf-8');
|
27
|
+
const doc = parse(source);
|
28
|
+
return { schema: buildSchema(doc), source };
|
29
|
+
}
|
30
|
+
//# sourceMappingURL=schema.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/store/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAgB,YAAY,EAAiB,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACnH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAA;AAE7B,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;AAEjF,MAAM,UAAU,GAAG,cAAc,CAC/B,KAAK,CAAC;;;;;;;;;;;MAWF,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;CAC7D,CAAC,CACD,CAAA;AAED,MAAM,UAAU,WAAW,CAAC,GAAiB;IAC3C,MAAM,MAAM,GAAG,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA;IAC5C,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;IACvF,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,MAAM,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IACjD,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,CAAA;IACzB,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAA;AAC7C,CAAC"}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
import { Entity, EntityClass } from './entity.js';
|
2
|
+
import { StoreContext } from './context.js';
|
3
|
+
export declare class Store {
|
4
|
+
private readonly context;
|
5
|
+
constructor(context: StoreContext);
|
6
|
+
get<T extends Entity>(entity: EntityClass<T> | string, id: string): Promise<T | undefined>;
|
7
|
+
delete(entity: EntityClass<any>, id: string | string[]): Promise<void>;
|
8
|
+
upsert<T extends Entity>(entity: T | T[]): Promise<void>;
|
9
|
+
list<T extends Entity>(entity: EntityClass<T>, limit?: number, offset?: number): Promise<T[]>;
|
10
|
+
private newEntity;
|
11
|
+
}
|
12
|
+
//# sourceMappingURL=store.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/store/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAG3C,qBAAa,KAAK;IACJ,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,YAAY;IAE5C,GAAG,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAe1F,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBtE,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAaxD,IAAI,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAenG,OAAO,CAAC,SAAS;CAYlB"}
|
@@ -0,0 +1,74 @@
|
|
1
|
+
import { Entity } from './entity.js';
|
2
|
+
import { DatabaseSchema } from '../core/index.js';
|
3
|
+
export class Store {
|
4
|
+
context;
|
5
|
+
constructor(context) {
|
6
|
+
this.context = context;
|
7
|
+
}
|
8
|
+
async get(entity, id) {
|
9
|
+
const promise = this.context.sendRequest({
|
10
|
+
get: {
|
11
|
+
entity: typeof entity == 'string' ? entity : entity.prototype.entityName,
|
12
|
+
id
|
13
|
+
}
|
14
|
+
});
|
15
|
+
const data = (await promise);
|
16
|
+
if (data?.['id'] != null) {
|
17
|
+
return this.newEntity(entity, data);
|
18
|
+
}
|
19
|
+
return undefined;
|
20
|
+
}
|
21
|
+
async delete(entity, id) {
|
22
|
+
const toBeDeleted = [];
|
23
|
+
if (Array.isArray(id)) {
|
24
|
+
for (const i of id) {
|
25
|
+
toBeDeleted.push({ entity: entity.prototype.entityName, id: i });
|
26
|
+
}
|
27
|
+
}
|
28
|
+
else {
|
29
|
+
toBeDeleted.push({ entity: entity.prototype.entityName, id });
|
30
|
+
}
|
31
|
+
await this.context.sendRequest({
|
32
|
+
delete: {
|
33
|
+
entity: toBeDeleted.map((e) => e.entity),
|
34
|
+
id: toBeDeleted.map((e) => e.id)
|
35
|
+
}
|
36
|
+
});
|
37
|
+
}
|
38
|
+
async upsert(entity) {
|
39
|
+
const entities = Array.isArray(entity) ? entity : [entity];
|
40
|
+
const promise = this.context.sendRequest({
|
41
|
+
upsert: {
|
42
|
+
entity: entities.map((e) => e.constructor.prototype.entityName),
|
43
|
+
data: entities.map((e) => e.data),
|
44
|
+
id: entities.map((e) => e.id)
|
45
|
+
}
|
46
|
+
});
|
47
|
+
await promise;
|
48
|
+
}
|
49
|
+
async list(entity, limit, offset) {
|
50
|
+
const promise = this.context.sendRequest({
|
51
|
+
list: {
|
52
|
+
entity: entity.constructor.prototype.entityName,
|
53
|
+
limit,
|
54
|
+
offset
|
55
|
+
}
|
56
|
+
});
|
57
|
+
const list = (await promise);
|
58
|
+
return list.map((data) => {
|
59
|
+
return this.newEntity(entity, data);
|
60
|
+
});
|
61
|
+
}
|
62
|
+
newEntity(entity, data) {
|
63
|
+
if (typeof entity == 'string') {
|
64
|
+
const en = DatabaseSchema.findEntity(entity);
|
65
|
+
if (!en) {
|
66
|
+
// it is an interface
|
67
|
+
return new Entity(data);
|
68
|
+
}
|
69
|
+
entity = en;
|
70
|
+
}
|
71
|
+
return new entity(data);
|
72
|
+
}
|
73
|
+
}
|
74
|
+
//# sourceMappingURL=store.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/store/store.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
export type { BigDecimal } from '@sentio/bigdecimal';
|
2
|
+
export type ID = string;
|
3
|
+
export type String = string;
|
4
|
+
export type Int = number;
|
5
|
+
export type Float = number;
|
6
|
+
export type Boolean = boolean;
|
7
|
+
export type DateTime = Date;
|
8
|
+
export type Json = any;
|
9
|
+
export type Bytes = Uint8Array;
|
10
|
+
//# sourceMappingURL=types.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/store/types.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAEpD,MAAM,MAAM,EAAE,GAAG,MAAM,CAAA;AACvB,MAAM,MAAM,MAAM,GAAG,MAAM,CAAA;AAC3B,MAAM,MAAM,GAAG,GAAG,MAAM,CAAA;AACxB,MAAM,MAAM,KAAK,GAAG,MAAM,CAAA;AAC1B,MAAM,MAAM,OAAO,GAAG,OAAO,CAAA;AAC7B,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAA;AAC3B,MAAM,MAAM,IAAI,GAAG,GAAG,CAAA;AACtB,MAAM,MAAM,KAAK,GAAG,UAAU,CAAA"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/store/types.ts"],"names":[],"mappings":""}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { AccountConfig, ContractConfig, DataBinding, Empty, ProcessBindingResponse, ProcessBindingsRequest, ProcessConfigRequest, ProcessConfigResponse, ProcessorServiceImplementation, StartRequest } from '@sentio/protos';
|
1
|
+
import { AccountConfig, ContractConfig, DataBinding, DeepPartial, Empty, ProcessBindingResponse, ProcessBindingsRequest, ProcessConfigRequest, ProcessConfigResponse, ProcessorServiceImplementation, ProcessStreamRequest, ProcessStreamResponse, ServerStreamingMethodResult, StartRequest } from '@sentio/protos';
|
2
2
|
import { CallContext } from 'nice-grpc-common';
|
3
3
|
import { ProcessorServiceImpl } from '@sentio/runtime';
|
4
4
|
import { AptosFacet } from './aptos-facet.js';
|
@@ -23,9 +23,6 @@ export declare class TestProcessorServer implements ProcessorServiceImplementati
|
|
23
23
|
getConfig(request: ProcessConfigRequest, context?: CallContext): Promise<ProcessConfigResponse>;
|
24
24
|
processBindings(request: ProcessBindingsRequest, context?: CallContext): Promise<ProcessBindingResponse>;
|
25
25
|
processBinding(request: DataBinding, context?: CallContext): Promise<ProcessBindingResponse>;
|
26
|
-
processBindingsStream(
|
27
|
-
result: import("@sentio/protos").ProcessResult;
|
28
|
-
configUpdated: boolean;
|
29
|
-
}, void, unknown>;
|
26
|
+
processBindingsStream(requests: AsyncIterable<ProcessStreamRequest>, context: CallContext): ServerStreamingMethodResult<DeepPartial<ProcessStreamResponse>>;
|
30
27
|
}
|
31
28
|
//# sourceMappingURL=test-processor-server.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"test-processor-server.d.ts","sourceRoot":"","sources":["../../src/testing/test-processor-server.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,cAAc,EACd,WAAW,EACX,KAAK,EACL,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,8BAA8B,EAC9B,YAAY,EACb,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAa,oBAAoB,EAAS,MAAM,iBAAiB,CAAA;AAGxE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE3C,eAAO,MAAM,YAAY,EAAE,WAA6B,CAAA;AAExD,wBAAgB,SAAS,SAExB;AAED,qBAAa,mBAAoB,YAAW,8BAA8B;IACxE,OAAO,EAAE,oBAAoB,CAAA;IAC7B,eAAe,EAAE,cAAc,EAAE,CAAA;IACjC,cAAc,EAAE,aAAa,EAAE,CAAA;IAE/B,KAAK,EAAE,UAAU,CAAA;IACjB,GAAG,EAAE,QAAQ,CAAA;IACb,MAAM,EAAE,WAAW,CAAA;IACnB,GAAG,EAAE,QAAQ,CAAA;IACb,IAAI,EAAE,SAAS,CAAA;gBAEH,MAAM,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,EAAE,aAAa,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM;IAgB5E,KAAK,CAAC,OAAO,GAAE,YAAwC,EAAE,OAAO,cAAe,GAAG,OAAO,CAAC,KAAK,CAAC;IAQtG,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,cAAe,GAAG,OAAO,CAAC,KAAK,CAAC;IAI5D,SAAS,CAAC,OAAO,EAAE,oBAAoB,EAAE,OAAO,cAAe,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAIhG,eAAe,CACb,OAAO,EAAE,sBAAsB,EAC/B,OAAO,GAAE,WAA0B,GAClC,OAAO,CAAC,sBAAsB,CAAC;IAIlC,cAAc,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,GAAE,WAA0B,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAI1G,qBAAqB,
|
1
|
+
{"version":3,"file":"test-processor-server.d.ts","sourceRoot":"","sources":["../../src/testing/test-processor-server.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,cAAc,EACd,WAAW,EACX,WAAW,EACX,KAAK,EACL,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,8BAA8B,EAC9B,oBAAoB,EACpB,qBAAqB,EACrB,2BAA2B,EAC3B,YAAY,EACb,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAa,oBAAoB,EAAS,MAAM,iBAAiB,CAAA;AAGxE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE3C,eAAO,MAAM,YAAY,EAAE,WAA6B,CAAA;AAExD,wBAAgB,SAAS,SAExB;AAED,qBAAa,mBAAoB,YAAW,8BAA8B;IACxE,OAAO,EAAE,oBAAoB,CAAA;IAC7B,eAAe,EAAE,cAAc,EAAE,CAAA;IACjC,cAAc,EAAE,aAAa,EAAE,CAAA;IAE/B,KAAK,EAAE,UAAU,CAAA;IACjB,GAAG,EAAE,QAAQ,CAAA;IACb,MAAM,EAAE,WAAW,CAAA;IACnB,GAAG,EAAE,QAAQ,CAAA;IACb,IAAI,EAAE,SAAS,CAAA;gBAEH,MAAM,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,EAAE,aAAa,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM;IAgB5E,KAAK,CAAC,OAAO,GAAE,YAAwC,EAAE,OAAO,cAAe,GAAG,OAAO,CAAC,KAAK,CAAC;IAQtG,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,cAAe,GAAG,OAAO,CAAC,KAAK,CAAC;IAI5D,SAAS,CAAC,OAAO,EAAE,oBAAoB,EAAE,OAAO,cAAe,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAIhG,eAAe,CACb,OAAO,EAAE,sBAAsB,EAC/B,OAAO,GAAE,WAA0B,GAClC,OAAO,CAAC,sBAAsB,CAAC;IAIlC,cAAc,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,GAAE,WAA0B,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAI1G,qBAAqB,CACnB,QAAQ,EAAE,aAAa,CAAC,oBAAoB,CAAC,EAC7C,OAAO,EAAE,WAAW,GACnB,2BAA2B,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;CAOnE"}
|
@@ -50,8 +50,8 @@ export class TestProcessorServer {
|
|
50
50
|
processBinding(request, context = TEST_CONTEXT) {
|
51
51
|
return this.service.processBindings({ bindings: [request] }, context);
|
52
52
|
}
|
53
|
-
processBindingsStream(
|
54
|
-
|
53
|
+
processBindingsStream(requests, context) {
|
54
|
+
throw new Error('Method not implemented.');
|
55
55
|
}
|
56
56
|
}
|
57
57
|
//# sourceMappingURL=test-processor-server.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"test-processor-server.js","sourceRoot":"","sources":["../../src/testing/test-processor-server.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"test-processor-server.js","sourceRoot":"","sources":["../../src/testing/test-processor-server.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@sentio/sdk",
|
3
|
-
"version": "2.
|
3
|
+
"version": "2.37.0-rc.10",
|
4
4
|
"license": "Apache-2.0",
|
5
5
|
"type": "module",
|
6
6
|
"exports": {
|
@@ -35,7 +35,9 @@
|
|
35
35
|
"./sui/builtin/0x2": "./lib/sui/builtin/0x2.js",
|
36
36
|
"./sui/builtin/0x3": "./lib/sui/builtin/0x3.js",
|
37
37
|
"./fuel": "./lib/fuel/index.js",
|
38
|
-
"./fuel/codegen": "./lib/fuel/codegen/index.js"
|
38
|
+
"./fuel/codegen": "./lib/fuel/codegen/index.js",
|
39
|
+
"./store": "./lib/store/index.js",
|
40
|
+
"./store/codegen": "./lib/store/codegen.js"
|
39
41
|
},
|
40
42
|
"files": [
|
41
43
|
"{lib,src}",
|
@@ -77,8 +79,8 @@
|
|
77
79
|
"typedoc": "^0.25.7",
|
78
80
|
"utility-types": "^3.11.0",
|
79
81
|
"yaml": "^2.3.4",
|
80
|
-
"@sentio/
|
81
|
-
"@sentio/
|
82
|
+
"@sentio/protos": "2.37.0-rc.10",
|
83
|
+
"@sentio/runtime": "^2.37.0-rc.10"
|
82
84
|
},
|
83
85
|
"peerDependencies": {
|
84
86
|
"tsup": "npm:@sentio/tsup@^6.7.2"
|
@@ -97,7 +99,7 @@
|
|
97
99
|
"build": "pnpm gen && pnpm compile",
|
98
100
|
"build:all": "pnpm --filter=$(node -p \"require('./package.json').name\")... build",
|
99
101
|
"compile": "tsc && cp src/utils/*.csv lib/utils && cp src/tsup.config.ts lib",
|
100
|
-
"gen": "pnpm gen:eth && pnpm gen:aptos && pnpm gen:sui && pnpm gen:solana && pnpm gen:fuel",
|
102
|
+
"gen": "pnpm gen:eth && pnpm gen:aptos && pnpm gen:sui && pnpm gen:solana && pnpm gen:fuel && pnpm gen:store",
|
101
103
|
"gen:aptos": "tsx src/aptos/codegen/run.ts src/aptos/abis src/aptos/builtin && pnpm gen:aptos_test",
|
102
104
|
"gen:aptos_test": "tsx src/aptos/codegen/run.ts src/aptos/tests/abis src/aptos/tests/types",
|
103
105
|
"gen:docs": "typedoc --options typedoc.json",
|
@@ -106,6 +108,7 @@
|
|
106
108
|
"gen:fuel": "tsx src/fuel/codegen/run.ts src/fuel/abis src/sui/builtin && pnpm gen:fuel_test",
|
107
109
|
"gen:fuel_test": "tsx src/fuel/codegen/run.ts src/fuel/tests/abis src/fuel/tests/types",
|
108
110
|
"gen:solana": "tsx src/solana/codegen/run.ts src/solana/tests/abis src/solana/tests/types",
|
111
|
+
"gen:store": "tsx src/store/run.ts src/store/tests src/store/tests/generated",
|
109
112
|
"gen:sui": "tsx src/sui/codegen/run.ts src/sui/abis src/sui/builtin && pnpm gen:sui_test",
|
110
113
|
"gen:sui_test": "tsx src/sui/codegen/run.ts src/sui/tests/abis src/sui/tests/types",
|
111
114
|
"test": "NODE_OPTIONS=--experimental-vm-modules pnpm jest --runInBand --detectOpenHandles"
|
package/src/core/base-context.ts
CHANGED
@@ -2,13 +2,15 @@ import { ProcessResult, RecordMetaData } from '@sentio/protos'
|
|
2
2
|
import { EventLoggerBinding } from './event-logger.js'
|
3
3
|
import { Meter, Labels } from './meter.js'
|
4
4
|
import { ChainId } from '@sentio/chain'
|
5
|
-
import { mergeProcessResults } from '@sentio/runtime'
|
5
|
+
import { mergeProcessResults, PluginManager } from '@sentio/runtime'
|
6
6
|
import { Required } from 'utility-types'
|
7
7
|
import { ServerError, Status } from 'nice-grpc'
|
8
|
+
import { Store } from '../store/store.js'
|
8
9
|
|
9
10
|
export abstract class BaseContext {
|
10
11
|
meter: Meter
|
11
12
|
eventLogger: EventLoggerBinding
|
13
|
+
private _store: Store
|
12
14
|
protected baseLabels: Labels
|
13
15
|
private active: boolean
|
14
16
|
|
@@ -18,8 +20,8 @@ export abstract class BaseContext {
|
|
18
20
|
exports: [],
|
19
21
|
gauges: [],
|
20
22
|
states: {
|
21
|
-
configUpdated: false
|
22
|
-
}
|
23
|
+
configUpdated: false
|
24
|
+
}
|
23
25
|
}
|
24
26
|
|
25
27
|
public update(res: Partial<ProcessResult>) {
|
@@ -35,6 +37,7 @@ export abstract class BaseContext {
|
|
35
37
|
this.eventLogger = new EventLoggerBinding(this)
|
36
38
|
this.baseLabels = baseLabels || {}
|
37
39
|
this.active = true
|
40
|
+
this.initStore()
|
38
41
|
}
|
39
42
|
|
40
43
|
stopAndGetResult(): ProcessResult {
|
@@ -49,11 +52,26 @@ export abstract class BaseContext {
|
|
49
52
|
getMetaData(name: string, labels: Labels): RecordMetaData {
|
50
53
|
return {
|
51
54
|
...this.baseLabels,
|
52
|
-
...this.getMetaDataInternal(name, labels)
|
55
|
+
...this.getMetaDataInternal(name, labels)
|
53
56
|
}
|
54
57
|
}
|
55
58
|
|
56
59
|
protected abstract getMetaDataInternal(name: string, labels: Labels): RecordMetaData
|
57
60
|
|
58
61
|
abstract getChainId(): ChainId
|
62
|
+
|
63
|
+
get store() {
|
64
|
+
if (this._store == null) {
|
65
|
+
console.warn('Store is not set, please initialize the processor with your database schema first.')
|
66
|
+
}
|
67
|
+
return this._store
|
68
|
+
}
|
69
|
+
|
70
|
+
// this method must be called within the dbContextLocalStorage scope
|
71
|
+
initStore() {
|
72
|
+
const dbContext = PluginManager.INSTANCE.dbContextLocalStorage.getStore()
|
73
|
+
if (dbContext) {
|
74
|
+
this._store = new Store(dbContext)
|
75
|
+
}
|
76
|
+
}
|
59
77
|
}
|
package/src/core/core-plugin.ts
CHANGED
@@ -6,6 +6,7 @@ import { ExporterState } from './exporter.js'
|
|
6
6
|
import { EventTrackerState } from './event-tracker.js'
|
7
7
|
import { TemplateInstanceState } from './template.js'
|
8
8
|
import { EventLoggerState } from './event-logger.js'
|
9
|
+
import { DatabaseSchemaState } from './database-schema.js'
|
9
10
|
|
10
11
|
export class CorePlugin extends Plugin {
|
11
12
|
name: string = 'CorePlugin'
|
@@ -44,6 +45,14 @@ export class CorePlugin extends Plugin {
|
|
44
45
|
channel: exporter.channel
|
45
46
|
})
|
46
47
|
}
|
48
|
+
|
49
|
+
if (DatabaseSchemaState.INSTANCE.getValues().length > 0) {
|
50
|
+
config.dbSchema = {
|
51
|
+
gqlSchema: DatabaseSchemaState.INSTANCE.getValues()
|
52
|
+
.map((e) => e.source)
|
53
|
+
.join('\n\n')
|
54
|
+
}
|
55
|
+
}
|
47
56
|
}
|
48
57
|
}
|
49
58
|
|
@@ -0,0 +1,24 @@
|
|
1
|
+
import { ListStateStorage } from '@sentio/runtime'
|
2
|
+
import { EntityClass } from '../store/index.js'
|
3
|
+
|
4
|
+
type Schema = {
|
5
|
+
source: string
|
6
|
+
entities: Record<string, EntityClass<any>>
|
7
|
+
}
|
8
|
+
|
9
|
+
export class DatabaseSchemaState extends ListStateStorage<Schema> {
|
10
|
+
static INSTANCE = new DatabaseSchemaState()
|
11
|
+
}
|
12
|
+
|
13
|
+
export class DatabaseSchema {
|
14
|
+
static register(schema: Schema) {
|
15
|
+
DatabaseSchemaState.INSTANCE.addValue(schema)
|
16
|
+
}
|
17
|
+
|
18
|
+
static findEntity(name: string) {
|
19
|
+
const s = DatabaseSchemaState.INSTANCE.getValues().find((s) => {
|
20
|
+
return s.entities[name] != null
|
21
|
+
})
|
22
|
+
return s?.entities[name]
|
23
|
+
}
|
24
|
+
}
|
package/src/core/index.ts
CHANGED