@data-client/rest 0.16.0 → 0.16.1
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/CHANGELOG.md +21 -0
- package/README.md +9 -3
- package/legacy/pathTypes.js +1 -1
- package/lib/pathTypes.d.ts +2 -2
- package/lib/pathTypes.d.ts.map +1 -1
- package/lib/pathTypes.js +1 -1
- package/package.json +1 -1
- package/src/pathTypes.ts +4 -2
- package/ts4.1/pathTypes.d.ts +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
# @data-client/rest
|
|
2
2
|
|
|
3
|
+
## 0.16.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#3845](https://github.com/reactive/data-client/pull/3845) [`14095fe`](https://github.com/reactive/data-client/commit/14095fe768625cf11ce3d80d3493571029cf5b67) - Fix type errors when using concrete body types with subclassed RestEndpoint
|
|
8
|
+
|
|
9
|
+
Subclassing RestEndpoint (the standard pattern for adding auth headers, custom
|
|
10
|
+
serialization, etc.) could produce type errors when specifying concrete body types.
|
|
11
|
+
|
|
12
|
+
```ts
|
|
13
|
+
// Before: type error on body ❌
|
|
14
|
+
class AuthdEndpoint<O extends RestGenerics = any> extends RestEndpoint<O> {}
|
|
15
|
+
new AuthdEndpoint({
|
|
16
|
+
method: 'PUT',
|
|
17
|
+
path: '/users/:id',
|
|
18
|
+
body: {} as { username: string; email: string },
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
// After: works correctly ✓
|
|
22
|
+
```
|
|
23
|
+
|
|
3
24
|
## 0.16.0
|
|
4
25
|
|
|
5
26
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -6,12 +6,12 @@
|
|
|
6
6
|
[](https://bundlephobia.com/result?p=@data-client/rest)
|
|
7
7
|
[](https://www.npmjs.com/package/@data-client/rest)
|
|
8
8
|
[](http://makeapullrequest.com)
|
|
9
|
-
[](https://skills.sh/reactive/data-client)
|
|
10
10
|
[](https://discord.gg/35nb8Mz)
|
|
11
11
|
|
|
12
12
|
<div align="center">
|
|
13
13
|
|
|
14
|
-
**[📖Read The Docs](https://dataclient.io/rest)** | [🤖
|
|
14
|
+
**[📖Read The Docs](https://dataclient.io/rest)** | [🤖Agent Skills](https://skills.sh/reactive/data-client) | [🎮Todo Demo](https://stackblitz.com/github/reactive/data-client/tree/master/examples/todo-app?file=src%2Fresources%2FTodoResource.ts) | [🎮Github Demo](https://stackblitz.com/github/reactive/data-client/tree/master/examples/github-app?file=src%2Fresources%2FIssue.tsx)
|
|
15
15
|
|
|
16
16
|
</div>
|
|
17
17
|
|
|
@@ -231,10 +231,16 @@ supports inferring argument types from the path templates.
|
|
|
231
231
|
<td align="center">🛑</td>
|
|
232
232
|
</tr>
|
|
233
233
|
<tr>
|
|
234
|
-
<td>any</td>
|
|
234
|
+
<td rowSpan="2">any</td>
|
|
235
235
|
<td align="center"></td>
|
|
236
236
|
<td><a href="https://dataclient.io/rest/api/Query">Query(Queryable)</a></td>
|
|
237
237
|
<td>memoized custom transforms</td>
|
|
238
238
|
<td align="center">✅</td>
|
|
239
239
|
</tr>
|
|
240
|
+
<tr>
|
|
241
|
+
<td align="center"></td>
|
|
242
|
+
<td><a href="https://dataclient.io/rest/api/Lazy">Lazy(Schema)</a></td>
|
|
243
|
+
<td>deferred denormalization</td>
|
|
244
|
+
<td align="center">✅</td>
|
|
245
|
+
</tr>
|
|
240
246
|
</tbody></table>
|
package/legacy/pathTypes.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL3BhdGhUeXBlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJ0eXBlIENsZWFuS2V5PFMgZXh0ZW5kcyBzdHJpbmc+ID0gUyBleHRlbmRzIGBcIiR7aW5mZXIgS31cImAgPyBLIDogUztcblxudHlwZSBLZXlOYW1lPEsgZXh0ZW5kcyBzdHJpbmc+ID0gQ2xlYW5LZXk8XG4gIEsgZXh0ZW5kcyBgKiR7aW5mZXIgTn19YCA/IE5cbiAgOiBLIGV4dGVuZHMgYCoke2luZmVyIE59YCA/IE5cbiAgOiBLIGV4dGVuZHMgYCR7aW5mZXIgTn19YCA/IE5cbiAgOiBLXG4+
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL3BhdGhUeXBlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJ0eXBlIENsZWFuS2V5PFMgZXh0ZW5kcyBzdHJpbmc+ID0gUyBleHRlbmRzIGBcIiR7aW5mZXIgS31cImAgPyBLIDogUztcblxudHlwZSBLZXlOYW1lPEsgZXh0ZW5kcyBzdHJpbmc+ID0gQ2xlYW5LZXk8XG4gIEsgZXh0ZW5kcyBgKiR7aW5mZXIgTn19YCA/IE5cbiAgOiBLIGV4dGVuZHMgYCoke2luZmVyIE59YCA/IE5cbiAgOiBLIGV4dGVuZHMgYCR7aW5mZXIgTn19YCA/IE5cbiAgOiBLXG4+O1xuXG50eXBlIEtleVZhbDxLIGV4dGVuZHMgc3RyaW5nPiA9XG4gIEsgZXh0ZW5kcyBgKiR7c3RyaW5nfWAgPyBzdHJpbmdbXSA6IHN0cmluZyB8IG51bWJlcjtcblxuLyoqIFBhcmFtZXRlcnMgZm9yIGEgZ2l2ZW4gcGF0aCAqL1xuZXhwb3J0IHR5cGUgUGF0aEFyZ3M8UyBleHRlbmRzIHN0cmluZz4gPVxuICB1bmtub3duIGV4dGVuZHMgUyA/IGFueVxuICA6IFBhdGhLZXlzPFM+IGV4dGVuZHMgbmV2ZXIgP1xuICAgIC8vIHVua25vd24gaXMgaWRlbnRpdHkgZm9yIGludGVyc2VjdGlvbiAoJyYnKVxuICAgIHVua25vd25cbiAgOiBLZXlzVG9BcmdzPFBhdGhLZXlzPFM+PjtcblxuLyoqIENvbXB1dGVzIHRoZSB1bmlvbiBvZiBrZXlzIGZvciBhIHBhdGggc3RyaW5nICovXG5leHBvcnQgdHlwZSBQYXRoS2V5czxTIGV4dGVuZHMgc3RyaW5nPiA9XG4gIHN0cmluZyBleHRlbmRzIFMgPyBzdHJpbmdcbiAgOiBTIGV4dGVuZHMgYCR7aW5mZXIgQX1cXFxcJHsnOicgfCAnKicgfCAnfSd9JHtpbmZlciBCfWAgP1xuICAgIFBhdGhLZXlzPEE+IHwgUGF0aEtleXM8Qj5cbiAgOiBTcGxpdHM8UywgJzonPiB8IFNwbGl0czxTLCAnKic+O1xuXG50eXBlIFNwbGl0czxTIGV4dGVuZHMgc3RyaW5nLCBNIGV4dGVuZHMgJzonIHwgJyonPiA9XG4gIFMgZXh0ZW5kcyBgJHtzdHJpbmd9JHtNfSR7aW5mZXIgS30ke019JHtpbmZlciBSfWAgP1xuICAgIFNwbGl0czxgJHtNfSR7S31gLCBNPiB8IFNwbGl0czxgJHtNfSR7Un1gLCBNPlxuICA6IFMgZXh0ZW5kcyAoXG4gICAgYCR7c3RyaW5nfSR7TX0ke2luZmVyIEt9JHsnLycgfCAnXFxcXCcgfCAnJScgfCAnJicgfCAnKicgfCAnOicgfCAneycgfCAnOycgfCAnLCcgfCAnIScgfCAnQCd9JHtpbmZlciBSfWBcbiAgKSA/XG4gICAgU3BsaXRzPGAke019JHtLfWAsIE0+IHwgU3BsaXRzPFIsIE0+XG4gIDogUyBleHRlbmRzIGAke3N0cmluZ30ke019JHtpbmZlciBLfWAgP1xuICAgIE0gZXh0ZW5kcyAnKicgP1xuICAgICAgYCoke0t9YFxuICAgIDogS1xuICA6IG5ldmVyO1xuXG5leHBvcnQgdHlwZSBLZXlzVG9BcmdzPEtleSBleHRlbmRzIHN0cmluZz4gPSB7XG4gIFtLIGluIEtleSBhcyBLIGV4dGVuZHMgYCR7c3RyaW5nfX1gID8gS2V5TmFtZTxLPiA6IG5ldmVyXT86IEtleVZhbDxLPjtcbn0gJiAoRXhjbHVkZTxLZXksIGAke3N0cmluZ319YD4gZXh0ZW5kcyBuZXZlciA/IHVua25vd25cbjoge1xuICAgIFtLIGluIEtleSBhcyBLIGV4dGVuZHMgYCR7c3RyaW5nfX1gID8gbmV2ZXIgOiBLZXlOYW1lPEs+XTogS2V5VmFsPEs+O1xuICB9KTtcblxuZXhwb3J0IHR5cGUgUGF0aEFyZ3NBbmRTZWFyY2g8UyBleHRlbmRzIHN0cmluZz4gPVxuICB1bmtub3duIGV4dGVuZHMgUyA/IGFueVxuICA6IEV4Y2x1ZGU8UGF0aEtleXM8Uz4sIGAke3N0cmluZ319YD4gZXh0ZW5kcyBuZXZlciA/XG4gICAgUmVjb3JkPHN0cmluZywgbnVtYmVyIHwgc3RyaW5nIHwgYm9vbGVhbj4gfCB1bmRlZmluZWRcbiAgOiB7XG4gICAgICBbSyBpbiBQYXRoS2V5czxTPiBhcyBLIGV4dGVuZHMgYCR7c3RyaW5nfX1gID8gbmV2ZXJcbiAgICAgIDogS2V5TmFtZTxLPl06IEtleVZhbDxLPjtcbiAgICB9ICYgUmVjb3JkPHN0cmluZywgbnVtYmVyIHwgc3RyaW5nIHwgc3RyaW5nW10+O1xuXG4vKiogUmVtb3ZlcyB0aGUgbGFzdCA6cGFyYW0gb3IgKndpbGRjYXJkIHRva2VuICovXG5leHBvcnQgdHlwZSBTaG9ydGVuUGF0aDxTIGV4dGVuZHMgc3RyaW5nPiA9XG4gIHN0cmluZyBleHRlbmRzIFMgPyBzdHJpbmdcbiAgOiBTIGV4dGVuZHMgYCR7aW5mZXIgQn06JHtpbmZlciBSfWAgPyBUcmltVG9rZW48YCR7Qn06JHtTaG9ydGVuUGF0aDxSPn1gPlxuICA6IFMgZXh0ZW5kcyBgJHtpbmZlciBCfSoke2luZmVyIFJ9YCA/IFRyaW1Ub2tlbjxgJHtCfSoke1Nob3J0ZW5QYXRoPFI+fWA+XG4gIDogJyc7XG5cbnR5cGUgVHJpbVRva2VuPFMgZXh0ZW5kcyBzdHJpbmc+ID1cbiAgc3RyaW5nIGV4dGVuZHMgUyA/IHN0cmluZ1xuICA6IFMgZXh0ZW5kcyBgJHtpbmZlciBSfTpgID8gUlxuICA6IFMgZXh0ZW5kcyBgJHtpbmZlciBSfSpgID8gUlxuICA6IFM7XG5cbmV4cG9ydCB0eXBlIFJlc291cmNlUGF0aCA9IHN0cmluZzsgLy8gYCR7c3RyaW5nfToke3N0cmluZ31gOyBUT0RPOiBNYXliZSBkbyB0aGlzIGluIHRoZSBmdXR1cmU/IFNlZW1zIHRvIGhhcmQgdG8gdW5kZXJzdGFuZCBmb3Igbm93XG4iXSwibWFwcGluZ3MiOiIiLCJpZ25vcmVMaXN0IjpbXX0=
|
package/lib/pathTypes.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ type CleanKey<S extends string> = S extends `"${infer K}"` ? K : S;
|
|
|
2
2
|
type KeyName<K extends string> = CleanKey<K extends `*${infer N}}` ? N : K extends `*${infer N}` ? N : K extends `${infer N}}` ? N : K>;
|
|
3
3
|
type KeyVal<K extends string> = K extends `*${string}` ? string[] : string | number;
|
|
4
4
|
/** Parameters for a given path */
|
|
5
|
-
export type PathArgs<S extends string> = PathKeys<S> extends never ? unknown : KeysToArgs<PathKeys<S>>;
|
|
5
|
+
export type PathArgs<S extends string> = unknown extends S ? any : PathKeys<S> extends never ? unknown : KeysToArgs<PathKeys<S>>;
|
|
6
6
|
/** Computes the union of keys for a path string */
|
|
7
7
|
export type PathKeys<S extends string> = string extends S ? string : S extends `${infer A}\\${':' | '*' | '}'}${infer B}` ? PathKeys<A> | PathKeys<B> : Splits<S, ':'> | Splits<S, '*'>;
|
|
8
8
|
type Splits<S extends string, M extends ':' | '*'> = S extends `${string}${M}${infer K}${M}${infer R}` ? Splits<`${M}${K}`, M> | Splits<`${M}${R}`, M> : S extends (`${string}${M}${infer K}${'/' | '\\' | '%' | '&' | '*' | ':' | '{' | ';' | ',' | '!' | '@'}${infer R}`) ? Splits<`${M}${K}`, M> | Splits<R, M> : S extends `${string}${M}${infer K}` ? M extends '*' ? `*${K}` : K : never;
|
|
@@ -11,7 +11,7 @@ export type KeysToArgs<Key extends string> = {
|
|
|
11
11
|
} & (Exclude<Key, `${string}}`> extends never ? unknown : {
|
|
12
12
|
[K in Key as K extends `${string}}` ? never : KeyName<K>]: KeyVal<K>;
|
|
13
13
|
});
|
|
14
|
-
export type PathArgsAndSearch<S extends string> = Exclude<PathKeys<S>, `${string}}`> extends never ? Record<string, number | string | boolean> | undefined : {
|
|
14
|
+
export type PathArgsAndSearch<S extends string> = unknown extends S ? any : Exclude<PathKeys<S>, `${string}}`> extends never ? Record<string, number | string | boolean> | undefined : {
|
|
15
15
|
[K in PathKeys<S> as K extends `${string}}` ? never : KeyName<K>]: KeyVal<K>;
|
|
16
16
|
} & Record<string, number | string | string[]>;
|
|
17
17
|
/** Removes the last :param or *wildcard token */
|
package/lib/pathTypes.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pathTypes.d.ts","sourceRoot":"","sources":["../src/pathTypes.ts"],"names":[],"mappings":"AAAA,KAAK,QAAQ,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AAEnE,KAAK,OAAO,CAAC,CAAC,SAAS,MAAM,IAAI,QAAQ,CACvC,CAAC,SAAS,IAAI,MAAM,CAAC,GAAG,GAAG,CAAC,GAC1B,CAAC,SAAS,IAAI,MAAM,CAAC,EAAE,GAAG,CAAC,GAC3B,CAAC,SAAS,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,GAC3B,CAAC,CACJ,CAAC;AAEF,KAAK,MAAM,CAAC,CAAC,SAAS,MAAM,IAC1B,CAAC,SAAS,IAAI,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,GAAG,MAAM,CAAC;AAEtD,kCAAkC;AAClC,MAAM,MAAM,QAAQ,CAAC,CAAC,SAAS,MAAM,IACnC,QAAQ,CAAC,CAAC,CAAC,SAAS,KAAK,
|
|
1
|
+
{"version":3,"file":"pathTypes.d.ts","sourceRoot":"","sources":["../src/pathTypes.ts"],"names":[],"mappings":"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"}
|
package/lib/pathTypes.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL3BhdGhUeXBlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJ0eXBlIENsZWFuS2V5PFMgZXh0ZW5kcyBzdHJpbmc+ID0gUyBleHRlbmRzIGBcIiR7aW5mZXIgS31cImAgPyBLIDogUztcblxudHlwZSBLZXlOYW1lPEsgZXh0ZW5kcyBzdHJpbmc+ID0gQ2xlYW5LZXk8XG4gIEsgZXh0ZW5kcyBgKiR7aW5mZXIgTn19YCA/IE5cbiAgOiBLIGV4dGVuZHMgYCoke2luZmVyIE59YCA/IE5cbiAgOiBLIGV4dGVuZHMgYCR7aW5mZXIgTn19YCA/IE5cbiAgOiBLXG4+
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL3BhdGhUeXBlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJ0eXBlIENsZWFuS2V5PFMgZXh0ZW5kcyBzdHJpbmc+ID0gUyBleHRlbmRzIGBcIiR7aW5mZXIgS31cImAgPyBLIDogUztcblxudHlwZSBLZXlOYW1lPEsgZXh0ZW5kcyBzdHJpbmc+ID0gQ2xlYW5LZXk8XG4gIEsgZXh0ZW5kcyBgKiR7aW5mZXIgTn19YCA/IE5cbiAgOiBLIGV4dGVuZHMgYCoke2luZmVyIE59YCA/IE5cbiAgOiBLIGV4dGVuZHMgYCR7aW5mZXIgTn19YCA/IE5cbiAgOiBLXG4+O1xuXG50eXBlIEtleVZhbDxLIGV4dGVuZHMgc3RyaW5nPiA9XG4gIEsgZXh0ZW5kcyBgKiR7c3RyaW5nfWAgPyBzdHJpbmdbXSA6IHN0cmluZyB8IG51bWJlcjtcblxuLyoqIFBhcmFtZXRlcnMgZm9yIGEgZ2l2ZW4gcGF0aCAqL1xuZXhwb3J0IHR5cGUgUGF0aEFyZ3M8UyBleHRlbmRzIHN0cmluZz4gPVxuICB1bmtub3duIGV4dGVuZHMgUyA/IGFueVxuICA6IFBhdGhLZXlzPFM+IGV4dGVuZHMgbmV2ZXIgP1xuICAgIC8vIHVua25vd24gaXMgaWRlbnRpdHkgZm9yIGludGVyc2VjdGlvbiAoJyYnKVxuICAgIHVua25vd25cbiAgOiBLZXlzVG9BcmdzPFBhdGhLZXlzPFM+PjtcblxuLyoqIENvbXB1dGVzIHRoZSB1bmlvbiBvZiBrZXlzIGZvciBhIHBhdGggc3RyaW5nICovXG5leHBvcnQgdHlwZSBQYXRoS2V5czxTIGV4dGVuZHMgc3RyaW5nPiA9XG4gIHN0cmluZyBleHRlbmRzIFMgPyBzdHJpbmdcbiAgOiBTIGV4dGVuZHMgYCR7aW5mZXIgQX1cXFxcJHsnOicgfCAnKicgfCAnfSd9JHtpbmZlciBCfWAgP1xuICAgIFBhdGhLZXlzPEE+IHwgUGF0aEtleXM8Qj5cbiAgOiBTcGxpdHM8UywgJzonPiB8IFNwbGl0czxTLCAnKic+O1xuXG50eXBlIFNwbGl0czxTIGV4dGVuZHMgc3RyaW5nLCBNIGV4dGVuZHMgJzonIHwgJyonPiA9XG4gIFMgZXh0ZW5kcyBgJHtzdHJpbmd9JHtNfSR7aW5mZXIgS30ke019JHtpbmZlciBSfWAgP1xuICAgIFNwbGl0czxgJHtNfSR7S31gLCBNPiB8IFNwbGl0czxgJHtNfSR7Un1gLCBNPlxuICA6IFMgZXh0ZW5kcyAoXG4gICAgYCR7c3RyaW5nfSR7TX0ke2luZmVyIEt9JHsnLycgfCAnXFxcXCcgfCAnJScgfCAnJicgfCAnKicgfCAnOicgfCAneycgfCAnOycgfCAnLCcgfCAnIScgfCAnQCd9JHtpbmZlciBSfWBcbiAgKSA/XG4gICAgU3BsaXRzPGAke019JHtLfWAsIE0+IHwgU3BsaXRzPFIsIE0+XG4gIDogUyBleHRlbmRzIGAke3N0cmluZ30ke019JHtpbmZlciBLfWAgP1xuICAgIE0gZXh0ZW5kcyAnKicgP1xuICAgICAgYCoke0t9YFxuICAgIDogS1xuICA6IG5ldmVyO1xuXG5leHBvcnQgdHlwZSBLZXlzVG9BcmdzPEtleSBleHRlbmRzIHN0cmluZz4gPSB7XG4gIFtLIGluIEtleSBhcyBLIGV4dGVuZHMgYCR7c3RyaW5nfX1gID8gS2V5TmFtZTxLPiA6IG5ldmVyXT86IEtleVZhbDxLPjtcbn0gJiAoRXhjbHVkZTxLZXksIGAke3N0cmluZ319YD4gZXh0ZW5kcyBuZXZlciA/IHVua25vd25cbjoge1xuICAgIFtLIGluIEtleSBhcyBLIGV4dGVuZHMgYCR7c3RyaW5nfX1gID8gbmV2ZXIgOiBLZXlOYW1lPEs+XTogS2V5VmFsPEs+O1xuICB9KTtcblxuZXhwb3J0IHR5cGUgUGF0aEFyZ3NBbmRTZWFyY2g8UyBleHRlbmRzIHN0cmluZz4gPVxuICB1bmtub3duIGV4dGVuZHMgUyA/IGFueVxuICA6IEV4Y2x1ZGU8UGF0aEtleXM8Uz4sIGAke3N0cmluZ319YD4gZXh0ZW5kcyBuZXZlciA/XG4gICAgUmVjb3JkPHN0cmluZywgbnVtYmVyIHwgc3RyaW5nIHwgYm9vbGVhbj4gfCB1bmRlZmluZWRcbiAgOiB7XG4gICAgICBbSyBpbiBQYXRoS2V5czxTPiBhcyBLIGV4dGVuZHMgYCR7c3RyaW5nfX1gID8gbmV2ZXJcbiAgICAgIDogS2V5TmFtZTxLPl06IEtleVZhbDxLPjtcbiAgICB9ICYgUmVjb3JkPHN0cmluZywgbnVtYmVyIHwgc3RyaW5nIHwgc3RyaW5nW10+O1xuXG4vKiogUmVtb3ZlcyB0aGUgbGFzdCA6cGFyYW0gb3IgKndpbGRjYXJkIHRva2VuICovXG5leHBvcnQgdHlwZSBTaG9ydGVuUGF0aDxTIGV4dGVuZHMgc3RyaW5nPiA9XG4gIHN0cmluZyBleHRlbmRzIFMgPyBzdHJpbmdcbiAgOiBTIGV4dGVuZHMgYCR7aW5mZXIgQn06JHtpbmZlciBSfWAgPyBUcmltVG9rZW48YCR7Qn06JHtTaG9ydGVuUGF0aDxSPn1gPlxuICA6IFMgZXh0ZW5kcyBgJHtpbmZlciBCfSoke2luZmVyIFJ9YCA/IFRyaW1Ub2tlbjxgJHtCfSoke1Nob3J0ZW5QYXRoPFI+fWA+XG4gIDogJyc7XG5cbnR5cGUgVHJpbVRva2VuPFMgZXh0ZW5kcyBzdHJpbmc+ID1cbiAgc3RyaW5nIGV4dGVuZHMgUyA/IHN0cmluZ1xuICA6IFMgZXh0ZW5kcyBgJHtpbmZlciBSfTpgID8gUlxuICA6IFMgZXh0ZW5kcyBgJHtpbmZlciBSfSpgID8gUlxuICA6IFM7XG5cbmV4cG9ydCB0eXBlIFJlc291cmNlUGF0aCA9IHN0cmluZzsgLy8gYCR7c3RyaW5nfToke3N0cmluZ31gOyBUT0RPOiBNYXliZSBkbyB0aGlzIGluIHRoZSBmdXR1cmU/IFNlZW1zIHRvIGhhcmQgdG8gdW5kZXJzdGFuZCBmb3Igbm93XG4iXSwibWFwcGluZ3MiOiIiLCJpZ25vcmVMaXN0IjpbXX0=
|
package/package.json
CHANGED
package/src/pathTypes.ts
CHANGED
|
@@ -12,7 +12,8 @@ type KeyVal<K extends string> =
|
|
|
12
12
|
|
|
13
13
|
/** Parameters for a given path */
|
|
14
14
|
export type PathArgs<S extends string> =
|
|
15
|
-
|
|
15
|
+
unknown extends S ? any
|
|
16
|
+
: PathKeys<S> extends never ?
|
|
16
17
|
// unknown is identity for intersection ('&')
|
|
17
18
|
unknown
|
|
18
19
|
: KeysToArgs<PathKeys<S>>;
|
|
@@ -45,7 +46,8 @@ export type KeysToArgs<Key extends string> = {
|
|
|
45
46
|
});
|
|
46
47
|
|
|
47
48
|
export type PathArgsAndSearch<S extends string> =
|
|
48
|
-
|
|
49
|
+
unknown extends S ? any
|
|
50
|
+
: Exclude<PathKeys<S>, `${string}}`> extends never ?
|
|
49
51
|
Record<string, number | string | boolean> | undefined
|
|
50
52
|
: {
|
|
51
53
|
[K in PathKeys<S> as K extends `${string}}` ? never
|
package/ts4.1/pathTypes.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ type CleanKey<S extends string> = S extends `"${infer K}"` ? K : S;
|
|
|
2
2
|
type KeyName<K extends string> = CleanKey<K extends `*${infer N}}` ? N : K extends `*${infer N}` ? N : K extends `${infer N}}` ? N : K>;
|
|
3
3
|
type KeyVal<K extends string> = K extends `*${string}` ? string[] : string | number;
|
|
4
4
|
/** Parameters for a given path */
|
|
5
|
-
export type PathArgs<S extends string> = PathKeys<S> extends never ? unknown : KeysToArgs<PathKeys<S>>;
|
|
5
|
+
export type PathArgs<S extends string> = unknown extends S ? any : PathKeys<S> extends never ? unknown : KeysToArgs<PathKeys<S>>;
|
|
6
6
|
/** Computes the union of keys for a path string */
|
|
7
7
|
export type PathKeys<S extends string> = string extends S ? string : S extends `${infer A}\\${':' | '*' | '}'}${infer B}` ? PathKeys<A> | PathKeys<B> : Splits<S, ':'> | Splits<S, '*'>;
|
|
8
8
|
type Splits<S extends string, M extends ':' | '*'> = S extends `${string}${M}${infer K}${M}${infer R}` ? Splits<`${M}${K}`, M> | Splits<`${M}${R}`, M> : S extends (`${string}${M}${infer K}${'/' | '\\' | '%' | '&' | '*' | ':' | '{' | ';' | ',' | '!' | '@'}${infer R}`) ? Splits<`${M}${K}`, M> | Splits<R, M> : S extends `${string}${M}${infer K}` ? M extends '*' ? `*${K}` : K : never;
|
|
@@ -11,7 +11,7 @@ export type KeysToArgs<Key extends string> = {
|
|
|
11
11
|
} & (Exclude<Key, `${string}}`> extends never ? unknown : {
|
|
12
12
|
[K in Key as K extends `${string}}` ? never : KeyName<K>]: KeyVal<K>;
|
|
13
13
|
});
|
|
14
|
-
export type PathArgsAndSearch<S extends string> = Exclude<PathKeys<S>, `${string}}`> extends never ? Record<string, number | string | boolean> | undefined : {
|
|
14
|
+
export type PathArgsAndSearch<S extends string> = unknown extends S ? any : Exclude<PathKeys<S>, `${string}}`> extends never ? Record<string, number | string | boolean> | undefined : {
|
|
15
15
|
[K in PathKeys<S> as K extends `${string}}` ? never : KeyName<K>]: KeyVal<K>;
|
|
16
16
|
} & Record<string, number | string | string[]>;
|
|
17
17
|
/** Removes the last :param or *wildcard token */
|