react-rock 3.1.13 → 3.2.0
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 +86 -2
- package/Finder.js.map +1 -7
- package/Finder.mjs +86 -0
- package/Finder.mjs.map +1 -0
- package/index.d.ts +58 -4
- package/index.js +212 -2
- package/index.js.map +1 -7
- package/index.mjs +212 -0
- package/index.mjs.map +1 -0
- package/package.json +8 -25
- package/Finder.d.ts +0 -8
- package/cjs/Finder.js +0 -2
- package/cjs/Finder.js.map +0 -7
- package/cjs/index.js +0 -2
- package/cjs/index.js.map +0 -7
- package/cjs/types.js +0 -2
- package/cjs/types.js.map +0 -7
- package/types.d.ts +0 -51
- package/types.js +0 -1
- package/types.js.map +0 -7
package/Finder.js
CHANGED
|
@@ -1,2 +1,86 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var tslib_es6=require('./node_modules/tslib/tslib.es6.js');var isOb = function (ob) { return typeof ob === "object" && !Array.isArray(ob) && ob !== null; };
|
|
2
|
+
var isNum = function (n) { return typeof n === 'number'; };
|
|
3
|
+
var excuteQuery = {
|
|
4
|
+
contain: function (v, qv) { return typeof v === 'string' && v.search(qv) !== -1; },
|
|
5
|
+
startWith: function (v, qv) { return typeof v === 'string' && v.startsWith(qv); },
|
|
6
|
+
endWith: function (v, qv) { return typeof v === 'string' && v.endsWith(qv); },
|
|
7
|
+
equalWith: function (v, qv) { return v === qv; },
|
|
8
|
+
notEqualWith: function (v, qv) { return v !== qv; },
|
|
9
|
+
lt: function (v, qv) { return isNum(v) && v < qv; },
|
|
10
|
+
gt: function (v, qv) { return isNum(v) && v > qv; },
|
|
11
|
+
lte: function (v, qv) { return isNum(v) && v <= qv; },
|
|
12
|
+
gte: function (v, qv) { return isNum(v) && v >= qv; },
|
|
13
|
+
};
|
|
14
|
+
var isInQuery = function (rowVal, queryObject) {
|
|
15
|
+
var match = true;
|
|
16
|
+
for (var queryKey in queryObject) {
|
|
17
|
+
var qVal = queryObject[queryKey];
|
|
18
|
+
var qcb = excuteQuery[queryKey];
|
|
19
|
+
if (qcb && !qcb(rowVal, qVal)) {
|
|
20
|
+
match = false;
|
|
21
|
+
break;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return match;
|
|
25
|
+
};
|
|
26
|
+
var Finder = function (rows, query, args) {
|
|
27
|
+
var result = [];
|
|
28
|
+
var indexes = [];
|
|
29
|
+
var ids = [];
|
|
30
|
+
for (var i = 0; i < rows.length; i++) {
|
|
31
|
+
var row = rows[i];
|
|
32
|
+
var found = false;
|
|
33
|
+
if (isOb(query)) {
|
|
34
|
+
for (var rowKey in query) {
|
|
35
|
+
var queryVal = query[rowKey];
|
|
36
|
+
if (!(rowKey in row))
|
|
37
|
+
break;
|
|
38
|
+
if (isOb(queryVal)) {
|
|
39
|
+
if (isInQuery(row[rowKey], queryVal)) {
|
|
40
|
+
found = true;
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
found = false;
|
|
44
|
+
break;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
else if (row[rowKey] === queryVal) {
|
|
48
|
+
found = true;
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
found = false;
|
|
52
|
+
break;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
found = true;
|
|
58
|
+
}
|
|
59
|
+
if (found) {
|
|
60
|
+
if (args === null || args === void 0 ? void 0 : args.getRow) {
|
|
61
|
+
var r = args.getRow(tslib_es6.__assign({}, row), i);
|
|
62
|
+
if (r) {
|
|
63
|
+
row = r;
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
result.push(tslib_es6.__assign(tslib_es6.__assign({}, row), { _index: i }));
|
|
70
|
+
indexes.push(i);
|
|
71
|
+
ids.push(row._id);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
var take = (args === null || args === void 0 ? void 0 : args.take) || result.length;
|
|
75
|
+
var skip = (args === null || args === void 0 ? void 0 : args.skip) || 0;
|
|
76
|
+
if ((args === null || args === void 0 ? void 0 : args.take) && (args === null || args === void 0 ? void 0 : args.skip)) {
|
|
77
|
+
result = result.splice(skip, take);
|
|
78
|
+
}
|
|
79
|
+
else if (!(args === null || args === void 0 ? void 0 : args.skip) && (args === null || args === void 0 ? void 0 : args.take)) {
|
|
80
|
+
result.splice(args.take);
|
|
81
|
+
}
|
|
82
|
+
else if (!(args === null || args === void 0 ? void 0 : args.take) && (args === null || args === void 0 ? void 0 : args.skip)) {
|
|
83
|
+
result = result.splice(args.skip);
|
|
84
|
+
}
|
|
85
|
+
return { rows: result, indexes: indexes, ids: ids };
|
|
86
|
+
};exports.default=Finder;exports.isOb=isOb;//# sourceMappingURL=Finder.js.map
|
package/Finder.js.map
CHANGED
|
@@ -1,7 +1 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/Finder.ts"],
|
|
4
|
-
"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"],
|
|
5
|
-
"mappings": "AAEO,MAAMA,EAAQC,GAAY,OAAOA,GAAO,UAAY,CAAC,MAAM,QAAQA,CAAE,GAAKA,IAAO,KAClFC,EAASC,GAAW,OAAOA,GAAM,SACjCC,EAAmB,CACrB,QAAS,CAACC,EAAQC,IAAY,OAAOD,GAAM,UAAYA,EAAE,OAAOC,CAAE,IAAM,GACxE,UAAW,CAACD,EAAQC,IAAY,OAAOD,GAAM,UAAYA,EAAE,WAAWC,CAAE,EACxE,QAAS,CAACD,EAAQC,IAAY,OAAOD,GAAM,UAAYA,EAAE,SAASC,CAAE,EACpE,UAAW,CAACD,EAAQC,IAAYD,IAAMC,EACtC,aAAc,CAACD,EAAQC,IAAYD,IAAMC,EACzC,GAAI,CAACD,EAAQC,IAAYJ,EAAMG,CAAC,GAAKA,EAAIC,EACzC,GAAI,CAACD,EAAQC,IAAYJ,EAAMG,CAAC,GAAKA,EAAIC,EACzC,IAAK,CAACD,EAAQC,IAAYJ,EAAMG,CAAC,GAAKA,GAAKC,EAC3C,IAAK,CAACD,EAAQC,IAAYJ,EAAMG,CAAC,GAAKA,GAAKC,CAC/C,EAEMC,EAAY,CAAMC,EAAaC,IAAgC,CACjE,IAAIC,EAAQ,GACZ,QAASC,KAAYF,EAAa,CAC9B,IAAIG,EAAQH,EAAoBE,CAAQ,EACxC,MAAME,EAAMT,EAAYO,CAAQ,EAChC,GAAIE,GAAO,CAACA,EAAIL,EAAQI,CAAI,EAAG,CAC3BF,EAAQ,GACR,KACJ,CACJ,CACA,OAAOA,CACX,EAEMI,EAAS,CAAqBC,EAAaC,EAA8BC,IAA+B,CAC1G,IAAIC,EAAgB,CAAC,EACjBC,EAAoB,CAAC,EACrBC,EAAgB,CAAC,EAErB,QAASC,EAAI,EAAGA,EAAIN,EAAK,OAAQM,IAAK,CAClC,IAAIC,EAAMP,EAAKM,CAAC,EACZE,EAAQ,GACZ,GAAIvB,EAAKgB,CAAK,EACV,QAASQ,KAAUR,EAAO,CACtB,IAAIS,EAAWT,EAAMQ,CAAM,EAC3B,GAAI,EAAEA,KAAUF,GAAM,MAEtB,GAAItB,EAAKyB,CAAQ,EACb,GAAIlB,EAAUe,EAAIE,CAAM,EAAGC,CAAe,EACtCF,EAAQ,OACL,CACHA,EAAQ,GACR,KACJ,SACOD,EAAIE,CAAM,IAAMC,EACvBF,EAAQ,OACL,CACHA,EAAQ,GACR,KACJ,CACJ,MAEAA,EAAQ,GAGZ,GAAIA,EAAO,CACP,GAAIN,GAAM,OAAQ,CACd,IAAIS,EAAIT,EAAK,OAAO,CAAE,GAAGK,CAAI,EAAGD,CAAC,EACjC,GAAIK,EACAJ,EAAMI,MAEN,SAER,CACAR,EAAO,KAAK,CAAE,GAAGI,EAAK,OAAQD,CAAE,CAAC,EACjCF,EAAQ,KAAKE,CAAC,EACdD,EAAI,KAAME,EAAY,GAAG,CAC7B,CACJ,CAEA,MAAMK,EAAOV,GAAM,MAAQC,EAAO,OAC5BU,EAAOX,GAAM,MAAQ,EAE3B,OAAIA,GAAM,MAAQA,GAAM,KACpBC,EAASA,EAAO,OAAOU,EAAMD,CAAI,EAC1B,CAACV,GAAM,MAAQA,GAAM,KAC5BC,EAAO,OAAOD,EAAK,IAAI,EAChB,CAACA,GAAM,MAAQA,GAAM,OAC5BC,EAASA,EAAO,OAAOD,EAAK,IAAI,GAG7B,CAAE,KAAMC,EAAQ,QAAAC,EAAS,IAAAC,CAAI,CACxC,EAEA,IAAOS,EAAQf",
|
|
6
|
-
"names": ["isOb", "ob", "isNum", "n", "excuteQuery", "v", "qv", "isInQuery", "rowVal", "queryObject", "match", "queryKey", "qVal", "qcb", "Finder", "rows", "query", "args", "result", "indexes", "ids", "i", "row", "found", "rowKey", "queryVal", "r", "take", "skip", "Finder_default"]
|
|
7
|
-
}
|
|
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":["__assign"],"mappings":"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"}
|
package/Finder.mjs
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import {__assign}from'./node_modules/tslib/tslib.es6.mjs';var isOb = function (ob) { return typeof ob === "object" && !Array.isArray(ob) && ob !== null; };
|
|
2
|
+
var isNum = function (n) { return typeof n === 'number'; };
|
|
3
|
+
var excuteQuery = {
|
|
4
|
+
contain: function (v, qv) { return typeof v === 'string' && v.search(qv) !== -1; },
|
|
5
|
+
startWith: function (v, qv) { return typeof v === 'string' && v.startsWith(qv); },
|
|
6
|
+
endWith: function (v, qv) { return typeof v === 'string' && v.endsWith(qv); },
|
|
7
|
+
equalWith: function (v, qv) { return v === qv; },
|
|
8
|
+
notEqualWith: function (v, qv) { return v !== qv; },
|
|
9
|
+
lt: function (v, qv) { return isNum(v) && v < qv; },
|
|
10
|
+
gt: function (v, qv) { return isNum(v) && v > qv; },
|
|
11
|
+
lte: function (v, qv) { return isNum(v) && v <= qv; },
|
|
12
|
+
gte: function (v, qv) { return isNum(v) && v >= qv; },
|
|
13
|
+
};
|
|
14
|
+
var isInQuery = function (rowVal, queryObject) {
|
|
15
|
+
var match = true;
|
|
16
|
+
for (var queryKey in queryObject) {
|
|
17
|
+
var qVal = queryObject[queryKey];
|
|
18
|
+
var qcb = excuteQuery[queryKey];
|
|
19
|
+
if (qcb && !qcb(rowVal, qVal)) {
|
|
20
|
+
match = false;
|
|
21
|
+
break;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return match;
|
|
25
|
+
};
|
|
26
|
+
var Finder = function (rows, query, args) {
|
|
27
|
+
var result = [];
|
|
28
|
+
var indexes = [];
|
|
29
|
+
var ids = [];
|
|
30
|
+
for (var i = 0; i < rows.length; i++) {
|
|
31
|
+
var row = rows[i];
|
|
32
|
+
var found = false;
|
|
33
|
+
if (isOb(query)) {
|
|
34
|
+
for (var rowKey in query) {
|
|
35
|
+
var queryVal = query[rowKey];
|
|
36
|
+
if (!(rowKey in row))
|
|
37
|
+
break;
|
|
38
|
+
if (isOb(queryVal)) {
|
|
39
|
+
if (isInQuery(row[rowKey], queryVal)) {
|
|
40
|
+
found = true;
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
found = false;
|
|
44
|
+
break;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
else if (row[rowKey] === queryVal) {
|
|
48
|
+
found = true;
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
found = false;
|
|
52
|
+
break;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
found = true;
|
|
58
|
+
}
|
|
59
|
+
if (found) {
|
|
60
|
+
if (args === null || args === void 0 ? void 0 : args.getRow) {
|
|
61
|
+
var r = args.getRow(__assign({}, row), i);
|
|
62
|
+
if (r) {
|
|
63
|
+
row = r;
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
result.push(__assign(__assign({}, row), { _index: i }));
|
|
70
|
+
indexes.push(i);
|
|
71
|
+
ids.push(row._id);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
var take = (args === null || args === void 0 ? void 0 : args.take) || result.length;
|
|
75
|
+
var skip = (args === null || args === void 0 ? void 0 : args.skip) || 0;
|
|
76
|
+
if ((args === null || args === void 0 ? void 0 : args.take) && (args === null || args === void 0 ? void 0 : args.skip)) {
|
|
77
|
+
result = result.splice(skip, take);
|
|
78
|
+
}
|
|
79
|
+
else if (!(args === null || args === void 0 ? void 0 : args.skip) && (args === null || args === void 0 ? void 0 : args.take)) {
|
|
80
|
+
result.splice(args.take);
|
|
81
|
+
}
|
|
82
|
+
else if (!(args === null || args === void 0 ? void 0 : args.take) && (args === null || args === void 0 ? void 0 : args.skip)) {
|
|
83
|
+
result = result.splice(args.skip);
|
|
84
|
+
}
|
|
85
|
+
return { rows: result, indexes: indexes, ids: ids };
|
|
86
|
+
};export{Finder as default,isOb};//# sourceMappingURL=Finder.mjs.map
|
package/Finder.mjs.map
ADDED
|
@@ -0,0 +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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"}
|
package/index.d.ts
CHANGED
|
@@ -1,7 +1,61 @@
|
|
|
1
1
|
import { Component } from 'react';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
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
|
+
};
|
|
54
|
+
|
|
55
|
+
declare class StoreComponent<P = {}, S = {}, SS = any> extends Component<P, S, SS> {
|
|
5
56
|
constructor(props: P);
|
|
6
57
|
}
|
|
7
|
-
|
|
58
|
+
declare const createStore: <Row extends object, MetaProps extends object = {}>(rows?: Row[] | undefined, meta?: MetaProps | undefined) => IStateHandler<Row, MetaProps>;
|
|
59
|
+
|
|
60
|
+
export { StoreComponent, createStore };
|
|
61
|
+
export type { ArgsType, FinderArgsType, GetRowCallback, IStateHandler, QueryType, QueryValueType, RowPredefinedFields, RowType, StateDataType, WhereType };
|
package/index.js
CHANGED
|
@@ -1,2 +1,212 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var tslib_es6=require('./node_modules/tslib/tslib.es6.js'),react=require('react'),Finder=require('./Finder.js');var StoreComponent = /** @class */ (function (_super) {
|
|
2
|
+
tslib_es6.__extends(StoreComponent, _super);
|
|
3
|
+
function StoreComponent(props) {
|
|
4
|
+
var _this = _super.call(this, props) || this;
|
|
5
|
+
var R = _this.render.bind(_this);
|
|
6
|
+
_this.render = function () { return react.createElement(react.Fragment, null, react.createElement(R, null)); };
|
|
7
|
+
return _this;
|
|
8
|
+
}
|
|
9
|
+
return StoreComponent;
|
|
10
|
+
}(react.Component));
|
|
11
|
+
var _random = function () { return Date.now() + Math.floor(1000 + Math.random() * 9000); };
|
|
12
|
+
var _uid = function () { return _random().toString(32).replace("-", "").substring(0, 15); };
|
|
13
|
+
var _row = function (row) {
|
|
14
|
+
if (!Finder.isOb(row))
|
|
15
|
+
throw new Error("State row must be an object. given ".concat(typeof row, ": ").concat(row));
|
|
16
|
+
return tslib_es6.__assign(tslib_es6.__assign({}, row), { _id: row._id || _uid(), _observe: row._observe || _random() });
|
|
17
|
+
};
|
|
18
|
+
var createStore = function (rows, meta) {
|
|
19
|
+
var factory = {
|
|
20
|
+
data: {
|
|
21
|
+
state: [],
|
|
22
|
+
meta: new Map()
|
|
23
|
+
},
|
|
24
|
+
dispatches: {
|
|
25
|
+
state: new Map(),
|
|
26
|
+
meta: new Map()
|
|
27
|
+
},
|
|
28
|
+
observe: {
|
|
29
|
+
state: Math.random(),
|
|
30
|
+
meta: Math.random()
|
|
31
|
+
},
|
|
32
|
+
cache: new Map()
|
|
33
|
+
};
|
|
34
|
+
var fire = function (type) {
|
|
35
|
+
factory.observe[type] = Math.random();
|
|
36
|
+
factory.dispatches[type].forEach(function (cb, key) {
|
|
37
|
+
try {
|
|
38
|
+
cb();
|
|
39
|
+
}
|
|
40
|
+
catch (_err) {
|
|
41
|
+
factory.dispatches[type].delete(key);
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
var useHook = function (type) {
|
|
46
|
+
var id = react.useId();
|
|
47
|
+
var _a = react.useState(0), dispatch = _a[1];
|
|
48
|
+
react.useEffect(function () {
|
|
49
|
+
factory.dispatches[type].set(id, function () { return dispatch(Math.random()); });
|
|
50
|
+
return function () {
|
|
51
|
+
factory.dispatches[type].delete(id);
|
|
52
|
+
};
|
|
53
|
+
}, []);
|
|
54
|
+
};
|
|
55
|
+
for (var _i = 0, _a = (rows || []); _i < _a.length; _i++) {
|
|
56
|
+
var row = _a[_i];
|
|
57
|
+
factory.data.state.push(_row(row));
|
|
58
|
+
}
|
|
59
|
+
for (var key in (meta || {})) {
|
|
60
|
+
factory.data.meta.set(key, meta[key]);
|
|
61
|
+
}
|
|
62
|
+
var StateHandler = /** @class */ (function () {
|
|
63
|
+
function StateHandler() {
|
|
64
|
+
}
|
|
65
|
+
StateHandler.create = function (row, freeze) {
|
|
66
|
+
var r = _row(row);
|
|
67
|
+
factory.data.state.push(r);
|
|
68
|
+
if (!freeze) {
|
|
69
|
+
fire("state");
|
|
70
|
+
}
|
|
71
|
+
return r;
|
|
72
|
+
};
|
|
73
|
+
StateHandler.createMany = function (rows, freeze) {
|
|
74
|
+
var rs = [];
|
|
75
|
+
for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {
|
|
76
|
+
var row = rows_1[_i];
|
|
77
|
+
var r = _row(row);
|
|
78
|
+
factory.data.state.push(r);
|
|
79
|
+
rs.push(r);
|
|
80
|
+
}
|
|
81
|
+
if (!freeze) {
|
|
82
|
+
fire("state");
|
|
83
|
+
}
|
|
84
|
+
return rs;
|
|
85
|
+
};
|
|
86
|
+
StateHandler.update = function (row, where, freeze) {
|
|
87
|
+
Finder.default(factory.data.state, where, {
|
|
88
|
+
getRow: function (r, index) {
|
|
89
|
+
factory.data.state[index] = _row(tslib_es6.__assign(tslib_es6.__assign({}, r), row));
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
if (!freeze) {
|
|
93
|
+
fire("state");
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
StateHandler.updateAll = function (row, freeze) {
|
|
97
|
+
for (var i = 0; i < factory.data.state.length; i++) {
|
|
98
|
+
factory.data.state[i] = _row(tslib_es6.__assign(tslib_es6.__assign({}, factory.data.state[i]), row));
|
|
99
|
+
}
|
|
100
|
+
if (!freeze) {
|
|
101
|
+
fire("state");
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
StateHandler.delete = function (where, freeze) {
|
|
105
|
+
var found = Finder.default(factory.data.state, where);
|
|
106
|
+
factory.data.state = factory.data.state.filter(function (row) { return !found.ids.includes(row._id); });
|
|
107
|
+
if (!freeze) {
|
|
108
|
+
fire("state");
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
StateHandler.move = function (oldIdx, newIdx, freeze) {
|
|
112
|
+
var row = factory.data.state[oldIdx];
|
|
113
|
+
if (row) {
|
|
114
|
+
factory.data.state.splice(oldIdx, 1);
|
|
115
|
+
factory.data.state.splice(newIdx, 0, _row(row));
|
|
116
|
+
if (!freeze) {
|
|
117
|
+
fire("state");
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
StateHandler.clearAll = function (freeze) {
|
|
122
|
+
factory.data.state = [];
|
|
123
|
+
if (!freeze) {
|
|
124
|
+
fire("state");
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
StateHandler.getAll = function (args) {
|
|
128
|
+
try {
|
|
129
|
+
if (!(args === null || args === void 0 ? void 0 : args.freeze)) {
|
|
130
|
+
useHook("state");
|
|
131
|
+
}
|
|
132
|
+
var cacheKey = factory.observe.state.toString() + ((args === null || args === void 0 ? void 0 : args.skip) || "") + ((args === null || args === void 0 ? void 0 : args.take) || "");
|
|
133
|
+
var items = factory.cache.get(cacheKey);
|
|
134
|
+
if (items === null || items === void 0 ? void 0 : items.length) {
|
|
135
|
+
return items;
|
|
136
|
+
}
|
|
137
|
+
var rows_2 = Finder.default(factory.data.state, null, args).rows;
|
|
138
|
+
factory.cache.set(cacheKey, rows_2);
|
|
139
|
+
return rows_2;
|
|
140
|
+
}
|
|
141
|
+
catch (error) {
|
|
142
|
+
return Finder.default(factory.data.state, null, args);
|
|
143
|
+
}
|
|
144
|
+
};
|
|
145
|
+
StateHandler.find = function (where, args) {
|
|
146
|
+
try {
|
|
147
|
+
if (!(args === null || args === void 0 ? void 0 : args.freeze)) {
|
|
148
|
+
useHook("state");
|
|
149
|
+
}
|
|
150
|
+
var cacheKey = factory.observe.state.toString() + ((args === null || args === void 0 ? void 0 : args.skip) || "") + ((args === null || args === void 0 ? void 0 : args.take) || "") + JSON.stringify(where);
|
|
151
|
+
var items = factory.cache.get(cacheKey);
|
|
152
|
+
if (items === null || items === void 0 ? void 0 : items.length) {
|
|
153
|
+
// return items
|
|
154
|
+
}
|
|
155
|
+
var rows_3 = Finder.default(factory.data.state, where, args).rows;
|
|
156
|
+
factory.cache.set(cacheKey, rows_3);
|
|
157
|
+
return rows_3;
|
|
158
|
+
}
|
|
159
|
+
catch (error) {
|
|
160
|
+
return Finder.default(factory.data.state, where, args).rows;
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
StateHandler.findFirst = function (where, freeze) {
|
|
164
|
+
return StateHandler.find(where, { freeze: freeze })[0];
|
|
165
|
+
};
|
|
166
|
+
StateHandler.findById = function (_id, freeze) {
|
|
167
|
+
return StateHandler.findFirst({ _id: _id }, freeze);
|
|
168
|
+
};
|
|
169
|
+
StateHandler.setMeta = function (key, value, freeze) {
|
|
170
|
+
factory.data.meta.set(key, value);
|
|
171
|
+
if (!freeze) {
|
|
172
|
+
fire("meta");
|
|
173
|
+
}
|
|
174
|
+
};
|
|
175
|
+
StateHandler.getMeta = function (key, freeze) {
|
|
176
|
+
try {
|
|
177
|
+
if (!freeze) {
|
|
178
|
+
useHook("meta");
|
|
179
|
+
}
|
|
180
|
+
return factory.data.meta.get(key);
|
|
181
|
+
}
|
|
182
|
+
catch (error) {
|
|
183
|
+
return factory.data.meta.get(key);
|
|
184
|
+
}
|
|
185
|
+
};
|
|
186
|
+
StateHandler.getAllMeta = function (freeze) {
|
|
187
|
+
try {
|
|
188
|
+
if (!freeze) {
|
|
189
|
+
useHook("meta");
|
|
190
|
+
}
|
|
191
|
+
return Object.fromEntries(factory.data.meta);
|
|
192
|
+
}
|
|
193
|
+
catch (error) {
|
|
194
|
+
return Object.fromEntries(factory.data.meta);
|
|
195
|
+
}
|
|
196
|
+
};
|
|
197
|
+
StateHandler.deleteMeta = function (key, freeze) {
|
|
198
|
+
factory.data.meta.delete(key);
|
|
199
|
+
if (!freeze) {
|
|
200
|
+
fire("meta");
|
|
201
|
+
}
|
|
202
|
+
};
|
|
203
|
+
StateHandler.clearMeta = function (freeze) {
|
|
204
|
+
factory.data.meta.clear();
|
|
205
|
+
if (!freeze) {
|
|
206
|
+
fire("meta");
|
|
207
|
+
}
|
|
208
|
+
};
|
|
209
|
+
return StateHandler;
|
|
210
|
+
}());
|
|
211
|
+
return StateHandler;
|
|
212
|
+
};exports.StoreComponent=StoreComponent;exports.createStore=createStore;//# sourceMappingURL=index.js.map
|
package/index.js.map
CHANGED
|
@@ -1,7 +1 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/index.ts"],
|
|
4
|
-
"sourcesContent": ["\"use client\"\nimport { 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"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["useEffect", "useId", "useState", "createElement", "Fragment", "Component", "Finder", "isOb", "StoreComponent", "props", "R", "_random", "_uid", "_row", "row", "createStore", "rows", "meta", "factory", "fire", "type", "cb", "key", "useHook", "id", "dispatch", "StateHandler", "freeze", "r", "rs", "where", "index", "i", "found", "oldIdx", "newIdx", "args", "cacheKey", "items", "_id", "value"]
|
|
7
|
-
}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["\"use client\"\nimport { 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":["__extends","createElement","Fragment","Component","isOb","__assign","useId","useState","useEffect","Finder"],"mappings":"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"}
|
package/index.mjs
ADDED
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
import {__extends,__assign}from'./node_modules/tslib/tslib.es6.mjs';import {createElement,Fragment,Component,useId,useState,useEffect}from'react';import Finder,{isOb}from'./Finder.mjs';var StoreComponent = /** @class */ (function (_super) {
|
|
2
|
+
__extends(StoreComponent, _super);
|
|
3
|
+
function StoreComponent(props) {
|
|
4
|
+
var _this = _super.call(this, props) || this;
|
|
5
|
+
var R = _this.render.bind(_this);
|
|
6
|
+
_this.render = function () { return createElement(Fragment, null, createElement(R, null)); };
|
|
7
|
+
return _this;
|
|
8
|
+
}
|
|
9
|
+
return StoreComponent;
|
|
10
|
+
}(Component));
|
|
11
|
+
var _random = function () { return Date.now() + Math.floor(1000 + Math.random() * 9000); };
|
|
12
|
+
var _uid = function () { return _random().toString(32).replace("-", "").substring(0, 15); };
|
|
13
|
+
var _row = function (row) {
|
|
14
|
+
if (!isOb(row))
|
|
15
|
+
throw new Error("State row must be an object. given ".concat(typeof row, ": ").concat(row));
|
|
16
|
+
return __assign(__assign({}, row), { _id: row._id || _uid(), _observe: row._observe || _random() });
|
|
17
|
+
};
|
|
18
|
+
var createStore = function (rows, meta) {
|
|
19
|
+
var factory = {
|
|
20
|
+
data: {
|
|
21
|
+
state: [],
|
|
22
|
+
meta: new Map()
|
|
23
|
+
},
|
|
24
|
+
dispatches: {
|
|
25
|
+
state: new Map(),
|
|
26
|
+
meta: new Map()
|
|
27
|
+
},
|
|
28
|
+
observe: {
|
|
29
|
+
state: Math.random(),
|
|
30
|
+
meta: Math.random()
|
|
31
|
+
},
|
|
32
|
+
cache: new Map()
|
|
33
|
+
};
|
|
34
|
+
var fire = function (type) {
|
|
35
|
+
factory.observe[type] = Math.random();
|
|
36
|
+
factory.dispatches[type].forEach(function (cb, key) {
|
|
37
|
+
try {
|
|
38
|
+
cb();
|
|
39
|
+
}
|
|
40
|
+
catch (_err) {
|
|
41
|
+
factory.dispatches[type].delete(key);
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
var useHook = function (type) {
|
|
46
|
+
var id = useId();
|
|
47
|
+
var _a = useState(0), dispatch = _a[1];
|
|
48
|
+
useEffect(function () {
|
|
49
|
+
factory.dispatches[type].set(id, function () { return dispatch(Math.random()); });
|
|
50
|
+
return function () {
|
|
51
|
+
factory.dispatches[type].delete(id);
|
|
52
|
+
};
|
|
53
|
+
}, []);
|
|
54
|
+
};
|
|
55
|
+
for (var _i = 0, _a = (rows || []); _i < _a.length; _i++) {
|
|
56
|
+
var row = _a[_i];
|
|
57
|
+
factory.data.state.push(_row(row));
|
|
58
|
+
}
|
|
59
|
+
for (var key in (meta || {})) {
|
|
60
|
+
factory.data.meta.set(key, meta[key]);
|
|
61
|
+
}
|
|
62
|
+
var StateHandler = /** @class */ (function () {
|
|
63
|
+
function StateHandler() {
|
|
64
|
+
}
|
|
65
|
+
StateHandler.create = function (row, freeze) {
|
|
66
|
+
var r = _row(row);
|
|
67
|
+
factory.data.state.push(r);
|
|
68
|
+
if (!freeze) {
|
|
69
|
+
fire("state");
|
|
70
|
+
}
|
|
71
|
+
return r;
|
|
72
|
+
};
|
|
73
|
+
StateHandler.createMany = function (rows, freeze) {
|
|
74
|
+
var rs = [];
|
|
75
|
+
for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {
|
|
76
|
+
var row = rows_1[_i];
|
|
77
|
+
var r = _row(row);
|
|
78
|
+
factory.data.state.push(r);
|
|
79
|
+
rs.push(r);
|
|
80
|
+
}
|
|
81
|
+
if (!freeze) {
|
|
82
|
+
fire("state");
|
|
83
|
+
}
|
|
84
|
+
return rs;
|
|
85
|
+
};
|
|
86
|
+
StateHandler.update = function (row, where, freeze) {
|
|
87
|
+
Finder(factory.data.state, where, {
|
|
88
|
+
getRow: function (r, index) {
|
|
89
|
+
factory.data.state[index] = _row(__assign(__assign({}, r), row));
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
if (!freeze) {
|
|
93
|
+
fire("state");
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
StateHandler.updateAll = function (row, freeze) {
|
|
97
|
+
for (var i = 0; i < factory.data.state.length; i++) {
|
|
98
|
+
factory.data.state[i] = _row(__assign(__assign({}, factory.data.state[i]), row));
|
|
99
|
+
}
|
|
100
|
+
if (!freeze) {
|
|
101
|
+
fire("state");
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
StateHandler.delete = function (where, freeze) {
|
|
105
|
+
var found = Finder(factory.data.state, where);
|
|
106
|
+
factory.data.state = factory.data.state.filter(function (row) { return !found.ids.includes(row._id); });
|
|
107
|
+
if (!freeze) {
|
|
108
|
+
fire("state");
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
StateHandler.move = function (oldIdx, newIdx, freeze) {
|
|
112
|
+
var row = factory.data.state[oldIdx];
|
|
113
|
+
if (row) {
|
|
114
|
+
factory.data.state.splice(oldIdx, 1);
|
|
115
|
+
factory.data.state.splice(newIdx, 0, _row(row));
|
|
116
|
+
if (!freeze) {
|
|
117
|
+
fire("state");
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
StateHandler.clearAll = function (freeze) {
|
|
122
|
+
factory.data.state = [];
|
|
123
|
+
if (!freeze) {
|
|
124
|
+
fire("state");
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
StateHandler.getAll = function (args) {
|
|
128
|
+
try {
|
|
129
|
+
if (!(args === null || args === void 0 ? void 0 : args.freeze)) {
|
|
130
|
+
useHook("state");
|
|
131
|
+
}
|
|
132
|
+
var cacheKey = factory.observe.state.toString() + ((args === null || args === void 0 ? void 0 : args.skip) || "") + ((args === null || args === void 0 ? void 0 : args.take) || "");
|
|
133
|
+
var items = factory.cache.get(cacheKey);
|
|
134
|
+
if (items === null || items === void 0 ? void 0 : items.length) {
|
|
135
|
+
return items;
|
|
136
|
+
}
|
|
137
|
+
var rows_2 = Finder(factory.data.state, null, args).rows;
|
|
138
|
+
factory.cache.set(cacheKey, rows_2);
|
|
139
|
+
return rows_2;
|
|
140
|
+
}
|
|
141
|
+
catch (error) {
|
|
142
|
+
return Finder(factory.data.state, null, args);
|
|
143
|
+
}
|
|
144
|
+
};
|
|
145
|
+
StateHandler.find = function (where, args) {
|
|
146
|
+
try {
|
|
147
|
+
if (!(args === null || args === void 0 ? void 0 : args.freeze)) {
|
|
148
|
+
useHook("state");
|
|
149
|
+
}
|
|
150
|
+
var cacheKey = factory.observe.state.toString() + ((args === null || args === void 0 ? void 0 : args.skip) || "") + ((args === null || args === void 0 ? void 0 : args.take) || "") + JSON.stringify(where);
|
|
151
|
+
var items = factory.cache.get(cacheKey);
|
|
152
|
+
if (items === null || items === void 0 ? void 0 : items.length) {
|
|
153
|
+
// return items
|
|
154
|
+
}
|
|
155
|
+
var rows_3 = Finder(factory.data.state, where, args).rows;
|
|
156
|
+
factory.cache.set(cacheKey, rows_3);
|
|
157
|
+
return rows_3;
|
|
158
|
+
}
|
|
159
|
+
catch (error) {
|
|
160
|
+
return Finder(factory.data.state, where, args).rows;
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
StateHandler.findFirst = function (where, freeze) {
|
|
164
|
+
return StateHandler.find(where, { freeze: freeze })[0];
|
|
165
|
+
};
|
|
166
|
+
StateHandler.findById = function (_id, freeze) {
|
|
167
|
+
return StateHandler.findFirst({ _id: _id }, freeze);
|
|
168
|
+
};
|
|
169
|
+
StateHandler.setMeta = function (key, value, freeze) {
|
|
170
|
+
factory.data.meta.set(key, value);
|
|
171
|
+
if (!freeze) {
|
|
172
|
+
fire("meta");
|
|
173
|
+
}
|
|
174
|
+
};
|
|
175
|
+
StateHandler.getMeta = function (key, freeze) {
|
|
176
|
+
try {
|
|
177
|
+
if (!freeze) {
|
|
178
|
+
useHook("meta");
|
|
179
|
+
}
|
|
180
|
+
return factory.data.meta.get(key);
|
|
181
|
+
}
|
|
182
|
+
catch (error) {
|
|
183
|
+
return factory.data.meta.get(key);
|
|
184
|
+
}
|
|
185
|
+
};
|
|
186
|
+
StateHandler.getAllMeta = function (freeze) {
|
|
187
|
+
try {
|
|
188
|
+
if (!freeze) {
|
|
189
|
+
useHook("meta");
|
|
190
|
+
}
|
|
191
|
+
return Object.fromEntries(factory.data.meta);
|
|
192
|
+
}
|
|
193
|
+
catch (error) {
|
|
194
|
+
return Object.fromEntries(factory.data.meta);
|
|
195
|
+
}
|
|
196
|
+
};
|
|
197
|
+
StateHandler.deleteMeta = function (key, freeze) {
|
|
198
|
+
factory.data.meta.delete(key);
|
|
199
|
+
if (!freeze) {
|
|
200
|
+
fire("meta");
|
|
201
|
+
}
|
|
202
|
+
};
|
|
203
|
+
StateHandler.clearMeta = function (freeze) {
|
|
204
|
+
factory.data.meta.clear();
|
|
205
|
+
if (!freeze) {
|
|
206
|
+
fire("meta");
|
|
207
|
+
}
|
|
208
|
+
};
|
|
209
|
+
return StateHandler;
|
|
210
|
+
}());
|
|
211
|
+
return StateHandler;
|
|
212
|
+
};export{StoreComponent,createStore};//# sourceMappingURL=index.mjs.map
|
package/index.mjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../src/index.ts"],"sourcesContent":["\"use client\"\nimport { 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,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-rock",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.2.0",
|
|
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
|
-
"main": "./
|
|
7
|
-
"module": "./index.
|
|
6
|
+
"main": "./index.js",
|
|
7
|
+
"module": "./index.mjs",
|
|
8
8
|
"types": "./index.d.ts",
|
|
9
9
|
"keywords": [
|
|
10
10
|
"react",
|
|
@@ -20,33 +20,16 @@
|
|
|
20
20
|
"devDependencies": {
|
|
21
21
|
"@types/react": "^19.0.2",
|
|
22
22
|
"@types/react-dom": "^19.0.2",
|
|
23
|
-
"makepack": "^1.
|
|
23
|
+
"makepack": "^1.7.3",
|
|
24
24
|
"react": "^19.0.0",
|
|
25
25
|
"react-dom": "^19.0.0",
|
|
26
26
|
"typescript": "^4.4.2"
|
|
27
27
|
},
|
|
28
|
-
"sideEffects": false,
|
|
29
28
|
"exports": {
|
|
30
29
|
".": {
|
|
31
|
-
"
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
"import": {
|
|
36
|
-
"types": "./index.d.ts",
|
|
37
|
-
"default": "./index.js"
|
|
38
|
-
}
|
|
39
|
-
},
|
|
40
|
-
"./*": {
|
|
41
|
-
"require": {
|
|
42
|
-
"types": "./*.d.ts",
|
|
43
|
-
"default": "./cjs/*.js"
|
|
44
|
-
},
|
|
45
|
-
"import": {
|
|
46
|
-
"types": "./*.d.ts",
|
|
47
|
-
"default": "./*.js"
|
|
48
|
-
}
|
|
49
|
-
},
|
|
50
|
-
"./cjs": null
|
|
30
|
+
"import": "./index.mjs",
|
|
31
|
+
"require": "./index.js",
|
|
32
|
+
"types": "./index.d.ts"
|
|
33
|
+
}
|
|
51
34
|
}
|
|
52
35
|
}
|
package/Finder.d.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { FinderArgsType, QueryType } from "./types";
|
|
2
|
-
export declare const isOb: (ob: any) => boolean;
|
|
3
|
-
declare const Finder: <Row extends object>(rows: Row[], query: null | QueryType<Row>, args?: FinderArgsType<Row>) => {
|
|
4
|
-
rows: Row[];
|
|
5
|
-
indexes: number[];
|
|
6
|
-
ids: string[];
|
|
7
|
-
};
|
|
8
|
-
export default Finder;
|
package/cjs/Finder.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";var p=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var w=Object.getOwnPropertyNames;var R=Object.prototype.hasOwnProperty;var b=(e,t)=>{for(var n in t)p(e,n,{get:t[n],enumerable:!0})},m=(e,t,n,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of w(t))!R.call(e,a)&&a!==n&&p(e,a,{get:()=>t[a],enumerable:!(i=d(t,a))||i.enumerable});return e};var x=e=>m(p({},"__esModule",{value:!0}),e);var V={};b(V,{default:()=>A,isOb:()=>c});module.exports=x(V);const c=e=>typeof e=="object"&&!Array.isArray(e)&&e!==null,u=e=>typeof e=="number",Q={contain:(e,t)=>typeof e=="string"&&e.search(t)!==-1,startWith:(e,t)=>typeof e=="string"&&e.startsWith(t),endWith:(e,t)=>typeof e=="string"&&e.endsWith(t),equalWith:(e,t)=>e===t,notEqualWith:(e,t)=>e!==t,lt:(e,t)=>u(e)&&e<t,gt:(e,t)=>u(e)&&e>t,lte:(e,t)=>u(e)&&e<=t,gte:(e,t)=>u(e)&&e>=t},T=(e,t)=>{let n=!0;for(let i in t){let a=t[i];const r=Q[i];if(r&&!r(e,a)){n=!1;break}}return n},W=(e,t,n)=>{let i=[],a=[],r=[];for(let s=0;s<e.length;s++){let y=e[s],o=!1;if(c(t))for(let l in t){let f=t[l];if(!(l in y))break;if(c(f))if(T(y[l],f))o=!0;else{o=!1;break}else if(y[l]===f)o=!0;else{o=!1;break}}else o=!0;if(o){if(n?.getRow){let l=n.getRow({...y},s);if(l)y=l;else continue}i.push({...y,_index:s}),a.push(s),r.push(y._id)}}const k=n?.take||i.length,h=n?.skip||0;return n?.take&&n?.skip?i=i.splice(h,k):!n?.skip&&n?.take?i.splice(n.take):!n?.take&&n?.skip&&(i=i.splice(n.skip)),{rows:i,indexes:a,ids:r}};var A=W;
|
|
2
|
-
//# sourceMappingURL=Finder.js.map
|
package/cjs/Finder.js.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/Finder.ts"],
|
|
4
|
-
"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"],
|
|
5
|
-
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,EAAA,SAAAC,IAAA,eAAAC,EAAAJ,GAEO,MAAMG,EAAQE,GAAY,OAAOA,GAAO,UAAY,CAAC,MAAM,QAAQA,CAAE,GAAKA,IAAO,KAClFC,EAASC,GAAW,OAAOA,GAAM,SACjCC,EAAmB,CACrB,QAAS,CAACC,EAAQC,IAAY,OAAOD,GAAM,UAAYA,EAAE,OAAOC,CAAE,IAAM,GACxE,UAAW,CAACD,EAAQC,IAAY,OAAOD,GAAM,UAAYA,EAAE,WAAWC,CAAE,EACxE,QAAS,CAACD,EAAQC,IAAY,OAAOD,GAAM,UAAYA,EAAE,SAASC,CAAE,EACpE,UAAW,CAACD,EAAQC,IAAYD,IAAMC,EACtC,aAAc,CAACD,EAAQC,IAAYD,IAAMC,EACzC,GAAI,CAACD,EAAQC,IAAYJ,EAAMG,CAAC,GAAKA,EAAIC,EACzC,GAAI,CAACD,EAAQC,IAAYJ,EAAMG,CAAC,GAAKA,EAAIC,EACzC,IAAK,CAACD,EAAQC,IAAYJ,EAAMG,CAAC,GAAKA,GAAKC,EAC3C,IAAK,CAACD,EAAQC,IAAYJ,EAAMG,CAAC,GAAKA,GAAKC,CAC/C,EAEMC,EAAY,CAAMC,EAAaC,IAAgC,CACjE,IAAIC,EAAQ,GACZ,QAASC,KAAYF,EAAa,CAC9B,IAAIG,EAAQH,EAAoBE,CAAQ,EACxC,MAAME,EAAMT,EAAYO,CAAQ,EAChC,GAAIE,GAAO,CAACA,EAAIL,EAAQI,CAAI,EAAG,CAC3BF,EAAQ,GACR,KACJ,CACJ,CACA,OAAOA,CACX,EAEMI,EAAS,CAAqBC,EAAaC,EAA8BC,IAA+B,CAC1G,IAAIC,EAAgB,CAAC,EACjBC,EAAoB,CAAC,EACrBC,EAAgB,CAAC,EAErB,QAASC,EAAI,EAAGA,EAAIN,EAAK,OAAQM,IAAK,CAClC,IAAIC,EAAMP,EAAKM,CAAC,EACZE,EAAQ,GACZ,GAAIxB,EAAKiB,CAAK,EACV,QAASQ,KAAUR,EAAO,CACtB,IAAIS,EAAWT,EAAMQ,CAAM,EAC3B,GAAI,EAAEA,KAAUF,GAAM,MAEtB,GAAIvB,EAAK0B,CAAQ,EACb,GAAIlB,EAAUe,EAAIE,CAAM,EAAGC,CAAe,EACtCF,EAAQ,OACL,CACHA,EAAQ,GACR,KACJ,SACOD,EAAIE,CAAM,IAAMC,EACvBF,EAAQ,OACL,CACHA,EAAQ,GACR,KACJ,CACJ,MAEAA,EAAQ,GAGZ,GAAIA,EAAO,CACP,GAAIN,GAAM,OAAQ,CACd,IAAIS,EAAIT,EAAK,OAAO,CAAE,GAAGK,CAAI,EAAGD,CAAC,EACjC,GAAIK,EACAJ,EAAMI,MAEN,SAER,CACAR,EAAO,KAAK,CAAE,GAAGI,EAAK,OAAQD,CAAE,CAAC,EACjCF,EAAQ,KAAKE,CAAC,EACdD,EAAI,KAAME,EAAY,GAAG,CAC7B,CACJ,CAEA,MAAMK,EAAOV,GAAM,MAAQC,EAAO,OAC5BU,EAAOX,GAAM,MAAQ,EAE3B,OAAIA,GAAM,MAAQA,GAAM,KACpBC,EAASA,EAAO,OAAOU,EAAMD,CAAI,EAC1B,CAACV,GAAM,MAAQA,GAAM,KAC5BC,EAAO,OAAOD,EAAK,IAAI,EAChB,CAACA,GAAM,MAAQA,GAAM,OAC5BC,EAASA,EAAO,OAAOD,EAAK,IAAI,GAG7B,CAAE,KAAMC,EAAQ,QAAAC,EAAS,IAAAC,CAAI,CACxC,EAEA,IAAOtB,EAAQgB",
|
|
6
|
-
"names": ["Finder_exports", "__export", "Finder_default", "isOb", "__toCommonJS", "ob", "isNum", "n", "excuteQuery", "v", "qv", "isInQuery", "rowVal", "queryObject", "match", "queryKey", "qVal", "qcb", "Finder", "rows", "query", "args", "result", "indexes", "ids", "i", "row", "found", "rowKey", "queryVal", "r", "take", "skip"]
|
|
7
|
-
}
|
package/cjs/index.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";"use client";var M=Object.create;var h=Object.defineProperty;var T=Object.getOwnPropertyDescriptor;var P=Object.getOwnPropertyNames;var S=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var k=(s,r)=>{for(var t in r)h(s,t,{get:r[t],enumerable:!0})},w=(s,r,t,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let p of P(r))!g.call(s,p)&&p!==t&&h(s,p,{get:()=>r[p],enumerable:!(n=T(r,p))||n.enumerable});return s},R=(s,r,t)=>(w(s,r,"default"),t&&w(t,r,"default")),v=(s,r,t)=>(t=s!=null?M(S(s)):{},w(r||!s||!s.__esModule?h(t,"default",{value:s,enumerable:!0}):t,s)),x=s=>w(h({},"__esModule",{value:!0}),s);var y={};k(y,{StoreComponent:()=>A,createStore:()=>E});module.exports=x(y);var c=require("react"),l=v(require("./Finder"),1);R(y,require("./types"),module.exports);class A extends c.Component{constructor(r){super(r);const t=this.render.bind(this);this.render=()=>(0,c.createElement)(c.Fragment,null,(0,c.createElement)(t,null))}}const b=()=>Date.now()+Math.floor(1e3+Math.random()*9e3),_=()=>b().toString(32).replace("-","").substring(0,15),u=s=>{if(!(0,l.isOb)(s))throw new Error(`State row must be an object. given ${typeof s}: ${s}`);return{...s,_id:s._id||_(),_observe:s._observe||b()}},E=(s,r)=>{const t={data:{state:[],meta:new Map},dispatches:{state:new Map,meta:new Map},observe:{state:Math.random(),meta:Math.random()},cache:new Map},n=d=>{t.observe[d]=Math.random(),t.dispatches[d].forEach((e,a)=>{try{e()}catch{t.dispatches[d].delete(a)}})},p=d=>{const e=(0,c.useId)(),[,a]=(0,c.useState)(0);(0,c.useEffect)(()=>(t.dispatches[d].set(e,()=>a(Math.random())),()=>{t.dispatches[d].delete(e)}),[])};for(let d of s||[])t.data.state.push(u(d));for(let d in r||{})t.data.meta.set(d,r[d]);class m{static create(e,a){const o=u(e);return t.data.state.push(o),a||n("state"),o}static createMany(e,a){const o=[];for(let i of e){const f=u(i);t.data.state.push(f),o.push(f)}return a||n("state"),o}static update(e,a,o){(0,l.default)(t.data.state,a,{getRow:(i,f)=>{t.data.state[f]=u({...i,...e})}}),o||n("state")}static updateAll(e,a){for(let o=0;o<t.data.state.length;o++)t.data.state[o]=u({...t.data.state[o],...e});a||n("state")}static delete(e,a){const o=(0,l.default)(t.data.state,e);t.data.state=t.data.state.filter(i=>!o.ids.includes(i._id)),a||n("state")}static move(e,a,o){const i=t.data.state[e];i&&(t.data.state.splice(e,1),t.data.state.splice(a,0,u(i)),o||n("state"))}static clearAll(e){t.data.state=[],e||n("state")}static getAll(e){try{e?.freeze||p("state");const a=t.observe.state.toString()+(e?.skip||"")+(e?.take||""),o=t.cache.get(a);if(o?.length)return o;const i=(0,l.default)(t.data.state,null,e).rows;return t.cache.set(a,i),i}catch{return(0,l.default)(t.data.state,null,e)}}static find(e,a){try{a?.freeze||p("state");const o=t.observe.state.toString()+(a?.skip||"")+(a?.take||"")+JSON.stringify(e);t.cache.get(o)?.length;const f=(0,l.default)(t.data.state,e,a).rows;return t.cache.set(o,f),f}catch{return(0,l.default)(t.data.state,e,a).rows}}static findFirst(e,a){return m.find(e,{freeze:a})[0]}static findById(e,a){return m.findFirst({_id:e},a)}static setMeta(e,a,o){t.data.meta.set(e,a),o||n("meta")}static getMeta(e,a){try{return a||p("meta"),t.data.meta.get(e)}catch{return t.data.meta.get(e)}}static getAllMeta(e){try{return e||p("meta"),Object.fromEntries(t.data.meta)}catch{return Object.fromEntries(t.data.meta)}}static deleteMeta(e,a){t.data.meta.delete(e),a||n("meta")}static clearMeta(e){t.data.meta.clear(),e||n("meta")}}return m};
|
|
2
|
-
//# sourceMappingURL=index.js.map
|
package/cjs/index.js.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/index.ts"],
|
|
4
|
-
"sourcesContent": ["\"use client\"\nimport { 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"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["index_exports", "__export", "StoreComponent", "createStore", "__toCommonJS", "import_react", "import_Finder", "__reExport", "props", "R", "_random", "_uid", "_row", "row", "rows", "meta", "factory", "fire", "type", "cb", "key", "useHook", "id", "dispatch", "StateHandler", "freeze", "r", "rs", "where", "Finder", "index", "i", "found", "oldIdx", "newIdx", "args", "cacheKey", "items", "_id", "value"]
|
|
7
|
-
}
|
package/cjs/types.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";var n=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var w=Object.getOwnPropertyNames;var p=Object.prototype.hasOwnProperty;var d=(o,e,a,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of w(e))!p.call(o,r)&&r!==a&&n(o,r,{get:()=>e[r],enumerable:!(t=l(e,r))||t.enumerable});return o};var i=o=>d(n({},"__esModule",{value:!0}),o);var y={};module.exports=i(y);
|
|
2
|
-
//# sourceMappingURL=types.js.map
|
package/cjs/types.js.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/types.ts"],
|
|
4
|
-
"sourcesContent": ["export type StateDataType = \"state\" | \"meta\"\n\nexport type RowPredefinedFields = {\n _id: string;\n _index: number;\n _observe: number;\n}\n\nexport type FinderArgsType<Row> = {\n getRow?: (row: Row, index: number) => Row | void;\n skip?: number;\n take?: number;\n freeze?: boolean;\n}\n\nexport type RowType<Row> = Row & RowPredefinedFields\nexport type WhereType<Row> = QueryType<RowType<Row>>\nexport type ArgsType<Row> = FinderArgsType<RowType<Row>>\nexport type GetRowCallback<Row> = (row: Row, index: number) => Row | void;\n\nexport interface IStateHandler<Row, MetaProps> {\n create(row: Row, freeze?: boolean): RowType<Row>;\n createMany(rows: Row[], freeze?: boolean): void;\n update(row: Partial<Row>, where: WhereType<Row>, freeze?: boolean): void;\n updateAll(row: Partial<Row>, freeze?: boolean): void;\n delete(where: WhereType<Row>, freeze?: boolean): void;\n clearAll(freeze?: boolean): void;\n move(oldIdx: number, newIdx: number, freeze?: boolean): void;\n\n getAll(args?: { freeze?: boolean; getRow?: GetRowCallback<Row> }): RowType<Row>[];\n find(where: WhereType<Row>, args?: ArgsType<Row>): RowType<Row>[];\n findFirst(where: WhereType<Row>, freeze?: boolean): RowType<Row>;\n findById(_id: string, freeze?: boolean): RowType<Row>;\n\n setMeta<T extends keyof MetaProps>(key: T, value: MetaProps[T], freeze?: boolean): void;\n getMeta<T extends keyof MetaProps>(key: T, freeze?: boolean): MetaProps[T];\n getAllMeta(freeze?: boolean): MetaProps;\n deleteMeta<T extends keyof MetaProps>(key: T, freeze?: boolean): void;\n clearMeta(freeze?: boolean): void;\n}\n\n\nexport type QueryValueType = {\n contain?: string | number | boolean | null | undefined;\n startWith?: string | number;\n endWith?: string | number;\n equalWith?: string | number | boolean | null | undefined;\n notEqualWith?: string | number | boolean | null | undefined;\n gt?: number;\n lt?: number;\n gte?: number;\n lte?: number;\n}\n\nexport type QueryType<Row = {}> = {\n [key in keyof Row]?: string | number | boolean | null | undefined | QueryValueType\n}"],
|
|
5
|
-
"mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
|
|
6
|
-
"names": ["types_exports", "__toCommonJS"]
|
|
7
|
-
}
|
package/types.d.ts
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
export type StateDataType = "state" | "meta";
|
|
2
|
-
export type RowPredefinedFields = {
|
|
3
|
-
_id: string;
|
|
4
|
-
_index: number;
|
|
5
|
-
_observe: number;
|
|
6
|
-
};
|
|
7
|
-
export type FinderArgsType<Row> = {
|
|
8
|
-
getRow?: (row: Row, index: number) => Row | void;
|
|
9
|
-
skip?: number;
|
|
10
|
-
take?: number;
|
|
11
|
-
freeze?: boolean;
|
|
12
|
-
};
|
|
13
|
-
export type RowType<Row> = Row & RowPredefinedFields;
|
|
14
|
-
export type WhereType<Row> = QueryType<RowType<Row>>;
|
|
15
|
-
export type ArgsType<Row> = FinderArgsType<RowType<Row>>;
|
|
16
|
-
export type GetRowCallback<Row> = (row: Row, index: number) => Row | void;
|
|
17
|
-
export 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
|
-
export 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
|
-
export type QueryType<Row = {}> = {
|
|
50
|
-
[key in keyof Row]?: string | number | boolean | null | undefined | QueryValueType;
|
|
51
|
-
};
|
package/types.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
//# sourceMappingURL=types.js.map
|