diff --git a/bin/build.sh b/bin/build.sh index 547e4e7..6db8152 100644 --- a/bin/build.sh +++ b/bin/build.sh @@ -1,5 +1,14 @@ mkdir build -rojo build packages/charm -o build/charm.rbxm -rojo build packages/charm-sync -o build/charm-sync.rbxm -rojo build packages/react -o build/react-charm.rbxm -rojo build packages/vide -o build/vide-charm.rbxm + +build() { + cat > packages/default.project.json < = Charm.Atom --[=[ diff --git a/packages/charm-sync/wally.toml b/packages/charm-sync/wally.toml index dffe326..80468d8 100644 --- a/packages/charm-sync/wally.toml +++ b/packages/charm-sync/wally.toml @@ -3,6 +3,8 @@ name = "littensy/charm-sync" version = "0.2.0" registry = "https://github.com/UpliftGames/wally-index" realm = "shared" +exclude = ["package.json", "node_modules"] +include = ["LICENSE.md"] [dependencies] -Charm = "littensy/charm@^0.9" +charm = "littensy/charm@^0.9" diff --git a/packages/charm/default.project.json b/packages/charm/default.project.json deleted file mode 100644 index 89d3ada..0000000 --- a/packages/charm/default.project.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "Charm", - "tree": { - "$path": "src" - } -} diff --git a/packages/charm/src/index.d.ts b/packages/charm/index.d.ts similarity index 100% rename from packages/charm/src/index.d.ts rename to packages/charm/index.d.ts diff --git a/packages/charm/init.luau b/packages/charm/init.luau new file mode 100644 index 0000000..c98e594 --- /dev/null +++ b/packages/charm/init.luau @@ -0,0 +1,7 @@ +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 71a30dc..9580314 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": "src/init.luau", - "types": "src/index.d.ts", + "main": "init.luau", + "types": "index.d.ts", "scripts": { "prepare": "cp ../../LICENSE.md . && cp ../../README.md .", "publish:wally": "wally publish" diff --git a/packages/charm/src/init.luau b/packages/charm/src/init.luau index 4bc1a8c..d81908f 100644 --- a/packages/charm/src/init.luau +++ b/packages/charm/src/init.luau @@ -10,7 +10,6 @@ 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 fd3ba6b..6aca257 100644 --- a/packages/charm/src/types.luau +++ b/packages/charm/src/types.luau @@ -31,13 +31,4 @@ 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 dde85b5..d3ac7df 100644 --- a/packages/charm/wally.toml +++ b/packages/charm/wally.toml @@ -3,5 +3,7 @@ name = "littensy/charm" version = "0.9.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 deleted file mode 100644 index c1ee26a..0000000 --- a/packages/react/default.project.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "ReactCharm", - "tree": { - "$path": "src" - } -} diff --git a/packages/react/src/index.d.ts b/packages/react/index.d.ts similarity index 100% rename from packages/react/src/index.d.ts rename to packages/react/index.d.ts diff --git a/packages/react/init.luau b/packages/react/init.luau new file mode 100644 index 0000000..0aab139 --- /dev/null +++ b/packages/react/init.luau @@ -0,0 +1 @@ +return require(script.src) diff --git a/packages/react/package.json b/packages/react/package.json index 04c8c1f..41a83f7 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": "src/init.luau", - "types": "src/index.d.ts", + "main": "init.luau", + "types": "index.d.ts", "scripts": { "prepare": "cp ../../LICENSE.md . && cp ../../README.md .", "publish:wally": "wally publish" diff --git a/packages/react/src/init.luau b/packages/react/src/init.luau index e200551..fe15dee 100644 --- a/packages/react/src/init.luau +++ b/packages/react/src/init.luau @@ -1,7 +1,7 @@ -local Charm = require(script.Parent.Charm) -local React = if script.Parent:FindFirstChild("react") - then require(script.Parent.react) :: never - else require(script.Parent.React) +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 --[=[ 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 a26d426..bd379d8 100644 --- a/packages/react/wally.toml +++ b/packages/react/wally.toml @@ -3,7 +3,9 @@ name = "littensy/react-charm" version = "0.2.0" registry = "https://github.com/UpliftGames/wally-index" realm = "shared" +exclude = ["package.json", "node_modules"] +include = ["LICENSE.md"] [dependencies] -Charm = "littensy/charm@^0.9" +charm = "littensy/charm@^0.9" React = "jsdotlua/react@^17" diff --git a/packages/vide/default.project.json b/packages/vide/default.project.json deleted file mode 100644 index 3a447c6..0000000 --- a/packages/vide/default.project.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "VideCharm", - "tree": { - "$path": "src" - } -} diff --git a/packages/vide/src/index.d.ts b/packages/vide/index.d.ts similarity index 100% rename from packages/vide/src/index.d.ts rename to packages/vide/index.d.ts diff --git a/packages/vide/init.luau b/packages/vide/init.luau new file mode 100644 index 0000000..0aab139 --- /dev/null +++ b/packages/vide/init.luau @@ -0,0 +1 @@ +return require(script.src) diff --git a/packages/vide/package.json b/packages/vide/package.json index bf0b559..7ffe63c 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": "src/init.luau", - "types": "src/index.d.ts", + "main": "init.luau", + "types": "index.d.ts", "scripts": { "prepare": "cp ../../LICENSE.md . && cp ../../README.md .", "publish:wally": "wally publish" diff --git a/packages/vide/src/init.luau b/packages/vide/src/init.luau index df962b2..5f2df7b 100644 --- a/packages/vide/src/init.luau +++ b/packages/vide/src/init.luau @@ -1,7 +1,7 @@ -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) +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 --[=[ 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 fdb1b0e..642ab3c 100644 --- a/packages/vide/wally.toml +++ b/packages/vide/wally.toml @@ -3,7 +3,9 @@ name = "littensy/vide-charm" version = "0.2.0" registry = "https://github.com/UpliftGames/wally-index" realm = "shared" +exclude = ["package.json", "node_modules"] +include = ["LICENSE.md"] [dependencies] -Charm = "littensy/charm@^0.9" +charm = "littensy/charm@^0.9" Vide = "centau/vide@^0.3" diff --git a/tests/benchmarks/atom.bench.luau b/tests/benchmarks/atom.bench.luau index 3bae3ca..48d64b7 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 6ea53f6..09119c5 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.CharmSync.patch) +local patch = require(ReplicatedStorage.DevPackages["charm-sync"].src.patch) local USERS = 1000 diff --git a/tests/charm-sync/client.spec.luau b/tests/charm-sync/client.spec.luau index 2d2de15..4923a4d 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.CharmSync) +local CharmSync = require(ReplicatedStorage.DevPackages["charm-sync"]) local client = CharmSync.client return function() diff --git a/tests/charm-sync/flatten.spec.luau b/tests/charm-sync/flatten.spec.luau index c274d05..0ca4ad4 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.CharmSync) +local CharmSync = require(ReplicatedStorage.DevPackages["charm-sync"]) local flatten = CharmSync.flatten return function() diff --git a/tests/charm-sync/patch.spec.luau b/tests/charm-sync/patch.spec.luau index 6e850b2..fe9906b 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.CharmSync.patch) +local patch = require(ReplicatedStorage.DevPackages["charm-sync"].src.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 5fc33f9..75d4c54 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.CharmSync) +local CharmSync = require(ReplicatedStorage.DevPackages["charm-sync"]) type SyncPayload = CharmSync.SyncPayload local server = CharmSync.server -local patch = require(ReplicatedStorage.DevPackages.CharmSync.patch) +local patch = require(ReplicatedStorage.DevPackages["charm-sync"].src.patch) return function() local target: Player = {} :: any diff --git a/tests/charm-sync/validate.spec.luau b/tests/charm-sync/validate.spec.luau index 0a378d8..548ddb1 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.CharmSync.validate) +local validate = require(ReplicatedStorage.DevPackages["charm-sync"].src.validate) return function() it("validates inputs", function() diff --git a/tests/charm/atom.spec.luau b/tests/charm/atom.spec.luau index 0872037..1c74776 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.store) +local store = require(ReplicatedStorage.DevPackages.charm.src.store) return function() it("updates state", function() diff --git a/tests/charm/batch.spec.luau b/tests/charm/batch.spec.luau index 375f515..2726a56 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.store) +local store = require(ReplicatedStorage.DevPackages.charm.src.store) return function() it("batches updates", function() diff --git a/tests/charm/capture.spec.luau b/tests/charm/capture.spec.luau index 80669a5..d74bd4d 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.store) +local store = require(ReplicatedStorage.DevPackages.charm.src.store) return function() it("gracefully handles yielding", function() diff --git a/tests/charm/computed.spec.luau b/tests/charm/computed.spec.luau index d71d46d..08ff46a 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.store) +local store = require(ReplicatedStorage.DevPackages.charm.src.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 1e834d0..7947726 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 ea3d406..720ff3a 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.store) +local store = require(ReplicatedStorage.DevPackages.charm.src.store) return function() it("returns mapped atoms", function() diff --git a/tests/charm/observe.spec.luau b/tests/charm/observe.spec.luau index 314366c..7937562 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 7b72b86..0e1a3ce 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 a732be9..04d2e79 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.store) +local store = require(ReplicatedStorage.DevPackages.charm.src.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 518d08b..adcb138 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.CharmSync) +require(ReplicatedStorage.DevPackages.charm) +require(ReplicatedStorage.DevPackages["charm-sync"]) _G.__DEV__ = false TestEZ.TestBootstrap:run({ script.Parent }, TestEZ.Reporters.TextReporter) diff --git a/tests/init.spec.luau b/tests/init.spec.luau index aed8099..742d200 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.store) +local store = require(ReplicatedStorage.DevPackages.charm.src.store) return function() afterEach(function() diff --git a/tests/react/useAtom.spec.luau b/tests/react/useAtom.spec.luau index 5476f28..79e5640 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.ReactCharm) +local ReactCharm = require(ReplicatedStorage.DevPackages["react-charm"]) 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 cc4dd40..ceaebc0 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.VideCharm) +local VideCharm = require(ReplicatedStorage.DevPackages["vide-charm"]) local useAtom = VideCharm.useAtom return function()