diff --git a/bin/build.sh b/bin/build.sh index 6db8152..547e4e7 100644 --- a/bin/build.sh +++ b/bin/build.sh @@ -1,14 +1,5 @@ mkdir build - -build() { - cat > packages/default.project.json < = Charm.Atom --[=[ diff --git a/packages/charm-sync/wally.toml b/packages/charm-sync/wally.toml index a852895..f1a78f0 100644 --- a/packages/charm-sync/wally.toml +++ b/packages/charm-sync/wally.toml @@ -3,8 +3,6 @@ name = "littensy/charm-sync" version = "0.3.0" registry = "https://github.com/UpliftGames/wally-index" realm = "shared" -exclude = ["package.json", "node_modules"] -include = ["LICENSE.md"] [dependencies] charm = "littensy/charm@^0.10" diff --git a/packages/charm/default.project.json b/packages/charm/default.project.json new file mode 100644 index 0000000..89d3ada --- /dev/null +++ b/packages/charm/default.project.json @@ -0,0 +1,6 @@ +{ + "name": "Charm", + "tree": { + "$path": "src" + } +} diff --git a/packages/charm/init.luau b/packages/charm/init.luau deleted file mode 100644 index c98e594..0000000 --- a/packages/charm/init.luau +++ /dev/null @@ -1,7 +0,0 @@ -local src = require(script.src) - -export type Atom = src.Atom -export type Selector = src.Selector -export type Molecule = src.Selector - -return src diff --git a/packages/charm/package.json b/packages/charm/package.json index 8217cfb..ea40fa6 100644 --- a/packages/charm/package.json +++ b/packages/charm/package.json @@ -4,8 +4,8 @@ "description": "An atomic state management library for Roblox", "repository": "littensy/charm", "license": "MIT", - "main": "init.luau", - "types": "index.d.ts", + "main": "src/init.luau", + "types": "src/index.d.ts", "scripts": { "prepare": "cp ../../LICENSE.md . && cp ../../README.md .", "publish:wally": "wally publish" diff --git a/packages/charm/index.d.ts b/packages/charm/src/index.d.ts similarity index 100% rename from packages/charm/index.d.ts rename to packages/charm/src/index.d.ts diff --git a/packages/charm/src/init.luau b/packages/charm/src/init.luau index d81908f..4bc1a8c 100644 --- a/packages/charm/src/init.luau +++ b/packages/charm/src/init.luau @@ -10,6 +10,7 @@ local types = require(script.types) export type Atom = types.Atom export type Selector = types.Selector export type Molecule = types.Selector +export type SyncPayload = types.SyncPayload return { atom = atom, diff --git a/packages/charm/src/types.luau b/packages/charm/src/types.luau index 6aca257..fd3ba6b 100644 --- a/packages/charm/src/types.luau +++ b/packages/charm/src/types.luau @@ -31,4 +31,13 @@ export type AtomOptions = { equals: (prev: T, next: T) -> boolean, } +--[=[ + A payload that can be sent from the server to the client to synchronize + state between the two. +]=] +export type SyncPayload = { + type: "patch" | "init", + data: { [any]: any }, +} + return nil diff --git a/packages/charm/wally.toml b/packages/charm/wally.toml index c200b5e..4497d3a 100644 --- a/packages/charm/wally.toml +++ b/packages/charm/wally.toml @@ -3,7 +3,5 @@ name = "littensy/charm" version = "0.10.0" registry = "https://github.com/UpliftGames/wally-index" realm = "shared" -exclude = ["package.json", "node_modules"] -include = ["LICENSE.md"] [dependencies] diff --git a/packages/react/default.project.json b/packages/react/default.project.json new file mode 100644 index 0000000..c1ee26a --- /dev/null +++ b/packages/react/default.project.json @@ -0,0 +1,6 @@ +{ + "name": "ReactCharm", + "tree": { + "$path": "src" + } +} diff --git a/packages/react/init.luau b/packages/react/init.luau deleted file mode 100644 index 0aab139..0000000 --- a/packages/react/init.luau +++ /dev/null @@ -1 +0,0 @@ -return require(script.src) diff --git a/packages/react/package.json b/packages/react/package.json index c73159f..df178aa 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -4,8 +4,8 @@ "description": "React bindings for Charm", "repository": "littensy/charm", "license": "MIT", - "main": "init.luau", - "types": "index.d.ts", + "main": "src/init.luau", + "types": "src/index.d.ts", "scripts": { "prepare": "cp ../../LICENSE.md . && cp ../../README.md .", "publish:wally": "wally publish" diff --git a/packages/react/index.d.ts b/packages/react/src/index.d.ts similarity index 100% rename from packages/react/index.d.ts rename to packages/react/src/index.d.ts diff --git a/packages/react/src/init.luau b/packages/react/src/init.luau index fe15dee..e200551 100644 --- a/packages/react/src/init.luau +++ b/packages/react/src/init.luau @@ -1,7 +1,7 @@ -local Charm = require(script.Parent.Parent.charm) -local React = if script.Parent.Parent:FindFirstChild("React") - then require(script.Parent.Parent.React) - else require((script.Parent.Parent :: any).react) :: never +local Charm = require(script.Parent.Charm) +local React = if script.Parent:FindFirstChild("react") + then require(script.Parent.react) :: never + else require(script.Parent.React) --[=[ A hook that subscribes to changes in the given atom or selector. The diff --git a/packages/react/wally.toml b/packages/react/wally.toml index 08e4b2b..91073ad 100644 --- a/packages/react/wally.toml +++ b/packages/react/wally.toml @@ -3,8 +3,6 @@ name = "littensy/react-charm" version = "0.3.0" registry = "https://github.com/UpliftGames/wally-index" realm = "shared" -exclude = ["package.json", "node_modules"] -include = ["LICENSE.md"] [dependencies] charm = "littensy/charm@^0.10" diff --git a/packages/vide/default.project.json b/packages/vide/default.project.json new file mode 100644 index 0000000..3a447c6 --- /dev/null +++ b/packages/vide/default.project.json @@ -0,0 +1,6 @@ +{ + "name": "VideCharm", + "tree": { + "$path": "src" + } +} diff --git a/packages/vide/init.luau b/packages/vide/init.luau deleted file mode 100644 index 0aab139..0000000 --- a/packages/vide/init.luau +++ /dev/null @@ -1 +0,0 @@ -return require(script.src) diff --git a/packages/vide/package.json b/packages/vide/package.json index 51e0ab8..adfcef4 100644 --- a/packages/vide/package.json +++ b/packages/vide/package.json @@ -4,8 +4,8 @@ "description": "Vide bindings for Charm", "repository": "littensy/charm", "license": "MIT", - "main": "init.luau", - "types": "index.d.ts", + "main": "src/init.luau", + "types": "src/index.d.ts", "scripts": { "prepare": "cp ../../LICENSE.md . && cp ../../README.md .", "publish:wally": "wally publish" diff --git a/packages/vide/index.d.ts b/packages/vide/src/index.d.ts similarity index 100% rename from packages/vide/index.d.ts rename to packages/vide/src/index.d.ts diff --git a/packages/vide/src/init.luau b/packages/vide/src/init.luau index 5f2df7b..df962b2 100644 --- a/packages/vide/src/init.luau +++ b/packages/vide/src/init.luau @@ -1,7 +1,7 @@ -local Charm = require(script.Parent.Parent.charm) -local Vide = if script.Parent.Parent:FindFirstChild("Vide") - then require(script.Parent.Parent.Vide) - else require((script.Parent.Parent :: any).vide.src) :: never +local Charm = require(script.Parent.Charm) +local Vide = if script.Parent:FindFirstChild("vide") + then require(script.Parent.vide.src) :: never + else require(script.Parent.Vide) --[=[ Subscribes to the state of an atom and returns a Vide source. diff --git a/packages/vide/wally.toml b/packages/vide/wally.toml index a0156ab..de0f253 100644 --- a/packages/vide/wally.toml +++ b/packages/vide/wally.toml @@ -3,8 +3,6 @@ name = "littensy/vide-charm" version = "0.3.0" registry = "https://github.com/UpliftGames/wally-index" realm = "shared" -exclude = ["package.json", "node_modules"] -include = ["LICENSE.md"] [dependencies] charm = "littensy/charm@^0.10" diff --git a/tests/benchmarks/atom.bench.luau b/tests/benchmarks/atom.bench.luau index 48d64b7..3bae3ca 100644 --- a/tests/benchmarks/atom.bench.luau +++ b/tests/benchmarks/atom.bench.luau @@ -1,6 +1,6 @@ local ReplicatedStorage = game:GetService("ReplicatedStorage") -local Charm = require(ReplicatedStorage.DevPackages.charm) +local Charm = require(ReplicatedStorage.DevPackages.Charm) local computed = Charm.computed local atom = Charm.atom diff --git a/tests/benchmarks/patch.bench.luau b/tests/benchmarks/patch.bench.luau index 09119c5..6ea53f6 100644 --- a/tests/benchmarks/patch.bench.luau +++ b/tests/benchmarks/patch.bench.luau @@ -1,6 +1,6 @@ local ReplicatedStorage = game:GetService("ReplicatedStorage") -local patch = require(ReplicatedStorage.DevPackages["charm-sync"].src.patch) +local patch = require(ReplicatedStorage.DevPackages.CharmSync.patch) local USERS = 1000 diff --git a/tests/charm-sync/client.spec.luau b/tests/charm-sync/client.spec.luau index 4923a4d..2d2de15 100644 --- a/tests/charm-sync/client.spec.luau +++ b/tests/charm-sync/client.spec.luau @@ -1,9 +1,9 @@ local ReplicatedStorage = game:GetService("ReplicatedStorage") -local Charm = require(ReplicatedStorage.DevPackages.charm) +local Charm = require(ReplicatedStorage.DevPackages.Charm) local atom = Charm.atom local subscribe = Charm.subscribe -local CharmSync = require(ReplicatedStorage.DevPackages["charm-sync"]) +local CharmSync = require(ReplicatedStorage.DevPackages.CharmSync) local client = CharmSync.client return function() diff --git a/tests/charm-sync/flatten.spec.luau b/tests/charm-sync/flatten.spec.luau index 0ca4ad4..c274d05 100644 --- a/tests/charm-sync/flatten.spec.luau +++ b/tests/charm-sync/flatten.spec.luau @@ -1,8 +1,8 @@ local ReplicatedStorage = game:GetService("ReplicatedStorage") -local Charm = require(ReplicatedStorage.DevPackages.charm) +local Charm = require(ReplicatedStorage.DevPackages.Charm) local atom = Charm.atom -local CharmSync = require(ReplicatedStorage.DevPackages["charm-sync"]) +local CharmSync = require(ReplicatedStorage.DevPackages.CharmSync) local flatten = CharmSync.flatten return function() diff --git a/tests/charm-sync/patch.spec.luau b/tests/charm-sync/patch.spec.luau index fe9906b..6e850b2 100644 --- a/tests/charm-sync/patch.spec.luau +++ b/tests/charm-sync/patch.spec.luau @@ -1,7 +1,7 @@ local HttpService = game:GetService("HttpService") local ReplicatedStorage = game:GetService("ReplicatedStorage") -local patch = require(ReplicatedStorage.DevPackages["charm-sync"].src.patch) +local patch = require(ReplicatedStorage.DevPackages.CharmSync.patch) return function() local function serdes(value: { [any]: any }) diff --git a/tests/charm-sync/server.spec.luau b/tests/charm-sync/server.spec.luau index 75d4c54..5fc33f9 100644 --- a/tests/charm-sync/server.spec.luau +++ b/tests/charm-sync/server.spec.luau @@ -1,11 +1,11 @@ local ReplicatedStorage = game:GetService("ReplicatedStorage") -local Charm = require(ReplicatedStorage.DevPackages.charm) +local Charm = require(ReplicatedStorage.DevPackages.Charm) local atom = Charm.atom -local CharmSync = require(ReplicatedStorage.DevPackages["charm-sync"]) +local CharmSync = require(ReplicatedStorage.DevPackages.CharmSync) type SyncPayload = CharmSync.SyncPayload local server = CharmSync.server -local patch = require(ReplicatedStorage.DevPackages["charm-sync"].src.patch) +local patch = require(ReplicatedStorage.DevPackages.CharmSync.patch) return function() local target: Player = {} :: any diff --git a/tests/charm-sync/validate.spec.luau b/tests/charm-sync/validate.spec.luau index 548ddb1..0a378d8 100644 --- a/tests/charm-sync/validate.spec.luau +++ b/tests/charm-sync/validate.spec.luau @@ -1,8 +1,8 @@ local ReplicatedStorage = game:GetService("ReplicatedStorage") -local Charm = require(ReplicatedStorage.DevPackages.charm) +local Charm = require(ReplicatedStorage.DevPackages.Charm) local atom = Charm.atom -local validate = require(ReplicatedStorage.DevPackages["charm-sync"].src.validate) +local validate = require(ReplicatedStorage.DevPackages.CharmSync.validate) return function() it("validates inputs", function() diff --git a/tests/charm/atom.spec.luau b/tests/charm/atom.spec.luau index 1c74776..0872037 100644 --- a/tests/charm/atom.spec.luau +++ b/tests/charm/atom.spec.luau @@ -1,8 +1,8 @@ local ReplicatedStorage = game:GetService("ReplicatedStorage") -local Charm = require(ReplicatedStorage.DevPackages.charm) +local Charm = require(ReplicatedStorage.DevPackages.Charm) local atom = Charm.atom -local store = require(ReplicatedStorage.DevPackages.charm.src.store) +local store = require(ReplicatedStorage.DevPackages.Charm.store) return function() it("updates state", function() diff --git a/tests/charm/batch.spec.luau b/tests/charm/batch.spec.luau index 2726a56..375f515 100644 --- a/tests/charm/batch.spec.luau +++ b/tests/charm/batch.spec.luau @@ -1,11 +1,11 @@ local ReplicatedStorage = game:GetService("ReplicatedStorage") -local Charm = require(ReplicatedStorage.DevPackages.charm) +local Charm = require(ReplicatedStorage.DevPackages.Charm) local atom = Charm.atom local computed = Charm.computed local subscribe = Charm.subscribe local effect = Charm.effect -local store = require(ReplicatedStorage.DevPackages.charm.src.store) +local store = require(ReplicatedStorage.DevPackages.Charm.store) return function() it("batches updates", function() diff --git a/tests/charm/capture.spec.luau b/tests/charm/capture.spec.luau index d74bd4d..80669a5 100644 --- a/tests/charm/capture.spec.luau +++ b/tests/charm/capture.spec.luau @@ -1,9 +1,9 @@ local ReplicatedStorage = game:GetService("ReplicatedStorage") -local Charm = require(ReplicatedStorage.DevPackages.charm) +local Charm = require(ReplicatedStorage.DevPackages.Charm) local atom = Charm.atom local subscribe = Charm.subscribe -local store = require(ReplicatedStorage.DevPackages.charm.src.store) +local store = require(ReplicatedStorage.DevPackages.Charm.store) return function() it("gracefully handles yielding", function() diff --git a/tests/charm/computed.spec.luau b/tests/charm/computed.spec.luau index 08ff46a..d71d46d 100644 --- a/tests/charm/computed.spec.luau +++ b/tests/charm/computed.spec.luau @@ -1,9 +1,9 @@ local ReplicatedStorage = game:GetService("ReplicatedStorage") -local Charm = require(ReplicatedStorage.DevPackages.charm) +local Charm = require(ReplicatedStorage.DevPackages.Charm) local atom = Charm.atom local computed = Charm.computed -local store = require(ReplicatedStorage.DevPackages.charm.src.store) +local store = require(ReplicatedStorage.DevPackages.Charm.store) local collect = require(script.Parent.Parent.utils.collect) local count = require(script.Parent.Parent.utils.count) diff --git a/tests/charm/effect.spec.luau b/tests/charm/effect.spec.luau index 7947726..1e834d0 100644 --- a/tests/charm/effect.spec.luau +++ b/tests/charm/effect.spec.luau @@ -1,6 +1,6 @@ local ReplicatedStorage = game:GetService("ReplicatedStorage") -local Charm = require(ReplicatedStorage.DevPackages.charm) +local Charm = require(ReplicatedStorage.DevPackages.Charm) local atom = Charm.atom local effect = Charm.effect diff --git a/tests/charm/mapped.spec.luau b/tests/charm/mapped.spec.luau index 720ff3a..ea3d406 100644 --- a/tests/charm/mapped.spec.luau +++ b/tests/charm/mapped.spec.luau @@ -1,10 +1,10 @@ local ReplicatedStorage = game:GetService("ReplicatedStorage") -local Charm = require(ReplicatedStorage.DevPackages.charm) +local Charm = require(ReplicatedStorage.DevPackages.Charm) local atom = Charm.atom local mapped = Charm.mapped local observe = Charm.observe -local store = require(ReplicatedStorage.DevPackages.charm.src.store) +local store = require(ReplicatedStorage.DevPackages.Charm.store) return function() it("returns mapped atoms", function() diff --git a/tests/charm/observe.spec.luau b/tests/charm/observe.spec.luau index 7937562..314366c 100644 --- a/tests/charm/observe.spec.luau +++ b/tests/charm/observe.spec.luau @@ -1,6 +1,6 @@ local ReplicatedStorage = game:GetService("ReplicatedStorage") -local Charm = require(ReplicatedStorage.DevPackages.charm) +local Charm = require(ReplicatedStorage.DevPackages.Charm) local atom = Charm.atom local observe = Charm.observe diff --git a/tests/charm/peek.spec.luau b/tests/charm/peek.spec.luau index 0e1a3ce..7b72b86 100644 --- a/tests/charm/peek.spec.luau +++ b/tests/charm/peek.spec.luau @@ -1,6 +1,6 @@ local ReplicatedStorage = game:GetService("ReplicatedStorage") -local Charm = require(ReplicatedStorage.DevPackages.charm) +local Charm = require(ReplicatedStorage.DevPackages.Charm) local atom = Charm.atom local capture = Charm.capture local peek = Charm.peek diff --git a/tests/charm/subscribe.spec.luau b/tests/charm/subscribe.spec.luau index 04d2e79..a732be9 100644 --- a/tests/charm/subscribe.spec.luau +++ b/tests/charm/subscribe.spec.luau @@ -1,10 +1,10 @@ local ReplicatedStorage = game:GetService("ReplicatedStorage") -local Charm = require(ReplicatedStorage.DevPackages.charm) +local Charm = require(ReplicatedStorage.DevPackages.Charm) local atom = Charm.atom local computed = Charm.computed local subscribe = Charm.subscribe -local store = require(ReplicatedStorage.DevPackages.charm.src.store) +local store = require(ReplicatedStorage.DevPackages.Charm.store) local collect = require(script.Parent.Parent.utils.collect) local count = require(script.Parent.Parent.utils.count) diff --git a/tests/init.server.luau b/tests/init.server.luau index adcb138..518d08b 100644 --- a/tests/init.server.luau +++ b/tests/init.server.luau @@ -6,8 +6,8 @@ local TestEZ = require(ReplicatedStorage.DevPackages.TestEZ) -- Start Charm in debug mode _G.__DEV__ = true -require(ReplicatedStorage.DevPackages.charm) -require(ReplicatedStorage.DevPackages["charm-sync"]) +require(ReplicatedStorage.DevPackages.Charm) +require(ReplicatedStorage.DevPackages.CharmSync) _G.__DEV__ = false TestEZ.TestBootstrap:run({ script.Parent }, TestEZ.Reporters.TextReporter) diff --git a/tests/init.spec.luau b/tests/init.spec.luau index 742d200..aed8099 100644 --- a/tests/init.spec.luau +++ b/tests/init.spec.luau @@ -1,6 +1,6 @@ local ReplicatedStorage = game:GetService("ReplicatedStorage") -local store = require(ReplicatedStorage.DevPackages.charm.src.store) +local store = require(ReplicatedStorage.DevPackages.Charm.store) return function() afterEach(function() diff --git a/tests/react/useAtom.spec.luau b/tests/react/useAtom.spec.luau index 79e5640..5476f28 100644 --- a/tests/react/useAtom.spec.luau +++ b/tests/react/useAtom.spec.luau @@ -1,8 +1,8 @@ local ReplicatedStorage = game:GetService("ReplicatedStorage") -local Charm = require(ReplicatedStorage.DevPackages.charm) +local Charm = require(ReplicatedStorage.DevPackages.Charm) local atom = Charm.atom -local ReactCharm = require(ReplicatedStorage.DevPackages["react-charm"]) +local ReactCharm = require(ReplicatedStorage.DevPackages.ReactCharm) local useAtom = ReactCharm.useAtom local renderHook = require(script.Parent.Parent.utils.renderHook) diff --git a/tests/vide/useAtom.spec.luau b/tests/vide/useAtom.spec.luau index ceaebc0..cc4dd40 100644 --- a/tests/vide/useAtom.spec.luau +++ b/tests/vide/useAtom.spec.luau @@ -1,10 +1,10 @@ local ReplicatedStorage = game:GetService("ReplicatedStorage") -local Charm = require(ReplicatedStorage.DevPackages.charm) +local Charm = require(ReplicatedStorage.DevPackages.Charm) local atom = Charm.atom local Vide = require(ReplicatedStorage.DevPackages.Vide) local root = Vide.root -local VideCharm = require(ReplicatedStorage.DevPackages["vide-charm"]) +local VideCharm = require(ReplicatedStorage.DevPackages.VideCharm) local useAtom = VideCharm.useAtom return function()