-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Description
Describe the bug
Here: https://github.com/BuilderIO/builder/blob/main/packages/core/src/builder.class.ts#L2736
The or operator || binds stronger than the tertiary operator ?.
The code seems to intended as:
options.key || (Builder.isBrowser ? `${modelName}:${hash(omit(options, 'initialContent', 'req', 'res'))}` : undefined),
However as || binds stronger it's actually
(options.key || Builder.isBrowser) ? `${modelName}:${hash(omit(options, 'initialContent', 'req', 'res'))}` : undefined
Meaning that the options.key value is always ignored. Inside the browser the modelName followed by a hash is passed and outside the browser undefined is always passed (unless a key option is provided in which case it's still ignored but the modelName followed by a hash is used).
To Reproduce
Steps to reproduce the behavior:
- Call
builder.getAlland provide akeyoption. - Either via breakpoints, network inspection or any other method observe that the provided
keyvalue is not used and the modelname followed by a hash is used instead.
Expected behavior
If options.key is provided then it's used.
This explicitly causes issues when doing multiple requests on the same modelName where requests after the first return promises that never fulfill.