react-rock 3.2.1 → 3.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/Finder.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Finder.js","sources":["../src/Finder.ts"],"sourcesContent":["import { FinderArgsType, QueryType, QueryValueType } from \"./types\"\n\nexport const isOb = (ob: any) => typeof ob === \"object\" && !Array.isArray(ob) && ob !== null\nconst isNum = (n: any) => typeof n === 'number'\nconst excuteQuery: any = {\n contain: (v: any, qv: any) => typeof v === 'string' && v.search(qv) !== -1,\n startWith: (v: any, qv: any) => typeof v === 'string' && v.startsWith(qv),\n endWith: (v: any, qv: any) => typeof v === 'string' && v.endsWith(qv),\n equalWith: (v: any, qv: any) => v === qv,\n notEqualWith: (v: any, qv: any) => v !== qv,\n lt: (v: any, qv: any) => isNum(v) && v < qv,\n gt: (v: any, qv: any) => isNum(v) && v > qv,\n lte: (v: any, qv: any) => isNum(v) && v <= qv,\n gte: (v: any, qv: any) => isNum(v) && v >= qv,\n}\n\nconst isInQuery = <Row>(rowVal: Row, queryObject: QueryValueType) => {\n let match = true\n for (let queryKey in queryObject) {\n let qVal = (queryObject as any)[queryKey]\n const qcb = excuteQuery[queryKey]\n if (qcb && !qcb(rowVal, qVal)) {\n match = false;\n break;\n }\n }\n return match\n}\n\nconst Finder = <Row extends object>(rows: Row[], query: null | QueryType<Row>, args?: FinderArgsType<Row>) => {\n let result: Row[] = []\n let indexes: number[] = []\n let ids: string[] = []\n\n for (let i = 0; i < rows.length; i++) {\n let row = rows[i]\n let found = false;\n if (isOb(query)) {\n for (let rowKey in query) {\n let queryVal = query[rowKey]\n if (!(rowKey in row)) break;\n\n if (isOb(queryVal)) {\n if (isInQuery(row[rowKey], queryVal as any)) {\n found = true\n } else {\n found = false\n break;\n }\n } else if (row[rowKey] === queryVal) {\n found = true;\n } else {\n found = false\n break;\n }\n }\n } else {\n found = true\n }\n\n if (found) {\n if (args?.getRow) {\n let r = args.getRow({ ...row }, i)\n if (r) {\n row = r\n } else {\n continue;\n }\n }\n result.push({ ...row, _index: i })\n indexes.push(i)\n ids.push((row as any)._id)\n }\n }\n\n const take = args?.take || result.length\n const skip = args?.skip || 0\n\n if (args?.take && args?.skip) {\n result = result.splice(skip, take)\n } else if (!args?.skip && args?.take) {\n result.splice(args.take)\n } else if (!args?.take && args?.skip) {\n result = result.splice(args.skip)\n }\n\n return { rows: result, indexes, ids }\n}\n\nexport default Finder"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Finder.js","sources":["../src/Finder.ts"],"sourcesContent":["import { FinderArgsType, QueryType, QueryValueType } from \"./types\"\n\nexport const isOb = (ob: any) => typeof ob === \"object\" && !Array.isArray(ob) && ob !== null\nconst isNum = (n: any) => typeof n === 'number'\nconst excuteQuery: any = {\n contain: (v: any, qv: any) => typeof v === 'string' && v.search(qv) !== -1,\n startWith: (v: any, qv: any) => typeof v === 'string' && v.startsWith(qv),\n endWith: (v: any, qv: any) => typeof v === 'string' && v.endsWith(qv),\n equalWith: (v: any, qv: any) => v === qv,\n notEqualWith: (v: any, qv: any) => v !== qv,\n lt: (v: any, qv: any) => isNum(v) && v < qv,\n gt: (v: any, qv: any) => isNum(v) && v > qv,\n lte: (v: any, qv: any) => isNum(v) && v <= qv,\n gte: (v: any, qv: any) => isNum(v) && v >= qv,\n}\n\nconst isInQuery = <Row>(rowVal: Row, queryObject: QueryValueType) => {\n let match = true\n for (let queryKey in queryObject) {\n let qVal = (queryObject as any)[queryKey]\n const qcb = excuteQuery[queryKey]\n if (qcb && !qcb(rowVal, qVal)) {\n match = false;\n break;\n }\n }\n return match\n}\n\nconst Finder = <Row extends object>(rows: Row[], query: null | QueryType<Row>, args?: FinderArgsType<Row>) => {\n let result: Row[] = []\n let indexes: number[] = []\n let ids: string[] = []\n\n for (let i = 0; i < rows.length; i++) {\n let row = rows[i]\n let found = false;\n if (isOb(query)) {\n for (let rowKey in query) {\n let queryVal = query[rowKey]\n if (!(rowKey in row)) break;\n\n if (isOb(queryVal)) {\n if (isInQuery(row[rowKey], queryVal as any)) {\n found = true\n } else {\n found = false\n break;\n }\n } else if (row[rowKey] === queryVal) {\n found = true;\n } else {\n found = false\n break;\n }\n }\n } else {\n found = true\n }\n\n if (found) {\n if (args?.getRow) {\n let r = args.getRow({ ...row }, i)\n if (r) {\n row = r\n } else {\n continue;\n }\n }\n result.push({ ...row, _index: i })\n indexes.push(i)\n ids.push((row as any)._id)\n }\n }\n\n const take = args?.take || result.length\n const skip = args?.skip || 0\n\n if (args?.take && args?.skip) {\n result = result.splice(skip, take)\n } else if (!args?.skip && args?.take) {\n result.splice(args.take)\n } else if (!args?.take && args?.skip) {\n result = result.splice(args.skip)\n }\n\n return { rows: result, indexes, ids }\n}\n\nexport default Finder"],"names":[],"mappings":"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"}
package/Finder.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Finder.mjs","sources":["../src/Finder.ts"],"sourcesContent":["import { FinderArgsType, QueryType, QueryValueType } from \"./types\"\n\nexport const isOb = (ob: any) => typeof ob === \"object\" && !Array.isArray(ob) && ob !== null\nconst isNum = (n: any) => typeof n === 'number'\nconst excuteQuery: any = {\n contain: (v: any, qv: any) => typeof v === 'string' && v.search(qv) !== -1,\n startWith: (v: any, qv: any) => typeof v === 'string' && v.startsWith(qv),\n endWith: (v: any, qv: any) => typeof v === 'string' && v.endsWith(qv),\n equalWith: (v: any, qv: any) => v === qv,\n notEqualWith: (v: any, qv: any) => v !== qv,\n lt: (v: any, qv: any) => isNum(v) && v < qv,\n gt: (v: any, qv: any) => isNum(v) && v > qv,\n lte: (v: any, qv: any) => isNum(v) && v <= qv,\n gte: (v: any, qv: any) => isNum(v) && v >= qv,\n}\n\nconst isInQuery = <Row>(rowVal: Row, queryObject: QueryValueType) => {\n let match = true\n for (let queryKey in queryObject) {\n let qVal = (queryObject as any)[queryKey]\n const qcb = excuteQuery[queryKey]\n if (qcb && !qcb(rowVal, qVal)) {\n match = false;\n break;\n }\n }\n return match\n}\n\nconst Finder = <Row extends object>(rows: Row[], query: null | QueryType<Row>, args?: FinderArgsType<Row>) => {\n let result: Row[] = []\n let indexes: number[] = []\n let ids: string[] = []\n\n for (let i = 0; i < rows.length; i++) {\n let row = rows[i]\n let found = false;\n if (isOb(query)) {\n for (let rowKey in query) {\n let queryVal = query[rowKey]\n if (!(rowKey in row)) break;\n\n if (isOb(queryVal)) {\n if (isInQuery(row[rowKey], queryVal as any)) {\n found = true\n } else {\n found = false\n break;\n }\n } else if (row[rowKey] === queryVal) {\n found = true;\n } else {\n found = false\n break;\n }\n }\n } else {\n found = true\n }\n\n if (found) {\n if (args?.getRow) {\n let r = args.getRow({ ...row }, i)\n if (r) {\n row = r\n } else {\n continue;\n }\n }\n result.push({ ...row, _index: i })\n indexes.push(i)\n ids.push((row as any)._id)\n }\n }\n\n const take = args?.take || result.length\n const skip = args?.skip || 0\n\n if (args?.take && args?.skip) {\n result = result.splice(skip, take)\n } else if (!args?.skip && args?.take) {\n result.splice(args.take)\n } else if (!args?.take && args?.skip) {\n result = result.splice(args.skip)\n }\n\n return { rows: result, indexes, ids }\n}\n\nexport default Finder"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Finder.mjs","sources":["../src/Finder.ts"],"sourcesContent":["import { FinderArgsType, QueryType, QueryValueType } from \"./types\"\n\nexport const isOb = (ob: any) => typeof ob === \"object\" && !Array.isArray(ob) && ob !== null\nconst isNum = (n: any) => typeof n === 'number'\nconst excuteQuery: any = {\n contain: (v: any, qv: any) => typeof v === 'string' && v.search(qv) !== -1,\n startWith: (v: any, qv: any) => typeof v === 'string' && v.startsWith(qv),\n endWith: (v: any, qv: any) => typeof v === 'string' && v.endsWith(qv),\n equalWith: (v: any, qv: any) => v === qv,\n notEqualWith: (v: any, qv: any) => v !== qv,\n lt: (v: any, qv: any) => isNum(v) && v < qv,\n gt: (v: any, qv: any) => isNum(v) && v > qv,\n lte: (v: any, qv: any) => isNum(v) && v <= qv,\n gte: (v: any, qv: any) => isNum(v) && v >= qv,\n}\n\nconst isInQuery = <Row>(rowVal: Row, queryObject: QueryValueType) => {\n let match = true\n for (let queryKey in queryObject) {\n let qVal = (queryObject as any)[queryKey]\n const qcb = excuteQuery[queryKey]\n if (qcb && !qcb(rowVal, qVal)) {\n match = false;\n break;\n }\n }\n return match\n}\n\nconst Finder = <Row extends object>(rows: Row[], query: null | QueryType<Row>, args?: FinderArgsType<Row>) => {\n let result: Row[] = []\n let indexes: number[] = []\n let ids: string[] = []\n\n for (let i = 0; i < rows.length; i++) {\n let row = rows[i]\n let found = false;\n if (isOb(query)) {\n for (let rowKey in query) {\n let queryVal = query[rowKey]\n if (!(rowKey in row)) break;\n\n if (isOb(queryVal)) {\n if (isInQuery(row[rowKey], queryVal as any)) {\n found = true\n } else {\n found = false\n break;\n }\n } else if (row[rowKey] === queryVal) {\n found = true;\n } else {\n found = false\n break;\n }\n }\n } else {\n found = true\n }\n\n if (found) {\n if (args?.getRow) {\n let r = args.getRow({ ...row }, i)\n if (r) {\n row = r\n } else {\n continue;\n }\n }\n result.push({ ...row, _index: i })\n indexes.push(i)\n ids.push((row as any)._id)\n }\n }\n\n const take = args?.take || result.length\n const skip = args?.skip || 0\n\n if (args?.take && args?.skip) {\n result = result.splice(skip, take)\n } else if (!args?.skip && args?.take) {\n result.splice(args.take)\n } else if (!args?.take && args?.skip) {\n result = result.splice(args.skip)\n }\n\n return { rows: result, indexes, ids }\n}\n\nexport default Finder"],"names":[],"mappings":"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"}
package/index.d.ts CHANGED
@@ -1,61 +1,10 @@
1
1
  import { Component } from 'react';
2
-
3
- type StateDataType = "state" | "meta";
4
- type RowPredefinedFields = {
5
- _id: string;
6
- _index: number;
7
- _observe: number;
8
- };
9
- type FinderArgsType<Row> = {
10
- getRow?: (row: Row, index: number) => Row | void;
11
- skip?: number;
12
- take?: number;
13
- freeze?: boolean;
14
- };
15
- type RowType<Row> = Row & RowPredefinedFields;
16
- type WhereType<Row> = QueryType<RowType<Row>>;
17
- type ArgsType<Row> = FinderArgsType<RowType<Row>>;
18
- type GetRowCallback<Row> = (row: Row, index: number) => Row | void;
19
- interface IStateHandler<Row, MetaProps> {
20
- create(row: Row, freeze?: boolean): RowType<Row>;
21
- createMany(rows: Row[], freeze?: boolean): void;
22
- update(row: Partial<Row>, where: WhereType<Row>, freeze?: boolean): void;
23
- updateAll(row: Partial<Row>, freeze?: boolean): void;
24
- delete(where: WhereType<Row>, freeze?: boolean): void;
25
- clearAll(freeze?: boolean): void;
26
- move(oldIdx: number, newIdx: number, freeze?: boolean): void;
27
- getAll(args?: {
28
- freeze?: boolean;
29
- getRow?: GetRowCallback<Row>;
30
- }): RowType<Row>[];
31
- find(where: WhereType<Row>, args?: ArgsType<Row>): RowType<Row>[];
32
- findFirst(where: WhereType<Row>, freeze?: boolean): RowType<Row>;
33
- findById(_id: string, freeze?: boolean): RowType<Row>;
34
- setMeta<T extends keyof MetaProps>(key: T, value: MetaProps[T], freeze?: boolean): void;
35
- getMeta<T extends keyof MetaProps>(key: T, freeze?: boolean): MetaProps[T];
36
- getAllMeta(freeze?: boolean): MetaProps;
37
- deleteMeta<T extends keyof MetaProps>(key: T, freeze?: boolean): void;
38
- clearMeta(freeze?: boolean): void;
39
- }
40
- type QueryValueType = {
41
- contain?: string | number | boolean | null | undefined;
42
- startWith?: string | number;
43
- endWith?: string | number;
44
- equalWith?: string | number | boolean | null | undefined;
45
- notEqualWith?: string | number | boolean | null | undefined;
46
- gt?: number;
47
- lt?: number;
48
- gte?: number;
49
- lte?: number;
50
- };
51
- type QueryType<Row = {}> = {
52
- [key in keyof Row]?: string | number | boolean | null | undefined | QueryValueType;
53
- };
2
+ import { IStateHandler } from './types.js';
3
+ export { ArgsType, FinderArgsType, GetRowCallback, QueryType, QueryValueType, RowPredefinedFields, RowType, StateDataType, WhereType } from './types.js';
54
4
 
55
5
  declare class StoreComponent<P = {}, S = {}, SS = any> extends Component<P, S, SS> {
56
6
  constructor(props: P);
57
7
  }
58
8
  declare const createStore: <Row extends object, MetaProps extends object = {}>(rows?: Row[] | undefined, meta?: MetaProps | undefined) => IStateHandler<Row, MetaProps>;
59
9
 
60
- export { StoreComponent, createStore };
61
- export type { ArgsType, FinderArgsType, GetRowCallback, IStateHandler, QueryType, QueryValueType, RowPredefinedFields, RowType, StateDataType, WhereType };
10
+ export { IStateHandler, StoreComponent, createStore };
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import { useEffect, useId, useState, createElement, Fragment, Component } from 'react'\nimport { ArgsType, IStateHandler, RowType, StateDataType, WhereType } from './types';\nimport Finder, { isOb } from './Finder';\nexport * from './types'\n\nexport class StoreComponent<P = {}, S = {}, SS = any> extends Component<P, S, SS> {\n constructor(props: P) {\n super(props)\n const R = this.render.bind(this) as any\n this.render = () => createElement(Fragment, null, createElement(R, null))\n }\n}\n\nconst _random = () => Date.now() + Math.floor(1000 + Math.random() * 9000)\nconst _uid = () => _random().toString(32).replace(\"-\", \"\").substring(0, 15)\nconst _row = <R>(row: Partial<RowType<R>>): RowType<R> => {\n if (!isOb(row)) throw new Error(`State row must be an object. given ${typeof row}: ${row}`);\n return { ...row, _id: row._id || _uid(), _observe: row._observe || _random() } as any\n}\n\nexport const createStore = <Row extends object, MetaProps extends object = {}>(rows?: Row[], meta?: MetaProps) => {\n\n const factory = {\n data: {\n state: [] as RowType<Row>[],\n meta: new Map<keyof MetaProps, any>()\n },\n dispatches: {\n state: new Map<string, Function>(),\n meta: new Map<string, Function>()\n },\n observe: {\n state: Math.random(),\n meta: Math.random()\n },\n cache: new Map<string, RowType<Row>[]>()\n }\n\n const fire = (type: StateDataType) => {\n factory.observe[type] = Math.random()\n factory.dispatches[type].forEach((cb, key) => {\n try {\n cb()\n } catch (_err) {\n factory.dispatches[type].delete(key)\n }\n })\n }\n\n const useHook = (type: StateDataType) => {\n const id = useId()\n const [, dispatch] = useState(0)\n useEffect(() => {\n factory.dispatches[type].set(id, () => dispatch(Math.random()))\n return () => {\n factory.dispatches[type].delete(id)\n }\n }, [])\n }\n\n for (let row of (rows || [])) {\n factory.data.state.push(_row(row))\n }\n for (let key in (meta || {} as MetaProps)) {\n factory.data.meta.set(key, (meta as any)[key])\n }\n\n abstract class StateHandler {\n\n static create(row: Row, freeze?: boolean): RowType<Row> {\n const r = _row<Row>(row as any)\n factory.data.state.push(r)\n if (!freeze) {\n fire(\"state\")\n }\n return r\n }\n\n static createMany(rows: Row[], freeze?: boolean): RowType<Row>[] {\n\n const rs = []\n for (let row of rows) {\n const r = _row<Row>(row)\n factory.data.state.push(r)\n rs.push(r)\n }\n if (!freeze) {\n fire(\"state\")\n }\n return rs\n }\n\n static update(row: Partial<Row>, where: WhereType<Row>, freeze?: boolean) {\n Finder(factory.data.state, where, {\n getRow: (r, index) => {\n factory.data.state[index] = _row<Row>({ ...r, ...row })\n }\n })\n\n if (!freeze) {\n fire(\"state\")\n }\n }\n\n static updateAll(row: Partial<Row>, freeze?: boolean) {\n\n for (let i = 0; i < factory.data.state.length; i++) {\n factory.data.state[i] = _row<Row>({ ...factory.data.state[i], ...row })\n }\n if (!freeze) {\n fire(\"state\")\n }\n }\n\n static delete(where: WhereType<Row>, freeze?: boolean) {\n const found = Finder(factory.data.state, where)\n factory.data.state = factory.data.state.filter((row) => !found.ids.includes(row._id))\n\n if (!freeze) {\n fire(\"state\")\n }\n }\n static move(oldIdx: number, newIdx: number, freeze?: boolean) {\n const row: any = factory.data.state[oldIdx]\n if (row) {\n factory.data.state.splice(oldIdx, 1)\n factory.data.state.splice(newIdx, 0, _row(row))\n if (!freeze) {\n fire(\"state\")\n }\n }\n }\n static clearAll(freeze?: boolean) {\n factory.data.state = []\n if (!freeze) {\n fire(\"state\")\n }\n }\n\n static getAll(args?: ArgsType<Row>) {\n try {\n if (!args?.freeze) {\n useHook(\"state\")\n }\n const cacheKey = factory.observe.state.toString() + (args?.skip || \"\") + (args?.take || \"\")\n const items = factory.cache.get(cacheKey)\n if (items?.length) {\n return items\n }\n const rows = Finder(factory.data.state, null, args).rows\n factory.cache.set(cacheKey, rows)\n return rows\n } catch (error) {\n return Finder(factory.data.state, null, args)\n }\n }\n\n static find(where: WhereType<Row>, args?: ArgsType<Row>): RowType<Row>[] {\n try {\n if (!args?.freeze) {\n useHook(\"state\")\n }\n const cacheKey = factory.observe.state.toString() + (args?.skip || \"\") + (args?.take || \"\") + JSON.stringify(where)\n const items = factory.cache.get(cacheKey)\n if (items?.length) {\n // return items\n }\n const rows = Finder(factory.data.state, where, args).rows\n factory.cache.set(cacheKey, rows)\n return rows\n } catch (error) {\n return Finder(factory.data.state, where, args).rows\n }\n }\n\n static findFirst(where: WhereType<Row>, freeze?: boolean) {\n return StateHandler.find(where, { freeze })[0]\n }\n\n static findById(_id: string, freeze?: boolean) {\n return StateHandler.findFirst({ _id }, freeze)\n }\n\n static setMeta<T extends keyof MetaProps>(key: T, value: MetaProps[T], freeze?: boolean) {\n factory.data.meta.set(key, value)\n if (!freeze) {\n fire(\"meta\")\n }\n }\n\n static getMeta<T extends keyof MetaProps>(key: T, freeze?: boolean): MetaProps[T] {\n try {\n if (!freeze) {\n useHook(\"meta\")\n }\n return factory.data.meta.get(key)\n } catch (error) {\n return factory.data.meta.get(key)\n }\n }\n\n static getAllMeta(freeze?: boolean): MetaProps {\n try {\n if (!freeze) {\n useHook(\"meta\")\n }\n return Object.fromEntries(factory.data.meta) as MetaProps\n } catch (error) {\n return Object.fromEntries(factory.data.meta) as MetaProps\n }\n }\n\n static deleteMeta<T extends keyof MetaProps>(key: T, freeze?: boolean) {\n factory.data.meta.delete(key)\n if (!freeze) {\n fire(\"meta\")\n }\n }\n\n static clearMeta(freeze?: boolean) {\n factory.data.meta.clear()\n if (!freeze) {\n fire(\"meta\")\n }\n }\n }\n\n return StateHandler as IStateHandler<Row, MetaProps>\n}\n\n"],"names":["Component","createElement","Fragment","isOb","useId","useState","useEffect","Finder"],"mappings":"+HAKM,MAAO,cAAyC,SAAQA,eAAmB,CAAA;AAC7E,IAAA,WAAA,CAAY,KAAQ,EAAA;QAChB,KAAK,CAAC,KAAK,CAAC;QACZ,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAQ;AACvC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAMC,mBAAa,CAACC,cAAQ,EAAE,IAAI,EAAED,mBAAa,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;;AAEhF;AAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;AAC1E,MAAM,IAAI,GAAG,MAAM,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;AAC3E,MAAM,IAAI,GAAG,CAAI,GAAwB,KAAgB;AACrD,IAAA,IAAI,CAACE,WAAI,CAAC,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,CAAsC,mCAAA,EAAA,OAAO,GAAG,CAAK,EAAA,EAAA,GAAG,CAAE,CAAA,CAAC;IAC3F,OAAO,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAK,GAAG,CAAE,EAAA,EAAA,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,IAAI,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,OAAO,EAAE,EAAA,CAAS;AACzF,CAAC;MAEY,WAAW,GAAG,CAAoD,IAAY,EAAE,IAAgB,KAAI;AAE7G,IAAA,MAAM,OAAO,GAAG;AACZ,QAAA,IAAI,EAAE;AACF,YAAA,KAAK,EAAE,EAAoB;YAC3B,IAAI,EAAE,IAAI,GAAG;AAChB,SAAA;AACD,QAAA,UAAU,EAAE;YACR,KAAK,EAAE,IAAI,GAAG,EAAoB;YAClC,IAAI,EAAE,IAAI,GAAG;AAChB,SAAA;AACD,QAAA,OAAO,EAAE;AACL,YAAA,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE;AACpB,YAAA,IAAI,EAAE,IAAI,CAAC,MAAM;AACpB,SAAA;QACD,KAAK,EAAE,IAAI,GAAG;KACjB;AAED,IAAA,MAAM,IAAI,GAAG,CAAC,IAAmB,KAAI;QACjC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE;AACrC,QAAA,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,GAAG,KAAI;YACzC,IAAI;AACA,gBAAA,EAAE,EAAE;AACP;AAAC,YAAA,OAAO,IAAI,EAAE;gBACX,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;AACvC;AACL,SAAC,CAAC;AACN,KAAC;AAED,IAAA,MAAM,OAAO,GAAG,CAAC,IAAmB,KAAI;AACpC,QAAA,MAAM,EAAE,GAAGC,WAAK,EAAE;QAClB,MAAM,GAAG,QAAQ,CAAC,GAAGC,cAAQ,CAAC,CAAC,CAAC;QAChCC,eAAS,CAAC,MAAK;YACX,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AAC/D,YAAA,OAAO,MAAK;gBACR,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;AACvC,aAAC;SACJ,EAAE,EAAE,CAAC;AACV,KAAC;IAED,KAAK,IAAI,GAAG,KAAK,IAAI,IAAI,EAAE,GAAG;AAC1B,QAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrC;IACD,KAAK,IAAI,GAAG,KAAK,IAAI,IAAI,EAAe,GAAG;AACvC,QAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAG,IAAY,CAAC,GAAG,CAAC,CAAC;AACjD;AAED,IAAA,MAAe,YAAY,CAAA;AAEvB,QAAA,OAAO,MAAM,CAAC,GAAQ,EAAE,MAAgB,EAAA;AACpC,YAAA,MAAM,CAAC,GAAG,IAAI,CAAM,GAAU,CAAC;YAC/B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,MAAM,EAAE;gBACT,IAAI,CAAC,OAAO,CAAC;AAChB;AACD,YAAA,OAAO,CAAC;;AAGZ,QAAA,OAAO,UAAU,CAAC,IAAW,EAAE,MAAgB,EAAA;YAE3C,MAAM,EAAE,GAAG,EAAE;AACb,YAAA,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;AAClB,gBAAA,MAAM,CAAC,GAAG,IAAI,CAAM,GAAG,CAAC;gBACxB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1B,gBAAA,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AACb;YACD,IAAI,CAAC,MAAM,EAAE;gBACT,IAAI,CAAC,OAAO,CAAC;AAChB;AACD,YAAA,OAAO,EAAE;;AAGb,QAAA,OAAO,MAAM,CAAC,GAAiB,EAAE,KAAqB,EAAE,MAAgB,EAAA;YACpEC,cAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE;AAC9B,gBAAA,MAAM,EAAE,CAAC,CAAC,EAAE,KAAK,KAAI;AACjB,oBAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAW,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,CAAC,CAAK,EAAA,GAAG,EAAG;;AAE9D,aAAA,CAAC;YAEF,IAAI,CAAC,MAAM,EAAE;gBACT,IAAI,CAAC,OAAO,CAAC;AAChB;;AAGL,QAAA,OAAO,SAAS,CAAC,GAAiB,EAAE,MAAgB,EAAA;AAEhD,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAChD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAW,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA,EAAK,GAAG,CAAA,CAAG;AAC1E;YACD,IAAI,CAAC,MAAM,EAAE;gBACT,IAAI,CAAC,OAAO,CAAC;AAChB;;AAGL,QAAA,OAAO,MAAM,CAAC,KAAqB,EAAE,MAAgB,EAAA;AACjD,YAAA,MAAM,KAAK,GAAGA,cAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC;AAC/C,YAAA,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAErF,IAAI,CAAC,MAAM,EAAE;gBACT,IAAI,CAAC,OAAO,CAAC;AAChB;;AAEL,QAAA,OAAO,IAAI,CAAC,MAAc,EAAE,MAAc,EAAE,MAAgB,EAAA;YACxD,MAAM,GAAG,GAAQ,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AAC3C,YAAA,IAAI,GAAG,EAAE;gBACL,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;AACpC,gBAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC/C,IAAI,CAAC,MAAM,EAAE;oBACT,IAAI,CAAC,OAAO,CAAC;AAChB;AACJ;;QAEL,OAAO,QAAQ,CAAC,MAAgB,EAAA;AAC5B,YAAA,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE;YACvB,IAAI,CAAC,MAAM,EAAE;gBACT,IAAI,CAAC,OAAO,CAAC;AAChB;;QAGL,OAAO,MAAM,CAAC,IAAoB,EAAA;YAC9B,IAAI;gBACA,IAAI,EAAC,IAAI,KAAJ,IAAA,IAAA,IAAI,uBAAJ,IAAI,CAAE,MAAM,CAAA,EAAE;oBACf,OAAO,CAAC,OAAO,CAAC;AACnB;AACD,gBAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAA,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAJ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,IAAI,CAAE,IAAI,KAAI,EAAE,CAAC,IAAI,CAAA,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,IAAI,KAAI,EAAE,CAAC;gBAC3F,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;AACzC,gBAAA,IAAI,KAAK,KAAL,IAAA,IAAA,KAAK,uBAAL,KAAK,CAAE,MAAM,EAAE;AACf,oBAAA,OAAO,KAAK;AACf;AACD,gBAAA,MAAM,IAAI,GAAGA,cAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI;gBACxD,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC;AACjC,gBAAA,OAAO,IAAI;AACd;AAAC,YAAA,OAAO,KAAK,EAAE;AACZ,gBAAA,OAAOA,cAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC;AAChD;;AAGL,QAAA,OAAO,IAAI,CAAC,KAAqB,EAAE,IAAoB,EAAA;YACnD,IAAI;gBACA,IAAI,EAAC,IAAI,KAAJ,IAAA,IAAA,IAAI,uBAAJ,IAAI,CAAE,MAAM,CAAA,EAAE;oBACf,OAAO,CAAC,OAAO,CAAC;AACnB;AACD,gBAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAA,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAJ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,IAAI,CAAE,IAAI,KAAI,EAAE,CAAC,IAAI,CAAA,IAAI,aAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,IAAI,KAAI,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;gBACnH,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;AACzC,gBAAA,IAAI,KAAK,KAAL,IAAA,IAAA,KAAK,uBAAL,KAAK,CAAE,MAAM,EAAE;;AAElB;AACD,gBAAA,MAAM,IAAI,GAAGA,cAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI;gBACzD,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC;AACjC,gBAAA,OAAO,IAAI;AACd;AAAC,YAAA,OAAO,KAAK,EAAE;AACZ,gBAAA,OAAOA,cAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI;AACtD;;AAGL,QAAA,OAAO,SAAS,CAAC,KAAqB,EAAE,MAAgB,EAAA;AACpD,YAAA,OAAO,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;;AAGlD,QAAA,OAAO,QAAQ,CAAC,GAAW,EAAE,MAAgB,EAAA;YACzC,OAAO,YAAY,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,EAAE,MAAM,CAAC;;AAGlD,QAAA,OAAO,OAAO,CAA4B,GAAM,EAAE,KAAmB,EAAE,MAAgB,EAAA;YACnF,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;YACjC,IAAI,CAAC,MAAM,EAAE;gBACT,IAAI,CAAC,MAAM,CAAC;AACf;;AAGL,QAAA,OAAO,OAAO,CAA4B,GAAM,EAAE,MAAgB,EAAA;YAC9D,IAAI;gBACA,IAAI,CAAC,MAAM,EAAE;oBACT,OAAO,CAAC,MAAM,CAAC;AAClB;gBACD,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AACpC;AAAC,YAAA,OAAO,KAAK,EAAE;gBACZ,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AACpC;;QAGL,OAAO,UAAU,CAAC,MAAgB,EAAA;YAC9B,IAAI;gBACA,IAAI,CAAC,MAAM,EAAE;oBACT,OAAO,CAAC,MAAM,CAAC;AAClB;gBACD,OAAO,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAc;AAC5D;AAAC,YAAA,OAAO,KAAK,EAAE;gBACZ,OAAO,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAc;AAC5D;;AAGL,QAAA,OAAO,UAAU,CAA4B,GAAM,EAAE,MAAgB,EAAA;YACjE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;YAC7B,IAAI,CAAC,MAAM,EAAE;gBACT,IAAI,CAAC,MAAM,CAAC;AACf;;QAGL,OAAO,SAAS,CAAC,MAAgB,EAAA;AAC7B,YAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACzB,IAAI,CAAC,MAAM,EAAE;gBACT,IAAI,CAAC,MAAM,CAAC;AACf;;AAER;AAED,IAAA,OAAO,YAA6C;AACxD"}
1
+ {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import { useEffect, useId, useState, createElement, Fragment, Component } from 'react'\nimport { ArgsType, IStateHandler, RowType, StateDataType, WhereType } from './types';\nimport Finder, { isOb } from './Finder';\nexport * from './types'\n\nexport class StoreComponent<P = {}, S = {}, SS = any> extends Component<P, S, SS> {\n constructor(props: P) {\n super(props)\n const R = this.render.bind(this) as any\n this.render = () => createElement(Fragment, null, createElement(R, null))\n }\n}\n\nconst _random = () => Date.now() + Math.floor(1000 + Math.random() * 9000)\nconst _uid = () => _random().toString(32).replace(\"-\", \"\").substring(0, 15)\nconst _row = <R>(row: Partial<RowType<R>>): RowType<R> => {\n if (!isOb(row)) throw new Error(`State row must be an object. given ${typeof row}: ${row}`);\n return { ...row, _id: row._id || _uid(), _observe: row._observe || _random() } as any\n}\n\nexport const createStore = <Row extends object, MetaProps extends object = {}>(rows?: Row[], meta?: MetaProps) => {\n\n const factory = {\n data: {\n state: [] as RowType<Row>[],\n meta: new Map<keyof MetaProps, any>()\n },\n dispatches: {\n state: new Map<string, Function>(),\n meta: new Map<string, Function>()\n },\n observe: {\n state: Math.random(),\n meta: Math.random()\n },\n cache: new Map<string, RowType<Row>[]>()\n }\n\n const fire = (type: StateDataType) => {\n factory.observe[type] = Math.random()\n factory.dispatches[type].forEach((cb, key) => {\n try {\n cb()\n } catch (_err) {\n factory.dispatches[type].delete(key)\n }\n })\n }\n\n const useHook = (type: StateDataType) => {\n const id = useId()\n const [, dispatch] = useState(0)\n useEffect(() => {\n factory.dispatches[type].set(id, () => dispatch(Math.random()))\n return () => {\n factory.dispatches[type].delete(id)\n }\n }, [])\n }\n\n for (let row of (rows || [])) {\n factory.data.state.push(_row(row))\n }\n for (let key in (meta || {} as MetaProps)) {\n factory.data.meta.set(key, (meta as any)[key])\n }\n\n abstract class StateHandler {\n\n static create(row: Row, freeze?: boolean): RowType<Row> {\n const r = _row<Row>(row as any)\n factory.data.state.push(r)\n if (!freeze) {\n fire(\"state\")\n }\n return r\n }\n\n static createMany(rows: Row[], freeze?: boolean): RowType<Row>[] {\n\n const rs = []\n for (let row of rows) {\n const r = _row<Row>(row)\n factory.data.state.push(r)\n rs.push(r)\n }\n if (!freeze) {\n fire(\"state\")\n }\n return rs\n }\n\n static update(row: Partial<Row>, where: WhereType<Row>, freeze?: boolean) {\n Finder(factory.data.state, where, {\n getRow: (r, index) => {\n factory.data.state[index] = _row<Row>({ ...r, ...row })\n }\n })\n\n if (!freeze) {\n fire(\"state\")\n }\n }\n\n static updateAll(row: Partial<Row>, freeze?: boolean) {\n\n for (let i = 0; i < factory.data.state.length; i++) {\n factory.data.state[i] = _row<Row>({ ...factory.data.state[i], ...row })\n }\n if (!freeze) {\n fire(\"state\")\n }\n }\n\n static delete(where: WhereType<Row>, freeze?: boolean) {\n const found = Finder(factory.data.state, where)\n factory.data.state = factory.data.state.filter((row) => !found.ids.includes(row._id))\n\n if (!freeze) {\n fire(\"state\")\n }\n }\n static move(oldIdx: number, newIdx: number, freeze?: boolean) {\n const row: any = factory.data.state[oldIdx]\n if (row) {\n factory.data.state.splice(oldIdx, 1)\n factory.data.state.splice(newIdx, 0, _row(row))\n if (!freeze) {\n fire(\"state\")\n }\n }\n }\n static clearAll(freeze?: boolean) {\n factory.data.state = []\n if (!freeze) {\n fire(\"state\")\n }\n }\n\n static getAll(args?: ArgsType<Row>) {\n try {\n if (!args?.freeze) {\n useHook(\"state\")\n }\n const cacheKey = factory.observe.state.toString() + (args?.skip || \"\") + (args?.take || \"\")\n const items = factory.cache.get(cacheKey)\n if (items?.length) {\n return items\n }\n const rows = Finder(factory.data.state, null, args).rows\n factory.cache.set(cacheKey, rows)\n return rows\n } catch (error) {\n return Finder(factory.data.state, null, args)\n }\n }\n\n static find(where: WhereType<Row>, args?: ArgsType<Row>): RowType<Row>[] {\n try {\n if (!args?.freeze) {\n useHook(\"state\")\n }\n const cacheKey = factory.observe.state.toString() + (args?.skip || \"\") + (args?.take || \"\") + JSON.stringify(where)\n const items = factory.cache.get(cacheKey)\n if (items?.length) {\n // return items\n }\n const rows = Finder(factory.data.state, where, args).rows\n factory.cache.set(cacheKey, rows)\n return rows\n } catch (error) {\n return Finder(factory.data.state, where, args).rows\n }\n }\n\n static findFirst(where: WhereType<Row>, freeze?: boolean) {\n return StateHandler.find(where, { freeze })[0]\n }\n\n static findById(_id: string, freeze?: boolean) {\n return StateHandler.findFirst({ _id }, freeze)\n }\n\n static setMeta<T extends keyof MetaProps>(key: T, value: MetaProps[T], freeze?: boolean) {\n factory.data.meta.set(key, value)\n if (!freeze) {\n fire(\"meta\")\n }\n }\n\n static getMeta<T extends keyof MetaProps>(key: T, freeze?: boolean): MetaProps[T] {\n try {\n if (!freeze) {\n useHook(\"meta\")\n }\n return factory.data.meta.get(key)\n } catch (error) {\n return factory.data.meta.get(key)\n }\n }\n\n static getAllMeta(freeze?: boolean): MetaProps {\n try {\n if (!freeze) {\n useHook(\"meta\")\n }\n return Object.fromEntries(factory.data.meta) as MetaProps\n } catch (error) {\n return Object.fromEntries(factory.data.meta) as MetaProps\n }\n }\n\n static deleteMeta<T extends keyof MetaProps>(key: T, freeze?: boolean) {\n factory.data.meta.delete(key)\n if (!freeze) {\n fire(\"meta\")\n }\n }\n\n static clearMeta(freeze?: boolean) {\n factory.data.meta.clear()\n if (!freeze) {\n fire(\"meta\")\n }\n }\n }\n\n return StateHandler as IStateHandler<Row, MetaProps>\n}\n\n"],"names":["Component","createElement","Fragment","isOb","useId","useState","useEffect","Finder"],"mappings":"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"}
package/index.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../src/index.ts"],"sourcesContent":["import { useEffect, useId, useState, createElement, Fragment, Component } from 'react'\nimport { ArgsType, IStateHandler, RowType, StateDataType, WhereType } from './types';\nimport Finder, { isOb } from './Finder';\nexport * from './types'\n\nexport class StoreComponent<P = {}, S = {}, SS = any> extends Component<P, S, SS> {\n constructor(props: P) {\n super(props)\n const R = this.render.bind(this) as any\n this.render = () => createElement(Fragment, null, createElement(R, null))\n }\n}\n\nconst _random = () => Date.now() + Math.floor(1000 + Math.random() * 9000)\nconst _uid = () => _random().toString(32).replace(\"-\", \"\").substring(0, 15)\nconst _row = <R>(row: Partial<RowType<R>>): RowType<R> => {\n if (!isOb(row)) throw new Error(`State row must be an object. given ${typeof row}: ${row}`);\n return { ...row, _id: row._id || _uid(), _observe: row._observe || _random() } as any\n}\n\nexport const createStore = <Row extends object, MetaProps extends object = {}>(rows?: Row[], meta?: MetaProps) => {\n\n const factory = {\n data: {\n state: [] as RowType<Row>[],\n meta: new Map<keyof MetaProps, any>()\n },\n dispatches: {\n state: new Map<string, Function>(),\n meta: new Map<string, Function>()\n },\n observe: {\n state: Math.random(),\n meta: Math.random()\n },\n cache: new Map<string, RowType<Row>[]>()\n }\n\n const fire = (type: StateDataType) => {\n factory.observe[type] = Math.random()\n factory.dispatches[type].forEach((cb, key) => {\n try {\n cb()\n } catch (_err) {\n factory.dispatches[type].delete(key)\n }\n })\n }\n\n const useHook = (type: StateDataType) => {\n const id = useId()\n const [, dispatch] = useState(0)\n useEffect(() => {\n factory.dispatches[type].set(id, () => dispatch(Math.random()))\n return () => {\n factory.dispatches[type].delete(id)\n }\n }, [])\n }\n\n for (let row of (rows || [])) {\n factory.data.state.push(_row(row))\n }\n for (let key in (meta || {} as MetaProps)) {\n factory.data.meta.set(key, (meta as any)[key])\n }\n\n abstract class StateHandler {\n\n static create(row: Row, freeze?: boolean): RowType<Row> {\n const r = _row<Row>(row as any)\n factory.data.state.push(r)\n if (!freeze) {\n fire(\"state\")\n }\n return r\n }\n\n static createMany(rows: Row[], freeze?: boolean): RowType<Row>[] {\n\n const rs = []\n for (let row of rows) {\n const r = _row<Row>(row)\n factory.data.state.push(r)\n rs.push(r)\n }\n if (!freeze) {\n fire(\"state\")\n }\n return rs\n }\n\n static update(row: Partial<Row>, where: WhereType<Row>, freeze?: boolean) {\n Finder(factory.data.state, where, {\n getRow: (r, index) => {\n factory.data.state[index] = _row<Row>({ ...r, ...row })\n }\n })\n\n if (!freeze) {\n fire(\"state\")\n }\n }\n\n static updateAll(row: Partial<Row>, freeze?: boolean) {\n\n for (let i = 0; i < factory.data.state.length; i++) {\n factory.data.state[i] = _row<Row>({ ...factory.data.state[i], ...row })\n }\n if (!freeze) {\n fire(\"state\")\n }\n }\n\n static delete(where: WhereType<Row>, freeze?: boolean) {\n const found = Finder(factory.data.state, where)\n factory.data.state = factory.data.state.filter((row) => !found.ids.includes(row._id))\n\n if (!freeze) {\n fire(\"state\")\n }\n }\n static move(oldIdx: number, newIdx: number, freeze?: boolean) {\n const row: any = factory.data.state[oldIdx]\n if (row) {\n factory.data.state.splice(oldIdx, 1)\n factory.data.state.splice(newIdx, 0, _row(row))\n if (!freeze) {\n fire(\"state\")\n }\n }\n }\n static clearAll(freeze?: boolean) {\n factory.data.state = []\n if (!freeze) {\n fire(\"state\")\n }\n }\n\n static getAll(args?: ArgsType<Row>) {\n try {\n if (!args?.freeze) {\n useHook(\"state\")\n }\n const cacheKey = factory.observe.state.toString() + (args?.skip || \"\") + (args?.take || \"\")\n const items = factory.cache.get(cacheKey)\n if (items?.length) {\n return items\n }\n const rows = Finder(factory.data.state, null, args).rows\n factory.cache.set(cacheKey, rows)\n return rows\n } catch (error) {\n return Finder(factory.data.state, null, args)\n }\n }\n\n static find(where: WhereType<Row>, args?: ArgsType<Row>): RowType<Row>[] {\n try {\n if (!args?.freeze) {\n useHook(\"state\")\n }\n const cacheKey = factory.observe.state.toString() + (args?.skip || \"\") + (args?.take || \"\") + JSON.stringify(where)\n const items = factory.cache.get(cacheKey)\n if (items?.length) {\n // return items\n }\n const rows = Finder(factory.data.state, where, args).rows\n factory.cache.set(cacheKey, rows)\n return rows\n } catch (error) {\n return Finder(factory.data.state, where, args).rows\n }\n }\n\n static findFirst(where: WhereType<Row>, freeze?: boolean) {\n return StateHandler.find(where, { freeze })[0]\n }\n\n static findById(_id: string, freeze?: boolean) {\n return StateHandler.findFirst({ _id }, freeze)\n }\n\n static setMeta<T extends keyof MetaProps>(key: T, value: MetaProps[T], freeze?: boolean) {\n factory.data.meta.set(key, value)\n if (!freeze) {\n fire(\"meta\")\n }\n }\n\n static getMeta<T extends keyof MetaProps>(key: T, freeze?: boolean): MetaProps[T] {\n try {\n if (!freeze) {\n useHook(\"meta\")\n }\n return factory.data.meta.get(key)\n } catch (error) {\n return factory.data.meta.get(key)\n }\n }\n\n static getAllMeta(freeze?: boolean): MetaProps {\n try {\n if (!freeze) {\n useHook(\"meta\")\n }\n return Object.fromEntries(factory.data.meta) as MetaProps\n } catch (error) {\n return Object.fromEntries(factory.data.meta) as MetaProps\n }\n }\n\n static deleteMeta<T extends keyof MetaProps>(key: T, freeze?: boolean) {\n factory.data.meta.delete(key)\n if (!freeze) {\n fire(\"meta\")\n }\n }\n\n static clearMeta(freeze?: boolean) {\n factory.data.meta.clear()\n if (!freeze) {\n fire(\"meta\")\n }\n }\n }\n\n return StateHandler as IStateHandler<Row, MetaProps>\n}\n\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../src/index.ts"],"sourcesContent":["import { useEffect, useId, useState, createElement, Fragment, Component } from 'react'\nimport { ArgsType, IStateHandler, RowType, StateDataType, WhereType } from './types';\nimport Finder, { isOb } from './Finder';\nexport * from './types'\n\nexport class StoreComponent<P = {}, S = {}, SS = any> extends Component<P, S, SS> {\n constructor(props: P) {\n super(props)\n const R = this.render.bind(this) as any\n this.render = () => createElement(Fragment, null, createElement(R, null))\n }\n}\n\nconst _random = () => Date.now() + Math.floor(1000 + Math.random() * 9000)\nconst _uid = () => _random().toString(32).replace(\"-\", \"\").substring(0, 15)\nconst _row = <R>(row: Partial<RowType<R>>): RowType<R> => {\n if (!isOb(row)) throw new Error(`State row must be an object. given ${typeof row}: ${row}`);\n return { ...row, _id: row._id || _uid(), _observe: row._observe || _random() } as any\n}\n\nexport const createStore = <Row extends object, MetaProps extends object = {}>(rows?: Row[], meta?: MetaProps) => {\n\n const factory = {\n data: {\n state: [] as RowType<Row>[],\n meta: new Map<keyof MetaProps, any>()\n },\n dispatches: {\n state: new Map<string, Function>(),\n meta: new Map<string, Function>()\n },\n observe: {\n state: Math.random(),\n meta: Math.random()\n },\n cache: new Map<string, RowType<Row>[]>()\n }\n\n const fire = (type: StateDataType) => {\n factory.observe[type] = Math.random()\n factory.dispatches[type].forEach((cb, key) => {\n try {\n cb()\n } catch (_err) {\n factory.dispatches[type].delete(key)\n }\n })\n }\n\n const useHook = (type: StateDataType) => {\n const id = useId()\n const [, dispatch] = useState(0)\n useEffect(() => {\n factory.dispatches[type].set(id, () => dispatch(Math.random()))\n return () => {\n factory.dispatches[type].delete(id)\n }\n }, [])\n }\n\n for (let row of (rows || [])) {\n factory.data.state.push(_row(row))\n }\n for (let key in (meta || {} as MetaProps)) {\n factory.data.meta.set(key, (meta as any)[key])\n }\n\n abstract class StateHandler {\n\n static create(row: Row, freeze?: boolean): RowType<Row> {\n const r = _row<Row>(row as any)\n factory.data.state.push(r)\n if (!freeze) {\n fire(\"state\")\n }\n return r\n }\n\n static createMany(rows: Row[], freeze?: boolean): RowType<Row>[] {\n\n const rs = []\n for (let row of rows) {\n const r = _row<Row>(row)\n factory.data.state.push(r)\n rs.push(r)\n }\n if (!freeze) {\n fire(\"state\")\n }\n return rs\n }\n\n static update(row: Partial<Row>, where: WhereType<Row>, freeze?: boolean) {\n Finder(factory.data.state, where, {\n getRow: (r, index) => {\n factory.data.state[index] = _row<Row>({ ...r, ...row })\n }\n })\n\n if (!freeze) {\n fire(\"state\")\n }\n }\n\n static updateAll(row: Partial<Row>, freeze?: boolean) {\n\n for (let i = 0; i < factory.data.state.length; i++) {\n factory.data.state[i] = _row<Row>({ ...factory.data.state[i], ...row })\n }\n if (!freeze) {\n fire(\"state\")\n }\n }\n\n static delete(where: WhereType<Row>, freeze?: boolean) {\n const found = Finder(factory.data.state, where)\n factory.data.state = factory.data.state.filter((row) => !found.ids.includes(row._id))\n\n if (!freeze) {\n fire(\"state\")\n }\n }\n static move(oldIdx: number, newIdx: number, freeze?: boolean) {\n const row: any = factory.data.state[oldIdx]\n if (row) {\n factory.data.state.splice(oldIdx, 1)\n factory.data.state.splice(newIdx, 0, _row(row))\n if (!freeze) {\n fire(\"state\")\n }\n }\n }\n static clearAll(freeze?: boolean) {\n factory.data.state = []\n if (!freeze) {\n fire(\"state\")\n }\n }\n\n static getAll(args?: ArgsType<Row>) {\n try {\n if (!args?.freeze) {\n useHook(\"state\")\n }\n const cacheKey = factory.observe.state.toString() + (args?.skip || \"\") + (args?.take || \"\")\n const items = factory.cache.get(cacheKey)\n if (items?.length) {\n return items\n }\n const rows = Finder(factory.data.state, null, args).rows\n factory.cache.set(cacheKey, rows)\n return rows\n } catch (error) {\n return Finder(factory.data.state, null, args)\n }\n }\n\n static find(where: WhereType<Row>, args?: ArgsType<Row>): RowType<Row>[] {\n try {\n if (!args?.freeze) {\n useHook(\"state\")\n }\n const cacheKey = factory.observe.state.toString() + (args?.skip || \"\") + (args?.take || \"\") + JSON.stringify(where)\n const items = factory.cache.get(cacheKey)\n if (items?.length) {\n // return items\n }\n const rows = Finder(factory.data.state, where, args).rows\n factory.cache.set(cacheKey, rows)\n return rows\n } catch (error) {\n return Finder(factory.data.state, where, args).rows\n }\n }\n\n static findFirst(where: WhereType<Row>, freeze?: boolean) {\n return StateHandler.find(where, { freeze })[0]\n }\n\n static findById(_id: string, freeze?: boolean) {\n return StateHandler.findFirst({ _id }, freeze)\n }\n\n static setMeta<T extends keyof MetaProps>(key: T, value: MetaProps[T], freeze?: boolean) {\n factory.data.meta.set(key, value)\n if (!freeze) {\n fire(\"meta\")\n }\n }\n\n static getMeta<T extends keyof MetaProps>(key: T, freeze?: boolean): MetaProps[T] {\n try {\n if (!freeze) {\n useHook(\"meta\")\n }\n return factory.data.meta.get(key)\n } catch (error) {\n return factory.data.meta.get(key)\n }\n }\n\n static getAllMeta(freeze?: boolean): MetaProps {\n try {\n if (!freeze) {\n useHook(\"meta\")\n }\n return Object.fromEntries(factory.data.meta) as MetaProps\n } catch (error) {\n return Object.fromEntries(factory.data.meta) as MetaProps\n }\n }\n\n static deleteMeta<T extends keyof MetaProps>(key: T, freeze?: boolean) {\n factory.data.meta.delete(key)\n if (!freeze) {\n fire(\"meta\")\n }\n }\n\n static clearMeta(freeze?: boolean) {\n factory.data.meta.clear()\n if (!freeze) {\n fire(\"meta\")\n }\n }\n }\n\n return StateHandler as IStateHandler<Row, MetaProps>\n}\n\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-rock",
3
- "version": "3.2.1",
3
+ "version": "3.2.2",
4
4
  "author": "Naxrul Ahmed",
5
5
  "description": "React-Rock is a modern, lightweight state management library designed to simplify handling global state in React applications. With a minimal API and powerful features like freezing data updates for optimized re-renders, React-Rock allows you to manage state more efficiently while ensuring your app remains fast and responsive.",
6
6
  "main": "./index.js",
@@ -20,7 +20,7 @@
20
20
  "devDependencies": {
21
21
  "@types/react": "^19.0.2",
22
22
  "@types/react-dom": "^19.0.2",
23
- "makepack": "^1.7.6",
23
+ "makepack": "^1.7.7",
24
24
  "react": "^19.0.0",
25
25
  "react-dom": "^19.0.0",
26
26
  "typescript": "^4.4.2"
package/types.d.ts ADDED
@@ -0,0 +1,53 @@
1
+ type StateDataType = "state" | "meta";
2
+ type RowPredefinedFields = {
3
+ _id: string;
4
+ _index: number;
5
+ _observe: number;
6
+ };
7
+ type FinderArgsType<Row> = {
8
+ getRow?: (row: Row, index: number) => Row | void;
9
+ skip?: number;
10
+ take?: number;
11
+ freeze?: boolean;
12
+ };
13
+ type RowType<Row> = Row & RowPredefinedFields;
14
+ type WhereType<Row> = QueryType<RowType<Row>>;
15
+ type ArgsType<Row> = FinderArgsType<RowType<Row>>;
16
+ type GetRowCallback<Row> = (row: Row, index: number) => Row | void;
17
+ interface IStateHandler<Row, MetaProps> {
18
+ create(row: Row, freeze?: boolean): RowType<Row>;
19
+ createMany(rows: Row[], freeze?: boolean): void;
20
+ update(row: Partial<Row>, where: WhereType<Row>, freeze?: boolean): void;
21
+ updateAll(row: Partial<Row>, freeze?: boolean): void;
22
+ delete(where: WhereType<Row>, freeze?: boolean): void;
23
+ clearAll(freeze?: boolean): void;
24
+ move(oldIdx: number, newIdx: number, freeze?: boolean): void;
25
+ getAll(args?: {
26
+ freeze?: boolean;
27
+ getRow?: GetRowCallback<Row>;
28
+ }): RowType<Row>[];
29
+ find(where: WhereType<Row>, args?: ArgsType<Row>): RowType<Row>[];
30
+ findFirst(where: WhereType<Row>, freeze?: boolean): RowType<Row>;
31
+ findById(_id: string, freeze?: boolean): RowType<Row>;
32
+ setMeta<T extends keyof MetaProps>(key: T, value: MetaProps[T], freeze?: boolean): void;
33
+ getMeta<T extends keyof MetaProps>(key: T, freeze?: boolean): MetaProps[T];
34
+ getAllMeta(freeze?: boolean): MetaProps;
35
+ deleteMeta<T extends keyof MetaProps>(key: T, freeze?: boolean): void;
36
+ clearMeta(freeze?: boolean): void;
37
+ }
38
+ type QueryValueType = {
39
+ contain?: string | number | boolean | null | undefined;
40
+ startWith?: string | number;
41
+ endWith?: string | number;
42
+ equalWith?: string | number | boolean | null | undefined;
43
+ notEqualWith?: string | number | boolean | null | undefined;
44
+ gt?: number;
45
+ lt?: number;
46
+ gte?: number;
47
+ lte?: number;
48
+ };
49
+ type QueryType<Row = {}> = {
50
+ [key in keyof Row]?: string | number | boolean | null | undefined | QueryValueType;
51
+ };
52
+
53
+ export type { ArgsType, FinderArgsType, GetRowCallback, IStateHandler, QueryType, QueryValueType, RowPredefinedFields, RowType, StateDataType, WhereType };