From 18723c1377b300ea37c8fc990883000fa4bf9f2e Mon Sep 17 00:00:00 2001 From: Richard Date: Sun, 25 Feb 2024 03:41:09 -0800 Subject: [PATCH] feat: initial commit --- .eslintrc | 26 + .gitattributes | 2 + .github/workflows/ci.yml | 36 + .github/workflows/release.yml | 29 + .gitignore | 7 + .luaurc | 3 + .prettierrc | 6 + .vscode/settings.json | 5 + LICENSE.md | 7 + README.md | 142 ++ aftman.toml | 11 + bin/check.sh | 18 + bin/install.sh | 4 + bin/spec.server.luau | 10 + bin/testez.d.luau | 24 + default.project.json | 6 + dev.project.json | 20 + images/logo.png | Bin 0 -> 252858 bytes package.json | 58 + pnpm-lock.yaml | 1482 +++++++++++++++++++ selene.toml | 5 + src/__tests__/atom.spec.luau | 85 ++ src/__tests__/derive.spec.luau | 92 ++ src/__tests__/init.spec.luau | 7 + src/__tests__/observe.spec.luau | 33 + src/__tests__/react/helpers/renderHook.luau | 42 + src/__tests__/react/useAtomState.spec.luau | 27 + src/__tests__/react/useSetAtom.spec.luau | 34 + src/__tests__/split.spec.luau | 128 ++ src/__tests__/subscribe.spec.luau | 92 ++ src/atom.luau | 137 ++ src/derive.luau | 53 + src/index.d.ts | 89 ++ src/init.luau | 26 + src/isAtom.luau | 5 + src/modules/Promise.luau | 9 + src/modules/React.luau | 8 + src/modules/ReactRoblox.luau | 8 + src/observe.luau | 38 + src/react/useAtom.luau | 19 + src/react/useAtomState.luau | 35 + src/react/useSetAtom.luau | 14 + src/split.luau | 75 + src/subscribe.luau | 46 + src/utils/reference.luau | 31 + testez-companion.toml | 1 + testez.yml | 53 + tsconfig.json | 27 + wally.lock | 103 ++ wally.toml | 20 + 50 files changed, 3238 insertions(+) create mode 100644 .eslintrc create mode 100644 .gitattributes create mode 100644 .github/workflows/ci.yml create mode 100644 .github/workflows/release.yml create mode 100644 .gitignore create mode 100644 .luaurc create mode 100644 .prettierrc create mode 100644 .vscode/settings.json create mode 100644 LICENSE.md create mode 100644 README.md create mode 100644 aftman.toml create mode 100644 bin/check.sh create mode 100644 bin/install.sh create mode 100644 bin/spec.server.luau create mode 100644 bin/testez.d.luau create mode 100644 default.project.json create mode 100644 dev.project.json create mode 100644 images/logo.png create mode 100644 package.json create mode 100644 pnpm-lock.yaml create mode 100644 selene.toml create mode 100644 src/__tests__/atom.spec.luau create mode 100644 src/__tests__/derive.spec.luau create mode 100644 src/__tests__/init.spec.luau create mode 100644 src/__tests__/observe.spec.luau create mode 100644 src/__tests__/react/helpers/renderHook.luau create mode 100644 src/__tests__/react/useAtomState.spec.luau create mode 100644 src/__tests__/react/useSetAtom.spec.luau create mode 100644 src/__tests__/split.spec.luau create mode 100644 src/__tests__/subscribe.spec.luau create mode 100644 src/atom.luau create mode 100644 src/derive.luau create mode 100644 src/index.d.ts create mode 100644 src/init.luau create mode 100644 src/isAtom.luau create mode 100644 src/modules/Promise.luau create mode 100644 src/modules/React.luau create mode 100644 src/modules/ReactRoblox.luau create mode 100644 src/observe.luau create mode 100644 src/react/useAtom.luau create mode 100644 src/react/useAtomState.luau create mode 100644 src/react/useSetAtom.luau create mode 100644 src/split.luau create mode 100644 src/subscribe.luau create mode 100644 src/utils/reference.luau create mode 100644 testez-companion.toml create mode 100644 testez.yml create mode 100644 tsconfig.json create mode 100644 wally.lock create mode 100644 wally.toml diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 0000000..8f628fe --- /dev/null +++ b/.eslintrc @@ -0,0 +1,26 @@ +{ + "parser": "@typescript-eslint/parser", + "parserOptions": { + "jsx": true, + "useJSXTextNode": true, + "ecmaVersion": 2018, + "sourceType": "module", + "project": "./tsconfig.json" + }, + "plugins": [ + "@typescript-eslint", + "roblox-ts", + "prettier" + ], + "extends": [ + "eslint:recommended", + "plugin:@typescript-eslint/recommended", + "plugin:roblox-ts/recommended", + "plugin:prettier/recommended" + ], + "rules": { + "prettier/prettier": "warn", + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-unsafe-declaration-merging": "off" + } +} diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..58d6f77 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +* text=auto eol=lf +*.luau linguist-language=Lua diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..a8561d3 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,36 @@ +name: CI + +on: + push: + branches: + - main + + pull_request: + branches: + - main + +jobs: + analyze: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: pnpm/action-setup@v3 + with: + version: 8.15.4 + + - name: Install Aftman + uses: ok-nick/setup-aftman@v0.4.2 + + - name: Install dependencies + run: | + pnpm install + pnpm wally + + - name: Check code quality + run: pnpm lint + + - name: Run ESLint + run: pnpm eslint + + - name: Build model + run: rojo build -o charm.rbxm diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..cb6a3c2 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,29 @@ +name: Release + +on: + release: + types: + - published + +jobs: + release: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Install Aftman + uses: ok-nick/setup-aftman@v0.4.2 + + - name: Install dependencies + run: wally install + + - name: Build model + run: rojo build -o charm.rbxm + + - name: Upload release + uses: softprops/action-gh-release@v2 + if: ${{ github.event.release }} + with: + files: charm.rbxm + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f57862f --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +/node_modules +/Packages +/DevPackages +/sourcemap.json +*.tsbuildinfo +*.tgz +.DS_Store diff --git a/.luaurc b/.luaurc new file mode 100644 index 0000000..e2b625c --- /dev/null +++ b/.luaurc @@ -0,0 +1,3 @@ +{ + "languageMode": "strict" +} diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..701a273 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,6 @@ +{ + "printWidth": 120, + "tabWidth": 2, + "trailingComma": "all", + "useTabs": true +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..e6aa02a --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "luau-lsp.sourcemap.rojoProjectFile": "dev.project.json", + "luau-lsp.types.definitionFiles": ["bin/testez.d.luau"], + "luau-lsp.completion.imports.requireStyle": "alwaysRelative" +} diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..ae1bb3d --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,7 @@ +Copyright 2024 Littensy + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..652d82e --- /dev/null +++ b/README.md @@ -0,0 +1,142 @@ +

+

+ Logo +

+

Charm

+

+ Atomic state management for Roblox. +
+ npm package → +

+

+ +
+ +![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/littensy/charm/ci.yml?style=for-the-badge&branch=master&logo=github) +[![NPM Version](https://img.shields.io/npm/v/@rbxts/charm.svg?style=for-the-badge&logo=npm)](https://www.npmjs.com/package/@rbxts/charm) +[![GitHub License](https://img.shields.io/github/license/littensy/charm?style=for-the-badge)](LICENSE.md) + +
+ +**Charm** is a Roblox state management library, inspired by [Jotai](https://jotai.org). Designed to be an alternative to [Reflex](https://littensy.github.io/reflex), Charm aims to bring an atomic and composable approach to your game's state. + +> [!NOTE] +> Charm is incomplete and not ready for use. + +## 📦 Setup + +### TypeScript + +Install Charm through your package manager of choice. \ +[React](https://github.com/littensy/rbxts-react) is optional, but highly recommended. + +```sh +npm install @rbxts/charm +yarn add @rbxts/charm +pnpm add @rbxts/charm +``` + +### Wally + +Add `littensy/charm` to your `wally.toml` file. + +```toml +[dependencies] +Charm = "littensy/charm@VERSION" +``` + +## 📚 Documentation + +### `atom(state)` + +### `derive(...atoms, combiner)` + +### `subscribe(atom, listener)` + +### `observe(atom, observer)` + +### `split(atom, keyExtractor?)` + +--- + +### `Atom(state?)` + +### `Atom.get(selector?)` + +### `Atom.set(state)` + +### `Atom.memo(equalityFn)` + +### `Atom.readonly()` + +### `Atom.writable(onSet?)` + +### `Atom.named(label)` + +### `Atom.unmount()` + +--- + +### `useAtom(atom, selector?)` + +### `useAtomState(atom)` + +### `useSetAtom(atom)` + +## 🚀 Examples + +### Counter atom + +```ts +import { atom, derive, subscribe } from "@rbxts/charm"; + +const counterAtom = atom(0); +const doubleCounterAtom = derive(counterAtom, (counter) => counter * 2); + +subscribe(doubleCounterAtom, (value) => { + print(value); +}); + +counterAtom(1); +counterAtom((count) => count + 1); +``` + +### Counter component + +```tsx +import React from "@rbxts/react"; +import { useAtom } from "@rbxts/charm"; +import { counterAtom } from "./counter-atom"; + +function Counter() { + const [count, setCount] = useAtom(counterAtom); + + return ( + setCount(count + 1), + }} + /> + ); +} +``` + +## 🙋 Concerns + +In Jotai, `atom()` returns an [atom config](https://jotai.org/docs/core/atom), and its state is managed entirely by the Provider. However, in Charm, `atom()` returns something closer to a store, and its state is managed by the atom itself. + +Charm does this for simplicity in use cases outside of React, but this might go against Jotai's focus on pure functional programming. More insight is needed to determine if this is a good idea. + +--- + +

+Charm is released under the MIT License. +

+ +
+ +[![MIT License](https://img.shields.io/badge/license-mit-f4dbd6?style=for-the-badge&labelColor=302d41)](LICENSE.md) + +
diff --git a/aftman.toml b/aftman.toml new file mode 100644 index 0000000..187b7df --- /dev/null +++ b/aftman.toml @@ -0,0 +1,11 @@ +# This file lists tools managed by Aftman, a cross-platform toolchain manager. +# For more information, see https://github.com/LPGhatguy/aftman + +# To add a new tool, add an entry to this table. +[tools] +wally = "UpliftGames/wally@0.3.2" +rojo = "rojo-rbx/rojo@7.4.1" +wally-package-types = "JohnnyMorganz/wally-package-types@1.3.1" +stylua = "johnnymorganz/stylua@0.20.0" +selene = "Kampfkarren/selene@0.26.1" +luau-lsp = "johnnymorganz/luau-lsp@1.27.1" diff --git a/bin/check.sh b/bin/check.sh new file mode 100644 index 0000000..e388fe8 --- /dev/null +++ b/bin/check.sh @@ -0,0 +1,18 @@ +curl -o bin/roblox.d.luau https://raw.githubusercontent.com/JohnnyMorganz/luau-lsp/main/scripts/globalTypes.d.lua + +rojo sourcemap dev.project.json -o sourcemap.json + +luau-lsp analyze \ + --defs=bin/roblox.d.luau \ + --defs=bin/testez.d.luau \ + --flag:LuauFixIndexerSubtypingOrdering=true \ + --flag:LuauInstantiateInSubtyping=true \ + --flag:LuauTinyControlFlowAnalysis=true \ + --sourcemap=sourcemap.json \ + --ignore="**/_Index/**" src + +selene src +stylua --check src +eslint src + +rm bin/roblox.d.luau diff --git a/bin/install.sh b/bin/install.sh new file mode 100644 index 0000000..4091d75 --- /dev/null +++ b/bin/install.sh @@ -0,0 +1,4 @@ +wally install +rojo sourcemap dev.project.json --output sourcemap.json +wally-package-types --sourcemap sourcemap.json Packages +wally-package-types --sourcemap sourcemap.json DevPackages diff --git a/bin/spec.server.luau b/bin/spec.server.luau new file mode 100644 index 0000000..81d6907 --- /dev/null +++ b/bin/spec.server.luau @@ -0,0 +1,10 @@ +--!nocheck + +local ReplicatedStorage = game:GetService("ReplicatedStorage") + +local Packages = ReplicatedStorage.Packages +local DevPackages = ReplicatedStorage.DevPackages + +local TestEZ = require(DevPackages.TestEZ) + +TestEZ.TestBootstrap:run({ Packages.charm.__tests__ }, TestEZ.Reporters.TextReporter) diff --git a/bin/testez.d.luau b/bin/testez.d.luau new file mode 100644 index 0000000..28bef92 --- /dev/null +++ b/bin/testez.d.luau @@ -0,0 +1,24 @@ +declare function afterAll(callback: () -> ()): () +declare function afterEach(callback: () -> ()): () + +declare function beforeAll(callback: () -> ()): () +declare function beforeEach(callback: () -> ()): () + +declare function describe(phrase: string, callback: () -> ()): () +declare function describeFOCUS(phrase: string, callback: () -> ()): () +declare function fdescribe(phrase: string, callback: () -> ()): () +declare function describeSKIP(phrase: string, callback: () -> ()): () +declare function xdescribe(phrase: string, callback: () -> ()): () + +declare function expect(value: any): any + +declare function FIXME(optionalMessage: string?): () +declare function FOCUS(): () +declare function SKIP(): () + +declare function it(phrase: string, callback: () -> ()): () +declare function itFOCUS(phrase: string, callback: () -> ()): () +declare function fit(phrase: string, callback: () -> ()): () +declare function itSKIP(phrase: string, callback: () -> ()): () +declare function xit(phrase: string, callback: () -> ()): () +declare function itFIXME(phrase: string, callback: () -> ()): () diff --git a/default.project.json b/default.project.json new file mode 100644 index 0000000..a485e4d --- /dev/null +++ b/default.project.json @@ -0,0 +1,6 @@ +{ + "name": "charm", + "tree": { + "$path": "src" + } +} diff --git a/dev.project.json b/dev.project.json new file mode 100644 index 0000000..ed0d1b9 --- /dev/null +++ b/dev.project.json @@ -0,0 +1,20 @@ +{ + "name": "charm-dev", + "tree": { + "$className": "DataModel", + "ReplicatedStorage": { + "$className": "ReplicatedStorage", + "Packages": { + "$path": "Packages", + "ReactLua": { "$path": "Packages" }, + "charm": { "$path": "src" } + }, + "DevPackages": { "$path": "DevPackages" } + }, + "TestService": { + "$className": "TestService", + "$properties": { "ExecuteWithStudioRun": true }, + "spec": { "$path": "bin/spec.server.luau" } + } + } +} diff --git a/images/logo.png b/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..7f4915ee860bc328c43da3b8e42adf65c759d0d7 GIT binary patch literal 252858 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

F#7$8QA+=h4C+EJH+=<;5d6F_~hGGTR@1gA!G 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 eIOs80<~b3~JYi|RciLx8>+wU=2etYx(f=0.10.0'} + dev: true + + /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.57.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@eslint-community/regexpp@4.10.0: + resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: true + + /@eslint/eslintrc@2.1.4: + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.6.1 + globals: 13.24.0 + ignore: 5.3.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@eslint/js@8.57.0: + resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@humanwhocodes/config-array@0.11.14: + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 2.0.2 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/module-importer@1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + dev: true + + /@humanwhocodes/object-schema@2.0.2: + resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} + dev: true + + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + dev: true + + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + dev: true + + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.1 + dev: true + + /@pkgr/core@0.1.1: + resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + dev: true + + /@rbxts/compiler-types@2.3.0-types.0: + resolution: {integrity: sha512-2kllUXLlK22OzSi3GmLT+/O70U9oB2iXp4rGFk5FLwc1pqf4W9EsInuJ0t7poLE2XnqnpW/ojff9CUNivI2+lw==} + dev: true + + /@rbxts/react-vendor@0.3.1: + resolution: {integrity: sha512-5oYc5SkvNCkOrD6uqVoqVmjlR2FgCPlhHasqgPEHbE0qurrCDF8PKvVT9r0gi8VFHLVSp9Hj9BG2WNifDt6Yew==} + dev: true + + /@rbxts/react@0.3.1: + resolution: {integrity: sha512-J+PhKiDABBMC+hrOvqDiOSS6GhWqulizl9tSRG8ezZxNYsuoMGnShJvhDounPyTGl0ikjy3l2BRIKqy+xregzA==} + dependencies: + '@rbxts/react-vendor': 0.3.1 + dev: true + + /@rbxts/types@1.0.756: + resolution: {integrity: sha512-3lbsF5BWL3eSXnGhb4fQMnH03HvgW1tLwXA7caOy42y2RosQ3IooRMq5iMDr9NCoVNXEP+5vC3w1VcjqOBOzMA==} + dev: true + + /@roblox-ts/luau-ast@1.0.11: + resolution: {integrity: sha512-+maoLYpqY0HK8ugLFHS3qz0phMyDaN3i21jjW75T2ZaqJg84heKDUo98iXClvnx3mUDhW10IxqH+cYJ2iftYhQ==} + dev: true + + /@roblox-ts/path-translator@1.0.0: + resolution: {integrity: sha512-Lp6qVUqjmXIrICy2KPKRiX8IkJ+lNqn6RqoUplLiTr+4JehIN+mJv0tTnE72XRyIfcx0VWl5nKrRwUuqcOj1yg==} + dependencies: + ajv: 8.12.0 + fs-extra: 11.2.0 + dev: true + + /@roblox-ts/rojo-resolver@1.0.6: + resolution: {integrity: sha512-+heTECMo6BdH3a3h4DCj+8kJvwKuxWqBevcW/m2BzQaVtmo1GtLa4V4bJCMvDuAMeEqYKQZUB7546nN2dcqqAA==} + dependencies: + ajv: 8.12.0 + fs-extra: 11.2.0 + dev: true + + /@types/fs-extra@11.0.4: + resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==} + dependencies: + '@types/jsonfile': 6.1.4 + '@types/node': 20.11.20 + dev: true + + /@types/json-schema@7.0.15: + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + dev: true + + /@types/jsonfile@6.1.4: + resolution: {integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==} + dependencies: + '@types/node': 20.11.20 + dev: true + + /@types/mocha@10.0.6: + resolution: {integrity: sha512-dJvrYWxP/UcXm36Qn36fxhUKu8A/xMRXVT2cliFF1Z7UA9liG5Psj3ezNSZw+5puH2czDXRLcXQxf8JbJt0ejg==} + dev: true + + /@types/node@20.11.20: + resolution: {integrity: sha512-7/rR21OS+fq8IyHTgtLkDK949uzsa6n8BkziAKtPVpugIkO6D+/ooXMvzXxDnZrmtXVfjb1bKQafYpb8s89LOg==} + dependencies: + undici-types: 5.26.5 + dev: true + + /@types/prompts@2.4.9: + resolution: {integrity: sha512-qTxFi6Buiu8+50/+3DGIWLHM6QuWsEKugJnnP6iv2Mc4ncxE4A/OJkjuVOA+5X0X1S/nq5VJRa8Lu+nwcvbrKA==} + dependencies: + '@types/node': 20.11.20 + kleur: 3.0.3 + dev: true + + /@types/resolve@1.20.6: + resolution: {integrity: sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==} + dev: true + + /@types/semver@7.5.7: + resolution: {integrity: sha512-/wdoPq1QqkSj9/QOeKkFquEuPzQbHTWAMPH/PaUMB+JuR31lXhlWXRZ52IpfDYVlDOUBvX09uBrPwxGT1hjNBg==} + dev: true + + /@types/yargs-parser@21.0.3: + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + dev: true + + /@types/yargs@17.0.32: + resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} + dependencies: + '@types/yargs-parser': 21.0.3 + dev: true + + /@typescript-eslint/eslint-plugin@7.0.2(@typescript-eslint/parser@7.0.2)(eslint@8.57.0)(typescript@5.3.3): + resolution: {integrity: sha512-/XtVZJtbaphtdrWjr+CJclaCVGPtOdBpFEnvtNf/jRV0IiEemRrL0qABex/nEt8isYcnFacm3nPHYQwL+Wb7qg==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.10.0 + '@typescript-eslint/parser': 7.0.2(eslint@8.57.0)(typescript@5.3.3) + '@typescript-eslint/scope-manager': 7.0.2 + '@typescript-eslint/type-utils': 7.0.2(eslint@8.57.0)(typescript@5.3.3) + '@typescript-eslint/utils': 7.0.2(eslint@8.57.0)(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 7.0.2 + debug: 4.3.4 + eslint: 8.57.0 + graphemer: 1.4.0 + ignore: 5.3.1 + natural-compare: 1.4.0 + semver: 7.6.0 + ts-api-utils: 1.2.1(typescript@5.3.3) + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/experimental-utils@5.62.0(eslint@8.57.0)(typescript@5.3.3): + resolution: {integrity: sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.3.3) + eslint: 8.57.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/parser@7.0.2(eslint@8.57.0)(typescript@5.3.3): + resolution: {integrity: sha512-GdwfDglCxSmU+QTS9vhz2Sop46ebNCXpPPvsByK7hu0rFGRHL+AusKQJ7SoN+LbLh6APFpQwHKmDSwN35Z700Q==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 7.0.2 + '@typescript-eslint/types': 7.0.2 + '@typescript-eslint/typescript-estree': 7.0.2(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 7.0.2 + debug: 4.3.4 + eslint: 8.57.0 + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/scope-manager@5.62.0: + resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + dev: true + + /@typescript-eslint/scope-manager@7.0.2: + resolution: {integrity: sha512-l6sa2jF3h+qgN2qUMjVR3uCNGjWw4ahGfzIYsCtFrQJCjhbrDPdiihYT8FnnqFwsWX+20hK592yX9I2rxKTP4g==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 7.0.2 + '@typescript-eslint/visitor-keys': 7.0.2 + dev: true + + /@typescript-eslint/type-utils@7.0.2(eslint@8.57.0)(typescript@5.3.3): + resolution: {integrity: sha512-IKKDcFsKAYlk8Rs4wiFfEwJTQlHcdn8CLwLaxwd6zb8HNiMcQIFX9sWax2k4Cjj7l7mGS5N1zl7RCHOVwHq2VQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 7.0.2(typescript@5.3.3) + '@typescript-eslint/utils': 7.0.2(eslint@8.57.0)(typescript@5.3.3) + debug: 4.3.4 + eslint: 8.57.0 + ts-api-utils: 1.2.1(typescript@5.3.3) + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/types@5.62.0: + resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@typescript-eslint/types@7.0.2: + resolution: {integrity: sha512-ZzcCQHj4JaXFjdOql6adYV4B/oFOFjPOC9XYwCaZFRvqN8Llfvv4gSxrkQkd2u4Ci62i2c6W6gkDwQJDaRc4nA==} + engines: {node: ^16.0.0 || >=18.0.0} + dev: true + + /@typescript-eslint/typescript-estree@5.62.0(typescript@5.3.3): + resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.6.0 + tsutils: 3.21.0(typescript@5.3.3) + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/typescript-estree@7.0.2(typescript@5.3.3): + resolution: {integrity: sha512-3AMc8khTcELFWcKcPc0xiLviEvvfzATpdPj/DXuOGIdQIIFybf4DMT1vKRbuAEOFMwhWt7NFLXRkbjsvKZQyvw==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 7.0.2 + '@typescript-eslint/visitor-keys': 7.0.2 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.3 + semver: 7.6.0 + ts-api-utils: 1.2.1(typescript@5.3.3) + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/utils@5.62.0(eslint@8.57.0)(typescript@5.3.3): + resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.7 + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.3.3) + eslint: 8.57.0 + eslint-scope: 5.1.1 + semver: 7.6.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/utils@7.0.2(eslint@8.57.0)(typescript@5.3.3): + resolution: {integrity: sha512-PZPIONBIB/X684bhT1XlrkjNZJIEevwkKDsdwfiu1WeqBxYEEdIgVDgm8/bbKHVu+6YOpeRqcfImTdImx/4Bsw==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^8.56.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.7 + '@typescript-eslint/scope-manager': 7.0.2 + '@typescript-eslint/types': 7.0.2 + '@typescript-eslint/typescript-estree': 7.0.2(typescript@5.3.3) + eslint: 8.57.0 + semver: 7.6.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/visitor-keys@5.62.0: + resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.62.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@typescript-eslint/visitor-keys@7.0.2: + resolution: {integrity: sha512-8Y+YiBmqPighbm5xA2k4wKTxRzx9EkBu7Rlw+WHqMvRJ3RPz/BMBO9b2ru0LUNmXg120PHUXD5+SWFy2R8DqlQ==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 7.0.2 + eslint-visitor-keys: 3.4.3 + dev: true + + /@ungap/structured-clone@1.2.0: + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + dev: true + + /acorn-jsx@5.3.2(acorn@8.11.3): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.11.3 + dev: true + + /acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + dev: true + + /ajv@8.12.0: + resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + dev: true + + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + dev: true + + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + dev: true + + /anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: true + + /argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: true + + /array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + dev: true + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: true + + /binary-extensions@2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} + dev: true + + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: true + + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + dev: true + + /braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + dev: true + + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + dev: true + + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + dev: true + + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + dev: true + + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + dev: true + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: true + + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + dev: true + + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: true + + /deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + dev: true + + /dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + dev: true + + /doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dependencies: + esutils: 2.0.3 + dev: true + + /emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + dev: true + + /escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} + engines: {node: '>=6'} + dev: true + + /escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + dev: true + + /eslint-config-prettier@9.1.0(eslint@8.57.0): + resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: 8.57.0 + dev: true + + /eslint-plugin-prettier@5.1.3(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.2.5): + resolution: {integrity: sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + '@types/eslint': '>=8.0.0' + eslint: '>=8.0.0' + eslint-config-prettier: '*' + prettier: '>=3.0.0' + peerDependenciesMeta: + '@types/eslint': + optional: true + eslint-config-prettier: + optional: true + dependencies: + eslint: 8.57.0 + eslint-config-prettier: 9.1.0(eslint@8.57.0) + prettier: 3.2.5 + prettier-linter-helpers: 1.0.0 + synckit: 0.8.8 + dev: true + + /eslint-plugin-roblox-ts@0.0.36(eslint@8.57.0): + resolution: {integrity: sha512-vlbgfHY1heWSyDunVX3gIOamCy28KqrJlDkmuDOyYVBo8uLqdvbFkbWkdGxn59Vky1m6pFcvZGU6TObfmwm5Pg==} + engines: {node: '>=0.10.0'} + dependencies: + '@types/node': 20.11.20 + '@typescript-eslint/experimental-utils': 5.62.0(eslint@8.57.0)(typescript@5.3.3) + typescript: 5.3.3 + transitivePeerDependencies: + - eslint + - supports-color + dev: true + + /eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + dev: true + + /eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: true + + /eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /eslint@8.57.0: + resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/regexpp': 4.10.0 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.57.0 + '@humanwhocodes/config-array': 0.11.14 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.24.0 + graphemer: 1.4.0 + ignore: 5.3.1 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.3 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.11.3 + acorn-jsx: 5.3.2(acorn@8.11.3) + eslint-visitor-keys: 3.4.3 + dev: true + + /esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + dependencies: + estraverse: 5.3.0 + dev: true + + /esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.0 + dev: true + + /estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + dev: true + + /estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + dev: true + + /esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + dev: true + + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + dev: true + + /fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + dev: true + + /fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + dev: true + + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: true + + /fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + dev: true + + /fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + dependencies: + reusify: 1.0.4 + dev: true + + /file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flat-cache: 3.2.0 + dev: true + + /fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + dev: true + + /find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + dev: true + + /flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flatted: 3.3.1 + keyv: 4.5.4 + rimraf: 3.0.2 + dev: true + + /flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + dev: true + + /fs-extra@11.2.0: + resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} + engines: {node: '>=14.14'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + dev: true + + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true + + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + dev: true + + /get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + dev: true + + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + dev: true + + /globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.1 + merge2: 1.4.1 + slash: 3.0.0 + dev: true + + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + dev: true + + /graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + dev: true + + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + dev: true + + /hasown@2.0.1: + resolution: {integrity: sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==} + engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 + dev: true + + /ignore@5.3.1: + resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} + engines: {node: '>= 4'} + dev: true + + /import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + dev: true + + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + dev: true + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + dev: true + + /is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + dependencies: + binary-extensions: 2.2.0 + dev: true + + /is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + dependencies: + hasown: 2.0.1 + dev: true + + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + dev: true + + /is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + dev: true + + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + dev: true + + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + dev: true + + /is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + dev: true + + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + dev: true + + /js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + dev: true + + /json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + dev: true + + /json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + dev: true + + /json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + dev: true + + /json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + dev: true + + /jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + dev: true + + /keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + dependencies: + json-buffer: 3.0.1 + dev: true + + /kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + dev: true + + /kleur@4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} + dev: true + + /levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + dependencies: + p-locate: 5.0.0 + dev: true + + /lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + dev: true + + /lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 + dev: true + + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + dev: true + + /micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + dev: true + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + dev: true + + /minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: true + + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + dev: true + + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + dev: true + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + dev: true + + /optionator@0.9.3: + resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + engines: {node: '>= 0.8.0'} + dependencies: + '@aashutoshrathi/word-wrap': 1.2.6 + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + dev: true + + /p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + dependencies: + p-limit: 3.1.0 + dev: true + + /parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 + dev: true + + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + dev: true + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + dev: true + + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + dev: true + + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + dev: true + + /path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + dev: true + + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + dev: true + + /prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + dev: true + + /prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} + dependencies: + fast-diff: 1.3.0 + dev: true + + /prettier@3.2.5: + resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} + engines: {node: '>=14'} + hasBin: true + dev: true + + /punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + dev: true + + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + dev: true + + /readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + dependencies: + picomatch: 2.3.1 + dev: true + + /require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + dev: true + + /require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + dev: true + + /resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + dev: true + + /resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + dev: true + + /rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + + /roblox-ts@2.3.0-dev-ac7800f: + resolution: {integrity: sha512-XZuBSgLoSMu11in/o5TUsaaHSj0LzTCrDyv6iFFXaoR3xY1AMl0XrUef7XPy+YN4LteX7VoDWV4dMitFP9KrrA==} + hasBin: true + dependencies: + '@roblox-ts/luau-ast': 1.0.11 + '@roblox-ts/path-translator': 1.0.0 + '@roblox-ts/rojo-resolver': 1.0.6 + '@types/fs-extra': 11.0.4 + '@types/mocha': 10.0.6 + '@types/node': 20.11.20 + '@types/prompts': 2.4.9 + '@types/resolve': 1.20.6 + '@types/ts-expose-internals': /ts-expose-internals@5.3.3 + '@types/yargs': 17.0.32 + chokidar: 3.6.0 + fs-extra: 11.2.0 + kleur: 4.1.5 + resolve: 1.22.8 + typescript: 5.3.3 + yargs: 17.7.2 + dev: true + + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + dev: true + + /semver@7.6.0: + resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + dev: true + + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + dev: true + + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: true + + /string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + dev: true + + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + dev: true + + /strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: true + + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + dev: true + + /synckit@0.8.8: + resolution: {integrity: sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==} + engines: {node: ^14.18.0 || >=16.0.0} + dependencies: + '@pkgr/core': 0.1.1 + tslib: 2.6.2 + dev: true + + /text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + dev: true + + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + dev: true + + /ts-api-utils@1.2.1(typescript@5.3.3): + resolution: {integrity: sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + dependencies: + typescript: 5.3.3 + dev: true + + /ts-expose-internals@5.3.3: + resolution: {integrity: sha512-0lW96u0pa08dq9QLYUBRbgGkvsD+LvPAVGe94kr2tHaRZAxgckwJ+qqc1BSRoR1rpkTZf7AWAa6DKrLGFmctwg==} + dev: true + + /tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + dev: true + + /tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + dev: true + + /tsutils@3.21.0(typescript@5.3.3): + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + dependencies: + tslib: 1.14.1 + typescript: 5.3.3 + dev: true + + /type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + dev: true + + /type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + dev: true + + /typescript@5.3.3: + resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} + engines: {node: '>=14.17'} + hasBin: true + dev: true + + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + dev: true + + /universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + dev: true + + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.3.1 + dev: true + + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: true + + /y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + dev: true + + /yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + dev: true + + /yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + dev: true + + /yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + dependencies: + cliui: 8.0.1 + escalade: 3.1.2 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + dev: true + + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + dev: true diff --git a/selene.toml b/selene.toml new file mode 100644 index 0000000..56479a7 --- /dev/null +++ b/selene.toml @@ -0,0 +1,5 @@ +std = "roblox+testez" + +[lints] +global_usage = "allow" +shadowing = "allow" diff --git a/src/__tests__/atom.spec.luau b/src/__tests__/atom.spec.luau new file mode 100644 index 0000000..c41fa63 --- /dev/null +++ b/src/__tests__/atom.spec.luau @@ -0,0 +1,85 @@ +local atom = require(script.Parent.Parent.atom) + +return function() + it("updates state", function() + local source = atom(1) + source(2) + expect(source()).to.equal(2) + source(function(x) + return x + 1 + end) + expect(source()).to.equal(3) + end) + + it("calls listeners", function() + local source = atom(1) + local value + local function listener(state) + value = state + end + source.listeners[listener] = true + source(2) + expect(value).to.equal(2) + end) + + it("skips pending listeners", function() + local source = atom(1) + local outer = 0 + local inner = 0 + local function listener() + outer += 1 + local function listener() + inner += 1 + end + source.listeners[listener] = true + end + source.listeners[listener] = true + source(2) + expect(outer).to.equal(1) + expect(inner).to.equal(0) + source(3) + expect(outer).to.equal(2) + expect(inner).to.equal(1) + end) + + it("can be readonly", function() + local readonly = atom(1):readonly() + + expect(function() + (readonly :: any)(2) + end).to.throw() + + local writable = readonly:writable() + + writable(2) + expect(writable()).to.equal(2) + end) + + it("calls the setter", function() + local source = atom(1):writable(function(_, value: number) + return value + 1 + end) + source(1) + expect(source()).to.equal(2) + end) + + it("cancels if setter returns nil", function() + local source = atom(1):writable(function(value: number) + return if value == 2 then nil else value + end) + source(2) + expect(source()).to.equal(1) + source(3) + expect(source()).to.equal(3) + end) + + it("can be memoized", function() + local source = atom(1):memo(function(prev, next) + return next < prev + end) + source(2) + expect(source()).to.equal(2) + source(1) + expect(source()).to.equal(2) + end) +end diff --git a/src/__tests__/derive.spec.luau b/src/__tests__/derive.spec.luau new file mode 100644 index 0000000..a06db04 --- /dev/null +++ b/src/__tests__/derive.spec.luau @@ -0,0 +1,92 @@ +local atom = require(script.Parent.Parent.atom) +local derive = require(script.Parent.Parent.derive) + +return function() + it("derives from dependencies", function() + local a = atom(1) + local b = atom(2) + local sum = derive(a, b, function(a: number, b: number) + return a + b + end) + expect(sum()).to.equal(3) + a(2) + expect(sum()).to.equal(4) + b(3) + expect(sum()).to.equal(5) + expect(function() + (sum :: any)(2) + end).to.throw() + end) + + it("memoizes the result", function() + local calls = 0 + local source = atom(1) + local double = derive(source, function(value: number) + calls += 1 + return value * 2 + end) + expect(calls).to.equal(1) + source(1) + expect(calls).to.equal(1) + source(2) + expect(calls).to.equal(2) + double() + expect(calls).to.equal(2) + end) + + it("can be a dependency", function() + local source = atom(1) + local double = derive(source, function(value: number) + return value * 2 + end) + local quadruple = derive(double, function(value: number) + return value * 2 + end) + expect(quadruple()).to.equal(4) + source(2) + expect(quadruple()).to.equal(8) + end) + + it("allows custom setter", function() + local source = atom(1) + local double = derive(source, function(value: number) + return value * 2 + end):writable(function(update: number) + source(update / 2) + end) + double(4) + expect(source()).to.equal(2) + expect(double()).to.equal(4) + end) + + it("garbage collects", function() + -- large values coerce the garbage collector to run + local source = atom(string.rep("x", 1e5)) + local max = 0 + + local function listenersDecreased() + local count = 0 + for _ in source.listeners do + count += 1 + end + max = math.max(max, count) + return count < max + end + + for index = 1, 500 do + derive(source, function(value) + return string.upper(value) + end) + if index % 50 == 0 then + -- derived atoms check if they are collected when they are updated + source(source() .. "x") + task.wait() + end + if listenersDecreased() then + return + end + end + + error("None of the derived atoms were collected") + end) +end diff --git a/src/__tests__/init.spec.luau b/src/__tests__/init.spec.luau new file mode 100644 index 0000000..53f1537 --- /dev/null +++ b/src/__tests__/init.spec.luau @@ -0,0 +1,7 @@ +local reference = require(script.Parent.Parent.utils.reference) + +return function() + afterEach(function() + reference.clear() + end) +end diff --git a/src/__tests__/observe.spec.luau b/src/__tests__/observe.spec.luau new file mode 100644 index 0000000..79e8953 --- /dev/null +++ b/src/__tests__/observe.spec.luau @@ -0,0 +1,33 @@ +local atom = require(script.Parent.Parent.atom) +local observe = require(script.Parent.Parent.observe) + +return function() + it("observes lifetime", function() + local itemsAtom = atom({ "a", "b", "c" }) + local state = {} + + local cleanup, flush = observe(itemsAtom, function(item, key) + state[key] = item + return function() + state[key] = nil + end + end) + + for key = 1, 3 do + expect(state[key]).to.equal(itemsAtom:get()[key]) + end + + itemsAtom:set({ [4] = "d", [5] = "e", [6] = "f" }) + flush() + + for key = 1, 6 do + expect(state[key]).to.equal(itemsAtom:get()[key]) + end + + cleanup() + + for key = 1, 6 do + expect(state[key]).to.equal(nil) + end + end) +end diff --git a/src/__tests__/react/helpers/renderHook.luau b/src/__tests__/react/helpers/renderHook.luau new file mode 100644 index 0000000..1714a66 --- /dev/null +++ b/src/__tests__/react/helpers/renderHook.luau @@ -0,0 +1,42 @@ +_G.__ROACT_17_MOCK_SCHEDULER__ = true + +local Package = script:FindFirstAncestor("__tests__").Parent + +local React = require(Package.modules.React) +local ReactRoblox = require(Package.modules.ReactRoblox) + +type RenderedHook = { + result: Result, + rerender: (Props?) -> (), + unmount: () -> (), +} + +local function renderHook(callback: (Props) -> Result, props: Props?): RenderedHook + local root = ReactRoblox.createLegacyRoot(Instance.new("Folder")) + local hook = {} + + local function Component(props) + hook.result = callback(props) + end + + function hook.rerender(newProps) + props = newProps or props + ReactRoblox.act(function() + root:render(React.createElement(Component, props)) + end) + end + + function hook.unmount() + ReactRoblox.act(function() + root:unmount() + end) + end + + ReactRoblox.act(function() + hook.rerender(props) + end) + + return hook +end + +return renderHook diff --git a/src/__tests__/react/useAtomState.spec.luau b/src/__tests__/react/useAtomState.spec.luau new file mode 100644 index 0000000..9c3824b --- /dev/null +++ b/src/__tests__/react/useAtomState.spec.luau @@ -0,0 +1,27 @@ +local atom = require(script.Parent.Parent.Parent.atom) +local useAtomState = require(script.Parent.Parent.Parent.react.useAtomState) +local renderHook = require(script.Parent.helpers.renderHook) + +return function() + it("tracks atom state", function() + local source = atom(0) + local hook = renderHook(function() + return useAtomState(source) + end) + expect(hook.result).to.equal(0) + source(1) + expect(hook.result).to.equal(1) + end) + + it("receives a selector", function() + local source = atom(0) + local hook = renderHook(function() + return useAtomState(source, function(value) + return 2 * value + end) + end) + expect(hook.result).to.equal(0) + source(1) + expect(hook.result).to.equal(2) + end) +end diff --git a/src/__tests__/react/useSetAtom.spec.luau b/src/__tests__/react/useSetAtom.spec.luau new file mode 100644 index 0000000..c838be9 --- /dev/null +++ b/src/__tests__/react/useSetAtom.spec.luau @@ -0,0 +1,34 @@ +local atom = require(script.Parent.Parent.Parent.atom) +local useSetAtom = require(script.Parent.Parent.Parent.react.useSetAtom) +local renderHook = require(script.Parent.helpers.renderHook) + +return function() + it("sets atom state", function() + local source = atom(0) + local hook = renderHook(function() + return useSetAtom(source) + end) + expect(hook.result).to.be.a("function") + hook.result(1) + expect(source()).to.equal(1) + end) + + it("returns a stable function", function() + local source = atom(0) + local hook = renderHook(function() + return useSetAtom(source) + end) + local fn = hook.result + hook.rerender() + expect(hook.result).to.equal(fn) + end) + + it("memoizes the function", function() + local hook = renderHook(function(source) + return useSetAtom(source) + end, atom(0)) + local fn = hook.result + hook.rerender(atom(1)) + expect(hook.result).to.never.equal(fn) + end) +end diff --git a/src/__tests__/split.spec.luau b/src/__tests__/split.spec.luau new file mode 100644 index 0000000..829ee5f --- /dev/null +++ b/src/__tests__/split.spec.luau @@ -0,0 +1,128 @@ +local atom = require(script.Parent.Parent.atom) +local isAtom = require(script.Parent.Parent.isAtom) +local observe = require(script.Parent.Parent.observe) +local split = require(script.Parent.Parent.split) + +return function() + it("returns split atoms", function() + local itemsAtom = atom({ "a", "b", "c" }) + local itemAtoms = split(itemsAtom) + local updates = 0 + + itemAtoms.listeners[function() + updates += 1 + end] = true + + for key = 1, 3 do + local itemAtom = itemAtoms()[key] + assert(isAtom(itemAtom), `itemAtom {key} is not an atom; got {typeof(itemAtom)}`) + expect(itemAtom()).to.equal(itemsAtom()[key]) + end + + local prevAtoms = itemAtoms() + itemsAtom({ "d", "e", "f" }) + expect(updates).to.equal(1) + + for key = 1, 3 do + local itemAtom = itemAtoms()[key] + assert(itemAtom == prevAtoms[key] :: any, `itemAtom {key} is not the same atom; got {typeof(itemAtom)}`) + expect(itemAtom()).to.equal(itemsAtom()[key]) + end + + itemsAtom({ [1] = "d", [3] = "f" }) + expect(itemAtoms()[2]).to.never.be.ok() + expect(updates).to.equal(2) + end) + + it("has writable items", function() + local itemsAtom = atom({ "a", "b", "c" }) + local itemAtoms = split(itemsAtom) + local updates = 0 + + itemAtoms.listeners[function() + updates += 1 + end] = true + + itemAtoms()[2]("x") + expect(updates).to.equal(1) + expect(itemsAtom()[2]).to.equal("x") + expect(itemAtoms()[2]()).to.equal("x") + end) + + it("uses key extractor", function() + local itemsAtom = atom({ { key = 1 }, { key = 2 }, { key = 3 } }) + local itemAtoms = split(itemsAtom, function(item) + return item.key + end) + + for key = 1, 3 do + local itemAtom = itemAtoms()[key] + expect(itemAtom()).to.equal(itemsAtom()[key]) + end + + local prevAtoms = itemAtoms() + itemsAtom({ itemsAtom()[1], itemsAtom()[3] }) + + expect(itemAtoms()[1]).to.equal(prevAtoms[1]) + expect(itemAtoms()[1]()).to.equal(itemsAtom()[1]) + expect(itemAtoms()[2]).to.never.be.ok() + expect(itemAtoms()[3]).to.equal(prevAtoms[3]) + expect(itemAtoms()[3]()).to.equal(itemsAtom()[2]) + end) + + it("allows observe()", function() + local itemsAtom = atom({ + { key = 1, value = "a" }, + { key = 2, value = "b" }, + { key = 3, value = "c" }, + }) + local itemAtoms = split(itemsAtom, function(item) + return item.key + end) + + local added = 0 + local updated = 0 + local deleted = 0 + + local _, flush = observe(itemAtoms, function(item, key) + expect(item()).to.equal(itemsAtom()[key]) + + item.listeners[function(value) + expect(value).to.equal(itemsAtom()[key]) + updated += 1 + end] = true + + added += 1 + + return function() + expect(itemAtoms()[key]).to.never.be.ok() + deleted += 1 + end + end) + + expect(added).to.equal(3) + expect(updated).to.equal(0) + expect(deleted).to.equal(0) + + itemsAtom({ itemsAtom()[1], itemsAtom()[3] }) + flush() + + expect(added).to.equal(3) + expect(updated).to.equal(0) + expect(deleted).to.equal(1) + + itemAtoms()[1]({ key = 1, value = "x" }) + flush() + + expect(added).to.equal(3) + expect(updated).to.equal(1) + expect(deleted).to.equal(1) + + itemsAtom({}) + flush() + + expect(added).to.equal(3) + expect(updated).to.equal(1) + expect(deleted).to.equal(3) + end) +end diff --git a/src/__tests__/subscribe.spec.luau b/src/__tests__/subscribe.spec.luau new file mode 100644 index 0000000..99c33f5 --- /dev/null +++ b/src/__tests__/subscribe.spec.luau @@ -0,0 +1,92 @@ +local atom = require(script.Parent.Parent.atom) +local derive = require(script.Parent.Parent.derive) +local subscribe = require(script.Parent.Parent.subscribe) + +return function() + it("runs on state change", function() + local current, previous + local source = atom(0) + local unsubscribe, flush = subscribe(source, function(...) + current, previous = ... + end) + + for index = 1, 3 do + source(index) + flush() + expect(current).to.equal(index) + expect(previous).to.equal(index - 1) + end + + unsubscribe() + source(4) + flush() + + expect(current).to.equal(3) + expect(previous).to.equal(2) + end) + + it("batches updates", function() + local current, previous + local source = atom(0) + local _, flush = subscribe(source, function(...) + current, previous = ... + end) + + source(1) + source(2) + flush() + + expect(current).to.equal(2) + expect(previous).to.equal(0) + end) + + it("checks equality", function() + local current, previous + local source = atom(0):memo(function(previous, current) + return current < previous + end) + local _, flush = subscribe(source, function(...) + current, previous = ... + end) + + source(1) + flush() + + expect(current).to.equal(1) + expect(previous).to.equal(0) + + source(0) + flush() + + expect(current).to.equal(1) + expect(previous).to.equal(0) + end) + + it("prevents garbage collect", function() + local source = atom(1) + local updates = 0 + + for _ = 1, 1000 do + -- The idea here is to test whether subscribe() prevents every derived + -- atom in a chain from being garbage collected. If any are GCed, then + -- the subscription will stop updating and the test will fail. + subscribe( + derive( + derive(source, function(x) + return x + end), + function(x) + return 2 * x + end + ), + function() + updates += 1 + end + ) + end + + source(source() + 1) + task.wait() + expect(updates).to.equal(1000) + end) +end diff --git a/src/atom.luau b/src/atom.luau new file mode 100644 index 0000000..4d87a7e --- /dev/null +++ b/src/atom.luau @@ -0,0 +1,137 @@ +local reference = require(script.Parent.utils.reference) + +type AtomInternal = { + --- @deprecated + setForced: (self: AtomInternal, state: T | ((T) -> T)) -> (), + --- @deprecated + listeners: { [(T) -> ()]: true }, + --- @deprecated + debugTraceback: string, + --- @deprecated + debugLabel: string, + --- @deprecated + owners: { [any]: true }, +} + +export type Atom = (() -> T) & ((state: T | ((T) -> T)) -> ()) & { + get: ((self: Atom) -> T) & ((self: Atom, selector: (T) -> Result) -> Result), + set: (self: Atom, state: T | ((T) -> T)) -> (), + memo: (self: Atom, equalityFn: (previous: T, current: T) -> boolean) -> Atom, + writable: (self: Atom, setter: ((update: T, previous: T) -> T?) & (update: T, previous: T) -> ()) -> Atom, + readonly: (self: Atom) -> ReadonlyAtom, + named: (self: Atom, label: string) -> Atom, + unmount: (self: Atom) -> (), +} & AtomInternal + +export type ReadonlyAtom = (() -> T) & { + get: ((self: ReadonlyAtom) -> T) & ((self: ReadonlyAtom, selector: (T) -> Result) -> Result), + memo: (self: ReadonlyAtom, equalityFn: (previous: T, current: T) -> boolean) -> ReadonlyAtom, + writable: ((self: Atom) -> Atom) & ( + (self: Atom, setter: ((update: T, previous: T) -> T?) & (update: T, previous: T) -> ()) -> Atom + ), + readonly: (self: ReadonlyAtom) -> ReadonlyAtom, + named: (self: ReadonlyAtom, label: string) -> ReadonlyAtom, + unmount: (self: ReadonlyAtom) -> (), +} & AtomInternal + +local atomCount = 0 + +local function atom(state: State): Atom + atomCount += 1 + + local listeners: { [(State) -> ()]: true } = {} + local label = `atom{atomCount}` + local traceback = debug.traceback(nil, 2) + local owners: { [any]: true } = {} + + local atom = { + listeners = listeners, + debugTraceback = traceback, + debugLabel = label, + owners = owners, + } :: Atom + + local equals: ((State, State) -> boolean)? + local setter: ((State, State) -> State?)? + + function atom:get(selector: ((State) -> Result)?): any + return if selector then selector(state) else state + end + + function atom:set(update: State | ((State) -> State)) + local nextState = if type(update) == "function" then update(state) else update + + if setter then + local result = setter(nextState, state) + + if result == nil then + return + else + nextState = result + end + end + + if not (if equals then equals(state, nextState) else state == nextState) then + state = nextState + + for listener in table.clone(listeners) do + listener(state) + end + end + end + + function atom:setForced(update: State | ((State) -> State)) + local nextState = if type(update) == "function" then update(state) else update + + if not (if equals then equals(state, nextState) else state == nextState) then + state = nextState + + for listener in table.clone(listeners) do + listener(state) + end + end + end + + function atom:memo(equalityFn: (State, State) -> boolean): Atom + equals = equalityFn + return self + end + + function atom:writable(setterFn: ((State, State) -> State?)?): Atom + setter = setterFn + return self + end + + function atom:readonly(): ReadonlyAtom + function setter(_, _) + error(`Attempt to set read-only atom '{label}' created at: {traceback}`, 3) + end + return self + end + + function atom:named(name: string): Atom + label = name + return self + end + + function atom:unmount() + table.clear(listeners) + table.clear(owners) + reference.release(self) + end + + setmetatable(atom :: AtomInternal, { + __type = "Atom", + __call = function(self, ...) + if select("#", ...) > 0 then + return self:set((...)) + else + return self:get() + end + end, + }) + + return atom +end + +return atom diff --git a/src/derive.luau b/src/derive.luau new file mode 100644 index 0000000..2b40c88 --- /dev/null +++ b/src/derive.luau @@ -0,0 +1,53 @@ +local atom = require(script.Parent.atom) +type Atom = atom.Atom +type ReadonlyAtom = atom.ReadonlyAtom + +local reference = require(script.Parent.utils.reference) + +type Derive = + ((Atom, (A) -> T) -> ReadonlyAtom) + & ((Atom, Atom, (A, B) -> T) -> ReadonlyAtom) + & ((Atom, Atom, Atom, (A, B, C) -> T) -> ReadonlyAtom) + & ((Atom, Atom, Atom, Atom, (A, B, C, D) -> T) -> ReadonlyAtom) + & ((Atom, Atom, Atom, Atom, Atom, (A, B, C, D, E) -> T) -> ReadonlyAtom) + & ((...(Atom | ((...any) -> T))) -> ReadonlyAtom) + +local function derive(...): ReadonlyAtom + local atoms: { Atom } = { ... } + local combiner: (...unknown) -> Result = table.remove(atoms) :: any + local size = #atoms + + local dependencies: { unknown } = {} + + for index, atom in atoms do + dependencies[index] = atom:get() + end + + local derivedAtom = atom(combiner(table.unpack(dependencies, 1, size))):readonly() + local getDerivedAtom = reference.weak(derivedAtom) + + for index, atom in atoms do + local function listener(state: unknown) + -- Remove the listener if the derived atom has been garbage collected, + -- typically because no subscriptions to it exist. + local derivedAtom = getDerivedAtom() + + if derivedAtom then + dependencies[index] = state + derivedAtom:setForced(combiner(table.unpack(dependencies, 1, size))) + else + atom.listeners[listener] = nil + end + end + + -- Tie the lifetime of the derived atom to the lifetime of its dependencies + -- without creating a strong reference cycle. As long as an atom is in use, + -- its derived atoms will be in use as well. + derivedAtom.owners[atom] = true + atom.listeners[listener] = true + end + + return derivedAtom +end + +return derive :: Derive diff --git a/src/index.d.ts b/src/index.d.ts new file mode 100644 index 0000000..8a11c2c --- /dev/null +++ b/src/index.d.ts @@ -0,0 +1,89 @@ +export = Charm; +export as namespace Charm; + +declare namespace Charm { + interface InternalAtom { + /** @hidden */ + readonly listeners: Set<(value: State) => void>; + /** @hidden */ + readonly debugTraceback: string; + /** @hidden */ + readonly debugLabel: string; + /** @hidden */ + setForced(state: State | ((current: State) => State)): void; + } + + interface BaseAtom extends InternalAtom { + get(): State; + get(selector: (state: State) => Result): Result; + set(state: State | ((current: State) => State)): void; + memo(equalityFn: (previous: State, current: State) => boolean): this; + writable(onSet?: (update: State, previous: State) => State | void): Atom; + readonly(): ReadonlyAtom; + named(label: string): this; + unmount(): void; + } + + interface Atom extends BaseAtom { + (): State; + (state: State | ((previous: State) => State)): void; + } + + interface ReadonlyAtom extends BaseAtom { + (): State; + set: never; + } + + type AtomStates[]> = { + [Key in keyof T]: T[Key] extends Atom ? State : never; + }; + + function atom(state: State): Atom; + + function isAtom(value: unknown): value is Atom; + + function derive[], Result>( + ...args: [...atoms: Atoms, combiner: (...atoms: AtomStates) => Result] + ): ReadonlyAtom; + + function subscribe(atom: Atom, callback: (state: State) => void): () => void; + + function observe( + atom: Atom | ReadonlyMap>, + factory: (value: V, key: K) => (() => void) | void, + ): () => void; + + function observe(atom: Atom, factory: (value: unknown, key: unknown) => (() => void) | void): () => void; + + function splitAtom( + listAtom: Atom> | Atom>, + keyExtractor?: (item: Item) => Id, + ): Atom>>; + + function splitAtom(listAtom: Atom): Atom[]>; + + function splitAtom( + listAtom: Atom, + keyExtractor?: (item: Item) => Id, + ): Atom>>; + + function splitAtom( + listAtom: Atom<{ readonly [K in Key]?: Item }>, + keyExtractor?: (item: Item) => Id, + ): Atom>>; + + function useAtomState(atom: Atom): State; + + function useAtomState(atom: Atom, selector: (state: State) => Result): Result; + + function useSetAtom(atom: Atom): (state: State | ((previous: State) => State)) => void; + + function useAtom( + atom: Atom, + ): LuaTuple<[state: State, setState: (state: State | ((previous: State) => State)) => void]>; + + function useAtom( + atom: Atom, + selector: (state: State) => Result, + ): LuaTuple<[state: Result, setState: (state: Result | ((previous: Result) => Result)) => void]>; +} diff --git a/src/init.luau b/src/init.luau new file mode 100644 index 0000000..8bb4341 --- /dev/null +++ b/src/init.luau @@ -0,0 +1,26 @@ +_G[script.modules.Promise] = _G[script] + +local atom = require(script.atom) +local derive = require(script.derive) +local isAtom = require(script.isAtom) +local observe = require(script.observe) +local split = require(script.split) +local subscribe = require(script.subscribe) +local useAtom = require(script.react.useAtom) +local useAtomState = require(script.react.useAtomState) +local useSetAtom = require(script.react.useSetAtom) + +export type Atom = atom.Atom +export type ReadonlyAtom = atom.ReadonlyAtom + +return { + atom = atom, + derive = derive, + isAtom = isAtom, + observe = observe, + split = split, + subscribe = subscribe, + useAtom = useAtom, + useAtomState = useAtomState, + useSetAtom = useSetAtom, +} diff --git a/src/isAtom.luau b/src/isAtom.luau new file mode 100644 index 0000000..bd96e97 --- /dev/null +++ b/src/isAtom.luau @@ -0,0 +1,5 @@ +local function isAtom(value: any) + return type(value) == "table" and getmetatable(value) and getmetatable(value).__type == "Atom" or false +end + +return isAtom diff --git a/src/modules/Promise.luau b/src/modules/Promise.luau new file mode 100644 index 0000000..c716f98 --- /dev/null +++ b/src/modules/Promise.luau @@ -0,0 +1,9 @@ +local Package = script.Parent.Parent + +if _G[script] then + return _G[script].Promise +end + +assert(Package.Parent:FindFirstChild("Promise"), `Could not find Promise in {Package.Parent:GetFullName()}`) + +return require(Package.Parent.Promise) diff --git a/src/modules/React.luau b/src/modules/React.luau new file mode 100644 index 0000000..0ae6f64 --- /dev/null +++ b/src/modules/React.luau @@ -0,0 +1,8 @@ +local Package = script.Parent.Parent +local Packages = if Package.Parent:FindFirstChild("React") + then Package.Parent + else Package.Parent:FindFirstChild("ReactLua") + +type React = typeof(require(Package.Parent.React)) + +return (if Packages then require(Packages.React) else nil) :: React diff --git a/src/modules/ReactRoblox.luau b/src/modules/ReactRoblox.luau new file mode 100644 index 0000000..eeed498 --- /dev/null +++ b/src/modules/ReactRoblox.luau @@ -0,0 +1,8 @@ +local Package = script.Parent.Parent +local Packages = if Package.Parent:FindFirstChild("ReactRoblox") + then Package.Parent + else Package.Parent:FindFirstChild("ReactLua") + +type ReactRoblox = typeof(require(Package.Parent.ReactRoblox)) + +return (if Packages then require(Packages.ReactRoblox) else nil) :: ReactRoblox diff --git a/src/observe.luau b/src/observe.luau new file mode 100644 index 0000000..e6f78ff --- /dev/null +++ b/src/observe.luau @@ -0,0 +1,38 @@ +local atom = require(script.Parent.atom) +type Atom = atom.Atom + +local subscribe = require(script.Parent.subscribe) + +local function observe(atom: Atom<{ [Key]: Item }>, factory: (value: Item, key: Key) -> () -> ()): (() -> (), () -> ()) + local connections: { [Key]: () -> () } = {} + + local function update(state: { [Key]: Item }) + for key, disconnect in connections do + if state[key] == nil then + connections[key] = nil + disconnect() + end + end + + for key, value in state do + if not connections[key] then + connections[key] = factory(value, key) + end + end + end + + local unsubscribe, flush = subscribe(atom, update) + + local function cleanup() + unsubscribe() + for _, disconnect in connections do + disconnect() + end + end + + update(atom:get()) + + return cleanup, flush +end + +return observe diff --git a/src/react/useAtom.luau b/src/react/useAtom.luau new file mode 100644 index 0000000..ed06093 --- /dev/null +++ b/src/react/useAtom.luau @@ -0,0 +1,19 @@ +local atom = require(script.Parent.Parent.atom) +type Atom = atom.Atom + +local useAtomState = require(script.Parent.useAtomState) +local useSetAtom = require(script.Parent.useSetAtom) + +type UseAtom = + ((atom: Atom) -> (State, useSetAtom.SetState)) + & (( + atom: Atom, + selector: ((State) -> Result)? + ) -> (State | Result, useSetAtom.SetState)) + & ((atom: Atom, selector: (State) -> Result) -> (Result, useSetAtom.SetState)) + +local function useAtom(atom: Atom, selector: ((State) -> State)?): (State, useSetAtom.SetState) + return useAtomState(atom, selector), useSetAtom(atom) +end + +return useAtom :: UseAtom diff --git a/src/react/useAtomState.luau b/src/react/useAtomState.luau new file mode 100644 index 0000000..9deebbc --- /dev/null +++ b/src/react/useAtomState.luau @@ -0,0 +1,35 @@ +local React = require(script.Parent.Parent.modules.React) + +local atom = require(script.Parent.Parent.atom) +type Atom = atom.Atom + +type UseAtomState = + ((atom: Atom) -> State) + & ((atom: Atom, ((State) -> Result)?) -> State | Result) + & (atom: Atom, selector: (State) -> Result) -> Result + +local function useAtomState(atom: Atom, selector: ((State) -> State)?): State + local state, setState = React.useState(function() + return atom:get(selector :: (State) -> State) + end) + + local latestSelector = React.useRef(selector) + latestSelector.current = selector + + React.useEffect(function() + local function listener(state: State) + local selector = latestSelector.current + setState(if selector then selector(state) else state) + end + + atom.listeners[listener] = true + + return function() + atom.listeners[listener] = nil + end + end, { atom }) + + return state +end + +return useAtomState :: UseAtomState diff --git a/src/react/useSetAtom.luau b/src/react/useSetAtom.luau new file mode 100644 index 0000000..debb1ca --- /dev/null +++ b/src/react/useSetAtom.luau @@ -0,0 +1,14 @@ +local React = require(script.Parent.Parent.modules.React) + +local atom = require(script.Parent.Parent.atom) +type Atom = atom.Atom + +export type SetState = (T | ((T) -> T)) -> () + +local function useSetAtom(atom: Atom): SetState + return React.useCallback(function(value) + atom:set(value) + end, { atom }) +end + +return useSetAtom diff --git a/src/split.luau b/src/split.luau new file mode 100644 index 0000000..285c18f --- /dev/null +++ b/src/split.luau @@ -0,0 +1,75 @@ +local atom = require(script.Parent.atom) +type Atom = atom.Atom +type ReadonlyAtom = atom.ReadonlyAtom + +local reference = require(script.Parent.utils.reference) + +type Split = + ((atom: Atom<{ [Key]: Item }>) -> ReadonlyAtom<{ [Key]: Atom }>) + & ((atom: Atom<{ [any]: Item }>, keyExtractor: (Item) -> Key) -> ReadonlyAtom<{ [Key]: Atom }>) + +local function split( + itemsAtom: Atom<{ [Key]: Item }>, + keyExtractor: ((Item) -> Key)? +): ReadonlyAtom<{ [Key]: Atom }> + local splitAtom: ReadonlyAtom<{ [Key]: Atom }> = atom({}):readonly() + local getSplitAtom = reference.weak(splitAtom) + + local previousAtoms: { [Key]: Atom } = {} + local previousItems = itemsAtom:get() + local listener: ({ [Key]: Item }) -> () + + local function cleanup() + itemsAtom.listeners[listener] = nil + for _, atom in previousAtoms do + atom:unmount() + end + end + + function listener(items) + local splitAtom = getSplitAtom() + + if not splitAtom then + return cleanup() + end + + local atoms = table.clone(splitAtom:get()) + local itemsByKeys: { [Key]: Item } = {} + + for key, item in items do + local id = if keyExtractor then keyExtractor(item) else key + + itemsByKeys[id] = item + + if atoms[id] then + -- Force set the atom to avoid redundantly updating itemsAtom + atoms[id]:setForced(item) + else + atoms[id] = atom(item):writable(function(update) + local nextItems = table.clone(itemsAtom:get()) + nextItems[key] = update + itemsAtom:set(nextItems) + end) + end + end + + for key, item in previousItems do + local id = if keyExtractor then keyExtractor(item) else key + + if itemsByKeys[id] == nil then + atoms[id]:unmount() + atoms[id] = nil + end + end + + previousAtoms, previousItems = atoms, items + splitAtom:setForced(atoms) + end + + itemsAtom.listeners[listener] = true + listener(itemsAtom:get()) + + return splitAtom +end + +return (split :: any) :: Split diff --git a/src/subscribe.luau b/src/subscribe.luau new file mode 100644 index 0000000..30af236 --- /dev/null +++ b/src/subscribe.luau @@ -0,0 +1,46 @@ +local atom = require(script.Parent.atom) +type Atom = atom.Atom + +local reference = require(script.Parent.utils.reference) + +local function subscribe(atom: Atom, callback: (state: State, lastState: State) -> ()): (() -> (), () -> ()) + local pending: thread? = nil + local state = atom:get() + + local function emit() + local lastState = state + state = atom:get() + callback(state, lastState) + end + + local function update() + pending = pending or task.defer(function() + pending = nil + emit() + end) + end + + local function flush() + if pending then + pending = task.cancel(pending) + emit() + end + end + + local function unsubscribe() + reference.release(atom) + atom.listeners[update] = nil + + if pending then + pending = task.cancel(pending) + end + end + + -- Ensure the atom is held in memory while the subscription is active + reference.hold(atom) + atom.listeners[update] = true + + return unsubscribe, flush +end + +return subscribe diff --git a/src/utils/reference.luau b/src/utils/reference.luau new file mode 100644 index 0000000..de4cdca --- /dev/null +++ b/src/utils/reference.luau @@ -0,0 +1,31 @@ +local refs = {} + +--- Prevents the garbage collector from collecting a value +local function hold(value: unknown) + refs[value] = true +end + +--- Allows the garbage collector to collect a value +local function release(value: unknown) + refs[value] = nil +end + +--- Clears all held references +local function clear() + table.clear(refs) +end + +--- Returns a function that retrieves the value through a weak reference +local function weak(value: T): () -> T? + local set = setmetatable({ value }, { __mode = "v" }) + return function() + return set[1] + end +end + +return { + hold = hold, + release = release, + clear = clear, + weak = weak, +} diff --git a/testez-companion.toml b/testez-companion.toml new file mode 100644 index 0000000..bb50d4d --- /dev/null +++ b/testez-companion.toml @@ -0,0 +1 @@ +roots = ["ReplicatedStorage/Packages/charm/__tests__"] diff --git a/testez.yml b/testez.yml new file mode 100644 index 0000000..08be74e --- /dev/null +++ b/testez.yml @@ -0,0 +1,53 @@ +--- +globals: + FIXME: + args: + - required: false + type: string + FOCUS: + args: [] + SKIP: + args: [] + afterAll: + args: + - type: function + afterEach: + args: + - type: function + beforeAll: + args: + - type: function + beforeEach: + args: + - type: function + describe: + args: + - type: string + - type: function + describeFOCUS: + args: + - type: string + - type: function + describeSKIP: + args: + - type: string + - type: function + expect: + args: + - type: any + it: + args: + - type: string + - type: function + itFIXME: + args: + - type: string + - type: function + itFOCUS: + args: + - type: string + - type: function + itSKIP: + args: + - type: string + - type: function diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..b255ab8 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + // required + "allowSyntheticDefaultImports": true, + "downlevelIteration": true, + "jsx": "react", + "jsxFactory": "React.createElement", + "jsxFragmentFactory": "React.Fragment", + "module": "commonjs", + "moduleResolution": "Node", + "noLib": true, + "resolveJsonModule": true, + "experimentalDecorators": true, + "forceConsistentCasingInFileNames": true, + "moduleDetection": "force", + "strict": true, + "target": "ESNext", + "typeRoots": ["node_modules/@rbxts"], + + // configurable + "rootDir": "src", + "outDir": "out", + "incremental": true, + "tsBuildInfoFile": "out/tsconfig.tsbuildinfo", + "declaration": true + } +} diff --git a/wally.lock b/wally.lock new file mode 100644 index 0000000..09550f7 --- /dev/null +++ b/wally.lock @@ -0,0 +1,103 @@ +# This file is automatically @generated by Wally. +# It is not intended for manual editing. +registry = "test" + +[[package]] +name = "evaera/promise" +version = "4.0.0" +dependencies = [] + +[[package]] +name = "jsdotlua/boolean" +version = "1.2.6" +dependencies = [["number", "jsdotlua/number@1.2.6"]] + +[[package]] +name = "jsdotlua/collections" +version = "1.2.6" +dependencies = [["es7-types", "jsdotlua/es7-types@1.2.6"], ["instance-of", "jsdotlua/instance-of@1.2.6"]] + +[[package]] +name = "jsdotlua/console" +version = "1.2.6" +dependencies = [["collections", "jsdotlua/collections@1.2.6"]] + +[[package]] +name = "jsdotlua/es7-types" +version = "1.2.6" +dependencies = [] + +[[package]] +name = "jsdotlua/instance-of" +version = "1.2.6" +dependencies = [] + +[[package]] +name = "jsdotlua/luau-polyfill" +version = "1.2.6" +dependencies = [["boolean", "jsdotlua/boolean@1.2.6"], ["collections", "jsdotlua/collections@1.2.6"], ["console", "jsdotlua/console@1.2.6"], ["es7-types", "jsdotlua/es7-types@1.2.6"], ["instance-of", "jsdotlua/instance-of@1.2.6"], ["math", "jsdotlua/math@1.2.6"], ["number", "jsdotlua/number@1.2.6"], ["string", "jsdotlua/string@1.2.6"], ["symbol-luau", "jsdotlua/symbol-luau@1.0.1"], ["timers", "jsdotlua/timers@1.2.6"]] + +[[package]] +name = "jsdotlua/math" +version = "1.2.6" +dependencies = [] + +[[package]] +name = "jsdotlua/number" +version = "1.2.6" +dependencies = [] + +[[package]] +name = "jsdotlua/promise" +version = "3.5.2" +dependencies = [] + +[[package]] +name = "jsdotlua/react" +version = "17.1.0" +dependencies = [["luau-polyfill", "jsdotlua/luau-polyfill@1.2.6"], ["shared", "jsdotlua/shared@17.1.0"]] + +[[package]] +name = "jsdotlua/react-reconciler" +version = "17.1.0" +dependencies = [["luau-polyfill", "jsdotlua/luau-polyfill@1.2.6"], ["promise", "jsdotlua/promise@3.5.2"], ["react", "jsdotlua/react@17.1.0"], ["scheduler", "jsdotlua/scheduler@17.1.0"], ["shared", "jsdotlua/shared@17.1.0"]] + +[[package]] +name = "jsdotlua/react-roblox" +version = "17.1.0" +dependencies = [["luau-polyfill", "jsdotlua/luau-polyfill@1.2.6"], ["react", "jsdotlua/react@17.1.0"], ["react-reconciler", "jsdotlua/react-reconciler@17.1.0"], ["scheduler", "jsdotlua/scheduler@17.1.0"], ["shared", "jsdotlua/shared@17.1.0"]] + +[[package]] +name = "jsdotlua/scheduler" +version = "17.1.0" +dependencies = [["luau-polyfill", "jsdotlua/luau-polyfill@1.2.6"], ["shared", "jsdotlua/shared@17.1.0"]] + +[[package]] +name = "jsdotlua/shared" +version = "17.1.0" +dependencies = [["luau-polyfill", "jsdotlua/luau-polyfill@1.2.6"]] + +[[package]] +name = "jsdotlua/string" +version = "1.2.6" +dependencies = [["es7-types", "jsdotlua/es7-types@1.2.6"], ["number", "jsdotlua/number@1.2.6"]] + +[[package]] +name = "jsdotlua/symbol-luau" +version = "1.0.1" +dependencies = [] + +[[package]] +name = "jsdotlua/timers" +version = "1.2.6" +dependencies = [["collections", "jsdotlua/collections@1.2.6"]] + +[[package]] +name = "littensy/charm" +version = "0.1.0" +dependencies = [["Promise", "evaera/promise@4.0.0"], ["React", "jsdotlua/react@17.1.0"], ["ReactRoblox", "jsdotlua/react-roblox@17.1.0"], ["TestEZ", "roblox/testez@0.4.1"]] + +[[package]] +name = "roblox/testez" +version = "0.4.1" +dependencies = [] diff --git a/wally.toml b/wally.toml new file mode 100644 index 0000000..980208d --- /dev/null +++ b/wally.toml @@ -0,0 +1,20 @@ +[package] +name = "littensy/charm" +description = "Atomic state management for Roblox" +version = "0.1.0" +license = "MIT" +registry = "https://github.com/UpliftGames/wally-index" +realm = "shared" +exclude = ["**"] +include = ["src", "src/**", "default.project.json", "wally.toml", "LICENSE.md"] + +[place] +shared-packages = "game.ReplicatedStorage.Packages" + +[dependencies] +React = "jsdotlua/react@17.1.0" +ReactRoblox = "jsdotlua/react-roblox@17.1.0" +Promise = "evaera/promise@4.0.0" + +[dev-dependencies] +TestEZ = "roblox/testez@0.4.1"