envio 3.5.1 → 3.6.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.
Files changed (48) hide show
  1. package/evm.schema.json +7 -0
  2. package/fuel.schema.json +7 -0
  3. package/index.d.ts +33 -10
  4. package/package.json +6 -6
  5. package/src/ChainState.res +12 -0
  6. package/src/ChainState.res.mjs +15 -2
  7. package/src/ChainState.resi +3 -0
  8. package/src/Config.res +60 -2
  9. package/src/Config.res.mjs +49 -13
  10. package/src/EffectState.res +2 -2
  11. package/src/EffectState.res.mjs +2 -2
  12. package/src/EntityTables.res +32 -0
  13. package/src/EntityTables.res.mjs +44 -0
  14. package/src/Envio.res +7 -7
  15. package/src/Envio.res.mjs +5 -6
  16. package/src/Hasura.res +37 -3
  17. package/src/Hasura.res.mjs +23 -5
  18. package/src/InMemoryStore.res +48 -8
  19. package/src/InMemoryStore.res.mjs +37 -7
  20. package/src/IndexerState.res +30 -24
  21. package/src/IndexerState.res.mjs +20 -35
  22. package/src/IndexerState.resi +8 -6
  23. package/src/Internal.res +29 -11
  24. package/src/Internal.res.mjs +27 -10
  25. package/src/LoadLayer.res +39 -8
  26. package/src/LoadLayer.res.mjs +36 -9
  27. package/src/LoadLayer.resi +2 -0
  28. package/src/Persistence.res +12 -1
  29. package/src/PgStorage.res +183 -37
  30. package/src/PgStorage.res.mjs +149 -34
  31. package/src/PruneStaleHistory.res +1 -0
  32. package/src/PruneStaleHistory.res.mjs +2 -1
  33. package/src/Sink.res +3 -3
  34. package/src/Sink.res.mjs +2 -2
  35. package/src/TestIndexer.res +128 -17
  36. package/src/TestIndexer.res.mjs +75 -9
  37. package/src/UserContext.res +19 -4
  38. package/src/UserContext.res.mjs +15 -9
  39. package/src/Writing.res +8 -16
  40. package/src/Writing.res.mjs +10 -10
  41. package/src/bindings/ClickHouse.res +40 -4
  42. package/src/bindings/ClickHouse.res.mjs +37 -5
  43. package/src/db/EntityHistory.res +64 -21
  44. package/src/db/EntityHistory.res.mjs +43 -22
  45. package/src/db/InternalTable.res.mjs +31 -31
  46. package/src/db/Table.res +24 -1
  47. package/src/db/Table.res.mjs +26 -4
  48. package/svm.schema.json +7 -0
@@ -16,11 +16,12 @@ function makeEnumConfig(name, variants) {
16
16
  };
17
17
  }
18
18
 
19
- function mkField(fieldName, fieldType, fieldSchema, $$default, isArrayOpt, isNullableOpt, isPrimaryKeyOpt, isIndexOpt, linkedEntity, description, postgresDbName, clickhouseDbName) {
19
+ function mkField(fieldName, fieldType, fieldSchema, $$default, isArrayOpt, isNullableOpt, isPrimaryKeyOpt, isIndexOpt, isChainIdOpt, linkedEntity, description, postgresDbName, clickhouseDbName) {
20
20
  let isArray = isArrayOpt !== undefined ? isArrayOpt : false;
21
21
  let isNullable = isNullableOpt !== undefined ? isNullableOpt : false;
22
22
  let isPrimaryKey = isPrimaryKeyOpt !== undefined ? isPrimaryKeyOpt : false;
23
23
  let isIndex = isIndexOpt !== undefined ? isIndexOpt : false;
24
+ let isChainId = isChainIdOpt !== undefined ? isChainIdOpt : false;
24
25
  return {
25
26
  TAG: "Field",
26
27
  _0: {
@@ -31,6 +32,7 @@ function mkField(fieldName, fieldType, fieldSchema, $$default, isArrayOpt, isNul
31
32
  isNullable: isNullable,
32
33
  isPrimaryKey: isPrimaryKey,
33
34
  isIndex: isIndex,
35
+ isChainId: isChainId,
34
36
  linkedEntity: linkedEntity,
35
37
  defaultValue: $$default,
36
38
  description: description,
@@ -225,6 +227,18 @@ function getDerivedFromFields(table) {
225
227
  });
226
228
  }
227
229
 
230
+ function getChainIdField(table) {
231
+ return Stdlib_Array.findMap(table.fields, field => {
232
+ if (field.TAG !== "Field") {
233
+ return;
234
+ }
235
+ let field$1 = field._0;
236
+ if (field$1.isChainId) {
237
+ return field$1;
238
+ }
239
+ });
240
+ }
241
+
228
242
  function getFieldByName(table, fieldName) {
229
243
  return table.fields.find(field => getUserDefinedFieldName(field) === fieldName);
230
244
  }
@@ -288,7 +302,8 @@ let queryFields = Utils.$$WeakMap.memoize(table => {
288
302
  return dict;
289
303
  });
290
304
 
291
- function makeRowsSchema(table, rowFieldName) {
305
+ function makeRowsSchema(table, rowFieldName, skipChainIdOpt) {
306
+ let skipChainId = skipChainIdOpt !== undefined ? skipChainIdOpt : false;
292
307
  return S$RescriptSchema.array(S$RescriptSchema.object(s => {
293
308
  let dict = {};
294
309
  table.fields.forEach(field => {
@@ -296,15 +311,20 @@ function makeRowsSchema(table, rowFieldName) {
296
311
  return;
297
312
  }
298
313
  let field$1 = field._0;
314
+ if (field$1.isChainId && skipChainId) {
315
+ return;
316
+ }
299
317
  dict[getApiFieldName(field$1)] = s.f(rowFieldName(field$1), field$1.fieldSchema);
300
318
  });
301
319
  return dict;
302
320
  }));
303
321
  }
304
322
 
305
- let rowsSchema = Utils.$$WeakMap.memoize(table => makeRowsSchema(table, getApiFieldName));
323
+ let rowsSchema = Utils.$$WeakMap.memoize(table => makeRowsSchema(table, getApiFieldName, undefined));
324
+
325
+ let pgRowsSchema = Utils.$$WeakMap.memoize(table => makeRowsSchema(table, getPgDbFieldName, undefined));
306
326
 
307
- let pgRowsSchema = Utils.$$WeakMap.memoize(table => makeRowsSchema(table, getPgDbFieldName));
327
+ let pgEntityRowsSchema = Utils.$$WeakMap.memoize(table => makeRowsSchema(table, getPgDbFieldName, true));
308
328
 
309
329
  let NonExistingTableField = /* @__PURE__ */Primitive_exceptions.create("Table.NonExistingTableField");
310
330
 
@@ -465,6 +485,7 @@ export {
465
485
  getNonDefaultFields,
466
486
  getLinkedEntityFields,
467
487
  getDerivedFromFields,
488
+ getChainIdField,
468
489
  getFieldByName,
469
490
  NoIdField,
470
491
  getIdFieldOrThrow,
@@ -477,6 +498,7 @@ export {
477
498
  makeRowsSchema,
478
499
  rowsSchema,
479
500
  pgRowsSchema,
501
+ pgEntityRowsSchema,
480
502
  NonExistingTableField,
481
503
  getUnfilteredCompositeIndexesUnsafe,
482
504
  toSqlParams,
package/svm.schema.json CHANGED
@@ -49,6 +49,13 @@
49
49
  }
50
50
  ]
51
51
  },
52
+ "disable_default_cross_chain": {
53
+ "description": "Make entities and effect caches per-chain instead of shared across every chain (recommended). Sharing then becomes explicit — add `@crossChain` to an entity in schema.graphql or `crossChain: true` to an effect. (default: false)",
54
+ "type": [
55
+ "boolean",
56
+ "null"
57
+ ]
58
+ },
52
59
  "ecosystem": {
53
60
  "description": "Ecosystem of the project.",
54
61
  "$ref": "#/$defs/EcosystemTag"