Merge branch 'queryclient' of git.valverde.cloud:Thilawyn/reffuse into queryclient
All checks were successful
Lint / lint (push) Successful in 13s

This commit is contained in:
Julien Valverdé
2025-03-26 19:34:59 +01:00
16 changed files with 317 additions and 226 deletions

View File

@@ -1,6 +1,6 @@
{
"name": "reffuse",
"version": "0.1.3",
"version": "0.1.4",
"type": "module",
"files": [
"./README.md",

View File

@@ -9,7 +9,7 @@ export class Reffuse extends ReffuseHelpers.make() {}
export const withContexts = <R2 extends Array<unknown>>(
...contexts: [...{ [K in keyof R2]: ReffuseContext.ReffuseContext<R2[K]> }]
) =>
) => (
<
BaseClass extends ReffuseHelpers.ReffuseHelpersClass<R1>,
R1
@@ -29,9 +29,9 @@ export const withContexts = <R2 extends Array<unknown>>(
) => class extends self {
static readonly contexts = [...self.contexts, ...contexts]
} as any
)
export const withExtension = <A extends object>(extension: ReffuseExtension.ReffuseExtension<A>) =>
export const withExtension = <A extends object>(extension: ReffuseExtension.ReffuseExtension<A>) => (
<
BaseClass extends ReffuseHelpers.ReffuseHelpersClass<R>,
R
@@ -45,3 +45,4 @@ export const withExtension = <A extends object>(extension: ReffuseExtension.Reff
Object.assign(class_.prototype, extension())
return class_ as any
}
)

View File

@@ -396,7 +396,7 @@ export abstract class ReffuseHelpers<R> {
const [reactStateValue, setReactStateValue] = React.useState(initialState)
this.useFork(() => Stream.runForEach(
Stream.changes(ref.changes),
Stream.changesWith(ref.changes, (x, y) => x === y),
v => Effect.sync(() => setReactStateValue(v)),
), [ref])
@@ -428,20 +428,26 @@ export interface ReffuseHelpers<R> extends Pipeable.Pipeable {}
ReffuseHelpers.prototype.pipe = function pipe() {
return Pipeable.pipeArguments(this, arguments)
}
};
export interface ReffuseHelpersClass<R> extends Pipeable.Pipeable {
new(): ReffuseHelpers<R>
make<Self>(this: new () => Self): Self
readonly contexts: readonly ReffuseContext.ReffuseContext<R>[]
}
(ReffuseHelpers as ReffuseHelpersClass<any>).make = function make() {
return new this()
};
(ReffuseHelpers as ReffuseHelpersClass<any>).pipe = function pipe() {
return Pipeable.pipeArguments(this, arguments)
}
};
export const make = (): ReffuseHelpersClass<never> =>
export const make = (): ReffuseHelpersClass<never> => (
class extends (ReffuseHelpers<never> as ReffuseHelpersClass<never>) {
static readonly contexts = []
}
)