Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

@tanstack/solid-store

Package Overview
Dependencies
Maintainers
2
Versions
28
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@tanstack/solid-store - npm Package Compare versions

Comparing version
0.2.1
to
0.3.0
+27
dist/cjs/index.cjs
"use strict";
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const solidJs = require("solid-js");
const store$1 = require("solid-js/store");
const store = require("@tanstack/store");
function useStore(store2, selector = (d) => d) {
const [slice, setSlice] = store$1.createStore({
value: selector(store2.state)
});
const unsub = store2.subscribe(() => {
const newValue = selector(store2.state);
setSlice("value", store$1.reconcile(newValue));
});
solidJs.onCleanup(() => {
unsub();
});
return () => slice.value;
}
exports.useStore = useStore;
Object.keys(store).forEach((k) => {
if (k !== "default" && !Object.prototype.hasOwnProperty.call(exports, k))
Object.defineProperty(exports, k, {
enumerable: true,
get: () => store[k]
});
});
//# sourceMappingURL=index.cjs.map
{"version":3,"file":"index.cjs","sources":["../../src/index.ts"],"sourcesContent":["import type { AnyUpdater, Store } from '@tanstack/store'\nimport type { Accessor } from 'solid-js'\nimport { onCleanup } from 'solid-js'\nimport { createStore, reconcile } from 'solid-js/store'\n\nexport * from '@tanstack/store'\n\nexport type NoInfer<T> = [T][T extends any ? 0 : never]\n\nexport function useStore<\n TState,\n TSelected = NoInfer<TState>,\n TUpdater extends AnyUpdater = AnyUpdater,\n>(\n store: Store<TState, TUpdater>,\n selector: (state: NoInfer<TState>) => TSelected = (d) => d as any,\n): Accessor<TSelected> {\n const [slice, setSlice] = createStore({\n value: selector(store.state),\n })\n\n const unsub = store.subscribe(() => {\n const newValue = selector(store.state)\n setSlice('value', reconcile(newValue))\n })\n\n onCleanup(() => {\n unsub()\n })\n\n return () => slice.value\n}\n"],"names":["store","createStore","reconcile","onCleanup"],"mappings":";;;;;AASO,SAAS,SAKdA,QACA,WAAkD,CAAC,MAAM,GACpC;AACrB,QAAM,CAAC,OAAO,QAAQ,IAAIC,oBAAY;AAAA,IACpC,OAAO,SAASD,OAAM,KAAK;AAAA,EAAA,CAC5B;AAEK,QAAA,QAAQA,OAAM,UAAU,MAAM;AAC5B,UAAA,WAAW,SAASA,OAAM,KAAK;AAC5B,aAAA,SAASE,kBAAU,QAAQ,CAAC;AAAA,EAAA,CACtC;AAEDC,UAAAA,UAAU,MAAM;AACR;EAAA,CACP;AAED,SAAO,MAAM,MAAM;AACrB;;;;;;;;;"}
import type { AnyUpdater, Store } from '@tanstack/store';
import type { Accessor } from 'solid-js';
export * from '@tanstack/store';
export type NoInfer<T> = [T][T extends any ? 0 : never];
export declare function useStore<TState, TSelected = NoInfer<TState>, TUpdater extends AnyUpdater = AnyUpdater>(store: Store<TState, TUpdater>, selector?: (state: NoInfer<TState>) => TSelected): Accessor<TSelected>;
import type { AnyUpdater, Store } from '@tanstack/store';
import type { Accessor } from 'solid-js';
export * from '@tanstack/store';
export type NoInfer<T> = [T][T extends any ? 0 : never];
export declare function useStore<TState, TSelected = NoInfer<TState>, TUpdater extends AnyUpdater = AnyUpdater>(store: Store<TState, TUpdater>, selector?: (state: NoInfer<TState>) => TSelected): Accessor<TSelected>;
import { onCleanup } from "solid-js";
import { createStore, reconcile } from "solid-js/store";
export * from "@tanstack/store";
function useStore(store, selector = (d) => d) {
const [slice, setSlice] = createStore({
value: selector(store.state)
});
const unsub = store.subscribe(() => {
const newValue = selector(store.state);
setSlice("value", reconcile(newValue));
});
onCleanup(() => {
unsub();
});
return () => slice.value;
}
export {
useStore
};
//# sourceMappingURL=index.js.map
{"version":3,"file":"index.js","sources":["../../src/index.ts"],"sourcesContent":["import type { AnyUpdater, Store } from '@tanstack/store'\nimport type { Accessor } from 'solid-js'\nimport { onCleanup } from 'solid-js'\nimport { createStore, reconcile } from 'solid-js/store'\n\nexport * from '@tanstack/store'\n\nexport type NoInfer<T> = [T][T extends any ? 0 : never]\n\nexport function useStore<\n TState,\n TSelected = NoInfer<TState>,\n TUpdater extends AnyUpdater = AnyUpdater,\n>(\n store: Store<TState, TUpdater>,\n selector: (state: NoInfer<TState>) => TSelected = (d) => d as any,\n): Accessor<TSelected> {\n const [slice, setSlice] = createStore({\n value: selector(store.state),\n })\n\n const unsub = store.subscribe(() => {\n const newValue = selector(store.state)\n setSlice('value', reconcile(newValue))\n })\n\n onCleanup(() => {\n unsub()\n })\n\n return () => slice.value\n}\n"],"names":[],"mappings":";;;AASO,SAAS,SAKd,OACA,WAAkD,CAAC,MAAM,GACpC;AACrB,QAAM,CAAC,OAAO,QAAQ,IAAI,YAAY;AAAA,IACpC,OAAO,SAAS,MAAM,KAAK;AAAA,EAAA,CAC5B;AAEK,QAAA,QAAQ,MAAM,UAAU,MAAM;AAC5B,UAAA,WAAW,SAAS,MAAM,KAAK;AAC5B,aAAA,SAAS,UAAU,QAAQ,CAAC;AAAA,EAAA,CACtC;AAED,YAAU,MAAM;AACR;EAAA,CACP;AAED,SAAO,MAAM,MAAM;AACrB;"}
import { render, renderHook } from '@solidjs/testing-library'
import '@testing-library/jest-dom'
import { Store } from '@tanstack/store'
import { useStore } from '../index'
describe('useStore', () => {
it.todo('allows us to select state using a selector', async () => {
const store = new Store({
select: 0,
ignored: 1,
})
function Comp() {
const storeVal = useStore(store, (state) => state.select)
return <p>Store: {storeVal()}</p>
}
const { getByText } = render(() => <Comp />)
expect(getByText('Store: 0')).toBeInTheDocument()
})
it('allows us to select state using a selector', () => {
const store = new Store({
select: 0,
ignored: 1,
})
const { result } = renderHook(() =>
useStore(store, (state) => state.select),
)
expect(result()).toBe(0)
})
it('updates accessor value when state is updated', () => {
const store = new Store(0)
const { result } = renderHook(() => useStore(store))
store.setState((prev) => prev + 1)
expect(result()).toBe(1)
})
})
+22
-14
{
"name": "@tanstack/solid-store",
"author": "Tanner Linsley",
"version": "0.2.1",
"version": "0.3.0",
"license": "MIT",

@@ -22,18 +22,18 @@ "repository": "tanstack/solid-store",

"files": [
"build",
"dist",
"src"
],
"type": "module",
"types": "build/legacy/index.d.ts",
"main": "build/legacy/index.cjs",
"module": "build/legacy/index.js",
"types": "dist/esm/index.d.ts",
"main": "dist/cjs/index.cjs",
"module": "dist/esm/index.js",
"exports": {
".": {
"import": {
"types": "./build/modern/index.d.ts",
"default": "./build/modern/index.js"
"types": "./dist/esm/index.d.ts",
"default": "./dist/esm/index.js"
},
"require": {
"types": "./build/modern/index.d.cts",
"default": "./build/modern/index.cjs"
"types": "./dist/cjs/index.d.cts",
"default": "./dist/cjs/index.cjs"
}

@@ -48,13 +48,21 @@ },

"dependencies": {
"@tanstack/store": "0.1.3"
"@tanstack/store": "0.3.0"
},
"devDependencies": {
"solid-js": "^1.7.8",
"vite-plugin-solid": "^2.8.0"
},
"scripts": {
"clean": "rimraf ./build && rimraf ./coverage",
"clean": "rimraf ./dist && rimraf ./coverage",
"test:eslint": "eslint --ext .ts,.tsx ./src",
"test:types": "tsc",
"test:lib": "vitest run --coverage",
"test:types:versions49": "node ../../node_modules/typescript49/lib/tsc.js --project tsconfig.legacy.json",
"test:types:versions50": "node ../../node_modules/typescript50/lib/tsc.js",
"test:types:versions51": "node ../../node_modules/typescript51/lib/tsc.js",
"test:types:versions52": "tsc",
"test:types": "pnpm run \"/^test:types:versions.*/\"",
"test:lib": "vitest",
"test:lib:dev": "pnpm run test:lib --watch",
"test:build": "publint --strict",
"build": "tsup"
"build": "vite build"
}
}
import type { AnyUpdater, Store } from '@tanstack/store'
import type { Accessor} from 'solid-js';
import type { Accessor } from 'solid-js'
import { onCleanup } from 'solid-js'

@@ -19,3 +19,3 @@ import { createStore, reconcile } from 'solid-js/store'

const [slice, setSlice] = createStore({
value: selector(store.state)
value: selector(store.state),
})

@@ -22,0 +22,0 @@

"use strict";
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// src/index.ts
var src_exports = {};
__export(src_exports, {
useStore: () => useStore
});
module.exports = __toCommonJS(src_exports);
var import_solid_js = require("solid-js");
var import_store = require("solid-js/store");
__reExport(src_exports, require("@tanstack/store"), module.exports);
function useStore(store, selector = (d) => d) {
const [slice, setSlice] = (0, import_store.createStore)({
value: selector(store.state)
});
const unsub = store.subscribe(() => {
const newValue = selector(store.state);
setSlice("value", (0, import_store.reconcile)(newValue));
});
(0, import_solid_js.onCleanup)(() => {
unsub();
});
return () => slice.value;
}
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
useStore,
...require("@tanstack/store")
});
//# sourceMappingURL=index.cjs.map
{"version":3,"sources":["../../src/index.ts"],"sourcesContent":["import type { AnyUpdater, Store } from '@tanstack/store'\nimport type { Accessor} from 'solid-js';\nimport { onCleanup } from 'solid-js'\nimport { createStore, reconcile } from 'solid-js/store'\n\nexport * from '@tanstack/store'\n\nexport type NoInfer<T> = [T][T extends any ? 0 : never]\n\nexport function useStore<\n TState,\n TSelected = NoInfer<TState>,\n TUpdater extends AnyUpdater = AnyUpdater,\n>(\n store: Store<TState, TUpdater>,\n selector: (state: NoInfer<TState>) => TSelected = (d) => d as any,\n): Accessor<TSelected> {\n const [slice, setSlice] = createStore({\n value: selector(store.state)\n })\n\n const unsub = store.subscribe(() => {\n const newValue = selector(store.state)\n setSlice('value', reconcile(newValue))\n })\n\n onCleanup(() => {\n unsub()\n })\n\n return () => slice.value\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,sBAA0B;AAC1B,mBAAuC;AAEvC,wBAAc,4BALd;AASO,SAAS,SAKd,OACA,WAAkD,CAAC,MAAM,GACpC;AACrB,QAAM,CAAC,OAAO,QAAQ,QAAI,0BAAY;AAAA,IACpC,OAAO,SAAS,MAAM,KAAK;AAAA,EAC7B,CAAC;AAED,QAAM,QAAQ,MAAM,UAAU,MAAM;AAClC,UAAM,WAAW,SAAS,MAAM,KAAK;AACrC,aAAS,aAAS,wBAAU,QAAQ,CAAC;AAAA,EACvC,CAAC;AAED,iCAAU,MAAM;AACd,UAAM;AAAA,EACR,CAAC;AAED,SAAO,MAAM,MAAM;AACrB;","names":[]}
import { AnyUpdater, Store } from '@tanstack/store';
export * from '@tanstack/store';
import { Accessor } from 'solid-js';
type NoInfer<T> = [T][T extends any ? 0 : never];
declare function useStore<TState, TSelected = NoInfer<TState>, TUpdater extends AnyUpdater = AnyUpdater>(store: Store<TState, TUpdater>, selector?: (state: NoInfer<TState>) => TSelected): Accessor<TSelected>;
export { NoInfer, useStore };
import { AnyUpdater, Store } from '@tanstack/store';
export * from '@tanstack/store';
import { Accessor } from 'solid-js';
type NoInfer<T> = [T][T extends any ? 0 : never];
declare function useStore<TState, TSelected = NoInfer<TState>, TUpdater extends AnyUpdater = AnyUpdater>(store: Store<TState, TUpdater>, selector?: (state: NoInfer<TState>) => TSelected): Accessor<TSelected>;
export { NoInfer, useStore };
// src/index.ts
import { onCleanup } from "solid-js";
import { createStore, reconcile } from "solid-js/store";
export * from "@tanstack/store";
function useStore(store, selector = (d) => d) {
const [slice, setSlice] = createStore({
value: selector(store.state)
});
const unsub = store.subscribe(() => {
const newValue = selector(store.state);
setSlice("value", reconcile(newValue));
});
onCleanup(() => {
unsub();
});
return () => slice.value;
}
export {
useStore
};
//# sourceMappingURL=index.js.map
{"version":3,"sources":["../../src/index.ts"],"sourcesContent":["import type { AnyUpdater, Store } from '@tanstack/store'\nimport type { Accessor} from 'solid-js';\nimport { onCleanup } from 'solid-js'\nimport { createStore, reconcile } from 'solid-js/store'\n\nexport * from '@tanstack/store'\n\nexport type NoInfer<T> = [T][T extends any ? 0 : never]\n\nexport function useStore<\n TState,\n TSelected = NoInfer<TState>,\n TUpdater extends AnyUpdater = AnyUpdater,\n>(\n store: Store<TState, TUpdater>,\n selector: (state: NoInfer<TState>) => TSelected = (d) => d as any,\n): Accessor<TSelected> {\n const [slice, setSlice] = createStore({\n value: selector(store.state)\n })\n\n const unsub = store.subscribe(() => {\n const newValue = selector(store.state)\n setSlice('value', reconcile(newValue))\n })\n\n onCleanup(() => {\n unsub()\n })\n\n return () => slice.value\n}\n"],"mappings":";AAEA,SAAS,iBAAiB;AAC1B,SAAS,aAAa,iBAAiB;AAEvC,cAAc;AAIP,SAAS,SAKd,OACA,WAAkD,CAAC,MAAM,GACpC;AACrB,QAAM,CAAC,OAAO,QAAQ,IAAI,YAAY;AAAA,IACpC,OAAO,SAAS,MAAM,KAAK;AAAA,EAC7B,CAAC;AAED,QAAM,QAAQ,MAAM,UAAU,MAAM;AAClC,UAAM,WAAW,SAAS,MAAM,KAAK;AACrC,aAAS,SAAS,UAAU,QAAQ,CAAC;AAAA,EACvC,CAAC;AAED,YAAU,MAAM;AACd,UAAM;AAAA,EACR,CAAC;AAED,SAAO,MAAM,MAAM;AACrB;","names":[]}
"use strict";
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// src/index.ts
var src_exports = {};
__export(src_exports, {
useStore: () => useStore
});
module.exports = __toCommonJS(src_exports);
var import_solid_js = require("solid-js");
var import_store = require("solid-js/store");
__reExport(src_exports, require("@tanstack/store"), module.exports);
function useStore(store, selector = (d) => d) {
const [slice, setSlice] = (0, import_store.createStore)({
value: selector(store.state)
});
const unsub = store.subscribe(() => {
const newValue = selector(store.state);
setSlice("value", (0, import_store.reconcile)(newValue));
});
(0, import_solid_js.onCleanup)(() => {
unsub();
});
return () => slice.value;
}
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
useStore,
...require("@tanstack/store")
});
//# sourceMappingURL=index.cjs.map
{"version":3,"sources":["../../src/index.ts"],"sourcesContent":["import type { AnyUpdater, Store } from '@tanstack/store'\nimport type { Accessor} from 'solid-js';\nimport { onCleanup } from 'solid-js'\nimport { createStore, reconcile } from 'solid-js/store'\n\nexport * from '@tanstack/store'\n\nexport type NoInfer<T> = [T][T extends any ? 0 : never]\n\nexport function useStore<\n TState,\n TSelected = NoInfer<TState>,\n TUpdater extends AnyUpdater = AnyUpdater,\n>(\n store: Store<TState, TUpdater>,\n selector: (state: NoInfer<TState>) => TSelected = (d) => d as any,\n): Accessor<TSelected> {\n const [slice, setSlice] = createStore({\n value: selector(store.state)\n })\n\n const unsub = store.subscribe(() => {\n const newValue = selector(store.state)\n setSlice('value', reconcile(newValue))\n })\n\n onCleanup(() => {\n unsub()\n })\n\n return () => slice.value\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,sBAA0B;AAC1B,mBAAuC;AAEvC,wBAAc,4BALd;AASO,SAAS,SAKd,OACA,WAAkD,CAAC,MAAM,GACpC;AACrB,QAAM,CAAC,OAAO,QAAQ,QAAI,0BAAY;AAAA,IACpC,OAAO,SAAS,MAAM,KAAK;AAAA,EAC7B,CAAC;AAED,QAAM,QAAQ,MAAM,UAAU,MAAM;AAClC,UAAM,WAAW,SAAS,MAAM,KAAK;AACrC,aAAS,aAAS,wBAAU,QAAQ,CAAC;AAAA,EACvC,CAAC;AAED,iCAAU,MAAM;AACd,UAAM;AAAA,EACR,CAAC;AAED,SAAO,MAAM,MAAM;AACrB;","names":[]}
import { AnyUpdater, Store } from '@tanstack/store';
export * from '@tanstack/store';
import { Accessor } from 'solid-js';
type NoInfer<T> = [T][T extends any ? 0 : never];
declare function useStore<TState, TSelected = NoInfer<TState>, TUpdater extends AnyUpdater = AnyUpdater>(store: Store<TState, TUpdater>, selector?: (state: NoInfer<TState>) => TSelected): Accessor<TSelected>;
export { NoInfer, useStore };
import { AnyUpdater, Store } from '@tanstack/store';
export * from '@tanstack/store';
import { Accessor } from 'solid-js';
type NoInfer<T> = [T][T extends any ? 0 : never];
declare function useStore<TState, TSelected = NoInfer<TState>, TUpdater extends AnyUpdater = AnyUpdater>(store: Store<TState, TUpdater>, selector?: (state: NoInfer<TState>) => TSelected): Accessor<TSelected>;
export { NoInfer, useStore };
// src/index.ts
import { onCleanup } from "solid-js";
import { createStore, reconcile } from "solid-js/store";
export * from "@tanstack/store";
function useStore(store, selector = (d) => d) {
const [slice, setSlice] = createStore({
value: selector(store.state)
});
const unsub = store.subscribe(() => {
const newValue = selector(store.state);
setSlice("value", reconcile(newValue));
});
onCleanup(() => {
unsub();
});
return () => slice.value;
}
export {
useStore
};
//# sourceMappingURL=index.js.map
{"version":3,"sources":["../../src/index.ts"],"sourcesContent":["import type { AnyUpdater, Store } from '@tanstack/store'\nimport type { Accessor} from 'solid-js';\nimport { onCleanup } from 'solid-js'\nimport { createStore, reconcile } from 'solid-js/store'\n\nexport * from '@tanstack/store'\n\nexport type NoInfer<T> = [T][T extends any ? 0 : never]\n\nexport function useStore<\n TState,\n TSelected = NoInfer<TState>,\n TUpdater extends AnyUpdater = AnyUpdater,\n>(\n store: Store<TState, TUpdater>,\n selector: (state: NoInfer<TState>) => TSelected = (d) => d as any,\n): Accessor<TSelected> {\n const [slice, setSlice] = createStore({\n value: selector(store.state)\n })\n\n const unsub = store.subscribe(() => {\n const newValue = selector(store.state)\n setSlice('value', reconcile(newValue))\n })\n\n onCleanup(() => {\n unsub()\n })\n\n return () => slice.value\n}\n"],"mappings":";AAEA,SAAS,iBAAiB;AAC1B,SAAS,aAAa,iBAAiB;AAEvC,cAAc;AAIP,SAAS,SAKd,OACA,WAAkD,CAAC,MAAM,GACpC;AACrB,QAAM,CAAC,OAAO,QAAQ,IAAI,YAAY;AAAA,IACpC,OAAO,SAAS,MAAM,KAAK;AAAA,EAC7B,CAAC;AAED,QAAM,QAAQ,MAAM,UAAU,MAAM;AAClC,UAAM,WAAW,SAAS,MAAM,KAAK;AACrC,aAAS,SAAS,UAAU,QAAQ,CAAC;AAAA,EACvC,CAAC;AAED,YAAU,MAAM;AACd,UAAM;AAAA,EACR,CAAC;AAED,SAAO,MAAM,MAAM;AACrB;","names":[]}
import { render, renderHook } from '@solidjs/testing-library'
import '@testing-library/jest-dom'
import { Store } from '@tanstack/store'
import { useStore } from '../index'
describe('useStore', () => {
it.todo('allows us to select state using a selector', async () => {
const store = new Store({
select: 0,
ignored: 1,
})
function Comp() {
const storeVal = useStore(store, (state) => state.select)
return <p>Store: {storeVal()}</p>
}
const { getByText } = render(() => <Comp />)
expect(getByText('Store: 0')).toBeInTheDocument()
})
it('allows us to select state using a selector', () => {
const store = new Store({
select: 0,
ignored: 1,
})
const { result } = renderHook(() => useStore(store, (state) => state.select))
expect(result()).toBe(0)
})
it('updates accessor value when state is updated', () => {
const store = new Store(0)
const { result } = renderHook(() => useStore(store))
store.setState((prev) => prev + 1)
expect(result()).toBe(1)
})
})