react-rock 3.2.12 → 3.2.13
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/Store.cjs +29 -16
- package/Store.cjs.map +1 -1
- package/Store.d.ts +6 -6
- package/Store.js +29 -16
- package/Store.js.map +1 -1
- package/package.json +2 -2
package/Store.cjs
CHANGED
|
@@ -20,8 +20,10 @@ class Store {
|
|
|
20
20
|
const id = observeId || hid;
|
|
21
21
|
const [, dispatch] = ustate(0);
|
|
22
22
|
this._hooks.set(id, () => dispatch(Math.random()));
|
|
23
|
-
ueffect(() =>
|
|
24
|
-
|
|
23
|
+
ueffect(() => {
|
|
24
|
+
return () => {
|
|
25
|
+
this._hooks.delete(id);
|
|
26
|
+
};
|
|
25
27
|
}, []);
|
|
26
28
|
}
|
|
27
29
|
catch (error) { }
|
|
@@ -55,12 +57,16 @@ class Store {
|
|
|
55
57
|
});
|
|
56
58
|
}, 0);
|
|
57
59
|
}
|
|
58
|
-
rows(
|
|
59
|
-
|
|
60
|
+
rows(disableObservation = false) {
|
|
61
|
+
if (!disableObservation) {
|
|
62
|
+
this.observe();
|
|
63
|
+
}
|
|
60
64
|
return this._rows;
|
|
61
65
|
}
|
|
62
|
-
metas(
|
|
63
|
-
|
|
66
|
+
metas(disableObservation = false) {
|
|
67
|
+
if (!disableObservation) {
|
|
68
|
+
this.observe();
|
|
69
|
+
}
|
|
64
70
|
return this._meta;
|
|
65
71
|
}
|
|
66
72
|
createMany(args) {
|
|
@@ -108,7 +114,7 @@ class Store {
|
|
|
108
114
|
const schema = this._row_schema[key];
|
|
109
115
|
r[key] = schema.parse(data[key]);
|
|
110
116
|
}
|
|
111
|
-
const rows = this.find({ where });
|
|
117
|
+
const rows = this.find({ disableObservation: true, where });
|
|
112
118
|
if (rows.length > 0) {
|
|
113
119
|
for (let index = 0; index < rows.length; index++) {
|
|
114
120
|
const _row = rows[index];
|
|
@@ -239,22 +245,29 @@ class Store {
|
|
|
239
245
|
}
|
|
240
246
|
return true;
|
|
241
247
|
}
|
|
242
|
-
|
|
243
|
-
setMeta(key, value, observe = true) {
|
|
248
|
+
setMeta(key, value, disableObservation = false) {
|
|
244
249
|
this._meta.set(key, this._meta_schema ? this._meta_schema[key].parse(value) : value);
|
|
245
|
-
|
|
250
|
+
if (!disableObservation) {
|
|
251
|
+
this.dispatch();
|
|
252
|
+
}
|
|
246
253
|
}
|
|
247
|
-
getMeta(key,
|
|
248
|
-
|
|
254
|
+
getMeta(key, disableObservation = false) {
|
|
255
|
+
if (!disableObservation) {
|
|
256
|
+
this.observe();
|
|
257
|
+
}
|
|
249
258
|
return this._meta.get(key);
|
|
250
259
|
}
|
|
251
|
-
deleteMeta(key,
|
|
260
|
+
deleteMeta(key, disableObservation = false) {
|
|
252
261
|
this._meta.delete(key);
|
|
253
|
-
|
|
262
|
+
if (!disableObservation) {
|
|
263
|
+
this.dispatch();
|
|
264
|
+
}
|
|
254
265
|
}
|
|
255
|
-
clearMeta(
|
|
266
|
+
clearMeta(disableObservation = false) {
|
|
256
267
|
this._meta.clear();
|
|
257
|
-
|
|
268
|
+
if (!disableObservation) {
|
|
269
|
+
this.dispatch();
|
|
270
|
+
}
|
|
258
271
|
}
|
|
259
272
|
}
|
|
260
273
|
|
package/Store.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Store.cjs","sources":["../src/Store.ts"],"sourcesContent":["\"use client\"\r\nimport { useEffect, useId, useState } from \"react\"\r\nimport { CreateArgs, CreateManyArgs, DeleteArgs, FindArgs, MakeMetaType, MakeRowType, MetaSchema, MoveArgs, RowSchema, UpdateArgs, WhereType } from \"./types\"\r\nimport { Infer, xv } from \"xanv\"\r\n\r\nconst uid = useId as any\r\nconst ustate = useState as any\r\nconst ueffect = useEffect as any\r\n\r\n\r\nclass Store<RS extends RowSchema, MS extends MetaSchema | undefined = undefined> {\r\n private _rows: MakeRowType<RS>[] = []\r\n private _meta: Map<keyof MakeMetaType<MS>, MakeMetaType<MS>[keyof MakeMetaType<MS>]> = new Map()\r\n private _hooks: Map<string, Function> = new Map()\r\n private _timer: any = null\r\n private _row_schema: RS\r\n private _meta_schema?: MS\r\n private _last_id = 0\r\n\r\n constructor(rowSchema: RS, metaSchema?: MS) {\r\n this._row_schema = {\r\n ...rowSchema,\r\n rid: xv.number(),\r\n vid: xv.number().default(() => Math.round((Math.random() + Math.random()) * 9999999999)),\r\n }\r\n this._meta_schema = metaSchema\r\n }\r\n\r\n private observe = (observeId?: string) => {\r\n try {\r\n const hid = uid()\r\n const id = observeId || hid\r\n const [, dispatch] = ustate(0)\r\n this._hooks.set(id, () => dispatch(Math.random()))\r\n ueffect(() => () => {\r\n this._hooks.delete(id)\r\n }, [])\r\n } catch (error) { }\r\n }\r\n\r\n dispatch(observeIdOrCallbabck?: string | ((cb: Function, key: string) => void)) {\r\n clearTimeout(this._timer)\r\n const isFn = typeof observeIdOrCallbabck === \"function\"\r\n this._timer = setTimeout(() => {\r\n this._hooks.forEach((cb, key) => {\r\n try {\r\n if (isFn) {\r\n observeIdOrCallbabck(cb, key)\r\n } else {\r\n if (observeIdOrCallbabck) {\r\n if (key === observeIdOrCallbabck) {\r\n cb()\r\n }\r\n } else {\r\n cb()\r\n }\r\n }\r\n } catch (_err) {\r\n this._hooks.delete(key)\r\n }\r\n })\r\n }, 0)\r\n }\r\n\r\n rows(observe = true) {\r\n observe && this.observe()\r\n return this._rows\r\n }\r\n\r\n metas(observe = true) {\r\n observe && this.observe()\r\n return this._meta\r\n }\r\n\r\n createMany(args: CreateManyArgs<RS>): MakeRowType<RS>[] {\r\n const { data, disableObservation, observeId } = args\r\n const res = []\r\n for (let row of data) {\r\n const created = this.create({\r\n data: row,\r\n disableObservation: true\r\n })\r\n res.push(created)\r\n }\r\n if (!disableObservation) {\r\n this.dispatch(observeId)\r\n }\r\n return res\r\n }\r\n // Row Methods\r\n create(args: CreateArgs<RS>): MakeRowType<RS> {\r\n const { data, disableObservation, observeId } = args\r\n // validate and create row\r\n let r: any = {} as MakeRowType<RS>\r\n for (let key in this._row_schema) {\r\n if (key === \"rid\" || key === \"vid\") continue;\r\n const schema = this._row_schema[key]\r\n r[key] = schema.parse(data[key])\r\n }\r\n\r\n this._last_id = this._last_id + 1;\r\n const _row: MakeRowType<RS> = {\r\n ...r,\r\n rid: this._last_id,\r\n vid: this._row_schema.vid.parse(undefined),\r\n }\r\n\r\n this._rows.push(_row)\r\n if (!disableObservation) {\r\n this.dispatch(observeId)\r\n }\r\n return _row\r\n }\r\n\r\n\r\n // update\r\n update(args: UpdateArgs<RS>): MakeRowType<RS>[] | null {\r\n const { data, where, disableObservation, observeId } = args\r\n // validate row\r\n let r: any = {} as MakeRowType<RS>\r\n for (let key in data) {\r\n if (key === \"rid\" || key === 'vid') continue;\r\n const schema = this._row_schema[key]\r\n r[key] = schema.parse(data[key])\r\n }\r\n\r\n const rows = this.find({ where })\r\n if (rows.length > 0) {\r\n for (let index = 0; index < rows.length; index++) {\r\n const _row = rows[index];\r\n const rid = _row.rid\r\n rows[index] = {\r\n ..._row,\r\n ...r,\r\n rid,\r\n vid: this._row_schema.vid.parse(undefined),\r\n }\r\n const rowIndex = this._rows.findIndex(r => r.rid === rid)\r\n this._rows[rowIndex] = rows[index]\r\n }\r\n if (!disableObservation) {\r\n this.dispatch(observeId)\r\n }\r\n }\r\n return this.find({ where, disableObservation: true })\r\n }\r\n\r\n // delete\r\n delete(args: DeleteArgs<RS>): number {\r\n const { where, disableObservation, observeId } = args\r\n const rows = this.find({\r\n where,\r\n disableObservation: true\r\n })\r\n\r\n let deletedCount = 0\r\n if (rows.length > 0) {\r\n this._rows = this._rows.filter(r => !rows.find(dr => dr.rid === r.rid))\r\n deletedCount = rows.length\r\n if (!disableObservation) {\r\n this.dispatch(observeId)\r\n }\r\n }\r\n return deletedCount\r\n }\r\n\r\n // find\r\n find(args: FindArgs<RS>): MakeRowType<RS>[] {\r\n const { where, disableObservation, observeId } = args;\r\n\r\n if (!disableObservation) {\r\n this.observe(observeId);\r\n }\r\n\r\n const rows: MakeRowType<RS>[] = [];\r\n\r\n for (const row of this._rows) {\r\n let match = true;\r\n\r\n for (const wcol in where) {\r\n const condition = where[wcol];\r\n const rvalue = row[wcol];\r\n\r\n if (typeof condition === \"object\" && condition !== null) {\r\n\r\n if (condition.contain !== undefined) {\r\n if (typeof rvalue !== \"string\" || !rvalue.includes(condition.contain as any)) {\r\n match = false;\r\n break;\r\n }\r\n }\r\n\r\n if (condition.startWith !== undefined) {\r\n if (typeof rvalue !== \"string\" || !rvalue.startsWith(condition.startWith as any)) {\r\n match = false;\r\n break;\r\n }\r\n }\r\n\r\n if (condition.endWith !== undefined) {\r\n if (typeof rvalue !== \"string\" || !rvalue.endsWith(condition.endWith as any)) {\r\n match = false;\r\n break;\r\n }\r\n }\r\n\r\n if (condition.equalWith !== undefined && rvalue !== condition.equalWith) {\r\n match = false;\r\n break;\r\n }\r\n\r\n if (condition.notEqualWith !== undefined && rvalue === condition.notEqualWith) {\r\n match = false;\r\n break;\r\n }\r\n\r\n if (condition.gt !== undefined) {\r\n if (typeof rvalue !== \"number\" || !(rvalue > condition.gt)) {\r\n match = false;\r\n break;\r\n }\r\n }\r\n\r\n if (condition.lt !== undefined) {\r\n if (typeof rvalue !== \"number\" || !(rvalue < condition.lt)) {\r\n match = false;\r\n break;\r\n }\r\n }\r\n\r\n if (condition.gte !== undefined) {\r\n if (typeof rvalue !== \"number\" || !(rvalue >= condition.gte)) {\r\n match = false;\r\n break;\r\n }\r\n }\r\n\r\n if (condition.lte !== undefined) {\r\n if (typeof rvalue !== \"number\" || !(rvalue <= condition.lte)) {\r\n match = false;\r\n break;\r\n }\r\n }\r\n\r\n } else {\r\n if (condition !== rvalue) {\r\n match = false;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (match) {\r\n rows.push(row);\r\n }\r\n }\r\n\r\n return rows;\r\n }\r\n\r\n findOne(args: FindArgs<RS>): MakeRowType<RS> | null {\r\n const rows = this.find(args)\r\n return rows.length > 0 ? rows[0] : null\r\n }\r\n\r\n getIndex(args: FindArgs<RS>): number {\r\n const row = this.findOne(args)\r\n if (row) {\r\n return this._rows.findIndex(r => r.rid === row.rid)\r\n }\r\n return -1\r\n }\r\n\r\n move(args: MoveArgs<RS>): boolean {\r\n const { fromIndex, toIndex, disableObservation, observeId } = args\r\n if (fromIndex < 0 || toIndex < 0) return false\r\n const [movedRow] = this._rows.splice(fromIndex, 1)\r\n this._rows.splice(toIndex, 0, movedRow)\r\n if (!disableObservation) {\r\n this.dispatch(observeId)\r\n }\r\n return true\r\n }\r\n\r\n // Meta Methods\r\n setMeta<T extends keyof Infer<MS>>(key: T, value: Infer<MS>[T], observe = true) {\r\n this._meta.set(key, this._meta_schema ? (this._meta_schema as any)[key].parse(value) : value)\r\n observe && this.dispatch()\r\n }\r\n\r\n getMeta<T extends keyof Infer<MS>>(key: T, observe = true): Infer<MS>[T] | undefined {\r\n observe && this.observe()\r\n return this._meta.get(key) as Infer<MS>[T] | undefined\r\n }\r\n\r\n deleteMeta<T extends keyof Infer<MS>>(key: T, observe = true) {\r\n this._meta.delete(key)\r\n observe && this.dispatch()\r\n }\r\n\r\n clearMeta(observe = true) {\r\n this._meta.clear()\r\n observe && this.dispatch()\r\n }\r\n}\r\n\r\nexport default Store"],"names":[],"mappings":";;;;;;AAKA;AACA;AACA;AAGA;;;AAEW;AACA;;;AAeA;;AAEF;AACA;;AAEA;AACA;AACG;;AAEL;;AACJ;;AAbG;;AAeH;AACG;AACA;AACA;;;AAGS;AACG;AACF;AAAM;AACJ;;AAEM;AACF;AACH;AAAM;AACJ;AACF;AACH;AACH;AAAC;AACC;AACF;AACJ;;;;AAKH;;;;AAKA;;;AAIH;;;AAGG;AACG;AACG;AACA;AACF;AACD;AACF;;AAEE;AACF;AACD;;;AAGH;;;;AAIG;AACG;;;AAEA;AACF;;;AASD;;AAEG;AACF;AACD;;;AAKH;;;;AAIG;AACG;;;AAEA;AACF;;AAGD;AACG;AACG;AACA;;AAOA;;AAEF;;AAEE;AACF;AACH;AACD;;;AAIH;;AAEG;;AAEG;AACF;;AAGD;AACG;AACA;;AAEG;AACF;AACH;AACD;;;AAIH;;;AAIM;AACF;;AAID;;AAGG;AACG;AACA;;AAIG;AACG;;;AAGC;AACH;AAED;AACG;;;AAGC;AACH;AAED;AACG;;;AAGC;AACH;;;;AAKA;;;;AAKA;AAED;AACG;;;AAGC;AACH;AAED;AACG;;;AAGC;AACH;AAED;AACG;;;AAGC;AACH;AAED;AACG;;;AAGC;AACH;AAEH;AAAM;;;;AAIH;AACH;AACH;AAED;AACG;AACF;AACH;AAED;;AAGH;;AAEG;;AAGH;;AAEG;AACG;AACF;;;AAIJ;;AAEG;AAAkC;AAClC;;;AAGG;AACF;AACD;;;AAIH;AACG;AACA;;AAGH;AACG;;;AAIH;AACG;AACA;;;AAIA;AACA;;AAEL;;"}
|
|
1
|
+
{"version":3,"file":"Store.cjs","sources":["../src/Store.ts"],"sourcesContent":["\"use client\"\r\nimport { useEffect, useId, useState } from \"react\"\r\nimport { CreateArgs, CreateManyArgs, DeleteArgs, FindArgs, MakeMetaType, MakeRowType, MetaSchema, MoveArgs, RowSchema, UpdateArgs, WhereType } from \"./types\"\r\nimport { Infer, xv } from \"xanv\"\r\n\r\nconst uid = useId as any\r\nconst ustate = useState as any\r\nconst ueffect = useEffect as any\r\n\r\n\r\nclass Store<RS extends RowSchema, MS extends MetaSchema | undefined = undefined> {\r\n private _rows: MakeRowType<RS>[] = []\r\n private _meta: Map<keyof MakeMetaType<MS>, MakeMetaType<MS>[keyof MakeMetaType<MS>]> = new Map()\r\n private _hooks: Map<string, Function> = new Map()\r\n private _timer: any = null\r\n private _row_schema: RS\r\n private _meta_schema?: MS\r\n private _last_id = 0\r\n\r\n constructor(rowSchema: RS, metaSchema?: MS) {\r\n this._row_schema = {\r\n ...rowSchema,\r\n rid: xv.number(),\r\n vid: xv.number().default(() => Math.round((Math.random() + Math.random()) * 9999999999)),\r\n }\r\n this._meta_schema = metaSchema\r\n }\r\n\r\n private observe = (observeId?: string) => {\r\n try {\r\n const hid = uid()\r\n const id = observeId || hid\r\n const [, dispatch] = ustate(0)\r\n this._hooks.set(id, () => dispatch(Math.random()))\r\n ueffect(() => {\r\n return () => {\r\n this._hooks.delete(id)\r\n }\r\n }, [])\r\n } catch (error) { }\r\n }\r\n\r\n dispatch(observeIdOrCallbabck?: string | ((cb: Function, key: string) => void)) {\r\n clearTimeout(this._timer)\r\n const isFn = typeof observeIdOrCallbabck === \"function\"\r\n this._timer = setTimeout(() => {\r\n this._hooks.forEach((cb, key) => {\r\n try {\r\n if (isFn) {\r\n observeIdOrCallbabck(cb, key)\r\n } else {\r\n if (observeIdOrCallbabck) {\r\n if (key === observeIdOrCallbabck) {\r\n cb()\r\n }\r\n } else {\r\n cb()\r\n }\r\n }\r\n } catch (_err) {\r\n this._hooks.delete(key)\r\n }\r\n })\r\n }, 0)\r\n }\r\n\r\n rows(disableObservation = false) {\r\n if (!disableObservation) {\r\n this.observe();\r\n }\r\n return this._rows\r\n }\r\n\r\n metas(disableObservation = false) {\r\n if (!disableObservation) {\r\n this.observe();\r\n }\r\n return this._meta\r\n }\r\n\r\n createMany(args: CreateManyArgs<RS>): MakeRowType<RS>[] {\r\n const { data, disableObservation, observeId } = args\r\n const res = []\r\n for (let row of data) {\r\n const created = this.create({\r\n data: row,\r\n disableObservation: true\r\n })\r\n res.push(created)\r\n }\r\n if (!disableObservation) {\r\n this.dispatch(observeId)\r\n }\r\n return res\r\n }\r\n // Row Methods\r\n create(args: CreateArgs<RS>): MakeRowType<RS> {\r\n const { data, disableObservation, observeId } = args\r\n // validate and create row\r\n let r: any = {} as MakeRowType<RS>\r\n for (let key in this._row_schema) {\r\n if (key === \"rid\" || key === \"vid\") continue;\r\n const schema = this._row_schema[key]\r\n r[key] = schema.parse(data[key])\r\n }\r\n\r\n this._last_id = this._last_id + 1;\r\n const _row: MakeRowType<RS> = {\r\n ...r,\r\n rid: this._last_id,\r\n vid: this._row_schema.vid.parse(undefined),\r\n }\r\n\r\n this._rows.push(_row)\r\n if (!disableObservation) {\r\n this.dispatch(observeId)\r\n }\r\n return _row\r\n }\r\n\r\n // update\r\n update(args: UpdateArgs<RS>): MakeRowType<RS>[] | null {\r\n const { data, where, disableObservation, observeId } = args\r\n // validate row\r\n let r: any = {} as MakeRowType<RS>\r\n for (let key in data) {\r\n if (key === \"rid\" || key === 'vid') continue;\r\n const schema = this._row_schema[key]\r\n r[key] = schema.parse(data[key])\r\n }\r\n\r\n const rows = this.find({ disableObservation: true, where })\r\n if (rows.length > 0) {\r\n for (let index = 0; index < rows.length; index++) {\r\n const _row = rows[index];\r\n const rid = _row.rid\r\n rows[index] = {\r\n ..._row,\r\n ...r,\r\n rid,\r\n vid: this._row_schema.vid.parse(undefined),\r\n }\r\n const rowIndex = this._rows.findIndex(r => r.rid === rid)\r\n this._rows[rowIndex] = rows[index]\r\n }\r\n if (!disableObservation) {\r\n this.dispatch(observeId)\r\n }\r\n }\r\n return this.find({ where, disableObservation: true })\r\n }\r\n\r\n // delete\r\n delete(args: DeleteArgs<RS>): number {\r\n const { where, disableObservation, observeId } = args\r\n const rows = this.find({\r\n where,\r\n disableObservation: true\r\n })\r\n\r\n let deletedCount = 0\r\n if (rows.length > 0) {\r\n this._rows = this._rows.filter(r => !rows.find(dr => dr.rid === r.rid))\r\n deletedCount = rows.length\r\n if (!disableObservation) {\r\n this.dispatch(observeId)\r\n }\r\n }\r\n return deletedCount\r\n }\r\n\r\n // find\r\n find(args: FindArgs<RS>): MakeRowType<RS>[] {\r\n const { where, disableObservation, observeId } = args;\r\n\r\n if (!disableObservation) {\r\n this.observe(observeId);\r\n }\r\n\r\n const rows: MakeRowType<RS>[] = [];\r\n\r\n for (const row of this._rows) {\r\n let match = true;\r\n\r\n for (const wcol in where) {\r\n const condition = where[wcol];\r\n const rvalue = row[wcol];\r\n\r\n if (typeof condition === \"object\" && condition !== null) {\r\n\r\n if (condition.contain !== undefined) {\r\n if (typeof rvalue !== \"string\" || !rvalue.includes(condition.contain as any)) {\r\n match = false;\r\n break;\r\n }\r\n }\r\n\r\n if (condition.startWith !== undefined) {\r\n if (typeof rvalue !== \"string\" || !rvalue.startsWith(condition.startWith as any)) {\r\n match = false;\r\n break;\r\n }\r\n }\r\n\r\n if (condition.endWith !== undefined) {\r\n if (typeof rvalue !== \"string\" || !rvalue.endsWith(condition.endWith as any)) {\r\n match = false;\r\n break;\r\n }\r\n }\r\n\r\n if (condition.equalWith !== undefined && rvalue !== condition.equalWith) {\r\n match = false;\r\n break;\r\n }\r\n\r\n if (condition.notEqualWith !== undefined && rvalue === condition.notEqualWith) {\r\n match = false;\r\n break;\r\n }\r\n\r\n if (condition.gt !== undefined) {\r\n if (typeof rvalue !== \"number\" || !(rvalue > condition.gt)) {\r\n match = false;\r\n break;\r\n }\r\n }\r\n\r\n if (condition.lt !== undefined) {\r\n if (typeof rvalue !== \"number\" || !(rvalue < condition.lt)) {\r\n match = false;\r\n break;\r\n }\r\n }\r\n\r\n if (condition.gte !== undefined) {\r\n if (typeof rvalue !== \"number\" || !(rvalue >= condition.gte)) {\r\n match = false;\r\n break;\r\n }\r\n }\r\n\r\n if (condition.lte !== undefined) {\r\n if (typeof rvalue !== \"number\" || !(rvalue <= condition.lte)) {\r\n match = false;\r\n break;\r\n }\r\n }\r\n\r\n } else {\r\n if (condition !== rvalue) {\r\n match = false;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (match) {\r\n rows.push(row);\r\n }\r\n }\r\n\r\n return rows;\r\n }\r\n\r\n findOne(args: FindArgs<RS>): MakeRowType<RS> | null {\r\n const rows = this.find(args)\r\n return rows.length > 0 ? rows[0] : null\r\n }\r\n\r\n getIndex(args: FindArgs<RS>): number {\r\n const row = this.findOne(args)\r\n if (row) {\r\n return this._rows.findIndex(r => r.rid === row.rid)\r\n }\r\n return -1\r\n }\r\n\r\n move(args: MoveArgs<RS>): boolean {\r\n const { fromIndex, toIndex, disableObservation, observeId } = args\r\n if (fromIndex < 0 || toIndex < 0) return false\r\n const [movedRow] = this._rows.splice(fromIndex, 1)\r\n this._rows.splice(toIndex, 0, movedRow)\r\n if (!disableObservation) {\r\n this.dispatch(observeId)\r\n }\r\n return true\r\n }\r\n\r\n setMeta<T extends keyof Infer<MS>>(key: T, value: Infer<MS>[T], disableObservation = false) {\r\n this._meta.set(key, this._meta_schema ? (this._meta_schema as any)[key].parse(value) : value)\r\n if (!disableObservation) {\r\n this.dispatch()\r\n }\r\n }\r\n\r\n getMeta<T extends keyof Infer<MS>>(key: T, disableObservation = false): Infer<MS>[T] | undefined {\r\n if (!disableObservation) {\r\n this.observe();\r\n }\r\n return this._meta.get(key) as Infer<MS>[T] | undefined\r\n }\r\n\r\n deleteMeta<T extends keyof Infer<MS>>(key: T, disableObservation = false) {\r\n this._meta.delete(key)\r\n if (!disableObservation) {\r\n this.dispatch()\r\n }\r\n }\r\n\r\n clearMeta(disableObservation = false) {\r\n this._meta.clear()\r\n if (!disableObservation) {\r\n this.dispatch()\r\n }\r\n }\r\n}\r\n\r\nexport default Store"],"names":[],"mappings":";;;;;;AAKA;AACA;AACA;AAGA;;;AAEW;AACA;;;AAeA;;AAEF;AACA;;AAEA;;AAEG;AACG;AACH;;AAEL;;AACJ;;AAfG;;AAiBH;AACG;AACA;AACA;;;AAGS;AACG;AACF;AAAM;AACJ;;AAEM;AACF;AACH;AAAM;AACJ;AACF;AACH;AACH;AAAC;AACC;AACF;AACJ;;;;;;AAOF;;;;;;AAOA;;;AAIJ;;;AAGG;AACG;AACG;AACA;AACF;AACD;AACF;;AAEE;AACF;AACD;;;AAGH;;;;AAIG;AACG;;;AAEA;AACF;;;AASD;;AAEG;AACF;AACD;;;AAIH;;;;AAIG;AACG;;;AAEA;AACF;AAED;AACA;AACG;AACG;AACA;;AAOA;;AAEF;;AAEE;AACF;AACH;AACD;;;AAIH;;AAEG;;AAEG;AACF;;AAGD;AACG;AACA;;AAEG;AACF;AACH;AACD;;;AAIH;;;AAIM;AACF;;AAID;;AAGG;AACG;AACA;;AAIG;AACG;;;AAGC;AACH;AAED;AACG;;;AAGC;AACH;AAED;AACG;;;AAGC;AACH;;;;AAKA;;;;AAKA;AAED;AACG;;;AAGC;AACH;AAED;AACG;;;AAGC;AACH;AAED;AACG;;;AAGC;AACH;AAED;AACG;;;AAGC;AACH;AAEH;AAAM;;;;AAIH;AACH;AACH;AAED;AACG;AACF;AACH;AAED;;AAGH;;AAEG;;AAGH;;AAEG;AACG;AACF;;;AAIJ;;AAEG;AAAkC;AAClC;;;AAGG;AACF;AACD;;AAGH;AACG;;;AAGC;;AAGJ;;;AAGI;;;AAIJ;AACG;;;AAGC;;;AAID;;;AAGC;;AAEN;;"}
|
package/Store.d.ts
CHANGED
|
@@ -12,8 +12,8 @@ declare class Store<RS extends RowSchema, MS extends MetaSchema | undefined = un
|
|
|
12
12
|
constructor(rowSchema: RS, metaSchema?: MS);
|
|
13
13
|
private observe;
|
|
14
14
|
dispatch(observeIdOrCallbabck?: string | ((cb: Function, key: string) => void)): void;
|
|
15
|
-
rows(
|
|
16
|
-
metas(
|
|
15
|
+
rows(disableObservation?: boolean): MakeRowType<RS>[];
|
|
16
|
+
metas(disableObservation?: boolean): Map<keyof Infer<MS>, Infer<MS>[keyof Infer<MS>]>;
|
|
17
17
|
createMany(args: CreateManyArgs<RS>): MakeRowType<RS>[];
|
|
18
18
|
create(args: CreateArgs<RS>): MakeRowType<RS>;
|
|
19
19
|
update(args: UpdateArgs<RS>): MakeRowType<RS>[] | null;
|
|
@@ -22,10 +22,10 @@ declare class Store<RS extends RowSchema, MS extends MetaSchema | undefined = un
|
|
|
22
22
|
findOne(args: FindArgs<RS>): MakeRowType<RS> | null;
|
|
23
23
|
getIndex(args: FindArgs<RS>): number;
|
|
24
24
|
move(args: MoveArgs<RS>): boolean;
|
|
25
|
-
setMeta<T extends keyof Infer<MS>>(key: T, value: Infer<MS>[T],
|
|
26
|
-
getMeta<T extends keyof Infer<MS>>(key: T,
|
|
27
|
-
deleteMeta<T extends keyof Infer<MS>>(key: T,
|
|
28
|
-
clearMeta(
|
|
25
|
+
setMeta<T extends keyof Infer<MS>>(key: T, value: Infer<MS>[T], disableObservation?: boolean): void;
|
|
26
|
+
getMeta<T extends keyof Infer<MS>>(key: T, disableObservation?: boolean): Infer<MS>[T] | undefined;
|
|
27
|
+
deleteMeta<T extends keyof Infer<MS>>(key: T, disableObservation?: boolean): void;
|
|
28
|
+
clearMeta(disableObservation?: boolean): void;
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
export { Store as default };
|
package/Store.js
CHANGED
|
@@ -18,8 +18,10 @@ class Store {
|
|
|
18
18
|
const id = observeId || hid;
|
|
19
19
|
const [, dispatch] = ustate(0);
|
|
20
20
|
this._hooks.set(id, () => dispatch(Math.random()));
|
|
21
|
-
ueffect(() =>
|
|
22
|
-
|
|
21
|
+
ueffect(() => {
|
|
22
|
+
return () => {
|
|
23
|
+
this._hooks.delete(id);
|
|
24
|
+
};
|
|
23
25
|
}, []);
|
|
24
26
|
}
|
|
25
27
|
catch (error) { }
|
|
@@ -53,12 +55,16 @@ class Store {
|
|
|
53
55
|
});
|
|
54
56
|
}, 0);
|
|
55
57
|
}
|
|
56
|
-
rows(
|
|
57
|
-
|
|
58
|
+
rows(disableObservation = false) {
|
|
59
|
+
if (!disableObservation) {
|
|
60
|
+
this.observe();
|
|
61
|
+
}
|
|
58
62
|
return this._rows;
|
|
59
63
|
}
|
|
60
|
-
metas(
|
|
61
|
-
|
|
64
|
+
metas(disableObservation = false) {
|
|
65
|
+
if (!disableObservation) {
|
|
66
|
+
this.observe();
|
|
67
|
+
}
|
|
62
68
|
return this._meta;
|
|
63
69
|
}
|
|
64
70
|
createMany(args) {
|
|
@@ -106,7 +112,7 @@ class Store {
|
|
|
106
112
|
const schema = this._row_schema[key];
|
|
107
113
|
r[key] = schema.parse(data[key]);
|
|
108
114
|
}
|
|
109
|
-
const rows = this.find({ where });
|
|
115
|
+
const rows = this.find({ disableObservation: true, where });
|
|
110
116
|
if (rows.length > 0) {
|
|
111
117
|
for (let index = 0; index < rows.length; index++) {
|
|
112
118
|
const _row = rows[index];
|
|
@@ -237,22 +243,29 @@ class Store {
|
|
|
237
243
|
}
|
|
238
244
|
return true;
|
|
239
245
|
}
|
|
240
|
-
|
|
241
|
-
setMeta(key, value, observe = true) {
|
|
246
|
+
setMeta(key, value, disableObservation = false) {
|
|
242
247
|
this._meta.set(key, this._meta_schema ? this._meta_schema[key].parse(value) : value);
|
|
243
|
-
|
|
248
|
+
if (!disableObservation) {
|
|
249
|
+
this.dispatch();
|
|
250
|
+
}
|
|
244
251
|
}
|
|
245
|
-
getMeta(key,
|
|
246
|
-
|
|
252
|
+
getMeta(key, disableObservation = false) {
|
|
253
|
+
if (!disableObservation) {
|
|
254
|
+
this.observe();
|
|
255
|
+
}
|
|
247
256
|
return this._meta.get(key);
|
|
248
257
|
}
|
|
249
|
-
deleteMeta(key,
|
|
258
|
+
deleteMeta(key, disableObservation = false) {
|
|
250
259
|
this._meta.delete(key);
|
|
251
|
-
|
|
260
|
+
if (!disableObservation) {
|
|
261
|
+
this.dispatch();
|
|
262
|
+
}
|
|
252
263
|
}
|
|
253
|
-
clearMeta(
|
|
264
|
+
clearMeta(disableObservation = false) {
|
|
254
265
|
this._meta.clear();
|
|
255
|
-
|
|
266
|
+
if (!disableObservation) {
|
|
267
|
+
this.dispatch();
|
|
268
|
+
}
|
|
256
269
|
}
|
|
257
270
|
}
|
|
258
271
|
|
package/Store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Store.js","sources":["../src/Store.ts"],"sourcesContent":["\"use client\"\r\nimport { useEffect, useId, useState } from \"react\"\r\nimport { CreateArgs, CreateManyArgs, DeleteArgs, FindArgs, MakeMetaType, MakeRowType, MetaSchema, MoveArgs, RowSchema, UpdateArgs, WhereType } from \"./types\"\r\nimport { Infer, xv } from \"xanv\"\r\n\r\nconst uid = useId as any\r\nconst ustate = useState as any\r\nconst ueffect = useEffect as any\r\n\r\n\r\nclass Store<RS extends RowSchema, MS extends MetaSchema | undefined = undefined> {\r\n private _rows: MakeRowType<RS>[] = []\r\n private _meta: Map<keyof MakeMetaType<MS>, MakeMetaType<MS>[keyof MakeMetaType<MS>]> = new Map()\r\n private _hooks: Map<string, Function> = new Map()\r\n private _timer: any = null\r\n private _row_schema: RS\r\n private _meta_schema?: MS\r\n private _last_id = 0\r\n\r\n constructor(rowSchema: RS, metaSchema?: MS) {\r\n this._row_schema = {\r\n ...rowSchema,\r\n rid: xv.number(),\r\n vid: xv.number().default(() => Math.round((Math.random() + Math.random()) * 9999999999)),\r\n }\r\n this._meta_schema = metaSchema\r\n }\r\n\r\n private observe = (observeId?: string) => {\r\n try {\r\n const hid = uid()\r\n const id = observeId || hid\r\n const [, dispatch] = ustate(0)\r\n this._hooks.set(id, () => dispatch(Math.random()))\r\n ueffect(() => () => {\r\n this._hooks.delete(id)\r\n }, [])\r\n } catch (error) { }\r\n }\r\n\r\n dispatch(observeIdOrCallbabck?: string | ((cb: Function, key: string) => void)) {\r\n clearTimeout(this._timer)\r\n const isFn = typeof observeIdOrCallbabck === \"function\"\r\n this._timer = setTimeout(() => {\r\n this._hooks.forEach((cb, key) => {\r\n try {\r\n if (isFn) {\r\n observeIdOrCallbabck(cb, key)\r\n } else {\r\n if (observeIdOrCallbabck) {\r\n if (key === observeIdOrCallbabck) {\r\n cb()\r\n }\r\n } else {\r\n cb()\r\n }\r\n }\r\n } catch (_err) {\r\n this._hooks.delete(key)\r\n }\r\n })\r\n }, 0)\r\n }\r\n\r\n rows(observe = true) {\r\n observe && this.observe()\r\n return this._rows\r\n }\r\n\r\n metas(observe = true) {\r\n observe && this.observe()\r\n return this._meta\r\n }\r\n\r\n createMany(args: CreateManyArgs<RS>): MakeRowType<RS>[] {\r\n const { data, disableObservation, observeId } = args\r\n const res = []\r\n for (let row of data) {\r\n const created = this.create({\r\n data: row,\r\n disableObservation: true\r\n })\r\n res.push(created)\r\n }\r\n if (!disableObservation) {\r\n this.dispatch(observeId)\r\n }\r\n return res\r\n }\r\n // Row Methods\r\n create(args: CreateArgs<RS>): MakeRowType<RS> {\r\n const { data, disableObservation, observeId } = args\r\n // validate and create row\r\n let r: any = {} as MakeRowType<RS>\r\n for (let key in this._row_schema) {\r\n if (key === \"rid\" || key === \"vid\") continue;\r\n const schema = this._row_schema[key]\r\n r[key] = schema.parse(data[key])\r\n }\r\n\r\n this._last_id = this._last_id + 1;\r\n const _row: MakeRowType<RS> = {\r\n ...r,\r\n rid: this._last_id,\r\n vid: this._row_schema.vid.parse(undefined),\r\n }\r\n\r\n this._rows.push(_row)\r\n if (!disableObservation) {\r\n this.dispatch(observeId)\r\n }\r\n return _row\r\n }\r\n\r\n\r\n // update\r\n update(args: UpdateArgs<RS>): MakeRowType<RS>[] | null {\r\n const { data, where, disableObservation, observeId } = args\r\n // validate row\r\n let r: any = {} as MakeRowType<RS>\r\n for (let key in data) {\r\n if (key === \"rid\" || key === 'vid') continue;\r\n const schema = this._row_schema[key]\r\n r[key] = schema.parse(data[key])\r\n }\r\n\r\n const rows = this.find({ where })\r\n if (rows.length > 0) {\r\n for (let index = 0; index < rows.length; index++) {\r\n const _row = rows[index];\r\n const rid = _row.rid\r\n rows[index] = {\r\n ..._row,\r\n ...r,\r\n rid,\r\n vid: this._row_schema.vid.parse(undefined),\r\n }\r\n const rowIndex = this._rows.findIndex(r => r.rid === rid)\r\n this._rows[rowIndex] = rows[index]\r\n }\r\n if (!disableObservation) {\r\n this.dispatch(observeId)\r\n }\r\n }\r\n return this.find({ where, disableObservation: true })\r\n }\r\n\r\n // delete\r\n delete(args: DeleteArgs<RS>): number {\r\n const { where, disableObservation, observeId } = args\r\n const rows = this.find({\r\n where,\r\n disableObservation: true\r\n })\r\n\r\n let deletedCount = 0\r\n if (rows.length > 0) {\r\n this._rows = this._rows.filter(r => !rows.find(dr => dr.rid === r.rid))\r\n deletedCount = rows.length\r\n if (!disableObservation) {\r\n this.dispatch(observeId)\r\n }\r\n }\r\n return deletedCount\r\n }\r\n\r\n // find\r\n find(args: FindArgs<RS>): MakeRowType<RS>[] {\r\n const { where, disableObservation, observeId } = args;\r\n\r\n if (!disableObservation) {\r\n this.observe(observeId);\r\n }\r\n\r\n const rows: MakeRowType<RS>[] = [];\r\n\r\n for (const row of this._rows) {\r\n let match = true;\r\n\r\n for (const wcol in where) {\r\n const condition = where[wcol];\r\n const rvalue = row[wcol];\r\n\r\n if (typeof condition === \"object\" && condition !== null) {\r\n\r\n if (condition.contain !== undefined) {\r\n if (typeof rvalue !== \"string\" || !rvalue.includes(condition.contain as any)) {\r\n match = false;\r\n break;\r\n }\r\n }\r\n\r\n if (condition.startWith !== undefined) {\r\n if (typeof rvalue !== \"string\" || !rvalue.startsWith(condition.startWith as any)) {\r\n match = false;\r\n break;\r\n }\r\n }\r\n\r\n if (condition.endWith !== undefined) {\r\n if (typeof rvalue !== \"string\" || !rvalue.endsWith(condition.endWith as any)) {\r\n match = false;\r\n break;\r\n }\r\n }\r\n\r\n if (condition.equalWith !== undefined && rvalue !== condition.equalWith) {\r\n match = false;\r\n break;\r\n }\r\n\r\n if (condition.notEqualWith !== undefined && rvalue === condition.notEqualWith) {\r\n match = false;\r\n break;\r\n }\r\n\r\n if (condition.gt !== undefined) {\r\n if (typeof rvalue !== \"number\" || !(rvalue > condition.gt)) {\r\n match = false;\r\n break;\r\n }\r\n }\r\n\r\n if (condition.lt !== undefined) {\r\n if (typeof rvalue !== \"number\" || !(rvalue < condition.lt)) {\r\n match = false;\r\n break;\r\n }\r\n }\r\n\r\n if (condition.gte !== undefined) {\r\n if (typeof rvalue !== \"number\" || !(rvalue >= condition.gte)) {\r\n match = false;\r\n break;\r\n }\r\n }\r\n\r\n if (condition.lte !== undefined) {\r\n if (typeof rvalue !== \"number\" || !(rvalue <= condition.lte)) {\r\n match = false;\r\n break;\r\n }\r\n }\r\n\r\n } else {\r\n if (condition !== rvalue) {\r\n match = false;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (match) {\r\n rows.push(row);\r\n }\r\n }\r\n\r\n return rows;\r\n }\r\n\r\n findOne(args: FindArgs<RS>): MakeRowType<RS> | null {\r\n const rows = this.find(args)\r\n return rows.length > 0 ? rows[0] : null\r\n }\r\n\r\n getIndex(args: FindArgs<RS>): number {\r\n const row = this.findOne(args)\r\n if (row) {\r\n return this._rows.findIndex(r => r.rid === row.rid)\r\n }\r\n return -1\r\n }\r\n\r\n move(args: MoveArgs<RS>): boolean {\r\n const { fromIndex, toIndex, disableObservation, observeId } = args\r\n if (fromIndex < 0 || toIndex < 0) return false\r\n const [movedRow] = this._rows.splice(fromIndex, 1)\r\n this._rows.splice(toIndex, 0, movedRow)\r\n if (!disableObservation) {\r\n this.dispatch(observeId)\r\n }\r\n return true\r\n }\r\n\r\n // Meta Methods\r\n setMeta<T extends keyof Infer<MS>>(key: T, value: Infer<MS>[T], observe = true) {\r\n this._meta.set(key, this._meta_schema ? (this._meta_schema as any)[key].parse(value) : value)\r\n observe && this.dispatch()\r\n }\r\n\r\n getMeta<T extends keyof Infer<MS>>(key: T, observe = true): Infer<MS>[T] | undefined {\r\n observe && this.observe()\r\n return this._meta.get(key) as Infer<MS>[T] | undefined\r\n }\r\n\r\n deleteMeta<T extends keyof Infer<MS>>(key: T, observe = true) {\r\n this._meta.delete(key)\r\n observe && this.dispatch()\r\n }\r\n\r\n clearMeta(observe = true) {\r\n this._meta.clear()\r\n observe && this.dispatch()\r\n }\r\n}\r\n\r\nexport default Store"],"names":[],"mappings":";;;;AAKA;AACA;AACA;AAGA;;;AAEW;AACA;;;AAeA;;AAEF;AACA;;AAEA;AACA;AACG;;AAEL;;AACJ;;AAbG;;AAeH;AACG;AACA;AACA;;;AAGS;AACG;AACF;AAAM;AACJ;;AAEM;AACF;AACH;AAAM;AACJ;AACF;AACH;AACH;AAAC;AACC;AACF;AACJ;;;;AAKH;;;;AAKA;;;AAIH;;;AAGG;AACG;AACG;AACA;AACF;AACD;AACF;;AAEE;AACF;AACD;;;AAGH;;;;AAIG;AACG;;;AAEA;AACF;;;AASD;;AAEG;AACF;AACD;;;AAKH;;;;AAIG;AACG;;;AAEA;AACF;;AAGD;AACG;AACG;AACA;;AAOA;;AAEF;;AAEE;AACF;AACH;AACD;;;AAIH;;AAEG;;AAEG;AACF;;AAGD;AACG;AACA;;AAEG;AACF;AACH;AACD;;;AAIH;;;AAIM;AACF;;AAID;;AAGG;AACG;AACA;;AAIG;AACG;;;AAGC;AACH;AAED;AACG;;;AAGC;AACH;AAED;AACG;;;AAGC;AACH;;;;AAKA;;;;AAKA;AAED;AACG;;;AAGC;AACH;AAED;AACG;;;AAGC;AACH;AAED;AACG;;;AAGC;AACH;AAED;AACG;;;AAGC;AACH;AAEH;AAAM;;;;AAIH;AACH;AACH;AAED;AACG;AACF;AACH;AAED;;AAGH;;AAEG;;AAGH;;AAEG;AACG;AACF;;;AAIJ;;AAEG;AAAkC;AAClC;;;AAGG;AACF;AACD;;;AAIH;AACG;AACA;;AAGH;AACG;;;AAIH;AACG;AACA;;;AAIA;AACA;;AAEL;;"}
|
|
1
|
+
{"version":3,"file":"Store.js","sources":["../src/Store.ts"],"sourcesContent":["\"use client\"\r\nimport { useEffect, useId, useState } from \"react\"\r\nimport { CreateArgs, CreateManyArgs, DeleteArgs, FindArgs, MakeMetaType, MakeRowType, MetaSchema, MoveArgs, RowSchema, UpdateArgs, WhereType } from \"./types\"\r\nimport { Infer, xv } from \"xanv\"\r\n\r\nconst uid = useId as any\r\nconst ustate = useState as any\r\nconst ueffect = useEffect as any\r\n\r\n\r\nclass Store<RS extends RowSchema, MS extends MetaSchema | undefined = undefined> {\r\n private _rows: MakeRowType<RS>[] = []\r\n private _meta: Map<keyof MakeMetaType<MS>, MakeMetaType<MS>[keyof MakeMetaType<MS>]> = new Map()\r\n private _hooks: Map<string, Function> = new Map()\r\n private _timer: any = null\r\n private _row_schema: RS\r\n private _meta_schema?: MS\r\n private _last_id = 0\r\n\r\n constructor(rowSchema: RS, metaSchema?: MS) {\r\n this._row_schema = {\r\n ...rowSchema,\r\n rid: xv.number(),\r\n vid: xv.number().default(() => Math.round((Math.random() + Math.random()) * 9999999999)),\r\n }\r\n this._meta_schema = metaSchema\r\n }\r\n\r\n private observe = (observeId?: string) => {\r\n try {\r\n const hid = uid()\r\n const id = observeId || hid\r\n const [, dispatch] = ustate(0)\r\n this._hooks.set(id, () => dispatch(Math.random()))\r\n ueffect(() => {\r\n return () => {\r\n this._hooks.delete(id)\r\n }\r\n }, [])\r\n } catch (error) { }\r\n }\r\n\r\n dispatch(observeIdOrCallbabck?: string | ((cb: Function, key: string) => void)) {\r\n clearTimeout(this._timer)\r\n const isFn = typeof observeIdOrCallbabck === \"function\"\r\n this._timer = setTimeout(() => {\r\n this._hooks.forEach((cb, key) => {\r\n try {\r\n if (isFn) {\r\n observeIdOrCallbabck(cb, key)\r\n } else {\r\n if (observeIdOrCallbabck) {\r\n if (key === observeIdOrCallbabck) {\r\n cb()\r\n }\r\n } else {\r\n cb()\r\n }\r\n }\r\n } catch (_err) {\r\n this._hooks.delete(key)\r\n }\r\n })\r\n }, 0)\r\n }\r\n\r\n rows(disableObservation = false) {\r\n if (!disableObservation) {\r\n this.observe();\r\n }\r\n return this._rows\r\n }\r\n\r\n metas(disableObservation = false) {\r\n if (!disableObservation) {\r\n this.observe();\r\n }\r\n return this._meta\r\n }\r\n\r\n createMany(args: CreateManyArgs<RS>): MakeRowType<RS>[] {\r\n const { data, disableObservation, observeId } = args\r\n const res = []\r\n for (let row of data) {\r\n const created = this.create({\r\n data: row,\r\n disableObservation: true\r\n })\r\n res.push(created)\r\n }\r\n if (!disableObservation) {\r\n this.dispatch(observeId)\r\n }\r\n return res\r\n }\r\n // Row Methods\r\n create(args: CreateArgs<RS>): MakeRowType<RS> {\r\n const { data, disableObservation, observeId } = args\r\n // validate and create row\r\n let r: any = {} as MakeRowType<RS>\r\n for (let key in this._row_schema) {\r\n if (key === \"rid\" || key === \"vid\") continue;\r\n const schema = this._row_schema[key]\r\n r[key] = schema.parse(data[key])\r\n }\r\n\r\n this._last_id = this._last_id + 1;\r\n const _row: MakeRowType<RS> = {\r\n ...r,\r\n rid: this._last_id,\r\n vid: this._row_schema.vid.parse(undefined),\r\n }\r\n\r\n this._rows.push(_row)\r\n if (!disableObservation) {\r\n this.dispatch(observeId)\r\n }\r\n return _row\r\n }\r\n\r\n // update\r\n update(args: UpdateArgs<RS>): MakeRowType<RS>[] | null {\r\n const { data, where, disableObservation, observeId } = args\r\n // validate row\r\n let r: any = {} as MakeRowType<RS>\r\n for (let key in data) {\r\n if (key === \"rid\" || key === 'vid') continue;\r\n const schema = this._row_schema[key]\r\n r[key] = schema.parse(data[key])\r\n }\r\n\r\n const rows = this.find({ disableObservation: true, where })\r\n if (rows.length > 0) {\r\n for (let index = 0; index < rows.length; index++) {\r\n const _row = rows[index];\r\n const rid = _row.rid\r\n rows[index] = {\r\n ..._row,\r\n ...r,\r\n rid,\r\n vid: this._row_schema.vid.parse(undefined),\r\n }\r\n const rowIndex = this._rows.findIndex(r => r.rid === rid)\r\n this._rows[rowIndex] = rows[index]\r\n }\r\n if (!disableObservation) {\r\n this.dispatch(observeId)\r\n }\r\n }\r\n return this.find({ where, disableObservation: true })\r\n }\r\n\r\n // delete\r\n delete(args: DeleteArgs<RS>): number {\r\n const { where, disableObservation, observeId } = args\r\n const rows = this.find({\r\n where,\r\n disableObservation: true\r\n })\r\n\r\n let deletedCount = 0\r\n if (rows.length > 0) {\r\n this._rows = this._rows.filter(r => !rows.find(dr => dr.rid === r.rid))\r\n deletedCount = rows.length\r\n if (!disableObservation) {\r\n this.dispatch(observeId)\r\n }\r\n }\r\n return deletedCount\r\n }\r\n\r\n // find\r\n find(args: FindArgs<RS>): MakeRowType<RS>[] {\r\n const { where, disableObservation, observeId } = args;\r\n\r\n if (!disableObservation) {\r\n this.observe(observeId);\r\n }\r\n\r\n const rows: MakeRowType<RS>[] = [];\r\n\r\n for (const row of this._rows) {\r\n let match = true;\r\n\r\n for (const wcol in where) {\r\n const condition = where[wcol];\r\n const rvalue = row[wcol];\r\n\r\n if (typeof condition === \"object\" && condition !== null) {\r\n\r\n if (condition.contain !== undefined) {\r\n if (typeof rvalue !== \"string\" || !rvalue.includes(condition.contain as any)) {\r\n match = false;\r\n break;\r\n }\r\n }\r\n\r\n if (condition.startWith !== undefined) {\r\n if (typeof rvalue !== \"string\" || !rvalue.startsWith(condition.startWith as any)) {\r\n match = false;\r\n break;\r\n }\r\n }\r\n\r\n if (condition.endWith !== undefined) {\r\n if (typeof rvalue !== \"string\" || !rvalue.endsWith(condition.endWith as any)) {\r\n match = false;\r\n break;\r\n }\r\n }\r\n\r\n if (condition.equalWith !== undefined && rvalue !== condition.equalWith) {\r\n match = false;\r\n break;\r\n }\r\n\r\n if (condition.notEqualWith !== undefined && rvalue === condition.notEqualWith) {\r\n match = false;\r\n break;\r\n }\r\n\r\n if (condition.gt !== undefined) {\r\n if (typeof rvalue !== \"number\" || !(rvalue > condition.gt)) {\r\n match = false;\r\n break;\r\n }\r\n }\r\n\r\n if (condition.lt !== undefined) {\r\n if (typeof rvalue !== \"number\" || !(rvalue < condition.lt)) {\r\n match = false;\r\n break;\r\n }\r\n }\r\n\r\n if (condition.gte !== undefined) {\r\n if (typeof rvalue !== \"number\" || !(rvalue >= condition.gte)) {\r\n match = false;\r\n break;\r\n }\r\n }\r\n\r\n if (condition.lte !== undefined) {\r\n if (typeof rvalue !== \"number\" || !(rvalue <= condition.lte)) {\r\n match = false;\r\n break;\r\n }\r\n }\r\n\r\n } else {\r\n if (condition !== rvalue) {\r\n match = false;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (match) {\r\n rows.push(row);\r\n }\r\n }\r\n\r\n return rows;\r\n }\r\n\r\n findOne(args: FindArgs<RS>): MakeRowType<RS> | null {\r\n const rows = this.find(args)\r\n return rows.length > 0 ? rows[0] : null\r\n }\r\n\r\n getIndex(args: FindArgs<RS>): number {\r\n const row = this.findOne(args)\r\n if (row) {\r\n return this._rows.findIndex(r => r.rid === row.rid)\r\n }\r\n return -1\r\n }\r\n\r\n move(args: MoveArgs<RS>): boolean {\r\n const { fromIndex, toIndex, disableObservation, observeId } = args\r\n if (fromIndex < 0 || toIndex < 0) return false\r\n const [movedRow] = this._rows.splice(fromIndex, 1)\r\n this._rows.splice(toIndex, 0, movedRow)\r\n if (!disableObservation) {\r\n this.dispatch(observeId)\r\n }\r\n return true\r\n }\r\n\r\n setMeta<T extends keyof Infer<MS>>(key: T, value: Infer<MS>[T], disableObservation = false) {\r\n this._meta.set(key, this._meta_schema ? (this._meta_schema as any)[key].parse(value) : value)\r\n if (!disableObservation) {\r\n this.dispatch()\r\n }\r\n }\r\n\r\n getMeta<T extends keyof Infer<MS>>(key: T, disableObservation = false): Infer<MS>[T] | undefined {\r\n if (!disableObservation) {\r\n this.observe();\r\n }\r\n return this._meta.get(key) as Infer<MS>[T] | undefined\r\n }\r\n\r\n deleteMeta<T extends keyof Infer<MS>>(key: T, disableObservation = false) {\r\n this._meta.delete(key)\r\n if (!disableObservation) {\r\n this.dispatch()\r\n }\r\n }\r\n\r\n clearMeta(disableObservation = false) {\r\n this._meta.clear()\r\n if (!disableObservation) {\r\n this.dispatch()\r\n }\r\n }\r\n}\r\n\r\nexport default Store"],"names":[],"mappings":";;;;AAKA;AACA;AACA;AAGA;;;AAEW;AACA;;;AAeA;;AAEF;AACA;;AAEA;;AAEG;AACG;AACH;;AAEL;;AACJ;;AAfG;;AAiBH;AACG;AACA;AACA;;;AAGS;AACG;AACF;AAAM;AACJ;;AAEM;AACF;AACH;AAAM;AACJ;AACF;AACH;AACH;AAAC;AACC;AACF;AACJ;;;;;;AAOF;;;;;;AAOA;;;AAIJ;;;AAGG;AACG;AACG;AACA;AACF;AACD;AACF;;AAEE;AACF;AACD;;;AAGH;;;;AAIG;AACG;;;AAEA;AACF;;;AASD;;AAEG;AACF;AACD;;;AAIH;;;;AAIG;AACG;;;AAEA;AACF;AAED;AACA;AACG;AACG;AACA;;AAOA;;AAEF;;AAEE;AACF;AACH;AACD;;;AAIH;;AAEG;;AAEG;AACF;;AAGD;AACG;AACA;;AAEG;AACF;AACH;AACD;;;AAIH;;;AAIM;AACF;;AAID;;AAGG;AACG;AACA;;AAIG;AACG;;;AAGC;AACH;AAED;AACG;;;AAGC;AACH;AAED;AACG;;;AAGC;AACH;;;;AAKA;;;;AAKA;AAED;AACG;;;AAGC;AACH;AAED;AACG;;;AAGC;AACH;AAED;AACG;;;AAGC;AACH;AAED;AACG;;;AAGC;AACH;AAEH;AAAM;;;;AAIH;AACH;AACH;AAED;AACG;AACF;AACH;AAED;;AAGH;;AAEG;;AAGH;;AAEG;AACG;AACF;;;AAIJ;;AAEG;AAAkC;AAClC;;;AAGG;AACF;AACD;;AAGH;AACG;;;AAGC;;AAGJ;;;AAGI;;;AAIJ;AACG;;;AAGC;;;AAID;;;AAGC;;AAEN;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-rock",
|
|
3
|
-
"version": "3.2.
|
|
3
|
+
"version": "3.2.13",
|
|
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.cjs",
|
|
@@ -19,6 +19,6 @@
|
|
|
19
19
|
},
|
|
20
20
|
"homepage": "https://github.com/devnax/react-rock#readme",
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"xanv": "^1.1.
|
|
22
|
+
"xanv": "^1.1.25"
|
|
23
23
|
}
|
|
24
24
|
}
|