Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug]: Wasm bindgen incompatibility with Node 22 #2254

Open
1 task done
eike-hass opened this issue Jun 19, 2024 · 4 comments
Open
1 task done

[Bug]: Wasm bindgen incompatibility with Node 22 #2254

eike-hass opened this issue Jun 19, 2024 · 4 comments
Labels
b-wasm Bindings - Wasm bug Bug

Comments

@eike-hass
Copy link

eike-hass commented Jun 19, 2024

Issue description

API calls via the Wasm bindings fail in Node 22 environments (docker and local)

Node 21 (via node:21 image) works

Version

1.1.3

Expected behaviour

return JSON API response

Actual behaviour

return error

Can the issue reliably be reproduced?

Yes

Steps to reproduce the issue

Find instructions and code for reproduction in docker here:
https://github.com/eike-hass/iota-sdk/tree/bug/network-error-in-dockerized-node22/bindings/wasm/reproduction

Or use local Node 22 and run node index.js in reproduction folder

Errors

-> % docker run repro

node:internal/process/promises:389
      new UnhandledPromiseRejection(reason);
      ^

UnhandledPromiseRejection: This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason "{"type":"error","payload":{"type":"client","error":"node error: error decoding response body: expected value at line 1 column 1"}}".
    at throwUnhandledRejectionsMode (node:internal/process/promises:389:7)
    at processPromiseRejections (node:internal/process/promises:470:17)
    at process.processTicksAndRejections (node:internal/process/task_queues:96:32) {
  code: 'ERR_UNHANDLED_REJECTION'
}

Node.js v22.3.0

Duplicate declaration

  • I have searched the issues tracker this issue and there is none
@github-project-automation github-project-automation bot moved this to Product Backlog in iota-sdk Jun 19, 2024
@eike-hass eike-hass changed the title [Bug]: Wasm bindgen incompatibility with dockerized Node 22 [Bug]: Wasm bindgen incompatibility with Node 22 Jun 19, 2024
@Thoralf-M
Copy link
Member

I tried to reproduce it, but for me it actually works

iota-sdk/bindings/wasm   develop  docker build -f reproduction/Dockerfile -t repro .
[+] Building 58.8s (10/10) FINISHED                                                                                                                                                         docker:default
 => [internal] load build definition from Dockerfile                                                                                                                                                  0.0s
 => => transferring dockerfile: 214B                                                                                                                                                                  0.0s
 => [internal] load metadata for docker.io/library/node:21                                                                                                                                            1.6s
 => [internal] load .dockerignore                                                                                                                                                                     0.0s
 => => transferring context: 2B                                                                                                                                                                       0.0s
 => [internal] load build context                                                                                                                                                                     0.1s
 => => transferring context: 749B                                                                                                                                                                     0.1s
 => [1/5] FROM docker.io/library/node:21@sha256:4b232062fa976e3a966c49e9b6279efa56c8d207a67270868f51b3d155c4e33d                                                                                     52.5s
 => => resolve docker.io/library/node:21@sha256:4b232062fa976e3a966c49e9b6279efa56c8d207a67270868f51b3d155c4e33d                                                                                      0.0s
 => => sha256:866cb83013581c86f474a7b5530abddcbdefca9559837ee2e0b893ed7e688d39 2.00kB / 2.00kB                                                                                                        0.0s
 => => sha256:891494355808bdd3db5552f0d3723fd0fa826675f774853796fafa221d850d42 24.05MB / 24.05MB                                                                                                     15.8s
 => => sha256:6582c62583ef22717db8d306b1d6a0c288089ff607d9c0d2d81c4f8973cbfee3 64.14MB / 64.14MB                                                                                                     21.3s
 => => sha256:4b232062fa976e3a966c49e9b6279efa56c8d207a67270868f51b3d155c4e33d 1.21kB / 1.21kB                                                                                                        0.0s
 => => sha256:5c8697e822135f8d9b38b54a5aa2bbd3286a092d13a68eb1bc160a883636f9b5 7.41kB / 7.41kB                                                                                                        0.0s
 => => sha256:c6cf28de8a067787ee0d08f8b01d7f1566a508b56f6e549687b41dfd375f12c7 49.58MB / 49.58MB                                                                                                      7.3s
 => => sha256:bf2c3e352f3d2eed4eda4feeed44a1022a881058df20ac0584db70c138b041e2 211.21MB / 211.21MB                                                                                                   40.8s
 => => extracting sha256:c6cf28de8a067787ee0d08f8b01d7f1566a508b56f6e549687b41dfd375f12c7                                                                                                             2.0s
 => => sha256:2b542796ccab17c22fccf6f4a00414f43ecabd5a5d68fe53f8c8c5aee498b8dd 3.37kB / 3.37kB                                                                                                       16.4s
 => => extracting sha256:891494355808bdd3db5552f0d3723fd0fa826675f774853796fafa221d850d42                                                                                                             0.7s
 => => sha256:4684276225df21ffeac91884cd316f7bc0d99baeef8ff811f98c2ab46188c3cb 49.72MB / 49.72MB                                                                                                     28.9s
 => => extracting sha256:6582c62583ef22717db8d306b1d6a0c288089ff607d9c0d2d81c4f8973cbfee3                                                                                                             3.1s
 => => sha256:08750d53428eebb9ceb8fd6d9516a08420d7747d6a740951c2b043d1ef88c150 1.25MB / 1.25MB                                                                                                       21.8s
 => => sha256:5d3106ce01c367e8274a6e83a2d6f3d10ecf9619db69a0b3eacebef36f214f88 449B / 449B                                                                                                           22.1s
 => => extracting sha256:bf2c3e352f3d2eed4eda4feeed44a1022a881058df20ac0584db70c138b041e2                                                                                                             8.4s
 => => extracting sha256:2b542796ccab17c22fccf6f4a00414f43ecabd5a5d68fe53f8c8c5aee498b8dd                                                                                                             0.0s
 => => extracting sha256:4684276225df21ffeac91884cd316f7bc0d99baeef8ff811f98c2ab46188c3cb                                                                                                             2.6s
 => => extracting sha256:08750d53428eebb9ceb8fd6d9516a08420d7747d6a740951c2b043d1ef88c150                                                                                                             0.1s
 => => extracting sha256:5d3106ce01c367e8274a6e83a2d6f3d10ecf9619db69a0b3eacebef36f214f88                                                                                                             0.0s
 => [2/5] WORKDIR /usr/src/app                                                                                                                                                                        0.2s
 => [3/5] COPY ./reproduction/package.json ./                                                                                                                                                         0.0s
 => [4/5] RUN npm i                                                                                                                                                                                   4.1s
 => [5/5] COPY ./reproduction/index.js ./                                                                                                                                                             0.0s
 => exporting to image                                                                                                                                                                                0.3s 
 => => exporting layers                                                                                                                                                                               0.2s
 => => writing image sha256:611a8e752eb5a853526dcfd624bd16b0abba83502f5b9a401a420cea43de4b2d                                                                                                          0.0s
 => => naming to docker.io/library/repro                                                                                                                                                              0.0s
 ✘  ~iota-sdk/bindings/wasm   bug/network-error-in-dockerized-node22  docker run docker.io/library/repro
OutputResponse {
  metadata: {
    blockId: '0x17d56a5fce8d5d42b9aa2db0d47a4975dade5a7e60e437db4b8f58f984e91ebb',
    transactionId: '0x9e190f35188fa7986205a8fed2dd69554d7a3218805709ee04cc73a87bc9cd09',
    outputIndex: 0,
    isSpent: false,
    milestoneIndexBooked: 3939437,
    milestoneTimestampBooked: 1717745213,
    ledgerIndex: 4165011
  },
  output: Output {
    type: 4,
    amount: '105000',
    aliasId: '0x803c66ccd334aa4196618f66baecf0c54ab1d3267633fe975aef54f3d4d161ed',
    stateIndex: 1,
    stateMetadata: '0x4449440100fa017b22646f63223a7b226964223a226469643a303a30222c22766572696669636174696f6e4d6574686f64223a5b7b226964223a226469643a303a30236851456359433561586748557a5a44764f4661545a2d313770775957663870594d72644c5168686333674d222c22636f6e74726f6c6c6572223a226469643a303a30222c2274797065223a224a736f6e5765624b657932303230222c227075626c69634b65794a776b223a7b226b7479223a224f4b50222c22616c67223a224564445341222c226b6964223a226851456359433561586748557a5a44764f4661545a2d313770775957663870594d72644c5168686333674d222c22637276223a2245643235353139222c2278223a223536537978724f4f735630704f476f363541734e384d5f664f3468563732353471686d6b334a3947356f73227d7d5d2c2273657276696365223a5b7b226964223a226469643a303a3023646f6d61696e2d6c696e6b616765222c2274797065223a224c696e6b6564446f6d61696e73222c2273657276696365456e64706f696e74223a2268747470733a2f2f62616e6b2e73656c762e696f74612e6f72672f227d5d7d2c226d657461223a7b2263726561746564223a22323032342d30362d30375430373a32363a32395a222c2275706461746564223a22323032342d30362d30375430373a32363a32395a227d7d',
    foundryCounter: 0,
    unlockConditions: [ [Object], [Object] ],
    features: [ [Object] ]
  }
}

@eike-hass
Copy link
Author

eike-hass commented Jun 20, 2024

I tried to reproduce it, but for me it actually works

iota-sdk/bindings/wasm   develop  docker build -f reproduction/Dockerfile -t repro .
[+] Building 58.8s (10/10) FINISHED                                                                                                                                                         docker:default
 => [internal] load build definition from Dockerfile                                                                                                                                                  0.0s
 => => transferring dockerfile: 214B                                                                                                                                                                  0.0s
 => [internal] load metadata for docker.io/library/node:21                                                                                                                                            1.6s
 => [internal] load .dockerignore                                                                                                                                                                     0.0s
 => => transferring context: 2B                                                                                                                                                                       0.0s
 => [internal] load build context                                                                                                                                                                     0.1s
 => => transferring context: 749B                                                                                                                                                                     0.1s
 => [1/5] FROM docker.io/library/node:21@sha256:4b232062fa976e3a966c49e9b6279efa56c8d207a67270868f51b3d155c4e33d                                                                                     52.5s
 => => resolve docker.io/library/node:21@sha256:4b232062fa976e3a966c49e9b6279efa56c8d207a67270868f51b3d155c4e33d                                                                                      0.0s
 => => sha256:866cb83013581c86f474a7b5530abddcbdefca9559837ee2e0b893ed7e688d39 2.00kB / 2.00kB                                                                                                        0.0s
 => => sha256:891494355808bdd3db5552f0d3723fd0fa826675f774853796fafa221d850d42 24.05MB / 24.05MB                                                                                                     15.8s
 => => sha256:6582c62583ef22717db8d306b1d6a0c288089ff607d9c0d2d81c4f8973cbfee3 64.14MB / 64.14MB                                                                                                     21.3s
 => => sha256:4b232062fa976e3a966c49e9b6279efa56c8d207a67270868f51b3d155c4e33d 1.21kB / 1.21kB                                                                                                        0.0s
 => => sha256:5c8697e822135f8d9b38b54a5aa2bbd3286a092d13a68eb1bc160a883636f9b5 7.41kB / 7.41kB                                                                                                        0.0s
 => => sha256:c6cf28de8a067787ee0d08f8b01d7f1566a508b56f6e549687b41dfd375f12c7 49.58MB / 49.58MB                                                                                                      7.3s
 => => sha256:bf2c3e352f3d2eed4eda4feeed44a1022a881058df20ac0584db70c138b041e2 211.21MB / 211.21MB                                                                                                   40.8s
 => => extracting sha256:c6cf28de8a067787ee0d08f8b01d7f1566a508b56f6e549687b41dfd375f12c7                                                                                                             2.0s
 => => sha256:2b542796ccab17c22fccf6f4a00414f43ecabd5a5d68fe53f8c8c5aee498b8dd 3.37kB / 3.37kB                                                                                                       16.4s
 => => extracting sha256:891494355808bdd3db5552f0d3723fd0fa826675f774853796fafa221d850d42                                                                                                             0.7s
 => => sha256:4684276225df21ffeac91884cd316f7bc0d99baeef8ff811f98c2ab46188c3cb 49.72MB / 49.72MB                                                                                                     28.9s
 => => extracting sha256:6582c62583ef22717db8d306b1d6a0c288089ff607d9c0d2d81c4f8973cbfee3                                                                                                             3.1s
 => => sha256:08750d53428eebb9ceb8fd6d9516a08420d7747d6a740951c2b043d1ef88c150 1.25MB / 1.25MB                                                                                                       21.8s
 => => sha256:5d3106ce01c367e8274a6e83a2d6f3d10ecf9619db69a0b3eacebef36f214f88 449B / 449B                                                                                                           22.1s
 => => extracting sha256:bf2c3e352f3d2eed4eda4feeed44a1022a881058df20ac0584db70c138b041e2                                                                                                             8.4s
 => => extracting sha256:2b542796ccab17c22fccf6f4a00414f43ecabd5a5d68fe53f8c8c5aee498b8dd                                                                                                             0.0s
 => => extracting sha256:4684276225df21ffeac91884cd316f7bc0d99baeef8ff811f98c2ab46188c3cb                                                                                                             2.6s
 => => extracting sha256:08750d53428eebb9ceb8fd6d9516a08420d7747d6a740951c2b043d1ef88c150                                                                                                             0.1s
 => => extracting sha256:5d3106ce01c367e8274a6e83a2d6f3d10ecf9619db69a0b3eacebef36f214f88                                                                                                             0.0s
 => [2/5] WORKDIR /usr/src/app                                                                                                                                                                        0.2s
 => [3/5] COPY ./reproduction/package.json ./                                                                                                                                                         0.0s
 => [4/5] RUN npm i                                                                                                                                                                                   4.1s
 => [5/5] COPY ./reproduction/index.js ./                                                                                                                                                             0.0s
 => exporting to image                                                                                                                                                                                0.3s 
 => => exporting layers                                                                                                                                                                               0.2s
 => => writing image sha256:611a8e752eb5a853526dcfd624bd16b0abba83502f5b9a401a420cea43de4b2d                                                                                                          0.0s
 => => naming to docker.io/library/repro                                                                                                                                                              0.0s
 ✘  ~iota-sdk/bindings/wasm   bug/network-error-in-dockerized-node22  docker run docker.io/library/repro
OutputResponse {
  metadata: {
    blockId: '0x17d56a5fce8d5d42b9aa2db0d47a4975dade5a7e60e437db4b8f58f984e91ebb',
    transactionId: '0x9e190f35188fa7986205a8fed2dd69554d7a3218805709ee04cc73a87bc9cd09',
    outputIndex: 0,
    isSpent: false,
    milestoneIndexBooked: 3939437,
    milestoneTimestampBooked: 1717745213,
    ledgerIndex: 4165011
  },
  output: Output {
    type: 4,
    amount: '105000',
    aliasId: '0x803c66ccd334aa4196618f66baecf0c54ab1d3267633fe975aef54f3d4d161ed',
    stateIndex: 1,
    stateMetadata: '0x4449440100fa017b22646f63223a7b226964223a226469643a303a30222c22766572696669636174696f6e4d6574686f64223a5b7b226964223a226469643a303a30236851456359433561586748557a5a44764f4661545a2d313770775957663870594d72644c5168686333674d222c22636f6e74726f6c6c6572223a226469643a303a30222c2274797065223a224a736f6e5765624b657932303230222c227075626c69634b65794a776b223a7b226b7479223a224f4b50222c22616c67223a224564445341222c226b6964223a226851456359433561586748557a5a44764f4661545a2d313770775957663870594d72644c5168686333674d222c22637276223a2245643235353139222c2278223a223536537978724f4f735630704f476f363541734e384d5f664f3468563732353471686d6b334a3947356f73227d7d5d2c2273657276696365223a5b7b226964223a226469643a303a3023646f6d61696e2d6c696e6b616765222c2274797065223a224c696e6b6564446f6d61696e73222c2273657276696365456e64706f696e74223a2268747470733a2f2f62616e6b2e73656c762e696f74612e6f72672f227d5d7d2c226d657461223a7b2263726561746564223a22323032342d30362d30375430373a32363a32395a222c2275706461746564223a22323032342d30362d30375430373a32363a32395a227d7d',
    foundryCounter: 0,
    unlockConditions: [ [Object], [Object] ],
    features: [ [Object] ]
  }
}

says it pulled docker.io/library/node:21

Edit: my bad, I have it set to node:21 in the reproduction

@Thoralf-M
Copy link
Member

Thoralf-M commented Jun 20, 2024

So yes after changing it to 22 it also fails for me, couldn't figure out what exactly causes this yet, but I found some additional info that might help
First, not all requests are broken, nodeinfo works, even getting another output works. So to me it seems node.js does something wrong with the body, if it exceeds some size (your output contains a metadata feature and is larger than the output id that works (basic output without features)

const { Client, initLogger } = require("@iota/sdk-wasm/node");

(async () => {
  try {
    initLogger()
    const client = new Client({ primaryNode: "https://api.testnet.shimmer.network/" });

    // Works
    console.log(await client.getInfo());
    // Works
    console.log(await client.getOutput("0x0e67475116d5e5a0c845c8f89bb15e3b9f7059001e8e674443d45d153c921bf90000"));
    // Fails
    console.log(await client.getOutput("0x9e190f35188fa7986205a8fed2dd69554d7a3218805709ee04cc73a87bc9cd090000"));
    // Also fails
    console.log(await client.getBlock("0xee4936315c60809a48665b7b85225788c4c56abad46147ab3483e1fc499213a1"));
  } catch (error) {
    console.log(error)
  }
})();

Logs for output where it works and the one that doesn't work:

DEBUG bindings/core/src/method_handler/call_method.rs:49 Client method: GetOutput { output_id: OutputId(0x0e67475116d5e5a0c845c8f89bb15e3b9f7059001e8e674443d45d153c921bf90000) }
Request {
  method: 'GET',
  url: 'https://api.testnet.shimmer.network/api/core/v2/outputs/0x0e67475116d5e5a0c845c8f89bb15e3b9f7059001e8e674443d45d153c921bf90000',
  headers: Headers { 'user-agent': 'iota-sdk/1.1.4' },
  destination: '',
  referrer: 'about:client',
  referrerPolicy: '',
  mode: 'cors',
  credentials: 'same-origin',
  cache: 'default',
  redirect: 'follow',
  integrity: '',
  keepalive: false,
  isReloadNavigation: false,
  isHistoryNavigation: false,
  signal: AbortSignal { aborted: false }
}
Response {
  status: 200,
  statusText: 'OK',
  headers: Headers {
    date: 'Thu, 20 Jun 2024 20:43:39 GMT',
    'content-type': 'application/json; charset=UTF-8',
    'content-length': '341',
    connection: 'keep-alive',
    'content-encoding': 'gzip',
    'set-cookie': '_ddce2=c62bc05f38bb40a1; Path=/',
    vary: 'Origin, Accept-Encoding',
    'cf-cache-status': 'DYNAMIC',
    'report-to': '{"endpoints":[{"url":"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=GYGG7JckU6%2BxekbExck23rJZBwYLNyGhachl7yJ5k%2B1wMs55VF2NV0VLxhPGvtUIUpypWWQ%2BFX1Z3gb1fqrQtAS6uwlWZCl3b5mX9b4h5hPYeHd%2Fwc7NwYAf2vRRZyMhfJLXdWZ%2FIB%2BJWStytZs%3D"}],"group":"cf-nel","max_age":604800}',
    nel: '{"success_fraction":0,"report_to":"cf-nel","max_age":604800}',
    server: 'cloudflare',
    'cf-ray': '896e97a2bc118f38-FRA',
    'alt-svc': 'h3=":443"; ma=86400'
  },
  body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true },
  bodyUsed: false,
  ok: true,
  redirected: false,
  type: 'basic',
  url: 'https://api.testnet.shimmer.network/api/core/v2/outputs/0x0e67475116d5e5a0c845c8f89bb15e3b9f7059001e8e674443d45d153c921bf90000'
}
DEBUG sdk/src/client/node_manager/http_client.rs:96 GET: 216 ms for 200 OK https://api.testnet.shimmer.network/api/core/v2/outputs/0x0e67475116d5e5a0c845c8f89bb15e3b9f7059001e8e674443d45d153c921bf90000
DEBUG bindings/core/src/method_handler/call_method.rs:54 Client response: OutputWithMetadataResponse(OutputWithMetadataResponse { metadata: OutputMetadata { block_id: BlockId(0xee4936315c60809a48665b7b85225788c4c56abad46147ab3483e1fc499213a1), output_id: OutputId(0x0e67475116d5e5a0c845c8f89bb15e3b9f7059001e8e674443d45d153c921bf90000), is_spent: false, milestone_index_spent: None, milestone_timestamp_spent: None, transaction_id_spent: None, milestone_index_booked: 4147403, milestone_timestamp_booked: 1718805891, ledger_index: 4169029 }, output: Basic(BasicOutputDto { kind: 3, amount: "1000000", native_tokens: [], unlock_conditions: [Address(AddressUnlockConditionDto { kind: 0, address: Ed25519(Ed25519AddressDto { kind: 0, pub_key_hash: "0xf4526a9636f0623da695f493f5676030af3d11f74b6e532eb5bca0510e42cf13" }) })], features: [] }) })
OutputResponse {
  metadata: {
    blockId: '0xee4936315c60809a48665b7b85225788c4c56abad46147ab3483e1fc499213a1',
    transactionId: '0x0e67475116d5e5a0c845c8f89bb15e3b9f7059001e8e674443d45d153c921bf9',
    outputIndex: 0,
    isSpent: false,
    milestoneIndexBooked: 4147403,
    milestoneTimestampBooked: 1718805891,
    ledgerIndex: 4169029
  },
  output: Output { type: 3, amount: '1000000', unlockConditions: [ [Object] ] }
}
DEBUG bindings/core/src/method_handler/call_method.rs:49 Client method: GetOutput { output_id: OutputId(0x9e190f35188fa7986205a8fed2dd69554d7a3218805709ee04cc73a87bc9cd090000) }
Request {
  method: 'GET',
  url: 'https://api.testnet.shimmer.network/api/core/v2/outputs/0x9e190f35188fa7986205a8fed2dd69554d7a3218805709ee04cc73a87bc9cd090000',
  headers: Headers { 'user-agent': 'iota-sdk/1.1.4' },
  destination: '',
  referrer: 'about:client',
  referrerPolicy: '',
  mode: 'cors',
  credentials: 'same-origin',
  cache: 'default',
  redirect: 'follow',
  integrity: '',
  keepalive: false,
  isReloadNavigation: false,
  isHistoryNavigation: false,
  signal: AbortSignal { aborted: false }
}
Response {
  status: 200,
  statusText: 'OK',
  headers: Headers {
    date: 'Thu, 20 Jun 2024 20:43:39 GMT',
    'content-type': 'application/json; charset=UTF-8',
    'content-length': '807',
    connection: 'keep-alive',
    'content-encoding': 'gzip',
    'set-cookie': '_ddce2=88fbb83d62dd1a55; Path=/',
    vary: 'Origin, Accept-Encoding',
    'cf-cache-status': 'DYNAMIC',
    'report-to': '{"endpoints":[{"url":"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=Q1CKUjR8E7jfMcfl5zK9Ctd4VtoX0gmu%2F%2BbMMWBS4DpgOTbO2ToW2Lp%2FJTww4liBNTRS0jDvNmsVHwnrCB4gr2g86dHUIHPIj27lLpCO%2FnjWyQ5k72fQSnEdy%2FcAKU5BNzsJ2WedZVv4Mm2p03o%3D"}],"group":"cf-nel","max_age":604800}',
    nel: '{"success_fraction":0,"report_to":"cf-nel","max_age":604800}',
    server: 'cloudflare',
    'cf-ray': '896e97a3fe0d8f38-FRA',
    'alt-svc': 'h3=":443"; ma=86400'
  },
  body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true },
  bodyUsed: false,
  ok: true,
  redirected: false,
  type: 'basic',
  url: 'https://api.testnet.shimmer.network/api/core/v2/outputs/0x9e190f35188fa7986205a8fed2dd69554d7a3218805709ee04cc73a87bc9cd090000'
}
DEBUG sdk/src/client/node_manager/http_client.rs:96 GET: 53 ms for 200 OK https://api.testnet.shimmer.network/api/core/v2/outputs/0x9e190f35188fa7986205a8fed2dd69554d7a3218805709ee04cc73a87bc9cd090000
DEBUG bindings/core/src/method_handler/call_method.rs:54 Client response: Error(Client(Node(Reqwest(reqwest::Error { kind: Decode, source: Error("expected value", line: 1, column: 1) }))))
{"type":"error","payload":{"type":"client","error":"node error: error decoding response body: expected value at line 1 column 1"}}

We should try reqwest in wasm alone next, probably the issue happens without iota-sdk and large bodies

@Thoralf-M Thoralf-M added b-wasm Bindings - Wasm bug Bug labels Jun 20, 2024
@Thoralf-M
Copy link
Member

Thoralf-M commented Jun 21, 2024

Did some more testing and could reproduce it with reqwest alone seanmonstar/reqwest#2338
For some reason \0\0\0\0\0\0\0\r\n\0\0\0\0\0\0HTTP/1.1 400 Bad Request\r\nConnection: close\r\n\r\n\0HTTP/1.1 408 Request Timeout\r\nConnection: close\r\n\r\n\0\0\0\0\0HTTP/1.1 431 Request Header Fields Too Large\r\nConnection: close\r\n\r\n\0\0\0\0\0HTTP/1.1 413 Payload Too Large\r\nConnection: close\r\n\r\n\0\0\0form-data; name=\"\0\0\0\0\0\0\0; filename\0\0\0\0\0\0--\0\0\0\0\0\0--\r\n\0\0\0\0\0\0\xff\xff\0\0\0\0\x08http/1.1\0\0\0\0\0\0\0\x08http/1.1\0\0\0\0\0\0\0\x08http/1.1\0\0\0\0\0\0\0 is prepended to the bytes before the actual data for the larger output

Cargo.toml

[workspace]
[package]
name = "reqwest-wasm"
version = "0.1.0"
edition = "2021"

[lib]
crate-type = ["cdylib", "rlib"]

[dependencies]
js-sys = { version = "0.3.68", default-features = false, features = [] }
serde_json = { version = "1.0.113", default-features = false }
reqwest = { version = "0.11.24", default-features = false, features = [
    "json",
]}
wasm-bindgen = { version = "0.2.92", default-features = false, features = [
    "std",
    "serde-serialize",
] }
wasm-bindgen-futures = { version = "0.4.41", default-features = false }

lib.rs

use wasm_bindgen::{prelude::wasm_bindgen, JsCast, JsValue};
use wasm_bindgen_futures::future_to_promise;

#[wasm_bindgen]
extern "C" {
    #[wasm_bindgen(typescript_type = "Promise<string>")]
    pub type PromiseString;
}

#[wasm_bindgen(js_name = bytes)]
pub fn bytes(url: String) -> Result<PromiseString, JsValue> {
    let promise: js_sys::Promise = future_to_promise(async move {
        let resp = reqwest::Client::new().get(url)
            .send()
            .await
            .map_err(|err| err.to_string())?;

        Ok(JsValue::from(format!("bytes: {:?}", &resp.bytes().await.map_err(|err| err.to_string())?)
        ))
    });
    Ok(promise.unchecked_into())
}

#[wasm_bindgen(js_name = works)]
pub fn works(url: String) -> Result<PromiseString, JsValue> {
    let promise: js_sys::Promise = future_to_promise(async move {
        let resp = reqwest::Client::new().get(url)
            .send()
            .await
            .map_err(|err| err.to_string())?;

        let resp_str: serde_json::Value = serde_json::from_str(
            &resp.text().await.map_err(|err| err.to_string())?,
           ).unwrap();
        Ok(JsValue::from(format!("works: {}", serde_json::to_string(
            &resp_str,
           ).unwrap())
        ))
    });
    Ok(promise.unchecked_into())
}

#[wasm_bindgen(js_name = fails)]
pub fn fails(url: String) -> Result<PromiseString, JsValue> {
    let promise: js_sys::Promise = future_to_promise(async move {
        let resp = reqwest::Client::new().get(url)
            .send()
            .await
            .map_err(|err| err.to_string())?;

        Ok(JsValue::from(format!("doesn't work with large data: {:?}", &resp.json::<serde_json::Value>().await.map_err(|err| err.to_string())?)))
    });
    Ok(promise.unchecked_into())
}

index.js

let { works, fails, bytes } = require("./pkg");

// works("https://api.testnet.shimmer.network/api/core/v2/outputs/0x0e67475116d5e5a0c845c8f89bb15e3b9f7059001e8e674443d45d153c921bf90000").then(console.log).catch(console.error)
// actually fails only with larger data
// fails("https://api.testnet.shimmer.network/api/core/v2/outputs/0x0e67475116d5e5a0c845c8f89bb15e3b9f7059001e8e674443d45d153c921bf90000").then(console.log).catch(console.error)
// bytes("https://api.testnet.shimmer.network/api/core/v2/outputs/0x0e67475116d5e5a0c845c8f89bb15e3b9f7059001e8e674443d45d153c921bf90000").then(console.log).catch(console.error)

works("https://api.testnet.shimmer.network/api/core/v2/outputs/0x9e190f35188fa7986205a8fed2dd69554d7a3218805709ee04cc73a87bc9cd090000").then(console.log).catch(console.error)
fails("https://api.testnet.shimmer.network/api/core/v2/outputs/0x9e190f35188fa7986205a8fed2dd69554d7a3218805709ee04cc73a87bc9cd090000").then(console.log).catch(console.error)
bytes("https://api.testnet.shimmer.network/api/core/v2/outputs/0x9e190f35188fa7986205a8fed2dd69554d7a3218805709ee04cc73a87bc9cd090000").then(console.log).catch(console.error)

wasm-pack build --target nodejs && node index.js results in

works: {"metadata":{"blockId":"0x17d56a5fce8d5d42b9aa2db0d47a4975dade5a7e60e437db4b8f58f984e91ebb","isSpent":false,"ledgerIndex":4179954,"milestoneIndexBooked":3939437,"milestoneTimestampBooked":1717745213,"outputIndex":0,"transactionId":"0x9e190f35188fa7986205a8fed2dd69554d7a3218805709ee04cc73a87bc9cd09"},"output":{"aliasId":"0x803c66ccd334aa4196618f66baecf0c54ab1d3267633fe975aef54f3d4d161ed","amount":"105000","features":[{"address":{"pubKeyHash":"0xc9573d2bbcad8151b25b4d16c531bcf24c3d99892c8366190d1f4345dd735668","type":0},"type":0}],"foundryCounter":0,"stateIndex":1,"stateMetadata":"0x4449440100fa017b22646f63223a7b226964223a226469643a303a30222c22766572696669636174696f6e4d6574686f64223a5b7b226964223a226469643a303a30236851456359433561586748557a5a44764f4661545a2d313770775957663870594d72644c5168686333674d222c22636f6e74726f6c6c6572223a226469643a303a30222c2274797065223a224a736f6e5765624b657932303230222c227075626c69634b65794a776b223a7b226b7479223a224f4b50222c22616c67223a224564445341222c226b6964223a226851456359433561586748557a5a44764f4661545a2d313770775957663870594d72644c5168686333674d222c22637276223a2245643235353139222c2278223a223536537978724f4f735630704f476f363541734e384d5f664f3468563732353471686d6b334a3947356f73227d7d5d2c2273657276696365223a5b7b226964223a226469643a303a3023646f6d61696e2d6c696e6b616765222c2274797065223a224c696e6b6564446f6d61696e73222c2273657276696365456e64706f696e74223a2268747470733a2f2f62616e6b2e73656c762e696f74612e6f72672f227d5d7d2c226d657461223a7b2263726561746564223a22323032342d30362d30375430373a32363a32395a222c2275706461746564223a22323032342d30362d30375430373a32363a32395a227d7d","type":4,"unlockConditions":[{"address":{"pubKeyHash":"0xc9573d2bbcad8151b25b4d16c531bcf24c3d99892c8366190d1f4345dd735668","type":0},"type":4},{"address":{"pubKeyHash":"0xc9573d2bbcad8151b25b4d16c531bcf24c3d99892c8366190d1f4345dd735668","type":0},"type":5}]}}
error decoding response body: expected value at line 1 column 1
bytes: b"/\0\0\0\0\0\0\0\r\n\0\0\0\0\0\0HTTP/1.1 400 Bad Request\r\nConnection: close\r\n\r\n\0HTTP/1.1 408 Request Timeout\r\nConnection: close\r\n\r\n\0\0\0\0\0HTTP/1.1 431 Request Header Fields Too Large\r\nConnection: close\r\n\r\n\0\0\0\0\0HTTP/1.1 413 Payload Too Large\r\nConnection: close\r\n\r\n\0\0\0form-data; name=\"\0\0\0\0\0\0\0; filename\0\0\0\0\0\0--\0\0\0\0\0\0--\r\n\0\0\0\0\0\0\xff\xff\0\0\0\0\x08http/1.1\0\0\0\0\0\0\0\x08http/1.1\0\0\0\0\0\0\0\x08http/1.1\0\0\0\0\0\0\0{\"metadata\":{\"blockId\":\"0x17d56a5fce8d5d42b9aa2db0d47a4975dade5a7e60e437db4b8f58f984e91ebb\",\"transactionId\":\"0x9e190f35188fa7986205a8fed2dd69554d7a3218805709ee04cc73a87bc9cd09\",\"outputIndex\":0,\"isSpent\":false,\"milestoneIndexBooked\":3939437,\"milestoneTimestampBooked\":1717745213,\"ledgerIndex\":4179954},\"output\":{\"type\":4,\"amount\":\"105000\",\"aliasId\":\"0x803c66ccd334aa4196618f66baecf0c54ab1d3267633fe975aef54f3d4d161ed\",\"stateIndex\":1,\"stateMetadata\":\"0x4449440100fa017b22646f63223a7b226964223a226469643a303a30222c22766572696669636174696f6e4d6574686f64223a5b7b226964223a226469643a303a30236851456359433561586748557a5a44764f4661545a2d313770775957663870594d72644c5168686333674d222c22636f6e74726f6c6c6572223a226469643a303a30222c2274797065223a224a736f6e5765624b657932303230222c227075626c69634b65794a776b223a7b226b7479223a224f4b50222c22616c67223a224564445341222c226b6964223a226851456359433561586748557a5a44764f4661545a2d313770775957663870594d72644c5168686333674d222c22637276223a2245643235353139222c2278223a223536537978724f4f735630704f476f363541734e384d5f664f3468563732353471686d6b334a3947356f73227d7d5d2c2273657276696365223a5b7b226964223a226469643a303a3023646f6d61696e2d6c696e6b616765222c2274797065223a224c696e6b6564446f6d61696e73222c2273657276696365456e64706f696e74223a2268747470733a2f2f62616e6b2e73656c762e696f74612e6f72672f227d5d7d2c226d657461223a7b2263726561746564223a22323032342d30362d30375430373a32363a32395a222c2275706461746564223a22323032342d30362d30375430373a32363a32395a227d7d\",\"foundryCounter\":0,\"unlockConditions\":[{\"type\":4,\"address\":{\"type\":0,\"pubKeyHash\":\"0xc9573d2bbcad8151b25b4d16c531bcf24c3d99892c8366190d1f4345dd735668\"}},{\"type\":5,\"address\":{\"type\":0,\"pubKeyHash\":\"0xc9573d2bbcad8151b25b4d16c531bcf24c3d99892c8366190d1f4345dd735668\"}}],\"features\":[{\"type\":0,\"address\":{\"type\":0,\"pubKeyHash\":\"0xc9573d2bbcad8151b25b4d16c531bcf24c3d99892c8366190d1f4345dd735668\"}}]}}\n\0\0\0\0{\"metadata\":{\"blockId\":\"0x17d56a5fce8d5d42b9aa2db0d47a4975dade5a7e60e437db4b8f58f984e91ebb\",\"transactionId\":\"0x9e190f35188fa7986205a8fed2dd69554d7a3218805709ee04cc73a87bc9cd09\",\"outputIndex\":0,\"isSpent\":false,\"milestoneIndexBooked\":3939437,\"milestoneTimestampBooked\":1717745213,\"ledgerIndex\":4179954},\"output\":{\"type\":4,\"amount\":\"105000\",\"aliasId\":\"0x803c66ccd334aa4196618f66baecf0c54ab1d3267633fe975aef54f3d4d161ed\",\"stateIndex\":1,\"stateMetadata\":\"0x4449440100fa017b22646f63223a7b226964223a226469643a303a30222c22766572696669636174696f6e4d6574686f64223a5b7b226964223a226469643a303a30236851456359433561586748557a5a44764f4661545a2d313770775957663870594d72644c5168686333674d222c22636f6e74726f6c6c6572223a226469643a303a30222c2274797065223a224a736f6e5765624b657932303230222c227075626c69634b65794a776b223a7b226b7479223a224f4b50222c22616c67223a224564445341222c226b6964223a226851456359433561586748557a5a44764f4661545a2d313770775957663870594d72644c5168686333674d222c22637276223a2245643235353139222c2278223a223536537978724f4f735630704f476f363541734e384d5f664f3468563732353471686d6b334a3947356f73227d7d5d2c2273657276696365223a5b7b226964223a226469643a303a3023646f6d61696e2d6c696e6b616765222c2274797065223a224c696e6b6564446f6d61696e73222c2273657276696365456e64706f696e74223a2268747470733a2f2f62616e6b2e73656c762e696f74612e6f72672f227d5d7d2c226d657461223a7b2263726561746564223a22323032342d30362d30375430373a32363a32395a222c2275706461746564223a22323032342d30362d30375430373a32363a32395a227d7d\",\"foundryCounter\":0,\"unlockConditions\":[{\"type\":4,\"address\":{\"type\":0,\"pubKeyHash\":\"0xc9573d2bbcad8151b25b4d16c531bcf24c3d99892c8366190d1f4345dd735668\"}},{\"type\":5,\"address\":{\"type\":0,\"pubKeyHash\":\"0xc9573d2bbcad8151b25b4d16c531bcf24c3d99892c8366190d1f4345dd735668\"}}],\"features\":[{\"type\":0,\"address\":{\"type\":0,\"pubKeyHash\":\"0xc9573d2bbcad8151b25b4d16c531bcf24c3d99892c8366190d1f4345dd735668\"}}]}}\n\0\0\0\0{\"metadata\":{\"blockId\":\"0x17d56a5fce8d5d42b9aa2db0d47a4975dade5a7e60e437db4b8f58f984e91ebb\",\"transactionId\":\"0x9e190f35188fa7986205a8fed2dd69554d7a3218805709ee04cc73a87bc9cd09\",\"outputIndex\":0,\"isSpent\":false,\"milestoneIndexBooked\":3939437,\"milestoneTimestampBooked\":1717745213,\"ledgerIndex\":4179954},\"output\":{\"type\":4,\"amount\":\"105000\",\"aliasId\":\"0x803c66ccd334aa4196618f66baecf0c54ab1d3267633fe975aef54f3d4d161ed\",\"stateIndex\":1,\"stateMetadata\":\"0x4449440100fa017b22646f63223a7b226964223a226469643a303a30222c22766572696669636174696f6e4d6574686f64223a5b7b226964223a226469643a303a30236851456359433561586748557a5a44764f4661545a2d313770775957663870594d72644c5168686333674d222c22636f6e74726f6c6c6572223a226469643a303a30222c2274797065223a224a736f6e5765624b657932303230222c227075626c69634b65794a776b223a7b226b7479223a224f4b50222c22616c67223a224564445341222c226b6964223a226851456359433561586748557a5a44764f4661545a2d313770775957663870594d72644c5168686333674d222c22637276223a2245643235353139222c2278223a223536537978724f4f735630704f476f363541734e384d5f664f3468563732353471686d6b334a3947356f73227d7d5d2c2273657276696365223a5b7b226964223a226469643a303a3023646f6d61696e2d6c696e6b616765222c2274797065223a224c696e6b6564446f6d61696e73222c2273657276696365456e64706f696e74223a2268747470733a2f2f62616e6b2e73656c762e696f74612e6f72672f227d5d7d2c226d657461223a7b2263726561746564223a22323032342d30362d30375430373a32363a32395a222c2275706461746564223a22323032342d30362d30375430373a32363a32395a227d7d\",\"foundryCounter\":0,\"unlockConditions\":[{\"type\":4,\"address\":{\"type\":0,\"pubKeyHash\":\"0xc9573d2bbcad8151b25b4d16c531bcf24c3d99892c8366190d1f4345dd735668\"}},{\"type\":5,\"address\":{\"type\":0,\"pubKeyHash\":\"0xc9573d2bbcad8151b25b4d16c531bcf24c3d99892c8366190d1f4345dd735668\"}}],\"features\":[{\"type\":0,\"address\":{\"type\":0,\"pubKeyHash\":\"0xc9573d2bbcad8151b25b4d16c531bcf24c3d99892c8366190d1f4345dd735668\"}}]}}\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
b-wasm Bindings - Wasm bug Bug
Projects
Status: Product Backlog
Development

No branches or pull requests

2 participants