temba 0.54.0 → 0.55.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/dist/data/json/filtering.d.ts +3 -0
- package/dist/data/json/filtering.d.ts.map +1 -0
- package/dist/data/json/filtering.js +76 -0
- package/dist/data/json/filtering.js.map +1 -0
- package/dist/data/json/index.d.ts.map +1 -1
- package/dist/data/json/index.js +22 -8
- package/dist/data/json/index.js.map +1 -1
- package/dist/data/mongo/index.d.ts.map +1 -1
- package/dist/data/mongo/index.js +15 -7
- package/dist/data/mongo/index.js.map +1 -1
- package/dist/data/types.d.ts +36 -7
- package/dist/data/types.d.ts.map +1 -1
- package/dist/debug.d.ts +2 -0
- package/dist/debug.d.ts.map +1 -0
- package/dist/debug.js +5 -0
- package/dist/debug.js.map +1 -0
- package/dist/filtering/filter.d.ts +21 -0
- package/dist/filtering/filter.d.ts.map +1 -0
- package/dist/filtering/filter.js +76 -0
- package/dist/filtering/filter.js.map +1 -0
- package/dist/queryStrings/parseQueryString.d.ts +3 -0
- package/dist/queryStrings/parseQueryString.d.ts.map +1 -0
- package/dist/queryStrings/parseQueryString.js +7 -0
- package/dist/queryStrings/parseQueryString.js.map +1 -0
- package/dist/requestHandlers/delete.d.ts +3 -3
- package/dist/requestHandlers/delete.d.ts.map +1 -1
- package/dist/requestHandlers/delete.js +14 -5
- package/dist/requestHandlers/delete.js.map +1 -1
- package/dist/requestHandlers/get.d.ts +3 -3
- package/dist/requestHandlers/get.d.ts.map +1 -1
- package/dist/requestHandlers/get.js +13 -4
- package/dist/requestHandlers/get.js.map +1 -1
- package/dist/requestHandlers/index.d.ts +6 -6
- package/dist/requestHandlers/patch.js +2 -2
- package/dist/requestHandlers/patch.js.map +1 -1
- package/dist/requestHandlers/post.js +2 -2
- package/dist/requestHandlers/post.js.map +1 -1
- package/dist/requestHandlers/put.js +2 -2
- package/dist/requestHandlers/put.js.map +1 -1
- package/dist/requestHandlers/types.d.ts +4 -0
- package/dist/requestHandlers/types.d.ts.map +1 -1
- package/dist/resourceHandler.d.ts.map +1 -1
- package/dist/resourceHandler.js +35 -0
- package/dist/resourceHandler.js.map +1 -1
- package/dist/responseBodyInterceptor/interceptResponseBody.d.ts +1 -1
- package/dist/responseBodyInterceptor/interceptResponseBody.d.ts.map +1 -1
- package/dist/responseBodyInterceptor/interceptResponseBody.js +4 -4
- package/dist/responseBodyInterceptor/interceptResponseBody.js.map +1 -1
- package/dist/responseBodyInterceptor/types.d.ts +1 -1
- package/dist/responseBodyInterceptor/types.d.ts.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filtering.d.ts","sourceRoot":"","sources":["../../../src/data/json/filtering.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,MAAM,EAIZ,MAAM,wBAAwB,CAAA;AAgF/B,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,MAAM,MAChE,MAAM,CAAC,YAChB,CAAA"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { supportedOperators, } from '../../filtering/filter.js';
|
|
2
|
+
const operatorFns = {
|
|
3
|
+
eq: (a, b) => {
|
|
4
|
+
if (typeof a === 'string') {
|
|
5
|
+
return a === b;
|
|
6
|
+
}
|
|
7
|
+
if (typeof a === 'number') {
|
|
8
|
+
return a === Number(b);
|
|
9
|
+
}
|
|
10
|
+
if (typeof a === 'boolean') {
|
|
11
|
+
return a === (b.toLowerCase() === 'true');
|
|
12
|
+
}
|
|
13
|
+
return a === b;
|
|
14
|
+
},
|
|
15
|
+
ieq: (a, b) => {
|
|
16
|
+
if (typeof a === 'string') {
|
|
17
|
+
return a.toLowerCase() === b.toLowerCase();
|
|
18
|
+
}
|
|
19
|
+
if (typeof a === 'number') {
|
|
20
|
+
return a === Number(b);
|
|
21
|
+
}
|
|
22
|
+
if (typeof a === 'boolean') {
|
|
23
|
+
return a === (b.toLowerCase() === 'true');
|
|
24
|
+
}
|
|
25
|
+
return a === b;
|
|
26
|
+
},
|
|
27
|
+
neq: (a, b) => {
|
|
28
|
+
if (typeof a === 'string') {
|
|
29
|
+
return a !== b;
|
|
30
|
+
}
|
|
31
|
+
if (typeof a === 'number') {
|
|
32
|
+
return a !== Number(b);
|
|
33
|
+
}
|
|
34
|
+
if (typeof a === 'boolean') {
|
|
35
|
+
return a !== (b.toLowerCase() === 'true');
|
|
36
|
+
}
|
|
37
|
+
return a !== b;
|
|
38
|
+
},
|
|
39
|
+
ineq: (a, b) => {
|
|
40
|
+
if (typeof a === 'string') {
|
|
41
|
+
return a.toLowerCase() !== b.toLowerCase();
|
|
42
|
+
}
|
|
43
|
+
if (typeof a === 'number') {
|
|
44
|
+
return a !== Number(b);
|
|
45
|
+
}
|
|
46
|
+
if (typeof a === 'boolean') {
|
|
47
|
+
return a !== (b.toLowerCase() === 'true');
|
|
48
|
+
}
|
|
49
|
+
return a !== b;
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
const isOperatorObject = (obj) => {
|
|
53
|
+
return (obj !== null &&
|
|
54
|
+
typeof obj === 'object' &&
|
|
55
|
+
Object.keys(obj).some((k) => supportedOperators.includes(k)));
|
|
56
|
+
};
|
|
57
|
+
const matchesFilter = (obj, spec) => {
|
|
58
|
+
return Object.entries(spec).every(([key, constraint]) => {
|
|
59
|
+
const v = obj[key];
|
|
60
|
+
if (isOperatorObject(constraint)) {
|
|
61
|
+
return Object.keys(constraint).every((op) => {
|
|
62
|
+
const rhs = constraint[op];
|
|
63
|
+
return rhs !== undefined && operatorFns[op]?.(v, rhs);
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
if (typeof v !== 'object' || v === null)
|
|
68
|
+
return false;
|
|
69
|
+
return matchesFilter(v, constraint);
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
};
|
|
73
|
+
export const makePredicate = (f) => {
|
|
74
|
+
return (item) => matchesFilter(item, f.filter);
|
|
75
|
+
};
|
|
76
|
+
//# sourceMappingURL=filtering.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filtering.js","sourceRoot":"","sources":["../../../src/data/json/filtering.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,GAKnB,MAAM,wBAAwB,CAAA;AAE/B,MAAM,WAAW,GAAyD;IACxE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACX,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC1B,OAAO,CAAC,KAAK,CAAC,CAAA;QAChB,CAAC;QACD,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC1B,OAAO,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAA;QACxB,CAAC;QACD,IAAI,OAAO,CAAC,KAAK,SAAS,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,CAAA;QAC3C,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,CAAA;IAChB,CAAC;IAED,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACZ,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC1B,OAAO,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,CAAA;QAC5C,CAAC;QACD,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC1B,OAAO,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAA;QACxB,CAAC;QACD,IAAI,OAAO,CAAC,KAAK,SAAS,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,CAAA;QAC3C,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,CAAA;IAChB,CAAC;IAED,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACZ,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC1B,OAAO,CAAC,KAAK,CAAC,CAAA;QAChB,CAAC;QACD,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC1B,OAAO,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAA;QACxB,CAAC;QACD,IAAI,OAAO,CAAC,KAAK,SAAS,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,CAAA;QAC3C,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,CAAA;IAChB,CAAC;IAED,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACb,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC1B,OAAO,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,CAAA;QAC5C,CAAC;QACD,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC1B,OAAO,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAA;QACxB,CAAC;QACD,IAAI,OAAO,CAAC,KAAK,SAAS,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,CAAA;QAC3C,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,CAAA;IAChB,CAAC;CACF,CAAA;AAED,MAAM,gBAAgB,GAAG,CAAC,GAAY,EAAyB,EAAE;IAC/D,OAAO,CACL,GAAG,KAAK,IAAI;QACZ,OAAO,GAAG,KAAK,QAAQ;QACvB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAa,CAAC,CAAC,CACzE,CAAA;AACH,CAAC,CAAA;AAED,MAAM,aAAa,GAAG,CAAC,GAA4B,EAAE,IAAkB,EAAW,EAAE;IAClF,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,EAAE;QACtD,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;QAElB,IAAI,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC;YACjC,OAAQ,MAAM,CAAC,IAAI,CAAC,UAAU,CAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE;gBAC1D,MAAM,GAAG,GAAG,UAAU,CAAC,EAAE,CAAC,CAAA;gBAC1B,OAAO,GAAG,KAAK,SAAS,IAAI,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;YACvD,CAAC,CAAC,CAAA;QACJ,CAAC;aAAM,CAAC;YACN,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI;gBAAE,OAAO,KAAK,CAAA;YACrD,OAAO,aAAa,CAAC,CAA4B,EAAE,UAAU,CAAC,CAAA;QAChE,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,CAAoC,CAAS,EAAE,EAAE;IAC5E,OAAO,CAAC,IAAO,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAA;AACnD,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/data/json/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/data/json/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAuB,OAAO,EAAE,MAAM,UAAU,CAAA;AAkC5D,KAAK,UAAU,GAAG;IAIhB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CACxB,CAAA;AAED,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EAAE,QAAQ,EAAE,EAAE,UAAU,WAgIjE"}
|
package/dist/data/json/index.js
CHANGED
|
@@ -2,6 +2,7 @@ import { Low, Memory } from 'lowdb';
|
|
|
2
2
|
import { TextFile } from 'lowdb/node';
|
|
3
3
|
import { promises as fs } from 'node:fs';
|
|
4
4
|
import { join } from 'node:path';
|
|
5
|
+
import { makePredicate } from './filtering.js';
|
|
5
6
|
class PrettyJsonFile {
|
|
6
7
|
adapter;
|
|
7
8
|
constructor(filename) {
|
|
@@ -70,14 +71,19 @@ export default function createJsonQueries({ filename }) {
|
|
|
70
71
|
data[resource] = next;
|
|
71
72
|
});
|
|
72
73
|
};
|
|
73
|
-
async function getAll(resource) {
|
|
74
|
+
async function getAll({ resource }) {
|
|
74
75
|
return await readAll(resource);
|
|
75
76
|
}
|
|
76
|
-
async function
|
|
77
|
+
async function getByFilter({ resource, filter }) {
|
|
78
|
+
const data = await readAll(resource);
|
|
79
|
+
const pred = makePredicate(filter);
|
|
80
|
+
return data.filter((item) => pred(item));
|
|
81
|
+
}
|
|
82
|
+
async function getById({ resource, id }) {
|
|
77
83
|
const data = await readAll(resource);
|
|
78
84
|
return data.find((x) => x.id === id) || null;
|
|
79
85
|
}
|
|
80
|
-
async function create(resource, id, item) {
|
|
86
|
+
async function create({ resource, id, item, }) {
|
|
81
87
|
const data = await readAll(resource);
|
|
82
88
|
const itemWithId = {
|
|
83
89
|
...item,
|
|
@@ -86,31 +92,39 @@ export default function createJsonQueries({ filename }) {
|
|
|
86
92
|
await writeAll(resource, [...data, itemWithId]);
|
|
87
93
|
return itemWithId;
|
|
88
94
|
}
|
|
89
|
-
async function update(resource, item) {
|
|
95
|
+
async function update({ resource, item }) {
|
|
90
96
|
const data = await readAll(resource);
|
|
91
97
|
const next = data.map((r) => (r.id === item.id ? { ...item } : r));
|
|
92
98
|
await writeAll(resource, next);
|
|
93
99
|
return next.find((r) => r.id === item.id);
|
|
94
100
|
}
|
|
95
|
-
async function replace(
|
|
96
|
-
return update(
|
|
101
|
+
async function replace(query) {
|
|
102
|
+
return update(query);
|
|
97
103
|
}
|
|
98
|
-
async function deleteById(resource, id) {
|
|
104
|
+
async function deleteById({ resource, id }) {
|
|
99
105
|
const data = await readAll(resource);
|
|
100
106
|
const next = data.filter((r) => r.id !== id);
|
|
101
107
|
await writeAll(resource, next);
|
|
102
108
|
}
|
|
103
|
-
async function deleteAll(resource) {
|
|
109
|
+
async function deleteAll({ resource }) {
|
|
104
110
|
await writeAll(resource, []);
|
|
105
111
|
}
|
|
112
|
+
async function deleteByFilter({ resource, filter }) {
|
|
113
|
+
const data = await readAll(resource);
|
|
114
|
+
const pred = makePredicate(filter);
|
|
115
|
+
const next = data.filter((item) => !pred(item));
|
|
116
|
+
await writeAll(resource, next);
|
|
117
|
+
}
|
|
106
118
|
const fileQueries = {
|
|
107
119
|
getAll,
|
|
120
|
+
getByFilter,
|
|
108
121
|
getById,
|
|
109
122
|
create,
|
|
110
123
|
update,
|
|
111
124
|
replace,
|
|
112
125
|
deleteById,
|
|
113
126
|
deleteAll,
|
|
127
|
+
deleteByFilter,
|
|
114
128
|
};
|
|
115
129
|
return fileQueries;
|
|
116
130
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/data/json/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,EAAgB,MAAM,OAAO,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAA;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAGhC,MAAM,cAAc;IACV,OAAO,CAAU;IAEzB,YAAY,QAAgB;QAC1B,IAAI,CAAC,OAAO,GAAG,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAA;IACvC,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;QACtC,OAAO,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAO,CAAA;IACvD,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,GAAM;QAChB,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;IACxD,CAAC;CACF;AAED,MAAM,aAAa,GAAG,CAAO,WAAiB,EAAsB,EAAE;IACpE,OAAO,SAAS,CAAC,IAAI,MAAM,EAAQ,EAAE,WAAW,CAAC,CAAA;AACnD,CAAC,CAAA;AAED,MAAM,SAAS,GAAG,KAAK,EAAQ,QAAkB,EAAE,WAAiB,EAAsB,EAAE;IAC1F,OAAO,MAAM,SAAS,CAAC,IAAI,cAAc,CAAO,QAAkB,CAAC,EAAE,WAAW,CAAC,CAAA;AACnF,CAAC,CAAA;AAED,MAAM,SAAS,GAAG,KAAK,EAAQ,OAAsB,EAAE,WAAiB,EAAsB,EAAE;IAC9F,MAAM,EAAE,GAAG,IAAI,GAAG,CAAO,OAAO,EAAE,WAAW,CAAC,CAAA;IAC9C,MAAM,EAAE,CAAC,IAAI,EAAE,CAAA;IACf,OAAO,EAAE,CAAA;AACX,CAAC,CAAA;AASD,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EAAE,QAAQ,EAAc;IAChE,MAAM,IAAI,GACR,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAA;IAE3F,MAAM,cAAc,GAA8B,EAAE,CAAA;IACpD,IAAI,QAAQ,GAAmD,IAAI,CAAA;IAEnE,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,QAAQ;gBACN,IAAI,KAAK,QAAQ;oBACf,CAAC,CAAC,aAAa,CAAC,cAAc,CAAC;oBAC/B,CAAC,CAAC,SAAS,CAAC,QAAkB,EAAE,cAAc,CAAC,CAAA;QACrD,CAAC;QACD,OAAO,QAAQ,CAAA;IACjB,CAAC,CAAA;IAED,MAAM,WAAW,GAAG,IAAI,GAAG,EAAmD,CAAA;IAC9E,IAAI,UAAU,GAAG,KAAK,CAAA;IACtB,MAAM,SAAS,GAAG,KAAK,IAAI,EAAE;QAC3B,IAAI,UAAU;YAAE,OAAM;QACtB,MAAM,EAAE,CAAC,KAAK,CAAC,QAAkB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QACvD,UAAU,GAAG,IAAI,CAAA;IACnB,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/data/json/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/data/mongo/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/data/mongo/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,KAAK,EAAuB,OAAO,EAAE,MAAM,UAAU,CAAA;AAe5D,eAAO,MAAM,kBAAkB,GAAI,kBAAkB,MAAM,EAAE,KAAK,MAAM,YA+GvE,CAAA"}
|
package/dist/data/mongo/index.js
CHANGED
|
@@ -20,32 +20,35 @@ export const createMongoQueries = (connectionString, log) => {
|
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
};
|
|
23
|
-
const getAll = async (resource) => {
|
|
23
|
+
const getAll = async ({ resource }) => {
|
|
24
24
|
await connectToDatabase();
|
|
25
25
|
const items = (await db[resource].find({}));
|
|
26
26
|
if (!items)
|
|
27
27
|
return [];
|
|
28
28
|
return items.map((item) => removeUnderscoreFromId(item));
|
|
29
29
|
};
|
|
30
|
-
const
|
|
30
|
+
const getByFilter = async ({ resource }) => {
|
|
31
|
+
return getAll({ resource });
|
|
32
|
+
};
|
|
33
|
+
const getById = async ({ resource, id }) => {
|
|
31
34
|
await connectToDatabase();
|
|
32
35
|
const item = await db[resource].findOne({ _id: id });
|
|
33
36
|
if (!item)
|
|
34
37
|
return null;
|
|
35
38
|
return removeUnderscoreFromId(item);
|
|
36
39
|
};
|
|
37
|
-
const create = async (resource, id, item) => {
|
|
40
|
+
const create = async ({ resource, id, item, }) => {
|
|
38
41
|
await connectToDatabase();
|
|
39
42
|
const createdItem = await db[resource].insertOne(id ? { ...item, _id: id } : item);
|
|
40
43
|
return removeUnderscoreFromId(createdItem.ops[0]);
|
|
41
44
|
};
|
|
42
|
-
const update = async (resource, item) => {
|
|
45
|
+
const update = async ({ resource, item }) => {
|
|
43
46
|
await connectToDatabase();
|
|
44
47
|
const { id, ...itemWithoutId } = item;
|
|
45
48
|
const updatedItem = await db[resource].findOneAndUpdate({ _id: id }, { $set: itemWithoutId }, { returnOriginal: false });
|
|
46
49
|
return removeUnderscoreFromId(updatedItem.value);
|
|
47
50
|
};
|
|
48
|
-
const replace = async (resource, item) => {
|
|
51
|
+
const replace = async ({ resource, item }) => {
|
|
49
52
|
await connectToDatabase();
|
|
50
53
|
const { id, ...itemWithoutId } = item;
|
|
51
54
|
const replacedItem = await db[resource].findOneAndReplace({ _id: id }, itemWithoutId, {
|
|
@@ -53,22 +56,27 @@ export const createMongoQueries = (connectionString, log) => {
|
|
|
53
56
|
});
|
|
54
57
|
return removeUnderscoreFromId(replacedItem.value);
|
|
55
58
|
};
|
|
56
|
-
const deleteById = async (resource, id) => {
|
|
59
|
+
const deleteById = async ({ resource, id }) => {
|
|
57
60
|
await connectToDatabase();
|
|
58
61
|
await db[resource].deleteOne({ _id: id });
|
|
59
62
|
};
|
|
60
|
-
const deleteAll = async (resource) => {
|
|
63
|
+
const deleteAll = async ({ resource }) => {
|
|
61
64
|
await connectToDatabase();
|
|
62
65
|
await db[resource].deleteMany({});
|
|
63
66
|
};
|
|
67
|
+
const deleteByFilter = async ({ resource }) => {
|
|
68
|
+
return deleteAll({ resource });
|
|
69
|
+
};
|
|
64
70
|
const mongoQueries = {
|
|
65
71
|
getAll,
|
|
72
|
+
getByFilter,
|
|
66
73
|
getById,
|
|
67
74
|
create,
|
|
68
75
|
update,
|
|
69
76
|
replace,
|
|
70
77
|
deleteById,
|
|
71
78
|
deleteAll,
|
|
79
|
+
deleteByFilter,
|
|
72
80
|
};
|
|
73
81
|
return mongoQueries;
|
|
74
82
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/data/mongo/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,OAAO,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/data/mongo/index.ts"],"names":[],"mappings":"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"}
|
package/dist/data/types.d.ts
CHANGED
|
@@ -1,15 +1,44 @@
|
|
|
1
|
+
import type { Filter } from '../filtering/filter.js';
|
|
1
2
|
export type Item = {
|
|
2
3
|
id: string;
|
|
3
4
|
[key: string]: unknown;
|
|
4
5
|
};
|
|
5
6
|
export type ItemWithoutId = Omit<Item, 'id'>;
|
|
6
7
|
export type Queries = {
|
|
7
|
-
getAll: (
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
8
|
+
getAll: (query: {
|
|
9
|
+
resource: string;
|
|
10
|
+
}) => Promise<Item[]>;
|
|
11
|
+
getByFilter: (query: {
|
|
12
|
+
resource: string;
|
|
13
|
+
filter: Filter;
|
|
14
|
+
}) => Promise<Item[]>;
|
|
15
|
+
getById: (query: {
|
|
16
|
+
resource: string;
|
|
17
|
+
id: string;
|
|
18
|
+
}) => Promise<Item | null>;
|
|
19
|
+
create: (query: {
|
|
20
|
+
resource: string;
|
|
21
|
+
id: string | null;
|
|
22
|
+
item: ItemWithoutId;
|
|
23
|
+
}) => Promise<Item>;
|
|
24
|
+
update: (query: {
|
|
25
|
+
resource: string;
|
|
26
|
+
item: Item;
|
|
27
|
+
}) => Promise<Item>;
|
|
28
|
+
replace: (query: {
|
|
29
|
+
resource: string;
|
|
30
|
+
item: Item;
|
|
31
|
+
}) => Promise<Item>;
|
|
32
|
+
deleteById: (query: {
|
|
33
|
+
resource: string;
|
|
34
|
+
id: string;
|
|
35
|
+
}) => Promise<void>;
|
|
36
|
+
deleteAll: (query: {
|
|
37
|
+
resource: string;
|
|
38
|
+
}) => Promise<void>;
|
|
39
|
+
deleteByFilter: (query: {
|
|
40
|
+
resource: string;
|
|
41
|
+
filter: Filter;
|
|
42
|
+
}) => Promise<void>;
|
|
14
43
|
};
|
|
15
44
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/data/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/data/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GAAG;IACjB,EAAE,EAAE,MAAM,CAAA;IACV,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;AAE5C,MAAM,MAAM,OAAO,GAAG;IACpB,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/data/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAEjD,MAAM,MAAM,IAAI,GAAG;IACjB,EAAE,EAAE,MAAM,CAAA;IACV,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;AAE5C,MAAM,MAAM,OAAO,GAAG;IACpB,MAAM,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;IACxD,WAAW,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;IAC7E,OAAO,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAAA;IAC1E,MAAM,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,IAAI,EAAE,aAAa,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC9F,MAAM,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,IAAI,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAClE,OAAO,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,IAAI,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACnE,UAAU,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACtE,SAAS,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACzD,cAAc,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC/E,CAAA"}
|
package/dist/debug.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../src/debug.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,KAAK,GAAI,SAAS,MAAM,EAAE,KAAK,OAAO,SAGlD,CAAA"}
|
package/dist/debug.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debug.js","sourceRoot":"","sources":["../src/debug.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,OAAe,EAAE,GAAY,EAAE,EAAE;IACrD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IACpB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;AACjD,CAAC,CAAA"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
type RawFilter = {
|
|
2
|
+
filter: Record<string, unknown>;
|
|
3
|
+
};
|
|
4
|
+
export declare const supportedOperators: readonly ["eq", "neq", "ieq", "ineq"];
|
|
5
|
+
export type Operator = (typeof supportedOperators)[number];
|
|
6
|
+
export type OperatorMap = Record<Operator, string>;
|
|
7
|
+
type ExactlyOne<T> = {
|
|
8
|
+
[K in keyof T]: Pick<T, K> & Partial<Record<Exclude<keyof T, K>, never>>;
|
|
9
|
+
}[keyof T];
|
|
10
|
+
export type OperatorObject = ExactlyOne<OperatorMap>;
|
|
11
|
+
export type NestedFilter = {
|
|
12
|
+
[Key: string]: OperatorObject | NestedFilter;
|
|
13
|
+
};
|
|
14
|
+
export type Filter = {
|
|
15
|
+
filter: NestedFilter;
|
|
16
|
+
};
|
|
17
|
+
type FilterValidationResult = 'valid' | 'invalid' | 'missing';
|
|
18
|
+
export declare const validateFilter: (input: unknown) => FilterValidationResult;
|
|
19
|
+
export declare const prepareFilter: (rawFilter: RawFilter) => Filter;
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=filter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../src/filtering/filter.ts"],"names":[],"mappings":"AAAA,KAAK,SAAS,GAAG;IACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAChC,CAAA;AAED,eAAO,MAAM,kBAAkB,uCAAwC,CAAA;AACvE,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAA;AAC1D,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;AAElD,KAAK,UAAU,CAAC,CAAC,IAAI;KAClB,CAAC,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;CACzE,CAAC,MAAM,CAAC,CAAC,CAAA;AAEV,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,WAAW,CAAC,CAAA;AAEpD,MAAM,MAAM,YAAY,GAAG;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,GAAG,YAAY,CAAA;CAC7C,CAAA;AAED,MAAM,MAAM,MAAM,GAAG;IACnB,MAAM,EAAE,YAAY,CAAA;CACrB,CAAA;AAuDD,KAAK,sBAAsB,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAA;AAE7D,eAAO,MAAM,cAAc,GAAI,OAAO,OAAO,KAAG,sBA8B/C,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,WAAW,SAAS,KAAG,MACN,CAAA"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
export const supportedOperators = ['eq', 'neq', 'ieq', 'ineq'];
|
|
2
|
+
/**
|
|
3
|
+
* Walks an arbitrary object and, at each leaf, wraps the value
|
|
4
|
+
* in an `{ eq: string }` if it isn’t already an OperatorObject.
|
|
5
|
+
*/
|
|
6
|
+
const addDefaultEqOperatorWhenNoOperator = (raw) => {
|
|
7
|
+
const wrapEq = (node) => {
|
|
8
|
+
if (node !== null && typeof node === 'object' && !Array.isArray(node)) {
|
|
9
|
+
const obj = node;
|
|
10
|
+
const keys = Object.keys(obj);
|
|
11
|
+
if (keys.some((k) => supportedOperators.includes(k))) {
|
|
12
|
+
return obj;
|
|
13
|
+
}
|
|
14
|
+
const out = {};
|
|
15
|
+
for (const k of keys) {
|
|
16
|
+
out[k] = wrapEq(obj[k]);
|
|
17
|
+
}
|
|
18
|
+
return out;
|
|
19
|
+
}
|
|
20
|
+
return { eq: String(node) };
|
|
21
|
+
};
|
|
22
|
+
return {
|
|
23
|
+
filter: wrapEq(raw.filter),
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
const isObject = (x) => typeof x === 'object' && x !== null;
|
|
27
|
+
/**
|
|
28
|
+
* Walks the filter object recursively. At depth > 1 (inside a field's value),
|
|
29
|
+
* any key pointing to a string is in operator position and must be a valid
|
|
30
|
+
* supported operator (exact case-sensitive match).
|
|
31
|
+
*/
|
|
32
|
+
const hasValidOperators = (node, depth) => {
|
|
33
|
+
for (const [key, value] of Object.entries(node)) {
|
|
34
|
+
if (typeof value === 'string') {
|
|
35
|
+
if (depth > 1 && !supportedOperators.includes(key)) {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
else if (Array.isArray(value)) {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
else if (isObject(value)) {
|
|
43
|
+
if (!hasValidOperators(value, depth + 1)) {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return true;
|
|
49
|
+
};
|
|
50
|
+
export const validateFilter = (input) => {
|
|
51
|
+
// 1. If it's not an object, it can't possess properties, so it's missing.
|
|
52
|
+
if (!isObject(input)) {
|
|
53
|
+
return 'missing';
|
|
54
|
+
}
|
|
55
|
+
// 2. Check for the exact lowercase "filter" property
|
|
56
|
+
if ('filter' in input) {
|
|
57
|
+
const value = input.filter;
|
|
58
|
+
// Check if the value is a non-array object
|
|
59
|
+
if (!isObject(value) || Array.isArray(value)) {
|
|
60
|
+
return 'invalid';
|
|
61
|
+
}
|
|
62
|
+
// Check that all operator keys are valid supported operators
|
|
63
|
+
if (!hasValidOperators(value, 1)) {
|
|
64
|
+
return 'invalid';
|
|
65
|
+
}
|
|
66
|
+
return 'valid';
|
|
67
|
+
}
|
|
68
|
+
// 3. Check for any case-insensitive variation (e.g., "Filter", "FILTER")
|
|
69
|
+
if (Object.keys(input).some((key) => key.toLowerCase() === 'filter')) {
|
|
70
|
+
return 'invalid';
|
|
71
|
+
}
|
|
72
|
+
// 4. If no "filter" (any case) exists
|
|
73
|
+
return 'missing';
|
|
74
|
+
};
|
|
75
|
+
export const prepareFilter = (rawFilter) => addDefaultEqOperatorWhenNoOperator(rawFilter);
|
|
76
|
+
//# sourceMappingURL=filter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../../src/filtering/filter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseQueryString.d.ts","sourceRoot":"","sources":["../../src/queryStrings/parseQueryString.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAA;AAGnB,eAAO,MAAM,gBAAgB,GAAI,aAAa,MAAM,gBAIhD,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseQueryString.js","sourceRoot":"","sources":["../../src/queryStrings/parseQueryString.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAA;AAEnB,qDAAqD;AACrD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,WAAmB,EAAE,EAAE,CACtD,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE;IACpB,SAAS,EAAE,IAAI;IACf,iBAAiB,EAAE,IAAI;CACxB,CAAC,CAAA"}
|
|
@@ -3,13 +3,13 @@ import type { RequestInterceptor } from '../requestInterceptor/types.js';
|
|
|
3
3
|
import type { BroadcastFunction } from '../websocket/websocket.js';
|
|
4
4
|
import type { DeleteRequest } from './types.js';
|
|
5
5
|
export declare const createDeleteRoutes: (queries: Queries, allowDeleteCollection: boolean, requestInterceptor: RequestInterceptor | null, etagsEnabled: boolean, broadcast: BroadcastFunction | null) => (req: DeleteRequest) => Promise<{
|
|
6
|
-
statusCode: number;
|
|
7
|
-
body: import("./types.js").Body | undefined;
|
|
8
|
-
} | {
|
|
9
6
|
statusCode: number;
|
|
10
7
|
body: {
|
|
11
8
|
message: string;
|
|
12
9
|
};
|
|
10
|
+
} | {
|
|
11
|
+
statusCode: number;
|
|
12
|
+
body: import("./types.js").Body | undefined;
|
|
13
13
|
} | {
|
|
14
14
|
statusCode: number;
|
|
15
15
|
body?: undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../src/requestHandlers/delete.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAG5C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AACrE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAE5C,eAAO,MAAM,kBAAkB,GAC7B,SAAS,OAAO,EAChB,uBAAuB,OAAO,EAC9B,oBAAoB,kBAAkB,GAAG,IAAI,EAC7C,cAAc,OAAO,EACrB,WAAW,iBAAiB,GAAG,IAAI,WAEF,aAAa;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../src/requestHandlers/delete.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAG5C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AACrE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAE5C,eAAO,MAAM,kBAAkB,GAC7B,SAAS,OAAO,EAChB,uBAAuB,OAAO,EAC9B,oBAAoB,kBAAkB,GAAG,IAAI,EAC7C,cAAc,OAAO,EACrB,WAAW,iBAAiB,GAAG,IAAI,WAEF,aAAa;;;;;;;;;;;EAiG/C,CAAA"}
|
|
@@ -2,7 +2,11 @@ import { etag } from '../etags/etags.js';
|
|
|
2
2
|
import { interceptDeleteRequest } from '../requestInterceptor/interceptRequest.js';
|
|
3
3
|
export const createDeleteRoutes = (queries, allowDeleteCollection, requestInterceptor, etagsEnabled, broadcast) => {
|
|
4
4
|
const handleDelete = async (req) => {
|
|
5
|
-
const { headers, resource, id } = req;
|
|
5
|
+
const { headers, resource, id, filter } = req;
|
|
6
|
+
if (filter === 'invalid')
|
|
7
|
+
return { statusCode: 400, body: { message: 'Malformed filter expression' } };
|
|
8
|
+
if (id && filter)
|
|
9
|
+
return { statusCode: 400, body: { message: 'Filtering on a resource by ID is not supported' } };
|
|
6
10
|
if (requestInterceptor?.delete) {
|
|
7
11
|
try {
|
|
8
12
|
const interceptResult = await interceptDeleteRequest(requestInterceptor.delete, headers, resource, id);
|
|
@@ -22,7 +26,7 @@ export const createDeleteRoutes = (queries, allowDeleteCollection, requestInterc
|
|
|
22
26
|
}
|
|
23
27
|
}
|
|
24
28
|
if (id) {
|
|
25
|
-
const item = await queries.getById(resource, id);
|
|
29
|
+
const item = await queries.getById({ resource, id });
|
|
26
30
|
if (item) {
|
|
27
31
|
if (etagsEnabled) {
|
|
28
32
|
const itemEtag = etag(JSON.stringify(item));
|
|
@@ -35,7 +39,7 @@ export const createDeleteRoutes = (queries, allowDeleteCollection, requestInterc
|
|
|
35
39
|
};
|
|
36
40
|
}
|
|
37
41
|
}
|
|
38
|
-
await queries.deleteById(resource, id);
|
|
42
|
+
await queries.deleteById({ resource, id });
|
|
39
43
|
// Broadcast to WebSocket clients if enabled
|
|
40
44
|
if (broadcast) {
|
|
41
45
|
broadcast(resource, 'DELETE', { id });
|
|
@@ -59,7 +63,7 @@ export const createDeleteRoutes = (queries, allowDeleteCollection, requestInterc
|
|
|
59
63
|
return { statusCode: 405 };
|
|
60
64
|
}
|
|
61
65
|
if (etagsEnabled) {
|
|
62
|
-
const items = await queries.getAll(resource);
|
|
66
|
+
const items = await queries.getAll({ resource });
|
|
63
67
|
const etagValue = etag(JSON.stringify(items));
|
|
64
68
|
if (req.etag !== etagValue) {
|
|
65
69
|
return {
|
|
@@ -70,7 +74,12 @@ export const createDeleteRoutes = (queries, allowDeleteCollection, requestInterc
|
|
|
70
74
|
};
|
|
71
75
|
}
|
|
72
76
|
}
|
|
73
|
-
|
|
77
|
+
if (filter) {
|
|
78
|
+
await queries.deleteByFilter({ resource, filter });
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
await queries.deleteAll({ resource });
|
|
82
|
+
}
|
|
74
83
|
// Broadcast to WebSocket clients if enabled
|
|
75
84
|
if (broadcast) {
|
|
76
85
|
broadcast(resource, 'DELETE_ALL');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete.js","sourceRoot":"","sources":["../../src/requestHandlers/delete.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AACrC,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAA;AAK/E,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,OAAgB,EAChB,qBAA8B,EAC9B,kBAA6C,EAC7C,YAAqB,EACrB,SAAmC,EACnC,EAAE;IACF,MAAM,YAAY,GAAG,KAAK,EAAE,GAAkB,EAAE,EAAE;QAChD,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,GAAG,CAAA;
|
|
1
|
+
{"version":3,"file":"delete.js","sourceRoot":"","sources":["../../src/requestHandlers/delete.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,14 +14,14 @@ export declare const createGetRoutes: (queries: Queries, requestInterceptor: Req
|
|
|
14
14
|
headers: {
|
|
15
15
|
etag: string;
|
|
16
16
|
};
|
|
17
|
-
} | {
|
|
18
|
-
statusCode: number;
|
|
19
|
-
body: Body | undefined;
|
|
20
17
|
} | {
|
|
21
18
|
statusCode: number;
|
|
22
19
|
body: {
|
|
23
20
|
message: string;
|
|
24
21
|
};
|
|
22
|
+
} | {
|
|
23
|
+
statusCode: number;
|
|
24
|
+
body: Body | undefined;
|
|
25
25
|
} | {
|
|
26
26
|
statusCode: number;
|
|
27
27
|
body?: undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../src/requestHandlers/get.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAG5C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAErE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAA;AAC/E,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAG/C,eAAO,MAAM,eAAe,GAC1B,SAAS,OAAO,EAChB,oBAAoB,kBAAkB,GAAG,IAAI,EAC7C,yBAAyB,uBAAuB,GAAG,IAAI,EACvD,kBAAkB,OAAO,EACzB,cAAc,OAAO,WAES,UAAU;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../src/requestHandlers/get.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAG5C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAErE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAA;AAC/E,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAG/C,eAAO,MAAM,eAAe,GAC1B,SAAS,OAAO,EAChB,oBAAoB,kBAAkB,GAAG,IAAI,EAC7C,yBAAyB,uBAAuB,GAAG,IAAI,EACvD,kBAAkB,OAAO,EACzB,cAAc,OAAO,WAES,UAAU;;;;;;;;;;;;;;;;;;;;;;;EA0FzC,CAAA"}
|
|
@@ -4,7 +4,14 @@ import { interceptResponseBody } from '../responseBodyInterceptor/interceptRespo
|
|
|
4
4
|
import { removeNullFields } from './utils.js';
|
|
5
5
|
export const createGetRoutes = (queries, requestInterceptor, responseBodyInterceptor, returnNullFields, etagsEnabled) => {
|
|
6
6
|
const handleGet = async (req) => {
|
|
7
|
-
const { headers, resource, id, ifNoneMatchEtag } = req;
|
|
7
|
+
const { headers, resource, id, ifNoneMatchEtag, filter } = req;
|
|
8
|
+
if (filter === 'invalid')
|
|
9
|
+
return { statusCode: 400, body: { message: 'Malformed filter expression' } };
|
|
10
|
+
if (id && filter)
|
|
11
|
+
return {
|
|
12
|
+
statusCode: 400,
|
|
13
|
+
body: { message: 'Filtering on a resource by ID is not supported' },
|
|
14
|
+
};
|
|
8
15
|
const responseOk = (body) => {
|
|
9
16
|
if (!etagsEnabled)
|
|
10
17
|
return { statusCode: 200, body };
|
|
@@ -13,7 +20,7 @@ export const createGetRoutes = (queries, requestInterceptor, responseBodyInterce
|
|
|
13
20
|
? { statusCode: 304, headers: { etag } }
|
|
14
21
|
: { statusCode: 200, body, headers: { etag } };
|
|
15
22
|
};
|
|
16
|
-
if (
|
|
23
|
+
if (requestInterceptor?.get) {
|
|
17
24
|
try {
|
|
18
25
|
const interceptResult = await interceptGetRequest(requestInterceptor.get, headers, resource, id);
|
|
19
26
|
// If interceptor returned a response action, return immediately
|
|
@@ -32,7 +39,7 @@ export const createGetRoutes = (queries, requestInterceptor, responseBodyInterce
|
|
|
32
39
|
}
|
|
33
40
|
}
|
|
34
41
|
if (id) {
|
|
35
|
-
const item = await queries.getById(resource, id);
|
|
42
|
+
const item = await queries.getById({ resource, id });
|
|
36
43
|
if (!item) {
|
|
37
44
|
return { statusCode: 404 };
|
|
38
45
|
}
|
|
@@ -49,7 +56,9 @@ export const createGetRoutes = (queries, requestInterceptor, responseBodyInterce
|
|
|
49
56
|
}
|
|
50
57
|
return responseOk(theItem);
|
|
51
58
|
}
|
|
52
|
-
const items =
|
|
59
|
+
const items = filter
|
|
60
|
+
? await queries.getByFilter({ resource, filter })
|
|
61
|
+
: await queries.getAll({ resource });
|
|
53
62
|
const theItems = responseBodyInterceptor
|
|
54
63
|
? await interceptResponseBody(responseBodyInterceptor, { resource, body: items })
|
|
55
64
|
: items;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get.js","sourceRoot":"","sources":["../../src/requestHandlers/get.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAA;AAE5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,kDAAkD,CAAA;AAGxF,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE1C,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,OAAgB,EAChB,kBAA6C,EAC7C,uBAAuD,EACvD,gBAAyB,EACzB,YAAqB,EACrB,EAAE;IACF,MAAM,SAAS,GAAG,KAAK,EAAE,GAAe,EAAE,EAAE;QAC1C,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,eAAe,EAAE,GAAG,GAAG,CAAA;
|
|
1
|
+
{"version":3,"file":"get.js","sourceRoot":"","sources":["../../src/requestHandlers/get.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,14 +15,14 @@ export declare const getRequestHandler: (queries: Queries, schemas: CompiledSche
|
|
|
15
15
|
headers: {
|
|
16
16
|
etag: string;
|
|
17
17
|
};
|
|
18
|
-
} | {
|
|
19
|
-
statusCode: number;
|
|
20
|
-
body: import("./types.js").Body | undefined;
|
|
21
18
|
} | {
|
|
22
19
|
statusCode: number;
|
|
23
20
|
body: {
|
|
24
21
|
message: string;
|
|
25
22
|
};
|
|
23
|
+
} | {
|
|
24
|
+
statusCode: number;
|
|
25
|
+
body: import("./types.js").Body | undefined;
|
|
26
26
|
} | {
|
|
27
27
|
statusCode: number;
|
|
28
28
|
body?: undefined;
|
|
@@ -65,13 +65,13 @@ export declare const getRequestHandler: (queries: Queries, schemas: CompiledSche
|
|
|
65
65
|
body: import("./types.js").Body | undefined;
|
|
66
66
|
}>;
|
|
67
67
|
handleDelete: (req: import("./types.js").DeleteRequest) => Promise<{
|
|
68
|
-
statusCode: number;
|
|
69
|
-
body: import("./types.js").Body | undefined;
|
|
70
|
-
} | {
|
|
71
68
|
statusCode: number;
|
|
72
69
|
body: {
|
|
73
70
|
message: string;
|
|
74
71
|
};
|
|
72
|
+
} | {
|
|
73
|
+
statusCode: number;
|
|
74
|
+
body: import("./types.js").Body | undefined;
|
|
75
75
|
} | {
|
|
76
76
|
statusCode: number;
|
|
77
77
|
body?: undefined;
|
|
@@ -28,7 +28,7 @@ export const createPatchRoutes = (queries, requestInterceptor, returnNullFields,
|
|
|
28
28
|
};
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
|
-
let item = await queries.getById(resource, id);
|
|
31
|
+
let item = await queries.getById({ resource, id });
|
|
32
32
|
if (!item)
|
|
33
33
|
return {
|
|
34
34
|
statusCode: 404,
|
|
@@ -48,7 +48,7 @@ export const createPatchRoutes = (queries, requestInterceptor, returnNullFields,
|
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
50
|
item = { ...item, ...body, id };
|
|
51
|
-
const updatedItem = await queries.update(resource, item);
|
|
51
|
+
const updatedItem = await queries.update({ resource, item });
|
|
52
52
|
// Broadcast to WebSocket clients if enabled
|
|
53
53
|
if (broadcast) {
|
|
54
54
|
broadcast(resource, 'UPDATE', updatedItem);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"patch.js","sourceRoot":"","sources":["../../src/requestHandlers/patch.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AACrC,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAA;AAG9E,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAG7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE1C,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,OAAgB,EAChB,kBAA6C,EAC7C,gBAAyB,EACzB,OAA2C,EAC3C,YAAqB,EACrB,SAAmC,EACnC,EAAE;IACF,MAAM,WAAW,GAAG,KAAK,EAAE,GAAiB,EAAE,EAAE;QAC9C,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,GAAG,CAAA;QACrC,IAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAA;QAElB,MAAM,gBAAgB,GAAG,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;QAC5D,IAAI,gBAAgB,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;YACvC,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,gBAAgB,CAAC,YAAY,EAAE,EAAE,CAAA;QAC9E,CAAC;QAED,IAAI,kBAAkB,EAAE,KAAK,EAAE,CAAC;YAC9B,IAAI,CAAC;gBACH,MAAM,eAAe,GAAG,MAAM,qBAAqB,CACjD,kBAAkB,CAAC,KAAK,EACxB,OAAO,EACP,QAAQ,EACR,EAAE,EACF,IAAI,CACL,CAAA;gBAED,IAAI,eAAe,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oBACxC,OAAO;wBACL,UAAU,EAAE,eAAe,CAAC,MAAM;wBAClC,IAAI,EAAE,eAAe,CAAC,IAAI;qBAC3B,CAAA;gBACH,CAAC;gBAED,IAAI,GAAG,eAAe,CAAC,IAAI,IAAI,IAAI,CAAA;YACrC,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,OAAO;oBACL,UAAU,EAAE,GAAG;oBACf,IAAI,EAAE,EAAE,OAAO,EAAG,KAAe,CAAC,OAAO,EAAE;iBAC5C,CAAA;YACH,CAAC;QACH,CAAC;QAED,IAAI,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"patch.js","sourceRoot":"","sources":["../../src/requestHandlers/patch.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,7 +29,7 @@ export const createPostRoutes = (queries, requestInterceptor, returnNullFields,
|
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
31
|
if (id) {
|
|
32
|
-
const item = await queries.getById(resource, id);
|
|
32
|
+
const item = await queries.getById({ resource, id });
|
|
33
33
|
if (item)
|
|
34
34
|
return {
|
|
35
35
|
statusCode: 409,
|
|
@@ -38,7 +38,7 @@ export const createPostRoutes = (queries, requestInterceptor, returnNullFields,
|
|
|
38
38
|
},
|
|
39
39
|
};
|
|
40
40
|
}
|
|
41
|
-
const newItem = await queries.create(resource, id, body);
|
|
41
|
+
const newItem = await queries.create({ resource, id, item: body });
|
|
42
42
|
// Broadcast to WebSocket clients if enabled
|
|
43
43
|
if (broadcast) {
|
|
44
44
|
broadcast(resource, 'CREATE', newItem);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"post.js","sourceRoot":"","sources":["../../src/requestHandlers/post.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAA;AAE5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAA;AAG7E,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAG7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE1C,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,OAAgB,EAChB,kBAA6C,EAC7C,gBAAyB,EACzB,OAAoC,EACpC,SAAmC,EACnC,EAAE;IACF,MAAM,UAAU,GAAG,KAAK,EAAE,GAAgB,EAAE,EAAE;QAC5C,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,GAAG,CAAA;QACrD,IAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAA;QAElB,MAAM,gBAAgB,GAAG,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAA;QAC1D,IAAI,gBAAgB,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;YACvC,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,gBAAgB,CAAC,YAAY,EAAE,EAAE,CAAA;QAC9E,CAAC;QAED,IAAI,kBAAkB,EAAE,IAAI,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACH,MAAM,eAAe,GAAG,MAAM,oBAAoB,CAChD,kBAAkB,CAAC,IAAI,EACvB,OAAO,EACP,QAAQ,EACR,EAAE,EACF,IAAI,CACL,CAAA;gBAED,IAAI,eAAe,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oBACxC,OAAO;wBACL,UAAU,EAAE,eAAe,CAAC,MAAM;wBAClC,IAAI,EAAE,eAAe,CAAC,IAAI;qBAC3B,CAAA;gBACH,CAAC;gBAED,IAAI,GAAG,eAAe,CAAC,IAAI,IAAI,IAAI,CAAA;YACrC,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,OAAO;oBACL,UAAU,EAAE,GAAG;oBACf,IAAI,EAAE,EAAE,OAAO,EAAG,KAAe,CAAC,OAAO,EAAE;iBAC5C,CAAA;YACH,CAAC;QACH,CAAC;QAED,IAAI,EAAE,EAAE,CAAC;YACP,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"post.js","sourceRoot":"","sources":["../../src/requestHandlers/post.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAA;AAE5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAA;AAG7E,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAG7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE1C,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,OAAgB,EAChB,kBAA6C,EAC7C,gBAAyB,EACzB,OAAoC,EACpC,SAAmC,EACnC,EAAE;IACF,MAAM,UAAU,GAAG,KAAK,EAAE,GAAgB,EAAE,EAAE;QAC5C,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,GAAG,CAAA;QACrD,IAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAA;QAElB,MAAM,gBAAgB,GAAG,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAA;QAC1D,IAAI,gBAAgB,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;YACvC,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,gBAAgB,CAAC,YAAY,EAAE,EAAE,CAAA;QAC9E,CAAC;QAED,IAAI,kBAAkB,EAAE,IAAI,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACH,MAAM,eAAe,GAAG,MAAM,oBAAoB,CAChD,kBAAkB,CAAC,IAAI,EACvB,OAAO,EACP,QAAQ,EACR,EAAE,EACF,IAAI,CACL,CAAA;gBAED,IAAI,eAAe,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oBACxC,OAAO;wBACL,UAAU,EAAE,eAAe,CAAC,MAAM;wBAClC,IAAI,EAAE,eAAe,CAAC,IAAI;qBAC3B,CAAA;gBACH,CAAC;gBAED,IAAI,GAAG,eAAe,CAAC,IAAI,IAAI,IAAI,CAAA;YACrC,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,OAAO;oBACL,UAAU,EAAE,GAAG;oBACf,IAAI,EAAE,EAAE,OAAO,EAAG,KAAe,CAAC,OAAO,EAAE;iBAC5C,CAAA;YACH,CAAC;QACH,CAAC;QAED,IAAI,EAAE,EAAE,CAAC;YACP,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAA;YAEpD,IAAI,IAAI;gBACN,OAAO;oBACL,UAAU,EAAE,GAAG;oBACf,IAAI,EAAE;wBACJ,OAAO,EAAE,OAAO,EAAE,kBAAkB;qBACrC;iBACF,CAAA;QACL,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,IAAqB,EAAE,CAAC,CAAA;QAEnF,4CAA4C;QAC5C,IAAI,SAAS,EAAE,CAAC;YACd,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAA;QACxC,CAAC;QAED,OAAO;YACL,OAAO,EAAE;gBACP,QAAQ,EAAE,MAAM,CAAC;oBACf,QAAQ,EAAE,QAAQ;oBAClB,IAAI,EAAE,IAAI;oBACV,QAAQ,EAAE,GAAG,QAAQ,IAAI,OAAO,CAAC,EAAE,EAAE;iBACtC,CAAC;aACH;YACD,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC;SAC7D,CAAA;IACH,CAAC,CAAA;IAED,OAAO,UAAU,CAAA;AACnB,CAAC,CAAA"}
|
|
@@ -28,7 +28,7 @@ export const createPutRoutes = (queries, requestInterceptor, returnNullFields, s
|
|
|
28
28
|
};
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
|
-
let item = await queries.getById(resource, id);
|
|
31
|
+
let item = await queries.getById({ resource, id });
|
|
32
32
|
if (!item)
|
|
33
33
|
return {
|
|
34
34
|
statusCode: 404,
|
|
@@ -48,7 +48,7 @@ export const createPutRoutes = (queries, requestInterceptor, returnNullFields, s
|
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
50
|
item = { ...body, id };
|
|
51
|
-
const replacedItem = await queries.replace(resource, item);
|
|
51
|
+
const replacedItem = await queries.replace({ resource, item });
|
|
52
52
|
// Broadcast to WebSocket clients if enabled
|
|
53
53
|
if (broadcast) {
|
|
54
54
|
broadcast(resource, 'UPDATE', replacedItem);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"put.js","sourceRoot":"","sources":["../../src/requestHandlers/put.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AACrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAA;AAG5E,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAG7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE1C,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,OAAgB,EAChB,kBAA6C,EAC7C,gBAAyB,EACzB,OAA2C,EAC3C,YAAqB,EACrB,SAAmC,EACnC,EAAE;IACF,MAAM,SAAS,GAAG,KAAK,EAAE,GAAe,EAAE,EAAE;QAC1C,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,GAAG,CAAA;QACrC,IAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAA;QAElB,MAAM,gBAAgB,GAAG,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;QAC5D,IAAI,gBAAgB,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;YACvC,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,gBAAgB,CAAC,YAAY,EAAE,EAAE,CAAA;QAC9E,CAAC;QAED,IAAI,kBAAkB,EAAE,GAAG,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACH,MAAM,eAAe,GAAG,MAAM,mBAAmB,CAC/C,kBAAkB,CAAC,GAAG,EACtB,OAAO,EACP,QAAQ,EACR,EAAE,EACF,IAAI,CACL,CAAA;gBAED,IAAI,eAAe,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oBACxC,OAAO;wBACL,UAAU,EAAE,eAAe,CAAC,MAAM;wBAClC,IAAI,EAAE,eAAe,CAAC,IAAI;qBAC3B,CAAA;gBACH,CAAC;gBAED,IAAI,GAAG,eAAe,CAAC,IAAI,IAAI,IAAI,CAAA;YACrC,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,OAAO;oBACL,UAAU,EAAE,GAAG;oBACf,IAAI,EAAE,EAAE,OAAO,EAAG,KAAe,CAAC,OAAO,EAAE;iBAC5C,CAAA;YACH,CAAC;QACH,CAAC;QAED,IAAI,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"put.js","sourceRoot":"","sources":["../../src/requestHandlers/put.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { IncomingHttpHeaders } from 'http';
|
|
2
|
+
import type { Filter } from '../filtering/filter.js';
|
|
2
3
|
export type Body = object | string | Buffer | null;
|
|
3
4
|
export type UrlInfo = {
|
|
4
5
|
resource: string | null;
|
|
@@ -14,6 +15,7 @@ export type RequestInfo = {
|
|
|
14
15
|
headers: IncomingHttpHeaders;
|
|
15
16
|
etag: string | null;
|
|
16
17
|
ifNoneMatchEtag: string | null;
|
|
18
|
+
queryString: string | null;
|
|
17
19
|
};
|
|
18
20
|
export type TembaRequest = {
|
|
19
21
|
headers: IncomingHttpHeaders;
|
|
@@ -23,6 +25,7 @@ export type GetRequest = TembaRequest & {
|
|
|
23
25
|
id: string | null;
|
|
24
26
|
method: 'get' | 'head';
|
|
25
27
|
ifNoneMatchEtag: string | null;
|
|
28
|
+
filter: Filter | null | 'invalid';
|
|
26
29
|
};
|
|
27
30
|
export type PostRequest = TembaRequest & {
|
|
28
31
|
body: Body;
|
|
@@ -39,5 +42,6 @@ export type PatchRequest = PutRequest;
|
|
|
39
42
|
export type DeleteRequest = TembaRequest & {
|
|
40
43
|
id: string | null;
|
|
41
44
|
etag: string | null;
|
|
45
|
+
filter: Filter | null | 'invalid';
|
|
42
46
|
};
|
|
43
47
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/requestHandlers/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/requestHandlers/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAA;AAC/C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAEjD,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;AAElD,MAAM,MAAM,OAAO,GAAG;IACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,IAAI,GAAG,IAAI,CAAA;IACjB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,mBAAmB,CAAA;IAC5B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,mBAAmB,CAAA;IAC5B,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG;IACtC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;IACjB,MAAM,EAAE,KAAK,GAAG,MAAM,CAAA;IACtB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;CAClC,CAAA;AAED,MAAM,MAAM,WAAW,GAAG,YAAY,GAAG;IACvC,IAAI,EAAE,IAAI,CAAA;IACV,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG;IACtC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,IAAI,CAAA;IACV,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,UAAU,CAAA;AAErC,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG;IACzC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;IACjB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;CAClC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resourceHandler.d.ts","sourceRoot":"","sources":["../src/resourceHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"resourceHandler.d.ts","sourceRoot":"","sources":["../src/resourceHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,MAAM,CAAA;AAE3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACtC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAc3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAErD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAgG9D,eAAO,MAAM,qBAAqB,GAChC,SAAS,OAAO,EAChB,SAAS,eAAe,EACxB,QAAQ,MAAM,EACd,WAAW,iBAAiB,GAAG,IAAI,mBA6KtB,eAAe,OAAO,cAAc,CAAC,eAAe,CAAC,+BAOnE,CAAA"}
|
package/dist/resourceHandler.js
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import { parse } from 'url';
|
|
2
|
+
import { prepareFilter, validateFilter } from './filtering/filter.js';
|
|
3
|
+
import { parseQueryString } from './queryStrings/parseQueryString.js';
|
|
1
4
|
import { getRequestHandler } from './requestHandlers/index.js';
|
|
2
5
|
import { sendErrorResponse, sendResponse } from './responseHandler.js';
|
|
3
6
|
import { parseUrl } from './urls/urlParser.js';
|
|
@@ -15,6 +18,31 @@ const validateIdInRequestBodyNotAllowed = (requestInfo) => {
|
|
|
15
18
|
? createError(400, 'An id is not allowed in the request body')
|
|
16
19
|
: requestInfo;
|
|
17
20
|
};
|
|
21
|
+
const hasMalformedBrackets = (queryString) => {
|
|
22
|
+
let depth = 0;
|
|
23
|
+
for (const char of queryString) {
|
|
24
|
+
if (char === '[')
|
|
25
|
+
depth++;
|
|
26
|
+
else if (char === ']')
|
|
27
|
+
depth--;
|
|
28
|
+
if (depth < 0)
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
return depth !== 0;
|
|
32
|
+
};
|
|
33
|
+
const getFilter = (queryString) => {
|
|
34
|
+
if (!queryString)
|
|
35
|
+
return null;
|
|
36
|
+
if (hasMalformedBrackets(queryString))
|
|
37
|
+
return 'invalid';
|
|
38
|
+
const parsedQueryString = parseQueryString(queryString);
|
|
39
|
+
const result = validateFilter(parsedQueryString);
|
|
40
|
+
if (result === 'valid')
|
|
41
|
+
return prepareFilter(parsedQueryString);
|
|
42
|
+
if (result === 'invalid')
|
|
43
|
+
return 'invalid';
|
|
44
|
+
return null;
|
|
45
|
+
};
|
|
18
46
|
const convertToGetRequest = (requestInfo) => {
|
|
19
47
|
return {
|
|
20
48
|
headers: requestInfo.headers,
|
|
@@ -22,6 +50,7 @@ const convertToGetRequest = (requestInfo) => {
|
|
|
22
50
|
resource: requestInfo.resource,
|
|
23
51
|
method: requestInfo.method.toUpperCase() === 'HEAD' ? 'head' : 'get',
|
|
24
52
|
ifNoneMatchEtag: requestInfo.ifNoneMatchEtag,
|
|
53
|
+
filter: getFilter(requestInfo.queryString),
|
|
25
54
|
};
|
|
26
55
|
};
|
|
27
56
|
const convertToPostRequest = (requestInfo) => {
|
|
@@ -50,6 +79,7 @@ const convertToDeleteRequest = (requestInfo) => {
|
|
|
50
79
|
id: requestInfo.id,
|
|
51
80
|
resource: requestInfo.resource,
|
|
52
81
|
etag: requestInfo.etag ?? null,
|
|
82
|
+
filter: getFilter(requestInfo.queryString),
|
|
53
83
|
};
|
|
54
84
|
};
|
|
55
85
|
export const createResourceHandler = async (queries, schemas, config, broadcast) => {
|
|
@@ -78,6 +108,10 @@ export const createResourceHandler = async (queries, schemas, config, broadcast)
|
|
|
78
108
|
.on('error', (err) => reject(err));
|
|
79
109
|
});
|
|
80
110
|
};
|
|
111
|
+
const getQueryString = (req) => {
|
|
112
|
+
const parsedUrl = parse(req.url || '', true);
|
|
113
|
+
return parsedUrl.search || null;
|
|
114
|
+
};
|
|
81
115
|
const parseRequest = async (req) => {
|
|
82
116
|
const urlInfo = getUrlInfo(req.url ?? '');
|
|
83
117
|
// Due to how routing is setup this situation can not happen,
|
|
@@ -98,6 +132,7 @@ export const createResourceHandler = async (queries, schemas, config, broadcast)
|
|
|
98
132
|
headers: req.headers,
|
|
99
133
|
etag: req.headers['if-match'] ?? null,
|
|
100
134
|
ifNoneMatchEtag: req.headers['if-none-match'] ?? null,
|
|
135
|
+
queryString: getQueryString(req),
|
|
101
136
|
};
|
|
102
137
|
};
|
|
103
138
|
const validateResource = (requestInfo) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resourceHandler.js","sourceRoot":"","sources":["../src/resourceHandler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"resourceHandler.js","sourceRoot":"","sources":["../src/resourceHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { InterceptedResponse, ResponseBodyInterceptor } from './types.js';
|
|
2
|
-
export declare const interceptResponseBody: (interceptor: ResponseBodyInterceptor,
|
|
2
|
+
export declare const interceptResponseBody: (interceptor: ResponseBodyInterceptor, response: InterceptedResponse) => Promise<{}>;
|
|
3
3
|
//# sourceMappingURL=interceptResponseBody.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interceptResponseBody.d.ts","sourceRoot":"","sources":["../../src/responseBodyInterceptor/interceptResponseBody.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAA;AAE3E,eAAO,MAAM,qBAAqB,GAChC,aAAa,uBAAuB,EACpC,
|
|
1
|
+
{"version":3,"file":"interceptResponseBody.d.ts","sourceRoot":"","sources":["../../src/responseBodyInterceptor/interceptResponseBody.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAA;AAE3E,eAAO,MAAM,qBAAqB,GAChC,aAAa,uBAAuB,EACpC,UAAU,mBAAmB,gBAO9B,CAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export const interceptResponseBody = async (interceptor,
|
|
1
|
+
export const interceptResponseBody = async (interceptor, response) => {
|
|
2
2
|
if (!interceptor)
|
|
3
|
-
return
|
|
4
|
-
const intercepted = await interceptor(
|
|
5
|
-
return intercepted ? intercepted :
|
|
3
|
+
return response.body;
|
|
4
|
+
const intercepted = await interceptor(response);
|
|
5
|
+
return intercepted ? intercepted : response.body;
|
|
6
6
|
};
|
|
7
7
|
//# sourceMappingURL=interceptResponseBody.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interceptResponseBody.js","sourceRoot":"","sources":["../../src/responseBodyInterceptor/interceptResponseBody.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,EACxC,WAAoC,EACpC,
|
|
1
|
+
{"version":3,"file":"interceptResponseBody.js","sourceRoot":"","sources":["../../src/responseBodyInterceptor/interceptResponseBody.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,EACxC,WAAoC,EACpC,QAA6B,EAC7B,EAAE;IACF,IAAI,CAAC,WAAW;QAAE,OAAO,QAAQ,CAAC,IAAI,CAAA;IAEtC,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAA;IAE/C,OAAO,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAA;AAClD,CAAC,CAAA"}
|
|
@@ -8,5 +8,5 @@ export type InterceptedResponse = {
|
|
|
8
8
|
body: Item[];
|
|
9
9
|
resource: string;
|
|
10
10
|
};
|
|
11
|
-
export type ResponseBodyInterceptor = (
|
|
11
|
+
export type ResponseBodyInterceptor = (response: InterceptedResponse) => MaybePromise<unknown>;
|
|
12
12
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/responseBodyInterceptor/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AACzC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAE5C,MAAM,MAAM,mBAAmB,GAC3B;IACE,IAAI,EAAE,IAAI,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,EAAE,EAAE,MAAM,CAAA;CACX,GACD;IACE,IAAI,EAAE,IAAI,EAAE,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAEL,MAAM,MAAM,uBAAuB,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/responseBodyInterceptor/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AACzC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAE5C,MAAM,MAAM,mBAAmB,GAC3B;IACE,IAAI,EAAE,IAAI,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,EAAE,EAAE,MAAM,CAAA;CACX,GACD;IACE,IAAI,EAAE,IAAI,EAAE,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAEL,MAAM,MAAM,uBAAuB,GAAG,CAAC,QAAQ,EAAE,mBAAmB,KAAK,YAAY,CAAC,OAAO,CAAC,CAAA"}
|
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const version = "0.
|
|
1
|
+
export declare const version = "0.55.0";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const version = "0.
|
|
1
|
+
export const version = "0.55.0";
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "temba",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.55.0",
|
|
4
4
|
"description": "Create a simple REST API with zero coding in less than 30 seconds (seriously).",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -55,6 +55,7 @@
|
|
|
55
55
|
"lowdb": "7.0.1",
|
|
56
56
|
"mime": "4.1.0",
|
|
57
57
|
"morgan": "1.10.1",
|
|
58
|
+
"@types/qs": "^6.14.0",
|
|
58
59
|
"openapi3-ts": "4.5.0",
|
|
59
60
|
"ws": "8.19.0"
|
|
60
61
|
}
|