{"id":"ordac/keystone","name":"keystone","scope":"ordac","platform":"roblox","description":"A session-locked player data library for Roblox","version":"0.1.5","latest":"0.1.5","versions":["0.1.0","0.1.1","0.1.2","0.1.3","0.1.4","0.1.5"],"license":"MIT","licenseRating":"safe","licenseCaveats":[],"licenseVerified":true,"dependencies":{"sleitnick/signal":{"version":"^2.0.3","alias":"Signal"}},"integrity":"5a920d6e9cdb887f4749768c2e7b4fa8c8bca4dec03003c5c03d0b7009546eed","likes":0,"downloads":0,"install":"forest install ordac/keystone","url":"https://forest.dev/p/roblox/ordac/keystone","files":"https://api.forest.dev/ai/package/roblox/ordac/keystone/files","readme":"<p align=\"center\">\r\n  <img src=\"assets/hero-light.svg#gh-light-mode-only\" alt=\"Keystone\" width=\"256\">\r\n  <img src=\"assets/hero-dark.svg#gh-dark-mode-only\" alt=\"Keystone\" width=\"256\">\r\n</p>\r\n\r\n<p align=\"center\">\r\n  Reliable, session-locked data persistence for Roblox.\r\n</p>\r\n\r\n<p align=\"center\">\r\n  <a href=\"https://wally.run/package/ordac/keystone\">\r\n    <img src=\"assets/wally_button.svg\" alt=\"Wally\" height=\"32\">\r\n  </a>\r\n</p>\r\n\r\n<p align=\"center\">\r\n  <img src=\"https://img.shields.io/badge/license-MIT-007ACC?style=flat-square\" alt=\"MIT License\">\r\n  <img src=\"https://img.shields.io/badge/Luau-Roblox-00A2FF?style=flat-square\" alt=\"Luau\">\r\n</p>\r\n\r\n## Features\r\n\r\n- Session locking\r\n- Autosaving\r\n- Deep reconciliation\r\n- BindToClose support\r\n- Automatic retries\r\n- Reactive change signals\r\n- Client snapshots\r\n- Save queue\r\n\r\n## Installation\r\n\r\nInstall Keystone with Wally:\r\n\r\n```toml\r\n[dependencies]\r\nKeystone = \"ordac/keystone@0.1.5\"\r\n```\r\n\r\n## Why Keystone?\r\n\r\nKeystone provides a simple, reliable data persistence API for Roblox while handling many obstacles that normally come with DataStore development.\r\n\r\n- Session locking\r\n- Automatic saving\r\n- Deep template reconciliation\r\n- Automatic retry handling\r\n- Safe shutdown support\r\n- Reactive change signals\r\n\r\n## Quick Start\r\n\r\n```lua\r\nlocal ReplicatedStorage = game:GetService(\"ReplicatedStorage\")\r\n\r\nlocal Keystone = require(ReplicatedStorage.Packages.Keystone)\r\n\r\nlocal Store = Keystone.create({\r\n    Name = \"PlayerData\",\r\n\r\n    Template = {\r\n        Coins = 0,\r\n        Level = 1,\r\n    }\r\n})\r\n\r\nStore:Start()\r\n```\r\n\r\n> **More examples coming soon.**\r\n>\r\n> This guide currently covers the basics of getting started with Keystone. Additional examples and API documentation will be added in future updates.","readmeTruncated":false}