UNPKG

@stainless-code/persist

Version:

Hydration-aware persistence for any reactive store — zero-dep persistSource core; codecs, backends, cross-tab transport, source + framework hydration adapters ship as opt-in recipes

362 lines (361 loc) • 10.4 kB
{ "name": "@stainless-code/persist", "version": "0.4.1", "description": "Hydration-aware persistence for any reactive store — zero-dep persistSource core; codecs, backends, cross-tab transport, source + framework hydration adapters ship as opt-in recipes", "keywords": [ "alpine", "angular", "broadcastchannel", "codec", "compression", "cross-tab", "encryption", "hydration", "indexeddb", "jotai", "lit", "localstorage", "middleware", "migration", "mmkv", "mobx", "persistence", "pinia", "preact", "react", "react-native", "reactive", "redux", "seroval", "solid", "state-management", "store", "svelte", "tanstack", "tanstack-intent", "tanstack-store", "typescript", "valtio", "vue", "zod", "zustand" ], "homepage": "https://stainless-code.com/persist", "bugs": { "url": "https://github.com/stainless-code/persist/issues" }, "license": "MIT", "repository": { "type": "git", "url": "git+https://github.com/stainless-code/persist.git" }, "workspaces": [ ".", "apps/*" ], "files": [ "dist", "skills" ], "type": "module", "sideEffects": false, "exports": { ".": { "types": "./dist/core/index.d.mts", "import": "./dist/core/index.mjs" }, "./codecs/seroval": { "types": "./dist/codecs/seroval.d.mts", "import": "./dist/codecs/seroval.mjs" }, "./codecs/standard-schema": { "types": "./dist/codecs/standard-schema.d.mts", "import": "./dist/codecs/standard-schema.mjs" }, "./backends/idb": { "types": "./dist/backends/idb.d.mts", "import": "./dist/backends/idb.mjs" }, "./backends/async-storage": { "types": "./dist/backends/async-storage.d.mts", "import": "./dist/backends/async-storage.mjs" }, "./backends/mmkv": { "types": "./dist/backends/mmkv.d.mts", "import": "./dist/backends/mmkv.mjs" }, "./backends/secure-store": { "types": "./dist/backends/secure-store.d.mts", "import": "./dist/backends/secure-store.mjs" }, "./backends/encrypted": { "types": "./dist/backends/encrypted.d.mts", "import": "./dist/backends/encrypted.mjs" }, "./backends/compressed": { "types": "./dist/backends/compressed.d.mts", "import": "./dist/backends/compressed.mjs" }, "./backends/node-fs": { "types": "./dist/backends/node-fs.d.mts", "import": "./dist/backends/node-fs.mjs" }, "./transport/crosstab": { "types": "./dist/transport/crosstab.d.mts", "import": "./dist/transport/crosstab.mjs" }, "./sources/tanstack-store": { "types": "./dist/sources/tanstack-store.d.mts", "import": "./dist/sources/tanstack-store.mjs" }, "./sources/zustand": { "types": "./dist/sources/zustand.d.mts", "import": "./dist/sources/zustand.mjs" }, "./sources/jotai": { "types": "./dist/sources/jotai.d.mts", "import": "./dist/sources/jotai.mjs" }, "./sources/valtio": { "types": "./dist/sources/valtio.d.mts", "import": "./dist/sources/valtio.mjs" }, "./sources/mobx": { "types": "./dist/sources/mobx.d.mts", "import": "./dist/sources/mobx.mjs" }, "./sources/pinia": { "types": "./dist/sources/pinia.d.mts", "import": "./dist/sources/pinia.mjs" }, "./sources/redux": { "types": "./dist/sources/redux.d.mts", "import": "./dist/sources/redux.mjs" }, "./frameworks/react": { "types": "./dist/frameworks/react.d.mts", "import": "./dist/frameworks/react.mjs" }, "./frameworks/preact": { "types": "./dist/frameworks/preact.d.mts", "import": "./dist/frameworks/preact.mjs" }, "./frameworks/solid": { "types": "./dist/frameworks/solid.d.mts", "import": "./dist/frameworks/solid.mjs" }, "./frameworks/angular": { "types": "./dist/frameworks/angular.d.mts", "import": "./dist/frameworks/angular.mjs" }, "./frameworks/vue": { "types": "./dist/frameworks/vue.d.mts", "import": "./dist/frameworks/vue.mjs" }, "./frameworks/lit": { "types": "./dist/frameworks/lit.d.mts", "import": "./dist/frameworks/lit.mjs" }, "./frameworks/alpine": { "types": "./dist/frameworks/alpine.d.mts", "import": "./dist/frameworks/alpine.mjs" }, "./frameworks/svelte": { "types": "./dist/frameworks/svelte.d.mts", "import": "./dist/frameworks/svelte.mjs" }, "./frameworks/svelte-store": { "types": "./dist/frameworks/svelte-store.d.mts", "import": "./dist/frameworks/svelte-store.mjs" } }, "publishConfig": { "access": "public", "provenance": true }, "scripts": { "build": "tsdown", "check": "bun run build && bun run --parallel format:check lint:ci test test:dom typecheck", "check-updates": "bun update -i --latest", "check:pack": "attw --pack . --profile esm-only && publint && knip", "clean": "git clean -xdf -e .env", "docs:api": "bun apps/docs/scripts/rewrite-api-links.ts --clean && typedoc && bun apps/docs/scripts/rewrite-api-links.ts", "docs:audit": "bun run --filter '@stainless-code/persist-docs' audit", "docs:build": "bun run --filter '@stainless-code/persist-docs' build", "docs:check": "bun run --filter '@stainless-code/persist-docs' check", "docs:dev": "bun run --filter '@stainless-code/persist-docs' dev", "docs:preview": "bun run --filter '@stainless-code/persist-docs' preview", "docs:validate": "bun run --filter '@stainless-code/persist-docs' validate", "fix": "bun run lint:fix && bun run format", "fix:changes": "bun run lint:fix:changes && bun run format:changes", "format": "oxfmt --no-error-on-unmatched-pattern", "format:changes": "bun scripts/run-on-changed-files.ts format", "format:check": "oxfmt --check --no-error-on-unmatched-pattern", "intent:stale": "intent stale", "intent:validate": "intent validate", "lint": "oxlint --no-error-on-unmatched-pattern", "lint-staged": "lint-staged", "lint:changes": "bun scripts/run-on-changed-files.ts lint", "lint:ci": "oxlint --quiet", "lint:fix": "bun run lint --fix", "lint:fix:changes": "bun scripts/run-on-changed-files.ts lint:fix", "prepare": "husky || true", "prepublishOnly": "bun run check && bun run intent:validate && bun run check:pack && bun run size && bun run test:coverage", "release": "changeset publish", "size": "size-limit", "test": "bun test ./src", "test:coverage": "bun test ./src --coverage --coverage-threshold=0.90", "test:dom": "vitest run", "typecheck": "tsgo --noEmit", "version": "changeset version && bun scripts/sync-skill-versions.ts && bun run format CHANGELOG.md" }, "devDependencies": { "@angular/core": "22.0.5", "@arethetypeswrong/cli": "0.18.4", "@changesets/changelog-github": "0.7.0", "@changesets/cli": "2.31.0", "@react-native-async-storage/async-storage": "3.1.1", "@reduxjs/toolkit": "2.11.2", "@size-limit/preset-small-lib": "12.1.0", "@stainless-code/codemap": "0.11.1", "@tanstack/intent": "0.3.5", "@tanstack/store": "0.11.0", "@testing-library/dom": "10.4.1", "@testing-library/react": "16.3.2", "@types/alpinejs": "3.13.11", "@types/bun": "1.3.14", "@types/node": "26.1.0", "@types/react": "19.2.17", "@types/react-dom": "19.2.3", "@typescript/native-preview": "7.0.0-dev.20260705.1", "alpinejs": "3.15.12", "expo-secure-store": "57.0.0", "husky": "9.1.7", "idb-keyval": "6.2.6", "jotai": "2.20.1", "jsdom": "29.1.1", "knip": "6.24.0", "lint-staged": "17.0.8", "lit": "3.3.3", "mobx": "6.16.1", "oxfmt": "0.57.0", "oxlint": "1.72.0", "pinia": "3.0.4", "preact": "10.29.4", "publint": "0.3.21", "react": "19.2.7", "react-dom": "19.2.7", "react-native-mmkv": "4.3.2", "redux": "5.0.1", "seroval": "1.5.4", "size-limit": "12.1.0", "solid-js": "1.9.14", "svelte": "5.56.4", "tsdown": "0.22.3", "typedoc": "0.28.19", "typedoc-plugin-frontmatter": "1.3.1", "typedoc-plugin-markdown": "4.12.0", "typescript": "6.0.3", "valtio": "2.3.2", "vitest": "4.1.9", "vue": "3.5.39", "zod": "4.4.3", "zustand": "5.0.14" }, "peerDependencies": { "@angular/core": ">=17.0.0", "@react-native-async-storage/async-storage": ">=1.0.0", "@tanstack/store": ">=0.10.0", "alpinejs": ">=3.0.0", "expo-secure-store": ">=12.0.0", "idb-keyval": ">=4.0.0", "jotai": ">=2.0.0", "lit": ">=3.0.0", "mobx": ">=6.0.0", "pinia": ">=2.0.0", "preact": ">=10.19.0", "react": "^18.0.0 || ^19.0.0", "react-native-mmkv": ">=4.0.0", "redux": ">=5.0.0", "seroval": ">=1.0.0", "solid-js": ">=1.6.0", "svelte": ">=3.0.0", "valtio": ">=1.0.0", "vue": ">=3.3.0", "zustand": ">=4.0.0" }, "peerDependenciesMeta": { "seroval": { "optional": true }, "idb-keyval": { "optional": true }, "@tanstack/store": { "optional": true }, "react": { "optional": true }, "solid-js": { "optional": true }, "svelte": { "optional": true }, "@angular/core": { "optional": true }, "preact": { "optional": true }, "vue": { "optional": true }, "lit": { "optional": true }, "alpinejs": { "optional": true }, "@react-native-async-storage/async-storage": { "optional": true }, "react-native-mmkv": { "optional": true }, "expo-secure-store": { "optional": true }, "zustand": { "optional": true }, "jotai": { "optional": true }, "valtio": { "optional": true }, "mobx": { "optional": true }, "pinia": { "optional": true }, "redux": { "optional": true } }, "overrides": { "@ai-sdk/provider-utils": "4.0.40", "@hono/node-server": "2.0.11", "fast-uri": "3.1.4", "path-to-regexp": "6.3.0", "uuid": ">=11.1.1" }, "engines": { "bun": ">=1.0.0", "node": "^20.19.0 || >=22.12.0" }, "packageManager": "bun@1.3.14" }