Skip to content

Fix issues with POI array types#2972

Merged
stwiname merged 3 commits intomainfrom
poi-arrays
Nov 19, 2025
Merged

Fix issues with POI array types#2972
stwiname merged 3 commits intomainfrom
poi-arrays

Conversation

@stwiname
Copy link
Copy Markdown
Collaborator

@stwiname stwiname commented Nov 19, 2025

Description

Fixes arrays of certain types (BigInt, Bytes and Date) not working with POI. For backwards compatibility, existing types that would work with arrays has been left as is for backwards compatibility.

Type of change

Please delete options that are not relevant.

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • This change requires a documentation update

Checklist

  • I have tested locally
  • I have performed a self review of my changes
  • Updated any relevant documentation
  • Linked to any relevant issues
  • I have added tests relevant to my changes
  • Any dependent changes have been merged and published in downstream modules
  • My code is up to date with the base branch
  • I have updated relevant changelogs. We suggest using chan

Summary by CodeRabbit

  • Bug Fixes

    • Fixed Proof of Indexing (POI) calculation errors when operations include array-typed fields, ensuring correct POI for arrays of primitives and complex types.
  • Tests

    • Added/updated tests to validate POI and operation hashing behavior for array fields to prevent regressions.

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Nov 19, 2025

Walkthrough

This PR fixes POI handling for array-typed fields by changing merkle data buffering: for arrays of BigInt, Bytes, or Date each item is hashed separately; other arrays are hashed as a whole. Tests and changelog entries were added.

Changes

Cohort / File(s) Summary
CHANGELOG entries
packages/node-core/CHANGELOG.md, packages/node/CHANGELOG.md
Added "Fixed" entries documenting POI array field issue resolution (#2972).
Tests
packages/node-core/src/indexer/StoreOperations.spec.ts
Added "arrays" test suite with two tests validating merkle root generation for array-typed fields and per-item hashing behavior.
Core logic
packages/node-core/src/indexer/StoreOperations.ts
Adjusted merkle data buffering: for array fields whose item type is BigInt, Bytes, or Date, compute and append per-item hashes; otherwise hash the entire array field as before. Removed u8aToHex import.

Sequence Diagram(s)

sequenceDiagram
  participant StoreOps as StoreOperations
  participant Merkle as MerkleBuffer
  participant Hasher as Hasher

  Note over StoreOps: Processing a field (array or non-array)
  StoreOps->>Merkle: inspect field type
  alt non-array field
    StoreOps->>Hasher: hash(field value)
    Hasher-->>Merkle: append leaf
  else array field (old)
    StoreOps->>Hasher: hash(entire array)
    Hasher-->>Merkle: append single leaf
  else array field (new - BigInt/Bytes/Date)
    loop for each item
      StoreOps->>Hasher: hash(item)
      Hasher-->>Merkle: append leaf
    end
  end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

  • Review type-detection and per-item hashing branches in StoreOperations.ts.
  • Verify tests in StoreOperations.spec.ts cover edge cases (empty arrays, mixed types if applicable).
  • Ensure removal of u8aToHex import did not affect other logic.

Poem

🐰 I hopped through arrays with a curious stare,
Split each BigInt, Byte, and Date with care.
Now merkle leaves line up in a row,
POI sings steady — steady we go. 🥕✨

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'Fix issues with POI array types' directly and accurately summarizes the main change: fixing POI (Proof of Integrity) handling for array fields with specific types (BigInt, Bytes, Date).
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch poi-arrays

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 2c86c24 and c716636.

📒 Files selected for processing (2)
  • packages/node-core/src/indexer/StoreOperations.spec.ts (2 hunks)
  • packages/node-core/src/indexer/StoreOperations.ts (2 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • packages/node-core/src/indexer/StoreOperations.ts
🧰 Additional context used
🧬 Code graph analysis (1)
packages/node-core/src/indexer/StoreOperations.spec.ts (2)
packages/utils/src/graphql/types.ts (1)
  • GraphQLModelsType (33-43)
packages/node-core/src/indexer/StoreOperations.ts (1)
  • StoreOperations (10-92)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: code-style
  • GitHub Check: Coverage report
🔇 Additional comments (3)
packages/node-core/src/indexer/StoreOperations.spec.ts (3)

4-4: LGTM!

The addition of GraphQLModelsType to the imports is appropriate and necessary for the new array tests.


285-324: LGTM!

This test effectively validates backward compatibility for array types that were previously hashed as a single value. The hardcoded expected hash provides good regression protection.


326-421: Great fix! Comprehensive test coverage for all array types.

The field name mismatch from the previous review has been resolved - booleanArray is now consistent between the model definition (line 346) and test data (line 403).

All eight array types are properly tested with appropriate sample data, and field names consistently match between model definitions and test data throughout. The test effectively validates the new per-item hashing behavior for BigInt, Bytes, and Date arrays while ensuring other types maintain backward compatibility.


Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 09d699d and 2c86c24.

📒 Files selected for processing (4)
  • packages/node-core/CHANGELOG.md (1 hunks)
  • packages/node-core/src/indexer/StoreOperations.spec.ts (2 hunks)
  • packages/node-core/src/indexer/StoreOperations.ts (2 hunks)
  • packages/node/CHANGELOG.md (1 hunks)
🧰 Additional context used
🧬 Code graph analysis (1)
packages/node-core/src/indexer/StoreOperations.spec.ts (2)
packages/utils/src/graphql/types.ts (1)
  • GraphQLModelsType (33-43)
packages/node-core/src/indexer/StoreOperations.ts (1)
  • StoreOperations (10-92)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: Coverage report
  • GitHub Check: code-style
🔇 Additional comments (3)
packages/node/CHANGELOG.md (1)

8-9: LGTM!

The changelog entry correctly documents the fix for POI issues with array fields.

packages/node-core/CHANGELOG.md (1)

8-9: LGTM!

The changelog entry correctly documents the fix for POI issues with array fields.

packages/node-core/src/indexer/StoreOperations.spec.ts (1)

282-324: LGTM!

This test correctly validates backward compatibility for String arrays, ensuring they continue to be hashed as a single value rather than per-item.

Comment on lines +326 to +421
it('Can generate an operation hash all types as an array', () => {
const models: GraphQLModelsType[] = [
{
name: 'DelegationEntity',
fields: [
{
name: 'id',
type: 'ID',
isArray: false,
nullable: false,
isEnum: false,
},
{
name: 'bigIntArray',
type: 'BigInt',
isArray: true,
nullable: false,
isEnum: false,
},
{
name: 'boolArray',
type: 'Boolean',
isArray: true,
nullable: false,
isEnum: false,
},
{
name: 'bytesArray',
type: 'Bytes',
isArray: true,
nullable: false,
isEnum: false,
},
{
name: 'dateArray',
type: 'Date',
isArray: true,
nullable: false,
isEnum: false,
},
{
name: 'floatArray',
type: 'Float',
isArray: true,
nullable: false,
isEnum: false,
},
{
name: 'intArray',
type: 'Int',
isArray: true,
nullable: false,
isEnum: false,
},
{
name: 'jsonArray',
type: 'Json',
isArray: true,
nullable: false,
isEnum: false,
},
{
name: 'stringArray',
type: 'String',
isArray: true,
nullable: false,
isEnum: false,
},
],
indexes: <any[]>[],
},
];
const operationStack = new StoreOperations(models);

const data = {
id: 'Test',
bigIntArray: [200000000000000000000000n, 1000000000000000000000n],
booleanArray: [true, false],
bytesArray: [Buffer.from('hello'), Buffer.from('world')],
dateArray: [new Date('2020-05-29T13:28:36.000Z'), new Date('2021-05-29T13:28:36.000Z')],
floatArray: [3.14, 2.71],
intArray: [42, 69],
jsonArray: [{foo: 'bar'}, {baz: 123}],
stringArray: ['Hello', 'World'],
};

operationStack.put(OperationType.Set, 'DelegationEntity', data);

operationStack.makeOperationMerkleTree();
expect(operationStack.getOperationLeafCount()).toBe(1);
const mRoot = operationStack.getOperationMerkleRoot();

expect(Buffer.from(mRoot!).toString('hex')).toEqual(
'43cd725db69074a79a180875507033219d2da8957e21e551d31118daf8375865'
);
});
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Fix the field name mismatch for the boolean array.

There's a mismatch between the model field name and the data property name:

  • Line 346: Model defines the field as boolArray
  • Line 403: Test data uses booleanArray

This mismatch means the boolean array is not being tested as intended.

Apply this diff to fix the field name:

             {
-              name: 'boolArray',
+              name: 'booleanArray',
               type: 'Boolean',
               isArray: true,
               nullable: false,
               isEnum: false,
             },
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
it('Can generate an operation hash all types as an array', () => {
const models: GraphQLModelsType[] = [
{
name: 'DelegationEntity',
fields: [
{
name: 'id',
type: 'ID',
isArray: false,
nullable: false,
isEnum: false,
},
{
name: 'bigIntArray',
type: 'BigInt',
isArray: true,
nullable: false,
isEnum: false,
},
{
name: 'boolArray',
type: 'Boolean',
isArray: true,
nullable: false,
isEnum: false,
},
{
name: 'bytesArray',
type: 'Bytes',
isArray: true,
nullable: false,
isEnum: false,
},
{
name: 'dateArray',
type: 'Date',
isArray: true,
nullable: false,
isEnum: false,
},
{
name: 'floatArray',
type: 'Float',
isArray: true,
nullable: false,
isEnum: false,
},
{
name: 'intArray',
type: 'Int',
isArray: true,
nullable: false,
isEnum: false,
},
{
name: 'jsonArray',
type: 'Json',
isArray: true,
nullable: false,
isEnum: false,
},
{
name: 'stringArray',
type: 'String',
isArray: true,
nullable: false,
isEnum: false,
},
],
indexes: <any[]>[],
},
];
const operationStack = new StoreOperations(models);
const data = {
id: 'Test',
bigIntArray: [200000000000000000000000n, 1000000000000000000000n],
booleanArray: [true, false],
bytesArray: [Buffer.from('hello'), Buffer.from('world')],
dateArray: [new Date('2020-05-29T13:28:36.000Z'), new Date('2021-05-29T13:28:36.000Z')],
floatArray: [3.14, 2.71],
intArray: [42, 69],
jsonArray: [{foo: 'bar'}, {baz: 123}],
stringArray: ['Hello', 'World'],
};
operationStack.put(OperationType.Set, 'DelegationEntity', data);
operationStack.makeOperationMerkleTree();
expect(operationStack.getOperationLeafCount()).toBe(1);
const mRoot = operationStack.getOperationMerkleRoot();
expect(Buffer.from(mRoot!).toString('hex')).toEqual(
'43cd725db69074a79a180875507033219d2da8957e21e551d31118daf8375865'
);
});
it('Can generate an operation hash all types as an array', () => {
const models: GraphQLModelsType[] = [
{
name: 'DelegationEntity',
fields: [
{
name: 'id',
type: 'ID',
isArray: false,
nullable: false,
isEnum: false,
},
{
name: 'bigIntArray',
type: 'BigInt',
isArray: true,
nullable: false,
isEnum: false,
},
{
name: 'booleanArray',
type: 'Boolean',
isArray: true,
nullable: false,
isEnum: false,
},
{
name: 'bytesArray',
type: 'Bytes',
isArray: true,
nullable: false,
isEnum: false,
},
{
name: 'dateArray',
type: 'Date',
isArray: true,
nullable: false,
isEnum: false,
},
{
name: 'floatArray',
type: 'Float',
isArray: true,
nullable: false,
isEnum: false,
},
{
name: 'intArray',
type: 'Int',
isArray: true,
nullable: false,
isEnum: false,
},
{
name: 'jsonArray',
type: 'Json',
isArray: true,
nullable: false,
isEnum: false,
},
{
name: 'stringArray',
type: 'String',
isArray: true,
nullable: false,
isEnum: false,
},
],
indexes: <any[]>[],
},
];
const operationStack = new StoreOperations(models);
const data = {
id: 'Test',
bigIntArray: [200000000000000000000000n, 1000000000000000000000n],
booleanArray: [true, false],
bytesArray: [Buffer.from('hello'), Buffer.from('world')],
dateArray: [new Date('2020-05-29T13:28:36.000Z'), new Date('2021-05-29T13:28:36.000Z')],
floatArray: [3.14, 2.71],
intArray: [42, 69],
jsonArray: [{foo: 'bar'}, {baz: 123}],
stringArray: ['Hello', 'World'],
};
operationStack.put(OperationType.Set, 'DelegationEntity', data);
operationStack.makeOperationMerkleTree();
expect(operationStack.getOperationLeafCount()).toBe(1);
const mRoot = operationStack.getOperationMerkleRoot();
expect(Buffer.from(mRoot!).toString('hex')).toEqual(
'43cd725db69074a79a180875507033219d2da8957e21e551d31118daf8375865'
);
});
🤖 Prompt for AI Agents
packages/node-core/src/indexer/StoreOperations.spec.ts around lines 326 to 421:
the test data uses the property name booleanArray but the model field is defined
as boolArray, so the boolean array field is never matched; rename the data
property from booleanArray to boolArray in the test data object (line ~403) so
it matches the model, then re-run tests to verify the operation hash unchanged.

Comment thread packages/node-core/src/indexer/StoreOperations.ts Outdated
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Nov 19, 2025

Coverage report for .

St.
Category Percentage Covered / Total
🟢 Statements
87.63% (+17.53% 🔼)
71034/81058
🟢 Branches
80.87% (+2.58% 🔼)
3391/4193
🟡 Functions
66.74% (+4.24% 🔼)
1274/1909
🟢 Lines
87.63% (+17.53% 🔼)
71034/81058
Show new covered files 🐣
St.
File Statements Branches Functions Lines
🔴
... / utils.ts
46.2% 74.07% 35.71% 46.2%
🔴
... / build-manifest.ts
42.47% 100% 25% 42.47%
🟡
... / build.ts
68.82% 70% 75% 68.82%
🟡
... / import-abi.ts
71.28% 48% 75% 71.28%
🔴
... / mcp.ts
33.33% 100% 0% 33.33%
🟢
... / migrate.ts
81.37% 30% 75% 81.37%
🔴
... / add-deployment-boost.ts
45.54% 100% 0% 45.54%
🔴
... / connect-wallet.ts
50.68% 100% 25% 50.68%
🔴
... / create-api-key.ts
50.68% 100% 25% 50.68%
🔴
... / create-deployment.ts
41.73% 100% 0% 41.73%
🔴
... / create-flex-plan.ts
38.64% 100% 25% 38.64%
🔴
... / create-project.ts
32.35% 100% 0% 32.35%
🔴
... / disconnect-wallet.ts
41.46% 100% 25% 41.46%
🔴
... / list-account-boosts.ts
42.05% 100% 25% 42.05%
🔴
... / list-api-keys.ts
47.95% 100% 25% 47.95%
🔴
... / list-deployment-boosts.ts
42.86% 100% 25% 42.86%
🔴
... / list-deployment-indexers.ts
39.76% 100% 25% 39.76%
🔴
... / list-deployments.ts
42.03% 100% 25% 42.03%
🔴
... / list-flex-plans.ts
37.23% 100% 25% 37.23%
🔴
... / list-projects.ts
42.39% 100% 25% 42.39%
🔴
... / remove-api-key.ts
46.15% 100% 25% 46.15%
🔴
... / remove-deployment-boost.ts
47.47% 100% 0% 47.47%
🔴
... / stop-flex-plan.ts
45.12% 100% 25% 45.12%
🔴
... / swap-deployment-boost.ts
46.85% 100% 0% 46.85%
🔴
... / create-deployment.ts
34.01% 100% 25% 34.01%
🔴
... / create-multichain-deployment.ts
30.99% 100% 25% 30.99%
🔴
... / create-project.ts
52.27% 100% 25% 52.27%
🔴
... / delete-deployment.ts
55.56% 100% 25% 55.56%
🔴
... / delete-project.ts
46.55% 100% 25% 46.55%
🔴
... / promote-deployment.ts
57.58% 100% 25% 57.58%
🟢
... / migrate-abis.controller.ts
95% 87.5% 100% 95%
🟢
... / constants.ts
100% 100% 100% 100%
🟢
... / index.ts
100% 100% 100% 100%
🟢
... / ethereum.ts
82.72% 83.33% 100% 82.72%
🟢
... / migrate-manifest.controller.ts
88.31% 72.41% 88.89% 88.31%
🟢
... / migrate-mapping.controller.ts
100% 100% 100% 100%
🟢
... / migrate-controller.ts
90.63% 82.76% 100% 90.63%
🟢
... / migrate.fixtures.ts
100% 100% 100% 100%
🟢
... / migrate-schema.controller.ts
97.23% 79.75% 100% 97.23%
🔴
... / types.ts
0% 0% 0% 0%
🟢
... / base-types.ts
100% 100% 100% 100%
🟢
... / deployments.generated.ts
100% 100% 100% 100%
🟢
... / deploymentsBooster.generated.ts
100% 100% 100% 100%
🔴
... / flexPlan.generated.ts
0% 0% 0% 0%
🟢
... / projects.generated.ts
100% 100% 100% 100%
🔴
... / constants.ts
40.24% 100% 0% 40.24%
🔴
... / client.ts
29.08% 100% 0% 29.08%
🔴
... / consumer-host-service-api.ts
44.1% 100% 0% 44.1%
🟡
... / schemas.ts
63.93% 100% 20% 63.93%
🔴
... / contract-errors.ts
0% 0% 0% 0%
🔴
... / json-file-store.ts
42.37% 100% 0% 42.37%
🔴
... / list-account-boosts.ts
41.18% 100% 0% 41.18%
🔴
... / list-deployment-boosts.ts
38.33% 100% 0% 38.33%
🔴
... / list-deployment-indexers.ts
46.6% 100% 0% 46.6%
🔴
... / list-deployments.ts
38.33% 100% 0% 38.33%
🔴
... / list-flex-plans.ts
45% 100% 0% 45%
🔴
... / list-projects.ts
46.55% 100% 0% 46.55%
🔴
... / utils.ts
18.18% 100% 0% 18.18%
🔴
... / walletconnect-signer.ts
24.53% 100% 0% 24.53%
🟢
... / createProject.fixtures.ts
95% 81.82% 100% 95%
🟢
... / config.ts
100% 100% 100% 100%
🟢
... / index.ts
100% 100% 100% 100%
🟡
... / moduleLoader.ts
60% 33.33% 100% 60%
🟢
... / types.ts
100% 100% 100% 100%
🟢
... / env.ts
93.75% 75% 100% 93.75%
🟢
... / etherscan.ts
92.5% 76.47% 100% 92.5%
🟢
... / jsonToTable.ts
93.44% 90.91% 100% 93.44%
🟢
... / networkFamily.ts
92.59% 88.89% 100% 92.59%
🟢
... / IPFSHTTPClientLite.ts
95.59% 80% 88.89% 95.59%
🟢
... / index.ts
100% 100% 100% 100%
🟢
... / utils.ts
92% 66.67% 100% 92%
🟢
... / admin.controller.ts
98.52% 96% 78.57% 98.52%
🟢
... / blockRange.ts
88.89% 100% 80% 88.89%
🟢
... / index.ts
100% 100% 100% 100%
🟢
... / blockchain.service.ts
100% 100% 100% 100%
🟢
... / SubqueryProject.ts
96.53% 83.33% 83.33% 96.53%
🟡
... / factory.ts
78.31% 66.67% 100% 78.31%
🟢
... / core.module.ts
100% 100% 100% 100%
🟢
... / dictionary.fixtures.ts
100% 100% 100% 100%
🟢
... / GlobalData.entity.ts
100% 100% 100% 100%
🟢
... / monitor.service.ts
94.4% 87.21% 96.97% 94.4%
🟢
... / multiChainRewind.service.ts
98.02% 91.67% 100% 98.02%
🔴
... / sandbox.service.ts
49.32% 50% 33.33% 49.32%
🟢
... / baseCache.service.ts
94.59% 91.67% 83.33% 94.59%
🟢
... / baseStoreModel.service.ts
93.22% 84.62% 100% 93.22%
🟢
... / cacheable.ts
89.29% 75% 100% 89.29%
🟢
... / csvStore.ts
91.67% 73.68% 100% 91.67%
🟢
... / exporter.ts
91.67% 71.43% 71.43% 91.67%
🟢
... / index.ts
100% 100% 100% 100%
🟢
... / global.ts
97.5% 92.59% 87.5% 97.5%
🔴
... / index.ts
0% 0% 0% 0%
🟢
... / index.ts
100% 100% 100% 100%
🟡
... / cacheMetadata.ts
79.57% 68.29% 92.86% 79.57%
🟢
... / index.ts
100% 100% 100% 100%
🟢
... / metadata.ts
86.75% 100% 66.67% 86.75%
🟢
... / utils.ts
100% 100% 100% 100%
🟢
... / cacheModel.ts
87.05% 81.48% 89.47% 87.05%
🟢
... / index.ts
100% 100% 100% 100%
🟢
... / model.ts
89.94% 72.73% 100% 89.94%
🟢
... / utils.ts
100% 100% 100% 100%
🟢
... / cachePoi.ts
95.79% 89.47% 100% 95.79%
🟢
... / index.ts
100% 100% 100% 100%
🔴
... / poi.ts
54.46% 71.43% 44.44% 54.46%
🟢
... / setValueModel.ts
85.26% 80% 78.57% 85.26%
🟢
... / storeCache.service.ts
84.18% 75.76% 83.33% 84.18%
🟡
... / storeModel.service.ts
74.73% 53.85% 71.43% 74.73%
🟢
... / types.ts
100% 100% 100% 100%
🟢
... / utils.ts
93.33% 66.67% 100% 93.33%
🟢
... / worker.core.module.ts
100% 100% 0% 100%
🔴
... / worker.monitor.service.ts
58.14% 100% 0% 58.14%
🟢
... / meta.controller.ts
86.67% 100% 0% 86.67%
🟡
... / meta.module.ts
60% 100% 0% 60%
🟢
... / process.ts
80.65% 57.14% 80% 80.65%
🔴
... / foreceClean.init.ts
47.62% 100% 0% 47.62%
🔴
... / reindex.init.ts
33.33% 100% 0% 33.33%
🟢
... / testing.core.module.ts
100% 100% 100% 100%
🟢
... / env.ts
93.88% 77.78% 100% 93.88%
🟢
... / autoQueue.ts
95.34% 90.2% 87.5% 95.34%
🟢
... / index.ts
100% 100% 100% 100%
🟢
... / queue.ts
87.5% 92.86% 83.33% 87.5%
🟢
... / rampQueue.ts
90.43% 81.82% 100% 90.43%
🟢
... / string.ts
100% 95.45% 100% 100%
🟡
... / blockchain.service.ts
63.13% 100% 57.14% 63.13%
🔴
... / datasourceProcessors.ts
0% 0% 0% 0%
🔴
... / index.ts
0% 0% 0% 0%
🔴
... / types.ts
0% 0% 0% 0%
🔴
... / networking.ts
31.58% 100% 0% 31.58%
Show files with reduced coverage 🔻
St.
File Statements Branches Functions Lines
🟡
... / index.ts
71.58% (-20.36% 🔻)
66.67% (+41.67% 🔼)
75% (-25% 🔻)
71.58% (-20.36% 🔻)
🔴
... / add.ts
48.44% (-13.63% 🔻)
100%
25% (+25% 🔼)
48.44% (-13.63% 🔻)
🟢
... / publish.ts
80.49% (-8.85% 🔻)
53.33% (-3.81% 🔻)
75% (-25% 🔻)
80.49% (-8.85% 🔻)
🔴
... / add-chain-controller.ts
40.07% (-0% 🔻)
66.67% 30%
40.07% (-0% 🔻)
🟢
... / build-controller.ts
90% (-1.3% 🔻)
59.09% (+1.95% 🔼)
100%
90% (-1.3% 🔻)
🟢
... / codegen-controller.ts
88.19% (-1.2% 🔻)
82.05% (+6.47% 🔼)
100%
88.19% (-1.2% 🔻)
🔴
... / deploy-controller.ts
54.19% (+16.73% 🔼)
72.73% (-5.05% 🔻)
56.25% (+31.25% 🔼)
54.19% (+16.73% 🔼)
🟢
... / generate-controller.ts
95.66% (-1.99% 🔻)
90.91% (-3.12% 🔻)
95.65% (-4.35% 🔻)
95.66% (-1.99% 🔻)
🟡
... / init-controller.ts
75.6% (+5.12% 🔼)
63.64% (-4.36% 🔻)
61.11% (+7.78% 🔼)
75.6% (+5.12% 🔼)
🟢
... / project-controller.ts
83.13% (-14.13% 🔻)
42.86% (-17.14% 🔻)
75% (-25% 🔻)
83.13% (-14.13% 🔻)
🟢
... / publish-controller.ts
82.63% (+2.38% 🔼)
67.5% (-3.61% 🔻)
100%
82.63% (+2.38% 🔼)
🟢
... / http.ts
90.63% (-2.92% 🔻)
75% (+8.33% 🔼)
100%
90.63% (-2.92% 🔻)
🟡
... / utils.ts
76.15% (-4.93% 🔻)
84.48% (+3.78% 🔼)
83.87% (+6.6% 🔼)
76.15% (-4.93% 🔻)
🟡
... / load.ts
79.41% (-8.82% 🔻)
66.67% (-19.05% 🔻)
100%
79.41% (-8.82% 🔻)
🟢
... / models.ts
81.11% (-18.33% 🔻)
94.12% (+1.81% 🔼)
30.77% (-69.23% 🔻)
81.11% (-18.33% 🔻)
🟢
... / ProjectManifestVersioned.ts
82.19% (-2.74% 🔻)
88.89% (-11.11% 🔻)
61.54% (+3.21% 🔼)
82.19% (-2.74% 🔻)
🟡
... / models.ts
76.47% (-23.53% 🔻)
100%
0% (-100% 🔻)
76.47% (-23.53% 🔻)
🟡
... / load.ts
64.29% (+5.1% 🔼)
38.89% (-16.67% 🔻)
83.33% (+16.67% 🔼)
64.29% (+5.1% 🔼)
🟢
... / local-reader.ts
100% (+13.95% 🔼)
100% (+37.5% 🔼)
83.33% (-16.67% 🔻)
100% (+13.95% 🔼)
🟢
... / base.ts
86.92% (-11.08% 🔻)
87.5% (-12.5% 🔻)
44.44% (-35.56% 🔻)
86.92% (-11.08% 🔻)
🔴
... / models.ts
56.89% (-43.11% 🔻)
100%
0% (-100% 🔻)
56.89% (-43.11% 🔻)
🟢
... / NodeConfig.ts
88.72% (+0.11% 🔼)
82.86% (+3.23% 🔼)
85.19% (-0.86% 🔻)
88.72% (+0.11% 🔼)
🟢
... / ProjectUpgrade.service.ts
93.5% (+6.43% 🔼)
91.3% (-0.05% 🔻)
96% (+4.7% 🔼)
93.5% (+6.43% 🔼)
🟢
... / configure.module.ts
82.67% (-1.9% 🔻)
71.15% (+7.15% 🔼)
100%
82.67% (-1.9% 🔻)
🟢
... / db.module.ts
89.63% (+1.35% 🔼)
62.5% (-20.83% 🔻)
80%
89.63% (+1.35% 🔼)
🟢
... / migration.ts
86.56% (+4.28% 🔼)
82.61% (+2.88% 🔼)
90% (-0.48% 🔻)
86.56% (+4.28% 🔼)
🟢
... / sequelizeUtil.ts
81.08% (-9.99% 🔻)
69.23% (-1.14% 🔻)
62.5%
81.08% (-9.99% 🔻)
🟢
... / StoreOperations.ts
83.7% (-8.61% 🔻)
63.16% (-21.84% 🔻)
100%
83.7% (-8.61% 🔻)
🟢
... / base-block-dispatcher.ts
84.85% (+37.5% 🔼)
83.67% (-16.33% 🔻)
78.26% (+68.26% 🔼)
84.85% (+37.5% 🔼)
🟢
... / worker-block-dispatcher.ts
92.72% (+42.51% 🔼)
87.1% (-12.9% 🔻)
94.12% (+66.84% 🔼)
92.72% (+42.51% 🔼)
🟢
... / coreDictionary.ts
94.87% (-5.13% 🔻)
87.5% (-6.94% 🔻)
87.5% (-12.5% 🔻)
94.87% (-5.13% 🔻)
🟢
... / dictionary.service.ts
84.18% (-0.96% 🔻)
80% (-5.71% 🔻)
90.91%
84.18% (-0.96% 🔻)
🟢
... / dictionaryV1.ts
90.08% (-3.14% 🔻)
75% (-3.26% 🔻)
100%
90.08% (-3.14% 🔻)
🔴
... / ds-processor.service.ts
47.32% (-14.77% 🔻)
75%
63.64% (-23.86% 🔻)
47.32% (-14.77% 🔻)
🟢
... / dynamic-ds.service.ts
90.85% (+0.65% 🔼)
63.64% (-3.03% 🔻)
90% (+4.29% 🔼)
90.85% (+0.65% 🔼)
🟢
... / inMemoryCache.service.ts
100% 100%
75% (-25% 🔻)
100%
🔴
... / indexer.manager.ts
32.75% (-0.46% 🔻)
100%
10% (-2.5% 🔻)
32.75% (-0.46% 🔻)
🟢
... / PoiBlock.ts
91.13% (-7.26% 🔻)
96.55%
75% (-25% 🔻)
91.13% (-7.26% 🔻)
🟡
... / poi.service.ts
68.28% (+44.36% 🔼)
57.69% (-42.31% 🔻)
88.89% (+60.32% 🔼)
68.28% (+44.36% 🔼)
🔴
... / store.ts
45.98% (+13.77% 🔼)
62.5% (-37.5% 🔻)
33.33% (+33.33% 🔼)
45.98% (+13.77% 🔼)
🔴
... / testing.service.ts
27.22% (-1.35% 🔻)
100% 0%
27.22% (-1.35% 🔻)
🟢
... / unfinalizedBlocks.service.ts
84.71% (+0.73% 🔼)
95% (-1.72% 🔻)
95.45% (+3.79% 🔼)
84.71% (+0.73% 🔼)
🟡
... / worker.builder.ts
79.15% (-0.04% 🔻)
65.38%
70.59% (-9.41% 🔻)
79.15% (-0.04% 🔻)
🟢
... / worker.service.ts
93.16% (+48.52% 🔼)
86.67% (-13.33% 🔻)
100% (+100% 🔼)
93.16% (+48.52% 🔼)
🔴
... / worker.ts
42.13% (-0.32% 🔻)
100% 0%
42.13% (-0.32% 🔻)
🟡
... / worker.unfinalizedBlocks.service.ts
64.91% (-35.09% 🔻)
100%
0% (-100% 🔻)
64.91% (-35.09% 🔻)
🔴
... / event.listener.ts
53.54% (-27.27% 🔻)
100%
0% (-25% 🔻)
53.54% (-27.27% 🔻)
🔴
... / health.controller.ts
55.17% 100%
0% (-50% 🔻)
55.17%
🔴
... / health.service.ts
51.32% (-6.22% 🔻)
100%
0% (-20% 🔻)
51.32% (-6.22% 🔻)
🟡
... / meta.service.ts
68.52% (-1.01% 🔻)
100% (+20% 🔼)
0% (-40% 🔻)
68.52% (-1.01% 🔻)
🔴
... / ready.controller.ts
56.52% 100%
0% (-50% 🔻)
56.52%
🟡
... / ready.service.ts
75% (-16.67% 🔻)
100%
0% (-66.67% 🔻)
75% (-16.67% 🔻)
🟡
... / blocks.ts
69.7% (-30.3% 🔻)
84.62% (-4.27% 🔻)
75% (-25% 🔻)
69.7% (-30.3% 🔻)
🟡
... / project.ts
72.94% (-0.44% 🔻)
74.58%
76.47% (-1.31% 🔻)
72.94% (-0.44% 🔻)
🟢
... / promise.ts
94.92% (+3.15% 🔼)
100% (+13.64% 🔼)
71.43% (-14.29% 🔻)
94.92% (+3.15% 🔼)
🟡
... / reindex.ts
73.33% (+39.29% 🔼)
10% (-90% 🔻)
100% (+100% 🔼)
73.33% (+39.29% 🔼)
🔴
... / yargs.ts
44.68% (-0.81% 🔻)
100% 14.29%
44.68% (-0.81% 🔻)
🟢
... / api.service.ts
85.75% (+2.24% 🔼)
78.33% (+6.11% 🔼)
80% (-6.67% 🔻)
85.75% (+2.24% 🔼)
🟢
... / apiPromise.connection.ts
80% (+10.92% 🔼)
61.54% (-18.46% 🔻)
66.67% (+23.81% 🔼)
80% (+10.92% 🔼)
🔴
... / index.ts
0% (-100% 🔻)
0% (-100% 🔻)
0% (-100% 🔻)
0% (-100% 🔻)
🟢
... / substrateDictionary.service.ts
93.52% (+2.95% 🔼)
38.46% (-34.27% 🔻)
100% (+20% 🔼)
93.52% (+2.95% 🔼)
🔴
... / types.ts
0% (-100% 🔻)
0% (-100% 🔻)
0% (-100% 🔻)
0% (-100% 🔻)
🟢
... / substrateDictionaryV1.ts
85.33% (-0.15% 🔻)
78.26% (+8.49% 🔼)
84.62% (+1.28% 🔼)
85.33% (-0.15% 🔻)
🟡
... / substrateDictionaryV2.ts
70.79% (-4.72% 🔻)
50% (-25% 🔻)
33.33%
70.79% (-4.72% 🔻)
🔴
... / indexer.manager.ts
47.96% (-9.58% 🔻)
100%
16.67% (+7.58% 🔼)
47.96% (-9.58% 🔻)
🟢
... / runtimeService.ts
95.29% (+3.09% 🔼)
81.82% (-7.07% 🔻)
100% (+20% 🔼)
95.29% (+3.09% 🔼)
🟡
... / types.ts
70.45% (-14.84% 🔻)
100% 0%
70.45% (-14.84% 🔻)
🟢
... / project.ts
88.73% (-0.16% 🔻)
68.18% 87.5%
88.73% (-0.16% 🔻)
🟢
... / buffer.ts
90.24% (-9.76% 🔻)
91.3% (-8.7% 🔻)
90.48% (+6.27% 🔼)
90.24% (-9.76% 🔻)
🟢
... / builder.ts
93.02% (+0.25% 🔼)
82.14% (-0.62% 🔻)
100%
93.02% (+0.25% 🔼)
🟡
... / logger.ts
69.19% (-0.41% 🔻)
48.15% (-6.85% 🔻)
78.57% (+3.57% 🔼)
69.19% (-0.41% 🔻)
🟡
... / Bytes.ts
75% (+5% 🔼)
50% (-50% 🔻)
100%
75% (+5% 🔼)
🟢
... / u8aUtils.ts
88.89% (-11.11% 🔻)
50% (-50% 🔻)
100%
88.89% (-11.11% 🔻)

Test suite run success

701 tests passing in 116 suites.

Report generated by 🧪jest coverage report action from c716636

@stwiname stwiname merged commit b6c1972 into main Nov 19, 2025
4 checks passed
@stwiname stwiname deleted the poi-arrays branch November 19, 2025 23:04
@coderabbitai coderabbitai Bot mentioned this pull request Nov 19, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant