diff --git a/packages/charm-sync/src/server.luau b/packages/charm-sync/src/server.luau index ca04ba7..4e07941 100644 --- a/packages/charm-sync/src/server.luau +++ b/packages/charm-sync/src/server.luau @@ -39,10 +39,10 @@ local syncCallback: ((client: any, payloads: { SyncPayload }) -> ())? support custom implementations of reactive proxies. ]] local function toRaw(value: T): T - value = value :: types.ReactiveProxy - if type(value) == "table" and type(value.__target) == "table" and type(value.__track) == "function" then - value.__track() - return toRaw(value.__target) + local proxy = value :: types.ReactiveProxy + if type(proxy) == "table" and type(proxy.__target) == "table" and type(proxy.__track) == "function" then + proxy.__track() + return toRaw(proxy.__target) end return value end diff --git a/packages/charm-sync/test/utils.test.luau b/packages/charm-sync/test/utils.test.luau index 15dcabf..1d50f55 100644 --- a/packages/charm-sync/test/utils.test.luau +++ b/packages/charm-sync/test/utils.test.luau @@ -6,7 +6,7 @@ test("should flatten functions", function() local input = { a = Charm.atom(0), b = { c = Charm.atom(0) }, - d = { e = { f = utils.signalToAtom(Charm.signal(0)) } }, + d = { e = { f = utils.signalToAtom<>(Charm.signal(0)) } }, } local result = utils.flatten<<{ [string]: Charm.Atom }>>(input) diff --git a/packages/charm/src/init.luau b/packages/charm/src/init.luau index ff87785..0ba77d7 100644 --- a/packages/charm/src/init.luau +++ b/packages/charm/src/init.luau @@ -486,7 +486,7 @@ local function signal(initialValue: T, equals: Equals?): (Getter, Sette end -- Check if the new value is different from the pending value - if if equals then not equals(node.pendingValue, value) else node.pendingValue ~= value then + if if equals then not equals(node.pendingValue, value :: T) else node.pendingValue ~= value then if flags.frozen then deepFreeze(value) end diff --git a/packages/deep-charm/src/init.luau b/packages/deep-charm/src/init.luau index 9eb9943..9e16cb1 100644 --- a/packages/deep-charm/src/init.luau +++ b/packages/deep-charm/src/init.luau @@ -36,9 +36,9 @@ end ]] local function toRaw(value: T): T if isReactive(value) then - value = value :: ReactiveProxy - value.__track() - return toRaw(value.__target) + local proxy = value :: ReactiveProxy + proxy.__track() + return toRaw(proxy.__target) end return value end @@ -115,7 +115,7 @@ end @return A reactive proxy if the value is a table ]] local function toReactive(value: T, trackParent: (() -> ())?): T - return if type(value) == "table" then reactive(value, trackParent) else value + return if type(value) == "table" then reactive(value, trackParent) :: T else value :: T end function ReactiveProxy.__index(self: ReactiveProxy, key: any): any diff --git a/packages/react-charm/src/init.luau b/packages/react-charm/src/init.luau index 19a95e8..08b5342 100644 --- a/packages/react-charm/src/init.luau +++ b/packages/react-charm/src/init.luau @@ -14,7 +14,7 @@ local React = require("./React") @return The current state. ]] local function useSignalState(getter: () -> T, dependencies: {}?): T - local value, setValue = React.useState(getter) + local value: T, setValue = React.useState(getter) React.useLayoutEffect(function(): () -> () return Charm.listen(getter, setValue :: (T, T?) -> ()) diff --git a/rokit.toml b/rokit.toml index c99bf5d..ca169e2 100644 --- a/rokit.toml +++ b/rokit.toml @@ -1,6 +1,6 @@ [tools] wally = "UpliftGames/wally@0.3.2" -rojo = "rojo-rbx/rojo@7.7.0-rc.1" +rojo = "rojo-rbx/rojo@7.7.0" stylua = "johnnymorganz/stylua@2.5.2" -luau-lsp = "johnnymorganz/luau-lsp@1.68.1" +luau-lsp = "johnnymorganz/luau-lsp@1.70.1" lute = "luau-lang/lute@1.0.0"