Open vitonsky opened 1 year ago
To make it easier for me to debug this, can you reproduce the issue in the Typescript playground? Here's a demo that shows a cursor with a correct type.
@jakearchibald yes, demo with broken types
We have to improve type for createObjectStore
, to require exists property for keyPath.
We must consider case with a composite keyPath
It looks like you've just missed part of the value definition? This works.
@jakearchibald you're right, we use typescript exactly to avoid data misses. Types for createObjectStore
must make impossible a missed property and generate compile time error for such cases
I'll accept a PR for this if it works, but keyPath
is pretty complex.
@jakearchibald agree about complexity, maybe i will try to fix when will have time. Let's mark this as bug and needs help
I think my PR #252 solves this issue - add and put accept an object with or without the auto incrementing keyPath being present, but any object returned from the database has the keyPath value defined. Example
I'll find some time to take a close look at that. Sorry I haven't so far.
I have an IDB scheme https://github.com/translate-tools/linguist/blob/4da90de9e406442ab78df591bad04d7e6b93cdf3/src/requests/backend/translations/idb/schema/v2.ts#L8-L16
Here i use cursor value https://github.com/translate-tools/linguist/blob/4da90de9e406442ab78df591bad04d7e6b93cdf3/src/requests/backend/translations/data.ts#L135
And i found that type of cursor value incorrect, when my test failed. The type is not contains a "keyPath" that i defined here https://github.com/translate-tools/linguist/blob/4da90de9e406442ab78df591bad04d7e6b93cdf3/src/requests/backend/translations/idb/schema/v2.ts#L59-L62
So cursor value contains not only properties of type
ITranslationEntry
but also propertyid
that is auto incremented number.It's my temporary fix for test https://github.com/translate-tools/linguist/blob/4da90de9e406442ab78df591bad04d7e6b93cdf3/src/requests/backend/translations/data.test.ts#L40-L42 and i have to refactor a lot of code to remove this unnecessary property.
Let's improve types. We can add a
keyPath
to a IDB scheme and merge it to a cursor value type and in another places when we get values from IDB