@data-client/rest 0.1.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/LICENSE +201 -0
- package/README.md +110 -0
- package/dist/index.js +561 -0
- package/dist/index.umd.min.js +1 -0
- package/dist/next.js +520 -0
- package/dist/package.json +1 -0
- package/legacy/NetworkError.js +13 -0
- package/legacy/OptionsToFunction.js +2 -0
- package/legacy/RestEndpoint.js +225 -0
- package/legacy/RestEndpointTypeHelp.js +2 -0
- package/legacy/RestHelpers.js +33 -0
- package/legacy/createResource.js +88 -0
- package/legacy/extractCollection.js +14 -0
- package/legacy/getArrayPath.js +19 -0
- package/legacy/hookifyResource.js +24 -0
- package/legacy/index.js +10 -0
- package/legacy/mapCollection.js +14 -0
- package/legacy/next/OptionsToFunction.js +2 -0
- package/legacy/next/RestEndpoint.js +225 -0
- package/legacy/next/createResource.js +86 -0
- package/legacy/next/index.js +4 -0
- package/legacy/next/resourceTypes.js +2 -0
- package/legacy/paginatedCollections.js +29 -0
- package/legacy/paginationUpdate.js +36 -0
- package/legacy/paramsToString.js +6 -0
- package/legacy/paramsToString.native.js +9 -0
- package/legacy/pathTypes.js +2 -0
- package/legacy/test-fixtures.js +111 -0
- package/legacy/utiltypes.js +2 -0
- package/lib/NetworkError.d.ts +11 -0
- package/lib/NetworkError.d.ts.map +1 -0
- package/lib/NetworkError.js +13 -0
- package/lib/OptionsToFunction.d.ts +7 -0
- package/lib/OptionsToFunction.d.ts.map +1 -0
- package/lib/OptionsToFunction.js +2 -0
- package/lib/RestEndpoint.d.ts +548 -0
- package/lib/RestEndpoint.js +229 -0
- package/lib/RestEndpointTypeHelp.d.ts +10 -0
- package/lib/RestEndpointTypeHelp.d.ts.map +1 -0
- package/lib/RestEndpointTypeHelp.js +2 -0
- package/lib/RestHelpers.d.ts +7 -0
- package/lib/RestHelpers.d.ts.map +1 -0
- package/lib/RestHelpers.js +33 -0
- package/lib/createResource.d.ts +66 -0
- package/lib/createResource.d.ts.map +1 -0
- package/lib/createResource.js +104 -0
- package/lib/extractCollection.d.ts +11 -0
- package/lib/extractCollection.d.ts.map +1 -0
- package/lib/extractCollection.js +16 -0
- package/lib/getArrayPath.d.ts +3 -0
- package/lib/getArrayPath.d.ts.map +1 -0
- package/lib/getArrayPath.js +19 -0
- package/lib/hookifyResource.d.ts +14 -0
- package/lib/hookifyResource.d.ts.map +1 -0
- package/lib/hookifyResource.js +24 -0
- package/lib/index.d.ts +12 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +10 -0
- package/lib/mapCollection.d.ts +16 -0
- package/lib/mapCollection.d.ts.map +1 -0
- package/lib/mapCollection.js +16 -0
- package/lib/next/OptionsToFunction.d.ts +7 -0
- package/lib/next/OptionsToFunction.d.ts.map +1 -0
- package/lib/next/OptionsToFunction.js +2 -0
- package/lib/next/RestEndpoint.d.ts +542 -0
- package/lib/next/RestEndpoint.js +229 -0
- package/lib/next/createResource.d.ts +86 -0
- package/lib/next/createResource.d.ts.map +1 -0
- package/lib/next/createResource.js +100 -0
- package/lib/next/index.d.ts +6 -0
- package/lib/next/index.d.ts.map +1 -0
- package/lib/next/index.js +4 -0
- package/lib/next/resourceTypes.d.ts +31 -0
- package/lib/next/resourceTypes.d.ts.map +1 -0
- package/lib/next/resourceTypes.js +2 -0
- package/lib/paginatedCollections.d.ts +3 -0
- package/lib/paginatedCollections.d.ts.map +1 -0
- package/lib/paginatedCollections.js +29 -0
- package/lib/paginationUpdate.d.ts +8 -0
- package/lib/paginationUpdate.d.ts.map +1 -0
- package/lib/paginationUpdate.js +40 -0
- package/lib/paramsToString.d.ts +2 -0
- package/lib/paramsToString.d.ts.map +1 -0
- package/lib/paramsToString.js +6 -0
- package/lib/paramsToString.native.d.ts +2 -0
- package/lib/paramsToString.native.d.ts.map +1 -0
- package/lib/paramsToString.native.js +9 -0
- package/lib/pathTypes.d.ts +20 -0
- package/lib/pathTypes.d.ts.map +1 -0
- package/lib/pathTypes.js +2 -0
- package/lib/test-fixtures.d.ts +141 -0
- package/lib/test-fixtures.d.ts.map +1 -0
- package/lib/test-fixtures.js +111 -0
- package/lib/utiltypes.d.ts +21 -0
- package/lib/utiltypes.d.ts.map +1 -0
- package/lib/utiltypes.js +2 -0
- package/node.mjs +1 -0
- package/package.json +121 -0
- package/src/NetworkError.ts +17 -0
- package/src/OptionsToFunction.ts +42 -0
- package/src/RestEndpoint.d.ts +548 -0
- package/src/RestEndpoint.js +262 -0
- package/src/RestEndpointTypeHelp.ts +20 -0
- package/src/RestHelpers.ts +48 -0
- package/src/__tests__/Resource.test.ts +317 -0
- package/src/__tests__/RestEndpoint.ts +1304 -0
- package/src/__tests__/__snapshots__/RestEndpoint.ts.snap +18 -0
- package/src/__tests__/__snapshots__/createResource.test.ts.snap +5 -0
- package/src/__tests__/createResource.test.ts +583 -0
- package/src/__tests__/getArrayPath.test.ts +30 -0
- package/src/__tests__/hookifyResource.ts +197 -0
- package/src/__tests__/types.test.ts +309 -0
- package/src/createResource.ts +172 -0
- package/src/extractCollection.ts +34 -0
- package/src/getArrayPath.ts +20 -0
- package/src/hookifyResource.ts +36 -0
- package/src/index.ts +42 -0
- package/src/mapCollection.ts +54 -0
- package/src/next/OptionsToFunction.ts +41 -0
- package/src/next/RestEndpoint.d.ts +542 -0
- package/src/next/RestEndpoint.js +262 -0
- package/src/next/__tests__/RestEndpoint.ts +1333 -0
- package/src/next/__tests__/__snapshots__/RestEndpoint.ts.snap +18 -0
- package/src/next/__tests__/types.test.ts +429 -0
- package/src/next/createResource.ts +194 -0
- package/src/next/index.ts +5 -0
- package/src/next/resourceTypes.ts +32 -0
- package/src/package.json +1 -0
- package/src/paginatedCollections.ts +32 -0
- package/src/paginationUpdate.ts +49 -0
- package/src/paramsToString.native.ts +10 -0
- package/src/paramsToString.ts +7 -0
- package/src/pathTypes.ts +58 -0
- package/src/test-fixtures.ts +128 -0
- package/src/utiltypes.ts +25 -0
- package/ts4.0/NetworkError.d.ts +11 -0
- package/ts4.0/OptionsToFunction.d.ts +16 -0
- package/ts4.0/RestEndpoint.d.ts +240 -0
- package/ts4.0/RestEndpointTypeHelp.d.ts +10 -0
- package/ts4.0/RestHelpers.d.ts +7 -0
- package/ts4.0/createResource.d.ts +66 -0
- package/ts4.0/extractCollection.d.ts +11 -0
- package/ts4.0/getArrayPath.d.ts +3 -0
- package/ts4.0/hookifyResource.d.ts +19 -0
- package/ts4.0/index.d.ts +12 -0
- package/ts4.0/mapCollection.d.ts +16 -0
- package/ts4.0/next/OptionsToFunction.d.ts +16 -0
- package/ts4.0/next/RestEndpoint.d.ts +226 -0
- package/ts4.0/next/createResource.d.ts +94 -0
- package/ts4.0/next/index.d.ts +6 -0
- package/ts4.0/next/resourceTypes.d.ts +31 -0
- package/ts4.0/paginatedCollections.d.ts +3 -0
- package/ts4.0/paginationUpdate.d.ts +10 -0
- package/ts4.0/paramsToString.d.ts +2 -0
- package/ts4.0/paramsToString.native.d.ts +2 -0
- package/ts4.0/pathTypes.d.ts +20 -0
- package/ts4.0/test-fixtures.d.ts +141 -0
- package/ts4.0/utiltypes.d.ts +5 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import getArrayPath from './getArrayPath.js';
|
|
2
|
+
export default function paginationUpdate(endpoint, removeCursor) {
|
|
3
|
+
// infer path from schema. if schema is undefined assume array is top level
|
|
4
|
+
const path = getArrayPath(endpoint.schema);
|
|
5
|
+
if (path === false) throw new Error('schema has no array');
|
|
6
|
+
return (newPage, ...args) => ({
|
|
7
|
+
[endpoint.key(...removeCursor(...args))]: existing => {
|
|
8
|
+
const existingList = getIn(existing, path);
|
|
9
|
+
// using set so our lookups are O(1) in case this is large
|
|
10
|
+
const existingSet = new Set(existingList);
|
|
11
|
+
const addedList = getIn(newPage, path).filter(pk => !existingSet.has(pk));
|
|
12
|
+
const mergedResults = [...existingList, ...addedList];
|
|
13
|
+
return setIn(newPage, path, mergedResults);
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
const getIn = (results, path) => {
|
|
18
|
+
let cur = results;
|
|
19
|
+
for (const p of path) {
|
|
20
|
+
if (!cur) return [];
|
|
21
|
+
cur = cur[p];
|
|
22
|
+
}
|
|
23
|
+
return cur || [];
|
|
24
|
+
};
|
|
25
|
+
const setIn = (results, path, values) => {
|
|
26
|
+
if (path.length === 0) return values;
|
|
27
|
+
const newResults = {
|
|
28
|
+
...results
|
|
29
|
+
};
|
|
30
|
+
let cur = newResults;
|
|
31
|
+
for (let i = 0; i < path.length - 1; i++) {
|
|
32
|
+
const p = path[i];
|
|
33
|
+
cur = cur[p] = {
|
|
34
|
+
...cur[p]
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
cur[path[path.length - 1]] = values;
|
|
38
|
+
return newResults;
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRBcnJheVBhdGgiLCJwYWdpbmF0aW9uVXBkYXRlIiwiZW5kcG9pbnQiLCJyZW1vdmVDdXJzb3IiLCJwYXRoIiwic2NoZW1hIiwiRXJyb3IiLCJuZXdQYWdlIiwiYXJncyIsImtleSIsImV4aXN0aW5nIiwiZXhpc3RpbmdMaXN0IiwiZ2V0SW4iLCJleGlzdGluZ1NldCIsIlNldCIsImFkZGVkTGlzdCIsImZpbHRlciIsInBrIiwiaGFzIiwibWVyZ2VkUmVzdWx0cyIsInNldEluIiwicmVzdWx0cyIsImN1ciIsInAiLCJ2YWx1ZXMiLCJsZW5ndGgiLCJuZXdSZXN1bHRzIiwiaSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9wYWdpbmF0aW9uVXBkYXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNjaGVtYSB9IGZyb20gJ0BkYXRhLWNsaWVudC9lbmRwb2ludCc7XG5cbmltcG9ydCBnZXRBcnJheVBhdGggZnJvbSAnLi9nZXRBcnJheVBhdGguanMnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBwYWdpbmF0aW9uVXBkYXRlPFxuICBFIGV4dGVuZHMgeyBzY2hlbWE6IFNjaGVtYTsga2V5OiBhbnkgfSAmICgoLi4uYXJnczogYW55KSA9PiBQcm9taXNlPGFueT4pLFxuICBBIGV4dGVuZHMgYW55W10sXG4+KFxuICBlbmRwb2ludDogRSxcbiAgcmVtb3ZlQ3Vyc29yOiAoLi4uYXJnczogQSkgPT4gcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8dHlwZW9mIGVuZHBvaW50Pl0sXG4pIHtcbiAgLy8gaW5mZXIgcGF0aCBmcm9tIHNjaGVtYS4gaWYgc2NoZW1hIGlzIHVuZGVmaW5lZCBhc3N1bWUgYXJyYXkgaXMgdG9wIGxldmVsXG4gIGNvbnN0IHBhdGggPSBnZXRBcnJheVBhdGgoZW5kcG9pbnQuc2NoZW1hKTtcbiAgaWYgKHBhdGggPT09IGZhbHNlKSB0aHJvdyBuZXcgRXJyb3IoJ3NjaGVtYSBoYXMgbm8gYXJyYXknKTtcblxuICByZXR1cm4gKG5ld1BhZ2U6IGFueSwgLi4uYXJnczogQSkgPT4gKHtcbiAgICBbZW5kcG9pbnQua2V5KC4uLihyZW1vdmVDdXJzb3IoLi4uYXJncykgYXMgYW55KSldOiAoZXhpc3Rpbmc6IGFueSkgPT4ge1xuICAgICAgY29uc3QgZXhpc3RpbmdMaXN0ID0gZ2V0SW4oZXhpc3RpbmcsIHBhdGgpO1xuICAgICAgLy8gdXNpbmcgc2V0IHNvIG91ciBsb29rdXBzIGFyZSBPKDEpIGluIGNhc2UgdGhpcyBpcyBsYXJnZVxuICAgICAgY29uc3QgZXhpc3RpbmdTZXQ6IFNldDxzdHJpbmc+ID0gbmV3IFNldChleGlzdGluZ0xpc3QpO1xuICAgICAgY29uc3QgYWRkZWRMaXN0ID0gZ2V0SW4obmV3UGFnZSwgcGF0aCkuZmlsdGVyKFxuICAgICAgICAocGs6IHN0cmluZykgPT4gIWV4aXN0aW5nU2V0LmhhcyhwayksXG4gICAgICApO1xuICAgICAgY29uc3QgbWVyZ2VkUmVzdWx0czogc3RyaW5nW10gPSBbLi4uZXhpc3RpbmdMaXN0LCAuLi5hZGRlZExpc3RdO1xuICAgICAgcmV0dXJuIHNldEluKG5ld1BhZ2UsIHBhdGgsIG1lcmdlZFJlc3VsdHMpO1xuICAgIH0sXG4gIH0pO1xufVxuXG5jb25zdCBnZXRJbiA9IChyZXN1bHRzOiBhbnksIHBhdGg6IHN0cmluZ1tdKTogYW55W10gPT4ge1xuICBsZXQgY3VyID0gcmVzdWx0cztcbiAgZm9yIChjb25zdCBwIG9mIHBhdGgpIHtcbiAgICBpZiAoIWN1cikgcmV0dXJuIFtdO1xuICAgIGN1ciA9IGN1cltwXTtcbiAgfVxuICByZXR1cm4gY3VyIHx8IFtdO1xufTtcblxuY29uc3Qgc2V0SW4gPSA8VD4ocmVzdWx0czogVCwgcGF0aDogc3RyaW5nW10sIHZhbHVlczogYW55W10pOiBUID0+IHtcbiAgaWYgKHBhdGgubGVuZ3RoID09PSAwKSByZXR1cm4gdmFsdWVzIGFzIGFueTtcbiAgY29uc3QgbmV3UmVzdWx0cyA9IHsgLi4ucmVzdWx0cyB9O1xuICBsZXQgY3VyOiBhbnkgPSBuZXdSZXN1bHRzO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHBhdGgubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgY29uc3QgcCA9IHBhdGhbaV07XG4gICAgY3VyID0gY3VyW3BdID0geyAuLi5jdXJbcF0gfTtcbiAgfVxuICBjdXJbcGF0aFtwYXRoLmxlbmd0aCAtIDFdXSA9IHZhbHVlcztcbiAgcmV0dXJuIG5ld1Jlc3VsdHM7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFFQSxPQUFPQSxZQUFZLE1BQU0sbUJBQW1CO0FBRTVDLGVBQWUsU0FBU0MsZ0JBQWdCQSxDQUl0Q0MsUUFBVyxFQUNYQyxZQUF1RSxFQUN2RTtFQUNBO0VBQ0EsTUFBTUMsSUFBSSxHQUFHSixZQUFZLENBQUNFLFFBQVEsQ0FBQ0csTUFBTSxDQUFDO0VBQzFDLElBQUlELElBQUksS0FBSyxLQUFLLEVBQUUsTUFBTSxJQUFJRSxLQUFLLENBQUMscUJBQXFCLENBQUM7RUFFMUQsT0FBTyxDQUFDQyxPQUFZLEVBQUUsR0FBR0MsSUFBTyxNQUFNO0lBQ3BDLENBQUNOLFFBQVEsQ0FBQ08sR0FBRyxDQUFDLEdBQUlOLFlBQVksQ0FBQyxHQUFHSyxJQUFJLENBQVMsQ0FBQyxHQUFJRSxRQUFhLElBQUs7TUFDcEUsTUFBTUMsWUFBWSxHQUFHQyxLQUFLLENBQUNGLFFBQVEsRUFBRU4sSUFBSSxDQUFDO01BQzFDO01BQ0EsTUFBTVMsV0FBd0IsR0FBRyxJQUFJQyxHQUFHLENBQUNILFlBQVksQ0FBQztNQUN0RCxNQUFNSSxTQUFTLEdBQUdILEtBQUssQ0FBQ0wsT0FBTyxFQUFFSCxJQUFJLENBQUMsQ0FBQ1ksTUFBTSxDQUMxQ0MsRUFBVSxJQUFLLENBQUNKLFdBQVcsQ0FBQ0ssR0FBRyxDQUFDRCxFQUFFLENBQ3JDLENBQUM7TUFDRCxNQUFNRSxhQUF1QixHQUFHLENBQUMsR0FBR1IsWUFBWSxFQUFFLEdBQUdJLFNBQVMsQ0FBQztNQUMvRCxPQUFPSyxLQUFLLENBQUNiLE9BQU8sRUFBRUgsSUFBSSxFQUFFZSxhQUFhLENBQUM7SUFDNUM7RUFDRixDQUFDLENBQUM7QUFDSjtBQUVBLE1BQU1QLEtBQUssR0FBR0EsQ0FBQ1MsT0FBWSxFQUFFakIsSUFBYyxLQUFZO0VBQ3JELElBQUlrQixHQUFHLEdBQUdELE9BQU87RUFDakIsS0FBSyxNQUFNRSxDQUFDLElBQUluQixJQUFJLEVBQUU7SUFDcEIsSUFBSSxDQUFDa0IsR0FBRyxFQUFFLE9BQU8sRUFBRTtJQUNuQkEsR0FBRyxHQUFHQSxHQUFHLENBQUNDLENBQUMsQ0FBQztFQUNkO0VBQ0EsT0FBT0QsR0FBRyxJQUFJLEVBQUU7QUFDbEIsQ0FBQztBQUVELE1BQU1GLEtBQUssR0FBR0EsQ0FBSUMsT0FBVSxFQUFFakIsSUFBYyxFQUFFb0IsTUFBYSxLQUFRO0VBQ2pFLElBQUlwQixJQUFJLENBQUNxQixNQUFNLEtBQUssQ0FBQyxFQUFFLE9BQU9ELE1BQU07RUFDcEMsTUFBTUUsVUFBVSxHQUFHO0lBQUUsR0FBR0w7RUFBUSxDQUFDO0VBQ2pDLElBQUlDLEdBQVEsR0FBR0ksVUFBVTtFQUN6QixLQUFLLElBQUlDLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsR0FBR3ZCLElBQUksQ0FBQ3FCLE1BQU0sR0FBRyxDQUFDLEVBQUVFLENBQUMsRUFBRSxFQUFFO0lBQ3hDLE1BQU1KLENBQUMsR0FBR25CLElBQUksQ0FBQ3VCLENBQUMsQ0FBQztJQUNqQkwsR0FBRyxHQUFHQSxHQUFHLENBQUNDLENBQUMsQ0FBQyxHQUFHO01BQUUsR0FBR0QsR0FBRyxDQUFDQyxDQUFDO0lBQUUsQ0FBQztFQUM5QjtFQUNBRCxHQUFHLENBQUNsQixJQUFJLENBQUNBLElBQUksQ0FBQ3FCLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHRCxNQUFNO0VBQ25DLE9BQU9FLFVBQVU7QUFDbkIsQ0FBQyJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paramsToString.d.ts","sourceRoot":"","sources":["../src/paramsToString.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,UAAU,cAAc,CACpC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,UAKlE"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export default function paramsToString(searchParams) {
|
|
2
|
+
const params = new URLSearchParams(searchParams);
|
|
3
|
+
params.sort();
|
|
4
|
+
return params.toString();
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXJhbXNUb1N0cmluZyIsInNlYXJjaFBhcmFtcyIsInBhcmFtcyIsIlVSTFNlYXJjaFBhcmFtcyIsInNvcnQiLCJ0b1N0cmluZyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9wYXJhbXNUb1N0cmluZy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBwYXJhbXNUb1N0cmluZyhcbiAgc2VhcmNoUGFyYW1zOiBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPj4sXG4pIHtcbiAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhzZWFyY2hQYXJhbXMgYXMgYW55KTtcbiAgcGFyYW1zLnNvcnQoKTtcbiAgcmV0dXJuIHBhcmFtcy50b1N0cmluZygpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxlQUFlLFNBQVNBLGNBQWNBLENBQ3BDQyxZQUFpRSxFQUNqRTtFQUNBLE1BQU1DLE1BQU0sR0FBRyxJQUFJQyxlQUFlLENBQUNGLFlBQW1CLENBQUM7RUFDdkRDLE1BQU0sQ0FBQ0UsSUFBSSxDQUFDLENBQUM7RUFDYixPQUFPRixNQUFNLENBQUNHLFFBQVEsQ0FBQyxDQUFDO0FBQzFCIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paramsToString.native.d.ts","sourceRoot":"","sources":["../src/paramsToString.native.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,UAAU,cAAc,CACpC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,UAQxD"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export default function paramsToString(searchParams) {
|
|
2
|
+
const params = new URLSearchParams(searchParams);
|
|
3
|
+
try {
|
|
4
|
+
params.sort();
|
|
5
|
+
// eslint-disable-next-line no-empty
|
|
6
|
+
} catch {}
|
|
7
|
+
return params.toString();
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXJhbXNUb1N0cmluZyIsInNlYXJjaFBhcmFtcyIsInBhcmFtcyIsIlVSTFNlYXJjaFBhcmFtcyIsInNvcnQiLCJ0b1N0cmluZyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9wYXJhbXNUb1N0cmluZy5uYXRpdmUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcGFyYW1zVG9TdHJpbmcoXG4gIHNlYXJjaFBhcmFtczogUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyPj4sXG4pIHtcbiAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhzZWFyY2hQYXJhbXMgYXMgYW55KTtcbiAgdHJ5IHtcbiAgICBwYXJhbXMuc29ydCgpO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1lbXB0eVxuICB9IGNhdGNoIHt9XG4gIHJldHVybiBwYXJhbXMudG9TdHJpbmcoKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsZUFBZSxTQUFTQSxjQUFjQSxDQUNwQ0MsWUFBdUQsRUFDdkQ7RUFDQSxNQUFNQyxNQUFNLEdBQUcsSUFBSUMsZUFBZSxDQUFDRixZQUFtQixDQUFDO0VBQ3ZELElBQUk7SUFDRkMsTUFBTSxDQUFDRSxJQUFJLENBQUMsQ0FBQztJQUNiO0VBQ0YsQ0FBQyxDQUFDLE1BQU0sQ0FBQztFQUNULE9BQU9GLE1BQU0sQ0FBQ0csUUFBUSxDQUFDLENBQUM7QUFDMUIifQ==
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
type OnlyOptional<S extends string> = S extends `${infer K}?` ? K : never;
|
|
2
|
+
type OnlyRequired<S extends string> = S extends `${string}?` ? never : S;
|
|
3
|
+
/** Computes the union of keys for a path string */
|
|
4
|
+
export type PathKeys<S extends string> = string extends S ? string : S extends `${infer A}\\:${infer B}` ? PathKeys<A> | PathKeys<B> : S extends `${infer A}\\?${infer B}` ? PathKeys<A> | PathKeys<B> : PathSplits<S>;
|
|
5
|
+
type PathSplits<S extends string> = S extends `${string}:${infer K}${'/' | ',' | '%' | '&'}${infer R}` ? PathSplits<`:${K}`> | PathSplits<R> : S extends `${string}:${infer K}:${infer R}` ? PathSplits<`:${K}`> | PathSplits<`:${R}`> : S extends `${string}:${infer K}` ? K : never;
|
|
6
|
+
/** Parameters for a given path */
|
|
7
|
+
export type PathArgs<S extends string> = PathKeys<S> extends never ? unknown : KeysToArgs<PathKeys<S>>;
|
|
8
|
+
export type KeysToArgs<Key extends string> = {
|
|
9
|
+
[K in Key as OnlyOptional<K>]?: string | number;
|
|
10
|
+
} & (OnlyRequired<Key> extends never ? unknown : {
|
|
11
|
+
[K in Key as OnlyRequired<K>]: string | number;
|
|
12
|
+
});
|
|
13
|
+
export type PathArgsAndSearch<S extends string> = OnlyRequired<PathKeys<S>> extends never ? Record<string, number | string | boolean> | undefined : {
|
|
14
|
+
[K in PathKeys<S> as OnlyRequired<K>]: string | number;
|
|
15
|
+
} & Record<string, number | string>;
|
|
16
|
+
/** Removes the last :token */
|
|
17
|
+
export type ShortenPath<S extends string> = string extends S ? string : S extends `${infer B}:${infer R}` ? TrimColon<`${B}:${ShortenPath<R>}`> : '';
|
|
18
|
+
type TrimColon<S extends string> = string extends S ? string : S extends `${infer R}:` ? R : S;
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=pathTypes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pathTypes.d.ts","sourceRoot":"","sources":["../src/pathTypes.ts"],"names":[],"mappings":"AAAA,KAAK,YAAY,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;AAC1E,KAAK,YAAY,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,GAAG,MAAM,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC;AAEzE,mDAAmD;AACnD,MAAM,MAAM,QAAQ,CAAC,CAAC,SAAS,MAAM,IAAI,MAAM,SAAS,CAAC,GACrD,MAAM,GACN,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,MAAM,CAAC,EAAE,GACnC,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GACzB,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,MAAM,CAAC,EAAE,GACnC,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GACzB,UAAU,CAAC,CAAC,CAAC,CAAC;AAElB,KAAK,UAAU,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,GAAG,MAAM,IAAI,MAAM,CAAC,GAC9D,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GAAG,MAAM,CAAC,EAAE,GACf,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GACnC,CAAC,SAAS,GAAG,MAAM,IAAI,MAAM,CAAC,IAAI,MAAM,CAAC,EAAE,GAC3C,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,GACzC,CAAC,SAAS,GAAG,MAAM,IAAI,MAAM,CAAC,EAAE,GAChC,CAAC,GACD,KAAK,CAAC;AAEV,kCAAkC;AAClC,MAAM,MAAM,QAAQ,CAAC,CAAC,SAAS,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC,SAAS,KAAK,GAE9D,OAAO,GACP,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAE5B,MAAM,MAAM,UAAU,CAAC,GAAG,SAAS,MAAM,IAAI;KAC1C,CAAC,IAAI,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;CAChD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,KAAK,GAChC,OAAO,GACP;KACG,CAAC,IAAI,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,MAAM;CAC/C,CAAC,CAAC;AAEP,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,MAAM,IAAI,YAAY,CAC5D,QAAQ,CAAC,CAAC,CAAC,CACZ,SAAS,KAAK,GACX,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GAAG,SAAS,GACrD;KACG,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,MAAM;CACvD,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;AAExC,8BAA8B;AAC9B,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,MAAM,IAAI,MAAM,SAAS,CAAC,GACxD,MAAM,GACN,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,MAAM,CAAC,EAAE,GACjC,SAAS,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,GACnC,EAAE,CAAC;AAEP,KAAK,SAAS,CAAC,CAAC,SAAS,MAAM,IAAI,MAAM,SAAS,CAAC,GAC/C,MAAM,GACN,CAAC,SAAS,GAAG,MAAM,CAAC,GAAG,GACvB,CAAC,GACD,CAAC,CAAC"}
|
package/lib/pathTypes.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL3BhdGhUeXBlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJ0eXBlIE9ubHlPcHRpb25hbDxTIGV4dGVuZHMgc3RyaW5nPiA9IFMgZXh0ZW5kcyBgJHtpbmZlciBLfT9gID8gSyA6IG5ldmVyO1xudHlwZSBPbmx5UmVxdWlyZWQ8UyBleHRlbmRzIHN0cmluZz4gPSBTIGV4dGVuZHMgYCR7c3RyaW5nfT9gID8gbmV2ZXIgOiBTO1xuXG4vKiogQ29tcHV0ZXMgdGhlIHVuaW9uIG9mIGtleXMgZm9yIGEgcGF0aCBzdHJpbmcgKi9cbmV4cG9ydCB0eXBlIFBhdGhLZXlzPFMgZXh0ZW5kcyBzdHJpbmc+ID0gc3RyaW5nIGV4dGVuZHMgU1xuICA/IHN0cmluZ1xuICA6IFMgZXh0ZW5kcyBgJHtpbmZlciBBfVxcXFw6JHtpbmZlciBCfWBcbiAgPyBQYXRoS2V5czxBPiB8IFBhdGhLZXlzPEI+XG4gIDogUyBleHRlbmRzIGAke2luZmVyIEF9XFxcXD8ke2luZmVyIEJ9YFxuICA/IFBhdGhLZXlzPEE+IHwgUGF0aEtleXM8Qj5cbiAgOiBQYXRoU3BsaXRzPFM+O1xuXG50eXBlIFBhdGhTcGxpdHM8UyBleHRlbmRzIHN0cmluZz4gPSBTIGV4dGVuZHMgYCR7c3RyaW5nfToke2luZmVyIEt9JHtcbiAgfCAnLydcbiAgfCAnLCdcbiAgfCAnJSdcbiAgfCAnJid9JHtpbmZlciBSfWBcbiAgPyBQYXRoU3BsaXRzPGA6JHtLfWA+IHwgUGF0aFNwbGl0czxSPlxuICA6IFMgZXh0ZW5kcyBgJHtzdHJpbmd9OiR7aW5mZXIgS306JHtpbmZlciBSfWBcbiAgPyBQYXRoU3BsaXRzPGA6JHtLfWA+IHwgUGF0aFNwbGl0czxgOiR7Un1gPlxuICA6IFMgZXh0ZW5kcyBgJHtzdHJpbmd9OiR7aW5mZXIgS31gXG4gID8gS1xuICA6IG5ldmVyO1xuXG4vKiogUGFyYW1ldGVycyBmb3IgYSBnaXZlbiBwYXRoICovXG5leHBvcnQgdHlwZSBQYXRoQXJnczxTIGV4dGVuZHMgc3RyaW5nPiA9IFBhdGhLZXlzPFM+IGV4dGVuZHMgbmV2ZXJcbiAgPyAvLyB1bmtub3duIGlzIGlkZW50aXR5IGZvciBpbnRlcnNlY3Rpb24gKCcmJylcbiAgICB1bmtub3duXG4gIDogS2V5c1RvQXJnczxQYXRoS2V5czxTPj47XG5cbmV4cG9ydCB0eXBlIEtleXNUb0FyZ3M8S2V5IGV4dGVuZHMgc3RyaW5nPiA9IHtcbiAgW0sgaW4gS2V5IGFzIE9ubHlPcHRpb25hbDxLPl0/OiBzdHJpbmcgfCBudW1iZXI7XG59ICYgKE9ubHlSZXF1aXJlZDxLZXk+IGV4dGVuZHMgbmV2ZXJcbiAgPyB1bmtub3duXG4gIDoge1xuICAgICAgW0sgaW4gS2V5IGFzIE9ubHlSZXF1aXJlZDxLPl06IHN0cmluZyB8IG51bWJlcjtcbiAgICB9KTtcblxuZXhwb3J0IHR5cGUgUGF0aEFyZ3NBbmRTZWFyY2g8UyBleHRlbmRzIHN0cmluZz4gPSBPbmx5UmVxdWlyZWQ8XG4gIFBhdGhLZXlzPFM+XG4+IGV4dGVuZHMgbmV2ZXJcbiAgPyBSZWNvcmQ8c3RyaW5nLCBudW1iZXIgfCBzdHJpbmcgfCBib29sZWFuPiB8IHVuZGVmaW5lZFxuICA6IHtcbiAgICAgIFtLIGluIFBhdGhLZXlzPFM+IGFzIE9ubHlSZXF1aXJlZDxLPl06IHN0cmluZyB8IG51bWJlcjtcbiAgICB9ICYgUmVjb3JkPHN0cmluZywgbnVtYmVyIHwgc3RyaW5nPjtcblxuLyoqIFJlbW92ZXMgdGhlIGxhc3QgOnRva2VuICovXG5leHBvcnQgdHlwZSBTaG9ydGVuUGF0aDxTIGV4dGVuZHMgc3RyaW5nPiA9IHN0cmluZyBleHRlbmRzIFNcbiAgPyBzdHJpbmdcbiAgOiBTIGV4dGVuZHMgYCR7aW5mZXIgQn06JHtpbmZlciBSfWBcbiAgPyBUcmltQ29sb248YCR7Qn06JHtTaG9ydGVuUGF0aDxSPn1gPlxuICA6ICcnO1xuXG50eXBlIFRyaW1Db2xvbjxTIGV4dGVuZHMgc3RyaW5nPiA9IHN0cmluZyBleHRlbmRzIFNcbiAgPyBzdHJpbmdcbiAgOiBTIGV4dGVuZHMgYCR7aW5mZXIgUn06YFxuICA/IFJcbiAgOiBTO1xuIl0sIm1hcHBpbmdzIjoiIn0=
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
export declare const payload: {
|
|
2
|
+
id: number;
|
|
3
|
+
title: string;
|
|
4
|
+
content: string;
|
|
5
|
+
tags: string[];
|
|
6
|
+
};
|
|
7
|
+
export declare const createPayload: {
|
|
8
|
+
id: number;
|
|
9
|
+
title: string;
|
|
10
|
+
content: string;
|
|
11
|
+
tags: string[];
|
|
12
|
+
};
|
|
13
|
+
export declare const articlesPages: {
|
|
14
|
+
prevPage: string;
|
|
15
|
+
nextPage: string;
|
|
16
|
+
results: ({
|
|
17
|
+
id: number;
|
|
18
|
+
title: string;
|
|
19
|
+
content: string;
|
|
20
|
+
tags: string[];
|
|
21
|
+
} | {
|
|
22
|
+
id: number;
|
|
23
|
+
title: string;
|
|
24
|
+
content: string;
|
|
25
|
+
tags?: undefined;
|
|
26
|
+
})[];
|
|
27
|
+
};
|
|
28
|
+
export declare const users: {
|
|
29
|
+
id: number;
|
|
30
|
+
username: string;
|
|
31
|
+
email: string;
|
|
32
|
+
isAdmin: boolean;
|
|
33
|
+
}[];
|
|
34
|
+
export declare const nested: ({
|
|
35
|
+
id: number;
|
|
36
|
+
title: string;
|
|
37
|
+
content: string;
|
|
38
|
+
tags: string[];
|
|
39
|
+
author: {
|
|
40
|
+
id: number;
|
|
41
|
+
username: string;
|
|
42
|
+
email?: undefined;
|
|
43
|
+
};
|
|
44
|
+
} | {
|
|
45
|
+
id: number;
|
|
46
|
+
title: string;
|
|
47
|
+
content: string;
|
|
48
|
+
author: {
|
|
49
|
+
id: number;
|
|
50
|
+
username: string;
|
|
51
|
+
email: string;
|
|
52
|
+
};
|
|
53
|
+
tags?: undefined;
|
|
54
|
+
})[];
|
|
55
|
+
export declare const moreNested: ({
|
|
56
|
+
id: number;
|
|
57
|
+
title: string;
|
|
58
|
+
content: string;
|
|
59
|
+
tags: string[];
|
|
60
|
+
author: {
|
|
61
|
+
id: number;
|
|
62
|
+
username: string;
|
|
63
|
+
email?: undefined;
|
|
64
|
+
};
|
|
65
|
+
} | {
|
|
66
|
+
id: number;
|
|
67
|
+
title: string;
|
|
68
|
+
content: string;
|
|
69
|
+
author: {
|
|
70
|
+
id: number;
|
|
71
|
+
username: string;
|
|
72
|
+
email: string;
|
|
73
|
+
};
|
|
74
|
+
tags?: undefined;
|
|
75
|
+
})[];
|
|
76
|
+
export declare const valuesFixture: {
|
|
77
|
+
first: {
|
|
78
|
+
id: number;
|
|
79
|
+
title: string;
|
|
80
|
+
content: string;
|
|
81
|
+
tags: never[];
|
|
82
|
+
};
|
|
83
|
+
second: {
|
|
84
|
+
id: number;
|
|
85
|
+
name: string;
|
|
86
|
+
content: string;
|
|
87
|
+
tags: never[];
|
|
88
|
+
};
|
|
89
|
+
};
|
|
90
|
+
export declare const paginatedFirstPage: {
|
|
91
|
+
nextPage: string;
|
|
92
|
+
data: {
|
|
93
|
+
results: ({
|
|
94
|
+
id: number;
|
|
95
|
+
title: string;
|
|
96
|
+
content: string;
|
|
97
|
+
tags: string[];
|
|
98
|
+
author: {
|
|
99
|
+
id: number;
|
|
100
|
+
username: string;
|
|
101
|
+
email?: undefined;
|
|
102
|
+
};
|
|
103
|
+
} | {
|
|
104
|
+
id: number;
|
|
105
|
+
title: string;
|
|
106
|
+
content: string;
|
|
107
|
+
author: {
|
|
108
|
+
id: number;
|
|
109
|
+
username: string;
|
|
110
|
+
email: string;
|
|
111
|
+
};
|
|
112
|
+
tags?: undefined;
|
|
113
|
+
})[];
|
|
114
|
+
};
|
|
115
|
+
};
|
|
116
|
+
export declare const paginatedSecondPage: {
|
|
117
|
+
data: {
|
|
118
|
+
results: ({
|
|
119
|
+
id: number;
|
|
120
|
+
title: string;
|
|
121
|
+
content: string;
|
|
122
|
+
tags: string[];
|
|
123
|
+
author: {
|
|
124
|
+
id: number;
|
|
125
|
+
username: string;
|
|
126
|
+
email?: undefined;
|
|
127
|
+
};
|
|
128
|
+
} | {
|
|
129
|
+
id: number;
|
|
130
|
+
title: string;
|
|
131
|
+
content: string;
|
|
132
|
+
author: {
|
|
133
|
+
id: number;
|
|
134
|
+
username: string;
|
|
135
|
+
email: string;
|
|
136
|
+
};
|
|
137
|
+
tags?: undefined;
|
|
138
|
+
})[];
|
|
139
|
+
};
|
|
140
|
+
};
|
|
141
|
+
//# sourceMappingURL=test-fixtures.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-fixtures.d.ts","sourceRoot":"","sources":["../src/test-fixtures.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO;;;;;CAKnB,CAAC;AAEF,eAAO,MAAM,aAAa;;;;;CAKzB,CAAC;AAEF,eAAO,MAAM,aAAa;;;;;;;;;;;;;;CA4BzB,CAAC;AAEF,eAAO,MAAM,KAAK;;;;;GAajB,CAAC;AAEF,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;IAqBlB,CAAC;AAEF,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;IAqBtB,CAAC;AAEF,eAAO,MAAM,aAAa;;;;;;;;;;;;;CAazB,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;CAG9B,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;CAE/B,CAAC"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
export const payload = {
|
|
2
|
+
id: 5,
|
|
3
|
+
title: 'hi ho',
|
|
4
|
+
content: 'whatever',
|
|
5
|
+
tags: ['a', 'best', 'react']
|
|
6
|
+
};
|
|
7
|
+
export const createPayload = {
|
|
8
|
+
id: 1,
|
|
9
|
+
title: 'hi ho',
|
|
10
|
+
content: 'whatever',
|
|
11
|
+
tags: ['a', 'best', 'react']
|
|
12
|
+
};
|
|
13
|
+
export const articlesPages = {
|
|
14
|
+
prevPage: '23asdl',
|
|
15
|
+
nextPage: 's3f3',
|
|
16
|
+
results: [{
|
|
17
|
+
id: 23,
|
|
18
|
+
title: 'the first draft',
|
|
19
|
+
content: 'the best things in life com efree',
|
|
20
|
+
tags: ['one', 'two']
|
|
21
|
+
}, {
|
|
22
|
+
id: 44,
|
|
23
|
+
title: 'the second book',
|
|
24
|
+
content: 'the best things in life com efree',
|
|
25
|
+
tags: ['hbh', 'wew']
|
|
26
|
+
}, {
|
|
27
|
+
id: 2,
|
|
28
|
+
title: 'the third novel',
|
|
29
|
+
content: 'the best things in life com efree',
|
|
30
|
+
tags: ['free', 'honey']
|
|
31
|
+
}, {
|
|
32
|
+
id: 643,
|
|
33
|
+
title: 'a long time ago',
|
|
34
|
+
content: 'the best things in life com efree'
|
|
35
|
+
}]
|
|
36
|
+
};
|
|
37
|
+
export const users = [{
|
|
38
|
+
id: 23,
|
|
39
|
+
username: 'bob',
|
|
40
|
+
email: 'bob@bob.com',
|
|
41
|
+
isAdmin: false
|
|
42
|
+
}, {
|
|
43
|
+
id: 7342,
|
|
44
|
+
username: 'lindsey',
|
|
45
|
+
email: 'lindsey@bob.com',
|
|
46
|
+
isAdmin: true
|
|
47
|
+
}];
|
|
48
|
+
export const nested = [{
|
|
49
|
+
id: 5,
|
|
50
|
+
title: 'hi ho',
|
|
51
|
+
content: 'whatever',
|
|
52
|
+
tags: ['a', 'best', 'react'],
|
|
53
|
+
author: {
|
|
54
|
+
id: 23,
|
|
55
|
+
username: 'bob'
|
|
56
|
+
}
|
|
57
|
+
}, {
|
|
58
|
+
id: 3,
|
|
59
|
+
title: 'the next time',
|
|
60
|
+
content: 'whatever',
|
|
61
|
+
author: {
|
|
62
|
+
id: 23,
|
|
63
|
+
username: 'charles',
|
|
64
|
+
email: 'bob@bob.com'
|
|
65
|
+
}
|
|
66
|
+
}];
|
|
67
|
+
export const moreNested = [{
|
|
68
|
+
id: 7,
|
|
69
|
+
title: 'article 7',
|
|
70
|
+
content: 'whatever',
|
|
71
|
+
tags: ['blah'],
|
|
72
|
+
author: {
|
|
73
|
+
id: 23,
|
|
74
|
+
username: 'bob'
|
|
75
|
+
}
|
|
76
|
+
}, {
|
|
77
|
+
id: 8,
|
|
78
|
+
title: 'article 8',
|
|
79
|
+
content: 'whatever',
|
|
80
|
+
author: {
|
|
81
|
+
id: 27,
|
|
82
|
+
username: 'zac',
|
|
83
|
+
email: 'zac@bob.com'
|
|
84
|
+
}
|
|
85
|
+
}];
|
|
86
|
+
export const valuesFixture = {
|
|
87
|
+
first: {
|
|
88
|
+
id: 1,
|
|
89
|
+
title: 'first thing',
|
|
90
|
+
content: 'blah',
|
|
91
|
+
tags: []
|
|
92
|
+
},
|
|
93
|
+
second: {
|
|
94
|
+
id: 2,
|
|
95
|
+
name: 'second thing',
|
|
96
|
+
content: 'blah',
|
|
97
|
+
tags: []
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
export const paginatedFirstPage = {
|
|
101
|
+
nextPage: '2',
|
|
102
|
+
data: {
|
|
103
|
+
results: nested
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
export const paginatedSecondPage = {
|
|
107
|
+
data: {
|
|
108
|
+
results: moreNested
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXlsb2FkIiwiaWQiLCJ0aXRsZSIsImNvbnRlbnQiLCJ0YWdzIiwiY3JlYXRlUGF5bG9hZCIsImFydGljbGVzUGFnZXMiLCJwcmV2UGFnZSIsIm5leHRQYWdlIiwicmVzdWx0cyIsInVzZXJzIiwidXNlcm5hbWUiLCJlbWFpbCIsImlzQWRtaW4iLCJuZXN0ZWQiLCJhdXRob3IiLCJtb3JlTmVzdGVkIiwidmFsdWVzRml4dHVyZSIsImZpcnN0Iiwic2Vjb25kIiwibmFtZSIsInBhZ2luYXRlZEZpcnN0UGFnZSIsImRhdGEiLCJwYWdpbmF0ZWRTZWNvbmRQYWdlIl0sInNvdXJjZXMiOlsiLi4vc3JjL3Rlc3QtZml4dHVyZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IHBheWxvYWQgPSB7XG4gIGlkOiA1LFxuICB0aXRsZTogJ2hpIGhvJyxcbiAgY29udGVudDogJ3doYXRldmVyJyxcbiAgdGFnczogWydhJywgJ2Jlc3QnLCAncmVhY3QnXSxcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVQYXlsb2FkID0ge1xuICBpZDogMSxcbiAgdGl0bGU6ICdoaSBobycsXG4gIGNvbnRlbnQ6ICd3aGF0ZXZlcicsXG4gIHRhZ3M6IFsnYScsICdiZXN0JywgJ3JlYWN0J10sXG59O1xuXG5leHBvcnQgY29uc3QgYXJ0aWNsZXNQYWdlcyA9IHtcbiAgcHJldlBhZ2U6ICcyM2FzZGwnLFxuICBuZXh0UGFnZTogJ3MzZjMnLFxuICByZXN1bHRzOiBbXG4gICAge1xuICAgICAgaWQ6IDIzLFxuICAgICAgdGl0bGU6ICd0aGUgZmlyc3QgZHJhZnQnLFxuICAgICAgY29udGVudDogJ3RoZSBiZXN0IHRoaW5ncyBpbiBsaWZlIGNvbSBlZnJlZScsXG4gICAgICB0YWdzOiBbJ29uZScsICd0d28nXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiA0NCxcbiAgICAgIHRpdGxlOiAndGhlIHNlY29uZCBib29rJyxcbiAgICAgIGNvbnRlbnQ6ICd0aGUgYmVzdCB0aGluZ3MgaW4gbGlmZSBjb20gZWZyZWUnLFxuICAgICAgdGFnczogWydoYmgnLCAnd2V3J10sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogMixcbiAgICAgIHRpdGxlOiAndGhlIHRoaXJkIG5vdmVsJyxcbiAgICAgIGNvbnRlbnQ6ICd0aGUgYmVzdCB0aGluZ3MgaW4gbGlmZSBjb20gZWZyZWUnLFxuICAgICAgdGFnczogWydmcmVlJywgJ2hvbmV5J10sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogNjQzLFxuICAgICAgdGl0bGU6ICdhIGxvbmcgdGltZSBhZ28nLFxuICAgICAgY29udGVudDogJ3RoZSBiZXN0IHRoaW5ncyBpbiBsaWZlIGNvbSBlZnJlZScsXG4gICAgfSxcbiAgXSxcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VycyA9IFtcbiAge1xuICAgIGlkOiAyMyxcbiAgICB1c2VybmFtZTogJ2JvYicsXG4gICAgZW1haWw6ICdib2JAYm9iLmNvbScsXG4gICAgaXNBZG1pbjogZmFsc2UsXG4gIH0sXG4gIHtcbiAgICBpZDogNzM0MixcbiAgICB1c2VybmFtZTogJ2xpbmRzZXknLFxuICAgIGVtYWlsOiAnbGluZHNleUBib2IuY29tJyxcbiAgICBpc0FkbWluOiB0cnVlLFxuICB9LFxuXTtcblxuZXhwb3J0IGNvbnN0IG5lc3RlZCA9IFtcbiAge1xuICAgIGlkOiA1LFxuICAgIHRpdGxlOiAnaGkgaG8nLFxuICAgIGNvbnRlbnQ6ICd3aGF0ZXZlcicsXG4gICAgdGFnczogWydhJywgJ2Jlc3QnLCAncmVhY3QnXSxcbiAgICBhdXRob3I6IHtcbiAgICAgIGlkOiAyMyxcbiAgICAgIHVzZXJuYW1lOiAnYm9iJyxcbiAgICB9LFxuICB9LFxuICB7XG4gICAgaWQ6IDMsXG4gICAgdGl0bGU6ICd0aGUgbmV4dCB0aW1lJyxcbiAgICBjb250ZW50OiAnd2hhdGV2ZXInLFxuICAgIGF1dGhvcjoge1xuICAgICAgaWQ6IDIzLFxuICAgICAgdXNlcm5hbWU6ICdjaGFybGVzJyxcbiAgICAgIGVtYWlsOiAnYm9iQGJvYi5jb20nLFxuICAgIH0sXG4gIH0sXG5dO1xuXG5leHBvcnQgY29uc3QgbW9yZU5lc3RlZCA9IFtcbiAge1xuICAgIGlkOiA3LFxuICAgIHRpdGxlOiAnYXJ0aWNsZSA3JyxcbiAgICBjb250ZW50OiAnd2hhdGV2ZXInLFxuICAgIHRhZ3M6IFsnYmxhaCddLFxuICAgIGF1dGhvcjoge1xuICAgICAgaWQ6IDIzLFxuICAgICAgdXNlcm5hbWU6ICdib2InLFxuICAgIH0sXG4gIH0sXG4gIHtcbiAgICBpZDogOCxcbiAgICB0aXRsZTogJ2FydGljbGUgOCcsXG4gICAgY29udGVudDogJ3doYXRldmVyJyxcbiAgICBhdXRob3I6IHtcbiAgICAgIGlkOiAyNyxcbiAgICAgIHVzZXJuYW1lOiAnemFjJyxcbiAgICAgIGVtYWlsOiAnemFjQGJvYi5jb20nLFxuICAgIH0sXG4gIH0sXG5dO1xuXG5leHBvcnQgY29uc3QgdmFsdWVzRml4dHVyZSA9IHtcbiAgZmlyc3Q6IHtcbiAgICBpZDogMSxcbiAgICB0aXRsZTogJ2ZpcnN0IHRoaW5nJyxcbiAgICBjb250ZW50OiAnYmxhaCcsXG4gICAgdGFnczogW10sXG4gIH0sXG4gIHNlY29uZDoge1xuICAgIGlkOiAyLFxuICAgIG5hbWU6ICdzZWNvbmQgdGhpbmcnLFxuICAgIGNvbnRlbnQ6ICdibGFoJyxcbiAgICB0YWdzOiBbXSxcbiAgfSxcbn07XG5cbmV4cG9ydCBjb25zdCBwYWdpbmF0ZWRGaXJzdFBhZ2UgPSB7XG4gIG5leHRQYWdlOiAnMicsXG4gIGRhdGE6IHsgcmVzdWx0czogbmVzdGVkIH0sXG59O1xuXG5leHBvcnQgY29uc3QgcGFnaW5hdGVkU2Vjb25kUGFnZSA9IHtcbiAgZGF0YTogeyByZXN1bHRzOiBtb3JlTmVzdGVkIH0sXG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU1BLE9BQU8sR0FBRztFQUNyQkMsRUFBRSxFQUFFLENBQUM7RUFDTEMsS0FBSyxFQUFFLE9BQU87RUFDZEMsT0FBTyxFQUFFLFVBQVU7RUFDbkJD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
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/** Extracts only the keys that will be required
|
|
2
|
+
*
|
|
3
|
+
* Removes optional, as well as unbounded (aka 'string')
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
```
|
|
7
|
+
RequiredKeys<{
|
|
8
|
+
opt?: string;
|
|
9
|
+
bob: string;
|
|
10
|
+
alice: number;
|
|
11
|
+
[k: string]: string | number | undefined;
|
|
12
|
+
}> // = 'bob' | 'alice'
|
|
13
|
+
```
|
|
14
|
+
*/
|
|
15
|
+
export type RequiredKeys<T> = Values<OnlyRequired<T>>;
|
|
16
|
+
type OnlyRequired<T> = {
|
|
17
|
+
[K in keyof T as string extends K ? never : K]-?: {} extends Pick<T, K> ? never : K;
|
|
18
|
+
};
|
|
19
|
+
type Values<T> = T[Exclude<keyof T, number>];
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=utiltypes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utiltypes.d.ts","sourceRoot":"","sources":["../src/utiltypes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAEtD,KAAK,YAAY,CAAC,CAAC,IAAI;KACpB,CAAC,IAAI,MAAM,CAAC,IAAI,MAAM,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GACnE,KAAK,GACL,CAAC;CACN,CAAC;AAIF,KAAK,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC"}
|
package/lib/utiltypes.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL3V0aWx0eXBlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogRXh0cmFjdHMgb25seSB0aGUga2V5cyB0aGF0IHdpbGwgYmUgcmVxdWlyZWRcbiAqXG4gKiBSZW1vdmVzIG9wdGlvbmFsLCBhcyB3ZWxsIGFzIHVuYm91bmRlZCAoYWthICdzdHJpbmcnKVxuICpcbiAqIEBleGFtcGxlXG4gYGBgXG5SZXF1aXJlZEtleXM8e1xuICBvcHQ/OiBzdHJpbmc7XG4gIGJvYjogc3RyaW5nO1xuICBhbGljZTogbnVtYmVyO1xuICBbazogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgdW5kZWZpbmVkO1xufT4gLy8gPSAnYm9iJyB8ICdhbGljZSdcbiBgYGBcbiAqL1xuZXhwb3J0IHR5cGUgUmVxdWlyZWRLZXlzPFQ+ID0gVmFsdWVzPE9ubHlSZXF1aXJlZDxUPj47XG5cbnR5cGUgT25seVJlcXVpcmVkPFQ+ID0ge1xuICBbSyBpbiBrZXlvZiBUIGFzIHN0cmluZyBleHRlbmRzIEsgPyBuZXZlciA6IEtdLT86IHt9IGV4dGVuZHMgUGljazxULCBLPlxuICAgID8gbmV2ZXJcbiAgICA6IEs7XG59O1xuXG4vLyBleGNsdWRlIG51bWJlciBvbmx5IHJlcXVpcmVkIGZvciB0eXBlc2NyaXB0IDQuNCBhbmQgYmVsb3dcbi8vIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9wbGF5P3RzPTQuNC40I2NvZGUvQzRUd0RncGdCQWdsQzhVRGVVQkdCN1ZBdUtCbllBVGdKWUIyQTVnTnhRRGFBMWp2c2VRTG80Q3NBUG82V1ZBTDRVQXNBQ2dSSWlBQTh3NkFzQ2loSVVBRW9RQWpnRmNpQkNBQk1BMGhCQzRBUEFCVUFmQWlnQTFBSVlBYmRSQk1CNUV2WkFxTlczV2ZQbWhVV0ZKYVZsNWNHZzNEeTlOYlIwLUt5UVJLQm85S0ZJb1drTjBBRE1vVXloYlhEeENIaWhKWUFnU0hXSzBnSDRvRWdnQU53Z0NLQnc5WmdCYU9wd2tQbktKU3VyaWdBVWlBR05hTXdBYUtEMXpaSlNvQnFiV2dtV1V6c0NCTVdFRmFEdEhad1RFVXpwc3ZOTm1RSkZEcUFCaEt5alBOVmpmR0NXRGlLZ0FJVCtWaXlJRnlUM3V2MGV6MFF4eWNKa2U1aUFBXG50eXBlIFZhbHVlczxUPiA9IFRbRXhjbHVkZTxrZXlvZiBULCBudW1iZXI+XTtcbiJdLCJtYXBwaW5ncyI6IiJ9
|
package/node.mjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './dist/index.js';
|
package/package.json
ADDED
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@data-client/rest",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Endpoints for REST APIs",
|
|
5
|
+
"homepage": "https://dataclient.io/rest",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "git+ssh://git@github.com:data-client/data-client.git",
|
|
9
|
+
"directory": "packages/rest"
|
|
10
|
+
},
|
|
11
|
+
"bugs": {
|
|
12
|
+
"url": "https://github.com/data-client/data-client/issues"
|
|
13
|
+
},
|
|
14
|
+
"keywords": [
|
|
15
|
+
"REST",
|
|
16
|
+
"CRUD",
|
|
17
|
+
"networking",
|
|
18
|
+
"fetch",
|
|
19
|
+
"data",
|
|
20
|
+
"cache",
|
|
21
|
+
"model",
|
|
22
|
+
"resource",
|
|
23
|
+
"typescript",
|
|
24
|
+
"path-to-regex",
|
|
25
|
+
"path template",
|
|
26
|
+
"data fetching",
|
|
27
|
+
"data cache",
|
|
28
|
+
"api",
|
|
29
|
+
"normalized cache",
|
|
30
|
+
"subject pattern",
|
|
31
|
+
"endpoint",
|
|
32
|
+
"react-native",
|
|
33
|
+
"ios",
|
|
34
|
+
"android",
|
|
35
|
+
"web",
|
|
36
|
+
"json"
|
|
37
|
+
],
|
|
38
|
+
"sideEffects": false,
|
|
39
|
+
"main": "dist/index.js",
|
|
40
|
+
"react-native": "legacy/index.js",
|
|
41
|
+
"module": "legacy/index.js",
|
|
42
|
+
"unpkg": "dist/index.umd.min.js",
|
|
43
|
+
"types": "lib/index.d.ts",
|
|
44
|
+
"typesVersions": {
|
|
45
|
+
">=4.1": {
|
|
46
|
+
"": [
|
|
47
|
+
"lib/index.d.ts"
|
|
48
|
+
],
|
|
49
|
+
"next": [
|
|
50
|
+
"lib/next/index.d.ts"
|
|
51
|
+
],
|
|
52
|
+
"*": [
|
|
53
|
+
"lib/index.d.ts"
|
|
54
|
+
]
|
|
55
|
+
},
|
|
56
|
+
">=4.0": {
|
|
57
|
+
"": [
|
|
58
|
+
"ts4.0/index.d.ts"
|
|
59
|
+
],
|
|
60
|
+
"next": [
|
|
61
|
+
"ts4.0/next/index.d.ts"
|
|
62
|
+
],
|
|
63
|
+
"*": [
|
|
64
|
+
"ts4.0/index.d.ts"
|
|
65
|
+
]
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
"exports": {
|
|
69
|
+
".": {
|
|
70
|
+
"module": "./lib/index.js",
|
|
71
|
+
"import": "./node.mjs",
|
|
72
|
+
"require": "./dist/index.js",
|
|
73
|
+
"default": "./lib/index.js"
|
|
74
|
+
},
|
|
75
|
+
"./next": {
|
|
76
|
+
"types": "./lib/next/index.d.ts",
|
|
77
|
+
"require": "./dist/next.js",
|
|
78
|
+
"default": "./lib/next/index.js"
|
|
79
|
+
},
|
|
80
|
+
"./package.json": "./package.json"
|
|
81
|
+
},
|
|
82
|
+
"type": "module",
|
|
83
|
+
"engines": {
|
|
84
|
+
"node": "^12.17 || ^13.7 || >=14"
|
|
85
|
+
},
|
|
86
|
+
"files": [
|
|
87
|
+
"src",
|
|
88
|
+
"dist",
|
|
89
|
+
"lib",
|
|
90
|
+
"node.mjs",
|
|
91
|
+
"legacy",
|
|
92
|
+
"ts4.0",
|
|
93
|
+
"LICENSE",
|
|
94
|
+
"README.md"
|
|
95
|
+
],
|
|
96
|
+
"scripts": {
|
|
97
|
+
"build:lib": "NODE_ENV=production BROWSERSLIST_ENV='2020' yarn g:babel --out-dir lib",
|
|
98
|
+
"build:legacy:lib": "NODE_ENV=production BROWSERSLIST_ENV='2018' yarn g:babel --out-dir legacy",
|
|
99
|
+
"build:js:node": "BROWSERSLIST_ENV=node12 yarn g:rollup",
|
|
100
|
+
"build:js:browser": "BROWSERSLIST_ENV=legacy yarn g:rollup",
|
|
101
|
+
"build:bundle": "yarn g:runs build:js:\\* && echo '{\"type\":\"commonjs\"}' > dist/package.json",
|
|
102
|
+
"build:clean": "yarn g:clean ts4.0 index.d.ts next.d.ts",
|
|
103
|
+
"build:legacy-types": "yarn g:downtypes lib ts4.0 --to=4.0 && yarn g:copy --up 1 ./src-4.0-types/**/*.d.ts ./ts4.0",
|
|
104
|
+
"build": "run build:lib && run build:legacy:lib && run build:bundle",
|
|
105
|
+
"dev": "run build:lib -w",
|
|
106
|
+
"prepare": "run build:lib",
|
|
107
|
+
"prepack": "run prepare && run build:bundle && run build:legacy:lib"
|
|
108
|
+
},
|
|
109
|
+
"author": "Nathaniel Tucker <me@ntucker.me> (https://github.com/ntucker)",
|
|
110
|
+
"license": "Apache-2.0",
|
|
111
|
+
"dependencies": {
|
|
112
|
+
"@babel/runtime": "^7.17.0",
|
|
113
|
+
"@data-client/endpoint": "^0.1.0",
|
|
114
|
+
"path-to-regexp": "^6.2.1"
|
|
115
|
+
},
|
|
116
|
+
"devDependencies": {
|
|
117
|
+
"@anansi/browserslist-config": "^1.4.2",
|
|
118
|
+
"@types/node": "^20.0.0",
|
|
119
|
+
"@types/path-to-regexp": "^1.7.0"
|
|
120
|
+
}
|
|
121
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/** An error with a Rest Endpoint fetch
|
|
2
|
+
*
|
|
3
|
+
* @see https://resthooks.io/rest/api/NetworkError
|
|
4
|
+
*/
|
|
5
|
+
export default class NetworkError extends Error {
|
|
6
|
+
declare status: number;
|
|
7
|
+
declare response: Response;
|
|
8
|
+
name = 'NetworkError';
|
|
9
|
+
|
|
10
|
+
constructor(response: Response) {
|
|
11
|
+
super(
|
|
12
|
+
response.statusText || `Network response not 'ok': ${response.status}`,
|
|
13
|
+
);
|
|
14
|
+
this.status = response.status;
|
|
15
|
+
this.response = response;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { FetchFunction, ResolveType } from '@data-client/endpoint';
|
|
2
|
+
|
|
3
|
+
import { PathArgs } from './pathTypes.js';
|
|
4
|
+
import {
|
|
5
|
+
PartialRestGenerics,
|
|
6
|
+
RestInstance,
|
|
7
|
+
RestInstanceBase,
|
|
8
|
+
RestFetch,
|
|
9
|
+
} from './RestEndpoint.js';
|
|
10
|
+
|
|
11
|
+
export type OptionsToFunction<
|
|
12
|
+
O extends PartialRestGenerics,
|
|
13
|
+
E extends RestInstanceBase & { body?: any },
|
|
14
|
+
F extends FetchFunction,
|
|
15
|
+
> = 'path' extends keyof O
|
|
16
|
+
? RestFetch<
|
|
17
|
+
'searchParams' extends keyof O
|
|
18
|
+
? O['searchParams'] & PathArgs<Exclude<O['path'], undefined>>
|
|
19
|
+
: PathArgs<Exclude<O['path'], undefined>>,
|
|
20
|
+
'body' extends keyof O ? O['body'] : E['body'],
|
|
21
|
+
O['process'] extends {} ? ReturnType<O['process']> : ResolveType<F>
|
|
22
|
+
>
|
|
23
|
+
: 'body' extends keyof O
|
|
24
|
+
? RestFetch<
|
|
25
|
+
'searchParams' extends keyof O
|
|
26
|
+
? O['searchParams'] & PathArgs<Exclude<E['path'], undefined>>
|
|
27
|
+
: PathArgs<Exclude<E['path'], undefined>>,
|
|
28
|
+
O['body'],
|
|
29
|
+
O['process'] extends {} ? ReturnType<O['process']> : ResolveType<F>
|
|
30
|
+
>
|
|
31
|
+
: 'searchParams' extends keyof O
|
|
32
|
+
? RestFetch<
|
|
33
|
+
O['searchParams'] & PathArgs<Exclude<E['path'], undefined>>,
|
|
34
|
+
E['body'],
|
|
35
|
+
O['process'] extends {} ? ReturnType<O['process']> : ResolveType<F>
|
|
36
|
+
>
|
|
37
|
+
: (
|
|
38
|
+
this: ThisParameterType<F>,
|
|
39
|
+
...args: Parameters<F>
|
|
40
|
+
) => Promise<
|
|
41
|
+
O['process'] extends {} ? ReturnType<O['process']> : ResolveType<F>
|
|
42
|
+
>;
|