quetch 0.6.5 → 0.7.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/constants/SymbolCache.d.ts +1 -0
- package/dist/constants/SymbolCache.js +2 -0
- package/dist/constants/SymbolCache.js.map +1 -0
- package/dist/constants.d.ts +1 -0
- package/dist/constants.js +3 -0
- package/dist/constants.js.map +1 -0
- package/dist/middlewares/aggregate.js.map +1 -1
- package/dist/middlewares/cache.js.map +1 -1
- package/dist/middlewares/combine.js.map +1 -1
- package/dist/middlewares/fetchExternal.js.map +1 -1
- package/dist/middlewares/fetchLocal.d.ts +1 -1
- package/dist/middlewares/log.js.map +1 -1
- package/dist/middlewares/retry.js.map +1 -1
- package/dist/tools/defineCustomFetch.d.ts +4 -4
- package/dist/tools/defineCustomFetch.js.map +1 -1
- package/dist/tools/defineGenericFetch.d.ts +2 -2
- package/dist/tools/defineGenericFetch.js.map +1 -1
- package/dist/tools/escapeRegex.d.ts +7 -0
- package/dist/tools/escapeRegex.js +10 -0
- package/dist/tools/escapeRegex.js.map +1 -0
- package/dist/tools/filterChildren.d.ts +2 -0
- package/dist/tools/filterChildren.js +13 -0
- package/dist/tools/filterChildren.js.map +1 -0
- package/dist/tools/filterItem.d.ts +3 -1
- package/dist/tools/filterItem.js +21 -4
- package/dist/tools/filterItem.js.map +1 -1
- package/dist/tools/normalizeOrder.js.map +1 -1
- package/dist/tools/queryItemList.d.ts +2 -2
- package/dist/tools/queryItemList.js +3 -3
- package/dist/tools/queryItemList.js.map +1 -1
- package/dist/tools/sortItemList.js.map +1 -1
- package/dist/tools.d.ts +2 -0
- package/dist/tools.js +2 -0
- package/dist/tools.js.map +1 -1
- package/dist/types/Filter.d.ts +2 -1
- package/dist/types/FilterChildren.d.ts +13 -0
- package/dist/types/FilterChildren.js +2 -0
- package/dist/types/FilterChildren.js.map +1 -0
- package/dist/types/FilterKeys.d.ts +3 -3
- package/dist/types/FilterStringMatch.d.ts +2 -1
- package/dist/types/Query.d.ts +9 -0
- package/dist/types/QuerySettings.d.ts +8 -0
- package/dist/types/QuerySettings.js +2 -0
- package/dist/types/QuerySettings.js.map +1 -0
- package/dist/types/Result.d.ts +3 -5
- package/dist/types.d.ts +2 -0
- package/lib/constants/SymbolCache.ts +1 -0
- package/lib/constants.ts +2 -0
- package/lib/middlewares/fetchLocal.ts +1 -1
- package/lib/tools/defineCustomFetch.ts +10 -5
- package/lib/tools/defineGenericFetch.ts +3 -3
- package/lib/tools/escapeRegex.ts +9 -0
- package/lib/tools/filterChildren.ts +27 -0
- package/lib/tools/filterItem.test.ts +52 -0
- package/lib/tools/filterItem.ts +32 -4
- package/lib/tools/queryItemList.test.ts +2 -2
- package/lib/tools/queryItemList.ts +11 -6
- package/lib/tools.ts +2 -0
- package/lib/types/Filter.ts +8 -5
- package/lib/types/FilterChildren.ts +15 -0
- package/lib/types/FilterKeys.ts +4 -3
- package/lib/types/FilterStringMatch.ts +3 -1
- package/lib/types/Query.ts +9 -0
- package/lib/types/QueryReadMultiple.ts +0 -1
- package/lib/types/QuerySettings.ts +9 -0
- package/lib/types/Result.ts +8 -7
- package/lib/types.ts +2 -0
- package/package.json +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const SymbolCache: unique symbol;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SymbolCache.js","sourceRoot":"","sources":["../../lib/constants/SymbolCache.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { SymbolCache } from "./constants/SymbolCache.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../lib/constants.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregate.js","sourceRoot":"","sources":["../../lib/middlewares/aggregate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5C;;;;;;;;;GASG;AACH,MAAM,UAAU,SAAS,CAAiD,EACxE,YAAY,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,KAAK,EAAE,EAAE,EAAE;IAC1C,IAAI,MAAM,KAAK,KAAK,EAAE;
|
|
1
|
+
{"version":3,"file":"aggregate.js","sourceRoot":"","sources":["../../lib/middlewares/aggregate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../lib/middlewares/cache.ts"],"names":[],"mappings":"AAsCA,MAAM,UAAU,KAAK,CAAiD,EACpE,MAAM,GAAG,CAAC,EAAE,OAAO,GAAG,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,EAAK,EAAE,EAAE;IACtD,IAAI,MAAM,KAAK,MAAM,IAAI,OAAO,CAAC,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../lib/middlewares/cache.ts"],"names":[],"mappings":"AAsCA,MAAM,UAAU,KAAK,CAAiD,EACpE,MAAM,GAAG,CAAC,EAAE,OAAO,GAAG,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,EAAK,EAAE,EAAE;IACtD,IAAI,MAAM,KAAK,MAAM,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;QACpC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;IACzC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,EACD,KAAK,EACL,eAAe,EACf,iBAAiB,EACjB,UAAU,EACV,SAAS,GACO;IAChB;;;MAGE;IACF,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAC3B,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QACzB,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,OAAO,IAAI,CAAC,KAAsB,CAAC,CAAC;QACtC,CAAC;QACD,IAAI,MAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YACxB,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACvE,IAAI,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC;gBACrD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAsB,CAAC,CAAC;gBACjD,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;gBAChC,OAAO,KAAK,CAAC;YACf,CAAC;YACD,MAAM,aAAa,GAAG,iBAAiB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;YAC5D,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;gBAChC,OAAO,WAAW,CAAC;YACrB,CAAC;YACD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,aAA8B,CAAC,CAAC;YACzD,MAAM,aAAa,GAAG,SAAS,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;YACxE,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE;gBACZ,KAAK,EAAE,UAAU,CAAC,aAAa,EAAE,WAAW,CAAC;gBAC7C,KAAK,EAAE,aAAa;aACrB,CAAC,CAAC;YACH,OAAO,aAAa,CAAC;QACvB,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAsB,CAAC,CAAC;QACjD,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"combine.js","sourceRoot":"","sources":["../../lib/middlewares/combine.ts"],"names":[],"mappings":"AAs2BA,SAAS,OAAO,CA8Cd,GAAG,WAsBF;IAED,sCAAsC;IACtC,OAAO,UAAU,KAAK,EAAE,IAAI;QAC1B,SAAS,QAAQ,CAAC,KAAU,EAAE,KAAa;YACzC,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;YACnC,IAAI,CAAC,OAAO,EAAE;
|
|
1
|
+
{"version":3,"file":"combine.js","sourceRoot":"","sources":["../../lib/middlewares/combine.ts"],"names":[],"mappings":"AAs2BA,SAAS,OAAO,CA8Cd,GAAG,WAsBF;IAED,sCAAsC;IACtC,OAAO,UAAU,KAAK,EAAE,IAAI;QAC1B,SAAS,QAAQ,CAAC,KAAU,EAAE,KAAa;YACzC,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;YACnC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;YACD,6DAA6D;YAC7D,MAAM,MAAM,GAAQ,OAAO,CAAC,KAAK,EAAE,UAAU,KAAK;gBAChD,OAAO,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YACpC,CAAC,CAAC,CAAC;YACH,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CAAC,oBAAoB,KAAK,4BAA4B,CAAC,CAAC;YACzE,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,OAAO,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC5B,CAAC,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,OAAO,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchExternal.js","sourceRoot":"","sources":["../../lib/middlewares/fetchExternal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAC3B,KAAK,GAAG,SAAS,EAAE,CAAC,KAAK;IAEzB,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,IAAI,CAAC,KAAK,EAAE;
|
|
1
|
+
{"version":3,"file":"fetchExternal.js","sourceRoot":"","sources":["../../lib/middlewares/fetchExternal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAC3B,KAAK,GAAG,SAAS,EAAE,CAAC,KAAK;IAEzB,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,IAAI,CAAC,KAAK,EAAE,CAAC;QACpD,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE;QAC1B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,YAAY,CACpB,QAAQ,CAAC,UAAU,EACnB,QAAQ,CAAC,MAAM,EACf,SAAS,EACT,OAAO,EACP,QAAQ,CACT,CAAC;YACJ,CAAC;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,MAAM,IAAI,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;YACjE,CAAC;YACD,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QACjE,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -4,7 +4,7 @@ import type { CustomFieldMap, Handler, Query } from "../types";
|
|
|
4
4
|
*
|
|
5
5
|
* @returns Promise that resolves to the response.
|
|
6
6
|
*/
|
|
7
|
-
export declare function fetchLocal<T extends object>(): Handler<Query<T,
|
|
7
|
+
export declare function fetchLocal<T extends object>(): Handler<Query<T, undefined> & {
|
|
8
8
|
type: T[];
|
|
9
9
|
customFields: never;
|
|
10
10
|
}, any, never, never>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log.js","sourceRoot":"","sources":["../../lib/middlewares/log.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAI7B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC;;;;;GAKG;AACH,MAAM,UAAU,GAAG,CAAe,KAAK,GAAG,OAAO;IAC/C,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;
|
|
1
|
+
{"version":3,"file":"log.js","sourceRoot":"","sources":["../../lib/middlewares/log.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAI7B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC;;;;;GAKG;AACH,MAAM,UAAU,GAAG,CAAe,KAAK,GAAG,OAAO;IAC/C,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;QAC1C,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAC3B,+BAA+B;QAC/B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAsB,CAAC,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC9B,OAAO,CAAC,QAAQ,EAAE,CAAC;YACnB,OAAO,MAAsB,CAAC;QAChC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC5B,OAAO,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,KAAK,CAAC;QACd,CAAC;QACD,8BAA8B;IAChC,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retry.js","sourceRoot":"","sources":["../../lib/middlewares/retry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD;;;;;;;GAOG;AACH,MAAM,UAAU,KAAK,CAAC,EACpB,MAAM,GAAG,CAAC,EACV,KAAK,GAAG,IAAI,EACZ,UAAU,GAAG,GAAG,GACjB,GAAG,EAAE;IACJ,MAAM,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,CAAC;IAClC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,IAAI,UAAU,GAAG,MAAM,CAAC;QACxB,MAAM,KAAK,GAAG,KAAK,IAAuB,EAAE;YAC1C,IAAI;
|
|
1
|
+
{"version":3,"file":"retry.js","sourceRoot":"","sources":["../../lib/middlewares/retry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD;;;;;;;GAOG;AACH,MAAM,UAAU,KAAK,CAAC,EACpB,MAAM,GAAG,CAAC,EACV,KAAK,GAAG,IAAI,EACZ,UAAU,GAAG,GAAG,GACjB,GAAG,EAAE;IACJ,MAAM,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,CAAC;IAClC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,IAAI,UAAU,GAAG,MAAM,CAAC;QACxB,MAAM,KAAK,GAAG,KAAK,IAAuB,EAAE;YAC1C,IAAI,CAAC;gBACH,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,SAAS,KAAK,SAAS,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;oBACjD,UAAU,GAAG,MAAM,CAAC;oBACpB,MAAM,WAAW,EAAE,CAAC;gBACtB,CAAC;qBAAM,IAAI,CAAC,CAAC,KAAK,YAAY,YAAY,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;oBAClE,MAAM,KAAK,CAAC;gBACd,CAAC;gBACD,IAAI,EAAE,UAAU,GAAG,CAAC,EAAE,CAAC;oBACrB,MAAM,KAAK,CACT,KAAK,GAAG,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAC3D,KAAK,CAAC,MAAM,CACb,CAAC;oBACF,OAAO,KAAK,EAAE,CAAC;gBACjB,CAAC;gBACD,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC,CAAC;QACF,OAAO,KAAK,EAAE,CAAC;IACjB,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -9,17 +9,17 @@ export declare function defineCustomFetch<M extends Record<string, object>>(hand
|
|
|
9
9
|
type: Key | any[];
|
|
10
10
|
customFields?: CustomFieldMap<any>;
|
|
11
11
|
}, any, never, never>): {
|
|
12
|
-
<K extends keyof M, T extends M[K], const Q extends Query<T,
|
|
12
|
+
<K extends keyof M, T extends M[K], const Q extends Query<T, undefined>>(query: Q & {
|
|
13
13
|
type: K;
|
|
14
14
|
customFields?: undefined;
|
|
15
|
-
}): Promise<Result<T, Q,
|
|
15
|
+
}): Promise<Result<T, Q, undefined>>;
|
|
16
16
|
<K_1 extends keyof M, T_1 extends M[K_1], const Q_1 extends Query<T_1, C>, const C extends CustomFieldMap<T_1>>(query: Q_1 & {
|
|
17
17
|
type: K_1;
|
|
18
18
|
customFields: C;
|
|
19
19
|
}): Promise<Result<T_1, Q_1, C>>;
|
|
20
|
-
<T_2 extends object, const Q_2 extends Query<T_2,
|
|
20
|
+
<T_2 extends object, const Q_2 extends Query<T_2, undefined>>(type: T_2[], query: Q_2 & {
|
|
21
21
|
customFields?: undefined;
|
|
22
|
-
}): Promise<Result<T_2, Q_2,
|
|
22
|
+
}): Promise<Result<T_2, Q_2, undefined>>;
|
|
23
23
|
<T_3 extends object, const Q_3 extends Query<T_3, C_1>, const C_1 extends CustomFieldMap<T_3>>(query: Q_3 & {
|
|
24
24
|
type: T_3[];
|
|
25
25
|
customFields: C_1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defineCustomFetch.js","sourceRoot":"","sources":["../../lib/tools/defineCustomFetch.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAKC;
|
|
1
|
+
{"version":3,"file":"defineCustomFetch.js","sourceRoot":"","sources":["../../lib/tools/defineCustomFetch.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAKC;IA2BD,KAAK,UAAU,WAAW,CAKxB,KAA8C;QAC9C,OAAO,MAAM,OAAO,CAAC,KAAY,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC"}
|
|
@@ -3,10 +3,10 @@ export declare function defineGenericFetch<K extends string>(handler: Handler<Qu
|
|
|
3
3
|
type: Key | any[];
|
|
4
4
|
customFields?: CustomFieldMap<any>;
|
|
5
5
|
}, any, never, never>): <T extends object>() => {
|
|
6
|
-
<const Q extends Query<T,
|
|
6
|
+
<const Q extends Query<T, undefined>>(query: Q & {
|
|
7
7
|
type: K | T[];
|
|
8
8
|
customFields?: undefined;
|
|
9
|
-
}): Promise<Result<T, Q,
|
|
9
|
+
}): Promise<Result<T, Q, undefined>>;
|
|
10
10
|
<const Q_1 extends Query<T, C>, const C extends CustomFieldMap<T>>(query: Q_1 & {
|
|
11
11
|
type: K | T[];
|
|
12
12
|
customFields: C;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defineGenericFetch.js","sourceRoot":"","sources":["../../lib/tools/defineGenericFetch.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,UAAU,kBAAkB,CAChC,OAKC;IAED,mHAAmH;IACnH,SAAS,YAAY;QAQnB,KAAK,UAAU,WAAW,CAIxB,KAA8C;YAE9C,OAAO,MAAM,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"defineGenericFetch.js","sourceRoot":"","sources":["../../lib/tools/defineGenericFetch.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,UAAU,kBAAkB,CAChC,OAKC;IAED,mHAAmH;IACnH,SAAS,YAAY;QAQnB,KAAK,UAAU,WAAW,CAIxB,KAA8C;YAE9C,OAAO,MAAM,OAAO,CAAC,KAAY,EAAE,IAAI,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Escapes special characters of a given regular expresion `pattern`.
|
|
3
|
+
*
|
|
4
|
+
* @param pattern Regular expression string to escape.
|
|
5
|
+
* @returns Escaped regular expression
|
|
6
|
+
*/
|
|
7
|
+
export function escapeRegex(pattern) {
|
|
8
|
+
return pattern.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=escapeRegex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"escapeRegex.js","sourceRoot":"","sources":["../../lib/tools/escapeRegex.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,OAAO,OAAO,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AACxD,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { escapeRegex } from "./escapeRegex.js";
|
|
2
|
+
export function filterChildren(parentPath, pathFieldKey, deep = false, pathSeparator = "/") {
|
|
3
|
+
return {
|
|
4
|
+
field: pathFieldKey,
|
|
5
|
+
operator: "match",
|
|
6
|
+
value: childrenRegex(parentPath, deep, pathSeparator),
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
function childrenRegex(parentPath, deep = false, pathSeparator = "/") {
|
|
10
|
+
const escapedSeparator = escapeRegex(pathSeparator);
|
|
11
|
+
return `^${escapeRegex(parentPath)}${parentPath === "" ? "" : escapedSeparator}${deep ? "" : `[^${escapedSeparator}]{1,}$`}`;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=filterChildren.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filterChildren.js","sourceRoot":"","sources":["../../lib/tools/filterChildren.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,UAAU,cAAc,CAC5B,UAAkB,EAClB,YAAmC,EACnC,IAAI,GAAG,KAAK,EACZ,aAAa,GAAG,GAAG;IAEnB,OAAO;QACL,KAAK,EAAE,YAAY;QACnB,QAAQ,EAAE,OAAO;QACjB,KAAK,EAAE,aAAa,CAAC,UAAU,EAAE,IAAI,EAAE,aAAa,CAAC;KACtD,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CACpB,UAAkB,EAClB,IAAI,GAAG,KAAK,EACZ,aAAa,GAAG,GAAG;IAEnB,MAAM,gBAAgB,GAAG,WAAW,CAAC,aAAa,CAAC,CAAC;IACpD,OAAO,IAAI,WAAW,CAAC,UAAU,CAAC,GAChC,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAC3B,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,gBAAgB,QAAQ,EAAE,CAAC;AACjD,CAAC"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import type { Filter } from "../types";
|
|
2
|
+
import type { QuerySettings } from "../types/QuerySettings";
|
|
2
3
|
/**
|
|
3
4
|
* Checks wether the provided `value` matches the `filter` or not.
|
|
4
5
|
*
|
|
5
6
|
* @param filter The filter to apply.
|
|
6
7
|
* @param value The value to check.
|
|
8
|
+
* @param settings Optional query settings.
|
|
7
9
|
* @returns `true` if the `value` matches the `filter` and `false` otherwise.
|
|
8
10
|
*/
|
|
9
|
-
export declare function filterItem<T extends object>(filter: Filter<T> | undefined, value: T | undefined): boolean;
|
|
11
|
+
export declare function filterItem<T extends object>(filter: Filter<T> | undefined, value: T | undefined, settings?: QuerySettings<T>): boolean;
|
package/dist/tools/filterItem.js
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
|
+
import { SymbolCache } from "../constants/SymbolCache.js";
|
|
2
|
+
import { filterChildren } from "./filterChildren.js";
|
|
1
3
|
const { isArray } = Array;
|
|
2
4
|
/**
|
|
3
5
|
* Checks wether the provided `value` matches the `filter` or not.
|
|
4
6
|
*
|
|
5
7
|
* @param filter The filter to apply.
|
|
6
8
|
* @param value The value to check.
|
|
9
|
+
* @param settings Optional query settings.
|
|
7
10
|
* @returns `true` if the `value` matches the `filter` and `false` otherwise.
|
|
8
11
|
*/
|
|
9
|
-
export function filterItem(filter, value) {
|
|
12
|
+
export function filterItem(filter, value, settings) {
|
|
10
13
|
if (value === undefined) {
|
|
11
14
|
return false;
|
|
12
15
|
}
|
|
@@ -46,6 +49,20 @@ export function filterItem(filter, value) {
|
|
|
46
49
|
}
|
|
47
50
|
case "notEqual":
|
|
48
51
|
return value[filter.field] !== filter.value;
|
|
52
|
+
case "children": {
|
|
53
|
+
if (filter[SymbolCache] === undefined) {
|
|
54
|
+
switch (true) {
|
|
55
|
+
case settings?.transformFilterChildren !== undefined:
|
|
56
|
+
filter[SymbolCache] = settings.transformFilterChildren(filter);
|
|
57
|
+
break;
|
|
58
|
+
default: {
|
|
59
|
+
const { pathFieldKey = "id", pathFieldSeparator = "/", } = settings || {};
|
|
60
|
+
filter[SymbolCache] = filterChildren(filter.value, pathFieldKey, filter.deep, pathFieldSeparator);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return filterItem(filter[SymbolCache], value);
|
|
65
|
+
}
|
|
49
66
|
case "startWith":
|
|
50
67
|
return (value[filter.field]?.startsWith(filter.value) ??
|
|
51
68
|
false);
|
|
@@ -78,11 +95,11 @@ export function filterItem(filter, value) {
|
|
|
78
95
|
if (item === undefined) {
|
|
79
96
|
return false;
|
|
80
97
|
}
|
|
81
|
-
if (filter
|
|
98
|
+
if (filter[SymbolCache] === undefined) {
|
|
82
99
|
const { options = {} } = filter;
|
|
83
|
-
filter
|
|
100
|
+
filter[SymbolCache] = new RegExp(filter.value, `${options.ignoreCase ? "i" : ""}${options.dotAll ? "s" : ""}`);
|
|
84
101
|
}
|
|
85
|
-
return filter.
|
|
102
|
+
return filter[SymbolCache].test(item);
|
|
86
103
|
}
|
|
87
104
|
case "intersect": {
|
|
88
105
|
const item = value[filter.field];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filterItem.js","sourceRoot":"","sources":["../../lib/tools/filterItem.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"filterItem.js","sourceRoot":"","sources":["../../lib/tools/filterItem.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalizeOrder.js","sourceRoot":"","sources":["../../lib/tools/normalizeOrder.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,cAAc,CAC5B,KAAe;IAEf,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;
|
|
1
|
+
{"version":3,"file":"normalizeOrder.js","sourceRoot":"","sources":["../../lib/tools/normalizeOrder.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,cAAc,CAC5B,KAAe;IAEf,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO;QACL,UAAU,EAAE,KAAK;QACjB,KAAK,EAAE,KAAK;KACb,CAAC;AACJ,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { CustomFieldMap, Query, Result } from "../types.js";
|
|
2
|
-
declare function queryItemList<T extends object, const Q extends Query<T,
|
|
2
|
+
declare function queryItemList<T extends object, const Q extends Query<T, undefined>>(query: Q & {
|
|
3
3
|
type: T[];
|
|
4
4
|
customFields?: never;
|
|
5
|
-
}): Result<T, Q,
|
|
5
|
+
}): Result<T, Q, undefined>;
|
|
6
6
|
declare function queryItemList<T extends object, const Q extends Query<T, C>, const C extends CustomFieldMap<T>>(query: Q & {
|
|
7
7
|
type: T[];
|
|
8
8
|
customFields: C;
|
|
@@ -32,7 +32,7 @@ function queryItemList(query) {
|
|
|
32
32
|
let result = data;
|
|
33
33
|
if (context !== undefined || filter !== undefined) {
|
|
34
34
|
const normalizedFilter = mergeContextAndFilter(context, filter);
|
|
35
|
-
result = data.filter((item) => filterItem(normalizedFilter, item));
|
|
35
|
+
result = data.filter((item) => filterItem(normalizedFilter, item, query.settings));
|
|
36
36
|
}
|
|
37
37
|
// Sort
|
|
38
38
|
result = sortItemList(order, result === data ? [...data] : result);
|
|
@@ -43,7 +43,7 @@ function queryItemList(query) {
|
|
|
43
43
|
return result;
|
|
44
44
|
}
|
|
45
45
|
const normalizedFilter = mergeContextAndFilter(context, filter);
|
|
46
|
-
const result = data.find((item) => filterItem(normalizedFilter, item));
|
|
46
|
+
const result = data.find((item) => filterItem(normalizedFilter, item, query.settings));
|
|
47
47
|
if (result === undefined) {
|
|
48
48
|
throw new RequestError("Not found", 404, query);
|
|
49
49
|
}
|
|
@@ -58,7 +58,7 @@ function queryItemList(query) {
|
|
|
58
58
|
}
|
|
59
59
|
const normalizedFilter = mergeContextAndFilter(context, filter);
|
|
60
60
|
return data.reduce((result, item) => {
|
|
61
|
-
if (filterItem(normalizedFilter, item)) {
|
|
61
|
+
if (filterItem(normalizedFilter, item, query.settings)) {
|
|
62
62
|
return result + 1;
|
|
63
63
|
}
|
|
64
64
|
return result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queryItemList.js","sourceRoot":"","sources":["../../lib/tools/queryItemList.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"queryItemList.js","sourceRoot":"","sources":["../../lib/tools/queryItemList.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sortItemList.js","sourceRoot":"","sources":["../../lib/tools/sortItemList.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAC1B,SAAiC,EACjC,KAAU;IAEV,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;
|
|
1
|
+
{"version":3,"file":"sortItemList.js","sourceRoot":"","sources":["../../lib/tools/sortItemList.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAC1B,SAAiC,EACjC,KAAU;IAEV,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,eAAe,GAAG,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACtD,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACzB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;YAC5D,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;YACrD,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1B,SAAS;YACX,CAAC;YACD,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxB,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7B,CAAC;YACD,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/tools.d.ts
CHANGED
|
@@ -2,6 +2,8 @@ export { cork } from "./tools/cork.js";
|
|
|
2
2
|
export { defineCheckQuery } from "./tools/defineCheckQuery.js";
|
|
3
3
|
export { defineCustomFetch } from "./tools/defineCustomFetch.js";
|
|
4
4
|
export { defineGenericFetch } from "./tools/defineGenericFetch.js";
|
|
5
|
+
export { escapeRegex } from "./tools/escapeRegex.js";
|
|
6
|
+
export { filterChildren } from "./tools/filterChildren.js";
|
|
5
7
|
export { filterFromContext } from "./tools/filterFromContext.js";
|
|
6
8
|
export { filterItem } from "./tools/filterItem.js";
|
|
7
9
|
export { normalizeOrder } from "./tools/normalizeOrder.js";
|
package/dist/tools.js
CHANGED
|
@@ -3,6 +3,8 @@ export { cork } from "./tools/cork.js";
|
|
|
3
3
|
export { defineCheckQuery } from "./tools/defineCheckQuery.js";
|
|
4
4
|
export { defineCustomFetch } from "./tools/defineCustomFetch.js";
|
|
5
5
|
export { defineGenericFetch } from "./tools/defineGenericFetch.js";
|
|
6
|
+
export { escapeRegex } from "./tools/escapeRegex.js";
|
|
7
|
+
export { filterChildren } from "./tools/filterChildren.js";
|
|
6
8
|
export { filterFromContext } from "./tools/filterFromContext.js";
|
|
7
9
|
export { filterItem } from "./tools/filterItem.js";
|
|
8
10
|
export { normalizeOrder } from "./tools/normalizeOrder.js";
|
package/dist/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../lib/tools.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC"}
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../lib/tools.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC"}
|
package/dist/types/Filter.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { FilterArray } from "./FilterArray";
|
|
2
2
|
import type { FilterBoolean } from "./FilterBoolean";
|
|
3
|
+
import type { FilterChildren } from "./FilterChildren";
|
|
3
4
|
import type { FilterField } from "./FilterField";
|
|
4
5
|
import type { FilterNumber } from "./FilterNumber";
|
|
5
6
|
import type { FilterSequence } from "./FilterSequence";
|
|
@@ -9,4 +10,4 @@ import type { FilterStringMatch } from "./FilterStringMatch";
|
|
|
9
10
|
/**
|
|
10
11
|
* Describes a predicate for filtering items.
|
|
11
12
|
*/
|
|
12
|
-
export type Filter<T extends object> =
|
|
13
|
+
export type Filter<T extends object> = FilterArray<T> | FilterBoolean<T> | FilterChildren<T> | FilterField<T> | FilterNumber<T> | FilterSequence<T> | FilterString<T> | FilterStringIntersect<T> | FilterStringMatch<T>;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { SymbolCache } from "../constants";
|
|
2
|
+
import type { Context } from "./Context";
|
|
3
|
+
import type { Filter } from "./Filter";
|
|
4
|
+
/**
|
|
5
|
+
* Matches the direct children of a specified `value` item.
|
|
6
|
+
* If `deep` is `true`, also captures all the descendants.
|
|
7
|
+
*/
|
|
8
|
+
export type FilterChildren<T extends object> = {
|
|
9
|
+
operator: "children";
|
|
10
|
+
value: Context<T> | string;
|
|
11
|
+
deep?: boolean;
|
|
12
|
+
[SymbolCache]?: Filter<T>;
|
|
13
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FilterChildren.js","sourceRoot":"","sources":["../../lib/types/FilterChildren.ts"],"names":[],"mappings":""}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Returns object type with field extending the provided `P` type.
|
|
3
3
|
*/
|
|
4
|
-
export type FilterKeys<T extends object, P> = {
|
|
5
|
-
[K in keyof T
|
|
6
|
-
}
|
|
4
|
+
export type FilterKeys<T extends object, P> = keyof T & keyof {
|
|
5
|
+
[K in keyof T as T[K] extends P ? K : never]-?: T[K];
|
|
6
|
+
};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { SymbolCache } from "../constants/SymbolCache";
|
|
1
2
|
import type { FilterKeys } from "./FilterKeys";
|
|
2
3
|
/**
|
|
3
4
|
* Checks if a given string field matches a given regular expression.
|
|
@@ -25,5 +26,5 @@ export type FilterStringMatch<T extends object> = {
|
|
|
25
26
|
/**
|
|
26
27
|
* Compiled regular expression generated by the `testFilter` function.
|
|
27
28
|
*/
|
|
28
|
-
|
|
29
|
+
[SymbolCache]?: RegExp;
|
|
29
30
|
};
|
package/dist/types/Query.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ import type { QueryDelete } from "./QueryDelete";
|
|
|
8
8
|
import type { QueryDeleteMultiple } from "./QueryDeleteMultiple";
|
|
9
9
|
import type { QueryRead } from "./QueryRead";
|
|
10
10
|
import type { QueryReadMultiple } from "./QueryReadMultiple";
|
|
11
|
+
import type { QuerySettings } from "./QuerySettings";
|
|
11
12
|
import type { QueryUpdate } from "./QueryUpdate";
|
|
12
13
|
import type { QueryUpdateMultiple } from "./QueryUpdateMultiple";
|
|
13
14
|
type QueryBase<T extends object> = QueryRead<T> | QueryReadMultiple<T> | QueryCreate<T> | QueryCreateMultiple<T> | QueryUpdate<T> | QueryUpdateMultiple<T> | QueryDelete<T> | QueryDeleteMultiple<T> | QueryAggregate<T>;
|
|
@@ -38,5 +39,13 @@ L extends boolean | undefined = boolean> = Extract<QueryBase<InjectCustomFields<
|
|
|
38
39
|
* Common item properties to use for identifying the item.
|
|
39
40
|
*/
|
|
40
41
|
context?: Context<T>;
|
|
42
|
+
/**
|
|
43
|
+
* Query parameters.
|
|
44
|
+
*/
|
|
45
|
+
parameters?: Record<string, string | string[] | number | number[]>;
|
|
46
|
+
/**
|
|
47
|
+
* Query settings.
|
|
48
|
+
*/
|
|
49
|
+
settings?: QuerySettings<T>;
|
|
41
50
|
};
|
|
42
51
|
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Filter } from "./Filter";
|
|
2
|
+
import type { FilterChildren } from "./FilterChildren";
|
|
3
|
+
import type { FilterKeys } from "./FilterKeys";
|
|
4
|
+
export type QuerySettings<T extends object> = {
|
|
5
|
+
pathFieldSeparator?: string;
|
|
6
|
+
pathFieldKey?: FilterKeys<T, string>;
|
|
7
|
+
transformFilterChildren?: (filter: FilterChildren<T>) => Filter<T>;
|
|
8
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QuerySettings.js","sourceRoot":"","sources":["../../lib/types/QuerySettings.ts"],"names":[],"mappings":""}
|
package/dist/types/Result.d.ts
CHANGED
|
@@ -2,19 +2,17 @@ import type { CustomFieldMap } from "./CustomFieldMap";
|
|
|
2
2
|
import type { InjectCustomFields } from "./InjectCustomFields";
|
|
3
3
|
import type { Item } from "./Item";
|
|
4
4
|
import type { Query } from "./Query";
|
|
5
|
-
export type PickFields<T extends object, F extends string | number | symbol> = [
|
|
6
|
-
F
|
|
7
|
-
] extends [keyof T] ? {
|
|
5
|
+
export type PickFields<T extends object | undefined, F extends string | number | symbol> = [F] extends [keyof T] ? {
|
|
8
6
|
readonly [K in F]: T[K];
|
|
9
7
|
} : {
|
|
10
8
|
readonly [K in keyof T]: T[K];
|
|
11
9
|
};
|
|
12
|
-
export type ResultRead<T extends object, Q extends Query<T, C>, C extends CustomFieldMap<T
|
|
10
|
+
export type ResultRead<T extends object, Q extends Query<T, C>, C extends CustomFieldMap<T> | undefined, U extends InjectCustomFields<T, C> | undefined = InjectCustomFields<T, C>> = [C] extends [CustomFieldMap<T>] ? [Q] extends [{
|
|
13
11
|
fields: (keyof U)[];
|
|
14
12
|
}] ? PickFields<U, Item<Q["fields"]>> : U : [Q] extends [{
|
|
15
13
|
fields: (keyof T)[];
|
|
16
14
|
}] ? PickFields<T, Item<Q["fields"]>> : T;
|
|
17
|
-
export type Result<T extends object, Q extends Query<T, C>, C extends CustomFieldMap<T
|
|
15
|
+
export type Result<T extends object, Q extends Query<T, C>, C extends CustomFieldMap<T> | undefined, U extends InjectCustomFields<T, C> | undefined = InjectCustomFields<T, C>> = [Q] extends [{
|
|
18
16
|
method: "read";
|
|
19
17
|
}] ? [Q] extends [{
|
|
20
18
|
multiple: true;
|
package/dist/types.d.ts
CHANGED
|
@@ -13,6 +13,7 @@ export type { FieldFunctionReturn } from "./types/FieldFunctionReturn";
|
|
|
13
13
|
export type { Filter } from "./types/Filter";
|
|
14
14
|
export type { FilterArray } from "./types/FilterArray";
|
|
15
15
|
export type { FilterBoolean } from "./types/FilterBoolean";
|
|
16
|
+
export type { FilterChildren } from "./types/FilterChildren";
|
|
16
17
|
export type { FilterField } from "./types/FilterField";
|
|
17
18
|
export type { FilterKeys } from "./types/FilterKeys";
|
|
18
19
|
export type { FilterNumber } from "./types/FilterNumber";
|
|
@@ -41,6 +42,7 @@ export type { QueryDeleteMultiple } from "./types/QueryDeleteMultiple";
|
|
|
41
42
|
export type { QueryMethod } from "./types/QueryMethod";
|
|
42
43
|
export type { QueryRead } from "./types/QueryRead";
|
|
43
44
|
export type { QueryReadMultiple } from "./types/QueryReadMultiple";
|
|
45
|
+
export type { QuerySettings } from "./types/QuerySettings";
|
|
44
46
|
export type { QueryUpdate } from "./types/QueryUpdate";
|
|
45
47
|
export type { QueryUpdateMultiple } from "./types/QueryUpdateMultiple";
|
|
46
48
|
export type { Result } from "./types/Result";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const SymbolCache = Symbol("cache");
|
package/lib/constants.ts
ADDED
|
@@ -7,7 +7,7 @@ import type { CustomFieldMap, Handler, Query } from "../types";
|
|
|
7
7
|
* @returns Promise that resolves to the response.
|
|
8
8
|
*/
|
|
9
9
|
export function fetchLocal<T extends object>(): Handler<
|
|
10
|
-
Query<T,
|
|
10
|
+
Query<T, undefined> & { type: T[]; customFields: never },
|
|
11
11
|
any,
|
|
12
12
|
never,
|
|
13
13
|
never
|
|
@@ -19,18 +19,23 @@ export function defineCustomFetch<M extends Record<string, object>>(
|
|
|
19
19
|
async function customFetch<
|
|
20
20
|
K extends keyof M,
|
|
21
21
|
T extends M[K],
|
|
22
|
-
const Q extends Query<T,
|
|
23
|
-
>(
|
|
22
|
+
const Q extends Query<T, undefined>,
|
|
23
|
+
>(
|
|
24
|
+
query: Q & { type: K; customFields?: never },
|
|
25
|
+
): Promise<Result<T, Q, undefined>>;
|
|
24
26
|
async function customFetch<
|
|
25
27
|
K extends keyof M,
|
|
26
28
|
T extends M[K],
|
|
27
29
|
const Q extends Query<T, C>,
|
|
28
30
|
const C extends CustomFieldMap<T>,
|
|
29
31
|
>(query: Q & { type: K; customFields: C }): Promise<Result<T, Q, C>>;
|
|
30
|
-
async function customFetch<
|
|
32
|
+
async function customFetch<
|
|
33
|
+
T extends object,
|
|
34
|
+
const Q extends Query<T, undefined>,
|
|
35
|
+
>(
|
|
31
36
|
type: T[],
|
|
32
37
|
query: Q & { customFields?: never },
|
|
33
|
-
): Promise<Result<T, Q,
|
|
38
|
+
): Promise<Result<T, Q, undefined>>;
|
|
34
39
|
async function customFetch<
|
|
35
40
|
T extends object,
|
|
36
41
|
const Q extends Query<T, C>,
|
|
@@ -42,7 +47,7 @@ export function defineCustomFetch<M extends Record<string, object>>(
|
|
|
42
47
|
const Q extends Query<T, C>,
|
|
43
48
|
const C extends CustomFieldMap<T>,
|
|
44
49
|
>(query: Q & { type: T[] | K; customFields?: C }): Promise<Result<T, Q, C>> {
|
|
45
|
-
return await handler(query, cork);
|
|
50
|
+
return await handler(query as any, cork);
|
|
46
51
|
}
|
|
47
52
|
return customFetch;
|
|
48
53
|
}
|
|
@@ -12,9 +12,9 @@ export function defineGenericFetch<K extends string>(
|
|
|
12
12
|
) {
|
|
13
13
|
// FIXME: Until https://github.com/microsoft/TypeScript/issues/26242 gets resolved, the fetcher needs to be curried
|
|
14
14
|
function genericFetch<T extends object>() {
|
|
15
|
-
async function customFetch<const Q extends Query<T,
|
|
15
|
+
async function customFetch<const Q extends Query<T, undefined>>(
|
|
16
16
|
query: Q & { type: K | T[]; customFields?: never },
|
|
17
|
-
): Promise<Result<T, Q,
|
|
17
|
+
): Promise<Result<T, Q, undefined>>;
|
|
18
18
|
async function customFetch<
|
|
19
19
|
const Q extends Query<T, C>,
|
|
20
20
|
const C extends CustomFieldMap<T>,
|
|
@@ -25,7 +25,7 @@ export function defineGenericFetch<K extends string>(
|
|
|
25
25
|
>(
|
|
26
26
|
query: Q & { type: K | T[]; customFields?: C },
|
|
27
27
|
): Promise<Result<T, Q, C>> {
|
|
28
|
-
return await handler(query, cork);
|
|
28
|
+
return await handler(query as any, cork);
|
|
29
29
|
}
|
|
30
30
|
return customFetch;
|
|
31
31
|
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Escapes special characters of a given regular expresion `pattern`.
|
|
3
|
+
*
|
|
4
|
+
* @param pattern Regular expression string to escape.
|
|
5
|
+
* @returns Escaped regular expression
|
|
6
|
+
*/
|
|
7
|
+
export function escapeRegex(pattern: string) {
|
|
8
|
+
return pattern.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
9
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { Filter, FilterKeys } from "../types.ts";
|
|
2
|
+
|
|
3
|
+
import { escapeRegex } from "./escapeRegex.js";
|
|
4
|
+
|
|
5
|
+
export function filterChildren<T extends object>(
|
|
6
|
+
parentPath: string,
|
|
7
|
+
pathFieldKey: FilterKeys<T, string>,
|
|
8
|
+
deep = false,
|
|
9
|
+
pathSeparator = "/",
|
|
10
|
+
): Filter<T> {
|
|
11
|
+
return {
|
|
12
|
+
field: pathFieldKey,
|
|
13
|
+
operator: "match",
|
|
14
|
+
value: childrenRegex(parentPath, deep, pathSeparator),
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function childrenRegex(
|
|
19
|
+
parentPath: string,
|
|
20
|
+
deep = false,
|
|
21
|
+
pathSeparator = "/",
|
|
22
|
+
): string {
|
|
23
|
+
const escapedSeparator = escapeRegex(pathSeparator);
|
|
24
|
+
return `^${escapeRegex(parentPath)}${
|
|
25
|
+
parentPath === "" ? "" : escapedSeparator
|
|
26
|
+
}${deep ? "" : `[^${escapedSeparator}]{1,}$`}`;
|
|
27
|
+
}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { expect, test } from "vitest";
|
|
2
2
|
|
|
3
|
+
import { SymbolCache } from "../constants.js";
|
|
4
|
+
import type { FilterChildren } from "../types.js";
|
|
5
|
+
|
|
3
6
|
import { filterItem } from "./filterItem.js";
|
|
4
7
|
|
|
5
8
|
test("tests filter lists", () => {
|
|
@@ -201,3 +204,52 @@ test("tests filter on array values", () => {
|
|
|
201
204
|
),
|
|
202
205
|
).toBeFalsy();
|
|
203
206
|
});
|
|
207
|
+
|
|
208
|
+
test("tests filter with children predicates", () => {
|
|
209
|
+
expect(
|
|
210
|
+
filterItem({ operator: "children", value: "a" }, { id: "a/b" }),
|
|
211
|
+
).toBeTruthy();
|
|
212
|
+
expect(
|
|
213
|
+
filterItem(
|
|
214
|
+
{ operator: "children", value: ".a" },
|
|
215
|
+
{ path: ".a.b" },
|
|
216
|
+
{
|
|
217
|
+
pathFieldKey: "path",
|
|
218
|
+
pathFieldSeparator: ".",
|
|
219
|
+
},
|
|
220
|
+
),
|
|
221
|
+
).toBeTruthy();
|
|
222
|
+
const filterChildren: FilterChildren<any> = {
|
|
223
|
+
operator: "children",
|
|
224
|
+
value: "a",
|
|
225
|
+
};
|
|
226
|
+
expect(
|
|
227
|
+
filterItem(
|
|
228
|
+
filterChildren,
|
|
229
|
+
{ path: ".a.b" },
|
|
230
|
+
{
|
|
231
|
+
transformFilterChildren(filter) {
|
|
232
|
+
return {
|
|
233
|
+
field: "path",
|
|
234
|
+
operator: "startWith",
|
|
235
|
+
value: `.${filter.value}.`,
|
|
236
|
+
};
|
|
237
|
+
},
|
|
238
|
+
},
|
|
239
|
+
),
|
|
240
|
+
).toBeTruthy();
|
|
241
|
+
expect(filterChildren[SymbolCache]).toBeDefined();
|
|
242
|
+
expect(
|
|
243
|
+
filterItem({ operator: "children", value: "b" }, { id: "a/b" }),
|
|
244
|
+
).toBeFalsy();
|
|
245
|
+
expect(
|
|
246
|
+
filterItem(
|
|
247
|
+
{ operator: "children", value: "ba" },
|
|
248
|
+
{ path: ".a.b" },
|
|
249
|
+
{
|
|
250
|
+
pathFieldKey: "path",
|
|
251
|
+
pathFieldSeparator: ".",
|
|
252
|
+
},
|
|
253
|
+
),
|
|
254
|
+
).toBeFalsy();
|
|
255
|
+
});
|
package/lib/tools/filterItem.ts
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { SymbolCache } from "../constants/SymbolCache.js";
|
|
2
|
+
import type { Any, Filter, FilterKeys } from "../types";
|
|
3
|
+
import type { QuerySettings } from "../types/QuerySettings";
|
|
4
|
+
|
|
5
|
+
import { filterChildren } from "./filterChildren.js";
|
|
2
6
|
|
|
3
7
|
const { isArray } = Array;
|
|
4
8
|
|
|
@@ -7,11 +11,13 @@ const { isArray } = Array;
|
|
|
7
11
|
*
|
|
8
12
|
* @param filter The filter to apply.
|
|
9
13
|
* @param value The value to check.
|
|
14
|
+
* @param settings Optional query settings.
|
|
10
15
|
* @returns `true` if the `value` matches the `filter` and `false` otherwise.
|
|
11
16
|
*/
|
|
12
17
|
export function filterItem<T extends object>(
|
|
13
18
|
filter: Filter<T> | undefined,
|
|
14
19
|
value: T | undefined,
|
|
20
|
+
settings?: QuerySettings<T>,
|
|
15
21
|
): boolean {
|
|
16
22
|
if (value === undefined) {
|
|
17
23
|
return false;
|
|
@@ -52,6 +58,28 @@ export function filterItem<T extends object>(
|
|
|
52
58
|
}
|
|
53
59
|
case "notEqual":
|
|
54
60
|
return value[filter.field] !== filter.value;
|
|
61
|
+
case "children": {
|
|
62
|
+
if (filter[SymbolCache] === undefined) {
|
|
63
|
+
switch (true) {
|
|
64
|
+
case settings?.transformFilterChildren !== undefined:
|
|
65
|
+
filter[SymbolCache] = settings.transformFilterChildren(filter);
|
|
66
|
+
break;
|
|
67
|
+
default: {
|
|
68
|
+
const {
|
|
69
|
+
pathFieldKey = "id" as FilterKeys<T, string>,
|
|
70
|
+
pathFieldSeparator = "/",
|
|
71
|
+
} = settings || {};
|
|
72
|
+
filter[SymbolCache] = filterChildren(
|
|
73
|
+
filter.value as string,
|
|
74
|
+
pathFieldKey,
|
|
75
|
+
filter.deep,
|
|
76
|
+
pathFieldSeparator,
|
|
77
|
+
);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return filterItem(filter[SymbolCache], value);
|
|
82
|
+
}
|
|
55
83
|
case "startWith":
|
|
56
84
|
return (
|
|
57
85
|
(value[filter.field] as string | undefined)?.startsWith(filter.value) ??
|
|
@@ -88,14 +116,14 @@ export function filterItem<T extends object>(
|
|
|
88
116
|
if (item === undefined) {
|
|
89
117
|
return false;
|
|
90
118
|
}
|
|
91
|
-
if (filter
|
|
119
|
+
if (filter[SymbolCache] === undefined) {
|
|
92
120
|
const { options = {} } = filter;
|
|
93
|
-
filter
|
|
121
|
+
filter[SymbolCache] = new RegExp(
|
|
94
122
|
filter.value,
|
|
95
123
|
`${options.ignoreCase ? "i" : ""}${options.dotAll ? "s" : ""}`,
|
|
96
124
|
);
|
|
97
125
|
}
|
|
98
|
-
return filter.
|
|
126
|
+
return filter[SymbolCache].test(item);
|
|
99
127
|
}
|
|
100
128
|
case "intersect": {
|
|
101
129
|
const item = value[filter.field];
|
|
@@ -5,7 +5,7 @@ import { queryItemList } from "./queryItemList.js";
|
|
|
5
5
|
test("queries a single item", () => {
|
|
6
6
|
expect(
|
|
7
7
|
queryItemList({
|
|
8
|
-
type: [{ a: 1 }, { a: 2 }, { a: 3 }],
|
|
8
|
+
type: [{ a: 1 }, { a: 2 }, { a: 3 }] as { a: number }[],
|
|
9
9
|
}),
|
|
10
10
|
).toEqual({ a: 1 });
|
|
11
11
|
expect(() =>
|
|
@@ -13,7 +13,7 @@ test("queries a single item", () => {
|
|
|
13
13
|
context: {
|
|
14
14
|
a: 4,
|
|
15
15
|
},
|
|
16
|
-
type: [{ a: 1 }, { a: 2 }, { a: 3 }],
|
|
16
|
+
type: [{ a: 1 }, { a: 2 }, { a: 3 }] as { a: number }[],
|
|
17
17
|
}),
|
|
18
18
|
).toThrow("Not found");
|
|
19
19
|
expect(
|
|
@@ -7,6 +7,7 @@ import type {
|
|
|
7
7
|
Filter,
|
|
8
8
|
Order,
|
|
9
9
|
Query,
|
|
10
|
+
QueryAny,
|
|
10
11
|
Result,
|
|
11
12
|
} from "../types.js";
|
|
12
13
|
|
|
@@ -39,9 +40,9 @@ function normalizeAggregator<T extends object>(
|
|
|
39
40
|
return aggregator.operator;
|
|
40
41
|
}
|
|
41
42
|
|
|
42
|
-
function queryItemList<T extends object, const Q extends Query<T,
|
|
43
|
+
function queryItemList<T extends object, const Q extends Query<T, undefined>>(
|
|
43
44
|
query: Q & { type: T[]; customFields?: never },
|
|
44
|
-
): Result<T, Q,
|
|
45
|
+
): Result<T, Q, undefined>;
|
|
45
46
|
function queryItemList<
|
|
46
47
|
T extends object,
|
|
47
48
|
const Q extends Query<T, C>,
|
|
@@ -66,7 +67,9 @@ function queryItemList<
|
|
|
66
67
|
context,
|
|
67
68
|
filter as Filter<T>,
|
|
68
69
|
);
|
|
69
|
-
result = data.filter((item) =>
|
|
70
|
+
result = data.filter((item) =>
|
|
71
|
+
filterItem(normalizedFilter, item, query.settings),
|
|
72
|
+
);
|
|
70
73
|
}
|
|
71
74
|
// Sort
|
|
72
75
|
result = sortItemList(
|
|
@@ -83,9 +86,11 @@ function queryItemList<
|
|
|
83
86
|
context,
|
|
84
87
|
filter as Filter<T>,
|
|
85
88
|
);
|
|
86
|
-
const result = data.find((item) =>
|
|
89
|
+
const result = data.find((item) =>
|
|
90
|
+
filterItem(normalizedFilter, item, query.settings),
|
|
91
|
+
);
|
|
87
92
|
if (result === undefined) {
|
|
88
|
-
throw new RequestError("Not found", 404, query);
|
|
93
|
+
throw new RequestError("Not found", 404, query as QueryAny);
|
|
89
94
|
}
|
|
90
95
|
return result as Result<T, Q, C>;
|
|
91
96
|
}
|
|
@@ -101,7 +106,7 @@ function queryItemList<
|
|
|
101
106
|
filter as Filter<T>,
|
|
102
107
|
);
|
|
103
108
|
return data.reduce((result, item) => {
|
|
104
|
-
if (filterItem(normalizedFilter, item)) {
|
|
109
|
+
if (filterItem(normalizedFilter, item, query.settings)) {
|
|
105
110
|
return result + 1;
|
|
106
111
|
}
|
|
107
112
|
return result;
|
package/lib/tools.ts
CHANGED
|
@@ -3,6 +3,8 @@ export { cork } from "./tools/cork.js";
|
|
|
3
3
|
export { defineCheckQuery } from "./tools/defineCheckQuery.js";
|
|
4
4
|
export { defineCustomFetch } from "./tools/defineCustomFetch.js";
|
|
5
5
|
export { defineGenericFetch } from "./tools/defineGenericFetch.js";
|
|
6
|
+
export { escapeRegex } from "./tools/escapeRegex.js";
|
|
7
|
+
export { filterChildren } from "./tools/filterChildren.js";
|
|
6
8
|
export { filterFromContext } from "./tools/filterFromContext.js";
|
|
7
9
|
export { filterItem } from "./tools/filterItem.js";
|
|
8
10
|
export { normalizeOrder } from "./tools/normalizeOrder.js";
|
package/lib/types/Filter.ts
CHANGED
|
@@ -1,20 +1,23 @@
|
|
|
1
1
|
import type { FilterArray } from "./FilterArray";
|
|
2
2
|
import type { FilterBoolean } from "./FilterBoolean";
|
|
3
|
+
import type { FilterChildren } from "./FilterChildren";
|
|
3
4
|
import type { FilterField } from "./FilterField";
|
|
4
5
|
import type { FilterNumber } from "./FilterNumber";
|
|
5
6
|
import type { FilterSequence } from "./FilterSequence";
|
|
6
7
|
import type { FilterString } from "./FilterString";
|
|
7
8
|
import type { FilterStringIntersect } from "./FilterStringIntersect";
|
|
8
9
|
import type { FilterStringMatch } from "./FilterStringMatch";
|
|
10
|
+
|
|
9
11
|
/**
|
|
10
12
|
* Describes a predicate for filtering items.
|
|
11
13
|
*/
|
|
12
14
|
export type Filter<T extends object> =
|
|
13
|
-
|
|
|
14
|
-
| FilterField<T>
|
|
15
|
+
| FilterArray<T>
|
|
15
16
|
| FilterBoolean<T>
|
|
17
|
+
| FilterChildren<T>
|
|
18
|
+
| FilterField<T>
|
|
19
|
+
| FilterNumber<T>
|
|
20
|
+
| FilterSequence<T>
|
|
16
21
|
| FilterString<T>
|
|
17
|
-
| FilterStringMatch<T>
|
|
18
22
|
| FilterStringIntersect<T>
|
|
19
|
-
|
|
|
20
|
-
| FilterArray<T>;
|
|
23
|
+
| FilterStringMatch<T>;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { SymbolCache } from "../constants";
|
|
2
|
+
|
|
3
|
+
import type { Context } from "./Context";
|
|
4
|
+
import type { Filter } from "./Filter";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Matches the direct children of a specified `value` item.
|
|
8
|
+
* If `deep` is `true`, also captures all the descendants.
|
|
9
|
+
*/
|
|
10
|
+
export type FilterChildren<T extends object> = {
|
|
11
|
+
operator: "children";
|
|
12
|
+
value: Context<T> | string;
|
|
13
|
+
deep?: boolean;
|
|
14
|
+
[SymbolCache]?: Filter<T>;
|
|
15
|
+
};
|
package/lib/types/FilterKeys.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Returns object type with field extending the provided `P` type.
|
|
3
3
|
*/
|
|
4
|
-
export type FilterKeys<T extends object, P> =
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
export type FilterKeys<T extends object, P> = keyof T &
|
|
5
|
+
keyof {
|
|
6
|
+
[K in keyof T as T[K] extends P ? K : never]-?: T[K];
|
|
7
|
+
};
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { SymbolCache } from "../constants/SymbolCache";
|
|
2
|
+
|
|
1
3
|
import type { FilterKeys } from "./FilterKeys";
|
|
2
4
|
|
|
3
5
|
/**
|
|
@@ -26,5 +28,5 @@ export type FilterStringMatch<T extends object> = {
|
|
|
26
28
|
/**
|
|
27
29
|
* Compiled regular expression generated by the `testFilter` function.
|
|
28
30
|
*/
|
|
29
|
-
|
|
31
|
+
[SymbolCache]?: RegExp;
|
|
30
32
|
};
|
package/lib/types/Query.ts
CHANGED
|
@@ -8,6 +8,7 @@ import type { QueryDelete } from "./QueryDelete";
|
|
|
8
8
|
import type { QueryDeleteMultiple } from "./QueryDeleteMultiple";
|
|
9
9
|
import type { QueryRead } from "./QueryRead";
|
|
10
10
|
import type { QueryReadMultiple } from "./QueryReadMultiple";
|
|
11
|
+
import type { QuerySettings } from "./QuerySettings";
|
|
11
12
|
import type { QueryUpdate } from "./QueryUpdate";
|
|
12
13
|
import type { QueryUpdateMultiple } from "./QueryUpdateMultiple";
|
|
13
14
|
|
|
@@ -50,4 +51,12 @@ export type Query<
|
|
|
50
51
|
* Common item properties to use for identifying the item.
|
|
51
52
|
*/
|
|
52
53
|
context?: Context<T>;
|
|
54
|
+
/**
|
|
55
|
+
* Query parameters.
|
|
56
|
+
*/
|
|
57
|
+
parameters?: Record<string, string | string[] | number | number[]>;
|
|
58
|
+
/**
|
|
59
|
+
* Query settings.
|
|
60
|
+
*/
|
|
61
|
+
settings?: QuerySettings<T>;
|
|
53
62
|
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Filter } from "./Filter";
|
|
2
|
+
import type { FilterChildren } from "./FilterChildren";
|
|
3
|
+
import type { FilterKeys } from "./FilterKeys";
|
|
4
|
+
|
|
5
|
+
export type QuerySettings<T extends object> = {
|
|
6
|
+
pathFieldSeparator?: string;
|
|
7
|
+
pathFieldKey?: FilterKeys<T, string>;
|
|
8
|
+
transformFilterChildren?: (filter: FilterChildren<T>) => Filter<T>;
|
|
9
|
+
};
|
package/lib/types/Result.ts
CHANGED
|
@@ -3,17 +3,18 @@ import type { InjectCustomFields } from "./InjectCustomFields";
|
|
|
3
3
|
import type { Item } from "./Item";
|
|
4
4
|
import type { Query } from "./Query";
|
|
5
5
|
|
|
6
|
-
export type PickFields<
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
export type PickFields<
|
|
7
|
+
T extends object | undefined,
|
|
8
|
+
F extends string | number | symbol,
|
|
9
|
+
> = [F] extends [keyof T]
|
|
9
10
|
? { readonly [K in F]: T[K] }
|
|
10
11
|
: { readonly [K in keyof T]: T[K] };
|
|
11
12
|
|
|
12
13
|
export type ResultRead<
|
|
13
14
|
T extends object,
|
|
14
15
|
Q extends Query<T, C>,
|
|
15
|
-
C extends CustomFieldMap<T
|
|
16
|
-
U extends InjectCustomFields<T, C> = InjectCustomFields<T, C>,
|
|
16
|
+
C extends CustomFieldMap<T> | undefined,
|
|
17
|
+
U extends InjectCustomFields<T, C> | undefined = InjectCustomFields<T, C>,
|
|
17
18
|
> = [C] extends [CustomFieldMap<T>]
|
|
18
19
|
? [Q] extends [{ fields: (keyof U)[] }]
|
|
19
20
|
? PickFields<U, Item<Q["fields"]>>
|
|
@@ -25,8 +26,8 @@ export type ResultRead<
|
|
|
25
26
|
export type Result<
|
|
26
27
|
T extends object,
|
|
27
28
|
Q extends Query<T, C>,
|
|
28
|
-
C extends CustomFieldMap<T
|
|
29
|
-
U extends InjectCustomFields<T, C> = InjectCustomFields<T, C>,
|
|
29
|
+
C extends CustomFieldMap<T> | undefined,
|
|
30
|
+
U extends InjectCustomFields<T, C> | undefined = InjectCustomFields<T, C>,
|
|
30
31
|
> = [Q] extends [{ method: "read" }]
|
|
31
32
|
? [Q] extends [{ multiple: true }]
|
|
32
33
|
? ResultRead<T, Q, C, U>[]
|
package/lib/types.ts
CHANGED
|
@@ -14,6 +14,7 @@ export type { FieldFunctionReturn } from "./types/FieldFunctionReturn";
|
|
|
14
14
|
export type { Filter } from "./types/Filter";
|
|
15
15
|
export type { FilterArray } from "./types/FilterArray";
|
|
16
16
|
export type { FilterBoolean } from "./types/FilterBoolean";
|
|
17
|
+
export type { FilterChildren } from "./types/FilterChildren";
|
|
17
18
|
export type { FilterField } from "./types/FilterField";
|
|
18
19
|
export type { FilterKeys } from "./types/FilterKeys";
|
|
19
20
|
export type { FilterNumber } from "./types/FilterNumber";
|
|
@@ -42,6 +43,7 @@ export type { QueryDeleteMultiple } from "./types/QueryDeleteMultiple";
|
|
|
42
43
|
export type { QueryMethod } from "./types/QueryMethod";
|
|
43
44
|
export type { QueryRead } from "./types/QueryRead";
|
|
44
45
|
export type { QueryReadMultiple } from "./types/QueryReadMultiple";
|
|
46
|
+
export type { QuerySettings } from "./types/QuerySettings";
|
|
45
47
|
export type { QueryUpdate } from "./types/QueryUpdate";
|
|
46
48
|
export type { QueryUpdateMultiple } from "./types/QueryUpdateMultiple";
|
|
47
49
|
export type { Result } from "./types/Result";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "quetch",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/main.js",
|
|
6
6
|
"exports": {
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
"tailwindcss": "^3.3.3",
|
|
70
70
|
"typedoc": "^0.25.2",
|
|
71
71
|
"typedoc-plugin-markdown": "^3.16.0",
|
|
72
|
-
"typescript": "^5.
|
|
72
|
+
"typescript": "^5.3.2",
|
|
73
73
|
"vite": "^4.4.11",
|
|
74
74
|
"vite-plugin-module-list": "^2.1.0",
|
|
75
75
|
"vitest": "^0.34.6"
|