@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.
Files changed (74) hide show
  1. package/lib/core/base-context.d.ts +4 -0
  2. package/lib/core/base-context.d.ts.map +1 -1
  3. package/lib/core/base-context.js +20 -4
  4. package/lib/core/base-context.js.map +1 -1
  5. package/lib/core/core-plugin.d.ts.map +1 -1
  6. package/lib/core/core-plugin.js +8 -0
  7. package/lib/core/core-plugin.js.map +1 -1
  8. package/lib/core/database-schema.d.ts +15 -0
  9. package/lib/core/database-schema.d.ts.map +1 -0
  10. package/lib/core/database-schema.js +16 -0
  11. package/lib/core/database-schema.js.map +1 -0
  12. package/lib/core/index.d.ts +1 -0
  13. package/lib/core/index.d.ts.map +1 -1
  14. package/lib/core/index.js +1 -0
  15. package/lib/core/index.js.map +1 -1
  16. package/lib/fuel/fuel-processor.d.ts.map +1 -1
  17. package/lib/fuel/fuel-processor.js +51 -23
  18. package/lib/fuel/fuel-processor.js.map +1 -1
  19. package/lib/store/codegen.d.ts +4 -0
  20. package/lib/store/codegen.d.ts.map +1 -0
  21. package/lib/store/codegen.js +221 -0
  22. package/lib/store/codegen.js.map +1 -0
  23. package/lib/store/context.d.ts +2 -0
  24. package/lib/store/context.d.ts.map +1 -0
  25. package/lib/store/context.js +2 -0
  26. package/lib/store/context.js.map +1 -0
  27. package/lib/store/decorators.d.ts +12 -0
  28. package/lib/store/decorators.d.ts.map +1 -0
  29. package/lib/store/decorators.js +25 -0
  30. package/lib/store/decorators.js.map +1 -0
  31. package/lib/store/entity.d.ts +17 -0
  32. package/lib/store/entity.d.ts.map +1 -0
  33. package/lib/store/entity.js +61 -0
  34. package/lib/store/entity.js.map +1 -0
  35. package/lib/store/index.d.ts +6 -0
  36. package/lib/store/index.d.ts.map +1 -0
  37. package/lib/store/index.js +6 -0
  38. package/lib/store/index.js.map +1 -0
  39. package/lib/store/run.d.ts +2 -0
  40. package/lib/store/run.d.ts.map +1 -0
  41. package/lib/store/run.js +11 -0
  42. package/lib/store/run.js.map +1 -0
  43. package/lib/store/schema.d.ts +7 -0
  44. package/lib/store/schema.d.ts.map +1 -0
  45. package/lib/store/schema.js +30 -0
  46. package/lib/store/schema.js.map +1 -0
  47. package/lib/store/store.d.ts +12 -0
  48. package/lib/store/store.d.ts.map +1 -0
  49. package/lib/store/store.js +74 -0
  50. package/lib/store/store.js.map +1 -0
  51. package/lib/store/types.d.ts +10 -0
  52. package/lib/store/types.d.ts.map +1 -0
  53. package/lib/store/types.js +2 -0
  54. package/lib/store/types.js.map +1 -0
  55. package/lib/testing/test-processor-server.d.ts +2 -5
  56. package/lib/testing/test-processor-server.d.ts.map +1 -1
  57. package/lib/testing/test-processor-server.js +2 -2
  58. package/lib/testing/test-processor-server.js.map +1 -1
  59. package/package.json +8 -5
  60. package/src/core/base-context.ts +22 -4
  61. package/src/core/core-plugin.ts +9 -0
  62. package/src/core/database-schema.ts +24 -0
  63. package/src/core/index.ts +1 -0
  64. package/src/fuel/fuel-processor.ts +64 -39
  65. package/src/store/codegen.ts +256 -0
  66. package/src/store/context.ts +1 -0
  67. package/src/store/decorators.ts +32 -0
  68. package/src/store/entity.ts +71 -0
  69. package/src/store/index.ts +5 -0
  70. package/src/store/run.ts +10 -0
  71. package/src/store/schema.ts +35 -0
  72. package/src/store/store.ts +80 -0
  73. package/src/store/types.ts +10 -0
  74. 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":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAMlC,MAAM,OAAO,MAAM;IACjB,IAAI,EAAE;QACJ,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACvB,CAAC;IAED,IAAI,GAAwB,EAAE,CAAA;IAC9B,YAAY,IAAS;QACnB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YAC5C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAA;YAC5D,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA;YAC9C,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAEO,eAAe,CAAC,MAAW;QACjC,IAAI,MAAM,YAAY,MAAM,EAAE,CAAC;YAC7B,OAAO,MAAM,CAAC,EAAE,CAAA;QAClB,CAAC;aAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;YACnD,OAAO,MAAM,CAAC,EAAE,CAAA;QAClB,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAEO,QAAQ;QACd,MAAM,SAAS,GAAG,aAAa,CAAC,QAAQ,CAAC,qBAAqB,CAAC,QAAQ,EAAE,CAAA;QACzE,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,IAAI,KAAK,CAAC,SAAS,CAAC,CAAA;QAC7B,CAAC;QACD,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,GAAG,CAAI,KAAa;QAClB,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACzB,CAAC;IAED,GAAG,CAAI,KAAa,EAAE,KAA0B;QAC9C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,YAAY,MAAM,EAAE,CAAC;YACpD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,CAAY,CAAC,EAAE,CAAC,CAAA;QACvD,CAAC;aAAM,IAAI,KAAK,YAAY,MAAM,EAAE,CAAC;YACnC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAI,KAAgB,CAAC,EAAE,CAAA;QACzC,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAA;IAC1B,CAAC;IAES,cAAc,CAAmB,MAA+B,EAAE,KAAa;QACvF,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC3B,OAAO,EAAE,CAAC,CAAC,CAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,CAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IAC3F,CAAC;IAES,mBAAmB,CAAmB,MAAsB,EAAE,KAAa;QACnF,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC5B,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAA;QAC1E,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAiB,CAAA;IAC9C,CAAC;IAED,QAAQ;QACN,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,CAAA;QACxD,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAA;QAClB,OAAO,GAAG,UAAU,IAAI,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA;IAC3D,CAAC;CACF"}
@@ -0,0 +1,6 @@
1
+ export * from './decorators.js';
2
+ export * from './types.js';
3
+ export * from './entity.js';
4
+ export * from './store.js';
5
+ export * from './context.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -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,6 @@
1
+ export * from './decorators.js';
2
+ export * from './types.js';
3
+ export * from './entity.js';
4
+ export * from './store.js';
5
+ export * from './context.js';
6
+ //# sourceMappingURL=index.js.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/store/run.ts"],"names":[],"mappings":""}
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -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(request: AsyncIterable<DataBinding>, context: CallContext): AsyncGenerator<{
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,CAAC,OAAO,EAAE,aAAa,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,WAAW;;;;CAGhF"}
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(request, context) {
54
- return this.service.processBindingsStream(request, context);
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":"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"}
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.36.1",
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/runtime": "^2.36.1",
81
- "@sentio/protos": "2.36.1"
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"
@@ -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
  }
@@ -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
@@ -10,3 +10,4 @@ export * from './event-logger.js'
10
10
  export { type Numberish, toBigInteger, toMetricValue } from './numberish.js'
11
11
 
12
12
  export { CorePlugin } from './core-plugin.js'
13
+ export { DatabaseSchema } from './database-schema.js'