sdk-generator
sdk-generator copied to clipboard
js-sdk: Batch check does not preserve output order
Checklist
- [X] I have looked into the README and have not found a suitable solution or answer.
- [X] I have looked into the documentation and have not found a suitable solution or answer.
- [X] I have searched the issues and have not found a suitable solution or answer.
- [X] I have searched the Slack Community and have not found a suitable solution or answer.
- [X] I agree to the terms within the OpenFGA Code of Conduct.
Description
When using the batch check functionality in the js-sdk, the check results are not returned in the same order as the input. Based on what I've found in the python sdk, the order is preserved.
Expectation
I would expect when an array is provided as input, and the expected output is an array of equal length, order should be preserved.
Reproduction
Run the following:
const { OpenFgaClient } = require('@openfga/sdk');
const assert = require('assert');
const util = require('util');
const fgaClient = new OpenFgaClient({apiUrl: "https://api.playground.fga.dev", storeId: "01HVW8AJAT069Y9M1FZDKV6SP0", authorizationModelId: "01HVW8C9JP1XS2ZZG614S8KH47"});
async function test() {
const checks = [
{
user: "user:1",
relation: "test",
object: "object:2"
},
{
user: "user:1",
relation: "test",
object: "object:2",
contextualTuples: [{
user: "user:1",
relation: "test",
object: "object:2"
}]
},
{
user: "user:1",
relation: "test",
object: "object:1"
}
];
const results = await fgaClient.batchCheck(checks);
console.log(util.inspect(results, false, null, true));
assert.deepEqual(results.responses[0]._request, checks[0]);
assert.deepEqual(results.responses[1]._request, checks[1]);
assert.deepEqual(results.responses[2]._request, checks[2]);
}
test();
This hits this model: https://play.fga.dev/sandbox/?store=js-sdk-batch-ordering
SDK Checklist
- [X] JS SDK
- [ ] Go SDK
- [ ] .NET SDK
- [ ] Python SDK
- [ ] Java SDK
OpenFGA SDK version
0.3.5
OpenFGA version
any
SDK Configuration
any
Logs
No response
References
This issue seems to be related to the cause https://github.com/rxaviers/async-pool/issues/47